Merge tag 'sdk-1.2.198.0' into HEAD

This updates glslang to 1.2.198.
Bug: 90846

Change-Id: I8a446330eacc0cf1e6bd17ca1bcd70433d91bd92
diff --git a/.appveyor.yml b/.appveyor.yml
index 500d4bd..bf8c572 100644
--- a/.appveyor.yml
+++ b/.appveyor.yml
@@ -77,8 +77,11 @@
     bin\glslangValidator.exe
     bin\spirv-remap.exe
     include\glslang\*
+    lib\GenericCodeGen%SUFFIX%.lib
     lib\glslang%SUFFIX%.lib
+    lib\glslang-default-resource-limits%SUFFIX%.lib
     lib\HLSL%SUFFIX%.lib
+    lib\MachineIndependent%SUFFIX%.lib
     lib\OGLCompiler%SUFFIX%.lib
     lib\OSDependent%SUFFIX%.lib
     lib\SPIRV%SUFFIX%.lib
diff --git a/.travis.yml b/.travis.yml
index 87838b8..cb0392e 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -109,8 +109,11 @@
       zip ${TARBALL}
         bin/glslangValidator
         include/glslang/*
+        lib/libGenericCodeGen${SUFFIX}.a
         lib/libglslang${SUFFIX}.a
+        lib/libglslang-default-resource-limits${SUFFIX}.a
         lib/libHLSL${SUFFIX}.a
+        lib/libMachineIndependent${SUFFIX}.a
         lib/libOGLCompiler${SUFFIX}.a
         lib/libOSDependent${SUFFIX}.a
         lib/libSPIRV${SUFFIX}.a
diff --git a/Android.mk b/Android.mk
index 3a74497..c9b221f 100644
--- a/Android.mk
+++ b/Android.mk
@@ -125,6 +125,7 @@
 		glslang/MachineIndependent/RemoveTree.cpp \
 		glslang/MachineIndependent/Scan.cpp \
 		glslang/MachineIndependent/ShaderLang.cpp \
+		glslang/MachineIndependent/SpirvIntrinsics.cpp \
 		glslang/MachineIndependent/SymbolTable.cpp \
 		glslang/MachineIndependent/Versions.cpp \
 		glslang/MachineIndependent/preprocessor/PpAtom.cpp \
diff --git a/BUILD.bazel b/BUILD.bazel
index e8cf6a8..1115b7d 100644
--- a/BUILD.bazel
+++ b/BUILD.bazel
@@ -49,6 +49,11 @@
     srcs = ["build_info.py"],
 )
 
+py_binary(
+    name = "gen_extension_headers",
+    srcs = ["gen_extension_headers.py"],
+)
+
 genrule(
     name = "gen_build_info_h",
     srcs = ["CHANGES.md", "build_info.h.tmpl"],
@@ -58,6 +63,14 @@
     tools = [":build_info"],
 )
 
+genrule(
+    name = "gen_extension_headers_h",
+    srcs = ["glslang/ExtensionHeaders", "gen_extension_headers.py"],
+    outs = ["glslang/glsl_intrinsic_header.h"],
+    cmd_bash = "$(location gen_extension_headers) -i  $(location glslang/ExtensionHeaders) -o $(location glslang/glsl_intrinsic_header.h)",
+    tools = [":gen_extension_headers"],
+)
+
 COMMON_COPTS = select({
     "@bazel_tools//src/conditions:windows": [""],
     "//conditions:default": [
@@ -206,6 +219,7 @@
     srcs = [
         "StandAlone/StandAlone.cpp",
         "StandAlone/Worklist.h",
+        ":glslang/glsl_intrinsic_header.h"
     ],
     copts = COMMON_COPTS,
     deps = [
diff --git a/BUILD.gn b/BUILD.gn
index e5a150f..aa931dc 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -69,6 +69,23 @@
   ]
 }
 
+action("glslang_extension_headers") {
+  script = "gen_extension_headers.py"
+
+  out_file = "${target_gen_dir}/include/glslang/glsl_intrinsic_header.h"
+
+  inputs = [
+    script
+  ]
+  outputs = [ out_file ]
+  args = [
+    "-i",
+    rebase_path("glslang/ExtensionHeaders", root_build_dir),
+    "-o",
+    rebase_path(out_file, root_build_dir),
+  ]
+}
+
 spirv_tools_dir = glslang_spirv_tools_dir
 if (!defined(glslang_angle)) {
   glslang_angle = false
@@ -133,6 +150,7 @@
       "glslang/Include/PoolAlloc.h",
       "glslang/Include/ResourceLimits.h",
       "glslang/Include/ShHandle.h",
+      "glslang/Include/SpirvIntrinsics.h",
       "glslang/Include/Types.h",
       "glslang/Include/arrays.h",
       "glslang/Include/intermediate.h",
@@ -153,6 +171,7 @@
       "glslang/MachineIndependent/Scan.h",
       "glslang/MachineIndependent/ScanContext.h",
       "glslang/MachineIndependent/ShaderLang.cpp",
+      "glslang/MachineIndependent/SpirvIntrinsics.cpp",
       "glslang/MachineIndependent/SymbolTable.cpp",
       "glslang/MachineIndependent/SymbolTable.h",
       "glslang/MachineIndependent/Versions.cpp",
@@ -309,6 +328,7 @@
     ":glslang_build_info",
     ":glslang_default_resource_limits_sources",
     ":glslang_sources",
+    ":glslang_extension_headers",
   ]
   public_configs = [ ":glslang_hlsl" ]
 
diff --git a/CHANGES.md b/CHANGES.md
index 3fd3636..ebab4da 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -3,6 +3,48 @@
 All notable changes to this project will be documented in this file.
 This project adheres to [Semantic Versioning](https://semver.org/).
 
+## 11.7.0 2021-11-11
+
+### Other changes
+* Add support for targeting Vulkan 1.2 in the C API
+
+## 11.6.0 2021-08-25
+
+### Other changes
+* Atomic memory function only for shader storage block member or shared variable
+* Add support for gl_MaxVaryingVectors for ogl
+* Fix loading bool arrays from interface blocks
+* Generate separate stores for partially swizzled memory stores
+* Allow layout(std430) uniform with GL_EXT_scalar_block_layout
+* Support for pragma STDGL invariant(all)
+* Support for GL_NV_ray_tracing_motion_blur
+
+## 11.5.0 2021-06-23
+
+### Other changes
+* Implement GLSL_EXT_shader_atomic_float2
+* Implement GL_EXT_spirv_intrinsics
+* Fixed SPIR-V remapper not remapping OpExtInst instruction set IDs
+* only declare compatibility gl_ variables in compatibility mode
+* Add support for float spec const vector initialization
+* Implement GL_EXT_subgroup_uniform_control_flow.
+* Fix arrays dimensioned with spec constant sized gl_WorkGroupSize
+* Add support for 64bit integer scalar and vector types to bitCount() builtin
+
+## 11.4.0 2021-04-22
+
+### Other changes
+* Fix to keep source compatible with CMake 3.10.2
+
+## 11.3.0 2021-04-21
+
+### Other changes
+* Added --depfile
+* Added --auto-sampled-textures
+* Now supports InterpolateAt-based functions
+* Supports cross-stage automatic IO mapping
+* Supports GL_EXT_vulkan_glsl_relaxed (-R option)
+
 ## 11.2.0 2021-02-18
 
 ### Other changes
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9ed5265..d5b727a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -37,6 +37,9 @@
 if (POLICY CMP0048)
   cmake_policy(SET CMP0048 NEW)
 endif()
+if(POLICY CMP0054)
+  cmake_policy(SET CMP0054 NEW)
+endif()
 
 project(glslang LANGUAGES CXX)
 
@@ -115,7 +118,7 @@
     find_program(CCACHE_FOUND ccache)
     if(CCACHE_FOUND)
         set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
-    endif(CCACHE_FOUND)
+    endif()
 endif()
 
 if(ENABLE_CTEST)
@@ -124,26 +127,27 @@
 
 if(ENABLE_HLSL)
     add_definitions(-DENABLE_HLSL)
-endif(ENABLE_HLSL)
+endif()
 
 if(ENABLE_GLSLANG_WEBMIN)
     add_definitions(-DGLSLANG_WEB)
     if(ENABLE_GLSLANG_WEBMIN_DEVEL)
         add_definitions(-DGLSLANG_WEB_DEVEL)
-    endif(ENABLE_GLSLANG_WEBMIN_DEVEL)
-endif(ENABLE_GLSLANG_WEBMIN)
+    endif()
+endif()
 
 if(WIN32)
     set(CMAKE_DEBUG_POSTFIX "d")
-    if(MSVC)
+    option(OVERRIDE_MSVCCRT "Overrides runtime of MSVC " ON)
+    if(MSVC AND OVERRIDE_MSVCCRT)
         include(ChooseMSVCCRT.cmake)
-    endif(MSVC)
+    endif()
     add_definitions(-DGLSLANG_OSINCLUDE_WIN32)
 elseif(UNIX)
     add_definitions(-DGLSLANG_OSINCLUDE_UNIX)
-else(WIN32)
+else()
     message("unknown platform")
-endif(WIN32)
+endif()
 
 if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")
     add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs
@@ -194,8 +198,8 @@
     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)
+        string(REGEX REPLACE "/EHsc" "" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") # Try to remove default /EHsc cxx_flag
+        add_compile_options(/D_HAS_EXCEPTIONS=0)
     endif()
 endif()
 
@@ -209,7 +213,7 @@
             add_compile_options(-Wno-unused-variable -Wno-unused-const-variable)
         endif()
     endif()
-endif(ENABLE_GLSLANG_JS)
+endif()
 
 # Request C++11
 if(${CMAKE_VERSION} VERSION_LESS 3.1)
@@ -325,7 +329,7 @@
 add_subdirectory(SPIRV)
 if(ENABLE_HLSL)
     add_subdirectory(hlsl)
-endif(ENABLE_HLSL)
+endif()
 if(ENABLE_CTEST)
     add_subdirectory(gtests)
 endif()
@@ -342,11 +346,11 @@
         set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$<CONFIGURATION>/localResults)
         set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIGURATION>/glslangValidator)
         set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$<CONFIGURATION>/spirv-remap)
-    else(CMAKE_CONFIGURATION_TYPES)
+    else()
         set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults)
         set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslangValidator)
         set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap)
-    endif(CMAKE_CONFIGURATION_TYPES)
+    endif()
 
     add_test(NAME glslang-testsuite
         COMMAND bash ${IGNORE_CR_FLAG} runtests ${RESULTS_PATH} ${VALIDATOR_PATH} ${REMAP_PATH}
diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt
index d699dad..22f767d 100644
--- a/SPIRV/CMakeLists.txt
+++ b/SPIRV/CMakeLists.txt
@@ -101,12 +101,12 @@
         $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/External>)
 else()
     target_link_libraries(SPIRV PRIVATE MachineIndependent)
-endif(ENABLE_OPT)
+endif()
 
 if(WIN32)
     source_group("Source" FILES ${SOURCES} ${HEADERS})
     source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS})
-endif(WIN32)
+endif()
 
 if(ENABLE_GLSLANG_INSTALL)
     if(BUILD_SHARED_LIBS)
@@ -135,4 +135,4 @@
     install(EXPORT SPIRVTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
 
     install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/)
-endif(ENABLE_GLSLANG_INSTALL)
+endif()
diff --git a/SPIRV/GLSL.ext.EXT.h b/SPIRV/GLSL.ext.EXT.h
index 20b9e54..f48f130 100644
--- a/SPIRV/GLSL.ext.EXT.h
+++ b/SPIRV/GLSL.ext.EXT.h
@@ -36,6 +36,8 @@
 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_atomic_float16_add = "SPV_EXT_shader_atomic_float16_add";
+static const char* const E_SPV_EXT_shader_atomic_float_min_max = "SPV_EXT_shader_atomic_float_min_max";
 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 175fa8d..5eb3e94 100644
--- a/SPIRV/GLSL.ext.KHR.h
+++ b/SPIRV/GLSL.ext.KHR.h
@@ -51,5 +51,6 @@
 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";
+static const char* const E_SPV_KHR_subgroup_uniform_control_flow = "SPV_KHR_subgroup_uniform_control_flow";
 
 #endif  // #ifndef GLSLextKHR_H
diff --git a/SPIRV/GLSL.ext.NV.h b/SPIRV/GLSL.ext.NV.h
index 50146da..93c98bf 100644
--- a/SPIRV/GLSL.ext.NV.h
+++ b/SPIRV/GLSL.ext.NV.h
@@ -69,6 +69,9 @@
 //SPV_NV_raytracing
 const char* const E_SPV_NV_ray_tracing = "SPV_NV_ray_tracing";
 
+//SPV_NV_ray_tracing_motion_blur
+const char* const E_SPV_NV_ray_tracing_motion_blur = "SPV_NV_ray_tracing_motion_blur";
+
 //SPV_NV_shading_rate
 const char* const E_SPV_NV_shading_rate = "SPV_NV_shading_rate";
 
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 81aacd1..43aba9c 100644
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -160,6 +160,7 @@
     spv::SelectionControlMask TranslateSwitchControl(const glslang::TIntermSwitch&) const;
     spv::LoopControlMask TranslateLoopControl(const glslang::TIntermLoop&, std::vector<unsigned int>& operands) const;
     spv::StorageClass TranslateStorageClass(const glslang::TType&);
+    void TranslateLiterals(const glslang::TVector<const glslang::TIntermConstantUnion*>&, std::vector<unsigned>&) const;
     void addIndirectionIndexCapabilities(const glslang::TType& baseType, const glslang::TType& indexType);
     spv::Id createSpvVariable(const glslang::TIntermSymbol*, spv::Id forcedType);
     spv::Id getSampledType(const glslang::TSampler&);
@@ -178,6 +179,7 @@
     spv::Id accessChainLoad(const glslang::TType& type);
     void    accessChainStore(const glslang::TType& type, spv::Id rvalue);
     void multiTypeStore(const glslang::TType&, spv::Id rValue);
+    spv::Id convertLoadedBoolInUniformToUint(const glslang::TType& type, spv::Id nominalTypeId, spv::Id loadedId);
     glslang::TLayoutPacking getExplicitLayout(const glslang::TType& type) const;
     int getArrayStride(const glslang::TType& arrayType, glslang::TLayoutPacking, glslang::TLayoutMatrix);
     int getMatrixStride(const glslang::TType& matrixType, glslang::TLayoutPacking, glslang::TLayoutMatrix);
@@ -1031,6 +1033,10 @@
         return spv::BuiltInIncomingRayFlagsKHR;
     case glslang::EbvGeometryIndex:
         return spv::BuiltInRayGeometryIndexKHR;
+    case glslang::EbvCurrentRayTimeNV:
+        builder.addExtension(spv::E_SPV_NV_ray_tracing_motion_blur);
+        builder.addCapability(spv::CapabilityRayTracingMotionBlurNV);
+        return spv::BuiltInCurrentRayTimeNV;
 
     // barycentrics
     case glslang::EbvBaryCoordNV:
@@ -1249,6 +1255,10 @@
 {
     if (type.getBasicType() == glslang::EbtRayQuery)
         return spv::StorageClassPrivate;
+#ifndef GLSLANG_WEB
+    if (type.getQualifier().isSpirvByReference())
+        return spv::StorageClassFunction;
+#endif
     if (type.getQualifier().isPipeInput())
         return spv::StorageClassInput;
     if (type.getQualifier().isPipeOutput())
@@ -1297,6 +1307,7 @@
     case glslang::EvqHitAttr:        return spv::StorageClassHitAttributeKHR;
     case glslang::EvqCallableData:   return spv::StorageClassCallableDataKHR;
     case glslang::EvqCallableDataIn: return spv::StorageClassIncomingCallableDataKHR;
+    case glslang::EvqSpirvStorageClass: return static_cast<spv::StorageClass>(type.getQualifier().spirvStorageClass);
 #endif
     default:
         assert(0);
@@ -1306,6 +1317,52 @@
     return spv::StorageClassFunction;
 }
 
+// Translate glslang constants to SPIR-V literals
+void TGlslangToSpvTraverser::TranslateLiterals(const glslang::TVector<const glslang::TIntermConstantUnion*>& constants,
+                                               std::vector<unsigned>& literals) const
+{
+    for (auto constant : constants) {
+        if (constant->getBasicType() == glslang::EbtFloat) {
+            float floatValue = static_cast<float>(constant->getConstArray()[0].getDConst());
+            unsigned literal = *reinterpret_cast<unsigned*>(&floatValue);
+            literals.push_back(literal);
+        } else if (constant->getBasicType() == glslang::EbtInt) {
+            unsigned literal = constant->getConstArray()[0].getIConst();
+            literals.push_back(literal);
+        } else if (constant->getBasicType() == glslang::EbtUint) {
+            unsigned literal = constant->getConstArray()[0].getUConst();
+            literals.push_back(literal);
+        } else if (constant->getBasicType() == glslang::EbtBool) {
+            unsigned literal = constant->getConstArray()[0].getBConst();
+            literals.push_back(literal);
+        } else if (constant->getBasicType() == glslang::EbtString) {
+            auto str = constant->getConstArray()[0].getSConst()->c_str();
+            unsigned literal = 0;
+            char* literalPtr = reinterpret_cast<char*>(&literal);
+            unsigned charCount = 0;
+            char ch = 0;
+            do {
+                ch = *(str++);
+                *(literalPtr++) = ch;
+                ++charCount;
+                if (charCount == 4) {
+                    literals.push_back(literal);
+                    literalPtr = reinterpret_cast<char*>(&literal);
+                    charCount = 0;
+                }
+            } while (ch != 0);
+
+            // Partial literal is padded with 0
+            if (charCount > 0) {
+                for (; charCount < 4; ++charCount)
+                    *(literalPtr++) = 0;
+                literals.push_back(literal);
+            }
+        } else
+            assert(0); // Unexpected type
+    }
+}
+
 // Add capabilities pertaining to how an array is indexed.
 void TGlslangToSpvTraverser::addIndirectionIndexCapabilities(const glslang::TType& baseType,
                                                              const glslang::TType& indexType)
@@ -1526,6 +1583,13 @@
         builder.addCapability(spv::CapabilityRayTraversalPrimitiveCullingKHR);
     }
 
+#ifndef GLSLANG_WEB
+    if (glslangIntermediate->getSubgroupUniformControlFlow()) {
+        builder.addExtension(spv::E_SPV_KHR_subgroup_uniform_control_flow);
+        builder.addExecutionMode(shaderEntry, spv::ExecutionModeSubgroupUniformControlFlowKHR);
+    }
+#endif
+
     unsigned int mode;
     switch (glslangIntermediate->getStage()) {
     case EShLangVertex:
@@ -1728,6 +1792,53 @@
     default:
         break;
     }
+
+#ifndef GLSLANG_WEB
+    //
+    // Add SPIR-V requirements (GL_EXT_spirv_intrinsics)
+    //
+    if (glslangIntermediate->hasSpirvRequirement()) {
+        const glslang::TSpirvRequirement& spirvRequirement = glslangIntermediate->getSpirvRequirement();
+
+        // Add SPIR-V extension requirement
+        for (auto& extension : spirvRequirement.extensions)
+            builder.addExtension(extension.c_str());
+
+        // Add SPIR-V capability requirement
+        for (auto capability : spirvRequirement.capabilities)
+            builder.addCapability(static_cast<spv::Capability>(capability));
+    }
+
+    //
+    // Add SPIR-V execution mode qualifiers (GL_EXT_spirv_intrinsics)
+    //
+    if (glslangIntermediate->hasSpirvExecutionMode()) {
+        const glslang::TSpirvExecutionMode spirvExecutionMode = glslangIntermediate->getSpirvExecutionMode();
+
+        // Add spirv_execution_mode
+        for (auto& mode : spirvExecutionMode.modes) {
+            if (!mode.second.empty()) {
+                std::vector<unsigned> literals;
+                TranslateLiterals(mode.second, literals);
+                builder.addExecutionMode(shaderEntry, static_cast<spv::ExecutionMode>(mode.first), literals);
+            } else
+                builder.addExecutionMode(shaderEntry, static_cast<spv::ExecutionMode>(mode.first));
+        }
+
+        // Add spirv_execution_mode_id
+        for (auto& modeId : spirvExecutionMode.modeIds) {
+            std::vector<spv::Id> operandIds;
+            assert(!modeId.second.empty());
+            for (auto extraOperand : modeId.second) {
+                if (extraOperand->getType().getQualifier().isSpecConstant())
+                    operandIds.push_back(getSymbolId(extraOperand->getAsSymbolNode()));
+                else
+                    operandIds.push_back(createSpvConstant(*extraOperand));
+            }
+            builder.addExecutionModeId(shaderEntry, static_cast<spv::ExecutionMode>(modeId.first), operandIds);
+        }
+    }
+#endif
 }
 
 // Finish creating SPV, after the traversal is complete.
@@ -2125,6 +2236,49 @@
     }
 }
 
+spv::Id TGlslangToSpvTraverser::convertLoadedBoolInUniformToUint(const glslang::TType& type,
+                                                                 spv::Id nominalTypeId,
+                                                                 spv::Id loadedId)
+{
+    if (builder.isScalarType(nominalTypeId)) {
+        // Conversion for bool
+        spv::Id boolType = builder.makeBoolType();
+        if (nominalTypeId != boolType)
+            return builder.createBinOp(spv::OpINotEqual, boolType, loadedId, builder.makeUintConstant(0));
+    } else if (builder.isVectorType(nominalTypeId)) {
+        // Conversion for bvec
+        int vecSize = builder.getNumTypeComponents(nominalTypeId);
+        spv::Id bvecType = builder.makeVectorType(builder.makeBoolType(), vecSize);
+        if (nominalTypeId != bvecType)
+            loadedId = builder.createBinOp(spv::OpINotEqual, bvecType, loadedId,
+                makeSmearedConstant(builder.makeUintConstant(0), vecSize));
+    } else if (builder.isArrayType(nominalTypeId)) {
+        // Conversion for bool array
+        spv::Id boolArrayTypeId = convertGlslangToSpvType(type);
+        if (nominalTypeId != boolArrayTypeId)
+        {
+            // Use OpCopyLogical from SPIR-V 1.4 if available.
+            if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4)
+                return builder.createUnaryOp(spv::OpCopyLogical, boolArrayTypeId, loadedId);
+
+            glslang::TType glslangElementType(type, 0);
+            spv::Id elementNominalTypeId = builder.getContainedTypeId(nominalTypeId);
+            std::vector<spv::Id> constituents;
+            for (int index = 0; index < type.getOuterArraySize(); ++index) {
+                // get the element
+                spv::Id elementValue = builder.createCompositeExtract(loadedId, elementNominalTypeId, index);
+
+                // recursively convert it
+                spv::Id elementConvertedValue = convertLoadedBoolInUniformToUint(glslangElementType, elementNominalTypeId, elementValue);
+                constituents.push_back(elementConvertedValue);
+            }
+            return builder.createCompositeConstruct(boolArrayTypeId, constituents);
+        }
+    }
+
+    return loadedId;
+}
+
 // Figure out what, if any, type changes are needed when accessing a specific built-in.
 // Returns <the type SPIR-V requires for declarion, the type to translate to on use>.
 // Also see comment for 'forceType', regarding tracking SPIR-V-required types.
@@ -2310,10 +2464,14 @@
         node->getOp() == glslang::EOpRayQueryGetWorldRayDirection ||
         node->getOp() == glslang::EOpRayQueryGetIntersectionCandidateAABBOpaque ||
         node->getOp() == glslang::EOpRayQueryTerminate ||
-        node->getOp() == glslang::EOpRayQueryConfirmIntersection) {
+        node->getOp() == glslang::EOpRayQueryConfirmIntersection ||
+        (node->getOp() == glslang::EOpSpirvInst && operandNode->getAsTyped()->getQualifier().isSpirvByReference())) {
         operand = builder.accessChainGetLValue(); // Special case l-value operands
         lvalueCoherentFlags = builder.getAccessChain().coherentFlags;
         lvalueCoherentFlags |= TranslateCoherent(operandNode->getAsTyped()->getType());
+    } else if (operandNode->getAsTyped()->getQualifier().isSpirvLiteral()) {
+        // Will be translated to a literal value, make a placeholder here
+        operand = spv::NoResult;
     } else
 #endif
     {
@@ -2334,6 +2492,38 @@
         result = createUnaryOperation(node->getOp(), decorations, resultType(), operand,
             node->getOperand()->getBasicType(), lvalueCoherentFlags);
 
+#ifndef GLSLANG_WEB
+    // it could be attached to a SPIR-V intruction
+    if (!result) {
+        if (node->getOp() == glslang::EOpSpirvInst) {
+            const auto& spirvInst = node->getSpirvInstruction();
+            if (spirvInst.set == "") {
+                spv::IdImmediate idImmOp = {true, operand};
+                if (operandNode->getAsTyped()->getQualifier().isSpirvLiteral()) {
+                    // Translate the constant to a literal value
+                    std::vector<unsigned> literals;
+                    glslang::TVector<const glslang::TIntermConstantUnion*> constants;
+                    constants.push_back(operandNode->getAsConstantUnion());
+                    TranslateLiterals(constants, literals);
+                    idImmOp = {false, literals[0]};
+                }
+
+                if (node->getBasicType() == glslang::EbtVoid)
+                    builder.createNoResultOp(static_cast<spv::Op>(spirvInst.id), {idImmOp});
+                else
+                    result = builder.createOp(static_cast<spv::Op>(spirvInst.id), resultType(), {idImmOp});
+            } else {
+                result = builder.createBuiltinCall(
+                    resultType(), spirvInst.set == "GLSL.std.450" ? stdBuiltins : getExtBuiltins(spirvInst.set.c_str()),
+                    spirvInst.id, {operand});
+            }
+
+            if (node->getBasicType() == glslang::EbtVoid)
+                return false; // done with this node
+        }
+    }
+#endif
+
     if (result) {
         if (invertedType) {
             result = createInvertedSwizzle(decorations.precision, *node->getOperand(), result);
@@ -2832,6 +3022,7 @@
     case glslang::EOpIgnoreIntersectionNV:
     case glslang::EOpTerminateRayNV:
     case glslang::EOpTraceNV:
+    case glslang::EOpTraceRayMotionNV:
     case glslang::EOpTraceKHR:
     case glslang::EOpExecuteCallableNV:
     case glslang::EOpExecuteCallableKHR:
@@ -3030,6 +3221,10 @@
             if (arg == 1)
                 lvalue = true;
             break;
+        case glslang::EOpSpirvInst:
+            if (glslangOperands[arg]->getAsTyped()->getQualifier().isSpirvByReference())
+                lvalue = true;
+            break;
 #endif
         default:
             break;
@@ -3127,15 +3322,22 @@
                 bool cond = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getBConst();
                 operands.push_back(builder.makeIntConstant(cond ? 1 : 0));
              } else if ((arg == 10 && glslangOp == glslang::EOpTraceKHR) ||
+                        (arg == 11 && glslangOp == glslang::EOpTraceRayMotionNV) ||
                         (arg == 1  && glslangOp == glslang::EOpExecuteCallableKHR)) {
-                 const int opdNum = glslangOp == glslang::EOpTraceKHR ? 10 : 1;
-                 const int set = glslangOp == glslang::EOpTraceKHR ? 0 : 1;
+                 const int opdNum = glslangOp == glslang::EOpTraceKHR ? 10 : (glslangOp == glslang::EOpTraceRayMotionNV ? 11 : 1);
+                 const int set = glslangOp == glslang::EOpExecuteCallableKHR ? 1 : 0;
+
                  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 {
+#ifndef GLSLANG_WEB
+             } else if (glslangOperands[arg]->getAsTyped()->getQualifier().isSpirvLiteral()) {
+                 // Will be translated to a literal value, make a placeholder here
+                 operands.push_back(spv::NoResult);
+#endif
+             } else  {
                 operands.push_back(accessChainLoad(glslangOperands[arg]->getAsTyped()->getType()));
              }
         }
@@ -3177,6 +3379,34 @@
             ? node->getSequence()[0]->getAsTyped()->getBasicType() : node->getBasicType();
         result = createAtomicOperation(node->getOp(), precision, resultType(), operands, typeProxy,
             lvalueCoherentFlags);
+#ifndef GLSLANG_WEB
+    } else if (node->getOp() == glslang::EOpSpirvInst) {
+        const auto& spirvInst = node->getSpirvInstruction();
+        if (spirvInst.set == "") {
+            std::vector<spv::IdImmediate> idImmOps;
+            for (unsigned int i = 0; i < glslangOperands.size(); ++i) {
+                if (glslangOperands[i]->getAsTyped()->getQualifier().isSpirvLiteral()) {
+                    // Translate the constant to a literal value
+                    std::vector<unsigned> literals;
+                    glslang::TVector<const glslang::TIntermConstantUnion*> constants;
+                    constants.push_back(glslangOperands[i]->getAsConstantUnion());
+                    TranslateLiterals(constants, literals);
+                    idImmOps.push_back({false, literals[0]});
+                } else
+                    idImmOps.push_back({true, operands[i]});
+            }
+
+            if (node->getBasicType() == glslang::EbtVoid)
+                builder.createNoResultOp(static_cast<spv::Op>(spirvInst.id), idImmOps);
+            else
+                result = builder.createOp(static_cast<spv::Op>(spirvInst.id), resultType(), idImmOps);
+        } else {
+            result = builder.createBuiltinCall(
+                resultType(), spirvInst.set == "GLSL.std.450" ? stdBuiltins : getExtBuiltins(spirvInst.set.c_str()),
+                spirvInst.id, operands);
+        }
+        noReturnValue = node->getBasicType() == glslang::EbtVoid;
+#endif
     } else if (node->getOp() == glslang::EOpDebugPrintf) {
         if (!nonSemanticDebugPrintf) {
             nonSemanticDebugPrintf = builder.import("NonSemantic.DebugPrintf");
@@ -3457,6 +3687,11 @@
 
 void TGlslangToSpvTraverser::visitConstantUnion(glslang::TIntermConstantUnion* node)
 {
+#ifndef GLSLANG_WEB
+    if (node->getQualifier().isSpirvLiteral())
+        return; // Translated to a literal value, skip further processing
+#endif
+
     int nextConst = 0;
     spv::Id constant = createSpvConstantFromConstUnionArray(node->getType(), node->getConstArray(), nextConst, false);
 
@@ -3705,12 +3940,14 @@
             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);
+        case glslang::EbtInt64:
             builder.addExtension(spv::E_SPV_EXT_shader_image_int64);
-            builder.addCapability(spv::CapabilityFloat16ImageAMD);
-        case glslang::EbtUint64:     return builder.makeUintType(64);
+            builder.addCapability(spv::CapabilityInt64ImageEXT);
+            return builder.makeIntType(64);
+        case glslang::EbtUint64:
             builder.addExtension(spv::E_SPV_EXT_shader_image_int64);
-            builder.addCapability(spv::CapabilityFloat16ImageAMD);
+            builder.addCapability(spv::CapabilityInt64ImageEXT);
+            return builder.makeUintType(64);
 #endif
         default:
             assert(0);
@@ -3905,6 +4142,67 @@
     case glslang::EbtString:
         // no type used for OpString
         return 0;
+#ifndef GLSLANG_WEB
+    case glslang::EbtSpirvType: {
+        // GL_EXT_spirv_intrinsics
+        const auto& spirvType = type.getSpirvType();
+        const auto& spirvInst = spirvType.spirvInst;
+
+        std::vector<spv::Id> operands;
+        for (const auto& typeParam : spirvType.typeParams) {
+            // Constant expression
+            if (typeParam.constant->isLiteral()) {
+                if (typeParam.constant->getBasicType() == glslang::EbtFloat) {
+                    float floatValue = static_cast<float>(typeParam.constant->getConstArray()[0].getDConst());
+                    unsigned literal = *reinterpret_cast<unsigned*>(&floatValue);
+                    operands.push_back(literal);
+                } else if (typeParam.constant->getBasicType() == glslang::EbtInt) {
+                    unsigned literal = typeParam.constant->getConstArray()[0].getIConst();
+                    operands.push_back(literal);
+                } else if (typeParam.constant->getBasicType() == glslang::EbtUint) {
+                    unsigned literal = typeParam.constant->getConstArray()[0].getUConst();
+                    operands.push_back(literal);
+                } else if (typeParam.constant->getBasicType() == glslang::EbtBool) {
+                    unsigned literal = typeParam.constant->getConstArray()[0].getBConst();
+                    operands.push_back(literal);
+                } else if (typeParam.constant->getBasicType() == glslang::EbtString) {
+                    auto str = typeParam.constant->getConstArray()[0].getSConst()->c_str();
+                    unsigned literal = 0;
+                    char* literalPtr = reinterpret_cast<char*>(&literal);
+                    unsigned charCount = 0;
+                    char ch = 0;
+                    do {
+                        ch = *(str++);
+                        *(literalPtr++) = ch;
+                        ++charCount;
+                        if (charCount == 4) {
+                            operands.push_back(literal);
+                            literalPtr = reinterpret_cast<char*>(&literal);
+                            charCount = 0;
+                        }
+                    } while (ch != 0);
+
+                    // Partial literal is padded with 0
+                    if (charCount > 0) {
+                        for (; charCount < 4; ++charCount)
+                            *(literalPtr++) = 0;
+                        operands.push_back(literal);
+                    }
+                } else
+                    assert(0); // Unexpected type
+            } else
+                operands.push_back(createSpvConstant(*typeParam.constant));
+        }
+
+        if (spirvInst.set == "")
+            spvType = builder.createOp(static_cast<spv::Op>(spirvInst.id), spv::NoType, operands);
+        else {
+            spvType = builder.createBuiltinCall(
+                spv::NoType, getExtBuiltins(spirvInst.set.c_str()), spirvInst.id, operands);
+        }
+        break;
+    }
+#endif
     default:
         assert(0);
         break;
@@ -4101,7 +4399,6 @@
 {
     // 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++) {
@@ -4159,10 +4456,6 @@
         if (!memberLocationInvalid && memberQualifier.hasLocation())
             builder.addMemberDecoration(spvType, member, spv::DecorationLocation, memberQualifier.layoutLocation);
 
-        if (qualifier.hasLocation())      // track for upcoming inheritance
-            locationOffset += glslangIntermediate->computeTypeLocationSize(
-                                            glslangMember, glslangIntermediate->getStage());
-
         // component, XFB, others
         if (glslangMember.getQualifier().hasComponent())
             builder.addMemberDecoration(spvType, member, spv::DecorationComponent,
@@ -4218,6 +4511,38 @@
             builder.addCapability(spv::CapabilityGeometryShaderPassthroughNV);
             builder.addExtension(spv::E_SPV_NV_geometry_shader_passthrough);
         }
+
+        //
+        // Add SPIR-V decorations for members (GL_EXT_spirv_intrinsics)
+        //
+        if (glslangMember.getQualifier().hasSprivDecorate()) {
+            const glslang::TSpirvDecorate& spirvDecorate = glslangMember.getQualifier().getSpirvDecorate();
+
+            // Add spirv_decorate
+            for (auto& decorate : spirvDecorate.decorates) {
+                if (!decorate.second.empty()) {
+                    std::vector<unsigned> literals;
+                    TranslateLiterals(decorate.second, literals);
+                    builder.addMemberDecoration(spvType, member, static_cast<spv::Decoration>(decorate.first), literals);
+                }
+                else
+                    builder.addMemberDecoration(spvType, member, static_cast<spv::Decoration>(decorate.first));
+            }
+
+            // spirv_decorate_id not applied to members
+            assert(spirvDecorate.decorateIds.empty());
+
+            // Add spirv_decorate_string
+            for (auto& decorateString : spirvDecorate.decorateStrings) {
+                std::vector<const char*> strings;
+                assert(!decorateString.second.empty());
+                for (auto extraOperand : decorateString.second) {
+                    const char* string = extraOperand->getConstArray()[0].getSConst()->c_str();
+                    strings.push_back(string);
+                }
+                builder.addDecoration(spvType, static_cast<spv::Decoration>(decorateString.first), strings);
+            }
+        }
 #endif
     }
 
@@ -4236,6 +4561,8 @@
     glslang::TIntermTyped* specNode = arraySizes.getDimNode(dim);
     if (specNode != nullptr) {
         builder.clearAccessChain();
+        SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder);
+        spec_constant_op_mode_setter.turnOnSpecConstantOpMode();
         specNode->traverse(this);
         return accessChainLoad(specNode->getAsTyped()->getType());
     }
@@ -4271,19 +4598,7 @@
 
     // Need to convert to abstract types when necessary
     if (type.getBasicType() == glslang::EbtBool) {
-        if (builder.isScalarType(nominalTypeId)) {
-            // Conversion for bool
-            spv::Id boolType = builder.makeBoolType();
-            if (nominalTypeId != boolType)
-                loadedId = builder.createBinOp(spv::OpINotEqual, boolType, loadedId, builder.makeUintConstant(0));
-        } else if (builder.isVectorType(nominalTypeId)) {
-            // Conversion for bvec
-            int vecSize = builder.getNumTypeComponents(nominalTypeId);
-            spv::Id bvecType = builder.makeVectorType(builder.makeBoolType(), vecSize);
-            if (nominalTypeId != bvecType)
-                loadedId = builder.createBinOp(spv::OpINotEqual, bvecType, loadedId,
-                    makeSmearedConstant(builder.makeUintConstant(0), vecSize));
-        }
+        loadedId = convertLoadedBoolInUniformToUint(type, nominalTypeId, loadedId);
     }
 
     return loadedId;
@@ -4605,6 +4920,9 @@
     if (glslangIntermediate->getSource() == glslang::EShSourceHlsl)
         return paramType.getBasicType() == glslang::EbtBlock;
     return paramType.containsOpaque() ||                                                       // sampler, etc.
+#ifndef GLSLANG_WEB
+           paramType.getQualifier().isSpirvByReference() ||                                    // spirv_by_reference
+#endif
            (paramType.getBasicType() == glslang::EbtBlock && qualifier == glslang::EvqBuffer); // SSBO
 }
 
@@ -4998,7 +5316,10 @@
 
     int components = node->getType().getVectorSize();
 
-    if (node->getOp() == glslang::EOpTextureFetch) {
+    if (node->getOp() == glslang::EOpImageLoad ||
+        node->getOp() == glslang::EOpImageLoadLod ||
+        node->getOp() == glslang::EOpTextureFetch ||
+        node->getOp() == glslang::EOpTextureFetchOffset) {
         // These must produce 4 components, per SPIR-V spec.  We'll add a conversion constructor if needed.
         // This will only happen through the HLSL path for operator[], so we do not have to handle e.g.
         // the EOpTexture/Proj/Lod/etc family.  It would be harmless to do so, but would need more logic
@@ -5560,7 +5881,7 @@
             ++lValueCount;
         } else {
             // process r-value, which involves a copy for a type mismatch
-            if (function->getParamType(a) != convertGlslangToSpvType(*argTypes[a]) ||
+            if (function->getParamType(a) != builder.getTypeId(rValues[rValueCount]) ||
                 TranslatePrecisionDecoration(*argTypes[a]) != function->getParamPrecision(a))
             {
                 spv::Id argCopy = builder.createVariable(function->getParamPrecision(a), spv::StorageClassFunction, function->getParamType(a), "arg");
@@ -6891,13 +7212,17 @@
     case glslang::EOpImageAtomicAdd:
     case glslang::EOpAtomicCounterAdd:
         opCode = spv::OpAtomicIAdd;
-        if (typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble) {
+        if (typeProxy == glslang::EbtFloat16 || typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble) {
             opCode = spv::OpAtomicFAddEXT;
             builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_add);
-            if (typeProxy == glslang::EbtFloat)
+            if (typeProxy == glslang::EbtFloat16) {
+                builder.addExtension(spv::E_SPV_EXT_shader_atomic_float16_add);
+                builder.addCapability(spv::CapabilityAtomicFloat16AddEXT);
+            } else if (typeProxy == glslang::EbtFloat) {
                 builder.addCapability(spv::CapabilityAtomicFloat32AddEXT);
-            else
+            } else {
                 builder.addCapability(spv::CapabilityAtomicFloat64AddEXT);
+            }
         }
         break;
     case glslang::EOpAtomicSubtract:
@@ -6907,14 +7232,38 @@
     case glslang::EOpAtomicMin:
     case glslang::EOpImageAtomicMin:
     case glslang::EOpAtomicCounterMin:
-        opCode = (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) ?
-            spv::OpAtomicUMin : spv::OpAtomicSMin;
+        if (typeProxy == glslang::EbtFloat16 || typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble) {
+            opCode = spv::OpAtomicFMinEXT;
+            builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_min_max);
+            if (typeProxy == glslang::EbtFloat16)
+                builder.addCapability(spv::CapabilityAtomicFloat16MinMaxEXT);
+            else if (typeProxy == glslang::EbtFloat)
+                builder.addCapability(spv::CapabilityAtomicFloat32MinMaxEXT);
+            else
+                builder.addCapability(spv::CapabilityAtomicFloat64MinMaxEXT);
+        } else if (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) {
+            opCode = spv::OpAtomicUMin;
+        } else {
+            opCode = spv::OpAtomicSMin;
+        }
         break;
     case glslang::EOpAtomicMax:
     case glslang::EOpImageAtomicMax:
     case glslang::EOpAtomicCounterMax:
-        opCode = (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) ?
-            spv::OpAtomicUMax : spv::OpAtomicSMax;
+        if (typeProxy == glslang::EbtFloat16 || typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble) {
+            opCode = spv::OpAtomicFMaxEXT;
+            builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_min_max);
+            if (typeProxy == glslang::EbtFloat16)
+                builder.addCapability(spv::CapabilityAtomicFloat16MinMaxEXT);
+            else if (typeProxy == glslang::EbtFloat)
+                builder.addCapability(spv::CapabilityAtomicFloat32MinMaxEXT);
+            else
+                builder.addCapability(spv::CapabilityAtomicFloat64MinMaxEXT);
+        } else if (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) {
+            opCode = spv::OpAtomicUMax;
+        } else {
+            opCode = spv::OpAtomicSMax;
+        }
         break;
     case glslang::EOpAtomicAnd:
     case glslang::EOpImageAtomicAnd:
@@ -7149,6 +7498,8 @@
         break;
     case glslang::EOpReadFirstInvocation:
         opCode = spv::OpSubgroupFirstInvocationKHR;
+        if (builder.isVectorType(typeId))
+            return CreateInvocationsVectorOperation(opCode, groupOperation, typeId, operands);
         break;
     case glslang::EOpBallot:
     {
@@ -7273,7 +7624,7 @@
     assert(op == spv::OpGroupFMin || op == spv::OpGroupUMin || op == spv::OpGroupSMin ||
            op == spv::OpGroupFMax || op == spv::OpGroupUMax || op == spv::OpGroupSMax ||
            op == spv::OpGroupFAdd || op == spv::OpGroupIAdd || op == spv::OpGroupBroadcast ||
-           op == spv::OpSubgroupReadInvocationKHR ||
+           op == spv::OpSubgroupReadInvocationKHR || op == spv::OpSubgroupFirstInvocationKHR ||
            op == spv::OpGroupFMinNonUniformAMD || op == spv::OpGroupUMinNonUniformAMD ||
            op == spv::OpGroupSMinNonUniformAMD ||
            op == spv::OpGroupFMaxNonUniformAMD || op == spv::OpGroupUMaxNonUniformAMD ||
@@ -7302,6 +7653,8 @@
             spvGroupOperands.push_back(scalar);
             spv::IdImmediate operand = { true, operands[1] };
             spvGroupOperands.push_back(operand);
+        } else if (op == spv::OpSubgroupFirstInvocationKHR) {
+            spvGroupOperands.push_back(scalar);
         } else if (op == spv::OpGroupBroadcast) {
             spv::IdImmediate scope = { true, builder.makeUintConstant(spv::ScopeSubgroup) };
             spvGroupOperands.push_back(scope);
@@ -7972,6 +8325,11 @@
     case glslang::EOpTraceNV:
         builder.createNoResultOp(spv::OpTraceNV, operands);
         return 0;
+    case glslang::EOpTraceRayMotionNV:
+        builder.addExtension(spv::E_SPV_NV_ray_tracing_motion_blur);
+        builder.addCapability(spv::CapabilityRayTracingMotionBlurNV);
+        builder.createNoResultOp(spv::OpTraceRayMotionNV, operands);
+        return 0;
     case glslang::EOpTraceKHR:
         builder.createNoResultOp(spv::OpTraceRayKHR, operands);
         return 0;
@@ -8456,6 +8814,48 @@
         builder.addDecoration(id, symbol->getType().getQualifier().restrict ?
             spv::DecorationRestrictPointerEXT : spv::DecorationAliasedPointerEXT);
     }
+
+    //
+    // Add SPIR-V decorations for structure (GL_EXT_spirv_intrinsics)
+    //
+    if (symbol->getType().getQualifier().hasSprivDecorate()) {
+        const glslang::TSpirvDecorate& spirvDecorate = symbol->getType().getQualifier().getSpirvDecorate();
+
+        // Add spirv_decorate
+        for (auto& decorate : spirvDecorate.decorates) {
+            if (!decorate.second.empty()) {
+                std::vector<unsigned> literals;
+                TranslateLiterals(decorate.second, literals);
+                builder.addDecoration(id, static_cast<spv::Decoration>(decorate.first), literals);
+            }
+            else
+                builder.addDecoration(id, static_cast<spv::Decoration>(decorate.first));
+        }
+
+        // Add spirv_decorate_id
+        for (auto& decorateId : spirvDecorate.decorateIds) {
+            std::vector<spv::Id> operandIds;
+            assert(!decorateId.second.empty());
+            for (auto extraOperand : decorateId.second) {
+                if (extraOperand->getQualifier().isSpecConstant())
+                    operandIds.push_back(getSymbolId(extraOperand->getAsSymbolNode()));
+                else
+                    operandIds.push_back(createSpvConstant(*extraOperand));
+            }
+            builder.addDecorationId(id, static_cast<spv::Decoration>(decorateId.first), operandIds);
+        }
+
+        // Add spirv_decorate_string
+        for (auto& decorateString : spirvDecorate.decorateStrings) {
+            std::vector<const char*> strings;
+            assert(!decorateString.second.empty());
+            for (auto extraOperand : decorateString.second) {
+                const char* string = extraOperand->getConstArray()[0].getSConst()->c_str();
+                strings.push_back(string);
+            }
+            builder.addDecoration(id, static_cast<spv::Decoration>(decorateString.first), strings);
+        }
+    }
 #endif
 
     return id;
diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp
index 56d7f43..56d6d5d 100644
--- a/SPIRV/SPVRemapper.cpp
+++ b/SPIRV/SPVRemapper.cpp
@@ -544,6 +544,9 @@
         // Extended instructions: currently, assume everything is an ID.
         // TODO: add whatever data we need for exceptions to that
         if (opCode == spv::OpExtInst) {
+
+            idFn(asId(word)); // Instruction set is an ID that also needs to be mapped
+
             word        += 2; // instruction set, and instruction from set
             numOperands -= 2;
 
diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp
index 1401bb0..e83306e 100644
--- a/SPIRV/SpvBuilder.cpp
+++ b/SPIRV/SpvBuilder.cpp
@@ -743,6 +743,26 @@
     }
 }
 
+// Figure out the final resulting type of the access chain.
+Id Builder::getResultingAccessChainType() const
+{
+    assert(accessChain.base != NoResult);
+    Id typeId = getTypeId(accessChain.base);
+
+    assert(isPointerType(typeId));
+    typeId = getContainedTypeId(typeId);
+
+    for (int i = 0; i < (int)accessChain.indexChain.size(); ++i) {
+        if (isStructType(typeId)) {
+            assert(isConstantScalar(accessChain.indexChain[i]));
+            typeId = getContainedTypeId(typeId, getConstantScalar(accessChain.indexChain[i]));
+        } else
+            typeId = getContainedTypeId(typeId, accessChain.indexChain[i]);
+    }
+
+    return typeId;
+}
+
 // Return the immediately contained type of a given composite type.
 Id Builder::getContainedTypeId(Id typeId) const
 {
@@ -1585,16 +1605,7 @@
 Id Builder::createAccessChain(StorageClass storageClass, Id base, const std::vector<Id>& offsets)
 {
     // Figure out the final resulting type.
-    spv::Id typeId = getTypeId(base);
-    assert(isPointerType(typeId) && offsets.size() > 0);
-    typeId = getContainedTypeId(typeId);
-    for (int i = 0; i < (int)offsets.size(); ++i) {
-        if (isStructType(typeId)) {
-            assert(isConstantScalar(offsets[i]));
-            typeId = getContainedTypeId(typeId, getConstantScalar(offsets[i]));
-        } else
-            typeId = getContainedTypeId(typeId, offsets[i]);
-    }
+    Id typeId = getResultingAccessChainType();
     typeId = makePointer(storageClass, typeId);
 
     // Make the instruction
@@ -2543,7 +2554,7 @@
         int row = 0;
         int col = 0;
 
-        for (int arg = 0; arg < (int)sources.size(); ++arg) {
+        for (int arg = 0; arg < (int)sources.size() && col < numCols; ++arg) {
             Id argComp = sources[arg];
             for (int comp = 0; comp < getNumComponents(sources[arg]); ++comp) {
                 if (getNumComponents(sources[arg]) > 1) {
@@ -2555,6 +2566,10 @@
                     row = 0;
                     col++;
                 }
+                if (col == numCols) {
+                    // If more components are provided than fit the matrix, discard the rest.
+                    break;
+                }
             }
         }
     }
@@ -2790,28 +2805,59 @@
     assert(accessChain.isRValue == false);
 
     transferAccessChainSwizzle(true);
-    Id base = collapseAccessChain();
-    addDecoration(base, nonUniform);
 
-    Id source = rvalue;
+    // If a swizzle exists and is not full and is not dynamic, then the swizzle will be broken into individual stores.
+    if (accessChain.swizzle.size() > 0 &&
+        getNumTypeComponents(getResultingAccessChainType()) != (int)accessChain.swizzle.size() &&
+        accessChain.component == NoResult) {
+        for (unsigned int i = 0; i < accessChain.swizzle.size(); ++i) {
+            accessChain.indexChain.push_back(makeUintConstant(accessChain.swizzle[i]));
+            accessChain.instr = NoResult;
 
-    // dynamic component should be gone
-    assert(accessChain.component == NoResult);
+            Id base = collapseAccessChain();
+            addDecoration(base, nonUniform);
 
-    // If swizzle still exists, it is out-of-order or not full, we must load the target vector,
-    // extract and insert elements to perform writeMask and/or swizzle.
-    if (accessChain.swizzle.size() > 0) {
-        Id tempBaseId = createLoad(base, spv::NoPrecision);
-        source = createLvalueSwizzle(getTypeId(tempBaseId), tempBaseId, source, accessChain.swizzle);
+            accessChain.indexChain.pop_back();
+            accessChain.instr = NoResult;
+
+            // dynamic component should be gone
+            assert(accessChain.component == NoResult);
+
+            Id source = createCompositeExtract(rvalue, getContainedTypeId(getTypeId(rvalue)), i);
+
+            // take LSB of alignment
+            alignment = alignment & ~(alignment & (alignment-1));
+            if (getStorageClass(base) == StorageClassPhysicalStorageBufferEXT) {
+                memoryAccess = (spv::MemoryAccessMask)(memoryAccess | spv::MemoryAccessAlignedMask);
+            }
+
+            createStore(source, base, memoryAccess, scope, alignment);
+        }
     }
+    else {
+        Id base = collapseAccessChain();
+        addDecoration(base, nonUniform);
 
-    // take LSB of alignment
-    alignment = alignment & ~(alignment & (alignment-1));
-    if (getStorageClass(base) == StorageClassPhysicalStorageBufferEXT) {
-        memoryAccess = (spv::MemoryAccessMask)(memoryAccess | spv::MemoryAccessAlignedMask);
+        Id source = rvalue;
+
+        // dynamic component should be gone
+        assert(accessChain.component == NoResult);
+
+        // If swizzle still exists, it may be out-of-order, we must load the target vector,
+        // extract and insert elements to perform writeMask and/or swizzle.
+        if (accessChain.swizzle.size() > 0) {
+            Id tempBaseId = createLoad(base, spv::NoPrecision);
+            source = createLvalueSwizzle(getTypeId(tempBaseId), tempBaseId, source, accessChain.swizzle);
+        }
+
+        // take LSB of alignment
+        alignment = alignment & ~(alignment & (alignment-1));
+        if (getStorageClass(base) == StorageClassPhysicalStorageBufferEXT) {
+            memoryAccess = (spv::MemoryAccessMask)(memoryAccess | spv::MemoryAccessAlignedMask);
+        }
+
+        createStore(source, base, memoryAccess, scope, alignment);
     }
-
-    createStore(source, base, memoryAccess, scope, alignment);
 }
 
 // Comments in header
diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h
index 73847e1..251b9ee 100644
--- a/SPIRV/SpvBuilder.h
+++ b/SPIRV/SpvBuilder.h
@@ -202,6 +202,7 @@
     StorageClass getTypeStorageClass(Id typeId) const { return module.getStorageClass(typeId); }
     ImageFormat getImageTypeFormat(Id typeId) const
         { return (ImageFormat)module.getInstruction(typeId)->getImmediateOperand(6); }
+    Id getResultingAccessChainType() const;
 
     bool isPointer(Id resultId)      const { return isPointerType(getTypeId(resultId)); }
     bool isScalar(Id resultId)       const { return isScalarType(getTypeId(resultId)); }
diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp
index 23d7b5a..dd6dabc 100644
--- a/SPIRV/SpvPostProcess.cpp
+++ b/SPIRV/SpvPostProcess.cpp
@@ -44,10 +44,8 @@
 #include <algorithm>
 
 #include "SpvBuilder.h"
-
 #include "spirv.hpp"
-#include "GlslangToSpv.h"
-#include "SpvBuilder.h"
+
 namespace spv {
     #include "GLSL.std.450.h"
     #include "GLSL.ext.KHR.h"
@@ -113,8 +111,6 @@
             }
         }
         break;
-    case OpAccessChain:
-    case OpPtrAccessChain:
     case OpCopyObject:
         break;
     case OpFConvert:
@@ -161,26 +157,43 @@
         switch (inst.getImmediateOperand(1)) {
         case GLSLstd450Frexp:
         case GLSLstd450FrexpStruct:
-            if (getSpvVersion() < glslang::EShTargetSpv_1_3 && containsType(typeId, OpTypeInt, 16))
+            if (getSpvVersion() < spv::Spv_1_3 && containsType(typeId, OpTypeInt, 16))
                 addExtension(spv::E_SPV_AMD_gpu_shader_int16);
             break;
         case GLSLstd450InterpolateAtCentroid:
         case GLSLstd450InterpolateAtSample:
         case GLSLstd450InterpolateAtOffset:
-            if (getSpvVersion() < glslang::EShTargetSpv_1_3 && containsType(typeId, OpTypeFloat, 16))
+            if (getSpvVersion() < spv::Spv_1_3 && containsType(typeId, OpTypeFloat, 16))
                 addExtension(spv::E_SPV_AMD_gpu_shader_half_float);
             break;
         default:
             break;
         }
         break;
+    case OpAccessChain:
+    case OpPtrAccessChain:
+        if (isPointerType(typeId))
+            break;
+        if (basicTypeOp == OpTypeInt) {
+            if (width == 16)
+                addCapability(CapabilityInt16);
+            else if (width == 8)
+                addCapability(CapabilityInt8);
+        }
     default:
-        if (basicTypeOp == OpTypeFloat && width == 16)
-            addCapability(CapabilityFloat16);
-        if (basicTypeOp == OpTypeInt && width == 16)
-            addCapability(CapabilityInt16);
-        if (basicTypeOp == OpTypeInt && width == 8)
-            addCapability(CapabilityInt8);
+        if (basicTypeOp == OpTypeInt) {
+            if (width == 16)
+                addCapability(CapabilityInt16);
+            else if (width == 8)
+                addCapability(CapabilityInt8);
+            else if (width == 64)
+                addCapability(CapabilityInt64);
+        } else if (basicTypeOp == OpTypeFloat) {
+            if (width == 16)
+                addCapability(CapabilityFloat16);
+            else if (width == 64)
+                addCapability(CapabilityFloat64);
+        }
         break;
     }
 }
diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp
index 3da77bf..dbdf707 100644
--- a/SPIRV/doc.cpp
+++ b/SPIRV/doc.cpp
@@ -188,6 +188,7 @@
     case ExecutionModeRoundingModeRTE:          return "RoundingModeRTE";
     case ExecutionModeRoundingModeRTZ:          return "RoundingModeRTZ";
     case ExecutionModeStencilRefReplacingEXT:   return "StencilRefReplacingEXT";
+    case ExecutionModeSubgroupUniformControlFlowKHR: return "SubgroupUniformControlFlow";
 
     case ExecutionModeOutputLinesNV:            return "OutputLinesNV";
     case ExecutionModeOutputPrimitivesNV:       return "OutputPrimitivesNV";
@@ -425,6 +426,7 @@
     case BuiltInSMCountNV:              return "SMCountNV";
     case BuiltInWarpIDNV:               return "WarpIDNV";
     case BuiltInSMIDNV:                 return "SMIDNV";
+    case BuiltInCurrentRayTimeNV:       return "CurrentRayTimeNV";
 
     default: return "Bad";
     }
@@ -915,6 +917,7 @@
     case CapabilityPerViewAttributesNV:             return "PerViewAttributesNV";
     case CapabilityGroupNonUniformPartitionedNV:    return "GroupNonUniformPartitionedNV";
     case CapabilityRayTracingNV:                    return "RayTracingNV";
+    case CapabilityRayTracingMotionBlurNV:          return "RayTracingMotionBlurNV";
     case CapabilityRayTracingKHR:                   return "RayTracingKHR";
     case CapabilityRayQueryKHR:                     return "RayQueryKHR";
     case CapabilityRayTracingProvisionalKHR:        return "RayTracingProvisionalKHR";
@@ -965,8 +968,12 @@
 
     case CapabilityIntegerFunctions2INTEL:              return "CapabilityIntegerFunctions2INTEL";
 
+    case CapabilityAtomicFloat16AddEXT:                     return "AtomicFloat16AddEXT";
     case CapabilityAtomicFloat32AddEXT:                     return "AtomicFloat32AddEXT";
     case CapabilityAtomicFloat64AddEXT:                     return "AtomicFloat64AddEXT";
+    case CapabilityAtomicFloat16MinMaxEXT:                  return "AtomicFloat16MinMaxEXT";
+    case CapabilityAtomicFloat32MinMaxEXT:                  return "AtomicFloat32MinMaxEXT";
+    case CapabilityAtomicFloat64MinMaxEXT:                  return "AtomicFloat64MinMaxEXT";
 
     case CapabilityWorkgroupMemoryExplicitLayoutKHR:            return "CapabilityWorkgroupMemoryExplicitLayoutKHR";
     case CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR:  return "CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR";
@@ -1351,6 +1358,8 @@
     case 4432: return "OpSubgroupReadInvocationKHR";
 
     case OpAtomicFAddEXT: return "OpAtomicFAddEXT";
+    case OpAtomicFMinEXT: return "OpAtomicFMinEXT";
+    case OpAtomicFMaxEXT: return "OpAtomicFMaxEXT";
 
     case 5000: return "OpGroupIAddNonUniformAMD";
     case 5001: return "OpGroupFAddNonUniformAMD";
@@ -1375,6 +1384,7 @@
     case OpTerminateRayNV:                    return "OpTerminateRayNV";
     case OpTerminateRayKHR:                   return "OpTerminateRayKHR";
     case OpTraceNV:                           return "OpTraceNV";
+    case OpTraceRayMotionNV:                  return "OpTraceRayMotionNV";
     case OpTraceRayKHR:                       return "OpTraceRayKHR";
     case OpTypeAccelerationStructureKHR:      return "OpTypeAccelerationStructureKHR";
     case OpExecuteCallableNV:                 return "OpExecuteCallableNV";
@@ -2341,6 +2351,16 @@
     InstructionDesc[OpAtomicSMax].operands.push(OperandMemorySemantics, "'Semantics'");
     InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Value'");
 
+    InstructionDesc[OpAtomicFMinEXT].operands.push(OperandId, "'Pointer'");
+    InstructionDesc[OpAtomicFMinEXT].operands.push(OperandScope, "'Scope'");
+    InstructionDesc[OpAtomicFMinEXT].operands.push(OperandMemorySemantics, "'Semantics'");
+    InstructionDesc[OpAtomicFMinEXT].operands.push(OperandId, "'Value'");
+
+    InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandId, "'Pointer'");
+    InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandScope, "'Scope'");
+    InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandMemorySemantics, "'Semantics'");
+    InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandId, "'Value'");
+
     InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Pointer'");
     InstructionDesc[OpAtomicAnd].operands.push(OperandScope, "'Scope'");
     InstructionDesc[OpAtomicAnd].operands.push(OperandMemorySemantics, "'Semantics'");
@@ -2795,6 +2815,20 @@
     InstructionDesc[OpTraceNV].operands.push(OperandId, "'Payload'");
     InstructionDesc[OpTraceNV].setResultAndType(false, false);
 
+    InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Acceleration Structure'");
+    InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Flags'");
+    InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Cull Mask'");
+    InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'SBT Record Offset'");
+    InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'SBT Record Stride'");
+    InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Miss Index'");
+    InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Origin'");
+    InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'TMin'");
+    InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Direction'");
+    InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'TMax'");
+    InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Time'");
+    InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Payload'");
+    InstructionDesc[OpTraceRayMotionNV].setResultAndType(false, false);
+
     InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Acceleration Structure'");
     InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Flags'");
     InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Cull Mask'");
diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp
index af629ef..f6b7be9 100644
--- a/SPIRV/spirv.hpp
+++ b/SPIRV/spirv.hpp
@@ -150,6 +150,7 @@
     ExecutionModeSubgroupsPerWorkgroupId = 37,
     ExecutionModeLocalSizeId = 38,
     ExecutionModeLocalSizeHintId = 39,
+    ExecutionModeSubgroupUniformControlFlowKHR = 4421,
     ExecutionModePostDepthCoverage = 4446,
     ExecutionModeDenormPreserve = 4459,
     ExecutionModeDenormFlushToZero = 4460,
@@ -409,6 +410,7 @@
 enum LinkageType {
     LinkageTypeExport = 0,
     LinkageTypeImport = 1,
+    LinkageTypeLinkOnceODR = 2,
     LinkageTypeMax = 0x7fffffff,
 };
 
@@ -650,6 +652,7 @@
     BuiltInHitTNV = 5332,
     BuiltInHitKindKHR = 5333,
     BuiltInHitKindNV = 5333,
+    BuiltInCurrentRayTimeNV = 5334,
     BuiltInIncomingRayFlagsKHR = 5351,
     BuiltInIncomingRayFlagsNV = 5351,
     BuiltInRayGeometryIndexKHR = 5352,
@@ -986,6 +989,7 @@
     CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
     CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
     CapabilityRayTracingNV = 5340,
+    CapabilityRayTracingMotionBlurNV = 5341,
     CapabilityVulkanMemoryModel = 5345,
     CapabilityVulkanMemoryModelKHR = 5345,
     CapabilityVulkanMemoryModelDeviceScope = 5346,
@@ -1010,8 +1014,12 @@
     CapabilityFunctionPointersINTEL = 5603,
     CapabilityIndirectReferencesINTEL = 5604,
     CapabilityAsmINTEL = 5606,
+    CapabilityAtomicFloat32MinMaxEXT = 5612,
+    CapabilityAtomicFloat64MinMaxEXT = 5613,
+    CapabilityAtomicFloat16MinMaxEXT = 5616,
     CapabilityVectorComputeINTEL = 5617,
     CapabilityVectorAnyINTEL = 5619,
+    CapabilityExpectAssumeKHR = 5629,
     CapabilitySubgroupAvcMotionEstimationINTEL = 5696,
     CapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,
     CapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,
@@ -1035,6 +1043,7 @@
     CapabilityAtomicFloat32AddEXT = 6033,
     CapabilityAtomicFloat64AddEXT = 6034,
     CapabilityLongConstantCompositeINTEL = 6089,
+    CapabilityAtomicFloat16AddEXT = 6095,
     CapabilityMax = 0x7fffffff,
 };
 
@@ -1102,15 +1111,15 @@
 };
 
 enum FPDenormMode {
-  FPDenormModePreserve = 0,
-  FPDenormModeFlushToZero = 1,
-  FPDenormModeMax = 0x7fffffff,
+    FPDenormModePreserve = 0,
+    FPDenormModeFlushToZero = 1,
+    FPDenormModeMax = 0x7fffffff,
 };
 
 enum FPOperationMode {
-  FPOperationModeIEEE = 0,
-  FPOperationModeALT = 1,
-  FPOperationModeMax = 0x7fffffff,
+    FPOperationModeIEEE = 0,
+    FPOperationModeALT = 1,
+    FPOperationModeMax = 0x7fffffff,
 };
 
 enum Op {
@@ -1496,6 +1505,8 @@
     OpIgnoreIntersectionNV = 5335,
     OpTerminateRayNV = 5336,
     OpTraceNV = 5337,
+    OpTraceMotionNV = 5338,
+    OpTraceRayMotionNV = 5339,
     OpTypeAccelerationStructureKHR = 5341,
     OpTypeAccelerationStructureNV = 5341,
     OpExecuteCallableNV = 5344,
@@ -1532,11 +1543,15 @@
     OpUSubSatINTEL = 5596,
     OpIMul32x16INTEL = 5597,
     OpUMul32x16INTEL = 5598,
-    OpConstFunctionPointerINTEL = 5600,
+    OpConstantFunctionPointerINTEL = 5600,
     OpFunctionPointerCallINTEL = 5601,
     OpAsmTargetINTEL = 5609,
     OpAsmINTEL = 5610,
     OpAsmCallINTEL = 5611,
+    OpAtomicFMinEXT = 5614,
+    OpAtomicFMaxEXT = 5615,
+    OpAssumeTrueKHR = 5630,
+    OpExpectKHR = 5631,
     OpDecorateString = 5632,
     OpDecorateStringGOOGLE = 5632,
     OpMemberDecorateString = 5633,
@@ -2079,6 +2094,8 @@
     case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
     case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
     case OpTraceNV: *hasResult = false; *hasResultType = false; break;
+    case OpTraceMotionNV: *hasResult = false; *hasResultType = false; break;
+    case OpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break;
     case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
     case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
     case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
@@ -2114,11 +2131,15 @@
     case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
     case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
     case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
-    case OpConstFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
+    case OpConstantFunctionPointerINTEL: *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 OpAtomicFMinEXT: *hasResult = true; *hasResultType = true; break;
+    case OpAtomicFMaxEXT: *hasResult = true; *hasResultType = true; break;
+    case OpAssumeTrueKHR: *hasResult = false; *hasResultType = false; break;
+    case OpExpectKHR: *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;
diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt
index 751d1cd..2b163e7 100644
--- a/StandAlone/CMakeLists.txt
+++ b/StandAlone/CMakeLists.txt
@@ -31,6 +31,22 @@
 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 # POSSIBILITY OF SUCH DAMAGE.
 
+find_host_package(PythonInterp 3 REQUIRED)
+
+set(GLSLANG_INTRINSIC_H          "${GLSLANG_GENERATED_INCLUDEDIR}/glslang/glsl_intrinsic_header.h")
+set(GLSLANG_INTRINSIC_PY         "${CMAKE_CURRENT_SOURCE_DIR}/../gen_extension_headers.py")
+set(GLSLANG_INTRINSIC_HEADER_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../glslang/ExtensionHeaders")
+
+add_custom_command(
+    OUTPUT  ${GLSLANG_INTRINSIC_H}
+    COMMAND ${PYTHON_EXECUTABLE} "${GLSLANG_INTRINSIC_PY}"
+            "-i" ${GLSLANG_INTRINSIC_HEADER_DIR}
+            "-o" ${GLSLANG_INTRINSIC_H}
+    DEPENDS ${GLSLANG_INTRINSIC_PY}
+    COMMENT "Generating ${GLSLANG_INTRINSIC_H}")
+
+#add_custom_target(glslangValidator DEPENDS ${GLSLANG_INTRINSIC_H})
+
 add_library(glslang-default-resource-limits
             ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/resource_limits_c.cpp)
@@ -41,7 +57,7 @@
                            PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
                            PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}>)
 
-set(SOURCES StandAlone.cpp DirStackFileIncluder.h)
+set(SOURCES StandAlone.cpp DirStackFileIncluder.h  ${GLSLANG_INTRINSIC_H})
 
 add_executable(glslangValidator ${SOURCES})
 set_property(TARGET glslangValidator PROPERTY FOLDER tools)
@@ -62,7 +78,7 @@
     if(NOT ANDROID)
         set(LIBRARIES ${LIBRARIES} pthread)
     endif()
-endif(WIN32)
+endif()
 
 target_link_libraries(glslangValidator ${LIBRARIES})
 target_include_directories(glslangValidator PUBLIC
@@ -73,7 +89,7 @@
     target_include_directories(glslangValidator
         PRIVATE ${spirv-tools_SOURCE_DIR}/include
     )
-endif(ENABLE_OPT)
+endif()
 
 if(ENABLE_SPVREMAPPER)
     set(REMAPPER_SOURCES spirv-remap.cpp)
@@ -85,7 +101,7 @@
 
 if(WIN32)
     source_group("Source" FILES ${SOURCES})
-endif(WIN32)
+endif()
 
 if(ENABLE_GLSLANG_INSTALL)
     install(TARGETS glslangValidator EXPORT glslangValidatorTargets
@@ -108,4 +124,4 @@
                 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
     endif()
     install(EXPORT glslang-default-resource-limitsTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
-endif(ENABLE_GLSLANG_INSTALL)
+endif()
diff --git a/StandAlone/DirStackFileIncluder.h b/StandAlone/DirStackFileIncluder.h
index 1873413..5a33c78 100644
--- a/StandAlone/DirStackFileIncluder.h
+++ b/StandAlone/DirStackFileIncluder.h
@@ -40,6 +40,7 @@
 #include <string>
 #include <fstream>
 #include <algorithm>
+#include <set>
 
 #include "./../glslang/Public/ShaderLang.h"
 
@@ -84,12 +85,18 @@
         }
     }
 
+    virtual std::set<std::string> getIncludedFiles()
+    {
+        return includedFiles;
+    }
+
     virtual ~DirStackFileIncluder() override { }
 
 protected:
     typedef char tUserDataElement;
     std::vector<std::string> directoryStack;
     int externalLocalDirectoryCount;
+    std::set<std::string> includedFiles;
 
     // Search for a valid "local" path based on combining the stack of include
     // directories and the nominal name of the header.
@@ -108,6 +115,7 @@
             std::ifstream file(path, std::ios_base::binary | std::ios_base::ate);
             if (file) {
                 directoryStack.push_back(getDirectory(path));
+                includedFiles.insert(path);
                 return newIncludeResult(path, file, (int)file.tellg());
             }
         }
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index 923ded3..23e510c 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -2,6 +2,7 @@
 // Copyright (C) 2002-2005  3Dlabs Inc. Ltd.
 // Copyright (C) 2013-2016 LunarG, Inc.
 // Copyright (C) 2016-2020 Google, Inc.
+// Modifications Copyright(C) 2021 Advanced Micro Devices, Inc.All rights reserved.
 //
 // All rights reserved.
 //
@@ -58,12 +59,15 @@
 #include <map>
 #include <memory>
 #include <thread>
+#include <set>
 
 #include "../glslang/OSDependent/osinclude.h"
 
 // Build-time generated includes
 #include "glslang/build_info.h"
 
+#include "glslang/glsl_intrinsic_header.h"
+
 extern "C" {
     GLSLANG_EXPORT void ShOutputHtml();
 }
@@ -111,6 +115,7 @@
 bool stripDebugInfo = false;
 bool beQuiet = false;
 bool VulkanRulesRelaxed = false;
+bool autoSampledTextures = false;
 
 //
 // Return codes from main/exit().
@@ -165,6 +170,7 @@
 int Options = 0;
 const char* ExecutableName = nullptr;
 const char* binaryFileName = nullptr;
+const char* depencyFileName = nullptr;
 const char* entryPointName = nullptr;
 const char* sourceEntryPointName = nullptr;
 const char* shaderStageName = nullptr;
@@ -260,6 +266,7 @@
 
 // Track the user's #define and #undef from the command line.
 TPreamble UserPreamble;
+std::string PreambleString;
 
 //
 // Create the default name for saving a binary if -o is not provided.
@@ -344,13 +351,13 @@
         lang = FindLanguage(argv[arg++], false);
     }
 
-    if ((argc - arg) > 2 && isdigit(argv[arg+0][0]) && isdigit(argv[arg+1][0])) {
+    if ((argc - arg) >= 2 && isdigit(argv[arg+0][0]) && isdigit(argv[arg+1][0])) {
         // Parse a per-set binding base
-        while ((argc - arg) > 2 && isdigit(argv[arg+0][0]) && isdigit(argv[arg+1][0])) {
+        do {
             const int baseNum = atoi(argv[arg++]);
             const int setNum = atoi(argv[arg++]);
             perSetBase[setNum] = baseNum;
-        }
+        } while ((argc - arg) >= 2 && isdigit(argv[arg + 0][0]) && isdigit(argv[arg + 1][0]));
     } else {
         // Parse single binding base
         singleBase = atoi(argv[arg++]);
@@ -655,6 +662,8 @@
                         HlslEnable16BitTypes = true;
                     } else if (lowerword == "hlsl-dx9-compatible") {
                         HlslDX9compatible = true;
+                    } else if (lowerword == "auto-sampled-textures") { 
+                        autoSampledTextures = true;
                     } else if (lowerword == "invert-y" ||  // synonyms
                                lowerword == "iy") {
                         Options |= EOptionInvertY;
@@ -798,6 +807,11 @@
                         break;
                     } else if (lowerword == "quiet") {
                         beQuiet = true;
+                    } else if (lowerword == "depfile") {
+                        if (argc <= 1)
+                            Error("no <depfile-name> provided", lowerword.c_str());
+                        depencyFileName = argv[1];
+                        bumpArg();
                     } else if (lowerword == "version") {
                         Options |= EOptionDumpVersions;
                     } else if (lowerword == "help") {
@@ -1135,6 +1149,23 @@
     }
 };
 
+// Writes a depfile similar to gcc -MMD foo.c
+bool writeDepFile(std::string depfile, std::vector<std::string>& binaryFiles, const std::vector<std::string>& sources)
+{
+    std::ofstream file(depfile);
+    if (file.fail())
+        return false;
+
+    for (auto it = binaryFiles.begin(); it != binaryFiles.end(); it++) {
+        file << *it << ":";
+        for (auto it = sources.begin(); it != sources.end(); it++) {
+            file << " " << *it;
+        }
+        file << std::endl;
+    }
+    return true;
+}
+
 //
 // For linking mode: Will independently parse each compilation unit, but then put them
 // in the same program and link them together, making at most one linked module per
@@ -1151,6 +1182,12 @@
     EShMessages messages = EShMsgDefault;
     SetMessageOptions(messages);
 
+    DirStackFileIncluder includer;
+    std::for_each(IncludeDirectoryList.rbegin(), IncludeDirectoryList.rend(), [&includer](const std::string& dir) {
+        includer.pushExternalLocalDirectory(dir); });
+
+    std::vector<std::string> sources;
+
     //
     // Per-shader processing...
     //
@@ -1158,6 +1195,9 @@
     glslang::TProgram& program = *new glslang::TProgram;
     for (auto it = compUnits.cbegin(); it != compUnits.cend(); ++it) {
         const auto &compUnit = *it;
+        for (int i = 0; i < compUnit.count; i++) {
+            sources.push_back(compUnit.fileNameList[i]);
+        }
         glslang::TShader* shader = new glslang::TShader(compUnit.stage);
         shader->setStringsWithLengthsAndNames(compUnit.text, NULL, compUnit.fileNameList, compUnit.count);
         if (entryPointName)
@@ -1168,8 +1208,17 @@
                        "Use '-e <name>'.\n");
             shader->setSourceEntryPoint(sourceEntryPointName);
         }
+
+        std::string intrinsicString = getIntrinsic(compUnit.text, compUnit.count);
+
+        PreambleString = "";
         if (UserPreamble.isSet())
-            shader->setPreamble(UserPreamble.get());
+            PreambleString.append(UserPreamble.get());
+
+        if (!intrinsicString.empty())
+            PreambleString.append(intrinsicString);
+
+        shader->setPreamble(PreambleString.c_str());
         shader->addProcesses(Processes);
 
 #ifndef GLSLANG_WEB
@@ -1189,6 +1238,9 @@
         shader->setNoStorageFormat((Options & EOptionNoStorageFormat) != 0);
         shader->setResourceSetBinding(baseResourceSetBinding[compUnit.stage]);
 
+        if (autoSampledTextures)
+            shader->setTextureSamplerTransformMode(EShTexSampTransUpgradeTextureRemoveSampler);
+
         if (Options & EOptionAutoMapBindings)
             shader->setAutoMapBindings(true);
 
@@ -1252,9 +1304,6 @@
 
         const int defaultVersion = Options & EOptionDefaultDesktop ? 110 : 100;
 
-        DirStackFileIncluder includer;
-        std::for_each(IncludeDirectoryList.rbegin(), IncludeDirectoryList.rend(), [&includer](const std::string& dir) {
-            includer.pushExternalLocalDirectory(dir); });
 #ifndef GLSLANG_WEB
         if (Options & EOptionOutputPreprocessed) {
             std::string str;
@@ -1314,6 +1363,8 @@
     }
 #endif
 
+    std::vector<std::string> outputFiles;
+
     // Dump SPIR-V
     if (Options & EOptionSpv) {
         if (CompileFailed || LinkFailed)
@@ -1343,6 +1394,8 @@
                         } else {
                             glslang::OutputSpvBin(spirv, GetBinaryName((EShLanguage)stage));
                         }
+
+                        outputFiles.push_back(GetBinaryName((EShLanguage)stage));
 #ifndef GLSLANG_WEB
                         if (!SpvToolsDisassembler && (Options & EOptionHumanReadableSpv))
                             spv::Disassemble(std::cout, spirv);
@@ -1353,6 +1406,13 @@
         }
     }
 
+    if (depencyFileName && !(CompileFailed || LinkFailed)) {
+        std::set<std::string> includedFiles = includer.getIncludedFiles();
+        sources.insert(sources.end(), includedFiles.begin(), includedFiles.end());
+
+        writeDepFile(depencyFileName, outputFiles, sources);
+    }
+
     // Free everything up, program has to go before the shaders
     // because it might have merged stuff from the shaders, and
     // the stuff from the shaders has to have its destructors called
@@ -1772,7 +1832,10 @@
            "                                    without explicit bindings\n"
            "  --auto-map-locations | --aml      automatically locate input/output lacking\n"
            "                                    'location' (fragile, not cross stage)\n"
+           "  --auto-sampled-textures           Removes sampler variables and converts\n" 
+           "                                    existing textures to sampled textures\n"
            "  --client {vulkan<ver>|opengl<ver>} see -V and -G\n"
+           "  --depfile <file>                  writes depfile for build systems\n"
            "  --dump-builtin-symbols            prints builtin symbol table prior each compile\n"
            "  -dumpfullversion | -dumpversion   print bare major.minor.patchlevel\n"
            "  --flatten-uniform-arrays | --fua  flatten uniform texture/sampler arrays to\n"
diff --git a/Test/GL_ARB_draw_instanced.vert b/Test/GL_ARB_draw_instanced.vert
new file mode 100644
index 0000000..6e39086
--- /dev/null
+++ b/Test/GL_ARB_draw_instanced.vert
@@ -0,0 +1,18 @@
+#version 150
+#extension GL_ARB_draw_instanced : require
+#define ID gl_InstanceID
+
+uniform mat4 gtf_ModelViewProjectionMatrix;
+uniform vec3 instanceOffsets[3];
+in vec4 va[gl_MaxVertexAttribs];
+out vec4 color;
+
+void main (void)
+{
+        vec4 vertex = vec4(va[0].xy / 3.0, va[0].zw) + vec4(instanceOffsets[ID], 1.0);
+        color = vec4(0, 0, 0, 0);
+        for (int i = 1; i < gl_MaxVertexAttribs; i++)
+                color += va[i];
+        gl_Position = gtf_ModelViewProjectionMatrix * vertex;
+        gl_PointSize = 1.0;
+}
diff --git a/Test/GL_ARB_gpu_shader5.u2i.vert b/Test/GL_ARB_gpu_shader5.u2i.vert
new file mode 100644
index 0000000..0caa9bc
--- /dev/null
+++ b/Test/GL_ARB_gpu_shader5.u2i.vert
@@ -0,0 +1,11 @@
+#version 150
+#extension GL_ARB_gpu_shader5 : require
+
+uniform int u1;
+uniform int u2;
+out   vec4 result;
+void main()
+{
+    uint v = 0;
+    v = uint(u2) - u1;  // implicit conversions
+}
diff --git a/Test/GL_EXT_shader_integer_mix.vert b/Test/GL_EXT_shader_integer_mix.vert
new file mode 100644
index 0000000..3616e58
--- /dev/null
+++ b/Test/GL_EXT_shader_integer_mix.vert
@@ -0,0 +1,13 @@
+#version 330
+#extension GL_EXT_shader_integer_mix: require
+
+
+#if !defined GL_EXT_shader_integer_mix
+#  error GL_EXT_shader_integer_mix is not defined
+#elif GL_EXT_shader_integer_mix != 1
+#  error GL_EXT_shader_integer_mix is not equal to 1
+#endif
+
+void main(void) { 
+    gl_Position = vec4(0); 
+}
diff --git a/Test/atomicAdd.comp b/Test/atomicAdd.comp
new file mode 100644
index 0000000..27dfa13
--- /dev/null
+++ b/Test/atomicAdd.comp
@@ -0,0 +1,19 @@
+#version 320 es
+layout(local_size_x = 1) in;
+
+struct structType{
+    int y[3];
+};
+
+layout(std430) buffer t2 {
+    structType f;
+} t;
+
+buffer coherent Buffer { int x; };
+int z;
+
+void main() {
+  atomicAdd(x, 1);
+  atomicAdd(t.f.y[1], 1);
+  atomicAdd(z, 1);
+}
\ No newline at end of file
diff --git a/Test/atomicCounterARBOps.vert b/Test/atomicCounterARBOps.vert
new file mode 100644
index 0000000..5eb6637
--- /dev/null
+++ b/Test/atomicCounterARBOps.vert
@@ -0,0 +1,28 @@
+#version 450 core
+#extension GL_ARB_shader_atomic_counters: enable
+#extension GL_ARB_shader_atomic_counter_ops:enable
+
+layout(binding = 0) uniform atomic_uint counter;
+
+out highp vec4 vsColor;
+
+void main(){
+    vec4 outColor = vec4(1.0);
+    uint ret;
+
+    ret = atomicCounterAddARB(counter, 4u);
+    ret = atomicCounterSubtractARB(counter, 4u);
+    ret = atomicCounterMinARB(counter, 4u);
+    ret = atomicCounterMaxARB(counter, 4u);
+    ret = atomicCounterAndARB(counter, 4u);
+    ret = atomicCounterOrARB(counter, 4u);
+    ret = atomicCounterXorARB(counter, 4u);
+    ret = atomicCounterExchangeARB(counter, 4u);
+    ret = atomicCounterCompSwapARB(counter, 4u, 4u);
+
+    uint after = atomicCounter(counter);
+    if (after == ret)
+        outColor = vec4(0.0);
+
+    vsColor = outColor;
+}
\ No newline at end of file
diff --git a/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out b/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out
index 824aa49..f45a768 100644
--- a/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out
+++ b/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out
@@ -1,18 +1,18 @@
 hlsl.partialFlattenLocal.vert
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 159
+// Id's are bound by 164
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Vertex 4  "main" 83 86
+                              EntryPoint Vertex 4  "main" 86 89
                               Source HLSL 500
                               Name 4  "main"
-                              Name 83  "pos"
-                              Name 86  "@entryPointOutput"
-                              Decorate 83(pos) Location 0
-                              Decorate 86(@entryPointOutput) BuiltIn Position
+                              Name 86  "pos"
+                              Name 89  "@entryPointOutput"
+                              Decorate 86(pos) Location 0
+                              Decorate 89(@entryPointOutput) BuiltIn Position
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -33,49 +33,54 @@
               37:    6(float) Constant 1065353216
               38:   18(fvec2) ConstantComposite 32 37
               39:             TypePointer Function 18(fvec2)
+              42:             TypePointer Function 6(float)
               54:             TypeBool
-              82:             TypePointer Input 7(fvec4)
-         83(pos):     82(ptr) Variable Input
-              85:             TypePointer Output 7(fvec4)
-86(@entryPointOutput):     85(ptr) Variable Output
-             131:             TypePointer Function 17
-             133:             TypePointer Function 20
+              64:     15(int) Constant 0
+              67:     15(int) Constant 1
+              85:             TypePointer Input 7(fvec4)
+         86(pos):     85(ptr) Variable Input
+              88:             TypePointer Output 7(fvec4)
+89(@entryPointOutput):     88(ptr) Variable Output
+             135:             TypePointer Function 17
+             137:             TypePointer Function 20
          4(main):           2 Function None 3
                5:             Label
-             134:    133(ptr) Variable Function
-             132:    131(ptr) Variable Function
-              84:    7(fvec4) Load 83(pos)
-             137:     34(ptr) AccessChain 132 25
-                              Store 137 33
-             138:     39(ptr) AccessChain 134 25
-                              Store 138 38
-                              Branch 101
-             101:             Label
-             158:     21(int) Phi 25 5 119 105
-             104:    54(bool) SLessThan 158 31
-                              LoopMerge 120 105 None
-                              BranchConditional 104 105 120
-             105:               Label
-             139:     39(ptr)   AccessChain 134 158
-             109:   18(fvec2)   Load 139
-             140:     34(ptr)   AccessChain 132 158
-             111:   14(fvec3)   Load 140
-             112:   18(fvec2)   VectorShuffle 111 111 0 1
-             113:   18(fvec2)   FAdd 112 109
-             141:     34(ptr)   AccessChain 132 158
-             115:   14(fvec3)   Load 141
-             116:   14(fvec3)   VectorShuffle 115 113 3 4 2
-                                Store 141 116
-             119:     21(int)   IAdd 158 31
-                                Branch 101
-             120:             Label
-             143:          17 Load 132
-             157:   14(fvec3) CompositeExtract 143 0
-             125:    6(float) CompositeExtract 157 0
-             126:    6(float) CompositeExtract 157 1
-             127:    6(float) CompositeExtract 157 2
-             128:    7(fvec4) CompositeConstruct 125 126 127 32
-             129:    7(fvec4) FAdd 84 128
-                              Store 86(@entryPointOutput) 129
+             138:    137(ptr) Variable Function
+             136:    135(ptr) Variable Function
+              87:    7(fvec4) Load 86(pos)
+             141:     34(ptr) AccessChain 136 25
+                              Store 141 33
+             142:     39(ptr) AccessChain 138 25
+                              Store 142 38
+                              Branch 104
+             104:             Label
+             163:     21(int) Phi 25 5 123 108
+             107:    54(bool) SLessThan 163 31
+                              LoopMerge 124 108 None
+                              BranchConditional 107 108 124
+             108:               Label
+             143:     39(ptr)   AccessChain 138 163
+             112:   18(fvec2)   Load 143
+             144:     34(ptr)   AccessChain 136 163
+             114:   14(fvec3)   Load 144
+             115:   18(fvec2)   VectorShuffle 114 114 0 1
+             116:   18(fvec2)   FAdd 115 112
+             145:     42(ptr)   AccessChain 136 163 64
+             118:    6(float)   CompositeExtract 116 0
+                                Store 145 118
+             146:     42(ptr)   AccessChain 136 163 67
+             120:    6(float)   CompositeExtract 116 1
+                                Store 146 120
+             123:     21(int)   IAdd 163 31
+                                Branch 104
+             124:             Label
+             148:          17 Load 136
+             162:   14(fvec3) CompositeExtract 148 0
+             129:    6(float) CompositeExtract 162 0
+             130:    6(float) CompositeExtract 162 1
+             131:    6(float) CompositeExtract 162 2
+             132:    7(fvec4) CompositeConstruct 129 130 131 32
+             133:    7(fvec4) FAdd 87 132
+                              Store 89(@entryPointOutput) 133
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/150.frag.out b/Test/baseResults/150.frag.out
index 7672b58..2192e14 100644
--- a/Test/baseResults/150.frag.out
+++ b/Test/baseResults/150.frag.out
@@ -3,7 +3,6 @@
 ERROR: 0:5: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord
 ERROR: 0:6: 'layout qualifier' : can only apply origin_upper_left and pixel_center_origin to gl_FragCoord 
 ERROR: 0:14: 'gl_FragCoord' : cannot redeclare after use 
-ERROR: 0:50: 'gl_PerFragment' : cannot be used (maybe an instance name is needed) 
 ERROR: 0:50: 'gl_PerFragment' : undeclared identifier 
 ERROR: 0:53: 'double' : Reserved word. 
 ERROR: 0:53: 'double' : not supported for this version or the enabled extensions 
@@ -18,7 +17,7 @@
 ERROR: 0:155: 'textureQueryLod' : no matching overloaded function found 
 ERROR: 0:155: 'assign' :  cannot convert from ' const float' to ' temp 2-component vector of float'
 ERROR: 0:183: 'mix' : required extension not requested: GL_EXT_shader_integer_mix
-ERROR: 19 compilation errors.  No code generated.
+ERROR: 18 compilation errors.  No code generated.
 
 
 Shader version: 150
diff --git a/Test/baseResults/150.vert.out b/Test/baseResults/150.vert.out
index 05a1db9..408db36 100644
--- a/Test/baseResults/150.vert.out
+++ b/Test/baseResults/150.vert.out
@@ -1,10 +1,12 @@
 150.vert
+ERROR: 0:18: 'gl_ClipVertex' : undeclared identifier 
+ERROR: 0:18: 'assign' :  cannot convert from ' in 4-component vector of float' to ' temp float'
 ERROR: 0:26: 'a' : cannot redeclare a user-block member array 
 ERROR: 0:28: 'double' : Reserved word. 
 ERROR: 0:28: 'double' : not supported for this version or the enabled extensions 
 ERROR: 0:28: 'vertex-shader `double` type input' : not supported for this version or the enabled extensions 
 ERROR: 0:3001: '#error' : line of this error should be 3001  
-ERROR: 5 compilation errors.  No code generated.
+ERROR: 7 compilation errors.  No code generated.
 
 
 Shader version: 150
@@ -15,20 +17,20 @@
 0:15    Sequence
 0:15      move second child to first child ( temp 4-component vector of float)
 0:15        gl_Position: direct index for structure ( invariant gl_Position 4-component vector of float Position)
-0:15          'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:15          'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance})
 0:15          Constant:
 0:15            0 (const uint)
 0:15        'iv4' ( in 4-component vector of float)
 0:16      move second child to first child ( temp float)
 0:16        gl_PointSize: direct index for structure ( gl_PointSize float PointSize)
-0:16          'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:16          'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance})
 0:16          Constant:
 0:16            1 (const uint)
 0:16        'ps' ( uniform float)
 0:17      move second child to first child ( temp float)
 0:17        direct index ( temp float ClipDistance)
 0:17          gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance)
-0:17            'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:17            'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance})
 0:17            Constant:
 0:17              2 (const uint)
 0:17          Constant:
@@ -37,12 +39,7 @@
 0:17          'iv4' ( in 4-component vector of float)
 0:17          Constant:
 0:17            0 (const int)
-0:18      move second child to first child ( temp 4-component vector of float)
-0:18        gl_ClipVertex: direct index for structure ( gl_ClipVertex 4-component vector of float ClipVertex)
-0:18          'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
-0:18          Constant:
-0:18            3 (const uint)
-0:18        'iv4' ( in 4-component vector of float)
+0:18      'gl_ClipVertex' ( temp float)
 0:?   Linker Objects
 0:?     'iv4' ( in 4-component vector of float)
 0:?     'ps' ( uniform float)
@@ -67,7 +64,6 @@
 
 Linked vertex stage:
 
-ERROR: Linking vertex stage: Can only use one of gl_ClipDistance or gl_ClipVertex (gl_ClipDistance is preferred)
 
 Shader version: 150
 Requested GL_ARB_vertex_attrib_64bit
@@ -77,20 +73,20 @@
 0:15    Sequence
 0:15      move second child to first child ( temp 4-component vector of float)
 0:15        gl_Position: direct index for structure ( invariant gl_Position 4-component vector of float Position)
-0:15          'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:15          'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance})
 0:15          Constant:
 0:15            0 (const uint)
 0:15        'iv4' ( in 4-component vector of float)
 0:16      move second child to first child ( temp float)
 0:16        gl_PointSize: direct index for structure ( gl_PointSize float PointSize)
-0:16          'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:16          'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance})
 0:16          Constant:
 0:16            1 (const uint)
 0:16        'ps' ( uniform float)
 0:17      move second child to first child ( temp float)
 0:17        direct index ( temp float ClipDistance)
 0:17          gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance)
-0:17            'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:17            'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance})
 0:17            Constant:
 0:17              2 (const uint)
 0:17          Constant:
@@ -99,12 +95,7 @@
 0:17          'iv4' ( in 4-component vector of float)
 0:17          Constant:
 0:17            0 (const int)
-0:18      move second child to first child ( temp 4-component vector of float)
-0:18        gl_ClipVertex: direct index for structure ( gl_ClipVertex 4-component vector of float ClipVertex)
-0:18          'anon@0' ( out block{ invariant gl_Position 4-component vector of float Position gl_Position,  gl_PointSize float PointSize gl_PointSize,  out 4-element array of float ClipDistance gl_ClipDistance,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
-0:18          Constant:
-0:18            3 (const uint)
-0:18        'iv4' ( in 4-component vector of float)
+0:18      'gl_ClipVertex' ( temp float)
 0:?   Linker Objects
 0:?     'iv4' ( in 4-component vector of float)
 0:?     'ps' ( uniform float)
diff --git a/Test/baseResults/300block.frag.out b/Test/baseResults/300block.frag.out
index e5b07dd..1a5bd9b 100644
--- a/Test/baseResults/300block.frag.out
+++ b/Test/baseResults/300block.frag.out
@@ -24,18 +24,18 @@
 0:42  Function Definition: main( ( global void)
 0:42    Function Parameters: 
 0:44    Sequence
-0:44      texture ( global lowp 4-component vector of int)
+0:44      texture ( global lowp 4-component vector of int, operation at mediump)
 0:44        sampler: direct index for structure ( global lowp isampler3D)
 0:44          's' ( uniform structure{ global mediump 4-component vector of float u,  global mediump 4-component vector of uint v,  global lowp isampler3D sampler,  global mediump 3-component vector of float w,  global structure{ global mediump int a} t})
 0:44          Constant:
 0:44            2 (const int)
-0:44        Construct vec3 ( temp lowp 3-component vector of float)
-0:44          Convert int to float ( temp lowp float)
+0:44        Construct vec3 ( temp mediump 3-component vector of float)
+0:44          Convert int to float ( temp mediump float)
 0:44            ni: direct index for structure (layout( column_major shared) uniform mediump int)
 0:44              'inst' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni})
 0:44              Constant:
 0:44                1 (const int)
-0:44          Convert uint to float ( temp lowp float)
+0:44          Convert uint to float ( temp mediump float)
 0:44            direct index ( temp mediump uint)
 0:44              bv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint)
 0:44                'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint bv, layout( column_major shared) uniform mediump 2X2 matrix of float bm2, layout( column_major shared) uniform lowp isampler2D sampler, layout( column_major shared) uniform structure{ global mediump int a} t, layout( column_major shared) uniform structure{ global mediump 4-component vector of float u,  global mediump 4-component vector of uint v,  global lowp isampler3D sampler,  global mediump 3-component vector of float w, layout( column_major) global structure{ global mediump int a} t} fbs})
@@ -43,7 +43,7 @@
 0:44                  0 (const uint)
 0:44              Constant:
 0:44                1 (const int)
-0:44          Convert uint to float ( temp lowp float)
+0:44          Convert uint to float ( temp mediump float)
 0:44            direct index ( temp mediump uint)
 0:44              nbv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint)
 0:44                direct index (layout( column_major shared) temp block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni})
@@ -92,18 +92,18 @@
 0:42  Function Definition: main( ( global void)
 0:42    Function Parameters: 
 0:44    Sequence
-0:44      texture ( global lowp 4-component vector of int)
+0:44      texture ( global lowp 4-component vector of int, operation at mediump)
 0:44        sampler: direct index for structure ( global lowp isampler3D)
 0:44          's' ( uniform structure{ global mediump 4-component vector of float u,  global mediump 4-component vector of uint v,  global lowp isampler3D sampler,  global mediump 3-component vector of float w,  global structure{ global mediump int a} t})
 0:44          Constant:
 0:44            2 (const int)
-0:44        Construct vec3 ( temp lowp 3-component vector of float)
-0:44          Convert int to float ( temp lowp float)
+0:44        Construct vec3 ( temp mediump 3-component vector of float)
+0:44          Convert int to float ( temp mediump float)
 0:44            ni: direct index for structure (layout( column_major shared) uniform mediump int)
 0:44              'inst' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni})
 0:44              Constant:
 0:44                1 (const int)
-0:44          Convert uint to float ( temp lowp float)
+0:44          Convert uint to float ( temp mediump float)
 0:44            direct index ( temp mediump uint)
 0:44              bv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint)
 0:44                'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform mediump 4-component vector of uint bv, layout( column_major shared) uniform mediump 2X2 matrix of float bm2, layout( column_major shared) uniform lowp isampler2D sampler, layout( column_major shared) uniform structure{ global mediump int a} t, layout( column_major shared) uniform structure{ global mediump 4-component vector of float u,  global mediump 4-component vector of uint v,  global lowp isampler3D sampler,  global mediump 3-component vector of float w, layout( column_major) global structure{ global mediump int a} t} fbs})
@@ -111,7 +111,7 @@
 0:44                  0 (const uint)
 0:44              Constant:
 0:44                1 (const int)
-0:44          Convert uint to float ( temp lowp float)
+0:44          Convert uint to float ( temp mediump float)
 0:44            direct index ( temp mediump uint)
 0:44              nbv: direct index for structure (layout( column_major shared) uniform mediump 4-component vector of uint)
 0:44                direct index (layout( column_major shared) temp block{layout( column_major shared) uniform mediump 4-component vector of uint nbv, layout( column_major shared) uniform mediump int ni})
diff --git a/Test/baseResults/310.comp.out b/Test/baseResults/310.comp.out
index 85b0116..ac76cbd 100644
--- a/Test/baseResults/310.comp.out
+++ b/Test/baseResults/310.comp.out
@@ -180,7 +180,7 @@
 0:91              'i' ( temp highp int)
 0:92      imageStore ( global highp void)
 0:92        'ii2da' ( writeonly uniform highp iimage2DArray)
-0:92        Construct ivec3 ( temp 3-component vector of int)
+0:92        Construct ivec3 ( temp highp 3-component vector of int)
 0:92          'i' ( temp highp int)
 0:92          'i' ( temp highp int)
 0:92          'i' ( temp highp int)
@@ -189,9 +189,9 @@
 0:92          0 (const int)
 0:92          0 (const int)
 0:92          0 (const int)
-0:93      imageLoad ( global mediump 4-component vector of float)
+0:93      imageLoad ( global mediump 4-component vector of float, operation at highp)
 0:93        'img2Drgba' (layout( rgba32f) readonly uniform mediump image2D)
-0:93        Construct ivec2 ( temp mediump 2-component vector of int)
+0:93        Construct ivec2 ( temp highp 2-component vector of int)
 0:93          'i' ( temp highp int)
 0:93          'i' ( temp highp int)
 0:94      imageLoad ( global highp 4-component vector of int)
diff --git a/Test/baseResults/310.frag.out b/Test/baseResults/310.frag.out
index 9f73c67..e43a887 100644
--- a/Test/baseResults/310.frag.out
+++ b/Test/baseResults/310.frag.out
@@ -270,7 +270,7 @@
 0:42        Constant:
 0:42          0.000000
 0:42          0.000000
-0:42        Convert float to int ( temp highp 2-component vector of int)
+0:42        Convert float to int ( temp mediump 2-component vector of int)
 0:42          'c2D' ( smooth in mediump 2-component vector of float)
 0:43      textureProjGradOffset ( global highp 4-component vector of uint)
 0:43        'usamp2d' ( uniform highp usampler2D)
@@ -471,7 +471,7 @@
 0:211        Constant:
 0:211          0.100000
 0:211          0.100000
-0:211        Convert float to int ( temp highp 2-component vector of int)
+0:211        Convert float to int ( temp mediump 2-component vector of int)
 0:211          'inf' ( smooth in mediump 2-component vector of float)
 0:212      textureGatherOffsets ( global highp 4-component vector of float)
 0:212        direct index ( temp highp sampler2D)
@@ -507,7 +507,7 @@
 0:221        Constant:
 0:221          0.100000
 0:221          0.100000
-0:221        Convert float to int ( temp highp 2-component vector of int)
+0:221        Convert float to int ( temp mediump 2-component vector of int)
 0:221          'inf' ( smooth in mediump 2-component vector of float)
 0:222      textureGatherOffsets ( global highp 4-component vector of float)
 0:222        direct index ( temp highp sampler2D)
diff --git a/Test/baseResults/310.vert.out b/Test/baseResults/310.vert.out
index 1d2152d..13a88df 100644
--- a/Test/baseResults/310.vert.out
+++ b/Test/baseResults/310.vert.out
@@ -330,7 +330,7 @@
 0:164          'sIndex' ( uniform highp int)
 0:164          Constant:
 0:164            2 (const int)
-0:165      textureGatherOffset ( global lowp 4-component vector of float)
+0:165      textureGatherOffset ( global lowp 4-component vector of float, operation at highp)
 0:165        direct index ( temp lowp sampler2D)
 0:165          'sArray' ( uniform 4-element array of lowp sampler2D)
 0:165          Constant:
@@ -338,7 +338,7 @@
 0:165        Constant:
 0:165          0.100000
 0:165          0.100000
-0:165        Convert float to int ( temp lowp 2-component vector of int)
+0:165        Convert float to int ( temp highp 2-component vector of int)
 0:165          'inf' ( in highp 2-component vector of float)
 0:166      textureGatherOffsets ( global lowp 4-component vector of float, operation at highp)
 0:166        direct index ( temp lowp sampler2D)
@@ -394,7 +394,7 @@
 0:179          'sIndex' ( uniform highp int)
 0:179          Constant:
 0:179            2 (const int)
-0:180      textureGatherOffset ( global lowp 4-component vector of float)
+0:180      textureGatherOffset ( global lowp 4-component vector of float, operation at highp)
 0:180        direct index ( temp lowp sampler2D)
 0:180          'sArray' ( uniform 4-element array of lowp sampler2D)
 0:180          Constant:
@@ -402,7 +402,7 @@
 0:180        Constant:
 0:180          0.100000
 0:180          0.100000
-0:180        Convert float to int ( temp lowp 2-component vector of int)
+0:180        Convert float to int ( temp highp 2-component vector of int)
 0:180          'inf' ( in highp 2-component vector of float)
 0:181      textureGatherOffsets ( global lowp 4-component vector of float, operation at highp)
 0:181        direct index ( temp lowp sampler2D)
diff --git a/Test/baseResults/320.frag.out b/Test/baseResults/320.frag.out
index 002aa7f..9f4a817 100644
--- a/Test/baseResults/320.frag.out
+++ b/Test/baseResults/320.frag.out
@@ -121,7 +121,7 @@
 0:76          'inf' ( smooth in mediump 2-component vector of float)
 0:76          'ing' ( smooth in mediump 2-component vector of float)
 0:76          'h' ( noContraction temp mediump 2-component vector of float)
-0:77      textureGatherOffset ( global lowp 4-component vector of float)
+0:77      textureGatherOffset ( global lowp 4-component vector of float, operation at mediump)
 0:77        direct index ( temp lowp sampler2D)
 0:77          'sArray' ( uniform 4-element array of lowp sampler2D)
 0:77          Constant:
@@ -129,7 +129,7 @@
 0:77        Constant:
 0:77          0.100000
 0:77          0.100000
-0:77        Convert float to int ( temp lowp 2-component vector of int)
+0:77        Convert float to int ( temp mediump 2-component vector of int)
 0:77          'inf' ( smooth in mediump 2-component vector of float)
 0:78      textureGatherOffsets ( global lowp 4-component vector of float, operation at mediump)
 0:78        direct index ( temp lowp sampler2D)
diff --git a/Test/baseResults/320.vert.out b/Test/baseResults/320.vert.out
index 0313b61..5e80d14 100644
--- a/Test/baseResults/320.vert.out
+++ b/Test/baseResults/320.vert.out
@@ -99,7 +99,7 @@
 0:70          'sIndex' ( uniform highp int)
 0:70          Constant:
 0:70            2 (const int)
-0:71      textureGatherOffset ( global lowp 4-component vector of float)
+0:71      textureGatherOffset ( global lowp 4-component vector of float, operation at highp)
 0:71        direct index ( temp lowp sampler2D)
 0:71          'sArray' ( uniform 4-element array of lowp sampler2D)
 0:71          Constant:
@@ -107,7 +107,7 @@
 0:71        Constant:
 0:71          0.100000
 0:71          0.100000
-0:71        Convert float to int ( temp lowp 2-component vector of int)
+0:71        Convert float to int ( temp highp 2-component vector of int)
 0:71          'inf' ( in highp 2-component vector of float)
 0:72      textureGatherOffsets ( global lowp 4-component vector of float, operation at highp)
 0:72        direct index ( temp lowp sampler2D)
diff --git a/Test/baseResults/400.frag.out b/Test/baseResults/400.frag.out
index b7e88df..db3cd24 100644
--- a/Test/baseResults/400.frag.out
+++ b/Test/baseResults/400.frag.out
@@ -4,7 +4,7 @@
 ERROR: 0:23: 'textureGatherOffset(...)' : must be 0, 1, 2, or 3: component argument
 ERROR: 0:30: 'location qualifier on input' : not supported for this version or the enabled extensions 
 ERROR: 0:38: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions 
-ERROR: 0:40: 'redeclaration' : cannot apply layout qualifier to gl_Color
+ERROR: 0:40: 'gl_Color' : identifiers starting with "gl_" are reserved 
 ERROR: 0:41: 'redeclaration' : cannot change qualification of gl_ClipDistance
 ERROR: 0:43: 'gl_FragCoord' : cannot redeclare after use 
 ERROR: 0:51: 'texel offset' : argument must be compile-time constant 
@@ -516,7 +516,7 @@
 0:?     'vl' (layout( location=4) smooth in 4-component vector of float)
 0:?     'vl2' (layout( location=6) smooth in 4-component vector of float)
 0:?     'uv3' (layout( location=3) uniform 3-component vector of float)
-0:?     'anon@0' ( in block{ in float FogFragCoord gl_FogFragCoord,  in unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  smooth in 4-component vector of float Color gl_Color,  in 4-component vector of float SecondaryColor gl_SecondaryColor})
+0:?     'gl_Color' (layout( location=5) smooth in 4-component vector of float)
 0:?     'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
 0:?     'u2drs' ( uniform sampler2DRectShadow)
 0:?     'patchIn' ( smooth patch in 4-component vector of float)
@@ -691,7 +691,7 @@
 0:?     'vl' (layout( location=4) smooth in 4-component vector of float)
 0:?     'vl2' (layout( location=6) smooth in 4-component vector of float)
 0:?     'uv3' (layout( location=3) uniform 3-component vector of float)
-0:?     'anon@0' ( in block{ in float FogFragCoord gl_FogFragCoord,  in 1-element array of 4-component vector of float TexCoord gl_TexCoord,  smooth in 4-component vector of float Color gl_Color,  in 4-component vector of float SecondaryColor gl_SecondaryColor})
+0:?     'gl_Color' (layout( location=5) smooth in 4-component vector of float)
 0:?     'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord)
 0:?     'u2drs' ( uniform sampler2DRectShadow)
 0:?     'patchIn' ( smooth patch in 4-component vector of float)
diff --git a/Test/baseResults/430scope.vert.out b/Test/baseResults/430scope.vert.out
index 973c21a..ad83141 100644
--- a/Test/baseResults/430scope.vert.out
+++ b/Test/baseResults/430scope.vert.out
@@ -63,7 +63,7 @@
 0:47          3.000000
 0:49      move second child to first child ( temp 4-component vector of float)
 0:49        gl_Position: direct index for structure ( invariant gl_Position 4-component vector of float Position)
-0:49          'anon@0' ( out block{ invariant 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:49          'anon@0' ( out block{ invariant 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})
 0:49          Constant:
 0:49            0 (const uint)
 0:49        Construct vec4 ( temp 4-component vector of float)
@@ -168,7 +168,7 @@
 0:47          3.000000
 0:49      move second child to first child ( temp 4-component vector of float)
 0:49        gl_Position: direct index for structure ( invariant gl_Position 4-component vector of float Position)
-0:49          'anon@0' ( out block{ invariant 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:49          'anon@0' ( out block{ invariant 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})
 0:49          Constant:
 0:49            0 (const uint)
 0:49        Construct vec4 ( temp 4-component vector of float)
diff --git a/Test/baseResults/450.vert.out b/Test/baseResults/450.vert.out
index 0f5f231..b3451c0 100644
--- a/Test/baseResults/450.vert.out
+++ b/Test/baseResults/450.vert.out
@@ -34,7 +34,7 @@
 0:9          gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance)
 0:9            'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance})
 0:9            Constant:
-0:9              10 (const uint)
+0:9              3 (const uint)
 0:9          Constant:
 0:9            2 (const int)
 0:9        Constant:
@@ -98,7 +98,7 @@
 0:9          gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance)
 0:9            'anon@0' ( out block{ out 3-element array of float CullDistance gl_CullDistance})
 0:9            Constant:
-0:9              10 (const uint)
+0:9              3 (const uint)
 0:9          Constant:
 0:9            2 (const int)
 0:9        Constant:
diff --git a/Test/baseResults/GL_ARB_draw_instanced.vert.out b/Test/baseResults/GL_ARB_draw_instanced.vert.out
new file mode 100644
index 0000000..e601bc8
--- /dev/null
+++ b/Test/baseResults/GL_ARB_draw_instanced.vert.out
@@ -0,0 +1,189 @@
+GL_ARB_draw_instanced.vert
+Shader version: 150
+Requested GL_ARB_draw_instanced
+0:? Sequence
+0:10  Function Definition: main( ( global void)
+0:10    Function Parameters: 
+0:12    Sequence
+0:12      Sequence
+0:12        move second child to first child ( temp 4-component vector of float)
+0:12          'vertex' ( temp 4-component vector of float)
+0:12          add ( temp 4-component vector of float)
+0:12            Construct vec4 ( temp 4-component vector of float)
+0:12              divide ( temp 2-component vector of float)
+0:12                vector swizzle ( temp 2-component vector of float)
+0:12                  direct index ( temp 4-component vector of float)
+0:12                    'va' ( in 64-element array of 4-component vector of float)
+0:12                    Constant:
+0:12                      0 (const int)
+0:12                  Sequence
+0:12                    Constant:
+0:12                      0 (const int)
+0:12                    Constant:
+0:12                      1 (const int)
+0:12                Constant:
+0:12                  3.000000
+0:12              vector swizzle ( temp 2-component vector of float)
+0:12                direct index ( temp 4-component vector of float)
+0:12                  'va' ( in 64-element array of 4-component vector of float)
+0:12                  Constant:
+0:12                    0 (const int)
+0:12                Sequence
+0:12                  Constant:
+0:12                    2 (const int)
+0:12                  Constant:
+0:12                    3 (const int)
+0:12            Construct vec4 ( temp 4-component vector of float)
+0:12              indirect index ( temp 3-component vector of float)
+0:12                'instanceOffsets' ( uniform 3-element array of 3-component vector of float)
+0:12                'gl_InstanceID' ( gl_InstanceId int InstanceId)
+0:12              Constant:
+0:12                1.000000
+0:13      move second child to first child ( temp 4-component vector of float)
+0:13        'color' ( smooth out 4-component vector of float)
+0:13        Constant:
+0:13          0.000000
+0:13          0.000000
+0:13          0.000000
+0:13          0.000000
+0:14      Sequence
+0:14        Sequence
+0:14          move second child to first child ( temp int)
+0:14            'i' ( temp int)
+0:14            Constant:
+0:14              1 (const int)
+0:14        Loop with condition tested first
+0:14          Loop Condition
+0:14          Compare Less Than ( temp bool)
+0:14            'i' ( temp int)
+0:14            Constant:
+0:14              64 (const int)
+0:14          Loop Body
+0:15          add second child into first child ( temp 4-component vector of float)
+0:15            'color' ( smooth out 4-component vector of float)
+0:15            indirect index ( temp 4-component vector of float)
+0:15              'va' ( in 64-element array of 4-component vector of float)
+0:15              'i' ( temp int)
+0:14          Loop Terminal Expression
+0:14          Post-Increment ( temp int)
+0:14            'i' ( temp int)
+0:16      move second child to first child ( temp 4-component vector of float)
+0:16        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:16          '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})
+0:16          Constant:
+0:16            0 (const uint)
+0:16        matrix-times-vector ( temp 4-component vector of float)
+0:16          'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float)
+0:16          'vertex' ( temp 4-component vector of float)
+0:17      move second child to first child ( temp float)
+0:17        gl_PointSize: direct index for structure ( gl_PointSize float PointSize)
+0:17          '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})
+0:17          Constant:
+0:17            1 (const uint)
+0:17        Constant:
+0:17          1.000000
+0:?   Linker Objects
+0:?     'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float)
+0:?     'instanceOffsets' ( uniform 3-element array of 3-component vector of float)
+0:?     'va' ( in 64-element array of 4-component vector of float)
+0:?     'color' ( smooth out 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})
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+
+Shader version: 150
+Requested GL_ARB_draw_instanced
+0:? Sequence
+0:10  Function Definition: main( ( global void)
+0:10    Function Parameters: 
+0:12    Sequence
+0:12      Sequence
+0:12        move second child to first child ( temp 4-component vector of float)
+0:12          'vertex' ( temp 4-component vector of float)
+0:12          add ( temp 4-component vector of float)
+0:12            Construct vec4 ( temp 4-component vector of float)
+0:12              divide ( temp 2-component vector of float)
+0:12                vector swizzle ( temp 2-component vector of float)
+0:12                  direct index ( temp 4-component vector of float)
+0:12                    'va' ( in 64-element array of 4-component vector of float)
+0:12                    Constant:
+0:12                      0 (const int)
+0:12                  Sequence
+0:12                    Constant:
+0:12                      0 (const int)
+0:12                    Constant:
+0:12                      1 (const int)
+0:12                Constant:
+0:12                  3.000000
+0:12              vector swizzle ( temp 2-component vector of float)
+0:12                direct index ( temp 4-component vector of float)
+0:12                  'va' ( in 64-element array of 4-component vector of float)
+0:12                  Constant:
+0:12                    0 (const int)
+0:12                Sequence
+0:12                  Constant:
+0:12                    2 (const int)
+0:12                  Constant:
+0:12                    3 (const int)
+0:12            Construct vec4 ( temp 4-component vector of float)
+0:12              indirect index ( temp 3-component vector of float)
+0:12                'instanceOffsets' ( uniform 3-element array of 3-component vector of float)
+0:12                'gl_InstanceID' ( gl_InstanceId int InstanceId)
+0:12              Constant:
+0:12                1.000000
+0:13      move second child to first child ( temp 4-component vector of float)
+0:13        'color' ( smooth out 4-component vector of float)
+0:13        Constant:
+0:13          0.000000
+0:13          0.000000
+0:13          0.000000
+0:13          0.000000
+0:14      Sequence
+0:14        Sequence
+0:14          move second child to first child ( temp int)
+0:14            'i' ( temp int)
+0:14            Constant:
+0:14              1 (const int)
+0:14        Loop with condition tested first
+0:14          Loop Condition
+0:14          Compare Less Than ( temp bool)
+0:14            'i' ( temp int)
+0:14            Constant:
+0:14              64 (const int)
+0:14          Loop Body
+0:15          add second child into first child ( temp 4-component vector of float)
+0:15            'color' ( smooth out 4-component vector of float)
+0:15            indirect index ( temp 4-component vector of float)
+0:15              'va' ( in 64-element array of 4-component vector of float)
+0:15              'i' ( temp int)
+0:14          Loop Terminal Expression
+0:14          Post-Increment ( temp int)
+0:14            'i' ( temp int)
+0:16      move second child to first child ( temp 4-component vector of float)
+0:16        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:16          '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})
+0:16          Constant:
+0:16            0 (const uint)
+0:16        matrix-times-vector ( temp 4-component vector of float)
+0:16          'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float)
+0:16          'vertex' ( temp 4-component vector of float)
+0:17      move second child to first child ( temp float)
+0:17        gl_PointSize: direct index for structure ( gl_PointSize float PointSize)
+0:17          '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})
+0:17          Constant:
+0:17            1 (const uint)
+0:17        Constant:
+0:17          1.000000
+0:?   Linker Objects
+0:?     'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float)
+0:?     'instanceOffsets' ( uniform 3-element array of 3-component vector of float)
+0:?     'va' ( in 64-element array of 4-component vector of float)
+0:?     'color' ( smooth out 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})
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
diff --git a/Test/baseResults/GL_ARB_gpu_shader5.u2i.vert.out b/Test/baseResults/GL_ARB_gpu_shader5.u2i.vert.out
new file mode 100644
index 0000000..c7b3455
--- /dev/null
+++ b/Test/baseResults/GL_ARB_gpu_shader5.u2i.vert.out
@@ -0,0 +1,57 @@
+GL_ARB_gpu_shader5.u2i.vert
+WARNING: 0:2: '#extension' : extension is only partially supported: GL_ARB_gpu_shader5
+
+Shader version: 150
+Requested GL_ARB_gpu_shader5
+0:? Sequence
+0:7  Function Definition: main( ( global void)
+0:7    Function Parameters: 
+0:9    Sequence
+0:9      Sequence
+0:9        move second child to first child ( temp uint)
+0:9          'v' ( temp uint)
+0:9          Constant:
+0:9            0 (const uint)
+0:10      move second child to first child ( temp uint)
+0:10        'v' ( temp uint)
+0:10        subtract ( temp uint)
+0:10          Convert int to uint ( temp uint)
+0:10            'u2' ( uniform int)
+0:10          Convert int to uint ( temp uint)
+0:10            'u1' ( uniform int)
+0:?   Linker Objects
+0:?     'u1' ( uniform int)
+0:?     'u2' ( uniform int)
+0:?     'result' ( smooth out 4-component vector of float)
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+
+Shader version: 150
+Requested GL_ARB_gpu_shader5
+0:? Sequence
+0:7  Function Definition: main( ( global void)
+0:7    Function Parameters: 
+0:9    Sequence
+0:9      Sequence
+0:9        move second child to first child ( temp uint)
+0:9          'v' ( temp uint)
+0:9          Constant:
+0:9            0 (const uint)
+0:10      move second child to first child ( temp uint)
+0:10        'v' ( temp uint)
+0:10        subtract ( temp uint)
+0:10          Convert int to uint ( temp uint)
+0:10            'u2' ( uniform int)
+0:10          Convert int to uint ( temp uint)
+0:10            'u1' ( uniform int)
+0:?   Linker Objects
+0:?     'u1' ( uniform int)
+0:?     'u2' ( uniform int)
+0:?     'result' ( smooth out 4-component vector of float)
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
diff --git a/Test/baseResults/GL_EXT_shader_integer_mix.vert.out b/Test/baseResults/GL_EXT_shader_integer_mix.vert.out
new file mode 100644
index 0000000..4a62b57
--- /dev/null
+++ b/Test/baseResults/GL_EXT_shader_integer_mix.vert.out
@@ -0,0 +1,47 @@
+GL_EXT_shader_integer_mix.vert
+Shader version: 330
+Requested GL_EXT_shader_integer_mix
+0:? Sequence
+0:11  Function Definition: main( ( global void)
+0:11    Function Parameters: 
+0:12    Sequence
+0:12      move second child to first child ( temp 4-component vector of float)
+0:12        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:12          '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})
+0:12          Constant:
+0:12            0 (const uint)
+0:12        Constant:
+0:12          0.000000
+0:12          0.000000
+0:12          0.000000
+0:12          0.000000
+0:?   Linker Objects
+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})
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+
+Shader version: 330
+Requested GL_EXT_shader_integer_mix
+0:? Sequence
+0:11  Function Definition: main( ( global void)
+0:11    Function Parameters: 
+0:12    Sequence
+0:12      move second child to first child ( temp 4-component vector of float)
+0:12        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:12          '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})
+0:12          Constant:
+0:12            0 (const uint)
+0:12        Constant:
+0:12          0.000000
+0:12          0.000000
+0:12          0.000000
+0:12          0.000000
+0:?   Linker Objects
+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})
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
diff --git a/Test/baseResults/atomicAdd.comp.out b/Test/baseResults/atomicAdd.comp.out
new file mode 100644
index 0000000..6752a71
--- /dev/null
+++ b/Test/baseResults/atomicAdd.comp.out
@@ -0,0 +1,87 @@
+atomicAdd.comp
+ERROR: 0:18: 'atomicAdd' : Atomic memory function can only be used for shader storage block member or shared variable. 
+ERROR: 1 compilation errors.  No code generated.
+
+
+Shader version: 320
+local_size = (1, 1, 1)
+ERROR: node is still EOpNull!
+0:15  Function Definition: main( ( global void)
+0:15    Function Parameters: 
+0:16    Sequence
+0:16      AtomicAdd ( global highp int)
+0:16        x: direct index for structure (layout( column_major shared) coherent buffer highp int)
+0:16          'anon@0' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent buffer highp int x})
+0:16          Constant:
+0:16            0 (const uint)
+0:16        Constant:
+0:16          1 (const int)
+0:17      AtomicAdd ( global highp int)
+0:17        direct index (layout( std430) temp highp int)
+0:17          y: direct index for structure (layout( std430) global 3-element array of highp int)
+0:17            f: direct index for structure (layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y})
+0:17              't' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y} f})
+0:17              Constant:
+0:17                0 (const int)
+0:17            Constant:
+0:17              0 (const int)
+0:17          Constant:
+0:17            1 (const int)
+0:17        Constant:
+0:17          1 (const int)
+0:18      AtomicAdd ( global highp int)
+0:18        'z' ( global highp int)
+0:18        Constant:
+0:18          1 (const int)
+0:?   Linker Objects
+0:?     'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
+0:?       1 (const uint)
+0:?       1 (const uint)
+0:?       1 (const uint)
+0:?     't' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y} f})
+0:?     'anon@0' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent buffer highp int x})
+0:?     'z' ( global highp int)
+
+
+Linked compute stage:
+
+
+Shader version: 320
+local_size = (1, 1, 1)
+ERROR: node is still EOpNull!
+0:15  Function Definition: main( ( global void)
+0:15    Function Parameters: 
+0:16    Sequence
+0:16      AtomicAdd ( global highp int)
+0:16        x: direct index for structure (layout( column_major shared) coherent buffer highp int)
+0:16          'anon@0' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent buffer highp int x})
+0:16          Constant:
+0:16            0 (const uint)
+0:16        Constant:
+0:16          1 (const int)
+0:17      AtomicAdd ( global highp int)
+0:17        direct index (layout( std430) temp highp int)
+0:17          y: direct index for structure (layout( std430) global 3-element array of highp int)
+0:17            f: direct index for structure (layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y})
+0:17              't' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y} f})
+0:17              Constant:
+0:17                0 (const int)
+0:17            Constant:
+0:17              0 (const int)
+0:17          Constant:
+0:17            1 (const int)
+0:17        Constant:
+0:17          1 (const int)
+0:18      AtomicAdd ( global highp int)
+0:18        'z' ( global highp int)
+0:18        Constant:
+0:18          1 (const int)
+0:?   Linker Objects
+0:?     'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize)
+0:?       1 (const uint)
+0:?       1 (const uint)
+0:?       1 (const uint)
+0:?     't' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer structure{layout( std430) global 3-element array of highp int y} f})
+0:?     'anon@0' (layout( column_major shared) coherent buffer block{layout( column_major shared) coherent buffer highp int x})
+0:?     'z' ( global highp int)
+
diff --git a/Test/baseResults/atomicCounterARBOps.vert.out b/Test/baseResults/atomicCounterARBOps.vert.out
new file mode 100644
index 0000000..ebb4411
--- /dev/null
+++ b/Test/baseResults/atomicCounterARBOps.vert.out
@@ -0,0 +1,201 @@
+atomicCounterARBOps.vert
+Shader version: 450
+Requested GL_ARB_shader_atomic_counter_ops
+Requested GL_ARB_shader_atomic_counters
+0:? Sequence
+0:9  Function Definition: main( ( global void)
+0:9    Function Parameters: 
+0:10    Sequence
+0:10      Sequence
+0:10        move second child to first child ( temp 4-component vector of float)
+0:10          'outColor' ( temp 4-component vector of float)
+0:10          Constant:
+0:10            1.000000
+0:10            1.000000
+0:10            1.000000
+0:10            1.000000
+0:13      move second child to first child ( temp uint)
+0:13        'ret' ( temp uint)
+0:13        AtomicCounterAdd ( global uint)
+0:13          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:13          Constant:
+0:13            4 (const uint)
+0:14      move second child to first child ( temp uint)
+0:14        'ret' ( temp uint)
+0:14        AtomicCounterSubtract ( global uint)
+0:14          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:14          Constant:
+0:14            4 (const uint)
+0:15      move second child to first child ( temp uint)
+0:15        'ret' ( temp uint)
+0:15        AtomicCounterMin ( global uint)
+0:15          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:15          Constant:
+0:15            4 (const uint)
+0:16      move second child to first child ( temp uint)
+0:16        'ret' ( temp uint)
+0:16        AtomicCounterMax ( global uint)
+0:16          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:16          Constant:
+0:16            4 (const uint)
+0:17      move second child to first child ( temp uint)
+0:17        'ret' ( temp uint)
+0:17        AtomicCounterAnd ( global uint)
+0:17          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:17          Constant:
+0:17            4 (const uint)
+0:18      move second child to first child ( temp uint)
+0:18        'ret' ( temp uint)
+0:18        AtomicCounterOr ( global uint)
+0:18          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:18          Constant:
+0:18            4 (const uint)
+0:19      move second child to first child ( temp uint)
+0:19        'ret' ( temp uint)
+0:19        AtomicCounterXor ( global uint)
+0:19          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:19          Constant:
+0:19            4 (const uint)
+0:20      move second child to first child ( temp uint)
+0:20        'ret' ( temp uint)
+0:20        AtomicCounterExchange ( global uint)
+0:20          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:20          Constant:
+0:20            4 (const uint)
+0:21      move second child to first child ( temp uint)
+0:21        'ret' ( temp uint)
+0:21        AtomicCounterCompSwap ( global uint)
+0:21          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:21          Constant:
+0:21            4 (const uint)
+0:21          Constant:
+0:21            4 (const uint)
+0:23      Sequence
+0:23        move second child to first child ( temp uint)
+0:23          'after' ( temp uint)
+0:23          AtomicCounter ( global uint)
+0:23            'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:24      Test condition and select ( temp void)
+0:24        Condition
+0:24        Compare Equal ( temp bool)
+0:24          'after' ( temp uint)
+0:24          'ret' ( temp uint)
+0:24        true case
+0:25        move second child to first child ( temp 4-component vector of float)
+0:25          'outColor' ( temp 4-component vector of float)
+0:25          Constant:
+0:25            0.000000
+0:25            0.000000
+0:25            0.000000
+0:25            0.000000
+0:27      move second child to first child ( temp 4-component vector of float)
+0:27        'vsColor' ( smooth out 4-component vector of float)
+0:27        'outColor' ( temp 4-component vector of float)
+0:?   Linker Objects
+0:?     'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:?     'vsColor' ( smooth out 4-component vector of float)
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+
+Linked vertex stage:
+
+
+Shader version: 450
+Requested GL_ARB_shader_atomic_counter_ops
+Requested GL_ARB_shader_atomic_counters
+0:? Sequence
+0:9  Function Definition: main( ( global void)
+0:9    Function Parameters: 
+0:10    Sequence
+0:10      Sequence
+0:10        move second child to first child ( temp 4-component vector of float)
+0:10          'outColor' ( temp 4-component vector of float)
+0:10          Constant:
+0:10            1.000000
+0:10            1.000000
+0:10            1.000000
+0:10            1.000000
+0:13      move second child to first child ( temp uint)
+0:13        'ret' ( temp uint)
+0:13        AtomicCounterAdd ( global uint)
+0:13          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:13          Constant:
+0:13            4 (const uint)
+0:14      move second child to first child ( temp uint)
+0:14        'ret' ( temp uint)
+0:14        AtomicCounterSubtract ( global uint)
+0:14          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:14          Constant:
+0:14            4 (const uint)
+0:15      move second child to first child ( temp uint)
+0:15        'ret' ( temp uint)
+0:15        AtomicCounterMin ( global uint)
+0:15          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:15          Constant:
+0:15            4 (const uint)
+0:16      move second child to first child ( temp uint)
+0:16        'ret' ( temp uint)
+0:16        AtomicCounterMax ( global uint)
+0:16          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:16          Constant:
+0:16            4 (const uint)
+0:17      move second child to first child ( temp uint)
+0:17        'ret' ( temp uint)
+0:17        AtomicCounterAnd ( global uint)
+0:17          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:17          Constant:
+0:17            4 (const uint)
+0:18      move second child to first child ( temp uint)
+0:18        'ret' ( temp uint)
+0:18        AtomicCounterOr ( global uint)
+0:18          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:18          Constant:
+0:18            4 (const uint)
+0:19      move second child to first child ( temp uint)
+0:19        'ret' ( temp uint)
+0:19        AtomicCounterXor ( global uint)
+0:19          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:19          Constant:
+0:19            4 (const uint)
+0:20      move second child to first child ( temp uint)
+0:20        'ret' ( temp uint)
+0:20        AtomicCounterExchange ( global uint)
+0:20          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:20          Constant:
+0:20            4 (const uint)
+0:21      move second child to first child ( temp uint)
+0:21        'ret' ( temp uint)
+0:21        AtomicCounterCompSwap ( global uint)
+0:21          'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:21          Constant:
+0:21            4 (const uint)
+0:21          Constant:
+0:21            4 (const uint)
+0:23      Sequence
+0:23        move second child to first child ( temp uint)
+0:23          'after' ( temp uint)
+0:23          AtomicCounter ( global uint)
+0:23            'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:24      Test condition and select ( temp void)
+0:24        Condition
+0:24        Compare Equal ( temp bool)
+0:24          'after' ( temp uint)
+0:24          'ret' ( temp uint)
+0:24        true case
+0:25        move second child to first child ( temp 4-component vector of float)
+0:25          'outColor' ( temp 4-component vector of float)
+0:25          Constant:
+0:25            0.000000
+0:25            0.000000
+0:25            0.000000
+0:25            0.000000
+0:27      move second child to first child ( temp 4-component vector of float)
+0:27        'vsColor' ( smooth out 4-component vector of float)
+0:27        'outColor' ( temp 4-component vector of float)
+0:?   Linker Objects
+0:?     'counter' (layout( binding=0 offset=0) uniform atomic_uint)
+0:?     'vsColor' ( smooth out 4-component vector of float)
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
diff --git a/Test/baseResults/cppBad.vert.out b/Test/baseResults/cppBad.vert.out
index aaecdf0..8ab04bc 100644
--- a/Test/baseResults/cppBad.vert.out
+++ b/Test/baseResults/cppBad.vert.out
@@ -3,7 +3,9 @@
 ERROR: 0:3: 'preprocessor evaluation' : bad expression 
 ERROR: 0:3: '#if' : unexpected tokens following directive 
 ERROR: 0:6: 'string' : End of line in string 
-ERROR: 0:6: 'string literal' : required extension not requested: GL_EXT_debug_printf
+ERROR: 0:6: 'string literal' : required extension not requested: Possible extensions include:
+GL_EXT_debug_printf
+GL_EXT_spirv_intrinsics
 ERROR: 0:6: '' :  syntax error, unexpected INT, expecting COMMA or SEMICOLON
 ERROR: 5 compilation errors.  No code generated.
 
diff --git a/Test/baseResults/cppSimple.vert.out b/Test/baseResults/cppSimple.vert.out
index 3257856..26de231 100644
--- a/Test/baseResults/cppSimple.vert.out
+++ b/Test/baseResults/cppSimple.vert.out
@@ -18,8 +18,12 @@
 ERROR: 0:120: '#if' : unexpected tokens following directive 
 ERROR: 0:121: '#error' : bad6  
 ERROR: 0:122: '#endif' : unexpected tokens following directive 
-ERROR: 0:135: 'string literal' : required extension not requested: GL_EXT_debug_printf
-ERROR: 0:136: 'string literal' : required extension not requested: GL_EXT_debug_printf
+ERROR: 0:135: 'string literal' : required extension not requested: Possible extensions include:
+GL_EXT_debug_printf
+GL_EXT_spirv_intrinsics
+ERROR: 0:136: 'string literal' : required extension not requested: Possible extensions include:
+GL_EXT_debug_printf
+GL_EXT_spirv_intrinsics
 ERROR: 0:136: 'length' : no matching overloaded function found 
 ERROR: 0:136: '=' :  cannot convert from ' const float' to ' global int'
 ERROR: 0:138: ''' : character literals not supported 
@@ -134,7 +138,7 @@
 0:65          0.050000
 0:69      move second child to first child ( temp 4-component vector of float)
 0:69        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
-0:69          '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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:69          '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})
 0:69          Constant:
 0:69            0 (const uint)
 0:69        Construct vec4 ( temp 4-component vector of float)
@@ -174,7 +178,7 @@
 12:20033    Sequence
 12:20033      move second child to first child ( temp 4-component vector of float)
 12:20033        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
-12:20033          '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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+12:20033          '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})
 12:20033          Constant:
 12:20033            0 (const uint)
 12:20033        Constant:
@@ -188,7 +192,7 @@
 12:9011      'RECURSE' ( global int)
 0:?   Linker Objects
 0:?     'sum' ( global 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+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})
 0:?     'linenumber' ( global int)
 0:?     'filenumber' ( global int)
 0:?     'version' ( global int)
@@ -246,7 +250,7 @@
 0:65          0.050000
 0:69      move second child to first child ( temp 4-component vector of float)
 0:69        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
-0:69          '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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:69          '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})
 0:69          Constant:
 0:69            0 (const uint)
 0:69        Construct vec4 ( temp 4-component vector of float)
@@ -287,7 +291,7 @@
 12:9011      'RECURSE' ( global int)
 0:?   Linker Objects
 0:?     'sum' ( global 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+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})
 0:?     'linenumber' ( global int)
 0:?     'filenumber' ( global int)
 0:?     'version' ( global int)
diff --git a/Test/baseResults/glsl.autosampledtextures.frag.out b/Test/baseResults/glsl.autosampledtextures.frag.out
new file mode 100644
index 0000000..2183898
--- /dev/null
+++ b/Test/baseResults/glsl.autosampledtextures.frag.out
@@ -0,0 +1,45 @@
+glsl.autosampledtextures.frag
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 23
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 17 21
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 460
+                              Name 4  "main"
+                              Name 9  "color"
+                              Name 13  "u_Tex"
+                              Name 17  "in_UV"
+                              Name 21  "out_Color"
+                              Decorate 13(u_Tex) DescriptorSet 0
+                              Decorate 13(u_Tex) Binding 0
+                              Decorate 17(in_UV) Location 0
+                              Decorate 21(out_Color) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Function 7(fvec4)
+              10:             TypeImage 6(float) 2D sampled format:Unknown
+              11:             TypeSampledImage 10
+              12:             TypePointer UniformConstant 11
+       13(u_Tex):     12(ptr) Variable UniformConstant
+              15:             TypeVector 6(float) 2
+              16:             TypePointer Input 15(fvec2)
+       17(in_UV):     16(ptr) Variable Input
+              20:             TypePointer Output 7(fvec4)
+   21(out_Color):     20(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+        9(color):      8(ptr) Variable Function
+              14:          11 Load 13(u_Tex)
+              18:   15(fvec2) Load 17(in_UV)
+              19:    7(fvec4) ImageSampleImplicitLod 14 18
+                              Store 9(color) 19
+              22:    7(fvec4) Load 9(color)
+                              Store 21(out_Color) 22
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/glsl.es320.subgroup.geom.out b/Test/baseResults/glsl.es320.subgroup.geom.out
index 5d18d30..eab5454 100644
--- a/Test/baseResults/glsl.es320.subgroup.geom.out
+++ b/Test/baseResults/glsl.es320.subgroup.geom.out
@@ -16,7 +16,7 @@
 0:12            Constant:
 0:12              0 (const uint)
 0:12          'gl_PrimitiveIDIn' ( in highp int PrimitiveID)
-0:12        Construct uvec4 ( temp highp 4-component vector of uint)
+0:12        Construct uvec4 ( temp mediump 4-component vector of uint)
 0:12          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:12          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:12          Constant:
@@ -47,7 +47,7 @@
 0:12            Constant:
 0:12              0 (const uint)
 0:12          'gl_PrimitiveIDIn' ( in highp int PrimitiveID)
-0:12        Construct uvec4 ( temp highp 4-component vector of uint)
+0:12        Construct uvec4 ( temp mediump 4-component vector of uint)
 0:12          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:12          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:12          Constant:
diff --git a/Test/baseResults/glsl.es320.subgroup.tesc.out b/Test/baseResults/glsl.es320.subgroup.tesc.out
index 9512bc5..431a3c3 100644
--- a/Test/baseResults/glsl.es320.subgroup.tesc.out
+++ b/Test/baseResults/glsl.es320.subgroup.tesc.out
@@ -13,7 +13,7 @@
 0:11            Constant:
 0:11              0 (const uint)
 0:11          'gl_PrimitiveID' ( in highp int PrimitiveID)
-0:11        Construct uvec4 ( temp highp 4-component vector of uint)
+0:11        Construct uvec4 ( temp mediump 4-component vector of uint)
 0:11          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:11          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:11          Constant:
@@ -41,7 +41,7 @@
 0:11            Constant:
 0:11              0 (const uint)
 0:11          'gl_PrimitiveID' ( in highp int PrimitiveID)
-0:11        Construct uvec4 ( temp highp 4-component vector of uint)
+0:11        Construct uvec4 ( temp mediump 4-component vector of uint)
 0:11          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:11          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:11          Constant:
diff --git a/Test/baseResults/glsl.es320.subgroup.tese.out b/Test/baseResults/glsl.es320.subgroup.tese.out
index 29f7b73..198a757 100644
--- a/Test/baseResults/glsl.es320.subgroup.tese.out
+++ b/Test/baseResults/glsl.es320.subgroup.tese.out
@@ -15,7 +15,7 @@
 0:11            Constant:
 0:11              0 (const uint)
 0:11          'gl_PrimitiveID' ( in highp int PrimitiveID)
-0:11        Construct uvec4 ( temp highp 4-component vector of uint)
+0:11        Construct uvec4 ( temp mediump 4-component vector of uint)
 0:11          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:11          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:11          Constant:
@@ -45,7 +45,7 @@
 0:11            Constant:
 0:11              0 (const uint)
 0:11          'gl_PrimitiveID' ( in highp int PrimitiveID)
-0:11        Construct uvec4 ( temp highp 4-component vector of uint)
+0:11        Construct uvec4 ( temp mediump 4-component vector of uint)
 0:11          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:11          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:11          Constant:
diff --git a/Test/baseResults/glsl.es320.subgroup.vert.out b/Test/baseResults/glsl.es320.subgroup.vert.out
index bf1da49..e1a6bea 100644
--- a/Test/baseResults/glsl.es320.subgroup.vert.out
+++ b/Test/baseResults/glsl.es320.subgroup.vert.out
@@ -12,7 +12,7 @@
 0:10            Constant:
 0:10              0 (const uint)
 0:10          'gl_VertexID' ( gl_VertexId highp int VertexId)
-0:10        Construct uvec4 ( temp highp 4-component vector of uint)
+0:10        Construct uvec4 ( temp mediump 4-component vector of uint)
 0:10          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:10          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:10          Constant:
@@ -41,7 +41,7 @@
 0:10            Constant:
 0:10              0 (const uint)
 0:10          'gl_VertexID' ( gl_VertexId highp int VertexId)
-0:10        Construct uvec4 ( temp highp 4-component vector of uint)
+0:10        Construct uvec4 ( temp mediump 4-component vector of uint)
 0:10          'gl_SubgroupSize' ( in mediump uint SubgroupSize)
 0:10          'gl_SubgroupInvocationID' ( in mediump uint SubgroupInvocationID)
 0:10          Constant:
diff --git a/Test/baseResults/hlsl.aliasOpaque.frag.out b/Test/baseResults/hlsl.aliasOpaque.frag.out
index 9218a82..b7c2c9e 100644
--- a/Test/baseResults/hlsl.aliasOpaque.frag.out
+++ b/Test/baseResults/hlsl.aliasOpaque.frag.out
@@ -23,9 +23,9 @@
 0:13                's' ( in structure{ temp sampler ss,  temp float a,  temp texture2D tex})
 0:13                Constant:
 0:13                  0 (const int)
-0:?             Constant:
-0:?               0.200000
-0:?               0.300000
+0:13            Constant:
+0:13              0.200000
+0:13              0.300000
 0:17  Function Definition: @main( ( temp 4-component vector of float)
 0:17    Function Parameters: 
 0:?     Sequence
@@ -96,9 +96,9 @@
 0:13                's' ( in structure{ temp sampler ss,  temp float a,  temp texture2D tex})
 0:13                Constant:
 0:13                  0 (const int)
-0:?             Constant:
-0:?               0.200000
-0:?               0.300000
+0:13            Constant:
+0:13              0.200000
+0:13              0.300000
 0:17  Function Definition: @main( ( temp 4-component vector of float)
 0:17    Function Parameters: 
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.array.frag.out b/Test/baseResults/hlsl.array.frag.out
index 5b6afbd..2691772 100644
--- a/Test/baseResults/hlsl.array.frag.out
+++ b/Test/baseResults/hlsl.array.frag.out
@@ -5,21 +5,21 @@
 0:7  Sequence
 0:7    move second child to first child ( temp 4-component vector of float)
 0:7      'C' ( global 4-component vector of float)
-0:?       Constant:
-0:?         1.000000
-0:?         2.000000
-0:?         3.000000
-0:?         4.000000
+0:7      Constant:
+0:7        1.000000
+0:7        2.000000
+0:7        3.000000
+0:7        4.000000
 0:11  Sequence
 0:11    move second child to first child ( temp 2-element array of 4-component vector of float)
 0:11      'c2' ( global 2-element array of 4-component vector of float)
 0:11      Construct vec4 ( temp 2-element array of 4-component vector of float)
 0:11        'C' ( global 4-component vector of float)
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:11        Constant:
+0:11          1.000000
+0:11          2.000000
+0:11          3.000000
+0:11          4.000000
 0:14  Function Definition: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float)
 0:14    Function Parameters: 
 0:14      'i' ( in int)
@@ -152,21 +152,21 @@
 0:7  Sequence
 0:7    move second child to first child ( temp 4-component vector of float)
 0:7      'C' ( global 4-component vector of float)
-0:?       Constant:
-0:?         1.000000
-0:?         2.000000
-0:?         3.000000
-0:?         4.000000
+0:7      Constant:
+0:7        1.000000
+0:7        2.000000
+0:7        3.000000
+0:7        4.000000
 0:11  Sequence
 0:11    move second child to first child ( temp 2-element array of 4-component vector of float)
 0:11      'c2' ( global 2-element array of 4-component vector of float)
 0:11      Construct vec4 ( temp 2-element array of 4-component vector of float)
 0:11        'C' ( global 4-component vector of float)
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:11        Constant:
+0:11          1.000000
+0:11          2.000000
+0:11          3.000000
+0:11          4.000000
 0:14  Function Definition: @PixelShaderFunction(i1;vf4[3]; ( temp 4-component vector of float)
 0:14    Function Parameters: 
 0:14      'i' ( in int)
diff --git a/Test/baseResults/hlsl.attribute.expression.comp.out b/Test/baseResults/hlsl.attribute.expression.comp.out
index 3fc9b5b..90c1740 100644
--- a/Test/baseResults/hlsl.attribute.expression.comp.out
+++ b/Test/baseResults/hlsl.attribute.expression.comp.out
@@ -2,7 +2,7 @@
 Shader version: 500
 local_size = (4, 6, 8)
 0:? Sequence
-0:9  Function Definition: @main( ( temp 4-component vector of float)
+0:9  Function Definition: @main( ( temp void)
 0:9    Function Parameters: 
 0:?     Sequence
 0:11      Sequence
@@ -22,21 +22,12 @@
 0:11          Loop Terminal Expression
 0:11          Pre-Increment ( temp int)
 0:11            'x' ( temp int)
-0:14      Branch: Return with expression
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
 0:9  Function Definition: main( ( temp void)
 0:9    Function Parameters: 
 0:?     Sequence
-0:9      move second child to first child ( temp 4-component vector of float)
-0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:9        Function Call: @main( ( temp 4-component vector of float)
+0:9      Function Call: @main( ( temp void)
 0:?   Linker Objects
 0:?     'anon@0' (layout( row_major std140) uniform block{ uniform int bound})
-0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 
 Linked compute stage:
@@ -45,7 +36,7 @@
 Shader version: 500
 local_size = (4, 6, 8)
 0:? Sequence
-0:9  Function Definition: @main( ( temp 4-component vector of float)
+0:9  Function Definition: @main( ( temp void)
 0:9    Function Parameters: 
 0:?     Sequence
 0:11      Sequence
@@ -65,89 +56,70 @@
 0:11          Loop Terminal Expression
 0:11          Pre-Increment ( temp int)
 0:11            'x' ( temp int)
-0:14      Branch: Return with expression
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
 0:9  Function Definition: main( ( temp void)
 0:9    Function Parameters: 
 0:?     Sequence
-0:9      move second child to first child ( temp 4-component vector of float)
-0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:9        Function Call: @main( ( temp 4-component vector of float)
+0:9      Function Call: @main( ( temp void)
 0:?   Linker Objects
 0:?     'anon@0' (layout( row_major std140) uniform block{ uniform int bound})
-0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 39
+// Id's are bound by 30
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint GLCompute 4  "main" 37
+                              EntryPoint GLCompute 4  "main"
                               ExecutionMode 4 LocalSize 4 6 8
                               Source HLSL 500
                               Name 4  "main"
-                              Name 9  "@main("
-                              Name 13  "x"
-                              Name 21  "$Global"
-                              MemberName 21($Global) 0  "bound"
-                              Name 23  ""
-                              Name 37  "@entryPointOutput"
-                              MemberDecorate 21($Global) 0 Offset 0
-                              Decorate 21($Global) Block
-                              Decorate 23 DescriptorSet 0
-                              Decorate 23 Binding 0
-                              Decorate 37(@entryPointOutput) Location 0
+                              Name 6  "@main("
+                              Name 10  "x"
+                              Name 18  "$Global"
+                              MemberName 18($Global) 0  "bound"
+                              Name 20  ""
+                              MemberDecorate 18($Global) 0 Offset 0
+                              Decorate 18($Global) Block
+                              Decorate 20 DescriptorSet 0
+                              Decorate 20 Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
-               6:             TypeFloat 32
-               7:             TypeVector 6(float) 4
-               8:             TypeFunction 7(fvec4)
-              11:             TypeInt 32 1
-              12:             TypePointer Function 11(int)
-              14:     11(int) Constant 0
-     21($Global):             TypeStruct 11(int)
-              22:             TypePointer Uniform 21($Global)
-              23:     22(ptr) Variable Uniform
-              24:             TypePointer Uniform 11(int)
-              27:             TypeBool
-              30:     11(int) Constant 1
-              32:    6(float) Constant 0
-              33:    7(fvec4) ConstantComposite 32 32 32 32
-              36:             TypePointer Output 7(fvec4)
-37(@entryPointOutput):     36(ptr) Variable Output
+               8:             TypeInt 32 1
+               9:             TypePointer Function 8(int)
+              11:      8(int) Constant 0
+     18($Global):             TypeStruct 8(int)
+              19:             TypePointer Uniform 18($Global)
+              20:     19(ptr) Variable Uniform
+              21:             TypePointer Uniform 8(int)
+              24:             TypeBool
+              27:      8(int) Constant 1
          4(main):           2 Function None 3
                5:             Label
-              38:    7(fvec4) FunctionCall 9(@main()
-                              Store 37(@entryPointOutput) 38
+              29:           2 FunctionCall 6(@main()
                               Return
                               FunctionEnd
-       9(@main():    7(fvec4) Function None 8
-              10:             Label
-           13(x):     12(ptr) Variable Function
-                              Store 13(x) 14
-                              Branch 15
-              15:             Label
-                              LoopMerge 17 18 Unroll 
-                              Branch 19
-              19:             Label
-              20:     11(int) Load 13(x)
-              25:     24(ptr) AccessChain 23 14
-              26:     11(int) Load 25
-              28:    27(bool) SLessThan 20 26
-                              BranchConditional 28 16 17
-              16:               Label
-                                Branch 18
-              18:               Label
-              29:     11(int)   Load 13(x)
-              31:     11(int)   IAdd 29 30
-                                Store 13(x) 31
+       6(@main():           2 Function None 3
+               7:             Label
+           10(x):      9(ptr) Variable Function
+                              Store 10(x) 11
+                              Branch 12
+              12:             Label
+                              LoopMerge 14 15 Unroll 
+                              Branch 16
+              16:             Label
+              17:      8(int) Load 10(x)
+              22:     21(ptr) AccessChain 20 11
+              23:      8(int) Load 22
+              25:    24(bool) SLessThan 17 23
+                              BranchConditional 25 13 14
+              13:               Label
                                 Branch 15
-              17:             Label
-                              ReturnValue 33
+              15:               Label
+              26:      8(int)   Load 10(x)
+              28:      8(int)   IAdd 26 27
+                                Store 10(x) 28
+                                Branch 12
+              14:             Label
+                              Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.autosampledtextures.frag.out b/Test/baseResults/hlsl.autosampledtextures.frag.out
new file mode 100644
index 0000000..559c130
--- /dev/null
+++ b/Test/baseResults/hlsl.autosampledtextures.frag.out
@@ -0,0 +1,77 @@
+hlsl.autosampledtextures.frag
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 45
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "MainPs" 36 40
+                              ExecutionMode 4 OriginUpperLeft
+                              Source HLSL 500
+                              Name 4  "MainPs"
+                              Name 8  "PS_INPUT"
+                              MemberName 8(PS_INPUT) 0  "vTextureCoords"
+                              Name 11  "PS_OUTPUT"
+                              MemberName 11(PS_OUTPUT) 0  "vColor"
+                              Name 14  "@MainPs(struct-PS_INPUT-vf21;"
+                              Name 13  "i"
+                              Name 17  "ps_output"
+                              Name 23  "g_tColor"
+                              Name 34  "i"
+                              Name 36  "i.vTextureCoords"
+                              Name 40  "@entryPointOutput.vColor"
+                              Name 41  "param"
+                              Decorate 23(g_tColor) DescriptorSet 0
+                              Decorate 23(g_tColor) Binding 0
+                              Decorate 36(i.vTextureCoords) Location 0
+                              Decorate 40(@entryPointOutput.vColor) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 2
+     8(PS_INPUT):             TypeStruct 7(fvec2)
+               9:             TypePointer Function 8(PS_INPUT)
+              10:             TypeVector 6(float) 4
+   11(PS_OUTPUT):             TypeStruct 10(fvec4)
+              12:             TypeFunction 11(PS_OUTPUT) 9(ptr)
+              16:             TypePointer Function 11(PS_OUTPUT)
+              18:             TypeInt 32 1
+              19:     18(int) Constant 0
+              20:             TypeImage 6(float) 2D sampled format:Unknown
+              21:             TypeSampledImage 20
+              22:             TypePointer UniformConstant 21
+    23(g_tColor):     22(ptr) Variable UniformConstant
+              25:             TypePointer Function 7(fvec2)
+              29:             TypePointer Function 10(fvec4)
+              35:             TypePointer Input 7(fvec2)
+36(i.vTextureCoords):     35(ptr) Variable Input
+              39:             TypePointer Output 10(fvec4)
+40(@entryPointOutput.vColor):     39(ptr) Variable Output
+       4(MainPs):           2 Function None 3
+               5:             Label
+           34(i):      9(ptr) Variable Function
+       41(param):      9(ptr) Variable Function
+              37:    7(fvec2) Load 36(i.vTextureCoords)
+              38:     25(ptr) AccessChain 34(i) 19
+                              Store 38 37
+              42: 8(PS_INPUT) Load 34(i)
+                              Store 41(param) 42
+              43:11(PS_OUTPUT) FunctionCall 14(@MainPs(struct-PS_INPUT-vf21;) 41(param)
+              44:   10(fvec4) CompositeExtract 43 0
+                              Store 40(@entryPointOutput.vColor) 44
+                              Return
+                              FunctionEnd
+14(@MainPs(struct-PS_INPUT-vf21;):11(PS_OUTPUT) Function None 12
+           13(i):      9(ptr) FunctionParameter
+              15:             Label
+   17(ps_output):     16(ptr) Variable Function
+              24:          21 Load 23(g_tColor)
+              26:     25(ptr) AccessChain 13(i) 19
+              27:    7(fvec2) Load 26
+              28:   10(fvec4) ImageSampleImplicitLod 24 27
+              30:     29(ptr) AccessChain 17(ps_output) 19
+                              Store 30 28
+              31:11(PS_OUTPUT) Load 17(ps_output)
+                              ReturnValue 31
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
index 4ee2481..d4367a0 100644
--- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out
+++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
@@ -50,9 +50,9 @@
 0:32              Construct combined texture-sampler ( temp sampler2DArray)
 0:32                'g_tTex2df4a' ( uniform texture2DArray)
 0:32                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:32              Constant:
+0:32                0.100000
+0:32                0.200000
 0:32            Constant:
 0:32              0 (const int)
 0:33      Sequence
@@ -63,9 +63,9 @@
 0:33              Construct combined texture-sampler ( temp isampler2DArray)
 0:33                'g_tTex2di4a' ( uniform itexture2DArray)
 0:33                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.300000
-0:?                 0.400000
+0:33              Constant:
+0:33                0.300000
+0:33                0.400000
 0:33            Constant:
 0:33              0 (const int)
 0:34      Sequence
@@ -76,9 +76,9 @@
 0:34              Construct combined texture-sampler ( temp usampler2DArray)
 0:34                'g_tTex2du4a' ( uniform utexture2DArray)
 0:34                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.500000
-0:?                 0.600000
+0:34              Constant:
+0:34                0.500000
+0:34                0.600000
 0:34            Constant:
 0:34              0 (const int)
 0:36      Sequence
@@ -89,10 +89,10 @@
 0:36              Construct combined texture-sampler ( temp samplerCubeArray)
 0:36                'g_tTexcdf4a' ( uniform textureCubeArray)
 0:36                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:36              Constant:
+0:36                0.100000
+0:36                0.200000
+0:36                0.300000
 0:36            Constant:
 0:36              0 (const int)
 0:37      Sequence
@@ -103,10 +103,10 @@
 0:37              Construct combined texture-sampler ( temp isamplerCubeArray)
 0:37                'g_tTexcdi4a' ( uniform itextureCubeArray)
 0:37                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.400000
-0:?                 0.500000
-0:?                 0.600000
+0:37              Constant:
+0:37                0.400000
+0:37                0.500000
+0:37                0.600000
 0:37            Constant:
 0:37              0 (const int)
 0:38      Sequence
@@ -117,10 +117,10 @@
 0:38              Construct combined texture-sampler ( temp usamplerCubeArray)
 0:38                'g_tTexcdu4a' ( uniform utextureCubeArray)
 0:38                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.700000
-0:?                 0.800000
-0:?                 0.900000
+0:38              Constant:
+0:38                0.700000
+0:38                0.800000
+0:38                0.900000
 0:38            Constant:
 0:38              0 (const int)
 0:40      move second child to first child ( temp 4-component vector of float)
@@ -231,9 +231,9 @@
 0:32              Construct combined texture-sampler ( temp sampler2DArray)
 0:32                'g_tTex2df4a' ( uniform texture2DArray)
 0:32                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:32              Constant:
+0:32                0.100000
+0:32                0.200000
 0:32            Constant:
 0:32              0 (const int)
 0:33      Sequence
@@ -244,9 +244,9 @@
 0:33              Construct combined texture-sampler ( temp isampler2DArray)
 0:33                'g_tTex2di4a' ( uniform itexture2DArray)
 0:33                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.300000
-0:?                 0.400000
+0:33              Constant:
+0:33                0.300000
+0:33                0.400000
 0:33            Constant:
 0:33              0 (const int)
 0:34      Sequence
@@ -257,9 +257,9 @@
 0:34              Construct combined texture-sampler ( temp usampler2DArray)
 0:34                'g_tTex2du4a' ( uniform utexture2DArray)
 0:34                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.500000
-0:?                 0.600000
+0:34              Constant:
+0:34                0.500000
+0:34                0.600000
 0:34            Constant:
 0:34              0 (const int)
 0:36      Sequence
@@ -270,10 +270,10 @@
 0:36              Construct combined texture-sampler ( temp samplerCubeArray)
 0:36                'g_tTexcdf4a' ( uniform textureCubeArray)
 0:36                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:36              Constant:
+0:36                0.100000
+0:36                0.200000
+0:36                0.300000
 0:36            Constant:
 0:36              0 (const int)
 0:37      Sequence
@@ -284,10 +284,10 @@
 0:37              Construct combined texture-sampler ( temp isamplerCubeArray)
 0:37                'g_tTexcdi4a' ( uniform itextureCubeArray)
 0:37                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.400000
-0:?                 0.500000
-0:?                 0.600000
+0:37              Constant:
+0:37                0.400000
+0:37                0.500000
+0:37                0.600000
 0:37            Constant:
 0:37              0 (const int)
 0:38      Sequence
@@ -298,10 +298,10 @@
 0:38              Construct combined texture-sampler ( temp usamplerCubeArray)
 0:38                'g_tTexcdu4a' ( uniform utextureCubeArray)
 0:38                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.700000
-0:?                 0.800000
-0:?                 0.900000
+0:38              Constant:
+0:38                0.700000
+0:38                0.800000
+0:38                0.900000
 0:38            Constant:
 0:38              0 (const int)
 0:40      move second child to first child ( temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
index 6abe22c..8a4be02 100644
--- a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
+++ b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
@@ -50,9 +50,9 @@
 0:32              Construct combined texture-sampler ( temp sampler2DArray)
 0:32                'g_tTex2df4a' ( uniform texture2DArray)
 0:32                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:32              Constant:
+0:32                0.100000
+0:32                0.200000
 0:32            Constant:
 0:32              1 (const int)
 0:33      Sequence
@@ -63,9 +63,9 @@
 0:33              Construct combined texture-sampler ( temp isampler2DArray)
 0:33                'g_tTex2di4a' ( uniform itexture2DArray)
 0:33                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.300000
-0:?                 0.400000
+0:33              Constant:
+0:33                0.300000
+0:33                0.400000
 0:33            Constant:
 0:33              1 (const int)
 0:34      Sequence
@@ -76,9 +76,9 @@
 0:34              Construct combined texture-sampler ( temp usampler2DArray)
 0:34                'g_tTex2du4a' ( uniform utexture2DArray)
 0:34                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.500000
-0:?                 0.600000
+0:34              Constant:
+0:34                0.500000
+0:34                0.600000
 0:34            Constant:
 0:34              1 (const int)
 0:36      Sequence
@@ -89,10 +89,10 @@
 0:36              Construct combined texture-sampler ( temp samplerCubeArray)
 0:36                'g_tTexcdf4a' ( uniform textureCubeArray)
 0:36                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:36              Constant:
+0:36                0.100000
+0:36                0.200000
+0:36                0.300000
 0:36            Constant:
 0:36              1 (const int)
 0:37      Sequence
@@ -103,10 +103,10 @@
 0:37              Construct combined texture-sampler ( temp isamplerCubeArray)
 0:37                'g_tTexcdi4a' ( uniform itextureCubeArray)
 0:37                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.400000
-0:?                 0.500000
-0:?                 0.600000
+0:37              Constant:
+0:37                0.400000
+0:37                0.500000
+0:37                0.600000
 0:37            Constant:
 0:37              1 (const int)
 0:38      Sequence
@@ -117,10 +117,10 @@
 0:38              Construct combined texture-sampler ( temp usamplerCubeArray)
 0:38                'g_tTexcdu4a' ( uniform utextureCubeArray)
 0:38                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.700000
-0:?                 0.800000
-0:?                 0.900000
+0:38              Constant:
+0:38                0.700000
+0:38                0.800000
+0:38                0.900000
 0:38            Constant:
 0:38              1 (const int)
 0:40      move second child to first child ( temp 4-component vector of float)
@@ -231,9 +231,9 @@
 0:32              Construct combined texture-sampler ( temp sampler2DArray)
 0:32                'g_tTex2df4a' ( uniform texture2DArray)
 0:32                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:32              Constant:
+0:32                0.100000
+0:32                0.200000
 0:32            Constant:
 0:32              1 (const int)
 0:33      Sequence
@@ -244,9 +244,9 @@
 0:33              Construct combined texture-sampler ( temp isampler2DArray)
 0:33                'g_tTex2di4a' ( uniform itexture2DArray)
 0:33                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.300000
-0:?                 0.400000
+0:33              Constant:
+0:33                0.300000
+0:33                0.400000
 0:33            Constant:
 0:33              1 (const int)
 0:34      Sequence
@@ -257,9 +257,9 @@
 0:34              Construct combined texture-sampler ( temp usampler2DArray)
 0:34                'g_tTex2du4a' ( uniform utexture2DArray)
 0:34                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.500000
-0:?                 0.600000
+0:34              Constant:
+0:34                0.500000
+0:34                0.600000
 0:34            Constant:
 0:34              1 (const int)
 0:36      Sequence
@@ -270,10 +270,10 @@
 0:36              Construct combined texture-sampler ( temp samplerCubeArray)
 0:36                'g_tTexcdf4a' ( uniform textureCubeArray)
 0:36                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:36              Constant:
+0:36                0.100000
+0:36                0.200000
+0:36                0.300000
 0:36            Constant:
 0:36              1 (const int)
 0:37      Sequence
@@ -284,10 +284,10 @@
 0:37              Construct combined texture-sampler ( temp isamplerCubeArray)
 0:37                'g_tTexcdi4a' ( uniform itextureCubeArray)
 0:37                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.400000
-0:?                 0.500000
-0:?                 0.600000
+0:37              Constant:
+0:37                0.400000
+0:37                0.500000
+0:37                0.600000
 0:37            Constant:
 0:37              1 (const int)
 0:38      Sequence
@@ -298,10 +298,10 @@
 0:38              Construct combined texture-sampler ( temp usamplerCubeArray)
 0:38                'g_tTexcdu4a' ( uniform utextureCubeArray)
 0:38                'g_sSamp' (layout( binding=0) uniform sampler)
-0:?               Constant:
-0:?                 0.700000
-0:?                 0.800000
-0:?                 0.900000
+0:38              Constant:
+0:38                0.700000
+0:38                0.800000
+0:38                0.900000
 0:38            Constant:
 0:38              1 (const int)
 0:40      move second child to first child ( temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.comparison.vec.frag.out b/Test/baseResults/hlsl.comparison.vec.frag.out
index 1bf2ced..9fec433 100644
--- a/Test/baseResults/hlsl.comparison.vec.frag.out
+++ b/Test/baseResults/hlsl.comparison.vec.frag.out
@@ -9,11 +9,11 @@
 0:5      Sequence
 0:5        move second child to first child ( temp 4-component vector of float)
 0:5          'v04' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:5          Constant:
+0:5            0.000000
+0:5            0.000000
+0:5            0.000000
+0:5            0.000000
 0:6      Sequence
 0:6        move second child to first child ( temp float)
 0:6          'v01' ( temp float)
@@ -142,11 +142,11 @@
 0:5      Sequence
 0:5        move second child to first child ( temp 4-component vector of float)
 0:5          'v04' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:5          Constant:
+0:5            0.000000
+0:5            0.000000
+0:5            0.000000
+0:5            0.000000
 0:6      Sequence
 0:6        move second child to first child ( temp float)
 0:6          'v01' ( temp float)
diff --git a/Test/baseResults/hlsl.conditional.frag.out b/Test/baseResults/hlsl.conditional.frag.out
index 84396d5..99f2538 100644
--- a/Test/baseResults/hlsl.conditional.frag.out
+++ b/Test/baseResults/hlsl.conditional.frag.out
@@ -228,17 +228,17 @@
 0:40                'f' ( temp 4-component vector of float)
 0:40              Function Call: vectorCond( ( temp 4-component vector of float)
 0:40            Function Call: scalarCond( ( temp 4-component vector of float)
-0:?           Construct vec4 ( temp 4-component vector of float)
+0:41          Construct vec4 ( temp 4-component vector of float)
 0:41            Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float)
-0:?               Constant:
-0:?                 true (const bool)
-0:?                 false (const bool)
-0:?               Constant:
-0:?                 1.000000
-0:?                 2.000000
-0:?               Constant:
-0:?                 3.000000
-0:?                 4.000000
+0:41              Constant:
+0:41                true (const bool)
+0:41                false (const bool)
+0:41              Constant:
+0:41                1.000000
+0:41                2.000000
+0:41              Constant:
+0:41                3.000000
+0:41                4.000000
 0:41            Constant:
 0:41              10.000000
 0:41            Constant:
@@ -491,17 +491,17 @@
 0:40                'f' ( temp 4-component vector of float)
 0:40              Function Call: vectorCond( ( temp 4-component vector of float)
 0:40            Function Call: scalarCond( ( temp 4-component vector of float)
-0:?           Construct vec4 ( temp 4-component vector of float)
+0:41          Construct vec4 ( temp 4-component vector of float)
 0:41            Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float)
-0:?               Constant:
-0:?                 true (const bool)
-0:?                 false (const bool)
-0:?               Constant:
-0:?                 1.000000
-0:?                 2.000000
-0:?               Constant:
-0:?                 3.000000
-0:?                 4.000000
+0:41              Constant:
+0:41                true (const bool)
+0:41                false (const bool)
+0:41              Constant:
+0:41                1.000000
+0:41                2.000000
+0:41              Constant:
+0:41                3.000000
+0:41                4.000000
 0:41            Constant:
 0:41              10.000000
 0:41            Constant:
diff --git a/Test/baseResults/hlsl.constructexpr.frag.out b/Test/baseResults/hlsl.constructexpr.frag.out
index a6d387f..7b25ae8 100644
--- a/Test/baseResults/hlsl.constructexpr.frag.out
+++ b/Test/baseResults/hlsl.constructexpr.frag.out
@@ -18,12 +18,12 @@
 0:11      Constant:
 0:11        8 (const int)
 0:12      Comma ( temp 2-component vector of float)
-0:?         Constant:
-0:?           9.000000
-0:?           10.000000
-0:?         Constant:
-0:?           11.000000
-0:?           12.000000
+0:12        Constant:
+0:12          9.000000
+0:12          10.000000
+0:12        Constant:
+0:12          11.000000
+0:12          12.000000
 0:15      move second child to first child ( temp 4-component vector of float)
 0:15        color: direct index for structure ( temp 4-component vector of float)
 0:15          'ps_output' ( temp structure{ temp 4-component vector of float color})
@@ -72,12 +72,12 @@
 0:11      Constant:
 0:11        8 (const int)
 0:12      Comma ( temp 2-component vector of float)
-0:?         Constant:
-0:?           9.000000
-0:?           10.000000
-0:?         Constant:
-0:?           11.000000
-0:?           12.000000
+0:12        Constant:
+0:12          9.000000
+0:12          10.000000
+0:12        Constant:
+0:12          11.000000
+0:12          12.000000
 0:15      move second child to first child ( temp 4-component vector of float)
 0:15        color: direct index for structure ( temp 4-component vector of float)
 0:15          'ps_output' ( temp structure{ temp 4-component vector of float color})
diff --git a/Test/baseResults/hlsl.constructimat.frag.out b/Test/baseResults/hlsl.constructimat.frag.out
index d2d3d01..a76ac6a 100644
--- a/Test/baseResults/hlsl.constructimat.frag.out
+++ b/Test/baseResults/hlsl.constructimat.frag.out
@@ -28,23 +28,23 @@
 0:7      Sequence
 0:7        move second child to first child ( temp 4X4 matrix of int)
 0:7          'var444' ( temp 4X4 matrix of int)
-0:?           Constant:
-0:?             0 (const int)
-0:?             1 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
-0:?             1 (const int)
-0:?             1 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
-0:?             1 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
+0:7          Constant:
+0:7            0 (const int)
+0:7            1 (const int)
+0:7            0 (const int)
+0:7            0 (const int)
+0:7            1 (const int)
+0:7            1 (const int)
+0:7            0 (const int)
+0:7            0 (const int)
+0:7            1 (const int)
+0:7            0 (const int)
+0:7            0 (const int)
+0:7            0 (const int)
+0:7            0 (const int)
+0:7            0 (const int)
+0:7            0 (const int)
+0:7            0 (const int)
 0:11      Sequence
 0:11        move second child to first child ( temp 4X2 matrix of int)
 0:11          'var423' ( temp 4X2 matrix of int)
@@ -60,15 +60,15 @@
 0:12      Sequence
 0:12        move second child to first child ( temp 4X2 matrix of int)
 0:12          'var424' ( temp 4X2 matrix of int)
-0:?           Constant:
-0:?             0 (const int)
-0:?             1 (const int)
-0:?             1 (const int)
-0:?             1 (const int)
-0:?             1 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
+0:12          Constant:
+0:12            0 (const int)
+0:12            1 (const int)
+0:12            1 (const int)
+0:12            1 (const int)
+0:12            1 (const int)
+0:12            0 (const int)
+0:12            0 (const int)
+0:12            0 (const int)
 0:16      Sequence
 0:16        move second child to first child ( temp 3X2 matrix of int)
 0:16          'var323' ( temp 3X2 matrix of int)
@@ -82,13 +82,13 @@
 0:17      Sequence
 0:17        move second child to first child ( temp 3X2 matrix of int)
 0:17          'var234' ( temp 3X2 matrix of int)
-0:?           Constant:
-0:?             0 (const int)
-0:?             1 (const int)
-0:?             1 (const int)
-0:?             1 (const int)
-0:?             1 (const int)
-0:?             0 (const int)
+0:17          Constant:
+0:17            0 (const int)
+0:17            1 (const int)
+0:17            1 (const int)
+0:17            1 (const int)
+0:17            1 (const int)
+0:17            0 (const int)
 0:22      Sequence
 0:22        move second child to first child ( temp 4X4 matrix of uint)
 0:22          'uvar443' ( temp 4X4 matrix of uint)
@@ -112,23 +112,23 @@
 0:23      Sequence
 0:23        move second child to first child ( temp 4X4 matrix of uint)
 0:23          'uvar444' ( temp 4X4 matrix of uint)
-0:?           Constant:
-0:?             0 (const uint)
-0:?             1 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
-0:?             1 (const uint)
-0:?             1 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
-0:?             1 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
+0:23          Constant:
+0:23            0 (const uint)
+0:23            1 (const uint)
+0:23            0 (const uint)
+0:23            0 (const uint)
+0:23            1 (const uint)
+0:23            1 (const uint)
+0:23            0 (const uint)
+0:23            0 (const uint)
+0:23            1 (const uint)
+0:23            0 (const uint)
+0:23            0 (const uint)
+0:23            0 (const uint)
+0:23            0 (const uint)
+0:23            0 (const uint)
+0:23            0 (const uint)
+0:23            0 (const uint)
 0:27      Sequence
 0:27        move second child to first child ( temp 4X2 matrix of uint)
 0:27          'uvar423' ( temp 4X2 matrix of uint)
@@ -144,15 +144,15 @@
 0:28      Sequence
 0:28        move second child to first child ( temp 4X2 matrix of uint)
 0:28          'uvar424' ( temp 4X2 matrix of uint)
-0:?           Constant:
-0:?             0 (const uint)
-0:?             1 (const uint)
-0:?             1 (const uint)
-0:?             1 (const uint)
-0:?             1 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
+0:28          Constant:
+0:28            0 (const uint)
+0:28            1 (const uint)
+0:28            1 (const uint)
+0:28            1 (const uint)
+0:28            1 (const uint)
+0:28            0 (const uint)
+0:28            0 (const uint)
+0:28            0 (const uint)
 0:32      Sequence
 0:32        move second child to first child ( temp 3X2 matrix of uint)
 0:32          'uvar323' ( temp 3X2 matrix of uint)
@@ -166,13 +166,13 @@
 0:33      Sequence
 0:33        move second child to first child ( temp 3X2 matrix of uint)
 0:33          'uvar234' ( temp 3X2 matrix of uint)
-0:?           Constant:
-0:?             0 (const uint)
-0:?             1 (const uint)
-0:?             1 (const uint)
-0:?             1 (const uint)
-0:?             1 (const uint)
-0:?             0 (const uint)
+0:33          Constant:
+0:33            0 (const uint)
+0:33            1 (const uint)
+0:33            1 (const uint)
+0:33            1 (const uint)
+0:33            1 (const uint)
+0:33            0 (const uint)
 0:38      Sequence
 0:38        move second child to first child ( temp 4X4 matrix of bool)
 0:38          'bvar443' ( temp 4X4 matrix of bool)
@@ -196,23 +196,23 @@
 0:39      Sequence
 0:39        move second child to first child ( temp 4X4 matrix of bool)
 0:39          'bvar444' ( temp 4X4 matrix of bool)
-0:?           Constant:
-0:?             false (const bool)
-0:?             true (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
-0:?             true (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
+0:39          Constant:
+0:39            false (const bool)
+0:39            true (const bool)
+0:39            false (const bool)
+0:39            false (const bool)
+0:39            true (const bool)
+0:39            true (const bool)
+0:39            false (const bool)
+0:39            false (const bool)
+0:39            true (const bool)
+0:39            false (const bool)
+0:39            false (const bool)
+0:39            false (const bool)
+0:39            false (const bool)
+0:39            false (const bool)
+0:39            false (const bool)
+0:39            false (const bool)
 0:43      Sequence
 0:43        move second child to first child ( temp 4X2 matrix of bool)
 0:43          'bvar423' ( temp 4X2 matrix of bool)
@@ -228,15 +228,15 @@
 0:44      Sequence
 0:44        move second child to first child ( temp 4X2 matrix of bool)
 0:44          'bvar424' ( temp 4X2 matrix of bool)
-0:?           Constant:
-0:?             false (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
+0:44          Constant:
+0:44            false (const bool)
+0:44            true (const bool)
+0:44            true (const bool)
+0:44            true (const bool)
+0:44            true (const bool)
+0:44            false (const bool)
+0:44            false (const bool)
+0:44            false (const bool)
 0:48      Sequence
 0:48        move second child to first child ( temp 3X2 matrix of bool)
 0:48          'bvar323' ( temp 3X2 matrix of bool)
@@ -250,13 +250,13 @@
 0:49      Sequence
 0:49        move second child to first child ( temp 3X2 matrix of bool)
 0:49          'bvar234' ( temp 3X2 matrix of bool)
-0:?           Constant:
-0:?             false (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
-0:?             false (const bool)
+0:49          Constant:
+0:49            false (const bool)
+0:49            true (const bool)
+0:49            true (const bool)
+0:49            true (const bool)
+0:49            true (const bool)
+0:49            false (const bool)
 0:51      Branch: Return with expression
 0:51        Constant:
 0:51          0 (const int)
@@ -302,23 +302,23 @@
 0:7      Sequence
 0:7        move second child to first child ( temp 4X4 matrix of int)
 0:7          'var444' ( temp 4X4 matrix of int)
-0:?           Constant:
-0:?             0 (const int)
-0:?             1 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
-0:?             1 (const int)
-0:?             1 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
-0:?             1 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
+0:7          Constant:
+0:7            0 (const int)
+0:7            1 (const int)
+0:7            0 (const int)
+0:7            0 (const int)
+0:7            1 (const int)
+0:7            1 (const int)
+0:7            0 (const int)
+0:7            0 (const int)
+0:7            1 (const int)
+0:7            0 (const int)
+0:7            0 (const int)
+0:7            0 (const int)
+0:7            0 (const int)
+0:7            0 (const int)
+0:7            0 (const int)
+0:7            0 (const int)
 0:11      Sequence
 0:11        move second child to first child ( temp 4X2 matrix of int)
 0:11          'var423' ( temp 4X2 matrix of int)
@@ -334,15 +334,15 @@
 0:12      Sequence
 0:12        move second child to first child ( temp 4X2 matrix of int)
 0:12          'var424' ( temp 4X2 matrix of int)
-0:?           Constant:
-0:?             0 (const int)
-0:?             1 (const int)
-0:?             1 (const int)
-0:?             1 (const int)
-0:?             1 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
-0:?             0 (const int)
+0:12          Constant:
+0:12            0 (const int)
+0:12            1 (const int)
+0:12            1 (const int)
+0:12            1 (const int)
+0:12            1 (const int)
+0:12            0 (const int)
+0:12            0 (const int)
+0:12            0 (const int)
 0:16      Sequence
 0:16        move second child to first child ( temp 3X2 matrix of int)
 0:16          'var323' ( temp 3X2 matrix of int)
@@ -356,13 +356,13 @@
 0:17      Sequence
 0:17        move second child to first child ( temp 3X2 matrix of int)
 0:17          'var234' ( temp 3X2 matrix of int)
-0:?           Constant:
-0:?             0 (const int)
-0:?             1 (const int)
-0:?             1 (const int)
-0:?             1 (const int)
-0:?             1 (const int)
-0:?             0 (const int)
+0:17          Constant:
+0:17            0 (const int)
+0:17            1 (const int)
+0:17            1 (const int)
+0:17            1 (const int)
+0:17            1 (const int)
+0:17            0 (const int)
 0:22      Sequence
 0:22        move second child to first child ( temp 4X4 matrix of uint)
 0:22          'uvar443' ( temp 4X4 matrix of uint)
@@ -386,23 +386,23 @@
 0:23      Sequence
 0:23        move second child to first child ( temp 4X4 matrix of uint)
 0:23          'uvar444' ( temp 4X4 matrix of uint)
-0:?           Constant:
-0:?             0 (const uint)
-0:?             1 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
-0:?             1 (const uint)
-0:?             1 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
-0:?             1 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
+0:23          Constant:
+0:23            0 (const uint)
+0:23            1 (const uint)
+0:23            0 (const uint)
+0:23            0 (const uint)
+0:23            1 (const uint)
+0:23            1 (const uint)
+0:23            0 (const uint)
+0:23            0 (const uint)
+0:23            1 (const uint)
+0:23            0 (const uint)
+0:23            0 (const uint)
+0:23            0 (const uint)
+0:23            0 (const uint)
+0:23            0 (const uint)
+0:23            0 (const uint)
+0:23            0 (const uint)
 0:27      Sequence
 0:27        move second child to first child ( temp 4X2 matrix of uint)
 0:27          'uvar423' ( temp 4X2 matrix of uint)
@@ -418,15 +418,15 @@
 0:28      Sequence
 0:28        move second child to first child ( temp 4X2 matrix of uint)
 0:28          'uvar424' ( temp 4X2 matrix of uint)
-0:?           Constant:
-0:?             0 (const uint)
-0:?             1 (const uint)
-0:?             1 (const uint)
-0:?             1 (const uint)
-0:?             1 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
-0:?             0 (const uint)
+0:28          Constant:
+0:28            0 (const uint)
+0:28            1 (const uint)
+0:28            1 (const uint)
+0:28            1 (const uint)
+0:28            1 (const uint)
+0:28            0 (const uint)
+0:28            0 (const uint)
+0:28            0 (const uint)
 0:32      Sequence
 0:32        move second child to first child ( temp 3X2 matrix of uint)
 0:32          'uvar323' ( temp 3X2 matrix of uint)
@@ -440,13 +440,13 @@
 0:33      Sequence
 0:33        move second child to first child ( temp 3X2 matrix of uint)
 0:33          'uvar234' ( temp 3X2 matrix of uint)
-0:?           Constant:
-0:?             0 (const uint)
-0:?             1 (const uint)
-0:?             1 (const uint)
-0:?             1 (const uint)
-0:?             1 (const uint)
-0:?             0 (const uint)
+0:33          Constant:
+0:33            0 (const uint)
+0:33            1 (const uint)
+0:33            1 (const uint)
+0:33            1 (const uint)
+0:33            1 (const uint)
+0:33            0 (const uint)
 0:38      Sequence
 0:38        move second child to first child ( temp 4X4 matrix of bool)
 0:38          'bvar443' ( temp 4X4 matrix of bool)
@@ -470,23 +470,23 @@
 0:39      Sequence
 0:39        move second child to first child ( temp 4X4 matrix of bool)
 0:39          'bvar444' ( temp 4X4 matrix of bool)
-0:?           Constant:
-0:?             false (const bool)
-0:?             true (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
-0:?             true (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
+0:39          Constant:
+0:39            false (const bool)
+0:39            true (const bool)
+0:39            false (const bool)
+0:39            false (const bool)
+0:39            true (const bool)
+0:39            true (const bool)
+0:39            false (const bool)
+0:39            false (const bool)
+0:39            true (const bool)
+0:39            false (const bool)
+0:39            false (const bool)
+0:39            false (const bool)
+0:39            false (const bool)
+0:39            false (const bool)
+0:39            false (const bool)
+0:39            false (const bool)
 0:43      Sequence
 0:43        move second child to first child ( temp 4X2 matrix of bool)
 0:43          'bvar423' ( temp 4X2 matrix of bool)
@@ -502,15 +502,15 @@
 0:44      Sequence
 0:44        move second child to first child ( temp 4X2 matrix of bool)
 0:44          'bvar424' ( temp 4X2 matrix of bool)
-0:?           Constant:
-0:?             false (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
-0:?             false (const bool)
+0:44          Constant:
+0:44            false (const bool)
+0:44            true (const bool)
+0:44            true (const bool)
+0:44            true (const bool)
+0:44            true (const bool)
+0:44            false (const bool)
+0:44            false (const bool)
+0:44            false (const bool)
 0:48      Sequence
 0:48        move second child to first child ( temp 3X2 matrix of bool)
 0:48          'bvar323' ( temp 3X2 matrix of bool)
@@ -524,13 +524,13 @@
 0:49      Sequence
 0:49        move second child to first child ( temp 3X2 matrix of bool)
 0:49          'bvar234' ( temp 3X2 matrix of bool)
-0:?           Constant:
-0:?             false (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
-0:?             false (const bool)
+0:49          Constant:
+0:49            false (const bool)
+0:49            true (const bool)
+0:49            true (const bool)
+0:49            true (const bool)
+0:49            true (const bool)
+0:49            false (const bool)
 0:51      Branch: Return with expression
 0:51        Constant:
 0:51          0 (const int)
diff --git a/Test/baseResults/hlsl.coverage.frag.out b/Test/baseResults/hlsl.coverage.frag.out
index cb81d56..7c44e1f 100644
--- a/Test/baseResults/hlsl.coverage.frag.out
+++ b/Test/baseResults/hlsl.coverage.frag.out
@@ -11,11 +11,11 @@
 0:17          'o' ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
 0:17          Constant:
 0:17            0 (const int)
-0:?         Constant:
-0:?           1.000000
-0:?           0.000000
-0:?           0.000000
-0:?           1.000000
+0:17        Constant:
+0:17          1.000000
+0:17          0.000000
+0:17          0.000000
+0:17          1.000000
 0:18      move second child to first child ( temp uint)
 0:18        nCoverageMask: direct index for structure ( temp uint)
 0:18          'o' ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
@@ -72,11 +72,11 @@
 0:17          'o' ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
 0:17          Constant:
 0:17            0 (const int)
-0:?         Constant:
-0:?           1.000000
-0:?           0.000000
-0:?           0.000000
-0:?           1.000000
+0:17        Constant:
+0:17          1.000000
+0:17          0.000000
+0:17          0.000000
+0:17          1.000000
 0:18      move second child to first child ( temp uint)
 0:18        nCoverageMask: direct index for structure ( temp uint)
 0:18          'o' ( temp structure{ temp 4-component vector of float vColor,  temp uint nCoverageMask})
diff --git a/Test/baseResults/hlsl.dashI.vert.d.out b/Test/baseResults/hlsl.dashI.vert.d.out
new file mode 100644
index 0000000..11f8ed4
--- /dev/null
+++ b/Test/baseResults/hlsl.dashI.vert.d.out
@@ -0,0 +1 @@
+vert.spv: hlsl.dashI.vert ./bar.h ./parent.h inc1/path1/local.h inc1/path1/notHere.h inc1/path2/remote.h
diff --git a/Test/baseResults/hlsl.earlydepthstencil.frag.out b/Test/baseResults/hlsl.earlydepthstencil.frag.out
index e6ad359..34ca006 100644
--- a/Test/baseResults/hlsl.earlydepthstencil.frag.out
+++ b/Test/baseResults/hlsl.earlydepthstencil.frag.out
@@ -11,7 +11,7 @@
 0:10        'oldVal' ( temp uint)
 0:10        imageAtomicExchange ( temp uint)
 0:10          'Values' (layout( r32ui) uniform uimage2D)
-0:?           Construct uvec2 ( temp 2-component vector of uint)
+0:10          Construct uvec2 ( temp 2-component vector of uint)
 0:10            Convert float to uint ( temp uint)
 0:10              direct index ( temp float)
 0:10                Position: direct index for structure ( temp 4-component vector of float)
@@ -67,7 +67,7 @@
 0:10        'oldVal' ( temp uint)
 0:10        imageAtomicExchange ( temp uint)
 0:10          'Values' (layout( r32ui) uniform uimage2D)
-0:?           Construct uvec2 ( temp 2-component vector of uint)
+0:10          Construct uvec2 ( temp 2-component vector of uint)
 0:10            Convert float to uint ( temp uint)
 0:10              direct index ( temp float)
 0:10                Position: direct index for structure ( temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.flatten.return.frag.out b/Test/baseResults/hlsl.flatten.return.frag.out
index ffb9dcc..9a51f1f 100644
--- a/Test/baseResults/hlsl.flatten.return.frag.out
+++ b/Test/baseResults/hlsl.flatten.return.frag.out
@@ -6,14 +6,14 @@
 0:11    Function Parameters: 
 0:?     Sequence
 0:12      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           1.000000
-0:?           1.000000
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:12        Constant:
+0:12          1.000000
+0:12          1.000000
+0:12          1.000000
+0:12          1.000000
+0:12          2.000000
+0:12          3.000000
+0:12          4.000000
 0:16  Function Definition: @main( ( temp structure{ temp 4-component vector of float color,  temp float other_struct_member1,  temp float other_struct_member2,  temp float other_struct_member3})
 0:16    Function Parameters: 
 0:?     Sequence
@@ -67,14 +67,14 @@
 0:11    Function Parameters: 
 0:?     Sequence
 0:12      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           1.000000
-0:?           1.000000
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:12        Constant:
+0:12          1.000000
+0:12          1.000000
+0:12          1.000000
+0:12          1.000000
+0:12          2.000000
+0:12          3.000000
+0:12          4.000000
 0:16  Function Definition: @main( ( temp structure{ temp 4-component vector of float color,  temp float other_struct_member1,  temp float other_struct_member2,  temp float other_struct_member3})
 0:16    Function Parameters: 
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.flattenOpaque.frag.out b/Test/baseResults/hlsl.flattenOpaque.frag.out
index d63caf5..9a29081 100644
--- a/Test/baseResults/hlsl.flattenOpaque.frag.out
+++ b/Test/baseResults/hlsl.flattenOpaque.frag.out
@@ -15,9 +15,9 @@
 0:16              's' ( in structure{ temp sampler s2D})
 0:16              Constant:
 0:16                0 (const int)
-0:?           Constant:
-0:?             0.200000
-0:?             0.300000
+0:16          Constant:
+0:16            0.200000
+0:16            0.300000
 0:20  Function Definition: osCall2(struct-os-p11;vf2; ( temp 4-component vector of float)
 0:20    Function Parameters: 
 0:20      's' ( in structure{ temp sampler s2D})
@@ -47,9 +47,9 @@
 0:26              's' ( in structure{ temp sampler s2D,  temp texture2D tex})
 0:26              Constant:
 0:26                0 (const int)
-0:?           Constant:
-0:?             0.200000
-0:?             0.300000
+0:26          Constant:
+0:26            0.200000
+0:26            0.300000
 0:30  Function Definition: os2Call2(struct-os2-p1-t211;vf2; ( temp 4-component vector of float)
 0:30    Function Parameters: 
 0:30      's' ( in structure{ temp sampler s2D,  temp texture2D tex})
@@ -94,9 +94,9 @@
 0:37                          0 (const int)
 0:?                       's.s2D' ( uniform sampler)
 0:37                  'aggShadow' ( temp structure{ temp sampler s2D})
-0:?                 Constant:
-0:?                   0.200000
-0:?                   0.300000
+0:37                Constant:
+0:37                  0.200000
+0:37                  0.300000
 0:38            Function Call: os2Call1(struct-os2-p1-t211; ( temp 4-component vector of float)
 0:38              Comma ( temp structure{ temp sampler s2D,  temp texture2D tex})
 0:38                Sequence
@@ -129,9 +129,9 @@
 0:39                      1 (const int)
 0:?                   's2.tex' ( uniform texture2D)
 0:39              'aggShadow' ( temp structure{ temp sampler s2D,  temp texture2D tex})
-0:?             Constant:
-0:?               0.200000
-0:?               0.300000
+0:39            Constant:
+0:39              0.200000
+0:39              0.300000
 0:35  Function Definition: main( ( temp void)
 0:35    Function Parameters: 
 0:?     Sequence
@@ -164,9 +164,9 @@
 0:16              's' ( in structure{ temp sampler s2D})
 0:16              Constant:
 0:16                0 (const int)
-0:?           Constant:
-0:?             0.200000
-0:?             0.300000
+0:16          Constant:
+0:16            0.200000
+0:16            0.300000
 0:20  Function Definition: osCall2(struct-os-p11;vf2; ( temp 4-component vector of float)
 0:20    Function Parameters: 
 0:20      's' ( in structure{ temp sampler s2D})
@@ -196,9 +196,9 @@
 0:26              's' ( in structure{ temp sampler s2D,  temp texture2D tex})
 0:26              Constant:
 0:26                0 (const int)
-0:?           Constant:
-0:?             0.200000
-0:?             0.300000
+0:26          Constant:
+0:26            0.200000
+0:26            0.300000
 0:30  Function Definition: os2Call2(struct-os2-p1-t211;vf2; ( temp 4-component vector of float)
 0:30    Function Parameters: 
 0:30      's' ( in structure{ temp sampler s2D,  temp texture2D tex})
@@ -243,9 +243,9 @@
 0:37                          0 (const int)
 0:?                       's.s2D' ( uniform sampler)
 0:37                  'aggShadow' ( temp structure{ temp sampler s2D})
-0:?                 Constant:
-0:?                   0.200000
-0:?                   0.300000
+0:37                Constant:
+0:37                  0.200000
+0:37                  0.300000
 0:38            Function Call: os2Call1(struct-os2-p1-t211; ( temp 4-component vector of float)
 0:38              Comma ( temp structure{ temp sampler s2D,  temp texture2D tex})
 0:38                Sequence
@@ -278,9 +278,9 @@
 0:39                      1 (const int)
 0:?                   's2.tex' ( uniform texture2D)
 0:39              'aggShadow' ( temp structure{ temp sampler s2D,  temp texture2D tex})
-0:?             Constant:
-0:?               0.200000
-0:?               0.300000
+0:39            Constant:
+0:39              0.200000
+0:39              0.300000
 0:35  Function Definition: main( ( temp void)
 0:35    Function Parameters: 
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.flattenOpaqueInit.vert.out b/Test/baseResults/hlsl.flattenOpaqueInit.vert.out
index d27cadc..10e8345 100644
--- a/Test/baseResults/hlsl.flattenOpaqueInit.vert.out
+++ b/Test/baseResults/hlsl.flattenOpaqueInit.vert.out
@@ -17,9 +17,9 @@
 0:6              'tex' ( in structure{ temp sampler smpl,  temp texture2D tex})
 0:6              Constant:
 0:6                0 (const int)
-0:?           Constant:
-0:?             0.300000
-0:?             0.400000
+0:6          Constant:
+0:6            0.300000
+0:6            0.400000
 0:10  Function Definition: fillOpaque( ( temp structure{ temp sampler smpl,  temp texture2D tex})
 0:10    Function Parameters: 
 0:?     Sequence
@@ -101,9 +101,9 @@
 0:6              'tex' ( in structure{ temp sampler smpl,  temp texture2D tex})
 0:6              Constant:
 0:6                0 (const int)
-0:?           Constant:
-0:?             0.300000
-0:?             0.400000
+0:6          Constant:
+0:6            0.300000
+0:6            0.400000
 0:10  Function Definition: fillOpaque( ( temp structure{ temp sampler smpl,  temp texture2D tex})
 0:10    Function Parameters: 
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out b/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out
index 04f7009..c8d0b16 100644
--- a/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out
+++ b/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out
@@ -17,7 +17,7 @@
 0:6              'tex' ( in structure{ temp sampler smpl,  temp texture2D tex,  temp float f})
 0:6              Constant:
 0:6                0 (const int)
-0:?           Construct vec2 ( temp 2-component vector of float)
+0:6          Construct vec2 ( temp 2-component vector of float)
 0:6            f: direct index for structure ( temp float)
 0:6              'tex' ( in structure{ temp sampler smpl,  temp texture2D tex,  temp float f})
 0:6              Constant:
@@ -72,7 +72,7 @@
 0:6              'tex' ( in structure{ temp sampler smpl,  temp texture2D tex,  temp float f})
 0:6              Constant:
 0:6                0 (const int)
-0:?           Construct vec2 ( temp 2-component vector of float)
+0:6          Construct vec2 ( temp 2-component vector of float)
 0:6            f: direct index for structure ( temp float)
 0:6              'tex' ( in structure{ temp sampler smpl,  temp texture2D tex,  temp float f})
 0:6              Constant:
diff --git a/Test/baseResults/hlsl.flattenSubset2.frag.out b/Test/baseResults/hlsl.flattenSubset2.frag.out
index bac9b30..c319637 100644
--- a/Test/baseResults/hlsl.flattenSubset2.frag.out
+++ b/Test/baseResults/hlsl.flattenSubset2.frag.out
@@ -52,11 +52,11 @@
 0:21        Constant:
 0:21          1.000000
 0:23      Branch: Return with expression
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:23        Constant:
+0:23          0.000000
+0:23          0.000000
+0:23          0.000000
+0:23          0.000000
 0:8  Function Definition: main( ( temp void)
 0:8    Function Parameters: 
 0:?     Sequence
@@ -128,11 +128,11 @@
 0:21        Constant:
 0:21          1.000000
 0:23      Branch: Return with expression
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:23        Constant:
+0:23          0.000000
+0:23          0.000000
+0:23          0.000000
+0:23          0.000000
 0:8  Function Definition: main( ( temp void)
 0:8    Function Parameters: 
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.gather.array.dx10.frag.out b/Test/baseResults/hlsl.gather.array.dx10.frag.out
index b679ac4..e39d5a2 100644
--- a/Test/baseResults/hlsl.gather.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.array.dx10.frag.out
@@ -13,10 +13,10 @@
 0:29            Construct combined texture-sampler ( temp sampler2DArray)
 0:29              'g_tTex2df4a' ( uniform texture2DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:29            Constant:
+0:29              0.100000
+0:29              0.200000
+0:29              0.300000
 0:30      Sequence
 0:30        move second child to first child ( temp 4-component vector of int)
 0:30          'txval21' ( temp 4-component vector of int)
@@ -24,10 +24,10 @@
 0:30            Construct combined texture-sampler ( temp isampler2DArray)
 0:30              'g_tTex2di4a' ( uniform itexture2DArray)
 0:30              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.500000
+0:30            Constant:
+0:30              0.300000
+0:30              0.400000
+0:30              0.500000
 0:31      Sequence
 0:31        move second child to first child ( temp 4-component vector of uint)
 0:31          'txval22' ( temp 4-component vector of uint)
@@ -35,10 +35,10 @@
 0:31            Construct combined texture-sampler ( temp usampler2DArray)
 0:31              'g_tTex2du4a' ( uniform utexture2DArray)
 0:31              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:31            Constant:
+0:31              0.500000
+0:31              0.600000
+0:31              0.700000
 0:35      Sequence
 0:35        move second child to first child ( temp 4-component vector of float)
 0:35          'txval40' ( temp 4-component vector of float)
@@ -46,11 +46,11 @@
 0:35            Construct combined texture-sampler ( temp samplerCubeArray)
 0:35              'g_tTexcdf4a' ( uniform textureCubeArray)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?               0.400000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35              0.300000
+0:35              0.400000
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of int)
 0:36          'txval41' ( temp 4-component vector of int)
@@ -58,11 +58,11 @@
 0:36            Construct combined texture-sampler ( temp isamplerCubeArray)
 0:36              'g_tTexcdi4a' ( uniform itextureCubeArray)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:36            Constant:
+0:36              0.400000
+0:36              0.500000
+0:36              0.600000
+0:36              0.700000
 0:37      Sequence
 0:37        move second child to first child ( temp 4-component vector of uint)
 0:37          'txval42' ( temp 4-component vector of uint)
@@ -70,11 +70,11 @@
 0:37            Construct combined texture-sampler ( temp usamplerCubeArray)
 0:37              'g_tTexcdu4a' ( uniform utextureCubeArray)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?               1.000000
+0:37            Constant:
+0:37              0.700000
+0:37              0.800000
+0:37              0.900000
+0:37              1.000000
 0:39      move second child to first child ( temp 4-component vector of float)
 0:39        Color: direct index for structure ( temp 4-component vector of float)
 0:39          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -146,10 +146,10 @@
 0:29            Construct combined texture-sampler ( temp sampler2DArray)
 0:29              'g_tTex2df4a' ( uniform texture2DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:29            Constant:
+0:29              0.100000
+0:29              0.200000
+0:29              0.300000
 0:30      Sequence
 0:30        move second child to first child ( temp 4-component vector of int)
 0:30          'txval21' ( temp 4-component vector of int)
@@ -157,10 +157,10 @@
 0:30            Construct combined texture-sampler ( temp isampler2DArray)
 0:30              'g_tTex2di4a' ( uniform itexture2DArray)
 0:30              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.500000
+0:30            Constant:
+0:30              0.300000
+0:30              0.400000
+0:30              0.500000
 0:31      Sequence
 0:31        move second child to first child ( temp 4-component vector of uint)
 0:31          'txval22' ( temp 4-component vector of uint)
@@ -168,10 +168,10 @@
 0:31            Construct combined texture-sampler ( temp usampler2DArray)
 0:31              'g_tTex2du4a' ( uniform utexture2DArray)
 0:31              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:31            Constant:
+0:31              0.500000
+0:31              0.600000
+0:31              0.700000
 0:35      Sequence
 0:35        move second child to first child ( temp 4-component vector of float)
 0:35          'txval40' ( temp 4-component vector of float)
@@ -179,11 +179,11 @@
 0:35            Construct combined texture-sampler ( temp samplerCubeArray)
 0:35              'g_tTexcdf4a' ( uniform textureCubeArray)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?               0.400000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35              0.300000
+0:35              0.400000
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of int)
 0:36          'txval41' ( temp 4-component vector of int)
@@ -191,11 +191,11 @@
 0:36            Construct combined texture-sampler ( temp isamplerCubeArray)
 0:36              'g_tTexcdi4a' ( uniform itextureCubeArray)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:36            Constant:
+0:36              0.400000
+0:36              0.500000
+0:36              0.600000
+0:36              0.700000
 0:37      Sequence
 0:37        move second child to first child ( temp 4-component vector of uint)
 0:37          'txval42' ( temp 4-component vector of uint)
@@ -203,11 +203,11 @@
 0:37            Construct combined texture-sampler ( temp usamplerCubeArray)
 0:37              'g_tTexcdu4a' ( uniform utextureCubeArray)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?               1.000000
+0:37            Constant:
+0:37              0.700000
+0:37              0.800000
+0:37              0.900000
+0:37              1.000000
 0:39      move second child to first child ( temp 4-component vector of float)
 0:39        Color: direct index for structure ( temp 4-component vector of float)
 0:39          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.gather.basic.dx10.frag.out b/Test/baseResults/hlsl.gather.basic.dx10.frag.out
index c80c10f..99efd61 100644
--- a/Test/baseResults/hlsl.gather.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.basic.dx10.frag.out
@@ -13,9 +13,9 @@
 0:34            Construct combined texture-sampler ( temp sampler2D)
 0:34              'g_tTex2df4' ( uniform texture2D)
 0:34              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:34            Constant:
+0:34              0.100000
+0:34              0.200000
 0:35      Sequence
 0:35        move second child to first child ( temp 4-component vector of int)
 0:35          'txval21' ( temp 4-component vector of int)
@@ -23,9 +23,9 @@
 0:35            Construct combined texture-sampler ( temp isampler2D)
 0:35              'g_tTex2di4' ( uniform itexture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:35            Constant:
+0:35              0.300000
+0:35              0.400000
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of uint)
 0:36          'txval22' ( temp 4-component vector of uint)
@@ -33,9 +33,9 @@
 0:36            Construct combined texture-sampler ( temp usampler2D)
 0:36              'g_tTex2du4' ( uniform utexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
+0:36            Constant:
+0:36              0.500000
+0:36              0.600000
 0:40      Sequence
 0:40        move second child to first child ( temp 4-component vector of float)
 0:40          'txval40' ( temp 4-component vector of float)
@@ -43,10 +43,10 @@
 0:40            Construct combined texture-sampler ( temp samplerCube)
 0:40              'g_tTexcdf4' ( uniform textureCube)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:40            Constant:
+0:40              0.100000
+0:40              0.200000
+0:40              0.300000
 0:41      Sequence
 0:41        move second child to first child ( temp 4-component vector of int)
 0:41          'txval41' ( temp 4-component vector of int)
@@ -54,10 +54,10 @@
 0:41            Construct combined texture-sampler ( temp isamplerCube)
 0:41              'g_tTexcdi4' ( uniform itextureCube)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:41            Constant:
+0:41              0.400000
+0:41              0.500000
+0:41              0.600000
 0:42      Sequence
 0:42        move second child to first child ( temp 4-component vector of uint)
 0:42          'txval42' ( temp 4-component vector of uint)
@@ -65,10 +65,10 @@
 0:42            Construct combined texture-sampler ( temp usamplerCube)
 0:42              'g_tTexcdu4' ( uniform utextureCube)
 0:42              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:42            Constant:
+0:42              0.700000
+0:42              0.800000
+0:42              0.900000
 0:44      move second child to first child ( temp 4-component vector of float)
 0:44        Color: direct index for structure ( temp 4-component vector of float)
 0:44          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -144,9 +144,9 @@
 0:34            Construct combined texture-sampler ( temp sampler2D)
 0:34              'g_tTex2df4' ( uniform texture2D)
 0:34              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:34            Constant:
+0:34              0.100000
+0:34              0.200000
 0:35      Sequence
 0:35        move second child to first child ( temp 4-component vector of int)
 0:35          'txval21' ( temp 4-component vector of int)
@@ -154,9 +154,9 @@
 0:35            Construct combined texture-sampler ( temp isampler2D)
 0:35              'g_tTex2di4' ( uniform itexture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:35            Constant:
+0:35              0.300000
+0:35              0.400000
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of uint)
 0:36          'txval22' ( temp 4-component vector of uint)
@@ -164,9 +164,9 @@
 0:36            Construct combined texture-sampler ( temp usampler2D)
 0:36              'g_tTex2du4' ( uniform utexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
+0:36            Constant:
+0:36              0.500000
+0:36              0.600000
 0:40      Sequence
 0:40        move second child to first child ( temp 4-component vector of float)
 0:40          'txval40' ( temp 4-component vector of float)
@@ -174,10 +174,10 @@
 0:40            Construct combined texture-sampler ( temp samplerCube)
 0:40              'g_tTexcdf4' ( uniform textureCube)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:40            Constant:
+0:40              0.100000
+0:40              0.200000
+0:40              0.300000
 0:41      Sequence
 0:41        move second child to first child ( temp 4-component vector of int)
 0:41          'txval41' ( temp 4-component vector of int)
@@ -185,10 +185,10 @@
 0:41            Construct combined texture-sampler ( temp isamplerCube)
 0:41              'g_tTexcdi4' ( uniform itextureCube)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:41            Constant:
+0:41              0.400000
+0:41              0.500000
+0:41              0.600000
 0:42      Sequence
 0:42        move second child to first child ( temp 4-component vector of uint)
 0:42          'txval42' ( temp 4-component vector of uint)
@@ -196,10 +196,10 @@
 0:42            Construct combined texture-sampler ( temp usamplerCube)
 0:42              'g_tTexcdu4' ( uniform utextureCube)
 0:42              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:42            Constant:
+0:42              0.700000
+0:42              0.800000
+0:42              0.900000
 0:44      move second child to first child ( temp 4-component vector of float)
 0:44        Color: direct index for structure ( temp 4-component vector of float)
 0:44          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.gather.basic.dx10.vert.out b/Test/baseResults/hlsl.gather.basic.dx10.vert.out
index fd0c958..96525e0 100644
--- a/Test/baseResults/hlsl.gather.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.gather.basic.dx10.vert.out
@@ -11,9 +11,9 @@
 0:33            Construct combined texture-sampler ( temp sampler2D)
 0:33              'g_tTex2df4' ( uniform texture2D)
 0:33              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:33            Constant:
+0:33              0.100000
+0:33              0.200000
 0:34      Sequence
 0:34        move second child to first child ( temp 4-component vector of int)
 0:34          'txval21' ( temp 4-component vector of int)
@@ -21,9 +21,9 @@
 0:34            Construct combined texture-sampler ( temp isampler2D)
 0:34              'g_tTex2di4' ( uniform itexture2D)
 0:34              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:34            Constant:
+0:34              0.300000
+0:34              0.400000
 0:35      Sequence
 0:35        move second child to first child ( temp 4-component vector of uint)
 0:35          'txval22' ( temp 4-component vector of uint)
@@ -31,9 +31,9 @@
 0:35            Construct combined texture-sampler ( temp usampler2D)
 0:35              'g_tTex2du4' ( uniform utexture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
+0:35            Constant:
+0:35              0.500000
+0:35              0.600000
 0:39      Sequence
 0:39        move second child to first child ( temp 4-component vector of float)
 0:39          'txval40' ( temp 4-component vector of float)
@@ -41,10 +41,10 @@
 0:39            Construct combined texture-sampler ( temp samplerCube)
 0:39              'g_tTexcdf4' ( uniform textureCube)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:39            Constant:
+0:39              0.100000
+0:39              0.200000
+0:39              0.300000
 0:40      Sequence
 0:40        move second child to first child ( temp 4-component vector of int)
 0:40          'txval41' ( temp 4-component vector of int)
@@ -52,10 +52,10 @@
 0:40            Construct combined texture-sampler ( temp isamplerCube)
 0:40              'g_tTexcdi4' ( uniform itextureCube)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:40            Constant:
+0:40              0.400000
+0:40              0.500000
+0:40              0.600000
 0:41      Sequence
 0:41        move second child to first child ( temp 4-component vector of uint)
 0:41          'txval42' ( temp 4-component vector of uint)
@@ -63,20 +63,20 @@
 0:41            Construct combined texture-sampler ( temp usamplerCube)
 0:41              'g_tTexcdu4' ( uniform utextureCube)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:41            Constant:
+0:41              0.700000
+0:41              0.800000
+0:41              0.900000
 0:43      move second child to first child ( temp 4-component vector of float)
 0:43        Pos: direct index for structure ( temp 4-component vector of float)
 0:43          'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:43          Constant:
 0:43            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:43        Constant:
+0:43          0.000000
+0:43          0.000000
+0:43          0.000000
+0:43          0.000000
 0:45      Branch: Return with expression
 0:45        'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:28  Function Definition: main( ( temp void)
@@ -123,9 +123,9 @@
 0:33            Construct combined texture-sampler ( temp sampler2D)
 0:33              'g_tTex2df4' ( uniform texture2D)
 0:33              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:33            Constant:
+0:33              0.100000
+0:33              0.200000
 0:34      Sequence
 0:34        move second child to first child ( temp 4-component vector of int)
 0:34          'txval21' ( temp 4-component vector of int)
@@ -133,9 +133,9 @@
 0:34            Construct combined texture-sampler ( temp isampler2D)
 0:34              'g_tTex2di4' ( uniform itexture2D)
 0:34              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:34            Constant:
+0:34              0.300000
+0:34              0.400000
 0:35      Sequence
 0:35        move second child to first child ( temp 4-component vector of uint)
 0:35          'txval22' ( temp 4-component vector of uint)
@@ -143,9 +143,9 @@
 0:35            Construct combined texture-sampler ( temp usampler2D)
 0:35              'g_tTex2du4' ( uniform utexture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
+0:35            Constant:
+0:35              0.500000
+0:35              0.600000
 0:39      Sequence
 0:39        move second child to first child ( temp 4-component vector of float)
 0:39          'txval40' ( temp 4-component vector of float)
@@ -153,10 +153,10 @@
 0:39            Construct combined texture-sampler ( temp samplerCube)
 0:39              'g_tTexcdf4' ( uniform textureCube)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:39            Constant:
+0:39              0.100000
+0:39              0.200000
+0:39              0.300000
 0:40      Sequence
 0:40        move second child to first child ( temp 4-component vector of int)
 0:40          'txval41' ( temp 4-component vector of int)
@@ -164,10 +164,10 @@
 0:40            Construct combined texture-sampler ( temp isamplerCube)
 0:40              'g_tTexcdi4' ( uniform itextureCube)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:40            Constant:
+0:40              0.400000
+0:40              0.500000
+0:40              0.600000
 0:41      Sequence
 0:41        move second child to first child ( temp 4-component vector of uint)
 0:41          'txval42' ( temp 4-component vector of uint)
@@ -175,20 +175,20 @@
 0:41            Construct combined texture-sampler ( temp usamplerCube)
 0:41              'g_tTexcdu4' ( uniform utextureCube)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:41            Constant:
+0:41              0.700000
+0:41              0.800000
+0:41              0.900000
 0:43      move second child to first child ( temp 4-component vector of float)
 0:43        Pos: direct index for structure ( temp 4-component vector of float)
 0:43          'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:43          Constant:
 0:43            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:43        Constant:
+0:43          0.000000
+0:43          0.000000
+0:43          0.000000
+0:43          0.000000
 0:45      Branch: Return with expression
 0:45        'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:28  Function Definition: main( ( temp void)
diff --git a/Test/baseResults/hlsl.gather.offset.dx10.frag.out b/Test/baseResults/hlsl.gather.offset.dx10.frag.out
index 4e40f72..59bd8da 100644
--- a/Test/baseResults/hlsl.gather.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.offset.dx10.frag.out
@@ -13,12 +13,12 @@
 0:33            Construct combined texture-sampler ( temp sampler2D)
 0:33              'g_tTex2df4' ( uniform texture2D)
 0:33              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:33            Constant:
+0:33              0.100000
+0:33              0.200000
+0:33            Constant:
+0:33              1 (const int)
+0:33              0 (const int)
 0:34      Sequence
 0:34        move second child to first child ( temp 4-component vector of int)
 0:34          'txval21' ( temp 4-component vector of int)
@@ -26,12 +26,12 @@
 0:34            Construct combined texture-sampler ( temp isampler2D)
 0:34              'g_tTex2di4' ( uniform itexture2D)
 0:34              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
+0:34            Constant:
+0:34              0.300000
+0:34              0.400000
+0:34            Constant:
+0:34              1 (const int)
+0:34              1 (const int)
 0:35      Sequence
 0:35        move second child to first child ( temp 4-component vector of uint)
 0:35          'txval22' ( temp 4-component vector of uint)
@@ -39,12 +39,12 @@
 0:35            Construct combined texture-sampler ( temp usampler2D)
 0:35              'g_tTex2du4' ( uniform utexture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1 (const int)
-0:?               -1 (const int)
+0:35            Constant:
+0:35              0.500000
+0:35              0.600000
+0:35            Constant:
+0:35              1 (const int)
+0:35              -1 (const int)
 0:40      move second child to first child ( temp 4-component vector of float)
 0:40        Color: direct index for structure ( temp 4-component vector of float)
 0:40          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -119,12 +119,12 @@
 0:33            Construct combined texture-sampler ( temp sampler2D)
 0:33              'g_tTex2df4' ( uniform texture2D)
 0:33              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:33            Constant:
+0:33              0.100000
+0:33              0.200000
+0:33            Constant:
+0:33              1 (const int)
+0:33              0 (const int)
 0:34      Sequence
 0:34        move second child to first child ( temp 4-component vector of int)
 0:34          'txval21' ( temp 4-component vector of int)
@@ -132,12 +132,12 @@
 0:34            Construct combined texture-sampler ( temp isampler2D)
 0:34              'g_tTex2di4' ( uniform itexture2D)
 0:34              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
+0:34            Constant:
+0:34              0.300000
+0:34              0.400000
+0:34            Constant:
+0:34              1 (const int)
+0:34              1 (const int)
 0:35      Sequence
 0:35        move second child to first child ( temp 4-component vector of uint)
 0:35          'txval22' ( temp 4-component vector of uint)
@@ -145,12 +145,12 @@
 0:35            Construct combined texture-sampler ( temp usampler2D)
 0:35              'g_tTex2du4' ( uniform utexture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1 (const int)
-0:?               -1 (const int)
+0:35            Constant:
+0:35              0.500000
+0:35              0.600000
+0:35            Constant:
+0:35              1 (const int)
+0:35              -1 (const int)
 0:40      move second child to first child ( temp 4-component vector of float)
 0:40        Color: direct index for structure ( temp 4-component vector of float)
 0:40          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
index 54b693f..942bd92 100644
--- a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
@@ -13,13 +13,13 @@
 0:25            Construct combined texture-sampler ( temp sampler2DArray)
 0:25              'g_tTex2df4' ( uniform texture2DArray)
 0:25              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:25            Constant:
+0:25              0.100000
+0:25              0.200000
+0:25              0.300000
+0:25            Constant:
+0:25              1 (const int)
+0:25              0 (const int)
 0:26      Sequence
 0:26        move second child to first child ( temp 4-component vector of int)
 0:26          'txval21' ( temp 4-component vector of int)
@@ -27,13 +27,13 @@
 0:26            Construct combined texture-sampler ( temp isampler2DArray)
 0:26              'g_tTex2di4' ( uniform itexture2DArray)
 0:26              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.400000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
+0:26            Constant:
+0:26              0.300000
+0:26              0.400000
+0:26              0.400000
+0:26            Constant:
+0:26              1 (const int)
+0:26              1 (const int)
 0:27      Sequence
 0:27        move second child to first child ( temp 4-component vector of uint)
 0:27          'txval22' ( temp 4-component vector of uint)
@@ -41,13 +41,13 @@
 0:27            Construct combined texture-sampler ( temp usampler2DArray)
 0:27              'g_tTex2du4' ( uniform utexture2DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
-0:?             Constant:
-0:?               1 (const int)
-0:?               -1 (const int)
+0:27            Constant:
+0:27              0.500000
+0:27              0.600000
+0:27              0.700000
+0:27            Constant:
+0:27              1 (const int)
+0:27              -1 (const int)
 0:32      move second child to first child ( temp 4-component vector of float)
 0:32        Color: direct index for structure ( temp 4-component vector of float)
 0:32          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -116,13 +116,13 @@
 0:25            Construct combined texture-sampler ( temp sampler2DArray)
 0:25              'g_tTex2df4' ( uniform texture2DArray)
 0:25              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:25            Constant:
+0:25              0.100000
+0:25              0.200000
+0:25              0.300000
+0:25            Constant:
+0:25              1 (const int)
+0:25              0 (const int)
 0:26      Sequence
 0:26        move second child to first child ( temp 4-component vector of int)
 0:26          'txval21' ( temp 4-component vector of int)
@@ -130,13 +130,13 @@
 0:26            Construct combined texture-sampler ( temp isampler2DArray)
 0:26              'g_tTex2di4' ( uniform itexture2DArray)
 0:26              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.400000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
+0:26            Constant:
+0:26              0.300000
+0:26              0.400000
+0:26              0.400000
+0:26            Constant:
+0:26              1 (const int)
+0:26              1 (const int)
 0:27      Sequence
 0:27        move second child to first child ( temp 4-component vector of uint)
 0:27          'txval22' ( temp 4-component vector of uint)
@@ -144,13 +144,13 @@
 0:27            Construct combined texture-sampler ( temp usampler2DArray)
 0:27              'g_tTex2du4' ( uniform utexture2DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
-0:?             Constant:
-0:?               1 (const int)
-0:?               -1 (const int)
+0:27            Constant:
+0:27              0.500000
+0:27              0.600000
+0:27              0.700000
+0:27            Constant:
+0:27              1 (const int)
+0:27              -1 (const int)
 0:32      move second child to first child ( temp 4-component vector of float)
 0:32        Color: direct index for structure ( temp 4-component vector of float)
 0:32          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out
index 8f45abc..a858f15 100644
--- a/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out
@@ -19,9 +19,9 @@
 0:45                1 (const uint)
 0:45            Constant:
 0:45              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:45            Constant:
+0:45              1 (const int)
+0:45              0 (const int)
 0:46      Sequence
 0:46        move second child to first child ( temp 4-component vector of int)
 0:46          'txval011' ( temp 4-component vector of int)
@@ -35,9 +35,9 @@
 0:46                1 (const uint)
 0:46            Constant:
 0:46              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               -1 (const int)
+0:46            Constant:
+0:46              1 (const int)
+0:46              -1 (const int)
 0:47      Sequence
 0:47        move second child to first child ( temp 4-component vector of uint)
 0:47          'txval021' ( temp 4-component vector of uint)
@@ -51,9 +51,9 @@
 0:47                1 (const uint)
 0:47            Constant:
 0:47              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
+0:47            Constant:
+0:47              1 (const int)
+0:47              1 (const int)
 0:49      Sequence
 0:49        move second child to first child ( temp 4-component vector of float)
 0:49          'txval004' ( temp 4-component vector of float)
@@ -133,9 +133,9 @@
 0:53                1 (const uint)
 0:53            Constant:
 0:53              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:53            Constant:
+0:53              1 (const int)
+0:53              0 (const int)
 0:54      Sequence
 0:54        move second child to first child ( temp 4-component vector of int)
 0:54          'txval411' ( temp 4-component vector of int)
@@ -149,9 +149,9 @@
 0:54                1 (const uint)
 0:54            Constant:
 0:54              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               -1 (const int)
+0:54            Constant:
+0:54              1 (const int)
+0:54              -1 (const int)
 0:55      Sequence
 0:55        move second child to first child ( temp 4-component vector of uint)
 0:55          'txval421' ( temp 4-component vector of uint)
@@ -165,9 +165,9 @@
 0:55                1 (const uint)
 0:55            Constant:
 0:55              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
+0:55            Constant:
+0:55              1 (const int)
+0:55              1 (const int)
 0:110      move second child to first child ( temp 4-component vector of float)
 0:110        Color: direct index for structure ( temp 4-component vector of float)
 0:110          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -249,9 +249,9 @@
 0:45                1 (const uint)
 0:45            Constant:
 0:45              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:45            Constant:
+0:45              1 (const int)
+0:45              0 (const int)
 0:46      Sequence
 0:46        move second child to first child ( temp 4-component vector of int)
 0:46          'txval011' ( temp 4-component vector of int)
@@ -265,9 +265,9 @@
 0:46                1 (const uint)
 0:46            Constant:
 0:46              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               -1 (const int)
+0:46            Constant:
+0:46              1 (const int)
+0:46              -1 (const int)
 0:47      Sequence
 0:47        move second child to first child ( temp 4-component vector of uint)
 0:47          'txval021' ( temp 4-component vector of uint)
@@ -281,9 +281,9 @@
 0:47                1 (const uint)
 0:47            Constant:
 0:47              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
+0:47            Constant:
+0:47              1 (const int)
+0:47              1 (const int)
 0:49      Sequence
 0:49        move second child to first child ( temp 4-component vector of float)
 0:49          'txval004' ( temp 4-component vector of float)
@@ -363,9 +363,9 @@
 0:53                1 (const uint)
 0:53            Constant:
 0:53              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:53            Constant:
+0:53              1 (const int)
+0:53              0 (const int)
 0:54      Sequence
 0:54        move second child to first child ( temp 4-component vector of int)
 0:54          'txval411' ( temp 4-component vector of int)
@@ -379,9 +379,9 @@
 0:54                1 (const uint)
 0:54            Constant:
 0:54              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               -1 (const int)
+0:54            Constant:
+0:54              1 (const int)
+0:54              -1 (const int)
 0:55      Sequence
 0:55        move second child to first child ( temp 4-component vector of uint)
 0:55          'txval421' ( temp 4-component vector of uint)
@@ -395,9 +395,9 @@
 0:55                1 (const uint)
 0:55            Constant:
 0:55              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
+0:55            Constant:
+0:55              1 (const int)
+0:55              1 (const int)
 0:110      move second child to first child ( temp 4-component vector of float)
 0:110        Color: direct index for structure ( temp 4-component vector of float)
 0:110          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.getdimensions.dx10.vert.out b/Test/baseResults/hlsl.getdimensions.dx10.vert.out
index d681f7d..96a1cc1 100644
--- a/Test/baseResults/hlsl.getdimensions.dx10.vert.out
+++ b/Test/baseResults/hlsl.getdimensions.dx10.vert.out
@@ -33,11 +33,11 @@
 0:24          'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:24          Constant:
 0:24            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:24        Constant:
+0:24          0.000000
+0:24          0.000000
+0:24          0.000000
+0:24          0.000000
 0:26      Branch: Return with expression
 0:26        'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:11  Function Definition: main( ( temp void)
@@ -93,11 +93,11 @@
 0:24          'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:24          Constant:
 0:24            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:24        Constant:
+0:24          0.000000
+0:24          0.000000
+0:24          0.000000
+0:24          0.000000
 0:26      Branch: Return with expression
 0:26        'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:11  Function Definition: main( ( temp void)
diff --git a/Test/baseResults/hlsl.groupid.comp.out b/Test/baseResults/hlsl.groupid.comp.out
index 362f4b4..bf39d11 100644
--- a/Test/baseResults/hlsl.groupid.comp.out
+++ b/Test/baseResults/hlsl.groupid.comp.out
@@ -9,11 +9,11 @@
 0:8      Sequence
 0:8        move second child to first child ( temp 4-component vector of float)
 0:8          'storeTemp' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             1.000000
-0:?             0.000000
-0:?             0.000000
-0:?             1.000000
+0:8          Constant:
+0:8            1.000000
+0:8            0.000000
+0:8            0.000000
+0:8            1.000000
 0:8        imageStore ( temp void)
 0:8          'OutputTexture' (layout( rgba32f) uniform image2D)
 0:8          vector swizzle ( temp 2-component vector of uint)
@@ -52,11 +52,11 @@
 0:8      Sequence
 0:8        move second child to first child ( temp 4-component vector of float)
 0:8          'storeTemp' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             1.000000
-0:?             0.000000
-0:?             0.000000
-0:?             1.000000
+0:8          Constant:
+0:8            1.000000
+0:8            0.000000
+0:8            0.000000
+0:8            1.000000
 0:8        imageStore ( temp void)
 0:8          'OutputTexture' (layout( rgba32f) uniform image2D)
 0:8          vector swizzle ( temp 2-component vector of uint)
diff --git a/Test/baseResults/hlsl.gs-hs-mix.tesc.out b/Test/baseResults/hlsl.gs-hs-mix.tesc.out
index 72070ed..c9496ac 100644
--- a/Test/baseResults/hlsl.gs-hs-mix.tesc.out
+++ b/Test/baseResults/hlsl.gs-hs-mix.tesc.out
@@ -392,7 +392,7 @@
 0:95        move second child to first child ( temp 4-component vector of float)
 0:95          'Q0' ( temp 4-component vector of float)
 0:95          vector-times-matrix ( temp 4-component vector of float)
-0:?             Construct vec4 ( temp 4-component vector of float)
+0:95            Construct vec4 ( temp 4-component vector of float)
 0:95              'P0' ( temp 3-component vector of float)
 0:95              Constant:
 0:95                1.000000
@@ -404,7 +404,7 @@
 0:96        move second child to first child ( temp 4-component vector of float)
 0:96          'Q1' ( temp 4-component vector of float)
 0:96          vector-times-matrix ( temp 4-component vector of float)
-0:?             Construct vec4 ( temp 4-component vector of float)
+0:96            Construct vec4 ( temp 4-component vector of float)
 0:96              'P1' ( temp 3-component vector of float)
 0:96              Constant:
 0:96                1.000000
@@ -416,7 +416,7 @@
 0:97        move second child to first child ( temp 4-component vector of float)
 0:97          'Q2' ( temp 4-component vector of float)
 0:97          vector-times-matrix ( temp 4-component vector of float)
-0:?             Construct vec4 ( temp 4-component vector of float)
+0:97            Construct vec4 ( temp 4-component vector of float)
 0:97              'P2' ( temp 3-component vector of float)
 0:97              Constant:
 0:97                1.000000
@@ -887,7 +887,7 @@
 0:95        move second child to first child ( temp 4-component vector of float)
 0:95          'Q0' ( temp 4-component vector of float)
 0:95          vector-times-matrix ( temp 4-component vector of float)
-0:?             Construct vec4 ( temp 4-component vector of float)
+0:95            Construct vec4 ( temp 4-component vector of float)
 0:95              'P0' ( temp 3-component vector of float)
 0:95              Constant:
 0:95                1.000000
@@ -899,7 +899,7 @@
 0:96        move second child to first child ( temp 4-component vector of float)
 0:96          'Q1' ( temp 4-component vector of float)
 0:96          vector-times-matrix ( temp 4-component vector of float)
-0:?             Construct vec4 ( temp 4-component vector of float)
+0:96            Construct vec4 ( temp 4-component vector of float)
 0:96              'P1' ( temp 3-component vector of float)
 0:96              Constant:
 0:96                1.000000
@@ -911,7 +911,7 @@
 0:97        move second child to first child ( temp 4-component vector of float)
 0:97          'Q2' ( temp 4-component vector of float)
 0:97          vector-times-matrix ( temp 4-component vector of float)
-0:?             Construct vec4 ( temp 4-component vector of float)
+0:97            Construct vec4 ( temp 4-component vector of float)
 0:97              'P2' ( temp 3-component vector of float)
 0:97              Constant:
 0:97                1.000000
diff --git a/Test/baseResults/hlsl.identifier.sample.frag.out b/Test/baseResults/hlsl.identifier.sample.frag.out
index 7ba029d..e0a89aa 100644
--- a/Test/baseResults/hlsl.identifier.sample.frag.out
+++ b/Test/baseResults/hlsl.identifier.sample.frag.out
@@ -14,11 +14,11 @@
 0:15      Sequence
 0:15        move second child to first child ( temp 4-component vector of float)
 0:15          'sample' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             3.000000
-0:?             4.000000
-0:?             5.000000
-0:?             6.000000
+0:15          Constant:
+0:15            3.000000
+0:15            4.000000
+0:15            5.000000
+0:15            6.000000
 0:17      Branch: Return with expression
 0:17        vector swizzle ( temp 4-component vector of float)
 0:17          'sample' ( temp 4-component vector of float)
@@ -59,11 +59,11 @@
 0:15      Sequence
 0:15        move second child to first child ( temp 4-component vector of float)
 0:15          'sample' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             3.000000
-0:?             4.000000
-0:?             5.000000
-0:?             6.000000
+0:15          Constant:
+0:15            3.000000
+0:15            4.000000
+0:15            5.000000
+0:15            6.000000
 0:17      Branch: Return with expression
 0:17        vector swizzle ( temp 4-component vector of float)
 0:17          'sample' ( temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.imagefetch-subvec4.comp.out b/Test/baseResults/hlsl.imagefetch-subvec4.comp.out
index a12c59f..ff201eb 100644
--- a/Test/baseResults/hlsl.imagefetch-subvec4.comp.out
+++ b/Test/baseResults/hlsl.imagefetch-subvec4.comp.out
@@ -2,35 +2,204 @@
 Shader version: 500
 local_size = (8, 8, 8)
 0:? Sequence
-0:6  Function Definition: @main(vu3; ( temp void)
-0:6    Function Parameters: 
-0:6      'tid' ( in 3-component vector of uint)
+0:21  Function Definition: @main(vu3; ( temp void)
+0:21    Function Parameters: 
+0:21      'tid' ( in 3-component vector of uint)
 0:?     Sequence
-0:7      Sequence
-0:7        move second child to first child ( temp uint)
-0:7          'storeTemp' ( temp uint)
-0:7          Convert int to uint ( temp uint)
-0:7            textureFetch ( temp int)
-0:7              'IN' (layout( binding=0) uniform itexture3D)
-0:7              'tid' ( in 3-component vector of uint)
-0:7              Constant:
-0:7                0 (const int)
-0:7        imageStore ( temp void)
-0:7          'OUT' (layout( binding=1 r32ui) uniform uimage3D)
-0:7          'tid' ( in 3-component vector of uint)
-0:7          'storeTemp' ( temp uint)
-0:7        'storeTemp' ( temp uint)
-0:6  Function Definition: main( ( temp void)
-0:6    Function Parameters: 
+0:22      Sequence
+0:22        move second child to first child ( temp float)
+0:22          'f' ( temp float)
+0:22          Constant:
+0:22            0.000000
+0:23      add second child into first child ( temp float)
+0:23        'f' ( temp float)
+0:23        textureFetch ( temp float)
+0:23          'i1D' (layout( binding=0) uniform texture1D)
+0:23          direct index ( temp uint)
+0:23            'tid' ( in 3-component vector of uint)
+0:23            Constant:
+0:23              0 (const int)
+0:23          Constant:
+0:23            0 (const int)
+0:24      add second child into first child ( temp float)
+0:24        'f' ( temp float)
+0:24        textureFetch ( temp float)
+0:24          'i2D' (layout( binding=1) uniform texture2D)
+0:24          vector swizzle ( temp 2-component vector of uint)
+0:24            'tid' ( in 3-component vector of uint)
+0:24            Sequence
+0:24              Constant:
+0:24                0 (const int)
+0:24              Constant:
+0:24                1 (const int)
+0:24          Constant:
+0:24            0 (const int)
+0:25      add second child into first child ( temp float)
+0:25        'f' ( temp float)
+0:25        textureFetch ( temp float)
+0:25          'i3D' (layout( binding=2) uniform texture3D)
+0:25          'tid' ( in 3-component vector of uint)
+0:25          Constant:
+0:25            0 (const int)
+0:26      add second child into first child ( temp float)
+0:26        'f' ( temp float)
+0:26        textureFetch ( temp float)
+0:26          'i1DArray' (layout( binding=3) uniform texture1DArray)
+0:26          vector swizzle ( temp 2-component vector of uint)
+0:26            'tid' ( in 3-component vector of uint)
+0:26            Sequence
+0:26              Constant:
+0:26                0 (const int)
+0:26              Constant:
+0:26                1 (const int)
+0:26          Constant:
+0:26            0 (const int)
+0:27      add second child into first child ( temp float)
+0:27        'f' ( temp float)
+0:27        textureFetch ( temp float)
+0:27          'i2DArray' (layout( binding=4) uniform texture2DArray)
+0:27          'tid' ( in 3-component vector of uint)
+0:27          Constant:
+0:27            0 (const int)
+0:28      add second child into first child ( temp float)
+0:28        'f' ( temp float)
+0:28        Construct float ( temp float)
+0:?           textureFetch ( temp 4-component vector of float)
+0:28            'i2DMS' (layout( binding=5) uniform texture2DMS)
+0:28            Convert uint to int ( temp 2-component vector of int)
+0:28              vector swizzle ( temp 2-component vector of uint)
+0:28                'tid' ( in 3-component vector of uint)
+0:28                Sequence
+0:28                  Constant:
+0:28                    0 (const int)
+0:28                  Constant:
+0:28                    1 (const int)
+0:28            Constant:
+0:28              1 (const int)
+0:29      add second child into first child ( temp float)
+0:29        'f' ( temp float)
+0:29        Construct float ( temp float)
+0:?           textureFetch ( temp 4-component vector of float)
+0:29            'i2DMSArray' (layout( binding=6) uniform texture2DMSArray)
+0:29            Convert uint to int ( temp 3-component vector of int)
+0:29              'tid' ( in 3-component vector of uint)
+0:29            Constant:
+0:29              3 (const int)
+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:32      add second child into first child ( temp int)
+0:32        'i' ( temp int)
+0:32        textureFetch ( temp int)
+0:32          'ii1D' (layout( binding=7) uniform itexture1D)
+0:32          direct index ( temp uint)
+0:32            'tid' ( in 3-component vector of uint)
+0:32            Constant:
+0:32              0 (const int)
+0:32          Constant:
+0:32            0 (const int)
+0:33      add second child into first child ( temp int)
+0:33        'i' ( temp int)
+0:33        textureFetch ( temp int)
+0:33          'ii2D' (layout( binding=8) uniform itexture2D)
+0:33          vector swizzle ( temp 2-component vector of uint)
+0:33            'tid' ( in 3-component vector of uint)
+0:33            Sequence
+0:33              Constant:
+0:33                0 (const int)
+0:33              Constant:
+0:33                1 (const int)
+0:33          Constant:
+0:33            0 (const int)
+0:34      add second child into first child ( temp int)
+0:34        'i' ( temp int)
+0:34        textureFetch ( temp int)
+0:34          'ii3D' (layout( binding=9) uniform itexture3D)
+0:34          'tid' ( in 3-component vector of uint)
+0:34          Constant:
+0:34            0 (const int)
+0:35      add second child into first child ( temp int)
+0:35        'i' ( temp int)
+0:35        textureFetch ( temp int)
+0:35          'ii1DArray' (layout( binding=10) uniform itexture1DArray)
+0:35          vector swizzle ( temp 2-component vector of uint)
+0:35            'tid' ( in 3-component vector of uint)
+0:35            Sequence
+0:35              Constant:
+0:35                0 (const int)
+0:35              Constant:
+0:35                1 (const int)
+0:35          Constant:
+0:35            0 (const int)
+0:36      add second child into first child ( temp int)
+0:36        'i' ( temp int)
+0:36        textureFetch ( temp int)
+0:36          'ii2DArray' (layout( binding=11) uniform itexture2DArray)
+0:36          'tid' ( in 3-component vector of uint)
+0:36          Constant:
+0:36            0 (const int)
+0:37      add second child into first child ( temp int)
+0:37        'i' ( temp int)
+0:37        Construct int ( temp int)
+0:?           textureFetch ( temp 4-component vector of int)
+0:37            'ii2DMS' (layout( binding=12) uniform itexture2DMS)
+0:37            Convert uint to int ( temp 2-component vector of int)
+0:37              vector swizzle ( temp 2-component vector of uint)
+0:37                'tid' ( in 3-component vector of uint)
+0:37                Sequence
+0:37                  Constant:
+0:37                    0 (const int)
+0:37                  Constant:
+0:37                    1 (const int)
+0:37            Constant:
+0:37              1 (const int)
+0:38      add second child into first child ( temp int)
+0:38        'i' ( temp int)
+0:38        Construct int ( temp int)
+0:?           textureFetch ( temp 4-component vector of int)
+0:38            'ii2DMSArray' (layout( binding=13) uniform itexture2DMSArray)
+0:38            Convert uint to int ( temp 3-component vector of int)
+0:38              'tid' ( in 3-component vector of uint)
+0:38            Constant:
+0:38              3 (const int)
+0:40      Sequence
+0:40        move second child to first child ( temp float)
+0:40          'storeTemp' ( temp float)
+0:40          add ( temp float)
+0:40            'f' ( temp float)
+0:40            Convert int to float ( temp float)
+0:40              'i' ( temp int)
+0:40        imageStore ( temp void)
+0:40          'OUT' (layout( binding=0 r32f) uniform image3D)
+0:40          'tid' ( in 3-component vector of uint)
+0:40          'storeTemp' ( temp float)
+0:40        'storeTemp' ( temp float)
+0:21  Function Definition: main( ( temp void)
+0:21    Function Parameters: 
 0:?     Sequence
-0:6      move second child to first child ( temp 3-component vector of uint)
+0:21      move second child to first child ( temp 3-component vector of uint)
 0:?         'tid' ( temp 3-component vector of uint)
 0:?         'tid' ( in 3-component vector of uint GlobalInvocationID)
-0:6      Function Call: @main(vu3; ( temp void)
+0:21      Function Call: @main(vu3; ( temp void)
 0:?         'tid' ( temp 3-component vector of uint)
 0:?   Linker Objects
-0:?     'IN' (layout( binding=0) uniform itexture3D)
-0:?     'OUT' (layout( binding=1 r32ui) uniform uimage3D)
+0:?     'i1D' (layout( binding=0) uniform texture1D)
+0:?     'i2D' (layout( binding=1) uniform texture2D)
+0:?     'i3D' (layout( binding=2) uniform texture3D)
+0:?     'i1DArray' (layout( binding=3) uniform texture1DArray)
+0:?     'i2DArray' (layout( binding=4) uniform texture2DArray)
+0:?     'i2DMS' (layout( binding=5) uniform texture2DMS)
+0:?     'i2DMSArray' (layout( binding=6) uniform texture2DMSArray)
+0:?     'ii1D' (layout( binding=7) uniform itexture1D)
+0:?     'ii2D' (layout( binding=8) uniform itexture2D)
+0:?     'ii3D' (layout( binding=9) uniform itexture3D)
+0:?     'ii1DArray' (layout( binding=10) uniform itexture1DArray)
+0:?     'ii2DArray' (layout( binding=11) uniform itexture2DArray)
+0:?     'ii2DMS' (layout( binding=12) uniform itexture2DMS)
+0:?     'ii2DMSArray' (layout( binding=13) uniform itexture2DMSArray)
+0:?     'OUT' (layout( binding=0 r32f) uniform image3D)
 0:?     'tid' ( in 3-component vector of uint GlobalInvocationID)
 
 
@@ -40,103 +209,477 @@
 Shader version: 500
 local_size = (8, 8, 8)
 0:? Sequence
-0:6  Function Definition: @main(vu3; ( temp void)
-0:6    Function Parameters: 
-0:6      'tid' ( in 3-component vector of uint)
+0:21  Function Definition: @main(vu3; ( temp void)
+0:21    Function Parameters: 
+0:21      'tid' ( in 3-component vector of uint)
 0:?     Sequence
-0:7      Sequence
-0:7        move second child to first child ( temp uint)
-0:7          'storeTemp' ( temp uint)
-0:7          Convert int to uint ( temp uint)
-0:7            textureFetch ( temp int)
-0:7              'IN' (layout( binding=0) uniform itexture3D)
-0:7              'tid' ( in 3-component vector of uint)
-0:7              Constant:
-0:7                0 (const int)
-0:7        imageStore ( temp void)
-0:7          'OUT' (layout( binding=1 r32ui) uniform uimage3D)
-0:7          'tid' ( in 3-component vector of uint)
-0:7          'storeTemp' ( temp uint)
-0:7        'storeTemp' ( temp uint)
-0:6  Function Definition: main( ( temp void)
-0:6    Function Parameters: 
+0:22      Sequence
+0:22        move second child to first child ( temp float)
+0:22          'f' ( temp float)
+0:22          Constant:
+0:22            0.000000
+0:23      add second child into first child ( temp float)
+0:23        'f' ( temp float)
+0:23        textureFetch ( temp float)
+0:23          'i1D' (layout( binding=0) uniform texture1D)
+0:23          direct index ( temp uint)
+0:23            'tid' ( in 3-component vector of uint)
+0:23            Constant:
+0:23              0 (const int)
+0:23          Constant:
+0:23            0 (const int)
+0:24      add second child into first child ( temp float)
+0:24        'f' ( temp float)
+0:24        textureFetch ( temp float)
+0:24          'i2D' (layout( binding=1) uniform texture2D)
+0:24          vector swizzle ( temp 2-component vector of uint)
+0:24            'tid' ( in 3-component vector of uint)
+0:24            Sequence
+0:24              Constant:
+0:24                0 (const int)
+0:24              Constant:
+0:24                1 (const int)
+0:24          Constant:
+0:24            0 (const int)
+0:25      add second child into first child ( temp float)
+0:25        'f' ( temp float)
+0:25        textureFetch ( temp float)
+0:25          'i3D' (layout( binding=2) uniform texture3D)
+0:25          'tid' ( in 3-component vector of uint)
+0:25          Constant:
+0:25            0 (const int)
+0:26      add second child into first child ( temp float)
+0:26        'f' ( temp float)
+0:26        textureFetch ( temp float)
+0:26          'i1DArray' (layout( binding=3) uniform texture1DArray)
+0:26          vector swizzle ( temp 2-component vector of uint)
+0:26            'tid' ( in 3-component vector of uint)
+0:26            Sequence
+0:26              Constant:
+0:26                0 (const int)
+0:26              Constant:
+0:26                1 (const int)
+0:26          Constant:
+0:26            0 (const int)
+0:27      add second child into first child ( temp float)
+0:27        'f' ( temp float)
+0:27        textureFetch ( temp float)
+0:27          'i2DArray' (layout( binding=4) uniform texture2DArray)
+0:27          'tid' ( in 3-component vector of uint)
+0:27          Constant:
+0:27            0 (const int)
+0:28      add second child into first child ( temp float)
+0:28        'f' ( temp float)
+0:28        Construct float ( temp float)
+0:?           textureFetch ( temp 4-component vector of float)
+0:28            'i2DMS' (layout( binding=5) uniform texture2DMS)
+0:28            Convert uint to int ( temp 2-component vector of int)
+0:28              vector swizzle ( temp 2-component vector of uint)
+0:28                'tid' ( in 3-component vector of uint)
+0:28                Sequence
+0:28                  Constant:
+0:28                    0 (const int)
+0:28                  Constant:
+0:28                    1 (const int)
+0:28            Constant:
+0:28              1 (const int)
+0:29      add second child into first child ( temp float)
+0:29        'f' ( temp float)
+0:29        Construct float ( temp float)
+0:?           textureFetch ( temp 4-component vector of float)
+0:29            'i2DMSArray' (layout( binding=6) uniform texture2DMSArray)
+0:29            Convert uint to int ( temp 3-component vector of int)
+0:29              'tid' ( in 3-component vector of uint)
+0:29            Constant:
+0:29              3 (const int)
+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:32      add second child into first child ( temp int)
+0:32        'i' ( temp int)
+0:32        textureFetch ( temp int)
+0:32          'ii1D' (layout( binding=7) uniform itexture1D)
+0:32          direct index ( temp uint)
+0:32            'tid' ( in 3-component vector of uint)
+0:32            Constant:
+0:32              0 (const int)
+0:32          Constant:
+0:32            0 (const int)
+0:33      add second child into first child ( temp int)
+0:33        'i' ( temp int)
+0:33        textureFetch ( temp int)
+0:33          'ii2D' (layout( binding=8) uniform itexture2D)
+0:33          vector swizzle ( temp 2-component vector of uint)
+0:33            'tid' ( in 3-component vector of uint)
+0:33            Sequence
+0:33              Constant:
+0:33                0 (const int)
+0:33              Constant:
+0:33                1 (const int)
+0:33          Constant:
+0:33            0 (const int)
+0:34      add second child into first child ( temp int)
+0:34        'i' ( temp int)
+0:34        textureFetch ( temp int)
+0:34          'ii3D' (layout( binding=9) uniform itexture3D)
+0:34          'tid' ( in 3-component vector of uint)
+0:34          Constant:
+0:34            0 (const int)
+0:35      add second child into first child ( temp int)
+0:35        'i' ( temp int)
+0:35        textureFetch ( temp int)
+0:35          'ii1DArray' (layout( binding=10) uniform itexture1DArray)
+0:35          vector swizzle ( temp 2-component vector of uint)
+0:35            'tid' ( in 3-component vector of uint)
+0:35            Sequence
+0:35              Constant:
+0:35                0 (const int)
+0:35              Constant:
+0:35                1 (const int)
+0:35          Constant:
+0:35            0 (const int)
+0:36      add second child into first child ( temp int)
+0:36        'i' ( temp int)
+0:36        textureFetch ( temp int)
+0:36          'ii2DArray' (layout( binding=11) uniform itexture2DArray)
+0:36          'tid' ( in 3-component vector of uint)
+0:36          Constant:
+0:36            0 (const int)
+0:37      add second child into first child ( temp int)
+0:37        'i' ( temp int)
+0:37        Construct int ( temp int)
+0:?           textureFetch ( temp 4-component vector of int)
+0:37            'ii2DMS' (layout( binding=12) uniform itexture2DMS)
+0:37            Convert uint to int ( temp 2-component vector of int)
+0:37              vector swizzle ( temp 2-component vector of uint)
+0:37                'tid' ( in 3-component vector of uint)
+0:37                Sequence
+0:37                  Constant:
+0:37                    0 (const int)
+0:37                  Constant:
+0:37                    1 (const int)
+0:37            Constant:
+0:37              1 (const int)
+0:38      add second child into first child ( temp int)
+0:38        'i' ( temp int)
+0:38        Construct int ( temp int)
+0:?           textureFetch ( temp 4-component vector of int)
+0:38            'ii2DMSArray' (layout( binding=13) uniform itexture2DMSArray)
+0:38            Convert uint to int ( temp 3-component vector of int)
+0:38              'tid' ( in 3-component vector of uint)
+0:38            Constant:
+0:38              3 (const int)
+0:40      Sequence
+0:40        move second child to first child ( temp float)
+0:40          'storeTemp' ( temp float)
+0:40          add ( temp float)
+0:40            'f' ( temp float)
+0:40            Convert int to float ( temp float)
+0:40              'i' ( temp int)
+0:40        imageStore ( temp void)
+0:40          'OUT' (layout( binding=0 r32f) uniform image3D)
+0:40          'tid' ( in 3-component vector of uint)
+0:40          'storeTemp' ( temp float)
+0:40        'storeTemp' ( temp float)
+0:21  Function Definition: main( ( temp void)
+0:21    Function Parameters: 
 0:?     Sequence
-0:6      move second child to first child ( temp 3-component vector of uint)
+0:21      move second child to first child ( temp 3-component vector of uint)
 0:?         'tid' ( temp 3-component vector of uint)
 0:?         'tid' ( in 3-component vector of uint GlobalInvocationID)
-0:6      Function Call: @main(vu3; ( temp void)
+0:21      Function Call: @main(vu3; ( temp void)
 0:?         'tid' ( temp 3-component vector of uint)
 0:?   Linker Objects
-0:?     'IN' (layout( binding=0) uniform itexture3D)
-0:?     'OUT' (layout( binding=1 r32ui) uniform uimage3D)
+0:?     'i1D' (layout( binding=0) uniform texture1D)
+0:?     'i2D' (layout( binding=1) uniform texture2D)
+0:?     'i3D' (layout( binding=2) uniform texture3D)
+0:?     'i1DArray' (layout( binding=3) uniform texture1DArray)
+0:?     'i2DArray' (layout( binding=4) uniform texture2DArray)
+0:?     'i2DMS' (layout( binding=5) uniform texture2DMS)
+0:?     'i2DMSArray' (layout( binding=6) uniform texture2DMSArray)
+0:?     'ii1D' (layout( binding=7) uniform itexture1D)
+0:?     'ii2D' (layout( binding=8) uniform itexture2D)
+0:?     'ii3D' (layout( binding=9) uniform itexture3D)
+0:?     'ii1DArray' (layout( binding=10) uniform itexture1DArray)
+0:?     'ii2DArray' (layout( binding=11) uniform itexture2DArray)
+0:?     'ii2DMS' (layout( binding=12) uniform itexture2DMS)
+0:?     'ii2DMSArray' (layout( binding=13) uniform itexture2DMSArray)
+0:?     'OUT' (layout( binding=0 r32f) uniform image3D)
 0:?     'tid' ( in 3-component vector of uint GlobalInvocationID)
 
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 39
+// Id's are bound by 186
 
                               Capability Shader
+                              Capability Sampled1D
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint GLCompute 4  "main" 34
+                              EntryPoint GLCompute 4  "main" 181
                               ExecutionMode 4 LocalSize 8 8 8
                               Source HLSL 500
                               Name 4  "main"
                               Name 11  "@main(vu3;"
                               Name 10  "tid"
-                              Name 14  "storeTemp"
-                              Name 18  "IN"
-                              Name 28  "OUT"
-                              Name 32  "tid"
-                              Name 34  "tid"
-                              Name 36  "param"
-                              Decorate 18(IN) DescriptorSet 0
-                              Decorate 18(IN) Binding 0
-                              Decorate 28(OUT) DescriptorSet 0
-                              Decorate 28(OUT) Binding 1
-                              Decorate 34(tid) BuiltIn GlobalInvocationId
+                              Name 15  "f"
+                              Name 19  "i1D"
+                              Name 34  "i2D"
+                              Name 45  "i3D"
+                              Name 54  "i1DArray"
+                              Name 64  "i2DArray"
+                              Name 73  "i2DMS"
+                              Name 86  "i2DMSArray"
+                              Name 97  "i"
+                              Name 100  "ii1D"
+                              Name 111  "ii2D"
+                              Name 121  "ii3D"
+                              Name 130  "ii1DArray"
+                              Name 140  "ii2DArray"
+                              Name 149  "ii2DMS"
+                              Name 160  "ii2DMSArray"
+                              Name 168  "storeTemp"
+                              Name 175  "OUT"
+                              Name 179  "tid"
+                              Name 181  "tid"
+                              Name 183  "param"
+                              Decorate 19(i1D) DescriptorSet 0
+                              Decorate 19(i1D) Binding 0
+                              Decorate 34(i2D) DescriptorSet 0
+                              Decorate 34(i2D) Binding 1
+                              Decorate 45(i3D) DescriptorSet 0
+                              Decorate 45(i3D) Binding 2
+                              Decorate 54(i1DArray) DescriptorSet 0
+                              Decorate 54(i1DArray) Binding 3
+                              Decorate 64(i2DArray) DescriptorSet 0
+                              Decorate 64(i2DArray) Binding 4
+                              Decorate 73(i2DMS) DescriptorSet 0
+                              Decorate 73(i2DMS) Binding 5
+                              Decorate 86(i2DMSArray) DescriptorSet 0
+                              Decorate 86(i2DMSArray) Binding 6
+                              Decorate 100(ii1D) DescriptorSet 0
+                              Decorate 100(ii1D) Binding 7
+                              Decorate 111(ii2D) DescriptorSet 0
+                              Decorate 111(ii2D) Binding 8
+                              Decorate 121(ii3D) DescriptorSet 0
+                              Decorate 121(ii3D) Binding 9
+                              Decorate 130(ii1DArray) DescriptorSet 0
+                              Decorate 130(ii1DArray) Binding 10
+                              Decorate 140(ii2DArray) DescriptorSet 0
+                              Decorate 140(ii2DArray) Binding 11
+                              Decorate 149(ii2DMS) DescriptorSet 0
+                              Decorate 149(ii2DMS) Binding 12
+                              Decorate 160(ii2DMSArray) DescriptorSet 0
+                              Decorate 160(ii2DMSArray) Binding 13
+                              Decorate 175(OUT) DescriptorSet 0
+                              Decorate 175(OUT) Binding 0
+                              Decorate 181(tid) BuiltIn GlobalInvocationId
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
                7:             TypeVector 6(int) 3
                8:             TypePointer Function 7(ivec3)
                9:             TypeFunction 2 8(ptr)
-              13:             TypePointer Function 6(int)
-              15:             TypeInt 32 1
-              16:             TypeImage 15(int) 3D sampled format:Unknown
-              17:             TypePointer UniformConstant 16
-          18(IN):     17(ptr) Variable UniformConstant
-              21:     15(int) Constant 0
-              22:             TypeVector 15(int) 4
-              26:             TypeImage 6(int) 3D nonsampled format:R32ui
-              27:             TypePointer UniformConstant 26
-         28(OUT):     27(ptr) Variable UniformConstant
-              33:             TypePointer Input 7(ivec3)
-         34(tid):     33(ptr) Variable Input
+              13:             TypeFloat 32
+              14:             TypePointer Function 13(float)
+              16:   13(float) Constant 0
+              17:             TypeImage 13(float) 1D sampled format:Unknown
+              18:             TypePointer UniformConstant 17
+         19(i1D):     18(ptr) Variable UniformConstant
+              21:      6(int) Constant 0
+              22:             TypePointer Function 6(int)
+              25:             TypeInt 32 1
+              26:     25(int) Constant 0
+              27:             TypeVector 13(float) 4
+              32:             TypeImage 13(float) 2D sampled format:Unknown
+              33:             TypePointer UniformConstant 32
+         34(i2D):     33(ptr) Variable UniformConstant
+              36:             TypeVector 6(int) 2
+              43:             TypeImage 13(float) 3D sampled format:Unknown
+              44:             TypePointer UniformConstant 43
+         45(i3D):     44(ptr) Variable UniformConstant
+              52:             TypeImage 13(float) 1D array sampled format:Unknown
+              53:             TypePointer UniformConstant 52
+    54(i1DArray):     53(ptr) Variable UniformConstant
+              62:             TypeImage 13(float) 2D array sampled format:Unknown
+              63:             TypePointer UniformConstant 62
+    64(i2DArray):     63(ptr) Variable UniformConstant
+              71:             TypeImage 13(float) 2D multi-sampled sampled format:Unknown
+              72:             TypePointer UniformConstant 71
+       73(i2DMS):     72(ptr) Variable UniformConstant
+              77:             TypeVector 25(int) 2
+              79:     25(int) Constant 1
+              84:             TypeImage 13(float) 2D array multi-sampled sampled format:Unknown
+              85:             TypePointer UniformConstant 84
+  86(i2DMSArray):     85(ptr) Variable UniformConstant
+              89:             TypeVector 25(int) 3
+              91:     25(int) Constant 3
+              96:             TypePointer Function 25(int)
+              98:             TypeImage 25(int) 1D sampled format:Unknown
+              99:             TypePointer UniformConstant 98
+       100(ii1D):     99(ptr) Variable UniformConstant
+             104:             TypeVector 25(int) 4
+             109:             TypeImage 25(int) 2D sampled format:Unknown
+             110:             TypePointer UniformConstant 109
+       111(ii2D):    110(ptr) Variable UniformConstant
+             119:             TypeImage 25(int) 3D sampled format:Unknown
+             120:             TypePointer UniformConstant 119
+       121(ii3D):    120(ptr) Variable UniformConstant
+             128:             TypeImage 25(int) 1D array sampled format:Unknown
+             129:             TypePointer UniformConstant 128
+  130(ii1DArray):    129(ptr) Variable UniformConstant
+             138:             TypeImage 25(int) 2D array sampled format:Unknown
+             139:             TypePointer UniformConstant 138
+  140(ii2DArray):    139(ptr) Variable UniformConstant
+             147:             TypeImage 25(int) 2D multi-sampled sampled format:Unknown
+             148:             TypePointer UniformConstant 147
+     149(ii2DMS):    148(ptr) Variable UniformConstant
+             158:             TypeImage 25(int) 2D array multi-sampled sampled format:Unknown
+             159:             TypePointer UniformConstant 158
+160(ii2DMSArray):    159(ptr) Variable UniformConstant
+             173:             TypeImage 13(float) 3D nonsampled format:R32f
+             174:             TypePointer UniformConstant 173
+        175(OUT):    174(ptr) Variable UniformConstant
+             180:             TypePointer Input 7(ivec3)
+        181(tid):    180(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
-         32(tid):      8(ptr) Variable Function
-       36(param):      8(ptr) Variable Function
-              35:    7(ivec3) Load 34(tid)
-                              Store 32(tid) 35
-              37:    7(ivec3) Load 32(tid)
-                              Store 36(param) 37
-              38:           2 FunctionCall 11(@main(vu3;) 36(param)
+        179(tid):      8(ptr) Variable Function
+      183(param):      8(ptr) Variable Function
+             182:    7(ivec3) Load 181(tid)
+                              Store 179(tid) 182
+             184:    7(ivec3) Load 179(tid)
+                              Store 183(param) 184
+             185:           2 FunctionCall 11(@main(vu3;) 183(param)
                               Return
                               FunctionEnd
   11(@main(vu3;):           2 Function None 9
          10(tid):      8(ptr) FunctionParameter
               12:             Label
-   14(storeTemp):     13(ptr) Variable Function
-              19:          16 Load 18(IN)
-              20:    7(ivec3) Load 10(tid)
-              23:   22(ivec4) ImageFetch 19 20 Lod 21
-              24:     15(int) CompositeExtract 23 0
-              25:      6(int) Bitcast 24
-                              Store 14(storeTemp) 25
-              29:          26 Load 28(OUT)
-              30:    7(ivec3) Load 10(tid)
-              31:      6(int) Load 14(storeTemp)
-                              ImageWrite 29 30 31
+           15(f):     14(ptr) Variable Function
+           97(i):     96(ptr) Variable Function
+  168(storeTemp):     14(ptr) Variable Function
+                              Store 15(f) 16
+              20:          17 Load 19(i1D)
+              23:     22(ptr) AccessChain 10(tid) 21
+              24:      6(int) Load 23
+              28:   27(fvec4) ImageFetch 20 24 Lod 26
+              29:   13(float) CompositeExtract 28 0
+              30:   13(float) Load 15(f)
+              31:   13(float) FAdd 30 29
+                              Store 15(f) 31
+              35:          32 Load 34(i2D)
+              37:    7(ivec3) Load 10(tid)
+              38:   36(ivec2) VectorShuffle 37 37 0 1
+              39:   27(fvec4) ImageFetch 35 38 Lod 26
+              40:   13(float) CompositeExtract 39 0
+              41:   13(float) Load 15(f)
+              42:   13(float) FAdd 41 40
+                              Store 15(f) 42
+              46:          43 Load 45(i3D)
+              47:    7(ivec3) Load 10(tid)
+              48:   27(fvec4) ImageFetch 46 47 Lod 26
+              49:   13(float) CompositeExtract 48 0
+              50:   13(float) Load 15(f)
+              51:   13(float) FAdd 50 49
+                              Store 15(f) 51
+              55:          52 Load 54(i1DArray)
+              56:    7(ivec3) Load 10(tid)
+              57:   36(ivec2) VectorShuffle 56 56 0 1
+              58:   27(fvec4) ImageFetch 55 57 Lod 26
+              59:   13(float) CompositeExtract 58 0
+              60:   13(float) Load 15(f)
+              61:   13(float) FAdd 60 59
+                              Store 15(f) 61
+              65:          62 Load 64(i2DArray)
+              66:    7(ivec3) Load 10(tid)
+              67:   27(fvec4) ImageFetch 65 66 Lod 26
+              68:   13(float) CompositeExtract 67 0
+              69:   13(float) Load 15(f)
+              70:   13(float) FAdd 69 68
+                              Store 15(f) 70
+              74:          71 Load 73(i2DMS)
+              75:    7(ivec3) Load 10(tid)
+              76:   36(ivec2) VectorShuffle 75 75 0 1
+              78:   77(ivec2) Bitcast 76
+              80:   27(fvec4) ImageFetch 74 78 Sample 79
+              81:   13(float) CompositeExtract 80 0
+              82:   13(float) Load 15(f)
+              83:   13(float) FAdd 82 81
+                              Store 15(f) 83
+              87:          84 Load 86(i2DMSArray)
+              88:    7(ivec3) Load 10(tid)
+              90:   89(ivec3) Bitcast 88
+              92:   27(fvec4) ImageFetch 87 90 Sample 91
+              93:   13(float) CompositeExtract 92 0
+              94:   13(float) Load 15(f)
+              95:   13(float) FAdd 94 93
+                              Store 15(f) 95
+                              Store 97(i) 26
+             101:          98 Load 100(ii1D)
+             102:     22(ptr) AccessChain 10(tid) 21
+             103:      6(int) Load 102
+             105:  104(ivec4) ImageFetch 101 103 Lod 26
+             106:     25(int) CompositeExtract 105 0
+             107:     25(int) Load 97(i)
+             108:     25(int) IAdd 107 106
+                              Store 97(i) 108
+             112:         109 Load 111(ii2D)
+             113:    7(ivec3) Load 10(tid)
+             114:   36(ivec2) VectorShuffle 113 113 0 1
+             115:  104(ivec4) ImageFetch 112 114 Lod 26
+             116:     25(int) CompositeExtract 115 0
+             117:     25(int) Load 97(i)
+             118:     25(int) IAdd 117 116
+                              Store 97(i) 118
+             122:         119 Load 121(ii3D)
+             123:    7(ivec3) Load 10(tid)
+             124:  104(ivec4) ImageFetch 122 123 Lod 26
+             125:     25(int) CompositeExtract 124 0
+             126:     25(int) Load 97(i)
+             127:     25(int) IAdd 126 125
+                              Store 97(i) 127
+             131:         128 Load 130(ii1DArray)
+             132:    7(ivec3) Load 10(tid)
+             133:   36(ivec2) VectorShuffle 132 132 0 1
+             134:  104(ivec4) ImageFetch 131 133 Lod 26
+             135:     25(int) CompositeExtract 134 0
+             136:     25(int) Load 97(i)
+             137:     25(int) IAdd 136 135
+                              Store 97(i) 137
+             141:         138 Load 140(ii2DArray)
+             142:    7(ivec3) Load 10(tid)
+             143:  104(ivec4) ImageFetch 141 142 Lod 26
+             144:     25(int) CompositeExtract 143 0
+             145:     25(int) Load 97(i)
+             146:     25(int) IAdd 145 144
+                              Store 97(i) 146
+             150:         147 Load 149(ii2DMS)
+             151:    7(ivec3) Load 10(tid)
+             152:   36(ivec2) VectorShuffle 151 151 0 1
+             153:   77(ivec2) Bitcast 152
+             154:  104(ivec4) ImageFetch 150 153 Sample 79
+             155:     25(int) CompositeExtract 154 0
+             156:     25(int) Load 97(i)
+             157:     25(int) IAdd 156 155
+                              Store 97(i) 157
+             161:         158 Load 160(ii2DMSArray)
+             162:    7(ivec3) Load 10(tid)
+             163:   89(ivec3) Bitcast 162
+             164:  104(ivec4) ImageFetch 161 163 Sample 91
+             165:     25(int) CompositeExtract 164 0
+             166:     25(int) Load 97(i)
+             167:     25(int) IAdd 166 165
+                              Store 97(i) 167
+             169:   13(float) Load 15(f)
+             170:     25(int) Load 97(i)
+             171:   13(float) ConvertSToF 170
+             172:   13(float) FAdd 169 171
+                              Store 168(storeTemp) 172
+             176:         173 Load 175(OUT)
+             177:    7(ivec3) Load 10(tid)
+             178:   13(float) Load 168(storeTemp)
+                              ImageWrite 176 177 178
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.imageload-subvec4.comp.out b/Test/baseResults/hlsl.imageload-subvec4.comp.out
new file mode 100644
index 0000000..4d038a1
--- /dev/null
+++ b/Test/baseResults/hlsl.imageload-subvec4.comp.out
@@ -0,0 +1,477 @@
+hlsl.imageload-subvec4.comp
+Shader version: 500
+local_size = (8, 8, 8)
+0:? Sequence
+0:17  Function Definition: @main(vu3; ( temp void)
+0:17    Function Parameters: 
+0:17      'tid' ( in 3-component vector of uint)
+0:?     Sequence
+0:18      Sequence
+0:18        move second child to first child ( temp float)
+0:18          'f' ( temp float)
+0:18          Constant:
+0:18            0.000000
+0:19      add second child into first child ( temp float)
+0:19        'f' ( temp float)
+0:19        imageLoad ( temp float)
+0:19          'i1D' (layout( binding=0 r32f) uniform image1D)
+0:19          direct index ( temp uint)
+0:19            'tid' ( in 3-component vector of uint)
+0:19            Constant:
+0:19              0 (const int)
+0:20      add second child into first child ( temp float)
+0:20        'f' ( temp float)
+0:20        imageLoad ( temp float)
+0:20          'i2D' (layout( binding=1 r32f) uniform image2D)
+0:20          vector swizzle ( temp 2-component vector of uint)
+0:20            'tid' ( in 3-component vector of uint)
+0:20            Sequence
+0:20              Constant:
+0:20                0 (const int)
+0:20              Constant:
+0:20                1 (const int)
+0:21      add second child into first child ( temp float)
+0:21        'f' ( temp float)
+0:21        imageLoad ( temp float)
+0:21          'i3D' (layout( binding=2 r32f) uniform image3D)
+0:21          'tid' ( in 3-component vector of uint)
+0:22      add second child into first child ( temp float)
+0:22        'f' ( temp float)
+0:22        imageLoad ( temp float)
+0:22          'i1DArray' (layout( binding=3 r32f) uniform image1DArray)
+0:22          vector swizzle ( temp 2-component vector of uint)
+0:22            'tid' ( in 3-component vector of uint)
+0:22            Sequence
+0:22              Constant:
+0:22                0 (const int)
+0:22              Constant:
+0:22                1 (const int)
+0:23      add second child into first child ( temp float)
+0:23        'f' ( temp float)
+0:23        imageLoad ( temp float)
+0:23          'i2DArray' (layout( binding=4 r32f) uniform image2DArray)
+0:23          'tid' ( in 3-component vector of uint)
+0:25      Sequence
+0:25        move second child to first child ( temp int)
+0:25          'i' ( temp int)
+0:25          Constant:
+0:25            0 (const int)
+0:26      add second child into first child ( temp int)
+0:26        'i' ( temp int)
+0:26        imageLoad ( temp int)
+0:26          'ii1D' (layout( binding=5 r32i) uniform iimage1D)
+0:26          direct index ( temp uint)
+0:26            'tid' ( in 3-component vector of uint)
+0:26            Constant:
+0:26              0 (const int)
+0:27      add second child into first child ( temp int)
+0:27        'i' ( temp int)
+0:27        imageLoad ( temp int)
+0:27          'ii2D' (layout( binding=6 r32i) uniform iimage2D)
+0:27          vector swizzle ( temp 2-component vector of uint)
+0:27            'tid' ( in 3-component vector of uint)
+0:27            Sequence
+0:27              Constant:
+0:27                0 (const int)
+0:27              Constant:
+0:27                1 (const int)
+0:28      add second child into first child ( temp int)
+0:28        'i' ( temp int)
+0:28        imageLoad ( temp int)
+0:28          'ii3D' (layout( binding=7 r32i) uniform iimage3D)
+0:28          'tid' ( in 3-component vector of uint)
+0:29      add second child into first child ( temp int)
+0:29        'i' ( temp int)
+0:29        imageLoad ( temp int)
+0:29          'ii1DArray' (layout( binding=8 r32i) uniform iimage1DArray)
+0:29          vector swizzle ( temp 2-component vector of uint)
+0:29            'tid' ( in 3-component vector of uint)
+0:29            Sequence
+0:29              Constant:
+0:29                0 (const int)
+0:29              Constant:
+0:29                1 (const int)
+0:30      add second child into first child ( temp int)
+0:30        'i' ( temp int)
+0:30        imageLoad ( temp int)
+0:30          'ii2DArray' (layout( binding=9 r32i) uniform iimage2DArray)
+0:30          'tid' ( in 3-component vector of uint)
+0:32      Sequence
+0:32        move second child to first child ( temp float)
+0:32          'storeTemp' ( temp float)
+0:32          add ( temp float)
+0:32            'f' ( temp float)
+0:32            Convert int to float ( temp float)
+0:32              'i' ( temp int)
+0:32        imageStore ( temp void)
+0:32          'OUT' (layout( binding=10 r32f) uniform image3D)
+0:32          'tid' ( in 3-component vector of uint)
+0:32          'storeTemp' ( temp float)
+0:32        'storeTemp' ( temp float)
+0:17  Function Definition: main( ( temp void)
+0:17    Function Parameters: 
+0:?     Sequence
+0:17      move second child to first child ( temp 3-component vector of uint)
+0:?         'tid' ( temp 3-component vector of uint)
+0:?         'tid' ( in 3-component vector of uint GlobalInvocationID)
+0:17      Function Call: @main(vu3; ( temp void)
+0:?         'tid' ( temp 3-component vector of uint)
+0:?   Linker Objects
+0:?     'i1D' (layout( binding=0 r32f) uniform image1D)
+0:?     'i2D' (layout( binding=1 r32f) uniform image2D)
+0:?     'i3D' (layout( binding=2 r32f) uniform image3D)
+0:?     'i1DArray' (layout( binding=3 r32f) uniform image1DArray)
+0:?     'i2DArray' (layout( binding=4 r32f) uniform image2DArray)
+0:?     'ii1D' (layout( binding=5 r32i) uniform iimage1D)
+0:?     'ii2D' (layout( binding=6 r32i) uniform iimage2D)
+0:?     'ii3D' (layout( binding=7 r32i) uniform iimage3D)
+0:?     'ii1DArray' (layout( binding=8 r32i) uniform iimage1DArray)
+0:?     'ii2DArray' (layout( binding=9 r32i) uniform iimage2DArray)
+0:?     'OUT' (layout( binding=10 r32f) uniform image3D)
+0:?     'tid' ( in 3-component vector of uint GlobalInvocationID)
+
+
+Linked compute stage:
+
+
+Shader version: 500
+local_size = (8, 8, 8)
+0:? Sequence
+0:17  Function Definition: @main(vu3; ( temp void)
+0:17    Function Parameters: 
+0:17      'tid' ( in 3-component vector of uint)
+0:?     Sequence
+0:18      Sequence
+0:18        move second child to first child ( temp float)
+0:18          'f' ( temp float)
+0:18          Constant:
+0:18            0.000000
+0:19      add second child into first child ( temp float)
+0:19        'f' ( temp float)
+0:19        imageLoad ( temp float)
+0:19          'i1D' (layout( binding=0 r32f) uniform image1D)
+0:19          direct index ( temp uint)
+0:19            'tid' ( in 3-component vector of uint)
+0:19            Constant:
+0:19              0 (const int)
+0:20      add second child into first child ( temp float)
+0:20        'f' ( temp float)
+0:20        imageLoad ( temp float)
+0:20          'i2D' (layout( binding=1 r32f) uniform image2D)
+0:20          vector swizzle ( temp 2-component vector of uint)
+0:20            'tid' ( in 3-component vector of uint)
+0:20            Sequence
+0:20              Constant:
+0:20                0 (const int)
+0:20              Constant:
+0:20                1 (const int)
+0:21      add second child into first child ( temp float)
+0:21        'f' ( temp float)
+0:21        imageLoad ( temp float)
+0:21          'i3D' (layout( binding=2 r32f) uniform image3D)
+0:21          'tid' ( in 3-component vector of uint)
+0:22      add second child into first child ( temp float)
+0:22        'f' ( temp float)
+0:22        imageLoad ( temp float)
+0:22          'i1DArray' (layout( binding=3 r32f) uniform image1DArray)
+0:22          vector swizzle ( temp 2-component vector of uint)
+0:22            'tid' ( in 3-component vector of uint)
+0:22            Sequence
+0:22              Constant:
+0:22                0 (const int)
+0:22              Constant:
+0:22                1 (const int)
+0:23      add second child into first child ( temp float)
+0:23        'f' ( temp float)
+0:23        imageLoad ( temp float)
+0:23          'i2DArray' (layout( binding=4 r32f) uniform image2DArray)
+0:23          'tid' ( in 3-component vector of uint)
+0:25      Sequence
+0:25        move second child to first child ( temp int)
+0:25          'i' ( temp int)
+0:25          Constant:
+0:25            0 (const int)
+0:26      add second child into first child ( temp int)
+0:26        'i' ( temp int)
+0:26        imageLoad ( temp int)
+0:26          'ii1D' (layout( binding=5 r32i) uniform iimage1D)
+0:26          direct index ( temp uint)
+0:26            'tid' ( in 3-component vector of uint)
+0:26            Constant:
+0:26              0 (const int)
+0:27      add second child into first child ( temp int)
+0:27        'i' ( temp int)
+0:27        imageLoad ( temp int)
+0:27          'ii2D' (layout( binding=6 r32i) uniform iimage2D)
+0:27          vector swizzle ( temp 2-component vector of uint)
+0:27            'tid' ( in 3-component vector of uint)
+0:27            Sequence
+0:27              Constant:
+0:27                0 (const int)
+0:27              Constant:
+0:27                1 (const int)
+0:28      add second child into first child ( temp int)
+0:28        'i' ( temp int)
+0:28        imageLoad ( temp int)
+0:28          'ii3D' (layout( binding=7 r32i) uniform iimage3D)
+0:28          'tid' ( in 3-component vector of uint)
+0:29      add second child into first child ( temp int)
+0:29        'i' ( temp int)
+0:29        imageLoad ( temp int)
+0:29          'ii1DArray' (layout( binding=8 r32i) uniform iimage1DArray)
+0:29          vector swizzle ( temp 2-component vector of uint)
+0:29            'tid' ( in 3-component vector of uint)
+0:29            Sequence
+0:29              Constant:
+0:29                0 (const int)
+0:29              Constant:
+0:29                1 (const int)
+0:30      add second child into first child ( temp int)
+0:30        'i' ( temp int)
+0:30        imageLoad ( temp int)
+0:30          'ii2DArray' (layout( binding=9 r32i) uniform iimage2DArray)
+0:30          'tid' ( in 3-component vector of uint)
+0:32      Sequence
+0:32        move second child to first child ( temp float)
+0:32          'storeTemp' ( temp float)
+0:32          add ( temp float)
+0:32            'f' ( temp float)
+0:32            Convert int to float ( temp float)
+0:32              'i' ( temp int)
+0:32        imageStore ( temp void)
+0:32          'OUT' (layout( binding=10 r32f) uniform image3D)
+0:32          'tid' ( in 3-component vector of uint)
+0:32          'storeTemp' ( temp float)
+0:32        'storeTemp' ( temp float)
+0:17  Function Definition: main( ( temp void)
+0:17    Function Parameters: 
+0:?     Sequence
+0:17      move second child to first child ( temp 3-component vector of uint)
+0:?         'tid' ( temp 3-component vector of uint)
+0:?         'tid' ( in 3-component vector of uint GlobalInvocationID)
+0:17      Function Call: @main(vu3; ( temp void)
+0:?         'tid' ( temp 3-component vector of uint)
+0:?   Linker Objects
+0:?     'i1D' (layout( binding=0 r32f) uniform image1D)
+0:?     'i2D' (layout( binding=1 r32f) uniform image2D)
+0:?     'i3D' (layout( binding=2 r32f) uniform image3D)
+0:?     'i1DArray' (layout( binding=3 r32f) uniform image1DArray)
+0:?     'i2DArray' (layout( binding=4 r32f) uniform image2DArray)
+0:?     'ii1D' (layout( binding=5 r32i) uniform iimage1D)
+0:?     'ii2D' (layout( binding=6 r32i) uniform iimage2D)
+0:?     'ii3D' (layout( binding=7 r32i) uniform iimage3D)
+0:?     'ii1DArray' (layout( binding=8 r32i) uniform iimage1DArray)
+0:?     'ii2DArray' (layout( binding=9 r32i) uniform iimage2DArray)
+0:?     'OUT' (layout( binding=10 r32f) uniform image3D)
+0:?     'tid' ( in 3-component vector of uint GlobalInvocationID)
+
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 138
+
+                              Capability Shader
+                              Capability Image1D
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main" 133
+                              ExecutionMode 4 LocalSize 8 8 8
+                              Source HLSL 500
+                              Name 4  "main"
+                              Name 11  "@main(vu3;"
+                              Name 10  "tid"
+                              Name 15  "f"
+                              Name 19  "i1D"
+                              Name 32  "i2D"
+                              Name 43  "i3D"
+                              Name 52  "i1DArray"
+                              Name 62  "i2DArray"
+                              Name 71  "i"
+                              Name 75  "ii1D"
+                              Name 86  "ii2D"
+                              Name 96  "ii3D"
+                              Name 105  "ii1DArray"
+                              Name 115  "ii2DArray"
+                              Name 122  "storeTemp"
+                              Name 127  "OUT"
+                              Name 131  "tid"
+                              Name 133  "tid"
+                              Name 135  "param"
+                              Decorate 19(i1D) DescriptorSet 0
+                              Decorate 19(i1D) Binding 0
+                              Decorate 32(i2D) DescriptorSet 0
+                              Decorate 32(i2D) Binding 1
+                              Decorate 43(i3D) DescriptorSet 0
+                              Decorate 43(i3D) Binding 2
+                              Decorate 52(i1DArray) DescriptorSet 0
+                              Decorate 52(i1DArray) Binding 3
+                              Decorate 62(i2DArray) DescriptorSet 0
+                              Decorate 62(i2DArray) Binding 4
+                              Decorate 75(ii1D) DescriptorSet 0
+                              Decorate 75(ii1D) Binding 5
+                              Decorate 86(ii2D) DescriptorSet 0
+                              Decorate 86(ii2D) Binding 6
+                              Decorate 96(ii3D) DescriptorSet 0
+                              Decorate 96(ii3D) Binding 7
+                              Decorate 105(ii1DArray) DescriptorSet 0
+                              Decorate 105(ii1DArray) Binding 8
+                              Decorate 115(ii2DArray) DescriptorSet 0
+                              Decorate 115(ii2DArray) Binding 9
+                              Decorate 127(OUT) DescriptorSet 0
+                              Decorate 127(OUT) Binding 10
+                              Decorate 133(tid) BuiltIn GlobalInvocationId
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:             TypeVector 6(int) 3
+               8:             TypePointer Function 7(ivec3)
+               9:             TypeFunction 2 8(ptr)
+              13:             TypeFloat 32
+              14:             TypePointer Function 13(float)
+              16:   13(float) Constant 0
+              17:             TypeImage 13(float) 1D nonsampled format:R32f
+              18:             TypePointer UniformConstant 17
+         19(i1D):     18(ptr) Variable UniformConstant
+              21:      6(int) Constant 0
+              22:             TypePointer Function 6(int)
+              25:             TypeVector 13(float) 4
+              30:             TypeImage 13(float) 2D nonsampled format:R32f
+              31:             TypePointer UniformConstant 30
+         32(i2D):     31(ptr) Variable UniformConstant
+              34:             TypeVector 6(int) 2
+              41:             TypeImage 13(float) 3D nonsampled format:R32f
+              42:             TypePointer UniformConstant 41
+         43(i3D):     42(ptr) Variable UniformConstant
+              50:             TypeImage 13(float) 1D array nonsampled format:R32f
+              51:             TypePointer UniformConstant 50
+    52(i1DArray):     51(ptr) Variable UniformConstant
+              60:             TypeImage 13(float) 2D array nonsampled format:R32f
+              61:             TypePointer UniformConstant 60
+    62(i2DArray):     61(ptr) Variable UniformConstant
+              69:             TypeInt 32 1
+              70:             TypePointer Function 69(int)
+              72:     69(int) Constant 0
+              73:             TypeImage 69(int) 1D nonsampled format:R32i
+              74:             TypePointer UniformConstant 73
+        75(ii1D):     74(ptr) Variable UniformConstant
+              79:             TypeVector 69(int) 4
+              84:             TypeImage 69(int) 2D nonsampled format:R32i
+              85:             TypePointer UniformConstant 84
+        86(ii2D):     85(ptr) Variable UniformConstant
+              94:             TypeImage 69(int) 3D nonsampled format:R32i
+              95:             TypePointer UniformConstant 94
+        96(ii3D):     95(ptr) Variable UniformConstant
+             103:             TypeImage 69(int) 1D array nonsampled format:R32i
+             104:             TypePointer UniformConstant 103
+  105(ii1DArray):    104(ptr) Variable UniformConstant
+             113:             TypeImage 69(int) 2D array nonsampled format:R32i
+             114:             TypePointer UniformConstant 113
+  115(ii2DArray):    114(ptr) Variable UniformConstant
+        127(OUT):     42(ptr) Variable UniformConstant
+             132:             TypePointer Input 7(ivec3)
+        133(tid):    132(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+        131(tid):      8(ptr) Variable Function
+      135(param):      8(ptr) Variable Function
+             134:    7(ivec3) Load 133(tid)
+                              Store 131(tid) 134
+             136:    7(ivec3) Load 131(tid)
+                              Store 135(param) 136
+             137:           2 FunctionCall 11(@main(vu3;) 135(param)
+                              Return
+                              FunctionEnd
+  11(@main(vu3;):           2 Function None 9
+         10(tid):      8(ptr) FunctionParameter
+              12:             Label
+           15(f):     14(ptr) Variable Function
+           71(i):     70(ptr) Variable Function
+  122(storeTemp):     14(ptr) Variable Function
+                              Store 15(f) 16
+              20:          17 Load 19(i1D)
+              23:     22(ptr) AccessChain 10(tid) 21
+              24:      6(int) Load 23
+              26:   25(fvec4) ImageRead 20 24
+              27:   13(float) CompositeExtract 26 0
+              28:   13(float) Load 15(f)
+              29:   13(float) FAdd 28 27
+                              Store 15(f) 29
+              33:          30 Load 32(i2D)
+              35:    7(ivec3) Load 10(tid)
+              36:   34(ivec2) VectorShuffle 35 35 0 1
+              37:   25(fvec4) ImageRead 33 36
+              38:   13(float) CompositeExtract 37 0
+              39:   13(float) Load 15(f)
+              40:   13(float) FAdd 39 38
+                              Store 15(f) 40
+              44:          41 Load 43(i3D)
+              45:    7(ivec3) Load 10(tid)
+              46:   25(fvec4) ImageRead 44 45
+              47:   13(float) CompositeExtract 46 0
+              48:   13(float) Load 15(f)
+              49:   13(float) FAdd 48 47
+                              Store 15(f) 49
+              53:          50 Load 52(i1DArray)
+              54:    7(ivec3) Load 10(tid)
+              55:   34(ivec2) VectorShuffle 54 54 0 1
+              56:   25(fvec4) ImageRead 53 55
+              57:   13(float) CompositeExtract 56 0
+              58:   13(float) Load 15(f)
+              59:   13(float) FAdd 58 57
+                              Store 15(f) 59
+              63:          60 Load 62(i2DArray)
+              64:    7(ivec3) Load 10(tid)
+              65:   25(fvec4) ImageRead 63 64
+              66:   13(float) CompositeExtract 65 0
+              67:   13(float) Load 15(f)
+              68:   13(float) FAdd 67 66
+                              Store 15(f) 68
+                              Store 71(i) 72
+              76:          73 Load 75(ii1D)
+              77:     22(ptr) AccessChain 10(tid) 21
+              78:      6(int) Load 77
+              80:   79(ivec4) ImageRead 76 78
+              81:     69(int) CompositeExtract 80 0
+              82:     69(int) Load 71(i)
+              83:     69(int) IAdd 82 81
+                              Store 71(i) 83
+              87:          84 Load 86(ii2D)
+              88:    7(ivec3) Load 10(tid)
+              89:   34(ivec2) VectorShuffle 88 88 0 1
+              90:   79(ivec4) ImageRead 87 89
+              91:     69(int) CompositeExtract 90 0
+              92:     69(int) Load 71(i)
+              93:     69(int) IAdd 92 91
+                              Store 71(i) 93
+              97:          94 Load 96(ii3D)
+              98:    7(ivec3) Load 10(tid)
+              99:   79(ivec4) ImageRead 97 98
+             100:     69(int) CompositeExtract 99 0
+             101:     69(int) Load 71(i)
+             102:     69(int) IAdd 101 100
+                              Store 71(i) 102
+             106:         103 Load 105(ii1DArray)
+             107:    7(ivec3) Load 10(tid)
+             108:   34(ivec2) VectorShuffle 107 107 0 1
+             109:   79(ivec4) ImageRead 106 108
+             110:     69(int) CompositeExtract 109 0
+             111:     69(int) Load 71(i)
+             112:     69(int) IAdd 111 110
+                              Store 71(i) 112
+             116:         113 Load 115(ii2DArray)
+             117:    7(ivec3) Load 10(tid)
+             118:   79(ivec4) ImageRead 116 117
+             119:     69(int) CompositeExtract 118 0
+             120:     69(int) Load 71(i)
+             121:     69(int) IAdd 120 119
+                              Store 71(i) 121
+             123:   13(float) Load 15(f)
+             124:     69(int) Load 71(i)
+             125:   13(float) ConvertSToF 124
+             126:   13(float) FAdd 123 125
+                              Store 122(storeTemp) 126
+             128:          41 Load 127(OUT)
+             129:    7(ivec3) Load 10(tid)
+             130:   13(float) Load 122(storeTemp)
+                              ImageWrite 128 129 130
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.implicitBool.frag.out b/Test/baseResults/hlsl.implicitBool.frag.out
index 98e3dc0..dd93b7f 100644
--- a/Test/baseResults/hlsl.implicitBool.frag.out
+++ b/Test/baseResults/hlsl.implicitBool.frag.out
@@ -8,11 +8,11 @@
 0:8      Sequence
 0:8        move second child to first child ( temp 4-component vector of float)
 0:8          'a' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             2.000000
-0:?             2.000000
-0:?             2.000000
-0:?             2.000000
+0:8          Constant:
+0:8            2.000000
+0:8            2.000000
+0:8            2.000000
+0:8            2.000000
 0:9      Test condition and select ( temp void)
 0:9        Condition
 0:9        Convert int to bool ( temp bool)
@@ -176,11 +176,11 @@
 0:8      Sequence
 0:8        move second child to first child ( temp 4-component vector of float)
 0:8          'a' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             2.000000
-0:?             2.000000
-0:?             2.000000
-0:?             2.000000
+0:8          Constant:
+0:8            2.000000
+0:8            2.000000
+0:8            2.000000
+0:8            2.000000
 0:9      Test condition and select ( temp void)
 0:9        Condition
 0:9        Convert int to bool ( temp bool)
diff --git a/Test/baseResults/hlsl.include.vert.d.out b/Test/baseResults/hlsl.include.vert.d.out
new file mode 100644
index 0000000..f2e54ff
--- /dev/null
+++ b/Test/baseResults/hlsl.include.vert.d.out
@@ -0,0 +1 @@
+vert.spv: ../Test/hlsl.include.vert ../Test/./inc1/bar.h ../Test/./inc1/foo.h ../Test/bar.h ../Test/inc2/bar.h ../Test/inc2/foo.h ../Test/parent.h
diff --git a/Test/baseResults/hlsl.includeNegative.vert.out b/Test/baseResults/hlsl.includeNegative.vert.out
index 5faa383..67bf41c 100644
--- a/Test/baseResults/hlsl.includeNegative.vert.out
+++ b/Test/baseResults/hlsl.includeNegative.vert.out
@@ -3,8 +3,9 @@
 ERROR: ./inc2/../foo.h:1: '#error' : should not be included  
 ERROR: ./parentBad:3: '#error' : bad parent  
 ERROR: hlsl.includeNegative.vert:7: '#error' : in main  
+ERROR: hlsl.includeNegative.vert:6: 'declaration' : Expected 
 hlsl.includeNegative.vert(8): error at column 0, HLSL parsing failed.
-ERROR: 5 compilation errors.  No code generated.
+ERROR: 6 compilation errors.  No code generated.
 
 
 SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/hlsl.init.frag.out b/Test/baseResults/hlsl.init.frag.out
index 97caf9a..f604f0a 100644
--- a/Test/baseResults/hlsl.init.frag.out
+++ b/Test/baseResults/hlsl.init.frag.out
@@ -8,18 +8,18 @@
 0:1  Sequence
 0:1    move second child to first child ( temp 4-component vector of float)
 0:1      'a1' ( global 4-component vector of float)
-0:?       Constant:
-0:?         1.000000
-0:?         0.500000
-0:?         0.000000
-0:?         1.000000
+0:1      Constant:
+0:1        1.000000
+0:1        0.500000
+0:1        0.000000
+0:1        1.000000
 0:1    move second child to first child ( temp 4-component vector of float)
 0:1      'b1' ( global 4-component vector of float)
-0:?       Constant:
-0:?         2.000000
-0:?         2.500000
-0:?         2.100000
-0:?         2.200000
+0:1      Constant:
+0:1        2.000000
+0:1        2.500000
+0:1        2.100000
+0:1        2.200000
 0:2  Sequence
 0:2    move second child to first child ( temp 4-component vector of float)
 0:2      'a1i' ( global 4-component vector of float)
@@ -88,11 +88,11 @@
 0:22      Sequence
 0:22        move second child to first child ( temp 4-component vector of float)
 0:22          'a2' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             0.200000
-0:?             0.300000
-0:?             0.400000
-0:?             0.500000
+0:22          Constant:
+0:22            0.200000
+0:22            0.300000
+0:22            0.400000
+0:22            0.500000
 0:32      Sequence
 0:32        move second child to first child ( temp structure{ temp int j,  temp float g,  temp structure{ temp float f,  temp int i} s1})
 0:32          's2i' ( temp structure{ temp int j,  temp float g,  temp structure{ temp float f,  temp int i} s1})
@@ -108,11 +108,11 @@
 0:32                12 (const int)
 0:32        move second child to first child ( temp structure{ temp int j,  temp float g,  temp structure{ temp float f,  temp int i} s1})
 0:32          's2' ( temp structure{ temp int j,  temp float g,  temp structure{ temp float f,  temp int i} s1})
-0:?           Construct structure ( temp structure{ temp int j,  temp float g,  temp structure{ temp float f,  temp int i} s1})
+0:32          Construct structure ( temp structure{ temp int j,  temp float g,  temp structure{ temp float f,  temp int i} s1})
 0:32            Constant:
 0:32              9 (const int)
 0:32            'a5' ( global float)
-0:?             Construct structure ( temp structure{ temp float f,  temp int i})
+0:32            Construct structure ( temp structure{ temp float f,  temp int i})
 0:32              Comma ( temp float)
 0:32                'a3' ( global float)
 0:32                'a4' ( global float)
@@ -174,18 +174,18 @@
 0:1  Sequence
 0:1    move second child to first child ( temp 4-component vector of float)
 0:1      'a1' ( global 4-component vector of float)
-0:?       Constant:
-0:?         1.000000
-0:?         0.500000
-0:?         0.000000
-0:?         1.000000
+0:1      Constant:
+0:1        1.000000
+0:1        0.500000
+0:1        0.000000
+0:1        1.000000
 0:1    move second child to first child ( temp 4-component vector of float)
 0:1      'b1' ( global 4-component vector of float)
-0:?       Constant:
-0:?         2.000000
-0:?         2.500000
-0:?         2.100000
-0:?         2.200000
+0:1      Constant:
+0:1        2.000000
+0:1        2.500000
+0:1        2.100000
+0:1        2.200000
 0:2  Sequence
 0:2    move second child to first child ( temp 4-component vector of float)
 0:2      'a1i' ( global 4-component vector of float)
@@ -254,11 +254,11 @@
 0:22      Sequence
 0:22        move second child to first child ( temp 4-component vector of float)
 0:22          'a2' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             0.200000
-0:?             0.300000
-0:?             0.400000
-0:?             0.500000
+0:22          Constant:
+0:22            0.200000
+0:22            0.300000
+0:22            0.400000
+0:22            0.500000
 0:32      Sequence
 0:32        move second child to first child ( temp structure{ temp int j,  temp float g,  temp structure{ temp float f,  temp int i} s1})
 0:32          's2i' ( temp structure{ temp int j,  temp float g,  temp structure{ temp float f,  temp int i} s1})
@@ -274,11 +274,11 @@
 0:32                12 (const int)
 0:32        move second child to first child ( temp structure{ temp int j,  temp float g,  temp structure{ temp float f,  temp int i} s1})
 0:32          's2' ( temp structure{ temp int j,  temp float g,  temp structure{ temp float f,  temp int i} s1})
-0:?           Construct structure ( temp structure{ temp int j,  temp float g,  temp structure{ temp float f,  temp int i} s1})
+0:32          Construct structure ( temp structure{ temp int j,  temp float g,  temp structure{ temp float f,  temp int i} s1})
 0:32            Constant:
 0:32              9 (const int)
 0:32            'a5' ( global float)
-0:?             Construct structure ( temp structure{ temp float f,  temp int i})
+0:32            Construct structure ( temp structure{ temp float f,  temp int i})
 0:32              Comma ( temp float)
 0:32                'a3' ( global float)
 0:32                'a4' ( global float)
diff --git a/Test/baseResults/hlsl.init2.frag.out b/Test/baseResults/hlsl.init2.frag.out
index 9654e2b..5039333 100644
--- a/Test/baseResults/hlsl.init2.frag.out
+++ b/Test/baseResults/hlsl.init2.frag.out
@@ -41,73 +41,73 @@
 0:26          'a' ( const (read only) 8-element array of 3-component vector of float)
 0:26          Construct vec3 ( temp 8-element array of 3-component vector of float)
 0:27            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.577350
-0:?                 0.577350
-0:?                 0.577350
+0:27              Constant:
+0:27                0.577350
+0:27                0.577350
+0:27                0.577350
 0:27              add second child into first child ( temp float)
 0:27                'n' ( temp float)
 0:27                Constant:
 0:27                  1.000000
 0:28            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 -0.577350
-0:?                 -0.577350
-0:?                 -0.577350
+0:28              Constant:
+0:28                -0.577350
+0:28                -0.577350
+0:28                -0.577350
 0:28              add second child into first child ( temp float)
 0:28                'n' ( temp float)
 0:28                Constant:
 0:28                  1.000000
 0:29            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 -0.577350
-0:?                 -0.577350
-0:?                 0.577350
+0:29              Constant:
+0:29                -0.577350
+0:29                -0.577350
+0:29                0.577350
 0:29              add second child into first child ( temp float)
 0:29                'n' ( temp float)
 0:29                Constant:
 0:29                  1.000000
 0:30            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 -0.577350
-0:?                 0.577350
-0:?                 -0.577350
+0:30              Constant:
+0:30                -0.577350
+0:30                0.577350
+0:30                -0.577350
 0:30              add second child into first child ( temp float)
 0:30                'n' ( temp float)
 0:30                Constant:
 0:30                  1.000000
 0:31            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 -0.577350
-0:?                 0.577350
-0:?                 0.577350
+0:31              Constant:
+0:31                -0.577350
+0:31                0.577350
+0:31                0.577350
 0:31              add second child into first child ( temp float)
 0:31                'n' ( temp float)
 0:31                Constant:
 0:31                  1.000000
 0:32            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.577350
-0:?                 -0.577350
-0:?                 -0.577350
+0:32              Constant:
+0:32                0.577350
+0:32                -0.577350
+0:32                -0.577350
 0:32              add second child into first child ( temp float)
 0:32                'n' ( temp float)
 0:32                Constant:
 0:32                  1.000000
 0:33            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.577350
-0:?                 -0.577350
-0:?                 0.577350
+0:33              Constant:
+0:33                0.577350
+0:33                -0.577350
+0:33                0.577350
 0:33              add second child into first child ( temp float)
 0:33                'n' ( temp float)
 0:33                Constant:
 0:33                  1.000000
 0:34            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.577350
-0:?                 0.577350
-0:?                 -0.577350
+0:34              Constant:
+0:34                0.577350
+0:34                0.577350
+0:34                -0.577350
 0:34              add second child into first child ( temp float)
 0:34                'n' ( temp float)
 0:34                Constant:
@@ -117,10 +117,10 @@
 0:36          'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a})
 0:36          Construct structure ( temp structure{ temp 3-component vector of float a})
 0:36            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 -0.577350
-0:?                 0.577350
-0:?                 0.577350
+0:36              Constant:
+0:36                -0.577350
+0:36                0.577350
+0:36                0.577350
 0:36              add second child into first child ( temp float)
 0:36                'n' ( temp float)
 0:36                Constant:
@@ -130,19 +130,19 @@
 0:38          'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a,  temp 3-component vector of float b})
 0:38          Construct structure ( temp structure{ temp 3-component vector of float a,  temp 3-component vector of float b})
 0:38            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 -0.577350
-0:?                 0.577350
-0:?                 0.577350
+0:38              Constant:
+0:38                -0.577350
+0:38                0.577350
+0:38                0.577350
 0:38              add second child into first child ( temp float)
 0:38                'n' ( temp float)
 0:38                Constant:
 0:38                  1.000000
 0:39            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 -0.577350
-0:?                 0.577350
-0:?                 0.577350
+0:39              Constant:
+0:39                -0.577350
+0:39                0.577350
+0:39                0.577350
 0:39              add second child into first child ( temp float)
 0:39                'n' ( temp float)
 0:39                Constant:
@@ -222,73 +222,73 @@
 0:26          'a' ( const (read only) 8-element array of 3-component vector of float)
 0:26          Construct vec3 ( temp 8-element array of 3-component vector of float)
 0:27            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.577350
-0:?                 0.577350
-0:?                 0.577350
+0:27              Constant:
+0:27                0.577350
+0:27                0.577350
+0:27                0.577350
 0:27              add second child into first child ( temp float)
 0:27                'n' ( temp float)
 0:27                Constant:
 0:27                  1.000000
 0:28            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 -0.577350
-0:?                 -0.577350
-0:?                 -0.577350
+0:28              Constant:
+0:28                -0.577350
+0:28                -0.577350
+0:28                -0.577350
 0:28              add second child into first child ( temp float)
 0:28                'n' ( temp float)
 0:28                Constant:
 0:28                  1.000000
 0:29            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 -0.577350
-0:?                 -0.577350
-0:?                 0.577350
+0:29              Constant:
+0:29                -0.577350
+0:29                -0.577350
+0:29                0.577350
 0:29              add second child into first child ( temp float)
 0:29                'n' ( temp float)
 0:29                Constant:
 0:29                  1.000000
 0:30            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 -0.577350
-0:?                 0.577350
-0:?                 -0.577350
+0:30              Constant:
+0:30                -0.577350
+0:30                0.577350
+0:30                -0.577350
 0:30              add second child into first child ( temp float)
 0:30                'n' ( temp float)
 0:30                Constant:
 0:30                  1.000000
 0:31            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 -0.577350
-0:?                 0.577350
-0:?                 0.577350
+0:31              Constant:
+0:31                -0.577350
+0:31                0.577350
+0:31                0.577350
 0:31              add second child into first child ( temp float)
 0:31                'n' ( temp float)
 0:31                Constant:
 0:31                  1.000000
 0:32            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.577350
-0:?                 -0.577350
-0:?                 -0.577350
+0:32              Constant:
+0:32                0.577350
+0:32                -0.577350
+0:32                -0.577350
 0:32              add second child into first child ( temp float)
 0:32                'n' ( temp float)
 0:32                Constant:
 0:32                  1.000000
 0:33            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.577350
-0:?                 -0.577350
-0:?                 0.577350
+0:33              Constant:
+0:33                0.577350
+0:33                -0.577350
+0:33                0.577350
 0:33              add second child into first child ( temp float)
 0:33                'n' ( temp float)
 0:33                Constant:
 0:33                  1.000000
 0:34            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.577350
-0:?                 0.577350
-0:?                 -0.577350
+0:34              Constant:
+0:34                0.577350
+0:34                0.577350
+0:34                -0.577350
 0:34              add second child into first child ( temp float)
 0:34                'n' ( temp float)
 0:34                Constant:
@@ -298,10 +298,10 @@
 0:36          'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a})
 0:36          Construct structure ( temp structure{ temp 3-component vector of float a})
 0:36            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 -0.577350
-0:?                 0.577350
-0:?                 0.577350
+0:36              Constant:
+0:36                -0.577350
+0:36                0.577350
+0:36                0.577350
 0:36              add second child into first child ( temp float)
 0:36                'n' ( temp float)
 0:36                Constant:
@@ -311,19 +311,19 @@
 0:38          'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a,  temp 3-component vector of float b})
 0:38          Construct structure ( temp structure{ temp 3-component vector of float a,  temp 3-component vector of float b})
 0:38            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 -0.577350
-0:?                 0.577350
-0:?                 0.577350
+0:38              Constant:
+0:38                -0.577350
+0:38                0.577350
+0:38                0.577350
 0:38              add second child into first child ( temp float)
 0:38                'n' ( temp float)
 0:38                Constant:
 0:38                  1.000000
 0:39            vector-scale ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 -0.577350
-0:?                 0.577350
-0:?                 0.577350
+0:39              Constant:
+0:39                -0.577350
+0:39                0.577350
+0:39                0.577350
 0:39              add second child into first child ( temp float)
 0:39                'n' ( temp float)
 0:39                Constant:
diff --git a/Test/baseResults/hlsl.inoutquals.frag.out b/Test/baseResults/hlsl.inoutquals.frag.out
index 57baeef..25186cb 100644
--- a/Test/baseResults/hlsl.inoutquals.frag.out
+++ b/Test/baseResults/hlsl.inoutquals.frag.out
@@ -51,7 +51,7 @@
 0:22          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
 0:22          Constant:
 0:22            0 (const int)
-0:?         Construct vec4 ( temp 4-component vector of float)
+0:22        Construct vec4 ( temp 4-component vector of float)
 0:22          'x' ( temp float)
 0:22          'y' ( temp float)
 0:22          'z' ( temp float)
@@ -160,7 +160,7 @@
 0:22          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
 0:22          Constant:
 0:22            0 (const int)
-0:?         Construct vec4 ( temp 4-component vector of float)
+0:22        Construct vec4 ( temp 4-component vector of float)
 0:22          'x' ( temp float)
 0:22          'y' ( temp float)
 0:22          'z' ( temp float)
diff --git a/Test/baseResults/hlsl.intrinsic.frexp.frag.out b/Test/baseResults/hlsl.intrinsic.frexp.frag.out
index 6067ad0..1595a60 100644
--- a/Test/baseResults/hlsl.intrinsic.frexp.frag.out
+++ b/Test/baseResults/hlsl.intrinsic.frexp.frag.out
@@ -28,9 +28,9 @@
 0:10            'inF0' ( in 2-component vector of float)
 0:10            'inF1' ( in 2-component vector of float)
 0:11      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
+0:11        Constant:
+0:11          1.000000
+0:11          2.000000
 0:15  Function Definition: PixelShaderFunction3(vf3;vf3; ( temp 3-component vector of float)
 0:15    Function Parameters: 
 0:15      'inF0' ( in 3-component vector of float)
@@ -43,10 +43,10 @@
 0:16            'inF0' ( in 3-component vector of float)
 0:16            'inF1' ( in 3-component vector of float)
 0:17      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
+0:17        Constant:
+0:17          1.000000
+0:17          2.000000
+0:17          3.000000
 0:21  Function Definition: PixelShaderFunction(vf4;vf4; ( temp 4-component vector of float)
 0:21    Function Parameters: 
 0:21      'inF0' ( in 4-component vector of float)
@@ -59,11 +59,11 @@
 0:22            'inF0' ( in 4-component vector of float)
 0:22            'inF1' ( in 4-component vector of float)
 0:23      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:23        Constant:
+0:23          1.000000
+0:23          2.000000
+0:23          3.000000
+0:23          4.000000
 0:33  Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
 0:33    Function Parameters: 
 0:?     Sequence
@@ -125,9 +125,9 @@
 0:10            'inF0' ( in 2-component vector of float)
 0:10            'inF1' ( in 2-component vector of float)
 0:11      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
+0:11        Constant:
+0:11          1.000000
+0:11          2.000000
 0:15  Function Definition: PixelShaderFunction3(vf3;vf3; ( temp 3-component vector of float)
 0:15    Function Parameters: 
 0:15      'inF0' ( in 3-component vector of float)
@@ -140,10 +140,10 @@
 0:16            'inF0' ( in 3-component vector of float)
 0:16            'inF1' ( in 3-component vector of float)
 0:17      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
+0:17        Constant:
+0:17          1.000000
+0:17          2.000000
+0:17          3.000000
 0:21  Function Definition: PixelShaderFunction(vf4;vf4; ( temp 4-component vector of float)
 0:21    Function Parameters: 
 0:21      'inF0' ( in 4-component vector of float)
@@ -156,11 +156,11 @@
 0:22            'inF0' ( in 4-component vector of float)
 0:22            'inF1' ( in 4-component vector of float)
 0:23      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:23        Constant:
+0:23          1.000000
+0:23          2.000000
+0:23          3.000000
+0:23          4.000000
 0:33  Function Definition: @main( ( temp structure{ temp 4-component vector of float color})
 0:33    Function Parameters: 
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.intrinsic.frexp.vert.out b/Test/baseResults/hlsl.intrinsic.frexp.vert.out
index a7cfd2a..0418ed6 100644
--- a/Test/baseResults/hlsl.intrinsic.frexp.vert.out
+++ b/Test/baseResults/hlsl.intrinsic.frexp.vert.out
@@ -21,9 +21,9 @@
 0:9        'inF0' ( in 2-component vector of float)
 0:9        'inF1' ( in 2-component vector of float)
 0:10      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
+0:10        Constant:
+0:10          1.000000
+0:10          2.000000
 0:14  Function Definition: VertexShaderFunction3(vf3;vf3; ( temp 3-component vector of float)
 0:14    Function Parameters: 
 0:14      'inF0' ( in 3-component vector of float)
@@ -33,10 +33,10 @@
 0:15        'inF0' ( in 3-component vector of float)
 0:15        'inF1' ( in 3-component vector of float)
 0:16      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
+0:16        Constant:
+0:16          1.000000
+0:16          2.000000
+0:16          3.000000
 0:20  Function Definition: VertexShaderFunction4(vf4;vf4; ( temp 4-component vector of float)
 0:20    Function Parameters: 
 0:20      'inF0' ( in 4-component vector of float)
@@ -46,11 +46,11 @@
 0:21        'inF0' ( in 4-component vector of float)
 0:21        'inF1' ( in 4-component vector of float)
 0:22      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:22        Constant:
+0:22          1.000000
+0:22          2.000000
+0:22          3.000000
+0:22          4.000000
 0:?   Linker Objects
 
 
@@ -80,9 +80,9 @@
 0:9        'inF0' ( in 2-component vector of float)
 0:9        'inF1' ( in 2-component vector of float)
 0:10      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
+0:10        Constant:
+0:10          1.000000
+0:10          2.000000
 0:14  Function Definition: VertexShaderFunction3(vf3;vf3; ( temp 3-component vector of float)
 0:14    Function Parameters: 
 0:14      'inF0' ( in 3-component vector of float)
@@ -92,10 +92,10 @@
 0:15        'inF0' ( in 3-component vector of float)
 0:15        'inF1' ( in 3-component vector of float)
 0:16      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
+0:16        Constant:
+0:16          1.000000
+0:16          2.000000
+0:16          3.000000
 0:20  Function Definition: VertexShaderFunction4(vf4;vf4; ( temp 4-component vector of float)
 0:20    Function Parameters: 
 0:20      'inF0' ( in 4-component vector of float)
@@ -105,11 +105,11 @@
 0:21        'inF0' ( in 4-component vector of float)
 0:21        'inF1' ( in 4-component vector of float)
 0:22      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:22        Constant:
+0:22          1.000000
+0:22          2.000000
+0:22          3.000000
+0:22          4.000000
 0:?   Linker Objects
 
 // Module Version 10000
diff --git a/Test/baseResults/hlsl.intrinsics.barriers.comp.out b/Test/baseResults/hlsl.intrinsics.barriers.comp.out
index 9017d41..abb9650 100644
--- a/Test/baseResults/hlsl.intrinsics.barriers.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.barriers.comp.out
@@ -2,7 +2,7 @@
 Shader version: 500
 local_size = (1, 1, 1)
 0:? Sequence
-0:3  Function Definition: @ComputeShaderFunction( ( temp float)
+0:3  Function Definition: @ComputeShaderFunction( ( temp void)
 0:3    Function Parameters: 
 0:?     Sequence
 0:4      MemoryBarrier ( temp void)
@@ -11,17 +11,11 @@
 0:7      DeviceMemoryBarrierWithGroupSync ( temp void)
 0:8      WorkgroupMemoryBarrier ( temp void)
 0:9      WorkgroupMemoryBarrierWithGroupSync ( temp void)
-0:11      Branch: Return with expression
-0:11        Constant:
-0:11          0.000000
 0:3  Function Definition: ComputeShaderFunction( ( temp void)
 0:3    Function Parameters: 
 0:?     Sequence
-0:3      move second child to first child ( temp float)
-0:?         '@entryPointOutput' (layout( location=0) out float)
-0:3        Function Call: @ComputeShaderFunction( ( temp float)
+0:3      Function Call: @ComputeShaderFunction( ( temp void)
 0:?   Linker Objects
-0:?     '@entryPointOutput' (layout( location=0) out float)
 
 
 Linked compute stage:
@@ -30,7 +24,7 @@
 Shader version: 500
 local_size = (1, 1, 1)
 0:? Sequence
-0:3  Function Definition: @ComputeShaderFunction( ( temp float)
+0:3  Function Definition: @ComputeShaderFunction( ( temp void)
 0:3    Function Parameters: 
 0:?     Sequence
 0:4      MemoryBarrier ( temp void)
@@ -39,58 +33,44 @@
 0:7      DeviceMemoryBarrierWithGroupSync ( temp void)
 0:8      WorkgroupMemoryBarrier ( temp void)
 0:9      WorkgroupMemoryBarrierWithGroupSync ( temp void)
-0:11      Branch: Return with expression
-0:11        Constant:
-0:11          0.000000
 0:3  Function Definition: ComputeShaderFunction( ( temp void)
 0:3    Function Parameters: 
 0:?     Sequence
-0:3      move second child to first child ( temp float)
-0:?         '@entryPointOutput' (layout( location=0) out float)
-0:3        Function Call: @ComputeShaderFunction( ( temp float)
+0:3      Function Call: @ComputeShaderFunction( ( temp void)
 0:?   Linker Objects
-0:?     '@entryPointOutput' (layout( location=0) out float)
 
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 22
+// Id's are bound by 15
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint GLCompute 4  "ComputeShaderFunction" 20
+                              EntryPoint GLCompute 4  "ComputeShaderFunction"
                               ExecutionMode 4 LocalSize 1 1 1
                               Source HLSL 500
                               Name 4  "ComputeShaderFunction"
-                              Name 8  "@ComputeShaderFunction("
-                              Name 20  "@entryPointOutput"
-                              Decorate 20(@entryPointOutput) Location 0
+                              Name 6  "@ComputeShaderFunction("
                2:             TypeVoid
                3:             TypeFunction 2
-               6:             TypeFloat 32
-               7:             TypeFunction 6(float)
-              10:             TypeInt 32 0
-              11:     10(int) Constant 1
-              12:     10(int) Constant 3400
-              13:     10(int) Constant 2
-              14:     10(int) Constant 2120
-              15:     10(int) Constant 264
-              16:    6(float) Constant 0
-              19:             TypePointer Output 6(float)
-20(@entryPointOutput):     19(ptr) Variable Output
+               8:             TypeInt 32 0
+               9:      8(int) Constant 1
+              10:      8(int) Constant 3400
+              11:      8(int) Constant 2
+              12:      8(int) Constant 2120
+              13:      8(int) Constant 264
 4(ComputeShaderFunction):           2 Function None 3
                5:             Label
-              21:    6(float) FunctionCall 8(@ComputeShaderFunction()
-                              Store 20(@entryPointOutput) 21
+              14:           2 FunctionCall 6(@ComputeShaderFunction()
                               Return
                               FunctionEnd
-8(@ComputeShaderFunction():    6(float) Function None 7
-               9:             Label
-                              MemoryBarrier 11 12
-                              ControlBarrier 13 11 12
-                              MemoryBarrier 11 14
-                              ControlBarrier 13 11 14
-                              MemoryBarrier 13 15
-                              ControlBarrier 13 13 15
-                              ReturnValue 16
+6(@ComputeShaderFunction():           2 Function None 3
+               7:             Label
+                              MemoryBarrier 9 10
+                              ControlBarrier 11 9 10
+                              MemoryBarrier 9 12
+                              ControlBarrier 11 9 12
+                              MemoryBarrier 11 13
+                              ControlBarrier 11 11 13
+                              Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.intrinsics.comp.out b/Test/baseResults/hlsl.intrinsics.comp.out
index 5b7e227..bce3d14 100644
--- a/Test/baseResults/hlsl.intrinsics.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.comp.out
@@ -155,9 +155,9 @@
 0:71          'gs_ua2' ( shared 2-component vector of uint)
 0:71          'gs_ub2' ( shared 2-component vector of uint)
 0:74      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
+0:74        Constant:
+0:74          1.000000
+0:74          2.000000
 0:78  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float)
 0:78    Function Parameters: 
 0:78      'inF0' ( in 3-component vector of float)
@@ -229,10 +229,10 @@
 0:98          'gs_ua3' ( shared 3-component vector of uint)
 0:98          'gs_ub3' ( shared 3-component vector of uint)
 0:101      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
+0:101        Constant:
+0:101          1.000000
+0:101          2.000000
+0:101          3.000000
 0:105  Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
 0:105    Function Parameters: 
 0:105      'inF0' ( in 4-component vector of float)
@@ -304,11 +304,11 @@
 0:125          'gs_ua4' ( shared 4-component vector of uint)
 0:125          'gs_ub4' ( shared 4-component vector of uint)
 0:128      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:128        Constant:
+0:128          1.000000
+0:128          2.000000
+0:128          3.000000
+0:128          4.000000
 0:105  Function Definition: ComputeShaderFunction( ( temp void)
 0:105    Function Parameters: 
 0:?     Sequence
@@ -515,9 +515,9 @@
 0:71          'gs_ua2' ( shared 2-component vector of uint)
 0:71          'gs_ub2' ( shared 2-component vector of uint)
 0:74      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
+0:74        Constant:
+0:74          1.000000
+0:74          2.000000
 0:78  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float)
 0:78    Function Parameters: 
 0:78      'inF0' ( in 3-component vector of float)
@@ -589,10 +589,10 @@
 0:98          'gs_ua3' ( shared 3-component vector of uint)
 0:98          'gs_ub3' ( shared 3-component vector of uint)
 0:101      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
+0:101        Constant:
+0:101          1.000000
+0:101          2.000000
+0:101          3.000000
 0:105  Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
 0:105    Function Parameters: 
 0:105      'inF0' ( in 4-component vector of float)
@@ -664,11 +664,11 @@
 0:125          'gs_ua4' ( shared 4-component vector of uint)
 0:125          'gs_ub4' ( shared 4-component vector of uint)
 0:128      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:128        Constant:
+0:128          1.000000
+0:128          2.000000
+0:128          3.000000
+0:128          4.000000
 0:105  Function Definition: ComputeShaderFunction( ( temp void)
 0:105    Function Parameters: 
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out
index c1d0a47..02b1e6d 100644
--- a/Test/baseResults/hlsl.intrinsics.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.frag.out
@@ -472,10 +472,10 @@
 0:117      Sequence
 0:117        move second child to first child ( temp 2-component vector of int)
 0:117          'r016' ( temp 2-component vector of int)
-0:?           bitCount ( temp 2-component vector of int)
-0:?             Constant:
-0:?               7 (const int)
-0:?               3 (const int)
+0:117          bitCount ( temp 2-component vector of int)
+0:117            Constant:
+0:117              7 (const int)
+0:117              3 (const int)
 0:118      Sequence
 0:118        move second child to first child ( temp 2-component vector of float)
 0:118          'r017' ( temp 2-component vector of float)
@@ -543,17 +543,17 @@
 0:136      Sequence
 0:136        move second child to first child ( temp 2-component vector of uint)
 0:136          'r031' ( temp 2-component vector of uint)
-0:?           findMSB ( temp 2-component vector of uint)
-0:?             Constant:
-0:?               7 (const uint)
-0:?               8 (const uint)
+0:136          findMSB ( temp 2-component vector of uint)
+0:136            Constant:
+0:136              7 (const uint)
+0:136              8 (const uint)
 0:137      Sequence
 0:137        move second child to first child ( temp 2-component vector of uint)
 0:137          'r032' ( temp 2-component vector of uint)
-0:?           findLSB ( temp 2-component vector of uint)
-0:?             Constant:
-0:?               7 (const uint)
-0:?               8 (const uint)
+0:137          findLSB ( temp 2-component vector of uint)
+0:137            Constant:
+0:137              7 (const uint)
+0:137              8 (const uint)
 0:138      Sequence
 0:138        move second child to first child ( temp 2-component vector of float)
 0:138          'r033' ( temp 2-component vector of float)
@@ -673,10 +673,10 @@
 0:159      Sequence
 0:159        move second child to first child ( temp 2-component vector of uint)
 0:159          'r054' ( temp 2-component vector of uint)
-0:?           bitFieldReverse ( temp 2-component vector of uint)
-0:?             Constant:
-0:?               1 (const uint)
-0:?               2 (const uint)
+0:159          bitFieldReverse ( temp 2-component vector of uint)
+0:159            Constant:
+0:159              1 (const uint)
+0:159              2 (const uint)
 0:160      Sequence
 0:160        move second child to first child ( temp 2-component vector of float)
 0:160          'r055' ( temp 2-component vector of float)
@@ -754,9 +754,9 @@
 0:173          trunc ( temp 2-component vector of float)
 0:173            'inF0' ( in 2-component vector of float)
 0:176      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
+0:176        Constant:
+0:176          1.000000
+0:176          2.000000
 0:180  Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float)
 0:180    Function Parameters: 
 0:180      'inF0' ( in 3-component vector of float)
@@ -865,11 +865,11 @@
 0:200      Sequence
 0:200        move second child to first child ( temp 3-component vector of uint)
 0:200          'r015' ( temp 3-component vector of uint)
-0:?           bitCount ( temp 3-component vector of uint)
-0:?             Constant:
-0:?               7 (const uint)
-0:?               3 (const uint)
-0:?               5 (const uint)
+0:200          bitCount ( temp 3-component vector of uint)
+0:200            Constant:
+0:200              7 (const uint)
+0:200              3 (const uint)
+0:200              5 (const uint)
 0:201      Sequence
 0:201        move second child to first child ( temp 3-component vector of float)
 0:201          'r016' ( temp 3-component vector of float)
@@ -943,19 +943,19 @@
 0:217      Sequence
 0:217        move second child to first child ( temp 3-component vector of uint)
 0:217          'r032' ( temp 3-component vector of uint)
-0:?           findMSB ( temp 3-component vector of uint)
-0:?             Constant:
-0:?               2 (const uint)
-0:?               3 (const uint)
-0:?               4 (const uint)
+0:217          findMSB ( temp 3-component vector of uint)
+0:217            Constant:
+0:217              2 (const uint)
+0:217              3 (const uint)
+0:217              4 (const uint)
 0:218      Sequence
 0:218        move second child to first child ( temp 3-component vector of uint)
 0:218          'r033' ( temp 3-component vector of uint)
-0:?           findLSB ( temp 3-component vector of uint)
-0:?             Constant:
-0:?               2 (const uint)
-0:?               3 (const uint)
-0:?               4 (const uint)
+0:218          findLSB ( temp 3-component vector of uint)
+0:218            Constant:
+0:218              2 (const uint)
+0:218              3 (const uint)
+0:218              4 (const uint)
 0:219      Sequence
 0:219        move second child to first child ( temp 3-component vector of float)
 0:219          'r034' ( temp 3-component vector of float)
@@ -1083,11 +1083,11 @@
 0:241      Sequence
 0:241        move second child to first child ( temp 3-component vector of uint)
 0:241          'r055' ( temp 3-component vector of uint)
-0:?           bitFieldReverse ( temp 3-component vector of uint)
-0:?             Constant:
-0:?               1 (const uint)
-0:?               2 (const uint)
-0:?               3 (const uint)
+0:241          bitFieldReverse ( temp 3-component vector of uint)
+0:241            Constant:
+0:241              1 (const uint)
+0:241              2 (const uint)
+0:241              3 (const uint)
 0:242      Sequence
 0:242        move second child to first child ( temp 3-component vector of float)
 0:242          'r056' ( temp 3-component vector of float)
@@ -1165,10 +1165,10 @@
 0:255          trunc ( temp 3-component vector of float)
 0:255            'inF0' ( in 3-component vector of float)
 0:258      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
+0:258        Constant:
+0:258          1.000000
+0:258          2.000000
+0:258          3.000000
 0:262  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
 0:262    Function Parameters: 
 0:262      'inF0' ( in 4-component vector of float)
@@ -1279,12 +1279,12 @@
 0:282      Sequence
 0:282        move second child to first child ( temp 4-component vector of uint)
 0:282          'r015' ( temp 4-component vector of uint)
-0:?           bitCount ( temp 4-component vector of uint)
-0:?             Constant:
-0:?               7 (const uint)
-0:?               3 (const uint)
-0:?               5 (const uint)
-0:?               2 (const uint)
+0:282          bitCount ( temp 4-component vector of uint)
+0:282            Constant:
+0:282              7 (const uint)
+0:282              3 (const uint)
+0:282              5 (const uint)
+0:282              2 (const uint)
 0:283      Sequence
 0:283        move second child to first child ( temp 4-component vector of float)
 0:283          'r016' ( temp 4-component vector of float)
@@ -1375,21 +1375,21 @@
 0:299      Sequence
 0:299        move second child to first child ( temp 4-component vector of uint)
 0:299          'r032' ( temp 4-component vector of uint)
-0:?           findMSB ( temp 4-component vector of uint)
-0:?             Constant:
-0:?               7 (const uint)
-0:?               8 (const uint)
-0:?               9 (const uint)
-0:?               10 (const uint)
+0:299          findMSB ( temp 4-component vector of uint)
+0:299            Constant:
+0:299              7 (const uint)
+0:299              8 (const uint)
+0:299              9 (const uint)
+0:299              10 (const uint)
 0:300      Sequence
 0:300        move second child to first child ( temp 4-component vector of uint)
 0:300          'r033' ( temp 4-component vector of uint)
-0:?           findLSB ( temp 4-component vector of uint)
-0:?             Constant:
-0:?               7 (const uint)
-0:?               8 (const uint)
-0:?               9 (const uint)
-0:?               10 (const uint)
+0:300          findLSB ( temp 4-component vector of uint)
+0:300            Constant:
+0:300              7 (const uint)
+0:300              8 (const uint)
+0:300              9 (const uint)
+0:300              10 (const uint)
 0:301      Sequence
 0:301        move second child to first child ( temp 4-component vector of float)
 0:301          'r034' ( temp 4-component vector of float)
@@ -1509,12 +1509,12 @@
 0:322      Sequence
 0:322        move second child to first child ( temp 4-component vector of uint)
 0:322          'r055' ( temp 4-component vector of uint)
-0:?           bitFieldReverse ( temp 4-component vector of uint)
-0:?             Constant:
-0:?               1 (const uint)
-0:?               2 (const uint)
-0:?               3 (const uint)
-0:?               4 (const uint)
+0:322          bitFieldReverse ( temp 4-component vector of uint)
+0:322            Constant:
+0:322              1 (const uint)
+0:322              2 (const uint)
+0:322              3 (const uint)
+0:322              4 (const uint)
 0:323      Sequence
 0:323        move second child to first child ( temp 4-component vector of float)
 0:323          'r056' ( temp 4-component vector of float)
@@ -1592,11 +1592,11 @@
 0:336          trunc ( temp 4-component vector of float)
 0:336            'inF0' ( in 4-component vector of float)
 0:339      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:339        Constant:
+0:339          1.000000
+0:339          2.000000
+0:339          3.000000
+0:339          4.000000
 0:402  Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float)
 0:402    Function Parameters: 
 0:402      'inF0' ( in 2X2 matrix of float)
@@ -1876,11 +1876,11 @@
 0:404          trunc ( temp 2X2 matrix of float)
 0:404            'inF0' ( in 2X2 matrix of float)
 0:407      Branch: Return with expression
-0:?         Constant:
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
+0:407        Constant:
+0:407          2.000000
+0:407          2.000000
+0:407          2.000000
+0:407          2.000000
 0:411  Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
 0:411    Function Parameters: 
 0:411      'inF0' ( in 3X3 matrix of float)
@@ -2165,16 +2165,16 @@
 0:413          trunc ( temp 3X3 matrix of float)
 0:413            'inF0' ( in 3X3 matrix of float)
 0:416      Branch: Return with expression
-0:?         Constant:
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
+0:416        Constant:
+0:416          3.000000
+0:416          3.000000
+0:416          3.000000
+0:416          3.000000
+0:416          3.000000
+0:416          3.000000
+0:416          3.000000
+0:416          3.000000
+0:416          3.000000
 0:420  Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
 0:420    Function Parameters: 
 0:420      'inF0' ( in 4X4 matrix of float)
@@ -2466,23 +2466,23 @@
 0:422          trunc ( temp 4X4 matrix of float)
 0:422            'inF0' ( in 4X4 matrix of float)
 0:425      Branch: Return with expression
-0:?         Constant:
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
+0:425        Constant:
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
 0:443  Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void)
 0:443    Function Parameters: 
 0:443      'inF0' ( in float)
@@ -3303,10 +3303,10 @@
 0:117      Sequence
 0:117        move second child to first child ( temp 2-component vector of int)
 0:117          'r016' ( temp 2-component vector of int)
-0:?           bitCount ( temp 2-component vector of int)
-0:?             Constant:
-0:?               7 (const int)
-0:?               3 (const int)
+0:117          bitCount ( temp 2-component vector of int)
+0:117            Constant:
+0:117              7 (const int)
+0:117              3 (const int)
 0:118      Sequence
 0:118        move second child to first child ( temp 2-component vector of float)
 0:118          'r017' ( temp 2-component vector of float)
@@ -3374,17 +3374,17 @@
 0:136      Sequence
 0:136        move second child to first child ( temp 2-component vector of uint)
 0:136          'r031' ( temp 2-component vector of uint)
-0:?           findMSB ( temp 2-component vector of uint)
-0:?             Constant:
-0:?               7 (const uint)
-0:?               8 (const uint)
+0:136          findMSB ( temp 2-component vector of uint)
+0:136            Constant:
+0:136              7 (const uint)
+0:136              8 (const uint)
 0:137      Sequence
 0:137        move second child to first child ( temp 2-component vector of uint)
 0:137          'r032' ( temp 2-component vector of uint)
-0:?           findLSB ( temp 2-component vector of uint)
-0:?             Constant:
-0:?               7 (const uint)
-0:?               8 (const uint)
+0:137          findLSB ( temp 2-component vector of uint)
+0:137            Constant:
+0:137              7 (const uint)
+0:137              8 (const uint)
 0:138      Sequence
 0:138        move second child to first child ( temp 2-component vector of float)
 0:138          'r033' ( temp 2-component vector of float)
@@ -3504,10 +3504,10 @@
 0:159      Sequence
 0:159        move second child to first child ( temp 2-component vector of uint)
 0:159          'r054' ( temp 2-component vector of uint)
-0:?           bitFieldReverse ( temp 2-component vector of uint)
-0:?             Constant:
-0:?               1 (const uint)
-0:?               2 (const uint)
+0:159          bitFieldReverse ( temp 2-component vector of uint)
+0:159            Constant:
+0:159              1 (const uint)
+0:159              2 (const uint)
 0:160      Sequence
 0:160        move second child to first child ( temp 2-component vector of float)
 0:160          'r055' ( temp 2-component vector of float)
@@ -3585,9 +3585,9 @@
 0:173          trunc ( temp 2-component vector of float)
 0:173            'inF0' ( in 2-component vector of float)
 0:176      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
+0:176        Constant:
+0:176          1.000000
+0:176          2.000000
 0:180  Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float)
 0:180    Function Parameters: 
 0:180      'inF0' ( in 3-component vector of float)
@@ -3696,11 +3696,11 @@
 0:200      Sequence
 0:200        move second child to first child ( temp 3-component vector of uint)
 0:200          'r015' ( temp 3-component vector of uint)
-0:?           bitCount ( temp 3-component vector of uint)
-0:?             Constant:
-0:?               7 (const uint)
-0:?               3 (const uint)
-0:?               5 (const uint)
+0:200          bitCount ( temp 3-component vector of uint)
+0:200            Constant:
+0:200              7 (const uint)
+0:200              3 (const uint)
+0:200              5 (const uint)
 0:201      Sequence
 0:201        move second child to first child ( temp 3-component vector of float)
 0:201          'r016' ( temp 3-component vector of float)
@@ -3774,19 +3774,19 @@
 0:217      Sequence
 0:217        move second child to first child ( temp 3-component vector of uint)
 0:217          'r032' ( temp 3-component vector of uint)
-0:?           findMSB ( temp 3-component vector of uint)
-0:?             Constant:
-0:?               2 (const uint)
-0:?               3 (const uint)
-0:?               4 (const uint)
+0:217          findMSB ( temp 3-component vector of uint)
+0:217            Constant:
+0:217              2 (const uint)
+0:217              3 (const uint)
+0:217              4 (const uint)
 0:218      Sequence
 0:218        move second child to first child ( temp 3-component vector of uint)
 0:218          'r033' ( temp 3-component vector of uint)
-0:?           findLSB ( temp 3-component vector of uint)
-0:?             Constant:
-0:?               2 (const uint)
-0:?               3 (const uint)
-0:?               4 (const uint)
+0:218          findLSB ( temp 3-component vector of uint)
+0:218            Constant:
+0:218              2 (const uint)
+0:218              3 (const uint)
+0:218              4 (const uint)
 0:219      Sequence
 0:219        move second child to first child ( temp 3-component vector of float)
 0:219          'r034' ( temp 3-component vector of float)
@@ -3914,11 +3914,11 @@
 0:241      Sequence
 0:241        move second child to first child ( temp 3-component vector of uint)
 0:241          'r055' ( temp 3-component vector of uint)
-0:?           bitFieldReverse ( temp 3-component vector of uint)
-0:?             Constant:
-0:?               1 (const uint)
-0:?               2 (const uint)
-0:?               3 (const uint)
+0:241          bitFieldReverse ( temp 3-component vector of uint)
+0:241            Constant:
+0:241              1 (const uint)
+0:241              2 (const uint)
+0:241              3 (const uint)
 0:242      Sequence
 0:242        move second child to first child ( temp 3-component vector of float)
 0:242          'r056' ( temp 3-component vector of float)
@@ -3996,10 +3996,10 @@
 0:255          trunc ( temp 3-component vector of float)
 0:255            'inF0' ( in 3-component vector of float)
 0:258      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
+0:258        Constant:
+0:258          1.000000
+0:258          2.000000
+0:258          3.000000
 0:262  Function Definition: PixelShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
 0:262    Function Parameters: 
 0:262      'inF0' ( in 4-component vector of float)
@@ -4110,12 +4110,12 @@
 0:282      Sequence
 0:282        move second child to first child ( temp 4-component vector of uint)
 0:282          'r015' ( temp 4-component vector of uint)
-0:?           bitCount ( temp 4-component vector of uint)
-0:?             Constant:
-0:?               7 (const uint)
-0:?               3 (const uint)
-0:?               5 (const uint)
-0:?               2 (const uint)
+0:282          bitCount ( temp 4-component vector of uint)
+0:282            Constant:
+0:282              7 (const uint)
+0:282              3 (const uint)
+0:282              5 (const uint)
+0:282              2 (const uint)
 0:283      Sequence
 0:283        move second child to first child ( temp 4-component vector of float)
 0:283          'r016' ( temp 4-component vector of float)
@@ -4206,21 +4206,21 @@
 0:299      Sequence
 0:299        move second child to first child ( temp 4-component vector of uint)
 0:299          'r032' ( temp 4-component vector of uint)
-0:?           findMSB ( temp 4-component vector of uint)
-0:?             Constant:
-0:?               7 (const uint)
-0:?               8 (const uint)
-0:?               9 (const uint)
-0:?               10 (const uint)
+0:299          findMSB ( temp 4-component vector of uint)
+0:299            Constant:
+0:299              7 (const uint)
+0:299              8 (const uint)
+0:299              9 (const uint)
+0:299              10 (const uint)
 0:300      Sequence
 0:300        move second child to first child ( temp 4-component vector of uint)
 0:300          'r033' ( temp 4-component vector of uint)
-0:?           findLSB ( temp 4-component vector of uint)
-0:?             Constant:
-0:?               7 (const uint)
-0:?               8 (const uint)
-0:?               9 (const uint)
-0:?               10 (const uint)
+0:300          findLSB ( temp 4-component vector of uint)
+0:300            Constant:
+0:300              7 (const uint)
+0:300              8 (const uint)
+0:300              9 (const uint)
+0:300              10 (const uint)
 0:301      Sequence
 0:301        move second child to first child ( temp 4-component vector of float)
 0:301          'r034' ( temp 4-component vector of float)
@@ -4340,12 +4340,12 @@
 0:322      Sequence
 0:322        move second child to first child ( temp 4-component vector of uint)
 0:322          'r055' ( temp 4-component vector of uint)
-0:?           bitFieldReverse ( temp 4-component vector of uint)
-0:?             Constant:
-0:?               1 (const uint)
-0:?               2 (const uint)
-0:?               3 (const uint)
-0:?               4 (const uint)
+0:322          bitFieldReverse ( temp 4-component vector of uint)
+0:322            Constant:
+0:322              1 (const uint)
+0:322              2 (const uint)
+0:322              3 (const uint)
+0:322              4 (const uint)
 0:323      Sequence
 0:323        move second child to first child ( temp 4-component vector of float)
 0:323          'r056' ( temp 4-component vector of float)
@@ -4423,11 +4423,11 @@
 0:336          trunc ( temp 4-component vector of float)
 0:336            'inF0' ( in 4-component vector of float)
 0:339      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:339        Constant:
+0:339          1.000000
+0:339          2.000000
+0:339          3.000000
+0:339          4.000000
 0:402  Function Definition: PixelShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float)
 0:402    Function Parameters: 
 0:402      'inF0' ( in 2X2 matrix of float)
@@ -4707,11 +4707,11 @@
 0:404          trunc ( temp 2X2 matrix of float)
 0:404            'inF0' ( in 2X2 matrix of float)
 0:407      Branch: Return with expression
-0:?         Constant:
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
+0:407        Constant:
+0:407          2.000000
+0:407          2.000000
+0:407          2.000000
+0:407          2.000000
 0:411  Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
 0:411    Function Parameters: 
 0:411      'inF0' ( in 3X3 matrix of float)
@@ -4996,16 +4996,16 @@
 0:413          trunc ( temp 3X3 matrix of float)
 0:413            'inF0' ( in 3X3 matrix of float)
 0:416      Branch: Return with expression
-0:?         Constant:
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
+0:416        Constant:
+0:416          3.000000
+0:416          3.000000
+0:416          3.000000
+0:416          3.000000
+0:416          3.000000
+0:416          3.000000
+0:416          3.000000
+0:416          3.000000
+0:416          3.000000
 0:420  Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
 0:420    Function Parameters: 
 0:420      'inF0' ( in 4X4 matrix of float)
@@ -5297,23 +5297,23 @@
 0:422          trunc ( temp 4X4 matrix of float)
 0:422            'inF0' ( in 4X4 matrix of float)
 0:425      Branch: Return with expression
-0:?         Constant:
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
+0:425        Constant:
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
+0:425          4.000000
 0:443  Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void)
 0:443    Function Parameters: 
 0:443      'inF0' ( in float)
diff --git a/Test/baseResults/hlsl.intrinsics.negative.comp.out b/Test/baseResults/hlsl.intrinsics.negative.comp.out
index c6fcdf0..c0a543c 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.comp.out
@@ -2,86 +2,57 @@
 Shader version: 500
 local_size = (1, 1, 1)
 0:? Sequence
-0:2  Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; ( temp float)
+0:2  Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; ( temp void)
 0:2    Function Parameters: 
 0:2      'inF0' ( in float)
 0:2      'inF1' ( in float)
 0:2      'inF2' ( in float)
 0:2      'inI0' ( in int)
+0:55  Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; ( temp void)
+0:55    Function Parameters: 
+0:55      'inF0' ( in 1-component vector of float)
+0:55      'inF1' ( in 1-component vector of float)
+0:55      'inF2' ( in 1-component vector of float)
+0:55      'inI0' ( in 1-component vector of int)
+0:62  Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; ( temp void)
+0:62    Function Parameters: 
+0:62      'inF0' ( in 2-component vector of float)
+0:62      'inF1' ( in 2-component vector of float)
+0:62      'inF2' ( in 2-component vector of float)
+0:62      'inI0' ( in 2-component vector of int)
+0:107  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; ( temp void)
+0:107    Function Parameters: 
+0:107      'inF0' ( in 3-component vector of float)
+0:107      'inF1' ( in 3-component vector of float)
+0:107      'inF2' ( in 3-component vector of float)
+0:107      'inI0' ( in 3-component vector of int)
+0:150  Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vi4; ( temp void)
+0:150    Function Parameters: 
+0:150      'inF0' ( in 4-component vector of float)
+0:150      'inF1' ( in 4-component vector of float)
+0:150      'inF2' ( in 4-component vector of float)
+0:150      'inI0' ( in 4-component vector of int)
+0:150  Function Definition: ComputeShaderFunction( ( temp void)
+0:150    Function Parameters: 
 0:?     Sequence
-0:53      Branch: Return with expression
-0:53        Constant:
-0:53          0.000000
-0:57  Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; ( temp 1-component vector of float)
-0:57    Function Parameters: 
-0:57      'inF0' ( in 1-component vector of float)
-0:57      'inF1' ( in 1-component vector of float)
-0:57      'inF2' ( in 1-component vector of float)
-0:57      'inI0' ( in 1-component vector of int)
-0:?     Sequence
-0:62      Branch: Return with expression
-0:62        Constant:
-0:62          0.000000
-0:66  Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; ( temp 2-component vector of float)
-0:66    Function Parameters: 
-0:66      'inF0' ( in 2-component vector of float)
-0:66      'inF1' ( in 2-component vector of float)
-0:66      'inF2' ( in 2-component vector of float)
-0:66      'inI0' ( in 2-component vector of int)
-0:?     Sequence
-0:109      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:113  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; ( temp 3-component vector of float)
-0:113    Function Parameters: 
-0:113      'inF0' ( in 3-component vector of float)
-0:113      'inF1' ( in 3-component vector of float)
-0:113      'inF2' ( in 3-component vector of float)
-0:113      'inI0' ( in 3-component vector of int)
-0:?     Sequence
-0:154      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:158  Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
-0:158    Function Parameters: 
-0:158      'inF0' ( in 4-component vector of float)
-0:158      'inF1' ( in 4-component vector of float)
-0:158      'inF2' ( in 4-component vector of float)
-0:158      'inI0' ( in 4-component vector of int)
-0:?     Sequence
-0:199      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
-0:158  Function Definition: ComputeShaderFunction( ( temp void)
-0:158    Function Parameters: 
-0:?     Sequence
-0:158      move second child to first child ( temp 4-component vector of float)
+0:150      move second child to first child ( temp 4-component vector of float)
 0:?         'inF0' ( temp 4-component vector of float)
 0:?         'inF0' (layout( location=0) in 4-component vector of float)
-0:158      move second child to first child ( temp 4-component vector of float)
+0:150      move second child to first child ( temp 4-component vector of float)
 0:?         'inF1' ( temp 4-component vector of float)
 0:?         'inF1' (layout( location=1) in 4-component vector of float)
-0:158      move second child to first child ( temp 4-component vector of float)
+0:150      move second child to first child ( temp 4-component vector of float)
 0:?         'inF2' ( temp 4-component vector of float)
 0:?         'inF2' (layout( location=2) in 4-component vector of float)
-0:158      move second child to first child ( temp 4-component vector of int)
+0:150      move second child to first child ( temp 4-component vector of int)
 0:?         'inI0' ( temp 4-component vector of int)
 0:?         'inI0' (layout( location=3) in 4-component vector of int)
-0:158      move second child to first child ( temp 4-component vector of float)
-0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:158        Function Call: @ComputeShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
-0:?           'inF0' ( temp 4-component vector of float)
-0:?           'inF1' ( temp 4-component vector of float)
-0:?           'inF2' ( temp 4-component vector of float)
-0:?           'inI0' ( temp 4-component vector of int)
+0:150      Function Call: @ComputeShaderFunction(vf4;vf4;vf4;vi4; ( temp void)
+0:?         'inF0' ( temp 4-component vector of float)
+0:?         'inF1' ( temp 4-component vector of float)
+0:?         'inF2' ( temp 4-component vector of float)
+0:?         'inI0' ( temp 4-component vector of int)
 0:?   Linker Objects
-0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     'inF0' (layout( location=0) in 4-component vector of float)
 0:?     'inF1' (layout( location=1) in 4-component vector of float)
 0:?     'inF2' (layout( location=2) in 4-component vector of float)
@@ -94,86 +65,57 @@
 Shader version: 500
 local_size = (1, 1, 1)
 0:? Sequence
-0:2  Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; ( temp float)
+0:2  Function Definition: ComputeShaderFunctionS(f1;f1;f1;i1; ( temp void)
 0:2    Function Parameters: 
 0:2      'inF0' ( in float)
 0:2      'inF1' ( in float)
 0:2      'inF2' ( in float)
 0:2      'inI0' ( in int)
+0:55  Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; ( temp void)
+0:55    Function Parameters: 
+0:55      'inF0' ( in 1-component vector of float)
+0:55      'inF1' ( in 1-component vector of float)
+0:55      'inF2' ( in 1-component vector of float)
+0:55      'inI0' ( in 1-component vector of int)
+0:62  Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; ( temp void)
+0:62    Function Parameters: 
+0:62      'inF0' ( in 2-component vector of float)
+0:62      'inF1' ( in 2-component vector of float)
+0:62      'inF2' ( in 2-component vector of float)
+0:62      'inI0' ( in 2-component vector of int)
+0:107  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; ( temp void)
+0:107    Function Parameters: 
+0:107      'inF0' ( in 3-component vector of float)
+0:107      'inF1' ( in 3-component vector of float)
+0:107      'inF2' ( in 3-component vector of float)
+0:107      'inI0' ( in 3-component vector of int)
+0:150  Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vi4; ( temp void)
+0:150    Function Parameters: 
+0:150      'inF0' ( in 4-component vector of float)
+0:150      'inF1' ( in 4-component vector of float)
+0:150      'inF2' ( in 4-component vector of float)
+0:150      'inI0' ( in 4-component vector of int)
+0:150  Function Definition: ComputeShaderFunction( ( temp void)
+0:150    Function Parameters: 
 0:?     Sequence
-0:53      Branch: Return with expression
-0:53        Constant:
-0:53          0.000000
-0:57  Function Definition: ComputeShaderFunction1(vf1;vf1;vf1;vi1; ( temp 1-component vector of float)
-0:57    Function Parameters: 
-0:57      'inF0' ( in 1-component vector of float)
-0:57      'inF1' ( in 1-component vector of float)
-0:57      'inF2' ( in 1-component vector of float)
-0:57      'inI0' ( in 1-component vector of int)
-0:?     Sequence
-0:62      Branch: Return with expression
-0:62        Constant:
-0:62          0.000000
-0:66  Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vi2; ( temp 2-component vector of float)
-0:66    Function Parameters: 
-0:66      'inF0' ( in 2-component vector of float)
-0:66      'inF1' ( in 2-component vector of float)
-0:66      'inF2' ( in 2-component vector of float)
-0:66      'inI0' ( in 2-component vector of int)
-0:?     Sequence
-0:109      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:113  Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vi3; ( temp 3-component vector of float)
-0:113    Function Parameters: 
-0:113      'inF0' ( in 3-component vector of float)
-0:113      'inF1' ( in 3-component vector of float)
-0:113      'inF2' ( in 3-component vector of float)
-0:113      'inI0' ( in 3-component vector of int)
-0:?     Sequence
-0:154      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:158  Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
-0:158    Function Parameters: 
-0:158      'inF0' ( in 4-component vector of float)
-0:158      'inF1' ( in 4-component vector of float)
-0:158      'inF2' ( in 4-component vector of float)
-0:158      'inI0' ( in 4-component vector of int)
-0:?     Sequence
-0:199      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
-0:158  Function Definition: ComputeShaderFunction( ( temp void)
-0:158    Function Parameters: 
-0:?     Sequence
-0:158      move second child to first child ( temp 4-component vector of float)
+0:150      move second child to first child ( temp 4-component vector of float)
 0:?         'inF0' ( temp 4-component vector of float)
 0:?         'inF0' (layout( location=0) in 4-component vector of float)
-0:158      move second child to first child ( temp 4-component vector of float)
+0:150      move second child to first child ( temp 4-component vector of float)
 0:?         'inF1' ( temp 4-component vector of float)
 0:?         'inF1' (layout( location=1) in 4-component vector of float)
-0:158      move second child to first child ( temp 4-component vector of float)
+0:150      move second child to first child ( temp 4-component vector of float)
 0:?         'inF2' ( temp 4-component vector of float)
 0:?         'inF2' (layout( location=2) in 4-component vector of float)
-0:158      move second child to first child ( temp 4-component vector of int)
+0:150      move second child to first child ( temp 4-component vector of int)
 0:?         'inI0' ( temp 4-component vector of int)
 0:?         'inI0' (layout( location=3) in 4-component vector of int)
-0:158      move second child to first child ( temp 4-component vector of float)
-0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:158        Function Call: @ComputeShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
-0:?           'inF0' ( temp 4-component vector of float)
-0:?           'inF1' ( temp 4-component vector of float)
-0:?           'inF2' ( temp 4-component vector of float)
-0:?           'inI0' ( temp 4-component vector of int)
+0:150      Function Call: @ComputeShaderFunction(vf4;vf4;vf4;vi4; ( temp void)
+0:?         'inF0' ( temp 4-component vector of float)
+0:?         'inF1' ( temp 4-component vector of float)
+0:?         'inF2' ( temp 4-component vector of float)
+0:?         'inI0' ( temp 4-component vector of int)
 0:?   Linker Objects
-0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     'inF0' (layout( location=0) in 4-component vector of float)
 0:?     'inF1' (layout( location=1) in 4-component vector of float)
 0:?     'inF2' (layout( location=2) in 4-component vector of float)
@@ -181,12 +123,12 @@
 
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 99
+// Id's are bound by 79
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint GLCompute 4  "ComputeShaderFunction" 76 79 82 86 89
+                              EntryPoint GLCompute 4  "ComputeShaderFunction" 58 61 64 68
                               ExecutionMode 4 LocalSize 1 1 1
                               Source HLSL 500
                               Name 4  "ComputeShaderFunction"
@@ -215,129 +157,116 @@
                               Name 51  "inF1"
                               Name 52  "inF2"
                               Name 53  "inI0"
-                              Name 74  "inF0"
-                              Name 76  "inF0"
-                              Name 78  "inF1"
-                              Name 79  "inF1"
-                              Name 81  "inF2"
-                              Name 82  "inF2"
-                              Name 84  "inI0"
-                              Name 86  "inI0"
-                              Name 89  "@entryPointOutput"
-                              Name 90  "param"
-                              Name 92  "param"
-                              Name 94  "param"
-                              Name 96  "param"
-                              Decorate 76(inF0) Location 0
-                              Decorate 79(inF1) Location 1
-                              Decorate 82(inF2) Location 2
-                              Decorate 86(inI0) Location 3
-                              Decorate 89(@entryPointOutput) Location 0
+                              Name 56  "inF0"
+                              Name 58  "inF0"
+                              Name 60  "inF1"
+                              Name 61  "inF1"
+                              Name 63  "inF2"
+                              Name 64  "inF2"
+                              Name 66  "inI0"
+                              Name 68  "inI0"
+                              Name 70  "param"
+                              Name 72  "param"
+                              Name 74  "param"
+                              Name 76  "param"
+                              Decorate 58(inF0) Location 0
+                              Decorate 61(inF1) Location 1
+                              Decorate 64(inF2) Location 2
+                              Decorate 68(inI0) Location 3
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
                7:             TypePointer Function 6(float)
                8:             TypeInt 32 1
                9:             TypePointer Function 8(int)
-              10:             TypeFunction 6(float) 7(ptr) 7(ptr) 7(ptr) 9(ptr)
+              10:             TypeFunction 2 7(ptr) 7(ptr) 7(ptr) 9(ptr)
               23:             TypeVector 6(float) 2
               24:             TypePointer Function 23(fvec2)
               25:             TypeVector 8(int) 2
               26:             TypePointer Function 25(ivec2)
-              27:             TypeFunction 23(fvec2) 24(ptr) 24(ptr) 24(ptr) 26(ptr)
+              27:             TypeFunction 2 24(ptr) 24(ptr) 24(ptr) 26(ptr)
               34:             TypeVector 6(float) 3
               35:             TypePointer Function 34(fvec3)
               36:             TypeVector 8(int) 3
               37:             TypePointer Function 36(ivec3)
-              38:             TypeFunction 34(fvec3) 35(ptr) 35(ptr) 35(ptr) 37(ptr)
+              38:             TypeFunction 2 35(ptr) 35(ptr) 35(ptr) 37(ptr)
               45:             TypeVector 6(float) 4
               46:             TypePointer Function 45(fvec4)
               47:             TypeVector 8(int) 4
               48:             TypePointer Function 47(ivec4)
-              49:             TypeFunction 45(fvec4) 46(ptr) 46(ptr) 46(ptr) 48(ptr)
-              56:    6(float) Constant 0
-              61:    6(float) Constant 1065353216
-              62:    6(float) Constant 1073741824
-              63:   23(fvec2) ConstantComposite 61 62
-              66:    6(float) Constant 1077936128
-              67:   34(fvec3) ConstantComposite 61 62 66
-              70:    6(float) Constant 1082130432
-              71:   45(fvec4) ConstantComposite 61 62 66 70
-              75:             TypePointer Input 45(fvec4)
-        76(inF0):     75(ptr) Variable Input
-        79(inF1):     75(ptr) Variable Input
-        82(inF2):     75(ptr) Variable Input
-              85:             TypePointer Input 47(ivec4)
-        86(inI0):     85(ptr) Variable Input
-              88:             TypePointer Output 45(fvec4)
-89(@entryPointOutput):     88(ptr) Variable Output
+              49:             TypeFunction 2 46(ptr) 46(ptr) 46(ptr) 48(ptr)
+              57:             TypePointer Input 45(fvec4)
+        58(inF0):     57(ptr) Variable Input
+        61(inF1):     57(ptr) Variable Input
+        64(inF2):     57(ptr) Variable Input
+              67:             TypePointer Input 47(ivec4)
+        68(inI0):     67(ptr) Variable Input
 4(ComputeShaderFunction):           2 Function None 3
                5:             Label
-        74(inF0):     46(ptr) Variable Function
-        78(inF1):     46(ptr) Variable Function
-        81(inF2):     46(ptr) Variable Function
-        84(inI0):     48(ptr) Variable Function
-       90(param):     46(ptr) Variable Function
-       92(param):     46(ptr) Variable Function
-       94(param):     46(ptr) Variable Function
-       96(param):     48(ptr) Variable Function
-              77:   45(fvec4) Load 76(inF0)
-                              Store 74(inF0) 77
-              80:   45(fvec4) Load 79(inF1)
-                              Store 78(inF1) 80
-              83:   45(fvec4) Load 82(inF2)
-                              Store 81(inF2) 83
-              87:   47(ivec4) Load 86(inI0)
-                              Store 84(inI0) 87
-              91:   45(fvec4) Load 74(inF0)
-                              Store 90(param) 91
-              93:   45(fvec4) Load 78(inF1)
-                              Store 92(param) 93
-              95:   45(fvec4) Load 81(inF2)
-                              Store 94(param) 95
-              97:   47(ivec4) Load 84(inI0)
-                              Store 96(param) 97
-              98:   45(fvec4) FunctionCall 54(@ComputeShaderFunction(vf4;vf4;vf4;vi4;) 90(param) 92(param) 94(param) 96(param)
-                              Store 89(@entryPointOutput) 98
+        56(inF0):     46(ptr) Variable Function
+        60(inF1):     46(ptr) Variable Function
+        63(inF2):     46(ptr) Variable Function
+        66(inI0):     48(ptr) Variable Function
+       70(param):     46(ptr) Variable Function
+       72(param):     46(ptr) Variable Function
+       74(param):     46(ptr) Variable Function
+       76(param):     48(ptr) Variable Function
+              59:   45(fvec4) Load 58(inF0)
+                              Store 56(inF0) 59
+              62:   45(fvec4) Load 61(inF1)
+                              Store 60(inF1) 62
+              65:   45(fvec4) Load 64(inF2)
+                              Store 63(inF2) 65
+              69:   47(ivec4) Load 68(inI0)
+                              Store 66(inI0) 69
+              71:   45(fvec4) Load 56(inF0)
+                              Store 70(param) 71
+              73:   45(fvec4) Load 60(inF1)
+                              Store 72(param) 73
+              75:   45(fvec4) Load 63(inF2)
+                              Store 74(param) 75
+              77:   47(ivec4) Load 66(inI0)
+                              Store 76(param) 77
+              78:           2 FunctionCall 54(@ComputeShaderFunction(vf4;vf4;vf4;vi4;) 70(param) 72(param) 74(param) 76(param)
                               Return
                               FunctionEnd
-15(ComputeShaderFunctionS(f1;f1;f1;i1;):    6(float) Function None 10
+15(ComputeShaderFunctionS(f1;f1;f1;i1;):           2 Function None 10
         11(inF0):      7(ptr) FunctionParameter
         12(inF1):      7(ptr) FunctionParameter
         13(inF2):      7(ptr) FunctionParameter
         14(inI0):      9(ptr) FunctionParameter
               16:             Label
-                              ReturnValue 56
+                              Return
                               FunctionEnd
-21(ComputeShaderFunction1(vf1;vf1;vf1;vi1;):    6(float) Function None 10
+21(ComputeShaderFunction1(vf1;vf1;vf1;vi1;):           2 Function None 10
         17(inF0):      7(ptr) FunctionParameter
         18(inF1):      7(ptr) FunctionParameter
         19(inF2):      7(ptr) FunctionParameter
         20(inI0):      9(ptr) FunctionParameter
               22:             Label
-                              ReturnValue 56
+                              Return
                               FunctionEnd
-32(ComputeShaderFunction2(vf2;vf2;vf2;vi2;):   23(fvec2) Function None 27
+32(ComputeShaderFunction2(vf2;vf2;vf2;vi2;):           2 Function None 27
         28(inF0):     24(ptr) FunctionParameter
         29(inF1):     24(ptr) FunctionParameter
         30(inF2):     24(ptr) FunctionParameter
         31(inI0):     26(ptr) FunctionParameter
               33:             Label
-                              ReturnValue 63
+                              Return
                               FunctionEnd
-43(ComputeShaderFunction3(vf3;vf3;vf3;vi3;):   34(fvec3) Function None 38
+43(ComputeShaderFunction3(vf3;vf3;vf3;vi3;):           2 Function None 38
         39(inF0):     35(ptr) FunctionParameter
         40(inF1):     35(ptr) FunctionParameter
         41(inF2):     35(ptr) FunctionParameter
         42(inI0):     37(ptr) FunctionParameter
               44:             Label
-                              ReturnValue 67
+                              Return
                               FunctionEnd
-54(@ComputeShaderFunction(vf4;vf4;vf4;vi4;):   45(fvec4) Function None 49
+54(@ComputeShaderFunction(vf4;vf4;vf4;vi4;):           2 Function None 49
         50(inF0):     46(ptr) FunctionParameter
         51(inF1):     46(ptr) FunctionParameter
         52(inF2):     46(ptr) FunctionParameter
         53(inI0):     48(ptr) FunctionParameter
               55:             Label
-                              ReturnValue 71
+                              Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.intrinsics.negative.frag.out b/Test/baseResults/hlsl.intrinsics.negative.frag.out
index 980cc96..4c021e0 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.frag.out
@@ -224,9 +224,9 @@
 0:57      Constant:
 0:57        0.000000
 0:59      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
+0:59        Constant:
+0:59          1.000000
+0:59          2.000000
 0:63  Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; ( temp 3-component vector of float)
 0:63    Function Parameters: 
 0:63      'inF0' ( in 3-component vector of float)
@@ -283,10 +283,10 @@
 0:73      Constant:
 0:73        0.000000
 0:76      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
+0:76        Constant:
+0:76          1.000000
+0:76          2.000000
+0:76          3.000000
 0:80  Function Definition: @PixelShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
 0:80    Function Parameters: 
 0:80      'inF0' ( in 4-component vector of float)
@@ -355,11 +355,11 @@
 0:90      Constant:
 0:90        0.000000
 0:92      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:92        Constant:
+0:92          1.000000
+0:92          2.000000
+0:92          3.000000
+0:92          4.000000
 0:80  Function Definition: PixelShaderFunction( ( temp void)
 0:80    Function Parameters: 
 0:?     Sequence
@@ -415,11 +415,11 @@
 0:117      Constant:
 0:117        0.000000
 0:119      Branch: Return with expression
-0:?         Constant:
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
+0:119        Constant:
+0:119          2.000000
+0:119          2.000000
+0:119          2.000000
+0:119          2.000000
 0:123  Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
 0:123    Function Parameters: 
 0:123      'inF0' ( in 3X3 matrix of float)
@@ -453,16 +453,16 @@
 0:125      Constant:
 0:125        0.000000
 0:127      Branch: Return with expression
-0:?         Constant:
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
+0:127        Constant:
+0:127          3.000000
+0:127          3.000000
+0:127          3.000000
+0:127          3.000000
+0:127          3.000000
+0:127          3.000000
+0:127          3.000000
+0:127          3.000000
+0:127          3.000000
 0:131  Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
 0:131    Function Parameters: 
 0:131      'inF0' ( in 4X4 matrix of float)
@@ -496,23 +496,23 @@
 0:133      Constant:
 0:133        0.000000
 0:135      Branch: Return with expression
-0:?         Constant:
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
+0:135        Constant:
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
 0:?   Linker Objects
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     'inF0' (layout( location=0) in 4-component vector of float)
@@ -687,9 +687,9 @@
 0:57      Constant:
 0:57        0.000000
 0:59      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
+0:59        Constant:
+0:59          1.000000
+0:59          2.000000
 0:63  Function Definition: PixelShaderFunction3(vf3;vf3;vf3;vi3; ( temp 3-component vector of float)
 0:63    Function Parameters: 
 0:63      'inF0' ( in 3-component vector of float)
@@ -746,10 +746,10 @@
 0:73      Constant:
 0:73        0.000000
 0:76      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
+0:76        Constant:
+0:76          1.000000
+0:76          2.000000
+0:76          3.000000
 0:80  Function Definition: @PixelShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
 0:80    Function Parameters: 
 0:80      'inF0' ( in 4-component vector of float)
@@ -818,11 +818,11 @@
 0:90      Constant:
 0:90        0.000000
 0:92      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:92        Constant:
+0:92          1.000000
+0:92          2.000000
+0:92          3.000000
+0:92          4.000000
 0:80  Function Definition: PixelShaderFunction( ( temp void)
 0:80    Function Parameters: 
 0:?     Sequence
@@ -878,11 +878,11 @@
 0:117      Constant:
 0:117        0.000000
 0:119      Branch: Return with expression
-0:?         Constant:
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
+0:119        Constant:
+0:119          2.000000
+0:119          2.000000
+0:119          2.000000
+0:119          2.000000
 0:123  Function Definition: PixelShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
 0:123    Function Parameters: 
 0:123      'inF0' ( in 3X3 matrix of float)
@@ -916,16 +916,16 @@
 0:125      Constant:
 0:125        0.000000
 0:127      Branch: Return with expression
-0:?         Constant:
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
+0:127        Constant:
+0:127          3.000000
+0:127          3.000000
+0:127          3.000000
+0:127          3.000000
+0:127          3.000000
+0:127          3.000000
+0:127          3.000000
+0:127          3.000000
+0:127          3.000000
 0:131  Function Definition: PixelShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
 0:131    Function Parameters: 
 0:131      'inF0' ( in 4X4 matrix of float)
@@ -959,23 +959,23 @@
 0:133      Constant:
 0:133        0.000000
 0:135      Branch: Return with expression
-0:?         Constant:
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
+0:135        Constant:
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
+0:135          4.000000
 0:?   Linker Objects
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     'inF0' (layout( location=0) in 4-component vector of float)
diff --git a/Test/baseResults/hlsl.intrinsics.negative.vert.out b/Test/baseResults/hlsl.intrinsics.negative.vert.out
index 0f74c7e..f1ab582 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.vert.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.vert.out
@@ -29,9 +29,9 @@
 0:84      'inI0' ( in 2-component vector of int)
 0:?     Sequence
 0:127      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
+0:127        Constant:
+0:127          1.000000
+0:127          2.000000
 0:131  Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vi3; ( temp 3-component vector of float)
 0:131    Function Parameters: 
 0:131      'inF0' ( in 3-component vector of float)
@@ -40,10 +40,10 @@
 0:131      'inI0' ( in 3-component vector of int)
 0:?     Sequence
 0:172      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
+0:172        Constant:
+0:172          1.000000
+0:172          2.000000
+0:172          3.000000
 0:176  Function Definition: @VertexShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
 0:176    Function Parameters: 
 0:176      'inF0' ( in 4-component vector of float)
@@ -52,11 +52,11 @@
 0:176      'inI0' ( in 4-component vector of int)
 0:?     Sequence
 0:217      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:217        Constant:
+0:217          1.000000
+0:217          2.000000
+0:217          3.000000
+0:217          4.000000
 0:176  Function Definition: VertexShaderFunction( ( temp void)
 0:176    Function Parameters: 
 0:?     Sequence
@@ -86,11 +86,11 @@
 0:226      'inF2' ( in 2X2 matrix of float)
 0:?     Sequence
 0:230      Branch: Return with expression
-0:?         Constant:
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
+0:230        Constant:
+0:230          2.000000
+0:230          2.000000
+0:230          2.000000
+0:230          2.000000
 0:234  Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
 0:234    Function Parameters: 
 0:234      'inF0' ( in 3X3 matrix of float)
@@ -98,16 +98,16 @@
 0:234      'inF2' ( in 3X3 matrix of float)
 0:?     Sequence
 0:238      Branch: Return with expression
-0:?         Constant:
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
+0:238        Constant:
+0:238          3.000000
+0:238          3.000000
+0:238          3.000000
+0:238          3.000000
+0:238          3.000000
+0:238          3.000000
+0:238          3.000000
+0:238          3.000000
+0:238          3.000000
 0:242  Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
 0:242    Function Parameters: 
 0:242      'inF0' ( in 4X4 matrix of float)
@@ -115,23 +115,23 @@
 0:242      'inF2' ( in 4X4 matrix of float)
 0:?     Sequence
 0:246      Branch: Return with expression
-0:?         Constant:
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
+0:246        Constant:
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
 0:?   Linker Objects
 0:?     'gs_ua' ( global uint)
 0:?     'gs_ub' ( global uint)
@@ -185,9 +185,9 @@
 0:84      'inI0' ( in 2-component vector of int)
 0:?     Sequence
 0:127      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
+0:127        Constant:
+0:127          1.000000
+0:127          2.000000
 0:131  Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vi3; ( temp 3-component vector of float)
 0:131    Function Parameters: 
 0:131      'inF0' ( in 3-component vector of float)
@@ -196,10 +196,10 @@
 0:131      'inI0' ( in 3-component vector of int)
 0:?     Sequence
 0:172      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
+0:172        Constant:
+0:172          1.000000
+0:172          2.000000
+0:172          3.000000
 0:176  Function Definition: @VertexShaderFunction(vf4;vf4;vf4;vi4; ( temp 4-component vector of float)
 0:176    Function Parameters: 
 0:176      'inF0' ( in 4-component vector of float)
@@ -208,11 +208,11 @@
 0:176      'inI0' ( in 4-component vector of int)
 0:?     Sequence
 0:217      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:217        Constant:
+0:217          1.000000
+0:217          2.000000
+0:217          3.000000
+0:217          4.000000
 0:176  Function Definition: VertexShaderFunction( ( temp void)
 0:176    Function Parameters: 
 0:?     Sequence
@@ -242,11 +242,11 @@
 0:226      'inF2' ( in 2X2 matrix of float)
 0:?     Sequence
 0:230      Branch: Return with expression
-0:?         Constant:
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
+0:230        Constant:
+0:230          2.000000
+0:230          2.000000
+0:230          2.000000
+0:230          2.000000
 0:234  Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
 0:234    Function Parameters: 
 0:234      'inF0' ( in 3X3 matrix of float)
@@ -254,16 +254,16 @@
 0:234      'inF2' ( in 3X3 matrix of float)
 0:?     Sequence
 0:238      Branch: Return with expression
-0:?         Constant:
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
+0:238        Constant:
+0:238          3.000000
+0:238          3.000000
+0:238          3.000000
+0:238          3.000000
+0:238          3.000000
+0:238          3.000000
+0:238          3.000000
+0:238          3.000000
+0:238          3.000000
 0:242  Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
 0:242    Function Parameters: 
 0:242      'inF0' ( in 4X4 matrix of float)
@@ -271,23 +271,23 @@
 0:242      'inF2' ( in 4X4 matrix of float)
 0:?     Sequence
 0:246      Branch: Return with expression
-0:?         Constant:
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
+0:246        Constant:
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
+0:246          4.000000
 0:?   Linker Objects
 0:?     'gs_ua' ( global uint)
 0:?     'gs_ub' ( global uint)
diff --git a/Test/baseResults/hlsl.intrinsics.promote.down.frag.out b/Test/baseResults/hlsl.intrinsics.promote.down.frag.out
index b17c7e6..bd73fae 100644
--- a/Test/baseResults/hlsl.intrinsics.promote.down.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.promote.down.frag.out
@@ -28,11 +28,11 @@
 0:20          'ps_output' ( temp structure{ temp 4-component vector of float color})
 0:20          Constant:
 0:20            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:20        Constant:
+0:20          0.000000
+0:20          0.000000
+0:20          0.000000
+0:20          0.000000
 0:21      Branch: Return with expression
 0:21        'ps_output' ( temp structure{ temp 4-component vector of float color})
 0:15  Function Definition: main( ( temp void)
@@ -82,11 +82,11 @@
 0:20          'ps_output' ( temp structure{ temp 4-component vector of float color})
 0:20          Constant:
 0:20            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:20        Constant:
+0:20          0.000000
+0:20          0.000000
+0:20          0.000000
+0:20          0.000000
 0:21      Branch: Return with expression
 0:21        'ps_output' ( temp structure{ temp 4-component vector of float color})
 0:15  Function Definition: main( ( temp void)
diff --git a/Test/baseResults/hlsl.intrinsics.vert.out b/Test/baseResults/hlsl.intrinsics.vert.out
index 384f693..647570c 100644
--- a/Test/baseResults/hlsl.intrinsics.vert.out
+++ b/Test/baseResults/hlsl.intrinsics.vert.out
@@ -191,10 +191,10 @@
 0:83        'inF0' ( in 2-component vector of float)
 0:84      hyp. cosine ( temp 2-component vector of float)
 0:84        'inF0' ( in 2-component vector of float)
-0:?       bitCount ( temp 2-component vector of int)
-0:?         Constant:
-0:?           7 (const int)
-0:?           3 (const int)
+0:85      bitCount ( temp 2-component vector of int)
+0:85        Constant:
+0:85          7 (const int)
+0:85          3 (const int)
 0:86      degrees ( temp 2-component vector of float)
 0:86        'inF0' ( in 2-component vector of float)
 0:87      distance ( temp float)
@@ -267,10 +267,10 @@
 0:116        'inF1' ( in 2-component vector of float)
 0:116        Constant:
 0:116          2.000000
-0:?       bitFieldReverse ( temp 2-component vector of int)
-0:?         Constant:
-0:?           1 (const int)
-0:?           2 (const int)
+0:117      bitFieldReverse ( temp 2-component vector of int)
+0:117        Constant:
+0:117          1 (const int)
+0:117          2 (const int)
 0:118      roundEven ( temp 2-component vector of float)
 0:118        'inF0' ( in 2-component vector of float)
 0:119      inverse sqrt ( temp 2-component vector of float)
@@ -312,9 +312,9 @@
 0:131      trunc ( temp 2-component vector of float)
 0:131        'inF0' ( in 2-component vector of float)
 0:134      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
+0:134        Constant:
+0:134          1.000000
+0:134          2.000000
 0:138  Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float)
 0:138    Function Parameters: 
 0:138      'inF0' ( in 3-component vector of float)
@@ -356,11 +356,11 @@
 0:152        'inF0' ( in 3-component vector of float)
 0:153      hyp. cosine ( temp 3-component vector of float)
 0:153        'inF0' ( in 3-component vector of float)
-0:?       bitCount ( temp 3-component vector of int)
-0:?         Constant:
-0:?           7 (const int)
-0:?           3 (const int)
-0:?           5 (const int)
+0:154      bitCount ( temp 3-component vector of int)
+0:154        Constant:
+0:154          7 (const int)
+0:154          3 (const int)
+0:154          5 (const int)
 0:155      cross-product ( temp 3-component vector of float)
 0:155        'inF0' ( in 3-component vector of float)
 0:155        'inF1' ( in 3-component vector of float)
@@ -436,11 +436,11 @@
 0:186        'inF1' ( in 3-component vector of float)
 0:186        Constant:
 0:186          2.000000
-0:?       bitFieldReverse ( temp 3-component vector of int)
-0:?         Constant:
-0:?           1 (const int)
-0:?           2 (const int)
-0:?           3 (const int)
+0:187      bitFieldReverse ( temp 3-component vector of int)
+0:187        Constant:
+0:187          1 (const int)
+0:187          2 (const int)
+0:187          3 (const int)
 0:188      roundEven ( temp 3-component vector of float)
 0:188        'inF0' ( in 3-component vector of float)
 0:189      inverse sqrt ( temp 3-component vector of float)
@@ -482,10 +482,10 @@
 0:201      trunc ( temp 3-component vector of float)
 0:201        'inF0' ( in 3-component vector of float)
 0:204      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
+0:204        Constant:
+0:204          1.000000
+0:204          2.000000
+0:204          3.000000
 0:208  Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
 0:208    Function Parameters: 
 0:208      'inF0' ( in 4-component vector of float)
@@ -527,12 +527,12 @@
 0:222        'inF0' ( in 4-component vector of float)
 0:223      hyp. cosine ( temp 4-component vector of float)
 0:223        'inF0' ( in 4-component vector of float)
-0:?       bitCount ( temp 4-component vector of int)
-0:?         Constant:
-0:?           7 (const int)
-0:?           3 (const int)
-0:?           5 (const int)
-0:?           2 (const int)
+0:224      bitCount ( temp 4-component vector of int)
+0:224        Constant:
+0:224          7 (const int)
+0:224          3 (const int)
+0:224          5 (const int)
+0:224          2 (const int)
 0:225      degrees ( temp 4-component vector of float)
 0:225        'inF0' ( in 4-component vector of float)
 0:226      distance ( temp float)
@@ -625,12 +625,12 @@
 0:256        'inF1' ( in 4-component vector of float)
 0:256        Constant:
 0:256          2.000000
-0:?       bitFieldReverse ( temp 4-component vector of int)
-0:?         Constant:
-0:?           1 (const int)
-0:?           2 (const int)
-0:?           3 (const int)
-0:?           4 (const int)
+0:257      bitFieldReverse ( temp 4-component vector of int)
+0:257        Constant:
+0:257          1 (const int)
+0:257          2 (const int)
+0:257          3 (const int)
+0:257          4 (const int)
 0:258      roundEven ( temp 4-component vector of float)
 0:258        'inF0' ( in 4-component vector of float)
 0:259      inverse sqrt ( temp 4-component vector of float)
@@ -672,11 +672,11 @@
 0:271      trunc ( temp 4-component vector of float)
 0:271        'inF0' ( in 4-component vector of float)
 0:274      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:274        Constant:
+0:274          1.000000
+0:274          2.000000
+0:274          3.000000
+0:274          4.000000
 0:331  Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float)
 0:331    Function Parameters: 
 0:331      'inF0' ( in 2X2 matrix of float)
@@ -801,11 +801,11 @@
 0:333      trunc ( temp 2X2 matrix of float)
 0:333        'inF0' ( in 2X2 matrix of float)
 0:336      Branch: Return with expression
-0:?         Constant:
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
+0:336        Constant:
+0:336          2.000000
+0:336          2.000000
+0:336          2.000000
+0:336          2.000000
 0:340  Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
 0:340    Function Parameters: 
 0:340      'inF0' ( in 3X3 matrix of float)
@@ -930,16 +930,16 @@
 0:342      trunc ( temp 3X3 matrix of float)
 0:342        'inF0' ( in 3X3 matrix of float)
 0:345      Branch: Return with expression
-0:?         Constant:
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
+0:345        Constant:
+0:345          3.000000
+0:345          3.000000
+0:345          3.000000
+0:345          3.000000
+0:345          3.000000
+0:345          3.000000
+0:345          3.000000
+0:345          3.000000
+0:345          3.000000
 0:349  Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
 0:349    Function Parameters: 
 0:349      'inF0' ( in 4X4 matrix of float)
@@ -1064,23 +1064,23 @@
 0:351      trunc ( temp 4X4 matrix of float)
 0:351        'inF0' ( in 4X4 matrix of float)
 0:354      Branch: Return with expression
-0:?         Constant:
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
+0:354        Constant:
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
 0:372  Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void)
 0:372    Function Parameters: 
 0:372      'inF0' ( in float)
@@ -1583,10 +1583,10 @@
 0:83        'inF0' ( in 2-component vector of float)
 0:84      hyp. cosine ( temp 2-component vector of float)
 0:84        'inF0' ( in 2-component vector of float)
-0:?       bitCount ( temp 2-component vector of int)
-0:?         Constant:
-0:?           7 (const int)
-0:?           3 (const int)
+0:85      bitCount ( temp 2-component vector of int)
+0:85        Constant:
+0:85          7 (const int)
+0:85          3 (const int)
 0:86      degrees ( temp 2-component vector of float)
 0:86        'inF0' ( in 2-component vector of float)
 0:87      distance ( temp float)
@@ -1659,10 +1659,10 @@
 0:116        'inF1' ( in 2-component vector of float)
 0:116        Constant:
 0:116          2.000000
-0:?       bitFieldReverse ( temp 2-component vector of int)
-0:?         Constant:
-0:?           1 (const int)
-0:?           2 (const int)
+0:117      bitFieldReverse ( temp 2-component vector of int)
+0:117        Constant:
+0:117          1 (const int)
+0:117          2 (const int)
 0:118      roundEven ( temp 2-component vector of float)
 0:118        'inF0' ( in 2-component vector of float)
 0:119      inverse sqrt ( temp 2-component vector of float)
@@ -1704,9 +1704,9 @@
 0:131      trunc ( temp 2-component vector of float)
 0:131        'inF0' ( in 2-component vector of float)
 0:134      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
+0:134        Constant:
+0:134          1.000000
+0:134          2.000000
 0:138  Function Definition: VertexShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float)
 0:138    Function Parameters: 
 0:138      'inF0' ( in 3-component vector of float)
@@ -1748,11 +1748,11 @@
 0:152        'inF0' ( in 3-component vector of float)
 0:153      hyp. cosine ( temp 3-component vector of float)
 0:153        'inF0' ( in 3-component vector of float)
-0:?       bitCount ( temp 3-component vector of int)
-0:?         Constant:
-0:?           7 (const int)
-0:?           3 (const int)
-0:?           5 (const int)
+0:154      bitCount ( temp 3-component vector of int)
+0:154        Constant:
+0:154          7 (const int)
+0:154          3 (const int)
+0:154          5 (const int)
 0:155      cross-product ( temp 3-component vector of float)
 0:155        'inF0' ( in 3-component vector of float)
 0:155        'inF1' ( in 3-component vector of float)
@@ -1828,11 +1828,11 @@
 0:186        'inF1' ( in 3-component vector of float)
 0:186        Constant:
 0:186          2.000000
-0:?       bitFieldReverse ( temp 3-component vector of int)
-0:?         Constant:
-0:?           1 (const int)
-0:?           2 (const int)
-0:?           3 (const int)
+0:187      bitFieldReverse ( temp 3-component vector of int)
+0:187        Constant:
+0:187          1 (const int)
+0:187          2 (const int)
+0:187          3 (const int)
 0:188      roundEven ( temp 3-component vector of float)
 0:188        'inF0' ( in 3-component vector of float)
 0:189      inverse sqrt ( temp 3-component vector of float)
@@ -1874,10 +1874,10 @@
 0:201      trunc ( temp 3-component vector of float)
 0:201        'inF0' ( in 3-component vector of float)
 0:204      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
+0:204        Constant:
+0:204          1.000000
+0:204          2.000000
+0:204          3.000000
 0:208  Function Definition: VertexShaderFunction4(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float)
 0:208    Function Parameters: 
 0:208      'inF0' ( in 4-component vector of float)
@@ -1919,12 +1919,12 @@
 0:222        'inF0' ( in 4-component vector of float)
 0:223      hyp. cosine ( temp 4-component vector of float)
 0:223        'inF0' ( in 4-component vector of float)
-0:?       bitCount ( temp 4-component vector of int)
-0:?         Constant:
-0:?           7 (const int)
-0:?           3 (const int)
-0:?           5 (const int)
-0:?           2 (const int)
+0:224      bitCount ( temp 4-component vector of int)
+0:224        Constant:
+0:224          7 (const int)
+0:224          3 (const int)
+0:224          5 (const int)
+0:224          2 (const int)
 0:225      degrees ( temp 4-component vector of float)
 0:225        'inF0' ( in 4-component vector of float)
 0:226      distance ( temp float)
@@ -2017,12 +2017,12 @@
 0:256        'inF1' ( in 4-component vector of float)
 0:256        Constant:
 0:256          2.000000
-0:?       bitFieldReverse ( temp 4-component vector of int)
-0:?         Constant:
-0:?           1 (const int)
-0:?           2 (const int)
-0:?           3 (const int)
-0:?           4 (const int)
+0:257      bitFieldReverse ( temp 4-component vector of int)
+0:257        Constant:
+0:257          1 (const int)
+0:257          2 (const int)
+0:257          3 (const int)
+0:257          4 (const int)
 0:258      roundEven ( temp 4-component vector of float)
 0:258        'inF0' ( in 4-component vector of float)
 0:259      inverse sqrt ( temp 4-component vector of float)
@@ -2064,11 +2064,11 @@
 0:271      trunc ( temp 4-component vector of float)
 0:271        'inF0' ( in 4-component vector of float)
 0:274      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:274        Constant:
+0:274          1.000000
+0:274          2.000000
+0:274          3.000000
+0:274          4.000000
 0:331  Function Definition: VertexShaderFunction2x2(mf22;mf22;mf22; ( temp 2X2 matrix of float)
 0:331    Function Parameters: 
 0:331      'inF0' ( in 2X2 matrix of float)
@@ -2193,11 +2193,11 @@
 0:333      trunc ( temp 2X2 matrix of float)
 0:333        'inF0' ( in 2X2 matrix of float)
 0:336      Branch: Return with expression
-0:?         Constant:
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
+0:336        Constant:
+0:336          2.000000
+0:336          2.000000
+0:336          2.000000
+0:336          2.000000
 0:340  Function Definition: VertexShaderFunction3x3(mf33;mf33;mf33; ( temp 3X3 matrix of float)
 0:340    Function Parameters: 
 0:340      'inF0' ( in 3X3 matrix of float)
@@ -2322,16 +2322,16 @@
 0:342      trunc ( temp 3X3 matrix of float)
 0:342        'inF0' ( in 3X3 matrix of float)
 0:345      Branch: Return with expression
-0:?         Constant:
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
-0:?           3.000000
+0:345        Constant:
+0:345          3.000000
+0:345          3.000000
+0:345          3.000000
+0:345          3.000000
+0:345          3.000000
+0:345          3.000000
+0:345          3.000000
+0:345          3.000000
+0:345          3.000000
 0:349  Function Definition: VertexShaderFunction4x4(mf44;mf44;mf44; ( temp 4X4 matrix of float)
 0:349    Function Parameters: 
 0:349      'inF0' ( in 4X4 matrix of float)
@@ -2456,23 +2456,23 @@
 0:351      trunc ( temp 4X4 matrix of float)
 0:351        'inF0' ( in 4X4 matrix of float)
 0:354      Branch: Return with expression
-0:?         Constant:
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
-0:?           4.000000
+0:354        Constant:
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
+0:354          4.000000
 0:372  Function Definition: TestGenMul2(f1;f1;vf2;vf2;mf22;mf22; ( temp void)
 0:372    Function Parameters: 
 0:372      'inF0' ( in float)
diff --git a/Test/baseResults/hlsl.layoutOverride.vert.out b/Test/baseResults/hlsl.layoutOverride.vert.out
index 83fa628..a3b8960 100644
--- a/Test/baseResults/hlsl.layoutOverride.vert.out
+++ b/Test/baseResults/hlsl.layoutOverride.vert.out
@@ -9,9 +9,9 @@
 0:6          Construct combined texture-sampler ( temp sampler2D)
 0:6            'tex' (layout( set=2 binding=0) uniform texture2D)
 0:6            'samp' ( uniform sampler)
-0:?           Constant:
-0:?             0.200000
-0:?             0.300000
+0:6          Constant:
+0:6            0.200000
+0:6            0.300000
 0:5  Function Definition: main( ( temp void)
 0:5    Function Parameters: 
 0:?     Sequence
@@ -37,9 +37,9 @@
 0:6          Construct combined texture-sampler ( temp sampler2D)
 0:6            'tex' (layout( set=2 binding=0) uniform texture2D)
 0:6            'samp' ( uniform sampler)
-0:?           Constant:
-0:?             0.200000
-0:?             0.300000
+0:6          Constant:
+0:6            0.200000
+0:6            0.300000
 0:5  Function Definition: main( ( temp void)
 0:5    Function Parameters: 
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
index 02365b8..daa28b2 100644
--- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
@@ -3,13 +3,20 @@
 gl_FragCoord origin is upper left
 using depth_any
 0:? Sequence
+0:23  Function Definition: getOffset( ( temp 2-component vector of int)
+0:23    Function Parameters: 
+0:?     Sequence
+0:24      Branch: Return with expression
+0:24        Constant:
+0:24          1 (const int)
+0:24          1 (const int)
 0:28  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:32      textureFetch ( temp 4-component vector of float)
 0:32        'g_tTex2dmsf4' ( uniform texture2DMS)
 0:32        c2: direct index for structure ( uniform 2-component vector of int)
-0:32          '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})
+0:32          '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})
 0:32          Constant:
 0:32            1 (const uint)
 0:32        Constant:
@@ -17,7 +24,7 @@
 0:33      textureFetch ( temp 4-component vector of int)
 0:33        'g_tTex2dmsi4' ( uniform itexture2DMS)
 0:33        c2: direct index for structure ( uniform 2-component vector of int)
-0:33          '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})
+0:33          '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})
 0:33          Constant:
 0:33            1 (const uint)
 0:33        Constant:
@@ -25,7 +32,7 @@
 0:34      textureFetch ( temp 4-component vector of uint)
 0:34        'g_tTex2dmsu4' ( uniform utexture2DMS)
 0:34        c2: direct index for structure ( uniform 2-component vector of int)
-0:34          '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})
+0:34          '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})
 0:34          Constant:
 0:34            1 (const uint)
 0:34        Constant:
@@ -33,43 +40,34 @@
 0:37      textureFetchOffset ( temp 4-component vector of float)
 0:37        'g_tTex2dmsf4' ( uniform texture2DMS)
 0:37        c2: direct index for structure ( uniform 2-component vector of int)
-0:37          '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})
+0:37          '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})
 0:37          Constant:
 0:37            1 (const uint)
 0:37        Constant:
 0:37          3 (const int)
-0:37        o2: direct index for structure ( uniform 2-component vector of int)
-0:37          '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})
-0:37          Constant:
-0:37            5 (const uint)
+0:37        Function Call: getOffset( ( temp 2-component vector of int)
 0:38      textureFetchOffset ( temp 4-component vector of int)
 0:38        'g_tTex2dmsi4' ( uniform itexture2DMS)
 0:38        c2: direct index for structure ( uniform 2-component vector of int)
-0:38          '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})
+0:38          '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})
 0:38          Constant:
 0:38            1 (const uint)
 0:38        Constant:
 0:38          3 (const int)
-0:38        o2: direct index for structure ( uniform 2-component vector of int)
-0:38          '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})
-0:38          Constant:
-0:38            5 (const uint)
+0:38        Function Call: getOffset( ( temp 2-component vector of int)
 0:39      textureFetchOffset ( temp 4-component vector of uint)
 0:39        'g_tTex2dmsu4' ( uniform utexture2DMS)
 0:39        c2: direct index for structure ( uniform 2-component vector of int)
-0:39          '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})
+0:39          '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})
 0:39          Constant:
 0:39            1 (const uint)
 0:39        Constant:
 0:39          3 (const int)
-0:39        o2: direct index for structure ( uniform 2-component vector of int)
-0:39          '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})
-0:39          Constant:
-0:39            5 (const uint)
+0:39        Function Call: getOffset( ( temp 2-component vector of int)
 0:42      textureFetch ( temp 4-component vector of float)
 0:42        'g_tTex2dmsf4a' ( uniform texture2DMSArray)
 0:42        c3: direct index for structure ( uniform 3-component vector of int)
-0:42          '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})
+0:42          '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})
 0:42          Constant:
 0:42            2 (const uint)
 0:42        Constant:
@@ -77,7 +75,7 @@
 0:43      textureFetch ( temp 4-component vector of int)
 0:43        'g_tTex2dmsi4a' ( uniform itexture2DMSArray)
 0:43        c3: direct index for structure ( uniform 3-component vector of int)
-0:43          '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})
+0:43          '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})
 0:43          Constant:
 0:43            2 (const uint)
 0:43        Constant:
@@ -85,7 +83,7 @@
 0:44      textureFetch ( temp 4-component vector of uint)
 0:44        'g_tTex2dmsu4a' ( uniform utexture2DMSArray)
 0:44        c3: direct index for structure ( uniform 3-component vector of int)
-0:44          '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})
+0:44          '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})
 0:44          Constant:
 0:44            2 (const uint)
 0:44        Constant:
@@ -93,39 +91,30 @@
 0:47      textureFetchOffset ( temp 4-component vector of float)
 0:47        'g_tTex2dmsf4a' ( uniform texture2DMSArray)
 0:47        c3: direct index for structure ( uniform 3-component vector of int)
-0:47          '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})
+0:47          '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})
 0:47          Constant:
 0:47            2 (const uint)
 0:47        Constant:
 0:47          3 (const int)
-0:47        o2: direct index for structure ( uniform 2-component vector of int)
-0:47          '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})
-0:47          Constant:
-0:47            5 (const uint)
+0:47        Function Call: getOffset( ( temp 2-component vector of int)
 0:48      textureFetchOffset ( temp 4-component vector of int)
 0:48        'g_tTex2dmsi4a' ( uniform itexture2DMSArray)
 0:48        c3: direct index for structure ( uniform 3-component vector of int)
-0:48          '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})
+0:48          '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})
 0:48          Constant:
 0:48            2 (const uint)
 0:48        Constant:
 0:48          3 (const int)
-0:48        o2: direct index for structure ( uniform 2-component vector of int)
-0:48          '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})
-0:48          Constant:
-0:48            5 (const uint)
+0:48        Function Call: getOffset( ( temp 2-component vector of int)
 0:49      textureFetchOffset ( temp 4-component vector of uint)
 0:49        'g_tTex2dmsu4a' ( uniform utexture2DMSArray)
 0:49        c3: direct index for structure ( uniform 3-component vector of int)
-0:49          '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})
+0:49          '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})
 0:49          Constant:
 0:49            2 (const uint)
 0:49        Constant:
 0:49          3 (const int)
-0:49        o2: direct index for structure ( uniform 2-component vector of int)
-0:49          '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})
-0:49          Constant:
-0:49            5 (const uint)
+0:49        Function Call: getOffset( ( temp 2-component vector of int)
 0:51      move second child to first child ( temp 4-component vector of float)
 0:51        Color: direct index for structure ( temp 4-component vector of float)
 0:51          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -172,7 +161,7 @@
 0:?     'g_tTex2dmsf4a' ( uniform texture2DMSArray)
 0:?     'g_tTex2dmsi4a' ( uniform itexture2DMSArray)
 0:?     'g_tTex2dmsu4a' ( uniform utexture2DMSArray)
-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})
+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})
 0:?     '@entryPointOutput.Depth' ( out float FragDepth)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
@@ -184,13 +173,20 @@
 gl_FragCoord origin is upper left
 using depth_any
 0:? Sequence
+0:23  Function Definition: getOffset( ( temp 2-component vector of int)
+0:23    Function Parameters: 
+0:?     Sequence
+0:24      Branch: Return with expression
+0:24        Constant:
+0:24          1 (const int)
+0:24          1 (const int)
 0:28  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
 0:32      textureFetch ( temp 4-component vector of float)
 0:32        'g_tTex2dmsf4' ( uniform texture2DMS)
 0:32        c2: direct index for structure ( uniform 2-component vector of int)
-0:32          '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})
+0:32          '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})
 0:32          Constant:
 0:32            1 (const uint)
 0:32        Constant:
@@ -198,7 +194,7 @@
 0:33      textureFetch ( temp 4-component vector of int)
 0:33        'g_tTex2dmsi4' ( uniform itexture2DMS)
 0:33        c2: direct index for structure ( uniform 2-component vector of int)
-0:33          '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})
+0:33          '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})
 0:33          Constant:
 0:33            1 (const uint)
 0:33        Constant:
@@ -206,7 +202,7 @@
 0:34      textureFetch ( temp 4-component vector of uint)
 0:34        'g_tTex2dmsu4' ( uniform utexture2DMS)
 0:34        c2: direct index for structure ( uniform 2-component vector of int)
-0:34          '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})
+0:34          '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})
 0:34          Constant:
 0:34            1 (const uint)
 0:34        Constant:
@@ -214,43 +210,34 @@
 0:37      textureFetchOffset ( temp 4-component vector of float)
 0:37        'g_tTex2dmsf4' ( uniform texture2DMS)
 0:37        c2: direct index for structure ( uniform 2-component vector of int)
-0:37          '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})
+0:37          '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})
 0:37          Constant:
 0:37            1 (const uint)
 0:37        Constant:
 0:37          3 (const int)
-0:37        o2: direct index for structure ( uniform 2-component vector of int)
-0:37          '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})
-0:37          Constant:
-0:37            5 (const uint)
+0:37        Function Call: getOffset( ( temp 2-component vector of int)
 0:38      textureFetchOffset ( temp 4-component vector of int)
 0:38        'g_tTex2dmsi4' ( uniform itexture2DMS)
 0:38        c2: direct index for structure ( uniform 2-component vector of int)
-0:38          '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})
+0:38          '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})
 0:38          Constant:
 0:38            1 (const uint)
 0:38        Constant:
 0:38          3 (const int)
-0:38        o2: direct index for structure ( uniform 2-component vector of int)
-0:38          '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})
-0:38          Constant:
-0:38            5 (const uint)
+0:38        Function Call: getOffset( ( temp 2-component vector of int)
 0:39      textureFetchOffset ( temp 4-component vector of uint)
 0:39        'g_tTex2dmsu4' ( uniform utexture2DMS)
 0:39        c2: direct index for structure ( uniform 2-component vector of int)
-0:39          '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})
+0:39          '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})
 0:39          Constant:
 0:39            1 (const uint)
 0:39        Constant:
 0:39          3 (const int)
-0:39        o2: direct index for structure ( uniform 2-component vector of int)
-0:39          '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})
-0:39          Constant:
-0:39            5 (const uint)
+0:39        Function Call: getOffset( ( temp 2-component vector of int)
 0:42      textureFetch ( temp 4-component vector of float)
 0:42        'g_tTex2dmsf4a' ( uniform texture2DMSArray)
 0:42        c3: direct index for structure ( uniform 3-component vector of int)
-0:42          '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})
+0:42          '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})
 0:42          Constant:
 0:42            2 (const uint)
 0:42        Constant:
@@ -258,7 +245,7 @@
 0:43      textureFetch ( temp 4-component vector of int)
 0:43        'g_tTex2dmsi4a' ( uniform itexture2DMSArray)
 0:43        c3: direct index for structure ( uniform 3-component vector of int)
-0:43          '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})
+0:43          '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})
 0:43          Constant:
 0:43            2 (const uint)
 0:43        Constant:
@@ -266,7 +253,7 @@
 0:44      textureFetch ( temp 4-component vector of uint)
 0:44        'g_tTex2dmsu4a' ( uniform utexture2DMSArray)
 0:44        c3: direct index for structure ( uniform 3-component vector of int)
-0:44          '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})
+0:44          '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})
 0:44          Constant:
 0:44            2 (const uint)
 0:44        Constant:
@@ -274,39 +261,30 @@
 0:47      textureFetchOffset ( temp 4-component vector of float)
 0:47        'g_tTex2dmsf4a' ( uniform texture2DMSArray)
 0:47        c3: direct index for structure ( uniform 3-component vector of int)
-0:47          '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})
+0:47          '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})
 0:47          Constant:
 0:47            2 (const uint)
 0:47        Constant:
 0:47          3 (const int)
-0:47        o2: direct index for structure ( uniform 2-component vector of int)
-0:47          '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})
-0:47          Constant:
-0:47            5 (const uint)
+0:47        Function Call: getOffset( ( temp 2-component vector of int)
 0:48      textureFetchOffset ( temp 4-component vector of int)
 0:48        'g_tTex2dmsi4a' ( uniform itexture2DMSArray)
 0:48        c3: direct index for structure ( uniform 3-component vector of int)
-0:48          '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})
+0:48          '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})
 0:48          Constant:
 0:48            2 (const uint)
 0:48        Constant:
 0:48          3 (const int)
-0:48        o2: direct index for structure ( uniform 2-component vector of int)
-0:48          '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})
-0:48          Constant:
-0:48            5 (const uint)
+0:48        Function Call: getOffset( ( temp 2-component vector of int)
 0:49      textureFetchOffset ( temp 4-component vector of uint)
 0:49        'g_tTex2dmsu4a' ( uniform utexture2DMSArray)
 0:49        c3: direct index for structure ( uniform 3-component vector of int)
-0:49          '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})
+0:49          '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})
 0:49          Constant:
 0:49            2 (const uint)
 0:49        Constant:
 0:49          3 (const int)
-0:49        o2: direct index for structure ( uniform 2-component vector of int)
-0:49          '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})
-0:49          Constant:
-0:49            5 (const uint)
+0:49        Function Call: getOffset( ( temp 2-component vector of int)
 0:51      move second child to first child ( temp 4-component vector of float)
 0:51        Color: direct index for structure ( temp 4-component vector of float)
 0:51          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -353,208 +331,199 @@
 0:?     'g_tTex2dmsf4a' ( uniform texture2DMSArray)
 0:?     'g_tTex2dmsi4a' ( uniform itexture2DMSArray)
 0:?     'g_tTex2dmsu4a' ( uniform utexture2DMSArray)
-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})
+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})
 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
+// Id's are bound by 129
 
                               Capability Shader
                               Capability ImageGatherExtended
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 120 124
+                              EntryPoint Fragment 4  "main" 119 123
                               ExecutionMode 4 OriginUpperLeft
                               ExecutionMode 4 DepthReplacing
                               Source HLSL 500
                               Name 4  "main"
-                              Name 8  "PS_OUTPUT"
-                              MemberName 8(PS_OUTPUT) 0  "Color"
-                              MemberName 8(PS_OUTPUT) 1  "Depth"
-                              Name 10  "@main("
-                              Name 14  "g_tTex2dmsf4"
-                              Name 20  "$Global"
-                              MemberName 20($Global) 0  "c1"
-                              MemberName 20($Global) 1  "c2"
-                              MemberName 20($Global) 2  "c3"
-                              MemberName 20($Global) 3  "c4"
-                              MemberName 20($Global) 4  "o1"
-                              MemberName 20($Global) 5  "o2"
-                              MemberName 20($Global) 6  "o3"
-                              MemberName 20($Global) 7  "o4"
-                              Name 22  ""
-                              Name 31  "g_tTex2dmsi4"
-                              Name 39  "g_tTex2dmsu4"
-                              Name 66  "g_tTex2dmsf4a"
-                              Name 75  "g_tTex2dmsi4a"
-                              Name 82  "g_tTex2dmsu4a"
-                              Name 106  "psout"
-                              Name 117  "flattenTemp"
-                              Name 120  "@entryPointOutput.Color"
-                              Name 124  "@entryPointOutput.Depth"
-                              Name 129  "g_sSamp"
-                              Decorate 14(g_tTex2dmsf4) DescriptorSet 0
-                              Decorate 14(g_tTex2dmsf4) Binding 1
-                              MemberDecorate 20($Global) 0 Offset 0
-                              MemberDecorate 20($Global) 1 Offset 8
-                              MemberDecorate 20($Global) 2 Offset 16
-                              MemberDecorate 20($Global) 3 Offset 32
-                              MemberDecorate 20($Global) 4 Offset 48
-                              MemberDecorate 20($Global) 5 Offset 56
-                              MemberDecorate 20($Global) 6 Offset 64
-                              MemberDecorate 20($Global) 7 Offset 80
-                              Decorate 20($Global) Block
-                              Decorate 22 DescriptorSet 0
-                              Decorate 22 Binding 7
-                              Decorate 31(g_tTex2dmsi4) DescriptorSet 0
-                              Decorate 31(g_tTex2dmsi4) Binding 2
-                              Decorate 39(g_tTex2dmsu4) DescriptorSet 0
-                              Decorate 39(g_tTex2dmsu4) Binding 3
-                              Decorate 66(g_tTex2dmsf4a) DescriptorSet 0
-                              Decorate 66(g_tTex2dmsf4a) Binding 4
-                              Decorate 75(g_tTex2dmsi4a) DescriptorSet 0
-                              Decorate 75(g_tTex2dmsi4a) Binding 5
-                              Decorate 82(g_tTex2dmsu4a) DescriptorSet 0
-                              Decorate 82(g_tTex2dmsu4a) Binding 6
-                              Decorate 120(@entryPointOutput.Color) Location 0
-                              Decorate 124(@entryPointOutput.Depth) BuiltIn FragDepth
-                              Decorate 129(g_sSamp) DescriptorSet 0
-                              Decorate 129(g_sSamp) Binding 0
+                              Name 9  "getOffset("
+                              Name 13  "PS_OUTPUT"
+                              MemberName 13(PS_OUTPUT) 0  "Color"
+                              MemberName 13(PS_OUTPUT) 1  "Depth"
+                              Name 15  "@main("
+                              Name 23  "g_tTex2dmsf4"
+                              Name 27  "$Global"
+                              MemberName 27($Global) 0  "c1"
+                              MemberName 27($Global) 1  "c2"
+                              MemberName 27($Global) 2  "c3"
+                              MemberName 27($Global) 3  "c4"
+                              Name 29  ""
+                              Name 37  "g_tTex2dmsi4"
+                              Name 45  "g_tTex2dmsu4"
+                              Name 68  "g_tTex2dmsf4a"
+                              Name 77  "g_tTex2dmsi4a"
+                              Name 84  "g_tTex2dmsu4a"
+                              Name 105  "psout"
+                              Name 116  "flattenTemp"
+                              Name 119  "@entryPointOutput.Color"
+                              Name 123  "@entryPointOutput.Depth"
+                              Name 128  "g_sSamp"
+                              Decorate 23(g_tTex2dmsf4) DescriptorSet 0
+                              Decorate 23(g_tTex2dmsf4) Binding 1
+                              MemberDecorate 27($Global) 0 Offset 0
+                              MemberDecorate 27($Global) 1 Offset 8
+                              MemberDecorate 27($Global) 2 Offset 16
+                              MemberDecorate 27($Global) 3 Offset 32
+                              Decorate 27($Global) Block
+                              Decorate 29 DescriptorSet 0
+                              Decorate 29 Binding 7
+                              Decorate 37(g_tTex2dmsi4) DescriptorSet 0
+                              Decorate 37(g_tTex2dmsi4) Binding 2
+                              Decorate 45(g_tTex2dmsu4) DescriptorSet 0
+                              Decorate 45(g_tTex2dmsu4) Binding 3
+                              Decorate 68(g_tTex2dmsf4a) DescriptorSet 0
+                              Decorate 68(g_tTex2dmsf4a) Binding 4
+                              Decorate 77(g_tTex2dmsi4a) DescriptorSet 0
+                              Decorate 77(g_tTex2dmsi4a) Binding 5
+                              Decorate 84(g_tTex2dmsu4a) DescriptorSet 0
+                              Decorate 84(g_tTex2dmsu4a) Binding 6
+                              Decorate 119(@entryPointOutput.Color) Location 0
+                              Decorate 123(@entryPointOutput.Depth) BuiltIn FragDepth
+                              Decorate 128(g_sSamp) DescriptorSet 0
+                              Decorate 128(g_sSamp) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
-               6:             TypeFloat 32
-               7:             TypeVector 6(float) 4
-    8(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
-               9:             TypeFunction 8(PS_OUTPUT)
-              12:             TypeImage 6(float) 2D multi-sampled sampled format:Unknown
-              13:             TypePointer UniformConstant 12
-14(g_tTex2dmsf4):     13(ptr) Variable UniformConstant
-              16:             TypeInt 32 1
-              17:             TypeVector 16(int) 2
-              18:             TypeVector 16(int) 3
-              19:             TypeVector 16(int) 4
-     20($Global):             TypeStruct 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 16(int) 17(ivec2) 18(ivec3) 19(ivec4)
-              21:             TypePointer Uniform 20($Global)
-              22:     21(ptr) Variable Uniform
-              23:     16(int) Constant 1
-              24:             TypePointer Uniform 17(ivec2)
-              27:     16(int) Constant 3
-              29:             TypeImage 16(int) 2D multi-sampled sampled format:Unknown
-              30:             TypePointer UniformConstant 29
-31(g_tTex2dmsi4):     30(ptr) Variable UniformConstant
-              36:             TypeInt 32 0
-              37:             TypeImage 36(int) 2D multi-sampled sampled format:Unknown
-              38:             TypePointer UniformConstant 37
-39(g_tTex2dmsu4):     38(ptr) Variable UniformConstant
-              43:             TypeVector 36(int) 4
-              48:     16(int) Constant 5
-              64:             TypeImage 6(float) 2D array multi-sampled sampled format:Unknown
-              65:             TypePointer UniformConstant 64
-66(g_tTex2dmsf4a):     65(ptr) Variable UniformConstant
-              68:     16(int) Constant 2
-              69:             TypePointer Uniform 18(ivec3)
-              73:             TypeImage 16(int) 2D array multi-sampled sampled format:Unknown
-              74:             TypePointer UniformConstant 73
-75(g_tTex2dmsi4a):     74(ptr) Variable UniformConstant
-              80:             TypeImage 36(int) 2D array multi-sampled sampled format:Unknown
-              81:             TypePointer UniformConstant 80
-82(g_tTex2dmsu4a):     81(ptr) Variable UniformConstant
-             105:             TypePointer Function 8(PS_OUTPUT)
-             107:     16(int) Constant 0
-             108:    6(float) Constant 1065353216
-             109:    7(fvec4) ConstantComposite 108 108 108 108
-             110:             TypePointer Function 7(fvec4)
-             112:             TypePointer Function 6(float)
-             119:             TypePointer Output 7(fvec4)
-120(@entryPointOutput.Color):    119(ptr) Variable Output
-             123:             TypePointer Output 6(float)
-124(@entryPointOutput.Depth):    123(ptr) Variable Output
-             127:             TypeSampler
-             128:             TypePointer UniformConstant 127
-    129(g_sSamp):    128(ptr) Variable UniformConstant
+               6:             TypeInt 32 1
+               7:             TypeVector 6(int) 2
+               8:             TypeFunction 7(ivec2)
+              11:             TypeFloat 32
+              12:             TypeVector 11(float) 4
+   13(PS_OUTPUT):             TypeStruct 12(fvec4) 11(float)
+              14:             TypeFunction 13(PS_OUTPUT)
+              17:      6(int) Constant 1
+              18:    7(ivec2) ConstantComposite 17 17
+              21:             TypeImage 11(float) 2D multi-sampled sampled format:Unknown
+              22:             TypePointer UniformConstant 21
+23(g_tTex2dmsf4):     22(ptr) Variable UniformConstant
+              25:             TypeVector 6(int) 3
+              26:             TypeVector 6(int) 4
+     27($Global):             TypeStruct 6(int) 7(ivec2) 25(ivec3) 26(ivec4)
+              28:             TypePointer Uniform 27($Global)
+              29:     28(ptr) Variable Uniform
+              30:             TypePointer Uniform 7(ivec2)
+              33:      6(int) Constant 3
+              35:             TypeImage 6(int) 2D multi-sampled sampled format:Unknown
+              36:             TypePointer UniformConstant 35
+37(g_tTex2dmsi4):     36(ptr) Variable UniformConstant
+              42:             TypeInt 32 0
+              43:             TypeImage 42(int) 2D multi-sampled sampled format:Unknown
+              44:             TypePointer UniformConstant 43
+45(g_tTex2dmsu4):     44(ptr) Variable UniformConstant
+              49:             TypeVector 42(int) 4
+              66:             TypeImage 11(float) 2D array multi-sampled sampled format:Unknown
+              67:             TypePointer UniformConstant 66
+68(g_tTex2dmsf4a):     67(ptr) Variable UniformConstant
+              70:      6(int) Constant 2
+              71:             TypePointer Uniform 25(ivec3)
+              75:             TypeImage 6(int) 2D array multi-sampled sampled format:Unknown
+              76:             TypePointer UniformConstant 75
+77(g_tTex2dmsi4a):     76(ptr) Variable UniformConstant
+              82:             TypeImage 42(int) 2D array multi-sampled sampled format:Unknown
+              83:             TypePointer UniformConstant 82
+84(g_tTex2dmsu4a):     83(ptr) Variable UniformConstant
+             104:             TypePointer Function 13(PS_OUTPUT)
+             106:      6(int) Constant 0
+             107:   11(float) Constant 1065353216
+             108:   12(fvec4) ConstantComposite 107 107 107 107
+             109:             TypePointer Function 12(fvec4)
+             111:             TypePointer Function 11(float)
+             118:             TypePointer Output 12(fvec4)
+119(@entryPointOutput.Color):    118(ptr) Variable Output
+             122:             TypePointer Output 11(float)
+123(@entryPointOutput.Depth):    122(ptr) Variable Output
+             126:             TypeSampler
+             127:             TypePointer UniformConstant 126
+    128(g_sSamp):    127(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-117(flattenTemp):    105(ptr) Variable Function
-             118:8(PS_OUTPUT) FunctionCall 10(@main()
-                              Store 117(flattenTemp) 118
-             121:    110(ptr) AccessChain 117(flattenTemp) 107
-             122:    7(fvec4) Load 121
-                              Store 120(@entryPointOutput.Color) 122
-             125:    112(ptr) AccessChain 117(flattenTemp) 23
-             126:    6(float) Load 125
-                              Store 124(@entryPointOutput.Depth) 126
+116(flattenTemp):    104(ptr) Variable Function
+             117:13(PS_OUTPUT) FunctionCall 15(@main()
+                              Store 116(flattenTemp) 117
+             120:    109(ptr) AccessChain 116(flattenTemp) 106
+             121:   12(fvec4) Load 120
+                              Store 119(@entryPointOutput.Color) 121
+             124:    111(ptr) AccessChain 116(flattenTemp) 17
+             125:   11(float) Load 124
+                              Store 123(@entryPointOutput.Depth) 125
                               Return
                               FunctionEnd
-      10(@main():8(PS_OUTPUT) Function None 9
-              11:             Label
-      106(psout):    105(ptr) Variable Function
-              15:          12 Load 14(g_tTex2dmsf4)
-              25:     24(ptr) AccessChain 22 23
-              26:   17(ivec2) Load 25
-              28:    7(fvec4) ImageFetch 15 26 Sample 27
-              32:          29 Load 31(g_tTex2dmsi4)
-              33:     24(ptr) AccessChain 22 23
-              34:   17(ivec2) Load 33
-              35:   19(ivec4) ImageFetch 32 34 Sample 27
-              40:          37 Load 39(g_tTex2dmsu4)
-              41:     24(ptr) AccessChain 22 23
-              42:   17(ivec2) Load 41
-              44:   43(ivec4) ImageFetch 40 42 Sample 27
-              45:          12 Load 14(g_tTex2dmsf4)
-              46:     24(ptr) AccessChain 22 23
-              47:   17(ivec2) Load 46
-              49:     24(ptr) AccessChain 22 48
-              50:   17(ivec2) Load 49
-              51:    7(fvec4) ImageFetch 45 47 Offset Sample 50 27
-              52:          29 Load 31(g_tTex2dmsi4)
-              53:     24(ptr) AccessChain 22 23
-              54:   17(ivec2) Load 53
-              55:     24(ptr) AccessChain 22 48
-              56:   17(ivec2) Load 55
-              57:   19(ivec4) ImageFetch 52 54 Offset Sample 56 27
-              58:          37 Load 39(g_tTex2dmsu4)
-              59:     24(ptr) AccessChain 22 23
-              60:   17(ivec2) Load 59
-              61:     24(ptr) AccessChain 22 48
-              62:   17(ivec2) Load 61
-              63:   43(ivec4) ImageFetch 58 60 Offset Sample 62 27
-              67:          64 Load 66(g_tTex2dmsf4a)
-              70:     69(ptr) AccessChain 22 68
-              71:   18(ivec3) Load 70
-              72:    7(fvec4) ImageFetch 67 71 Sample 27
-              76:          73 Load 75(g_tTex2dmsi4a)
-              77:     69(ptr) AccessChain 22 68
-              78:   18(ivec3) Load 77
-              79:   19(ivec4) ImageFetch 76 78 Sample 27
-              83:          80 Load 82(g_tTex2dmsu4a)
-              84:     69(ptr) AccessChain 22 68
-              85:   18(ivec3) Load 84
-              86:   43(ivec4) ImageFetch 83 85 Sample 27
-              87:          64 Load 66(g_tTex2dmsf4a)
-              88:     69(ptr) AccessChain 22 68
-              89:   18(ivec3) Load 88
-              90:     24(ptr) AccessChain 22 48
-              91:   17(ivec2) Load 90
-              92:    7(fvec4) ImageFetch 87 89 Offset Sample 91 27
-              93:          73 Load 75(g_tTex2dmsi4a)
-              94:     69(ptr) AccessChain 22 68
-              95:   18(ivec3) Load 94
-              96:     24(ptr) AccessChain 22 48
-              97:   17(ivec2) Load 96
-              98:   19(ivec4) ImageFetch 93 95 Offset Sample 97 27
-              99:          80 Load 82(g_tTex2dmsu4a)
-             100:     69(ptr) AccessChain 22 68
-             101:   18(ivec3) Load 100
-             102:     24(ptr) AccessChain 22 48
-             103:   17(ivec2) Load 102
-             104:   43(ivec4) ImageFetch 99 101 Offset Sample 103 27
-             111:    110(ptr) AccessChain 106(psout) 107
-                              Store 111 109
-             113:    112(ptr) AccessChain 106(psout) 23
-                              Store 113 108
-             114:8(PS_OUTPUT) Load 106(psout)
-                              ReturnValue 114
+   9(getOffset():    7(ivec2) Function None 8
+              10:             Label
+                              ReturnValue 18
+                              FunctionEnd
+      15(@main():13(PS_OUTPUT) Function None 14
+              16:             Label
+      105(psout):    104(ptr) Variable Function
+              24:          21 Load 23(g_tTex2dmsf4)
+              31:     30(ptr) AccessChain 29 17
+              32:    7(ivec2) Load 31
+              34:   12(fvec4) ImageFetch 24 32 Sample 33
+              38:          35 Load 37(g_tTex2dmsi4)
+              39:     30(ptr) AccessChain 29 17
+              40:    7(ivec2) Load 39
+              41:   26(ivec4) ImageFetch 38 40 Sample 33
+              46:          43 Load 45(g_tTex2dmsu4)
+              47:     30(ptr) AccessChain 29 17
+              48:    7(ivec2) Load 47
+              50:   49(ivec4) ImageFetch 46 48 Sample 33
+              51:          21 Load 23(g_tTex2dmsf4)
+              52:     30(ptr) AccessChain 29 17
+              53:    7(ivec2) Load 52
+              54:    7(ivec2) FunctionCall 9(getOffset()
+              55:   12(fvec4) ImageFetch 51 53 Offset Sample 54 33
+              56:          35 Load 37(g_tTex2dmsi4)
+              57:     30(ptr) AccessChain 29 17
+              58:    7(ivec2) Load 57
+              59:    7(ivec2) FunctionCall 9(getOffset()
+              60:   26(ivec4) ImageFetch 56 58 Offset Sample 59 33
+              61:          43 Load 45(g_tTex2dmsu4)
+              62:     30(ptr) AccessChain 29 17
+              63:    7(ivec2) Load 62
+              64:    7(ivec2) FunctionCall 9(getOffset()
+              65:   49(ivec4) ImageFetch 61 63 Offset Sample 64 33
+              69:          66 Load 68(g_tTex2dmsf4a)
+              72:     71(ptr) AccessChain 29 70
+              73:   25(ivec3) Load 72
+              74:   12(fvec4) ImageFetch 69 73 Sample 33
+              78:          75 Load 77(g_tTex2dmsi4a)
+              79:     71(ptr) AccessChain 29 70
+              80:   25(ivec3) Load 79
+              81:   26(ivec4) ImageFetch 78 80 Sample 33
+              85:          82 Load 84(g_tTex2dmsu4a)
+              86:     71(ptr) AccessChain 29 70
+              87:   25(ivec3) Load 86
+              88:   49(ivec4) ImageFetch 85 87 Sample 33
+              89:          66 Load 68(g_tTex2dmsf4a)
+              90:     71(ptr) AccessChain 29 70
+              91:   25(ivec3) Load 90
+              92:    7(ivec2) FunctionCall 9(getOffset()
+              93:   12(fvec4) ImageFetch 89 91 Offset Sample 92 33
+              94:          75 Load 77(g_tTex2dmsi4a)
+              95:     71(ptr) AccessChain 29 70
+              96:   25(ivec3) Load 95
+              97:    7(ivec2) FunctionCall 9(getOffset()
+              98:   26(ivec4) ImageFetch 94 96 Offset Sample 97 33
+              99:          82 Load 84(g_tTex2dmsu4a)
+             100:     71(ptr) AccessChain 29 70
+             101:   25(ivec3) Load 100
+             102:    7(ivec2) FunctionCall 9(getOffset()
+             103:   49(ivec4) ImageFetch 99 101 Offset Sample 102 33
+             110:    109(ptr) AccessChain 105(psout) 106
+                              Store 110 108
+             112:    111(ptr) AccessChain 105(psout) 17
+                              Store 112 107
+             113:13(PS_OUTPUT) Load 105(psout)
+                              ReturnValue 113
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.load.basic.dx10.vert.out b/Test/baseResults/hlsl.load.basic.dx10.vert.out
index a110532..8b9a04f 100644
--- a/Test/baseResults/hlsl.load.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.load.basic.dx10.vert.out
@@ -180,11 +180,11 @@
 0:67          'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:67          Constant:
 0:67            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:67        Constant:
+0:67          0.000000
+0:67          0.000000
+0:67          0.000000
+0:67          0.000000
 0:69      Branch: Return with expression
 0:69        'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:47  Function Definition: main( ( temp void)
@@ -408,11 +408,11 @@
 0:67          'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:67          Constant:
 0:67            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:67        Constant:
+0:67          0.000000
+0:67          0.000000
+0:67          0.000000
+0:67          0.000000
 0:69      Branch: Return with expression
 0:69        'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:47  Function Definition: main( ( temp void)
diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out
index 135b4af..106af53 100644
--- a/Test/baseResults/hlsl.load.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out
@@ -3,254 +3,248 @@
 gl_FragCoord origin is upper left
 using depth_any
 0:? Sequence
-0:48  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:43  Function Definition: getOffset1( ( temp int)
+0:43    Function Parameters: 
+0:?     Sequence
+0:44      Branch: Return with expression
+0:44        Constant:
+0:44          1 (const int)
+0:48  Function Definition: getOffset2( ( temp 2-component vector of int)
 0:48    Function Parameters: 
 0:?     Sequence
-0:52      textureFetchOffset ( temp 4-component vector of float)
-0:52        'g_tTex1df4' (layout( binding=0) uniform texture1D)
-0:52        vector swizzle ( temp int)
-0:52          c2: direct index for structure ( uniform 2-component vector of int)
-0:52            '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})
-0:52            Constant:
-0:52              1 (const uint)
-0:52          Sequence
-0:52            Constant:
-0:52              0 (const int)
-0:52        direct index ( temp int)
-0:52          c2: direct index for structure ( uniform 2-component vector of int)
-0:52            '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})
-0:52            Constant:
-0:52              1 (const uint)
-0:52          Constant:
-0:52            1 (const int)
-0:52        o1: direct index for structure ( uniform int)
-0:52          '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})
-0:52          Constant:
-0:52            4 (const uint)
-0:53      textureFetchOffset ( temp 4-component vector of int)
-0:53        'g_tTex1di4' ( uniform itexture1D)
-0:53        vector swizzle ( temp int)
-0:53          c2: direct index for structure ( uniform 2-component vector of int)
-0:53            '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})
-0:53            Constant:
-0:53              1 (const uint)
-0:53          Sequence
-0:53            Constant:
-0:53              0 (const int)
-0:53        direct index ( temp int)
-0:53          c2: direct index for structure ( uniform 2-component vector of int)
-0:53            '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})
-0:53            Constant:
-0:53              1 (const uint)
-0:53          Constant:
-0:53            1 (const int)
-0:53        o1: direct index for structure ( uniform int)
-0:53          '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})
-0:53          Constant:
-0:53            4 (const uint)
-0:54      textureFetchOffset ( temp 4-component vector of uint)
-0:54        'g_tTex1du4' ( uniform utexture1D)
-0:54        vector swizzle ( temp int)
-0:54          c2: direct index for structure ( uniform 2-component vector of int)
-0:54            '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})
-0:54            Constant:
-0:54              1 (const uint)
-0:54          Sequence
-0:54            Constant:
-0:54              0 (const int)
-0:54        direct index ( temp int)
-0:54          c2: direct index for structure ( uniform 2-component vector of int)
-0:54            '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})
-0:54            Constant:
-0:54              1 (const uint)
-0:54          Constant:
-0:54            1 (const int)
-0:54        o1: direct index for structure ( uniform int)
-0:54          '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})
-0:54          Constant:
-0:54            4 (const uint)
-0:57      textureFetchOffset ( temp 4-component vector of float)
-0:57        'g_tTex2df4' ( uniform texture2D)
-0:57        vector swizzle ( temp 2-component vector of int)
-0:57          c3: direct index for structure ( uniform 3-component vector of int)
-0:57            '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})
-0:57            Constant:
-0:57              2 (const uint)
-0:57          Sequence
-0:57            Constant:
-0:57              0 (const int)
-0:57            Constant:
-0:57              1 (const int)
-0:57        direct index ( temp int)
-0:57          c3: direct index for structure ( uniform 3-component vector of int)
-0:57            '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})
-0:57            Constant:
-0:57              2 (const uint)
-0:57          Constant:
-0:57            2 (const int)
-0:57        o2: direct index for structure ( uniform 2-component vector of int)
-0:57          '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})
-0:57          Constant:
-0:57            5 (const uint)
-0:58      textureFetchOffset ( temp 4-component vector of int)
-0:58        'g_tTex2di4' ( uniform itexture2D)
-0:58        vector swizzle ( temp 2-component vector of int)
-0:58          c3: direct index for structure ( uniform 3-component vector of int)
-0:58            '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})
-0:58            Constant:
-0:58              2 (const uint)
-0:58          Sequence
-0:58            Constant:
-0:58              0 (const int)
-0:58            Constant:
-0:58              1 (const int)
-0:58        direct index ( temp int)
-0:58          c3: direct index for structure ( uniform 3-component vector of int)
-0:58            '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})
-0:58            Constant:
-0:58              2 (const uint)
-0:58          Constant:
-0:58            2 (const int)
-0:58        o2: direct index for structure ( uniform 2-component vector of int)
-0:58          '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})
-0:58          Constant:
-0:58            5 (const uint)
-0:59      textureFetchOffset ( temp 4-component vector of uint)
-0:59        'g_tTex2du4' ( uniform utexture2D)
-0:59        vector swizzle ( temp 2-component vector of int)
-0:59          c3: direct index for structure ( uniform 3-component vector of int)
-0:59            '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})
-0:59            Constant:
-0:59              2 (const uint)
-0:59          Sequence
-0:59            Constant:
-0:59              0 (const int)
-0:59            Constant:
-0:59              1 (const int)
-0:59        direct index ( temp int)
-0:59          c3: direct index for structure ( uniform 3-component vector of int)
-0:59            '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})
-0:59            Constant:
-0:59              2 (const uint)
-0:59          Constant:
-0:59            2 (const int)
-0:59        o2: direct index for structure ( uniform 2-component vector of int)
-0:59          '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})
-0:59          Constant:
-0:59            5 (const uint)
+0:49      Branch: Return with expression
+0:49        Constant:
+0:49          1 (const int)
+0:49          1 (const int)
+0:53  Function Definition: getOffset3( ( temp 3-component vector of int)
+0:53    Function Parameters: 
+0:?     Sequence
+0:54      Branch: Return with expression
+0:54        Constant:
+0:54          1 (const int)
+0:54          1 (const int)
+0:54          1 (const int)
+0:58  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:58    Function Parameters: 
+0:?     Sequence
 0:62      textureFetchOffset ( temp 4-component vector of float)
-0:62        'g_tTex3df4' ( uniform texture3D)
-0:62        vector swizzle ( temp 3-component vector of int)
-0:62          c4: direct index for structure ( uniform 4-component vector of int)
-0:62            '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})
+0:62        'g_tTex1df4' (layout( binding=0) uniform texture1D)
+0:62        vector swizzle ( temp int)
+0:62          c2: direct index for structure ( uniform 2-component vector of int)
+0:62            '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})
 0:62            Constant:
-0:62              3 (const uint)
+0:62              1 (const uint)
 0:62          Sequence
 0:62            Constant:
 0:62              0 (const int)
-0:62            Constant:
-0:62              1 (const int)
-0:62            Constant:
-0:62              2 (const int)
 0:62        direct index ( temp int)
-0:62          c4: direct index for structure ( uniform 4-component vector of int)
-0:62            '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})
+0:62          c2: direct index for structure ( uniform 2-component vector of int)
+0:62            '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})
 0:62            Constant:
-0:62              3 (const uint)
+0:62              1 (const uint)
 0:62          Constant:
-0:62            3 (const int)
-0:62        o3: direct index for structure ( uniform 3-component vector of int)
-0:62          '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})
-0:62          Constant:
-0:62            6 (const uint)
+0:62            1 (const int)
+0:62        Function Call: getOffset1( ( temp int)
 0:63      textureFetchOffset ( temp 4-component vector of int)
-0:63        'g_tTex3di4' ( uniform itexture3D)
-0:63        vector swizzle ( temp 3-component vector of int)
-0:63          c4: direct index for structure ( uniform 4-component vector of int)
-0:63            '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})
+0:63        'g_tTex1di4' ( uniform itexture1D)
+0:63        vector swizzle ( temp int)
+0:63          c2: direct index for structure ( uniform 2-component vector of int)
+0:63            '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})
 0:63            Constant:
-0:63              3 (const uint)
+0:63              1 (const uint)
 0:63          Sequence
 0:63            Constant:
 0:63              0 (const int)
-0:63            Constant:
-0:63              1 (const int)
-0:63            Constant:
-0:63              2 (const int)
 0:63        direct index ( temp int)
-0:63          c4: direct index for structure ( uniform 4-component vector of int)
-0:63            '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})
+0:63          c2: direct index for structure ( uniform 2-component vector of int)
+0:63            '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})
 0:63            Constant:
-0:63              3 (const uint)
+0:63              1 (const uint)
 0:63          Constant:
-0:63            3 (const int)
-0:63        o3: direct index for structure ( uniform 3-component vector of int)
-0:63          '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})
-0:63          Constant:
-0:63            6 (const uint)
+0:63            1 (const int)
+0:63        Function Call: getOffset1( ( temp int)
 0:64      textureFetchOffset ( temp 4-component vector of uint)
-0:64        'g_tTex3du4' ( uniform utexture3D)
-0:64        vector swizzle ( temp 3-component vector of int)
-0:64          c4: direct index for structure ( uniform 4-component vector of int)
-0:64            '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})
+0:64        'g_tTex1du4' ( uniform utexture1D)
+0:64        vector swizzle ( temp int)
+0:64          c2: direct index for structure ( uniform 2-component vector of int)
+0:64            '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})
 0:64            Constant:
-0:64              3 (const uint)
+0:64              1 (const uint)
 0:64          Sequence
 0:64            Constant:
 0:64              0 (const int)
-0:64            Constant:
-0:64              1 (const int)
-0:64            Constant:
-0:64              2 (const int)
 0:64        direct index ( temp int)
-0:64          c4: direct index for structure ( uniform 4-component vector of int)
-0:64            '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})
+0:64          c2: direct index for structure ( uniform 2-component vector of int)
+0:64            '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})
 0:64            Constant:
-0:64              3 (const uint)
+0:64              1 (const uint)
 0:64          Constant:
-0:64            3 (const int)
-0:64        o3: direct index for structure ( uniform 3-component vector of int)
-0:64          '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})
-0:64          Constant:
-0:64            6 (const uint)
-0:72      move second child to first child ( temp 4-component vector of float)
-0:72        Color: direct index for structure ( temp 4-component vector of float)
-0:72          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:64            1 (const int)
+0:64        Function Call: getOffset1( ( temp int)
+0:67      textureFetchOffset ( temp 4-component vector of float)
+0:67        'g_tTex2df4' ( uniform texture2D)
+0:67        vector swizzle ( temp 2-component vector of int)
+0:67          c3: direct index for structure ( uniform 3-component vector of int)
+0:67            '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})
+0:67            Constant:
+0:67              2 (const uint)
+0:67          Sequence
+0:67            Constant:
+0:67              0 (const int)
+0:67            Constant:
+0:67              1 (const int)
+0:67        direct index ( temp int)
+0:67          c3: direct index for structure ( uniform 3-component vector of int)
+0:67            '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})
+0:67            Constant:
+0:67              2 (const uint)
+0:67          Constant:
+0:67            2 (const int)
+0:67        Function Call: getOffset2( ( temp 2-component vector of int)
+0:68      textureFetchOffset ( temp 4-component vector of int)
+0:68        'g_tTex2di4' ( uniform itexture2D)
+0:68        vector swizzle ( temp 2-component vector of int)
+0:68          c3: direct index for structure ( uniform 3-component vector of int)
+0:68            '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})
+0:68            Constant:
+0:68              2 (const uint)
+0:68          Sequence
+0:68            Constant:
+0:68              0 (const int)
+0:68            Constant:
+0:68              1 (const int)
+0:68        direct index ( temp int)
+0:68          c3: direct index for structure ( uniform 3-component vector of int)
+0:68            '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})
+0:68            Constant:
+0:68              2 (const uint)
+0:68          Constant:
+0:68            2 (const int)
+0:68        Function Call: getOffset2( ( temp 2-component vector of int)
+0:69      textureFetchOffset ( temp 4-component vector of uint)
+0:69        'g_tTex2du4' ( uniform utexture2D)
+0:69        vector swizzle ( temp 2-component vector of int)
+0:69          c3: direct index for structure ( uniform 3-component vector of int)
+0:69            '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})
+0:69            Constant:
+0:69              2 (const uint)
+0:69          Sequence
+0:69            Constant:
+0:69              0 (const int)
+0:69            Constant:
+0:69              1 (const int)
+0:69        direct index ( temp int)
+0:69          c3: direct index for structure ( uniform 3-component vector of int)
+0:69            '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})
+0:69            Constant:
+0:69              2 (const uint)
+0:69          Constant:
+0:69            2 (const int)
+0:69        Function Call: getOffset2( ( temp 2-component vector of int)
+0:72      textureFetchOffset ( temp 4-component vector of float)
+0:72        'g_tTex3df4' ( uniform texture3D)
+0:72        vector swizzle ( temp 3-component vector of int)
+0:72          c4: direct index for structure ( uniform 4-component vector of int)
+0:72            '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})
+0:72            Constant:
+0:72              3 (const uint)
+0:72          Sequence
+0:72            Constant:
+0:72              0 (const int)
+0:72            Constant:
+0:72              1 (const int)
+0:72            Constant:
+0:72              2 (const int)
+0:72        direct index ( temp int)
+0:72          c4: direct index for structure ( uniform 4-component vector of int)
+0:72            '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})
+0:72            Constant:
+0:72              3 (const uint)
 0:72          Constant:
-0:72            0 (const int)
-0:72        Constant:
-0:72          1.000000
-0:72          1.000000
-0:72          1.000000
-0:72          1.000000
-0:73      move second child to first child ( temp float)
-0:73        Depth: direct index for structure ( temp float)
-0:73          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:72            3 (const int)
+0:72        Function Call: getOffset3( ( temp 3-component vector of int)
+0:73      textureFetchOffset ( temp 4-component vector of int)
+0:73        'g_tTex3di4' ( uniform itexture3D)
+0:73        vector swizzle ( temp 3-component vector of int)
+0:73          c4: direct index for structure ( uniform 4-component vector of int)
+0:73            '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})
+0:73            Constant:
+0:73              3 (const uint)
+0:73          Sequence
+0:73            Constant:
+0:73              0 (const int)
+0:73            Constant:
+0:73              1 (const int)
+0:73            Constant:
+0:73              2 (const int)
+0:73        direct index ( temp int)
+0:73          c4: direct index for structure ( uniform 4-component vector of int)
+0:73            '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})
+0:73            Constant:
+0:73              3 (const uint)
 0:73          Constant:
-0:73            1 (const int)
-0:73        Constant:
-0:73          1.000000
-0:75      Branch: Return with expression
-0:75        'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48  Function Definition: main( ( temp void)
-0:48    Function Parameters: 
+0:73            3 (const int)
+0:73        Function Call: getOffset3( ( temp 3-component vector of int)
+0:74      textureFetchOffset ( temp 4-component vector of uint)
+0:74        'g_tTex3du4' ( uniform utexture3D)
+0:74        vector swizzle ( temp 3-component vector of int)
+0:74          c4: direct index for structure ( uniform 4-component vector of int)
+0:74            '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})
+0:74            Constant:
+0:74              3 (const uint)
+0:74          Sequence
+0:74            Constant:
+0:74              0 (const int)
+0:74            Constant:
+0:74              1 (const int)
+0:74            Constant:
+0:74              2 (const int)
+0:74        direct index ( temp int)
+0:74          c4: direct index for structure ( uniform 4-component vector of int)
+0:74            '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})
+0:74            Constant:
+0:74              3 (const uint)
+0:74          Constant:
+0:74            3 (const int)
+0:74        Function Call: getOffset3( ( temp 3-component vector of int)
+0:82      move second child to first child ( temp 4-component vector of float)
+0:82        Color: direct index for structure ( temp 4-component vector of float)
+0:82          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:82          Constant:
+0:82            0 (const int)
+0:82        Constant:
+0:82          1.000000
+0:82          1.000000
+0:82          1.000000
+0:82          1.000000
+0:83      move second child to first child ( temp float)
+0:83        Depth: direct index for structure ( temp float)
+0:83          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:83          Constant:
+0:83            1 (const int)
+0:83        Constant:
+0:83          1.000000
+0:85      Branch: Return with expression
+0:85        'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:58  Function Definition: main( ( temp void)
+0:58    Function Parameters: 
 0:?     Sequence
-0:48      Sequence
-0:48        move second child to first child ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48          'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48          Function Call: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48        move second child to first child ( temp 4-component vector of float)
+0:58      Sequence
+0:58        move second child to first child ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:58          'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:58          Function Call: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:58        move second child to first child ( temp 4-component vector of float)
 0:?           '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
-0:48          Color: direct index for structure ( temp 4-component vector of float)
-0:48            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48            Constant:
-0:48              0 (const int)
-0:48        move second child to first child ( temp float)
+0:58          Color: direct index for structure ( temp 4-component vector of float)
+0:58            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:58            Constant:
+0:58              0 (const int)
+0:58        move second child to first child ( temp float)
 0:?           '@entryPointOutput.Depth' ( out float FragDepth)
-0:48          Depth: direct index for structure ( temp float)
-0:48            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48            Constant:
-0:48              1 (const int)
+0:58          Depth: direct index for structure ( temp float)
+0:58            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:58            Constant:
+0:58              1 (const int)
 0:?   Linker Objects
 0:?     'g_sSamp' (layout( binding=0) uniform sampler)
 0:?     'g_tTex1df4' (layout( binding=0) uniform texture1D)
@@ -274,7 +268,7 @@
 0:?     'g_tTexcdf4a' ( uniform textureCubeArray)
 0:?     'g_tTexcdi4a' ( uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' ( uniform utextureCubeArray)
-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})
+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})
 0:?     '@entryPointOutput.Depth' ( out float FragDepth)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
@@ -286,254 +280,248 @@
 gl_FragCoord origin is upper left
 using depth_any
 0:? Sequence
-0:48  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:43  Function Definition: getOffset1( ( temp int)
+0:43    Function Parameters: 
+0:?     Sequence
+0:44      Branch: Return with expression
+0:44        Constant:
+0:44          1 (const int)
+0:48  Function Definition: getOffset2( ( temp 2-component vector of int)
 0:48    Function Parameters: 
 0:?     Sequence
-0:52      textureFetchOffset ( temp 4-component vector of float)
-0:52        'g_tTex1df4' (layout( binding=0) uniform texture1D)
-0:52        vector swizzle ( temp int)
-0:52          c2: direct index for structure ( uniform 2-component vector of int)
-0:52            '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})
-0:52            Constant:
-0:52              1 (const uint)
-0:52          Sequence
-0:52            Constant:
-0:52              0 (const int)
-0:52        direct index ( temp int)
-0:52          c2: direct index for structure ( uniform 2-component vector of int)
-0:52            '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})
-0:52            Constant:
-0:52              1 (const uint)
-0:52          Constant:
-0:52            1 (const int)
-0:52        o1: direct index for structure ( uniform int)
-0:52          '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})
-0:52          Constant:
-0:52            4 (const uint)
-0:53      textureFetchOffset ( temp 4-component vector of int)
-0:53        'g_tTex1di4' ( uniform itexture1D)
-0:53        vector swizzle ( temp int)
-0:53          c2: direct index for structure ( uniform 2-component vector of int)
-0:53            '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})
-0:53            Constant:
-0:53              1 (const uint)
-0:53          Sequence
-0:53            Constant:
-0:53              0 (const int)
-0:53        direct index ( temp int)
-0:53          c2: direct index for structure ( uniform 2-component vector of int)
-0:53            '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})
-0:53            Constant:
-0:53              1 (const uint)
-0:53          Constant:
-0:53            1 (const int)
-0:53        o1: direct index for structure ( uniform int)
-0:53          '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})
-0:53          Constant:
-0:53            4 (const uint)
-0:54      textureFetchOffset ( temp 4-component vector of uint)
-0:54        'g_tTex1du4' ( uniform utexture1D)
-0:54        vector swizzle ( temp int)
-0:54          c2: direct index for structure ( uniform 2-component vector of int)
-0:54            '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})
-0:54            Constant:
-0:54              1 (const uint)
-0:54          Sequence
-0:54            Constant:
-0:54              0 (const int)
-0:54        direct index ( temp int)
-0:54          c2: direct index for structure ( uniform 2-component vector of int)
-0:54            '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})
-0:54            Constant:
-0:54              1 (const uint)
-0:54          Constant:
-0:54            1 (const int)
-0:54        o1: direct index for structure ( uniform int)
-0:54          '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})
-0:54          Constant:
-0:54            4 (const uint)
-0:57      textureFetchOffset ( temp 4-component vector of float)
-0:57        'g_tTex2df4' ( uniform texture2D)
-0:57        vector swizzle ( temp 2-component vector of int)
-0:57          c3: direct index for structure ( uniform 3-component vector of int)
-0:57            '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})
-0:57            Constant:
-0:57              2 (const uint)
-0:57          Sequence
-0:57            Constant:
-0:57              0 (const int)
-0:57            Constant:
-0:57              1 (const int)
-0:57        direct index ( temp int)
-0:57          c3: direct index for structure ( uniform 3-component vector of int)
-0:57            '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})
-0:57            Constant:
-0:57              2 (const uint)
-0:57          Constant:
-0:57            2 (const int)
-0:57        o2: direct index for structure ( uniform 2-component vector of int)
-0:57          '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})
-0:57          Constant:
-0:57            5 (const uint)
-0:58      textureFetchOffset ( temp 4-component vector of int)
-0:58        'g_tTex2di4' ( uniform itexture2D)
-0:58        vector swizzle ( temp 2-component vector of int)
-0:58          c3: direct index for structure ( uniform 3-component vector of int)
-0:58            '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})
-0:58            Constant:
-0:58              2 (const uint)
-0:58          Sequence
-0:58            Constant:
-0:58              0 (const int)
-0:58            Constant:
-0:58              1 (const int)
-0:58        direct index ( temp int)
-0:58          c3: direct index for structure ( uniform 3-component vector of int)
-0:58            '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})
-0:58            Constant:
-0:58              2 (const uint)
-0:58          Constant:
-0:58            2 (const int)
-0:58        o2: direct index for structure ( uniform 2-component vector of int)
-0:58          '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})
-0:58          Constant:
-0:58            5 (const uint)
-0:59      textureFetchOffset ( temp 4-component vector of uint)
-0:59        'g_tTex2du4' ( uniform utexture2D)
-0:59        vector swizzle ( temp 2-component vector of int)
-0:59          c3: direct index for structure ( uniform 3-component vector of int)
-0:59            '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})
-0:59            Constant:
-0:59              2 (const uint)
-0:59          Sequence
-0:59            Constant:
-0:59              0 (const int)
-0:59            Constant:
-0:59              1 (const int)
-0:59        direct index ( temp int)
-0:59          c3: direct index for structure ( uniform 3-component vector of int)
-0:59            '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})
-0:59            Constant:
-0:59              2 (const uint)
-0:59          Constant:
-0:59            2 (const int)
-0:59        o2: direct index for structure ( uniform 2-component vector of int)
-0:59          '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})
-0:59          Constant:
-0:59            5 (const uint)
+0:49      Branch: Return with expression
+0:49        Constant:
+0:49          1 (const int)
+0:49          1 (const int)
+0:53  Function Definition: getOffset3( ( temp 3-component vector of int)
+0:53    Function Parameters: 
+0:?     Sequence
+0:54      Branch: Return with expression
+0:54        Constant:
+0:54          1 (const int)
+0:54          1 (const int)
+0:54          1 (const int)
+0:58  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:58    Function Parameters: 
+0:?     Sequence
 0:62      textureFetchOffset ( temp 4-component vector of float)
-0:62        'g_tTex3df4' ( uniform texture3D)
-0:62        vector swizzle ( temp 3-component vector of int)
-0:62          c4: direct index for structure ( uniform 4-component vector of int)
-0:62            '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})
+0:62        'g_tTex1df4' (layout( binding=0) uniform texture1D)
+0:62        vector swizzle ( temp int)
+0:62          c2: direct index for structure ( uniform 2-component vector of int)
+0:62            '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})
 0:62            Constant:
-0:62              3 (const uint)
+0:62              1 (const uint)
 0:62          Sequence
 0:62            Constant:
 0:62              0 (const int)
-0:62            Constant:
-0:62              1 (const int)
-0:62            Constant:
-0:62              2 (const int)
 0:62        direct index ( temp int)
-0:62          c4: direct index for structure ( uniform 4-component vector of int)
-0:62            '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})
+0:62          c2: direct index for structure ( uniform 2-component vector of int)
+0:62            '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})
 0:62            Constant:
-0:62              3 (const uint)
+0:62              1 (const uint)
 0:62          Constant:
-0:62            3 (const int)
-0:62        o3: direct index for structure ( uniform 3-component vector of int)
-0:62          '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})
-0:62          Constant:
-0:62            6 (const uint)
+0:62            1 (const int)
+0:62        Function Call: getOffset1( ( temp int)
 0:63      textureFetchOffset ( temp 4-component vector of int)
-0:63        'g_tTex3di4' ( uniform itexture3D)
-0:63        vector swizzle ( temp 3-component vector of int)
-0:63          c4: direct index for structure ( uniform 4-component vector of int)
-0:63            '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})
+0:63        'g_tTex1di4' ( uniform itexture1D)
+0:63        vector swizzle ( temp int)
+0:63          c2: direct index for structure ( uniform 2-component vector of int)
+0:63            '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})
 0:63            Constant:
-0:63              3 (const uint)
+0:63              1 (const uint)
 0:63          Sequence
 0:63            Constant:
 0:63              0 (const int)
-0:63            Constant:
-0:63              1 (const int)
-0:63            Constant:
-0:63              2 (const int)
 0:63        direct index ( temp int)
-0:63          c4: direct index for structure ( uniform 4-component vector of int)
-0:63            '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})
+0:63          c2: direct index for structure ( uniform 2-component vector of int)
+0:63            '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})
 0:63            Constant:
-0:63              3 (const uint)
+0:63              1 (const uint)
 0:63          Constant:
-0:63            3 (const int)
-0:63        o3: direct index for structure ( uniform 3-component vector of int)
-0:63          '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})
-0:63          Constant:
-0:63            6 (const uint)
+0:63            1 (const int)
+0:63        Function Call: getOffset1( ( temp int)
 0:64      textureFetchOffset ( temp 4-component vector of uint)
-0:64        'g_tTex3du4' ( uniform utexture3D)
-0:64        vector swizzle ( temp 3-component vector of int)
-0:64          c4: direct index for structure ( uniform 4-component vector of int)
-0:64            '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})
+0:64        'g_tTex1du4' ( uniform utexture1D)
+0:64        vector swizzle ( temp int)
+0:64          c2: direct index for structure ( uniform 2-component vector of int)
+0:64            '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})
 0:64            Constant:
-0:64              3 (const uint)
+0:64              1 (const uint)
 0:64          Sequence
 0:64            Constant:
 0:64              0 (const int)
-0:64            Constant:
-0:64              1 (const int)
-0:64            Constant:
-0:64              2 (const int)
 0:64        direct index ( temp int)
-0:64          c4: direct index for structure ( uniform 4-component vector of int)
-0:64            '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})
+0:64          c2: direct index for structure ( uniform 2-component vector of int)
+0:64            '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})
 0:64            Constant:
-0:64              3 (const uint)
+0:64              1 (const uint)
 0:64          Constant:
-0:64            3 (const int)
-0:64        o3: direct index for structure ( uniform 3-component vector of int)
-0:64          '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})
-0:64          Constant:
-0:64            6 (const uint)
-0:72      move second child to first child ( temp 4-component vector of float)
-0:72        Color: direct index for structure ( temp 4-component vector of float)
-0:72          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:64            1 (const int)
+0:64        Function Call: getOffset1( ( temp int)
+0:67      textureFetchOffset ( temp 4-component vector of float)
+0:67        'g_tTex2df4' ( uniform texture2D)
+0:67        vector swizzle ( temp 2-component vector of int)
+0:67          c3: direct index for structure ( uniform 3-component vector of int)
+0:67            '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})
+0:67            Constant:
+0:67              2 (const uint)
+0:67          Sequence
+0:67            Constant:
+0:67              0 (const int)
+0:67            Constant:
+0:67              1 (const int)
+0:67        direct index ( temp int)
+0:67          c3: direct index for structure ( uniform 3-component vector of int)
+0:67            '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})
+0:67            Constant:
+0:67              2 (const uint)
+0:67          Constant:
+0:67            2 (const int)
+0:67        Function Call: getOffset2( ( temp 2-component vector of int)
+0:68      textureFetchOffset ( temp 4-component vector of int)
+0:68        'g_tTex2di4' ( uniform itexture2D)
+0:68        vector swizzle ( temp 2-component vector of int)
+0:68          c3: direct index for structure ( uniform 3-component vector of int)
+0:68            '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})
+0:68            Constant:
+0:68              2 (const uint)
+0:68          Sequence
+0:68            Constant:
+0:68              0 (const int)
+0:68            Constant:
+0:68              1 (const int)
+0:68        direct index ( temp int)
+0:68          c3: direct index for structure ( uniform 3-component vector of int)
+0:68            '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})
+0:68            Constant:
+0:68              2 (const uint)
+0:68          Constant:
+0:68            2 (const int)
+0:68        Function Call: getOffset2( ( temp 2-component vector of int)
+0:69      textureFetchOffset ( temp 4-component vector of uint)
+0:69        'g_tTex2du4' ( uniform utexture2D)
+0:69        vector swizzle ( temp 2-component vector of int)
+0:69          c3: direct index for structure ( uniform 3-component vector of int)
+0:69            '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})
+0:69            Constant:
+0:69              2 (const uint)
+0:69          Sequence
+0:69            Constant:
+0:69              0 (const int)
+0:69            Constant:
+0:69              1 (const int)
+0:69        direct index ( temp int)
+0:69          c3: direct index for structure ( uniform 3-component vector of int)
+0:69            '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})
+0:69            Constant:
+0:69              2 (const uint)
+0:69          Constant:
+0:69            2 (const int)
+0:69        Function Call: getOffset2( ( temp 2-component vector of int)
+0:72      textureFetchOffset ( temp 4-component vector of float)
+0:72        'g_tTex3df4' ( uniform texture3D)
+0:72        vector swizzle ( temp 3-component vector of int)
+0:72          c4: direct index for structure ( uniform 4-component vector of int)
+0:72            '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})
+0:72            Constant:
+0:72              3 (const uint)
+0:72          Sequence
+0:72            Constant:
+0:72              0 (const int)
+0:72            Constant:
+0:72              1 (const int)
+0:72            Constant:
+0:72              2 (const int)
+0:72        direct index ( temp int)
+0:72          c4: direct index for structure ( uniform 4-component vector of int)
+0:72            '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})
+0:72            Constant:
+0:72              3 (const uint)
 0:72          Constant:
-0:72            0 (const int)
-0:72        Constant:
-0:72          1.000000
-0:72          1.000000
-0:72          1.000000
-0:72          1.000000
-0:73      move second child to first child ( temp float)
-0:73        Depth: direct index for structure ( temp float)
-0:73          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:72            3 (const int)
+0:72        Function Call: getOffset3( ( temp 3-component vector of int)
+0:73      textureFetchOffset ( temp 4-component vector of int)
+0:73        'g_tTex3di4' ( uniform itexture3D)
+0:73        vector swizzle ( temp 3-component vector of int)
+0:73          c4: direct index for structure ( uniform 4-component vector of int)
+0:73            '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})
+0:73            Constant:
+0:73              3 (const uint)
+0:73          Sequence
+0:73            Constant:
+0:73              0 (const int)
+0:73            Constant:
+0:73              1 (const int)
+0:73            Constant:
+0:73              2 (const int)
+0:73        direct index ( temp int)
+0:73          c4: direct index for structure ( uniform 4-component vector of int)
+0:73            '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})
+0:73            Constant:
+0:73              3 (const uint)
 0:73          Constant:
-0:73            1 (const int)
-0:73        Constant:
-0:73          1.000000
-0:75      Branch: Return with expression
-0:75        'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48  Function Definition: main( ( temp void)
-0:48    Function Parameters: 
+0:73            3 (const int)
+0:73        Function Call: getOffset3( ( temp 3-component vector of int)
+0:74      textureFetchOffset ( temp 4-component vector of uint)
+0:74        'g_tTex3du4' ( uniform utexture3D)
+0:74        vector swizzle ( temp 3-component vector of int)
+0:74          c4: direct index for structure ( uniform 4-component vector of int)
+0:74            '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})
+0:74            Constant:
+0:74              3 (const uint)
+0:74          Sequence
+0:74            Constant:
+0:74              0 (const int)
+0:74            Constant:
+0:74              1 (const int)
+0:74            Constant:
+0:74              2 (const int)
+0:74        direct index ( temp int)
+0:74          c4: direct index for structure ( uniform 4-component vector of int)
+0:74            '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})
+0:74            Constant:
+0:74              3 (const uint)
+0:74          Constant:
+0:74            3 (const int)
+0:74        Function Call: getOffset3( ( temp 3-component vector of int)
+0:82      move second child to first child ( temp 4-component vector of float)
+0:82        Color: direct index for structure ( temp 4-component vector of float)
+0:82          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:82          Constant:
+0:82            0 (const int)
+0:82        Constant:
+0:82          1.000000
+0:82          1.000000
+0:82          1.000000
+0:82          1.000000
+0:83      move second child to first child ( temp float)
+0:83        Depth: direct index for structure ( temp float)
+0:83          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:83          Constant:
+0:83            1 (const int)
+0:83        Constant:
+0:83          1.000000
+0:85      Branch: Return with expression
+0:85        'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:58  Function Definition: main( ( temp void)
+0:58    Function Parameters: 
 0:?     Sequence
-0:48      Sequence
-0:48        move second child to first child ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48          'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48          Function Call: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48        move second child to first child ( temp 4-component vector of float)
+0:58      Sequence
+0:58        move second child to first child ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:58          'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:58          Function Call: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:58        move second child to first child ( temp 4-component vector of float)
 0:?           '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
-0:48          Color: direct index for structure ( temp 4-component vector of float)
-0:48            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48            Constant:
-0:48              0 (const int)
-0:48        move second child to first child ( temp float)
+0:58          Color: direct index for structure ( temp 4-component vector of float)
+0:58            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:58            Constant:
+0:58              0 (const int)
+0:58        move second child to first child ( temp float)
 0:?           '@entryPointOutput.Depth' ( out float FragDepth)
-0:48          Depth: direct index for structure ( temp float)
-0:48            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48            Constant:
-0:48              1 (const int)
+0:58          Depth: direct index for structure ( temp float)
+0:58            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:58            Constant:
+0:58              1 (const int)
 0:?   Linker Objects
 0:?     'g_sSamp' (layout( binding=0) uniform sampler)
 0:?     'g_tTex1df4' (layout( binding=0) uniform texture1D)
@@ -557,14 +545,13 @@
 0:?     'g_tTexcdf4a' ( uniform textureCubeArray)
 0:?     'g_tTexcdi4a' ( uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' ( uniform utextureCubeArray)
-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})
+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})
 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
+// Id's are bound by 205
 
                               Capability Shader
                               Capability ImageGatherExtended
@@ -572,311 +559,310 @@
                               Capability SampledCubeArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 155 159
+                              EntryPoint Fragment 4  "main" 159 163
                               ExecutionMode 4 OriginUpperLeft
                               ExecutionMode 4 DepthReplacing
                               Source HLSL 500
                               Name 4  "main"
-                              Name 8  "PS_OUTPUT"
-                              MemberName 8(PS_OUTPUT) 0  "Color"
-                              MemberName 8(PS_OUTPUT) 1  "Depth"
-                              Name 10  "@main("
-                              Name 14  "g_tTex1df4"
-                              Name 20  "$Global"
-                              MemberName 20($Global) 0  "c1"
-                              MemberName 20($Global) 1  "c2"
-                              MemberName 20($Global) 2  "c3"
-                              MemberName 20($Global) 3  "c4"
-                              MemberName 20($Global) 4  "o1"
-                              MemberName 20($Global) 5  "o2"
-                              MemberName 20($Global) 6  "o3"
-                              MemberName 20($Global) 7  "o4"
-                              Name 22  ""
-                              Name 38  "g_tTex1di4"
-                              Name 49  "g_tTex1du4"
-                              Name 61  "g_tTex2df4"
-                              Name 78  "g_tTex2di4"
-                              Name 90  "g_tTex2du4"
-                              Name 102  "g_tTex3df4"
-                              Name 118  "g_tTex3di4"
-                              Name 130  "g_tTex3du4"
-                              Name 141  "psout"
-                              Name 152  "flattenTemp"
-                              Name 155  "@entryPointOutput.Color"
-                              Name 159  "@entryPointOutput.Depth"
-                              Name 164  "g_sSamp"
-                              Name 167  "g_tTexcdf4"
-                              Name 170  "g_tTexcdi4"
-                              Name 173  "g_tTexcdu4"
-                              Name 176  "g_tTex1df4a"
-                              Name 179  "g_tTex1di4a"
-                              Name 182  "g_tTex1du4a"
-                              Name 185  "g_tTex2df4a"
-                              Name 188  "g_tTex2di4a"
-                              Name 191  "g_tTex2du4a"
-                              Name 194  "g_tTexcdf4a"
-                              Name 197  "g_tTexcdi4a"
-                              Name 200  "g_tTexcdu4a"
-                              Decorate 14(g_tTex1df4) DescriptorSet 0
-                              Decorate 14(g_tTex1df4) Binding 0
-                              MemberDecorate 20($Global) 0 Offset 0
-                              MemberDecorate 20($Global) 1 Offset 8
-                              MemberDecorate 20($Global) 2 Offset 16
-                              MemberDecorate 20($Global) 3 Offset 32
-                              MemberDecorate 20($Global) 4 Offset 48
-                              MemberDecorate 20($Global) 5 Offset 56
-                              MemberDecorate 20($Global) 6 Offset 64
-                              MemberDecorate 20($Global) 7 Offset 80
-                              Decorate 20($Global) Block
-                              Decorate 22 DescriptorSet 0
-                              Decorate 22 Binding 9
-                              Decorate 38(g_tTex1di4) DescriptorSet 0
-                              Decorate 38(g_tTex1di4) Binding 1
-                              Decorate 49(g_tTex1du4) DescriptorSet 0
-                              Decorate 49(g_tTex1du4) Binding 2
-                              Decorate 61(g_tTex2df4) DescriptorSet 0
-                              Decorate 61(g_tTex2df4) Binding 3
-                              Decorate 78(g_tTex2di4) DescriptorSet 0
-                              Decorate 78(g_tTex2di4) Binding 4
-                              Decorate 90(g_tTex2du4) DescriptorSet 0
-                              Decorate 90(g_tTex2du4) Binding 5
-                              Decorate 102(g_tTex3df4) DescriptorSet 0
-                              Decorate 102(g_tTex3df4) Binding 6
-                              Decorate 118(g_tTex3di4) DescriptorSet 0
-                              Decorate 118(g_tTex3di4) Binding 7
-                              Decorate 130(g_tTex3du4) DescriptorSet 0
-                              Decorate 130(g_tTex3du4) Binding 8
-                              Decorate 155(@entryPointOutput.Color) Location 0
-                              Decorate 159(@entryPointOutput.Depth) BuiltIn FragDepth
-                              Decorate 164(g_sSamp) DescriptorSet 0
-                              Decorate 164(g_sSamp) Binding 0
-                              Decorate 167(g_tTexcdf4) DescriptorSet 0
-                              Decorate 167(g_tTexcdf4) Binding 0
-                              Decorate 170(g_tTexcdi4) DescriptorSet 0
-                              Decorate 170(g_tTexcdi4) Binding 0
-                              Decorate 173(g_tTexcdu4) DescriptorSet 0
-                              Decorate 173(g_tTexcdu4) Binding 0
-                              Decorate 176(g_tTex1df4a) DescriptorSet 0
-                              Decorate 176(g_tTex1df4a) Binding 0
-                              Decorate 179(g_tTex1di4a) DescriptorSet 0
-                              Decorate 179(g_tTex1di4a) Binding 0
-                              Decorate 182(g_tTex1du4a) DescriptorSet 0
-                              Decorate 182(g_tTex1du4a) Binding 0
-                              Decorate 185(g_tTex2df4a) DescriptorSet 0
-                              Decorate 185(g_tTex2df4a) Binding 0
-                              Decorate 188(g_tTex2di4a) DescriptorSet 0
-                              Decorate 188(g_tTex2di4a) Binding 0
-                              Decorate 191(g_tTex2du4a) DescriptorSet 0
-                              Decorate 191(g_tTex2du4a) Binding 0
-                              Decorate 194(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 194(g_tTexcdf4a) Binding 0
-                              Decorate 197(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 197(g_tTexcdi4a) Binding 0
-                              Decorate 200(g_tTexcdu4a) DescriptorSet 0
-                              Decorate 200(g_tTexcdu4a) Binding 0
+                              Name 8  "getOffset1("
+                              Name 12  "getOffset2("
+                              Name 16  "getOffset3("
+                              Name 20  "PS_OUTPUT"
+                              MemberName 20(PS_OUTPUT) 0  "Color"
+                              MemberName 20(PS_OUTPUT) 1  "Depth"
+                              Name 22  "@main("
+                              Name 35  "g_tTex1df4"
+                              Name 38  "$Global"
+                              MemberName 38($Global) 0  "c1"
+                              MemberName 38($Global) 1  "c2"
+                              MemberName 38($Global) 2  "c3"
+                              MemberName 38($Global) 3  "c4"
+                              Name 40  ""
+                              Name 53  "g_tTex1di4"
+                              Name 63  "g_tTex1du4"
+                              Name 74  "g_tTex2df4"
+                              Name 88  "g_tTex2di4"
+                              Name 99  "g_tTex2du4"
+                              Name 110  "g_tTex3df4"
+                              Name 124  "g_tTex3di4"
+                              Name 135  "g_tTex3du4"
+                              Name 145  "psout"
+                              Name 156  "flattenTemp"
+                              Name 159  "@entryPointOutput.Color"
+                              Name 163  "@entryPointOutput.Depth"
+                              Name 168  "g_sSamp"
+                              Name 171  "g_tTexcdf4"
+                              Name 174  "g_tTexcdi4"
+                              Name 177  "g_tTexcdu4"
+                              Name 180  "g_tTex1df4a"
+                              Name 183  "g_tTex1di4a"
+                              Name 186  "g_tTex1du4a"
+                              Name 189  "g_tTex2df4a"
+                              Name 192  "g_tTex2di4a"
+                              Name 195  "g_tTex2du4a"
+                              Name 198  "g_tTexcdf4a"
+                              Name 201  "g_tTexcdi4a"
+                              Name 204  "g_tTexcdu4a"
+                              Decorate 35(g_tTex1df4) DescriptorSet 0
+                              Decorate 35(g_tTex1df4) Binding 0
+                              MemberDecorate 38($Global) 0 Offset 0
+                              MemberDecorate 38($Global) 1 Offset 8
+                              MemberDecorate 38($Global) 2 Offset 16
+                              MemberDecorate 38($Global) 3 Offset 32
+                              Decorate 38($Global) Block
+                              Decorate 40 DescriptorSet 0
+                              Decorate 40 Binding 9
+                              Decorate 53(g_tTex1di4) DescriptorSet 0
+                              Decorate 53(g_tTex1di4) Binding 1
+                              Decorate 63(g_tTex1du4) DescriptorSet 0
+                              Decorate 63(g_tTex1du4) Binding 2
+                              Decorate 74(g_tTex2df4) DescriptorSet 0
+                              Decorate 74(g_tTex2df4) Binding 3
+                              Decorate 88(g_tTex2di4) DescriptorSet 0
+                              Decorate 88(g_tTex2di4) Binding 4
+                              Decorate 99(g_tTex2du4) DescriptorSet 0
+                              Decorate 99(g_tTex2du4) Binding 5
+                              Decorate 110(g_tTex3df4) DescriptorSet 0
+                              Decorate 110(g_tTex3df4) Binding 6
+                              Decorate 124(g_tTex3di4) DescriptorSet 0
+                              Decorate 124(g_tTex3di4) Binding 7
+                              Decorate 135(g_tTex3du4) DescriptorSet 0
+                              Decorate 135(g_tTex3du4) Binding 8
+                              Decorate 159(@entryPointOutput.Color) Location 0
+                              Decorate 163(@entryPointOutput.Depth) BuiltIn FragDepth
+                              Decorate 168(g_sSamp) DescriptorSet 0
+                              Decorate 168(g_sSamp) Binding 0
+                              Decorate 171(g_tTexcdf4) DescriptorSet 0
+                              Decorate 171(g_tTexcdf4) Binding 0
+                              Decorate 174(g_tTexcdi4) DescriptorSet 0
+                              Decorate 174(g_tTexcdi4) Binding 0
+                              Decorate 177(g_tTexcdu4) DescriptorSet 0
+                              Decorate 177(g_tTexcdu4) Binding 0
+                              Decorate 180(g_tTex1df4a) DescriptorSet 0
+                              Decorate 180(g_tTex1df4a) Binding 0
+                              Decorate 183(g_tTex1di4a) DescriptorSet 0
+                              Decorate 183(g_tTex1di4a) Binding 0
+                              Decorate 186(g_tTex1du4a) DescriptorSet 0
+                              Decorate 186(g_tTex1du4a) Binding 0
+                              Decorate 189(g_tTex2df4a) DescriptorSet 0
+                              Decorate 189(g_tTex2df4a) Binding 0
+                              Decorate 192(g_tTex2di4a) DescriptorSet 0
+                              Decorate 192(g_tTex2di4a) Binding 0
+                              Decorate 195(g_tTex2du4a) DescriptorSet 0
+                              Decorate 195(g_tTex2du4a) Binding 0
+                              Decorate 198(g_tTexcdf4a) DescriptorSet 0
+                              Decorate 198(g_tTexcdf4a) Binding 0
+                              Decorate 201(g_tTexcdi4a) DescriptorSet 0
+                              Decorate 201(g_tTexcdi4a) Binding 0
+                              Decorate 204(g_tTexcdu4a) DescriptorSet 0
+                              Decorate 204(g_tTexcdu4a) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
-               6:             TypeFloat 32
-               7:             TypeVector 6(float) 4
-    8(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
-               9:             TypeFunction 8(PS_OUTPUT)
-              12:             TypeImage 6(float) 1D sampled format:Unknown
-              13:             TypePointer UniformConstant 12
-  14(g_tTex1df4):     13(ptr) Variable UniformConstant
-              16:             TypeInt 32 1
-              17:             TypeVector 16(int) 2
-              18:             TypeVector 16(int) 3
-              19:             TypeVector 16(int) 4
-     20($Global):             TypeStruct 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 16(int) 17(ivec2) 18(ivec3) 19(ivec4)
-              21:             TypePointer Uniform 20($Global)
-              22:     21(ptr) Variable Uniform
-              23:     16(int) Constant 1
-              24:             TypeInt 32 0
-              25:     24(int) Constant 0
-              26:             TypePointer Uniform 16(int)
-              29:     24(int) Constant 1
-              32:     16(int) Constant 4
-              36:             TypeImage 16(int) 1D sampled format:Unknown
-              37:             TypePointer UniformConstant 36
-  38(g_tTex1di4):     37(ptr) Variable UniformConstant
-              47:             TypeImage 24(int) 1D sampled format:Unknown
-              48:             TypePointer UniformConstant 47
-  49(g_tTex1du4):     48(ptr) Variable UniformConstant
-              57:             TypeVector 24(int) 4
-              59:             TypeImage 6(float) 2D sampled format:Unknown
-              60:             TypePointer UniformConstant 59
-  61(g_tTex2df4):     60(ptr) Variable UniformConstant
-              63:     16(int) Constant 2
-              64:             TypePointer Uniform 18(ivec3)
-              68:     24(int) Constant 2
-              71:     16(int) Constant 5
-              72:             TypePointer Uniform 17(ivec2)
-              76:             TypeImage 16(int) 2D sampled format:Unknown
-              77:             TypePointer UniformConstant 76
-  78(g_tTex2di4):     77(ptr) Variable UniformConstant
-              88:             TypeImage 24(int) 2D sampled format:Unknown
-              89:             TypePointer UniformConstant 88
-  90(g_tTex2du4):     89(ptr) Variable UniformConstant
-             100:             TypeImage 6(float) 3D sampled format:Unknown
-             101:             TypePointer UniformConstant 100
- 102(g_tTex3df4):    101(ptr) Variable UniformConstant
-             104:     16(int) Constant 3
-             105:             TypePointer Uniform 19(ivec4)
-             109:     24(int) Constant 3
-             112:     16(int) Constant 6
-             116:             TypeImage 16(int) 3D sampled format:Unknown
-             117:             TypePointer UniformConstant 116
- 118(g_tTex3di4):    117(ptr) Variable UniformConstant
-             128:             TypeImage 24(int) 3D sampled format:Unknown
-             129:             TypePointer UniformConstant 128
- 130(g_tTex3du4):    129(ptr) Variable UniformConstant
-             140:             TypePointer Function 8(PS_OUTPUT)
-             142:     16(int) Constant 0
-             143:    6(float) Constant 1065353216
-             144:    7(fvec4) ConstantComposite 143 143 143 143
-             145:             TypePointer Function 7(fvec4)
-             147:             TypePointer Function 6(float)
-             154:             TypePointer Output 7(fvec4)
-155(@entryPointOutput.Color):    154(ptr) Variable Output
-             158:             TypePointer Output 6(float)
-159(@entryPointOutput.Depth):    158(ptr) Variable Output
-             162:             TypeSampler
-             163:             TypePointer UniformConstant 162
-    164(g_sSamp):    163(ptr) Variable UniformConstant
-             165:             TypeImage 6(float) Cube sampled format:Unknown
-             166:             TypePointer UniformConstant 165
- 167(g_tTexcdf4):    166(ptr) Variable UniformConstant
-             168:             TypeImage 16(int) Cube sampled format:Unknown
-             169:             TypePointer UniformConstant 168
- 170(g_tTexcdi4):    169(ptr) Variable UniformConstant
-             171:             TypeImage 24(int) Cube sampled format:Unknown
-             172:             TypePointer UniformConstant 171
- 173(g_tTexcdu4):    172(ptr) Variable UniformConstant
-             174:             TypeImage 6(float) 1D array sampled format:Unknown
-             175:             TypePointer UniformConstant 174
-176(g_tTex1df4a):    175(ptr) Variable UniformConstant
-             177:             TypeImage 16(int) 1D array sampled format:Unknown
-             178:             TypePointer UniformConstant 177
-179(g_tTex1di4a):    178(ptr) Variable UniformConstant
-             180:             TypeImage 24(int) 1D array sampled format:Unknown
-             181:             TypePointer UniformConstant 180
-182(g_tTex1du4a):    181(ptr) Variable UniformConstant
-             183:             TypeImage 6(float) 2D array sampled format:Unknown
-             184:             TypePointer UniformConstant 183
-185(g_tTex2df4a):    184(ptr) Variable UniformConstant
-             186:             TypeImage 16(int) 2D array sampled format:Unknown
-             187:             TypePointer UniformConstant 186
-188(g_tTex2di4a):    187(ptr) Variable UniformConstant
-             189:             TypeImage 24(int) 2D array sampled format:Unknown
-             190:             TypePointer UniformConstant 189
-191(g_tTex2du4a):    190(ptr) Variable UniformConstant
-             192:             TypeImage 6(float) Cube array sampled format:Unknown
-             193:             TypePointer UniformConstant 192
-194(g_tTexcdf4a):    193(ptr) Variable UniformConstant
-             195:             TypeImage 16(int) Cube array sampled format:Unknown
-             196:             TypePointer UniformConstant 195
-197(g_tTexcdi4a):    196(ptr) Variable UniformConstant
-             198:             TypeImage 24(int) Cube array sampled format:Unknown
-             199:             TypePointer UniformConstant 198
-200(g_tTexcdu4a):    199(ptr) Variable UniformConstant
+               6:             TypeInt 32 1
+               7:             TypeFunction 6(int)
+              10:             TypeVector 6(int) 2
+              11:             TypeFunction 10(ivec2)
+              14:             TypeVector 6(int) 3
+              15:             TypeFunction 14(ivec3)
+              18:             TypeFloat 32
+              19:             TypeVector 18(float) 4
+   20(PS_OUTPUT):             TypeStruct 19(fvec4) 18(float)
+              21:             TypeFunction 20(PS_OUTPUT)
+              24:      6(int) Constant 1
+              27:   10(ivec2) ConstantComposite 24 24
+              30:   14(ivec3) ConstantComposite 24 24 24
+              33:             TypeImage 18(float) 1D sampled format:Unknown
+              34:             TypePointer UniformConstant 33
+  35(g_tTex1df4):     34(ptr) Variable UniformConstant
+              37:             TypeVector 6(int) 4
+     38($Global):             TypeStruct 6(int) 10(ivec2) 14(ivec3) 37(ivec4)
+              39:             TypePointer Uniform 38($Global)
+              40:     39(ptr) Variable Uniform
+              41:             TypeInt 32 0
+              42:     41(int) Constant 0
+              43:             TypePointer Uniform 6(int)
+              46:     41(int) Constant 1
+              51:             TypeImage 6(int) 1D sampled format:Unknown
+              52:             TypePointer UniformConstant 51
+  53(g_tTex1di4):     52(ptr) Variable UniformConstant
+              61:             TypeImage 41(int) 1D sampled format:Unknown
+              62:             TypePointer UniformConstant 61
+  63(g_tTex1du4):     62(ptr) Variable UniformConstant
+              70:             TypeVector 41(int) 4
+              72:             TypeImage 18(float) 2D sampled format:Unknown
+              73:             TypePointer UniformConstant 72
+  74(g_tTex2df4):     73(ptr) Variable UniformConstant
+              76:      6(int) Constant 2
+              77:             TypePointer Uniform 14(ivec3)
+              81:     41(int) Constant 2
+              86:             TypeImage 6(int) 2D sampled format:Unknown
+              87:             TypePointer UniformConstant 86
+  88(g_tTex2di4):     87(ptr) Variable UniformConstant
+              97:             TypeImage 41(int) 2D sampled format:Unknown
+              98:             TypePointer UniformConstant 97
+  99(g_tTex2du4):     98(ptr) Variable UniformConstant
+             108:             TypeImage 18(float) 3D sampled format:Unknown
+             109:             TypePointer UniformConstant 108
+ 110(g_tTex3df4):    109(ptr) Variable UniformConstant
+             112:      6(int) Constant 3
+             113:             TypePointer Uniform 37(ivec4)
+             117:     41(int) Constant 3
+             122:             TypeImage 6(int) 3D sampled format:Unknown
+             123:             TypePointer UniformConstant 122
+ 124(g_tTex3di4):    123(ptr) Variable UniformConstant
+             133:             TypeImage 41(int) 3D sampled format:Unknown
+             134:             TypePointer UniformConstant 133
+ 135(g_tTex3du4):    134(ptr) Variable UniformConstant
+             144:             TypePointer Function 20(PS_OUTPUT)
+             146:      6(int) Constant 0
+             147:   18(float) Constant 1065353216
+             148:   19(fvec4) ConstantComposite 147 147 147 147
+             149:             TypePointer Function 19(fvec4)
+             151:             TypePointer Function 18(float)
+             158:             TypePointer Output 19(fvec4)
+159(@entryPointOutput.Color):    158(ptr) Variable Output
+             162:             TypePointer Output 18(float)
+163(@entryPointOutput.Depth):    162(ptr) Variable Output
+             166:             TypeSampler
+             167:             TypePointer UniformConstant 166
+    168(g_sSamp):    167(ptr) Variable UniformConstant
+             169:             TypeImage 18(float) Cube sampled format:Unknown
+             170:             TypePointer UniformConstant 169
+ 171(g_tTexcdf4):    170(ptr) Variable UniformConstant
+             172:             TypeImage 6(int) Cube sampled format:Unknown
+             173:             TypePointer UniformConstant 172
+ 174(g_tTexcdi4):    173(ptr) Variable UniformConstant
+             175:             TypeImage 41(int) Cube sampled format:Unknown
+             176:             TypePointer UniformConstant 175
+ 177(g_tTexcdu4):    176(ptr) Variable UniformConstant
+             178:             TypeImage 18(float) 1D array sampled format:Unknown
+             179:             TypePointer UniformConstant 178
+180(g_tTex1df4a):    179(ptr) Variable UniformConstant
+             181:             TypeImage 6(int) 1D array sampled format:Unknown
+             182:             TypePointer UniformConstant 181
+183(g_tTex1di4a):    182(ptr) Variable UniformConstant
+             184:             TypeImage 41(int) 1D array sampled format:Unknown
+             185:             TypePointer UniformConstant 184
+186(g_tTex1du4a):    185(ptr) Variable UniformConstant
+             187:             TypeImage 18(float) 2D array sampled format:Unknown
+             188:             TypePointer UniformConstant 187
+189(g_tTex2df4a):    188(ptr) Variable UniformConstant
+             190:             TypeImage 6(int) 2D array sampled format:Unknown
+             191:             TypePointer UniformConstant 190
+192(g_tTex2di4a):    191(ptr) Variable UniformConstant
+             193:             TypeImage 41(int) 2D array sampled format:Unknown
+             194:             TypePointer UniformConstant 193
+195(g_tTex2du4a):    194(ptr) Variable UniformConstant
+             196:             TypeImage 18(float) Cube array sampled format:Unknown
+             197:             TypePointer UniformConstant 196
+198(g_tTexcdf4a):    197(ptr) Variable UniformConstant
+             199:             TypeImage 6(int) Cube array sampled format:Unknown
+             200:             TypePointer UniformConstant 199
+201(g_tTexcdi4a):    200(ptr) Variable UniformConstant
+             202:             TypeImage 41(int) Cube array sampled format:Unknown
+             203:             TypePointer UniformConstant 202
+204(g_tTexcdu4a):    203(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-152(flattenTemp):    140(ptr) Variable Function
-             153:8(PS_OUTPUT) FunctionCall 10(@main()
-                              Store 152(flattenTemp) 153
-             156:    145(ptr) AccessChain 152(flattenTemp) 142
-             157:    7(fvec4) Load 156
-                              Store 155(@entryPointOutput.Color) 157
-             160:    147(ptr) AccessChain 152(flattenTemp) 23
-             161:    6(float) Load 160
-                              Store 159(@entryPointOutput.Depth) 161
+156(flattenTemp):    144(ptr) Variable Function
+             157:20(PS_OUTPUT) FunctionCall 22(@main()
+                              Store 156(flattenTemp) 157
+             160:    149(ptr) AccessChain 156(flattenTemp) 146
+             161:   19(fvec4) Load 160
+                              Store 159(@entryPointOutput.Color) 161
+             164:    151(ptr) AccessChain 156(flattenTemp) 24
+             165:   18(float) Load 164
+                              Store 163(@entryPointOutput.Depth) 165
                               Return
                               FunctionEnd
-      10(@main():8(PS_OUTPUT) Function None 9
-              11:             Label
-      141(psout):    140(ptr) Variable Function
-              15:          12 Load 14(g_tTex1df4)
-              27:     26(ptr) AccessChain 22 23 25
-              28:     16(int) Load 27
-              30:     26(ptr) AccessChain 22 23 29
-              31:     16(int) Load 30
-              33:     26(ptr) AccessChain 22 32
-              34:     16(int) Load 33
-              35:    7(fvec4) ImageFetch 15 28 Lod Offset 31 34
-              39:          36 Load 38(g_tTex1di4)
-              40:     26(ptr) AccessChain 22 23 25
-              41:     16(int) Load 40
-              42:     26(ptr) AccessChain 22 23 29
-              43:     16(int) Load 42
-              44:     26(ptr) AccessChain 22 32
-              45:     16(int) Load 44
-              46:   19(ivec4) ImageFetch 39 41 Lod Offset 43 45
-              50:          47 Load 49(g_tTex1du4)
-              51:     26(ptr) AccessChain 22 23 25
-              52:     16(int) Load 51
-              53:     26(ptr) AccessChain 22 23 29
-              54:     16(int) Load 53
-              55:     26(ptr) AccessChain 22 32
-              56:     16(int) Load 55
-              58:   57(ivec4) ImageFetch 50 52 Lod Offset 54 56
-              62:          59 Load 61(g_tTex2df4)
-              65:     64(ptr) AccessChain 22 63
-              66:   18(ivec3) Load 65
-              67:   17(ivec2) VectorShuffle 66 66 0 1
-              69:     26(ptr) AccessChain 22 63 68
-              70:     16(int) Load 69
-              73:     72(ptr) AccessChain 22 71
-              74:   17(ivec2) Load 73
-              75:    7(fvec4) ImageFetch 62 67 Lod Offset 70 74
-              79:          76 Load 78(g_tTex2di4)
-              80:     64(ptr) AccessChain 22 63
-              81:   18(ivec3) Load 80
-              82:   17(ivec2) VectorShuffle 81 81 0 1
-              83:     26(ptr) AccessChain 22 63 68
-              84:     16(int) Load 83
-              85:     72(ptr) AccessChain 22 71
-              86:   17(ivec2) Load 85
-              87:   19(ivec4) ImageFetch 79 82 Lod Offset 84 86
-              91:          88 Load 90(g_tTex2du4)
-              92:     64(ptr) AccessChain 22 63
-              93:   18(ivec3) Load 92
-              94:   17(ivec2) VectorShuffle 93 93 0 1
-              95:     26(ptr) AccessChain 22 63 68
-              96:     16(int) Load 95
-              97:     72(ptr) AccessChain 22 71
-              98:   17(ivec2) Load 97
-              99:   57(ivec4) ImageFetch 91 94 Lod Offset 96 98
-             103:         100 Load 102(g_tTex3df4)
-             106:    105(ptr) AccessChain 22 104
-             107:   19(ivec4) Load 106
-             108:   18(ivec3) VectorShuffle 107 107 0 1 2
-             110:     26(ptr) AccessChain 22 104 109
-             111:     16(int) Load 110
-             113:     64(ptr) AccessChain 22 112
-             114:   18(ivec3) Load 113
-             115:    7(fvec4) ImageFetch 103 108 Lod Offset 111 114
-             119:         116 Load 118(g_tTex3di4)
-             120:    105(ptr) AccessChain 22 104
-             121:   19(ivec4) Load 120
-             122:   18(ivec3) VectorShuffle 121 121 0 1 2
-             123:     26(ptr) AccessChain 22 104 109
-             124:     16(int) Load 123
-             125:     64(ptr) AccessChain 22 112
-             126:   18(ivec3) Load 125
-             127:   19(ivec4) ImageFetch 119 122 Lod Offset 124 126
-             131:         128 Load 130(g_tTex3du4)
-             132:    105(ptr) AccessChain 22 104
-             133:   19(ivec4) Load 132
-             134:   18(ivec3) VectorShuffle 133 133 0 1 2
-             135:     26(ptr) AccessChain 22 104 109
-             136:     16(int) Load 135
-             137:     64(ptr) AccessChain 22 112
-             138:   18(ivec3) Load 137
-             139:   57(ivec4) ImageFetch 131 134 Lod Offset 136 138
-             146:    145(ptr) AccessChain 141(psout) 142
-                              Store 146 144
-             148:    147(ptr) AccessChain 141(psout) 23
-                              Store 148 143
-             149:8(PS_OUTPUT) Load 141(psout)
-                              ReturnValue 149
+  8(getOffset1():      6(int) Function None 7
+               9:             Label
+                              ReturnValue 24
+                              FunctionEnd
+ 12(getOffset2():   10(ivec2) Function None 11
+              13:             Label
+                              ReturnValue 27
+                              FunctionEnd
+ 16(getOffset3():   14(ivec3) Function None 15
+              17:             Label
+                              ReturnValue 30
+                              FunctionEnd
+      22(@main():20(PS_OUTPUT) Function None 21
+              23:             Label
+      145(psout):    144(ptr) Variable Function
+              36:          33 Load 35(g_tTex1df4)
+              44:     43(ptr) AccessChain 40 24 42
+              45:      6(int) Load 44
+              47:     43(ptr) AccessChain 40 24 46
+              48:      6(int) Load 47
+              49:      6(int) FunctionCall 8(getOffset1()
+              50:   19(fvec4) ImageFetch 36 45 Lod Offset 48 49
+              54:          51 Load 53(g_tTex1di4)
+              55:     43(ptr) AccessChain 40 24 42
+              56:      6(int) Load 55
+              57:     43(ptr) AccessChain 40 24 46
+              58:      6(int) Load 57
+              59:      6(int) FunctionCall 8(getOffset1()
+              60:   37(ivec4) ImageFetch 54 56 Lod Offset 58 59
+              64:          61 Load 63(g_tTex1du4)
+              65:     43(ptr) AccessChain 40 24 42
+              66:      6(int) Load 65
+              67:     43(ptr) AccessChain 40 24 46
+              68:      6(int) Load 67
+              69:      6(int) FunctionCall 8(getOffset1()
+              71:   70(ivec4) ImageFetch 64 66 Lod Offset 68 69
+              75:          72 Load 74(g_tTex2df4)
+              78:     77(ptr) AccessChain 40 76
+              79:   14(ivec3) Load 78
+              80:   10(ivec2) VectorShuffle 79 79 0 1
+              82:     43(ptr) AccessChain 40 76 81
+              83:      6(int) Load 82
+              84:   10(ivec2) FunctionCall 12(getOffset2()
+              85:   19(fvec4) ImageFetch 75 80 Lod Offset 83 84
+              89:          86 Load 88(g_tTex2di4)
+              90:     77(ptr) AccessChain 40 76
+              91:   14(ivec3) Load 90
+              92:   10(ivec2) VectorShuffle 91 91 0 1
+              93:     43(ptr) AccessChain 40 76 81
+              94:      6(int) Load 93
+              95:   10(ivec2) FunctionCall 12(getOffset2()
+              96:   37(ivec4) ImageFetch 89 92 Lod Offset 94 95
+             100:          97 Load 99(g_tTex2du4)
+             101:     77(ptr) AccessChain 40 76
+             102:   14(ivec3) Load 101
+             103:   10(ivec2) VectorShuffle 102 102 0 1
+             104:     43(ptr) AccessChain 40 76 81
+             105:      6(int) Load 104
+             106:   10(ivec2) FunctionCall 12(getOffset2()
+             107:   70(ivec4) ImageFetch 100 103 Lod Offset 105 106
+             111:         108 Load 110(g_tTex3df4)
+             114:    113(ptr) AccessChain 40 112
+             115:   37(ivec4) Load 114
+             116:   14(ivec3) VectorShuffle 115 115 0 1 2
+             118:     43(ptr) AccessChain 40 112 117
+             119:      6(int) Load 118
+             120:   14(ivec3) FunctionCall 16(getOffset3()
+             121:   19(fvec4) ImageFetch 111 116 Lod Offset 119 120
+             125:         122 Load 124(g_tTex3di4)
+             126:    113(ptr) AccessChain 40 112
+             127:   37(ivec4) Load 126
+             128:   14(ivec3) VectorShuffle 127 127 0 1 2
+             129:     43(ptr) AccessChain 40 112 117
+             130:      6(int) Load 129
+             131:   14(ivec3) FunctionCall 16(getOffset3()
+             132:   37(ivec4) ImageFetch 125 128 Lod Offset 130 131
+             136:         133 Load 135(g_tTex3du4)
+             137:    113(ptr) AccessChain 40 112
+             138:   37(ivec4) Load 137
+             139:   14(ivec3) VectorShuffle 138 138 0 1 2
+             140:     43(ptr) AccessChain 40 112 117
+             141:      6(int) Load 140
+             142:   14(ivec3) FunctionCall 16(getOffset3()
+             143:   70(ivec4) ImageFetch 136 139 Lod Offset 141 142
+             150:    149(ptr) AccessChain 145(psout) 146
+                              Store 150 148
+             152:    151(ptr) AccessChain 145(psout) 24
+                              Store 152 147
+             153:20(PS_OUTPUT) Load 145(psout)
+                              ReturnValue 153
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
index 24aa368..04ea482 100644
--- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
@@ -3,191 +3,186 @@
 gl_FragCoord origin is upper left
 using depth_any
 0:? Sequence
-0:48  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:43  Function Definition: getOffset1( ( temp int)
+0:43    Function Parameters: 
+0:?     Sequence
+0:44      Branch: Return with expression
+0:44        Constant:
+0:44          1 (const int)
+0:48  Function Definition: getOffset2( ( temp 2-component vector of int)
 0:48    Function Parameters: 
 0:?     Sequence
-0:52      textureFetchOffset ( temp 4-component vector of float)
-0:52        'g_tTex1df4a' ( uniform texture1DArray)
-0:52        vector swizzle ( temp 2-component vector of int)
-0:52          c3: direct index for structure ( uniform 3-component vector of int)
-0:52            '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})
-0:52            Constant:
-0:52              2 (const uint)
-0:52          Sequence
-0:52            Constant:
-0:52              0 (const int)
-0:52            Constant:
-0:52              1 (const int)
-0:52        direct index ( temp int)
-0:52          c3: direct index for structure ( uniform 3-component vector of int)
-0:52            '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})
-0:52            Constant:
-0:52              2 (const uint)
-0:52          Constant:
-0:52            2 (const int)
-0:52        o1: direct index for structure ( uniform int)
-0:52          '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})
-0:52          Constant:
-0:52            4 (const uint)
-0:53      textureFetchOffset ( temp 4-component vector of int)
-0:53        'g_tTex1di4a' ( uniform itexture1DArray)
-0:53        vector swizzle ( temp 2-component vector of int)
-0:53          c3: direct index for structure ( uniform 3-component vector of int)
-0:53            '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})
-0:53            Constant:
-0:53              2 (const uint)
-0:53          Sequence
-0:53            Constant:
-0:53              0 (const int)
-0:53            Constant:
-0:53              1 (const int)
-0:53        direct index ( temp int)
-0:53          c3: direct index for structure ( uniform 3-component vector of int)
-0:53            '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})
-0:53            Constant:
-0:53              2 (const uint)
-0:53          Constant:
-0:53            2 (const int)
-0:53        o1: direct index for structure ( uniform int)
-0:53          '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})
-0:53          Constant:
-0:53            4 (const uint)
-0:54      textureFetchOffset ( temp 4-component vector of uint)
-0:54        'g_tTex1du4a' ( uniform utexture1DArray)
-0:54        vector swizzle ( temp 2-component vector of int)
-0:54          c3: direct index for structure ( uniform 3-component vector of int)
-0:54            '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})
-0:54            Constant:
-0:54              2 (const uint)
-0:54          Sequence
-0:54            Constant:
-0:54              0 (const int)
-0:54            Constant:
-0:54              1 (const int)
-0:54        direct index ( temp int)
-0:54          c3: direct index for structure ( uniform 3-component vector of int)
-0:54            '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})
-0:54            Constant:
-0:54              2 (const uint)
-0:54          Constant:
-0:54            2 (const int)
-0:54        o1: direct index for structure ( uniform int)
-0:54          '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})
-0:54          Constant:
-0:54            4 (const uint)
+0:49      Branch: Return with expression
+0:49        Constant:
+0:49          1 (const int)
+0:49          1 (const int)
+0:53  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:53    Function Parameters: 
+0:?     Sequence
 0:57      textureFetchOffset ( temp 4-component vector of float)
-0:57        'g_tTex2df4a' ( uniform texture2DArray)
-0:57        vector swizzle ( temp 3-component vector of int)
-0:57          c4: direct index for structure ( uniform 4-component vector of int)
-0:57            '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})
+0:57        'g_tTex1df4a' ( uniform texture1DArray)
+0:57        vector swizzle ( temp 2-component vector of int)
+0:57          c3: direct index for structure ( uniform 3-component vector of int)
+0:57            '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})
 0:57            Constant:
-0:57              3 (const uint)
+0:57              2 (const uint)
 0:57          Sequence
 0:57            Constant:
 0:57              0 (const int)
 0:57            Constant:
 0:57              1 (const int)
-0:57            Constant:
-0:57              2 (const int)
 0:57        direct index ( temp int)
-0:57          c4: direct index for structure ( uniform 4-component vector of int)
-0:57            '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})
+0:57          c3: direct index for structure ( uniform 3-component vector of int)
+0:57            '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})
 0:57            Constant:
-0:57              3 (const uint)
+0:57              2 (const uint)
 0:57          Constant:
-0:57            3 (const int)
-0:57        o2: direct index for structure ( uniform 2-component vector of int)
-0:57          '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})
-0:57          Constant:
-0:57            5 (const uint)
+0:57            2 (const int)
+0:57        Function Call: getOffset1( ( temp int)
 0:58      textureFetchOffset ( temp 4-component vector of int)
-0:58        'g_tTex2di4a' ( uniform itexture2DArray)
-0:58        vector swizzle ( temp 3-component vector of int)
-0:58          c4: direct index for structure ( uniform 4-component vector of int)
-0:58            '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})
+0:58        'g_tTex1di4a' ( uniform itexture1DArray)
+0:58        vector swizzle ( temp 2-component vector of int)
+0:58          c3: direct index for structure ( uniform 3-component vector of int)
+0:58            '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})
 0:58            Constant:
-0:58              3 (const uint)
+0:58              2 (const uint)
 0:58          Sequence
 0:58            Constant:
 0:58              0 (const int)
 0:58            Constant:
 0:58              1 (const int)
-0:58            Constant:
-0:58              2 (const int)
 0:58        direct index ( temp int)
-0:58          c4: direct index for structure ( uniform 4-component vector of int)
-0:58            '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})
+0:58          c3: direct index for structure ( uniform 3-component vector of int)
+0:58            '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})
 0:58            Constant:
-0:58              3 (const uint)
+0:58              2 (const uint)
 0:58          Constant:
-0:58            3 (const int)
-0:58        o2: direct index for structure ( uniform 2-component vector of int)
-0:58          '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})
-0:58          Constant:
-0:58            5 (const uint)
+0:58            2 (const int)
+0:58        Function Call: getOffset1( ( temp int)
 0:59      textureFetchOffset ( temp 4-component vector of uint)
-0:59        'g_tTex2du4a' ( uniform utexture2DArray)
-0:59        vector swizzle ( temp 3-component vector of int)
-0:59          c4: direct index for structure ( uniform 4-component vector of int)
-0:59            '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})
+0:59        'g_tTex1du4a' ( uniform utexture1DArray)
+0:59        vector swizzle ( temp 2-component vector of int)
+0:59          c3: direct index for structure ( uniform 3-component vector of int)
+0:59            '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})
 0:59            Constant:
-0:59              3 (const uint)
+0:59              2 (const uint)
 0:59          Sequence
 0:59            Constant:
 0:59              0 (const int)
 0:59            Constant:
 0:59              1 (const int)
-0:59            Constant:
-0:59              2 (const int)
 0:59        direct index ( temp int)
-0:59          c4: direct index for structure ( uniform 4-component vector of int)
-0:59            '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})
+0:59          c3: direct index for structure ( uniform 3-component vector of int)
+0:59            '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})
 0:59            Constant:
-0:59              3 (const uint)
+0:59              2 (const uint)
 0:59          Constant:
-0:59            3 (const int)
-0:59        o2: direct index for structure ( uniform 2-component vector of int)
-0:59          '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})
-0:59          Constant:
-0:59            5 (const uint)
-0:65      move second child to first child ( temp 4-component vector of float)
-0:65        Color: direct index for structure ( temp 4-component vector of float)
-0:65          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:65          Constant:
-0:65            0 (const int)
-0:65        Constant:
-0:65          1.000000
-0:65          1.000000
-0:65          1.000000
-0:65          1.000000
-0:66      move second child to first child ( temp float)
-0:66        Depth: direct index for structure ( temp float)
-0:66          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:66          Constant:
-0:66            1 (const int)
-0:66        Constant:
-0:66          1.000000
-0:68      Branch: Return with expression
-0:68        'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48  Function Definition: main( ( temp void)
-0:48    Function Parameters: 
+0:59            2 (const int)
+0:59        Function Call: getOffset1( ( temp int)
+0:62      textureFetchOffset ( temp 4-component vector of float)
+0:62        'g_tTex2df4a' ( uniform texture2DArray)
+0:62        vector swizzle ( temp 3-component vector of int)
+0:62          c4: direct index for structure ( uniform 4-component vector of int)
+0:62            '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})
+0:62            Constant:
+0:62              3 (const uint)
+0:62          Sequence
+0:62            Constant:
+0:62              0 (const int)
+0:62            Constant:
+0:62              1 (const int)
+0:62            Constant:
+0:62              2 (const int)
+0:62        direct index ( temp int)
+0:62          c4: direct index for structure ( uniform 4-component vector of int)
+0:62            '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})
+0:62            Constant:
+0:62              3 (const uint)
+0:62          Constant:
+0:62            3 (const int)
+0:62        Function Call: getOffset2( ( temp 2-component vector of int)
+0:63      textureFetchOffset ( temp 4-component vector of int)
+0:63        'g_tTex2di4a' ( uniform itexture2DArray)
+0:63        vector swizzle ( temp 3-component vector of int)
+0:63          c4: direct index for structure ( uniform 4-component vector of int)
+0:63            '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})
+0:63            Constant:
+0:63              3 (const uint)
+0:63          Sequence
+0:63            Constant:
+0:63              0 (const int)
+0:63            Constant:
+0:63              1 (const int)
+0:63            Constant:
+0:63              2 (const int)
+0:63        direct index ( temp int)
+0:63          c4: direct index for structure ( uniform 4-component vector of int)
+0:63            '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})
+0:63            Constant:
+0:63              3 (const uint)
+0:63          Constant:
+0:63            3 (const int)
+0:63        Function Call: getOffset2( ( temp 2-component vector of int)
+0:64      textureFetchOffset ( temp 4-component vector of uint)
+0:64        'g_tTex2du4a' ( uniform utexture2DArray)
+0:64        vector swizzle ( temp 3-component vector of int)
+0:64          c4: direct index for structure ( uniform 4-component vector of int)
+0:64            '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})
+0:64            Constant:
+0:64              3 (const uint)
+0:64          Sequence
+0:64            Constant:
+0:64              0 (const int)
+0:64            Constant:
+0:64              1 (const int)
+0:64            Constant:
+0:64              2 (const int)
+0:64        direct index ( temp int)
+0:64          c4: direct index for structure ( uniform 4-component vector of int)
+0:64            '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})
+0:64            Constant:
+0:64              3 (const uint)
+0:64          Constant:
+0:64            3 (const int)
+0:64        Function Call: getOffset2( ( temp 2-component vector of int)
+0:70      move second child to first child ( temp 4-component vector of float)
+0:70        Color: direct index for structure ( temp 4-component vector of float)
+0:70          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:70          Constant:
+0:70            0 (const int)
+0:70        Constant:
+0:70          1.000000
+0:70          1.000000
+0:70          1.000000
+0:70          1.000000
+0:71      move second child to first child ( temp float)
+0:71        Depth: direct index for structure ( temp float)
+0:71          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:71          Constant:
+0:71            1 (const int)
+0:71        Constant:
+0:71          1.000000
+0:73      Branch: Return with expression
+0:73        'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:53  Function Definition: main( ( temp void)
+0:53    Function Parameters: 
 0:?     Sequence
-0:48      Sequence
-0:48        move second child to first child ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48          'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48          Function Call: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48        move second child to first child ( temp 4-component vector of float)
+0:53      Sequence
+0:53        move second child to first child ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:53          'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:53          Function Call: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:53        move second child to first child ( temp 4-component vector of float)
 0:?           '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
-0:48          Color: direct index for structure ( temp 4-component vector of float)
-0:48            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48            Constant:
-0:48              0 (const int)
-0:48        move second child to first child ( temp float)
+0:53          Color: direct index for structure ( temp 4-component vector of float)
+0:53            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:53            Constant:
+0:53              0 (const int)
+0:53        move second child to first child ( temp float)
 0:?           '@entryPointOutput.Depth' ( out float FragDepth)
-0:48          Depth: direct index for structure ( temp float)
-0:48            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48            Constant:
-0:48              1 (const int)
+0:53          Depth: direct index for structure ( temp float)
+0:53            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:53            Constant:
+0:53              1 (const int)
 0:?   Linker Objects
 0:?     'g_sSamp' (layout( binding=0) uniform sampler)
 0:?     'g_tTex1df4' (layout( binding=0) uniform texture1D)
@@ -211,7 +206,7 @@
 0:?     'g_tTexcdf4a' ( uniform textureCubeArray)
 0:?     'g_tTexcdi4a' ( uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' ( uniform utextureCubeArray)
-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})
+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})
 0:?     '@entryPointOutput.Depth' ( out float FragDepth)
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
@@ -223,191 +218,186 @@
 gl_FragCoord origin is upper left
 using depth_any
 0:? Sequence
-0:48  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:43  Function Definition: getOffset1( ( temp int)
+0:43    Function Parameters: 
+0:?     Sequence
+0:44      Branch: Return with expression
+0:44        Constant:
+0:44          1 (const int)
+0:48  Function Definition: getOffset2( ( temp 2-component vector of int)
 0:48    Function Parameters: 
 0:?     Sequence
-0:52      textureFetchOffset ( temp 4-component vector of float)
-0:52        'g_tTex1df4a' ( uniform texture1DArray)
-0:52        vector swizzle ( temp 2-component vector of int)
-0:52          c3: direct index for structure ( uniform 3-component vector of int)
-0:52            '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})
-0:52            Constant:
-0:52              2 (const uint)
-0:52          Sequence
-0:52            Constant:
-0:52              0 (const int)
-0:52            Constant:
-0:52              1 (const int)
-0:52        direct index ( temp int)
-0:52          c3: direct index for structure ( uniform 3-component vector of int)
-0:52            '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})
-0:52            Constant:
-0:52              2 (const uint)
-0:52          Constant:
-0:52            2 (const int)
-0:52        o1: direct index for structure ( uniform int)
-0:52          '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})
-0:52          Constant:
-0:52            4 (const uint)
-0:53      textureFetchOffset ( temp 4-component vector of int)
-0:53        'g_tTex1di4a' ( uniform itexture1DArray)
-0:53        vector swizzle ( temp 2-component vector of int)
-0:53          c3: direct index for structure ( uniform 3-component vector of int)
-0:53            '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})
-0:53            Constant:
-0:53              2 (const uint)
-0:53          Sequence
-0:53            Constant:
-0:53              0 (const int)
-0:53            Constant:
-0:53              1 (const int)
-0:53        direct index ( temp int)
-0:53          c3: direct index for structure ( uniform 3-component vector of int)
-0:53            '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})
-0:53            Constant:
-0:53              2 (const uint)
-0:53          Constant:
-0:53            2 (const int)
-0:53        o1: direct index for structure ( uniform int)
-0:53          '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})
-0:53          Constant:
-0:53            4 (const uint)
-0:54      textureFetchOffset ( temp 4-component vector of uint)
-0:54        'g_tTex1du4a' ( uniform utexture1DArray)
-0:54        vector swizzle ( temp 2-component vector of int)
-0:54          c3: direct index for structure ( uniform 3-component vector of int)
-0:54            '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})
-0:54            Constant:
-0:54              2 (const uint)
-0:54          Sequence
-0:54            Constant:
-0:54              0 (const int)
-0:54            Constant:
-0:54              1 (const int)
-0:54        direct index ( temp int)
-0:54          c3: direct index for structure ( uniform 3-component vector of int)
-0:54            '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})
-0:54            Constant:
-0:54              2 (const uint)
-0:54          Constant:
-0:54            2 (const int)
-0:54        o1: direct index for structure ( uniform int)
-0:54          '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})
-0:54          Constant:
-0:54            4 (const uint)
+0:49      Branch: Return with expression
+0:49        Constant:
+0:49          1 (const int)
+0:49          1 (const int)
+0:53  Function Definition: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:53    Function Parameters: 
+0:?     Sequence
 0:57      textureFetchOffset ( temp 4-component vector of float)
-0:57        'g_tTex2df4a' ( uniform texture2DArray)
-0:57        vector swizzle ( temp 3-component vector of int)
-0:57          c4: direct index for structure ( uniform 4-component vector of int)
-0:57            '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})
+0:57        'g_tTex1df4a' ( uniform texture1DArray)
+0:57        vector swizzle ( temp 2-component vector of int)
+0:57          c3: direct index for structure ( uniform 3-component vector of int)
+0:57            '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})
 0:57            Constant:
-0:57              3 (const uint)
+0:57              2 (const uint)
 0:57          Sequence
 0:57            Constant:
 0:57              0 (const int)
 0:57            Constant:
 0:57              1 (const int)
-0:57            Constant:
-0:57              2 (const int)
 0:57        direct index ( temp int)
-0:57          c4: direct index for structure ( uniform 4-component vector of int)
-0:57            '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})
+0:57          c3: direct index for structure ( uniform 3-component vector of int)
+0:57            '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})
 0:57            Constant:
-0:57              3 (const uint)
+0:57              2 (const uint)
 0:57          Constant:
-0:57            3 (const int)
-0:57        o2: direct index for structure ( uniform 2-component vector of int)
-0:57          '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})
-0:57          Constant:
-0:57            5 (const uint)
+0:57            2 (const int)
+0:57        Function Call: getOffset1( ( temp int)
 0:58      textureFetchOffset ( temp 4-component vector of int)
-0:58        'g_tTex2di4a' ( uniform itexture2DArray)
-0:58        vector swizzle ( temp 3-component vector of int)
-0:58          c4: direct index for structure ( uniform 4-component vector of int)
-0:58            '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})
+0:58        'g_tTex1di4a' ( uniform itexture1DArray)
+0:58        vector swizzle ( temp 2-component vector of int)
+0:58          c3: direct index for structure ( uniform 3-component vector of int)
+0:58            '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})
 0:58            Constant:
-0:58              3 (const uint)
+0:58              2 (const uint)
 0:58          Sequence
 0:58            Constant:
 0:58              0 (const int)
 0:58            Constant:
 0:58              1 (const int)
-0:58            Constant:
-0:58              2 (const int)
 0:58        direct index ( temp int)
-0:58          c4: direct index for structure ( uniform 4-component vector of int)
-0:58            '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})
+0:58          c3: direct index for structure ( uniform 3-component vector of int)
+0:58            '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})
 0:58            Constant:
-0:58              3 (const uint)
+0:58              2 (const uint)
 0:58          Constant:
-0:58            3 (const int)
-0:58        o2: direct index for structure ( uniform 2-component vector of int)
-0:58          '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})
-0:58          Constant:
-0:58            5 (const uint)
+0:58            2 (const int)
+0:58        Function Call: getOffset1( ( temp int)
 0:59      textureFetchOffset ( temp 4-component vector of uint)
-0:59        'g_tTex2du4a' ( uniform utexture2DArray)
-0:59        vector swizzle ( temp 3-component vector of int)
-0:59          c4: direct index for structure ( uniform 4-component vector of int)
-0:59            '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})
+0:59        'g_tTex1du4a' ( uniform utexture1DArray)
+0:59        vector swizzle ( temp 2-component vector of int)
+0:59          c3: direct index for structure ( uniform 3-component vector of int)
+0:59            '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})
 0:59            Constant:
-0:59              3 (const uint)
+0:59              2 (const uint)
 0:59          Sequence
 0:59            Constant:
 0:59              0 (const int)
 0:59            Constant:
 0:59              1 (const int)
-0:59            Constant:
-0:59              2 (const int)
 0:59        direct index ( temp int)
-0:59          c4: direct index for structure ( uniform 4-component vector of int)
-0:59            '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})
+0:59          c3: direct index for structure ( uniform 3-component vector of int)
+0:59            '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})
 0:59            Constant:
-0:59              3 (const uint)
+0:59              2 (const uint)
 0:59          Constant:
-0:59            3 (const int)
-0:59        o2: direct index for structure ( uniform 2-component vector of int)
-0:59          '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})
-0:59          Constant:
-0:59            5 (const uint)
-0:65      move second child to first child ( temp 4-component vector of float)
-0:65        Color: direct index for structure ( temp 4-component vector of float)
-0:65          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:65          Constant:
-0:65            0 (const int)
-0:65        Constant:
-0:65          1.000000
-0:65          1.000000
-0:65          1.000000
-0:65          1.000000
-0:66      move second child to first child ( temp float)
-0:66        Depth: direct index for structure ( temp float)
-0:66          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:66          Constant:
-0:66            1 (const int)
-0:66        Constant:
-0:66          1.000000
-0:68      Branch: Return with expression
-0:68        'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48  Function Definition: main( ( temp void)
-0:48    Function Parameters: 
+0:59            2 (const int)
+0:59        Function Call: getOffset1( ( temp int)
+0:62      textureFetchOffset ( temp 4-component vector of float)
+0:62        'g_tTex2df4a' ( uniform texture2DArray)
+0:62        vector swizzle ( temp 3-component vector of int)
+0:62          c4: direct index for structure ( uniform 4-component vector of int)
+0:62            '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})
+0:62            Constant:
+0:62              3 (const uint)
+0:62          Sequence
+0:62            Constant:
+0:62              0 (const int)
+0:62            Constant:
+0:62              1 (const int)
+0:62            Constant:
+0:62              2 (const int)
+0:62        direct index ( temp int)
+0:62          c4: direct index for structure ( uniform 4-component vector of int)
+0:62            '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})
+0:62            Constant:
+0:62              3 (const uint)
+0:62          Constant:
+0:62            3 (const int)
+0:62        Function Call: getOffset2( ( temp 2-component vector of int)
+0:63      textureFetchOffset ( temp 4-component vector of int)
+0:63        'g_tTex2di4a' ( uniform itexture2DArray)
+0:63        vector swizzle ( temp 3-component vector of int)
+0:63          c4: direct index for structure ( uniform 4-component vector of int)
+0:63            '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})
+0:63            Constant:
+0:63              3 (const uint)
+0:63          Sequence
+0:63            Constant:
+0:63              0 (const int)
+0:63            Constant:
+0:63              1 (const int)
+0:63            Constant:
+0:63              2 (const int)
+0:63        direct index ( temp int)
+0:63          c4: direct index for structure ( uniform 4-component vector of int)
+0:63            '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})
+0:63            Constant:
+0:63              3 (const uint)
+0:63          Constant:
+0:63            3 (const int)
+0:63        Function Call: getOffset2( ( temp 2-component vector of int)
+0:64      textureFetchOffset ( temp 4-component vector of uint)
+0:64        'g_tTex2du4a' ( uniform utexture2DArray)
+0:64        vector swizzle ( temp 3-component vector of int)
+0:64          c4: direct index for structure ( uniform 4-component vector of int)
+0:64            '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})
+0:64            Constant:
+0:64              3 (const uint)
+0:64          Sequence
+0:64            Constant:
+0:64              0 (const int)
+0:64            Constant:
+0:64              1 (const int)
+0:64            Constant:
+0:64              2 (const int)
+0:64        direct index ( temp int)
+0:64          c4: direct index for structure ( uniform 4-component vector of int)
+0:64            '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})
+0:64            Constant:
+0:64              3 (const uint)
+0:64          Constant:
+0:64            3 (const int)
+0:64        Function Call: getOffset2( ( temp 2-component vector of int)
+0:70      move second child to first child ( temp 4-component vector of float)
+0:70        Color: direct index for structure ( temp 4-component vector of float)
+0:70          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:70          Constant:
+0:70            0 (const int)
+0:70        Constant:
+0:70          1.000000
+0:70          1.000000
+0:70          1.000000
+0:70          1.000000
+0:71      move second child to first child ( temp float)
+0:71        Depth: direct index for structure ( temp float)
+0:71          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:71          Constant:
+0:71            1 (const int)
+0:71        Constant:
+0:71          1.000000
+0:73      Branch: Return with expression
+0:73        'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:53  Function Definition: main( ( temp void)
+0:53    Function Parameters: 
 0:?     Sequence
-0:48      Sequence
-0:48        move second child to first child ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48          'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48          Function Call: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48        move second child to first child ( temp 4-component vector of float)
+0:53      Sequence
+0:53        move second child to first child ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:53          'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:53          Function Call: @main( ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:53        move second child to first child ( temp 4-component vector of float)
 0:?           '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
-0:48          Color: direct index for structure ( temp 4-component vector of float)
-0:48            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48            Constant:
-0:48              0 (const int)
-0:48        move second child to first child ( temp float)
+0:53          Color: direct index for structure ( temp 4-component vector of float)
+0:53            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:53            Constant:
+0:53              0 (const int)
+0:53        move second child to first child ( temp float)
 0:?           '@entryPointOutput.Depth' ( out float FragDepth)
-0:48          Depth: direct index for structure ( temp float)
-0:48            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
-0:48            Constant:
-0:48              1 (const int)
+0:53          Depth: direct index for structure ( temp float)
+0:53            'flattenTemp' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
+0:53            Constant:
+0:53              1 (const int)
 0:?   Linker Objects
 0:?     'g_sSamp' (layout( binding=0) uniform sampler)
 0:?     'g_tTex1df4' (layout( binding=0) uniform texture1D)
@@ -431,14 +421,13 @@
 0:?     'g_tTexcdf4a' ( uniform textureCubeArray)
 0:?     'g_tTexcdi4a' ( uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' ( uniform utextureCubeArray)
-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})
+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})
 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
+// Id's are bound by 176
 
                               Capability Shader
                               Capability ImageGatherExtended
@@ -446,284 +435,280 @@
                               Capability SampledCubeArray
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 119 123
+                              EntryPoint Fragment 4  "main" 121 125
                               ExecutionMode 4 OriginUpperLeft
                               ExecutionMode 4 DepthReplacing
                               Source HLSL 500
                               Name 4  "main"
-                              Name 8  "PS_OUTPUT"
-                              MemberName 8(PS_OUTPUT) 0  "Color"
-                              MemberName 8(PS_OUTPUT) 1  "Depth"
-                              Name 10  "@main("
-                              Name 14  "g_tTex1df4a"
-                              Name 20  "$Global"
-                              MemberName 20($Global) 0  "c1"
-                              MemberName 20($Global) 1  "c2"
-                              MemberName 20($Global) 2  "c3"
-                              MemberName 20($Global) 3  "c4"
-                              MemberName 20($Global) 4  "o1"
-                              MemberName 20($Global) 5  "o2"
-                              MemberName 20($Global) 6  "o3"
-                              MemberName 20($Global) 7  "o4"
-                              Name 22  ""
-                              Name 39  "g_tTex1di4a"
-                              Name 51  "g_tTex1du4a"
-                              Name 64  "g_tTex2df4a"
-                              Name 81  "g_tTex2di4a"
-                              Name 93  "g_tTex2du4a"
-                              Name 104  "psout"
-                              Name 116  "flattenTemp"
-                              Name 119  "@entryPointOutput.Color"
-                              Name 123  "@entryPointOutput.Depth"
-                              Name 128  "g_sSamp"
-                              Name 131  "g_tTex1df4"
-                              Name 134  "g_tTex1di4"
-                              Name 137  "g_tTex1du4"
-                              Name 140  "g_tTex2df4"
-                              Name 143  "g_tTex2di4"
-                              Name 146  "g_tTex2du4"
-                              Name 149  "g_tTex3df4"
-                              Name 152  "g_tTex3di4"
-                              Name 155  "g_tTex3du4"
-                              Name 158  "g_tTexcdf4"
-                              Name 161  "g_tTexcdi4"
-                              Name 164  "g_tTexcdu4"
-                              Name 167  "g_tTexcdf4a"
-                              Name 170  "g_tTexcdi4a"
-                              Name 173  "g_tTexcdu4a"
-                              Decorate 14(g_tTex1df4a) DescriptorSet 0
-                              Decorate 14(g_tTex1df4a) Binding 1
-                              MemberDecorate 20($Global) 0 Offset 0
-                              MemberDecorate 20($Global) 1 Offset 8
-                              MemberDecorate 20($Global) 2 Offset 16
-                              MemberDecorate 20($Global) 3 Offset 32
-                              MemberDecorate 20($Global) 4 Offset 48
-                              MemberDecorate 20($Global) 5 Offset 56
-                              MemberDecorate 20($Global) 6 Offset 64
-                              MemberDecorate 20($Global) 7 Offset 80
-                              Decorate 20($Global) Block
-                              Decorate 22 DescriptorSet 0
-                              Decorate 22 Binding 7
-                              Decorate 39(g_tTex1di4a) DescriptorSet 0
-                              Decorate 39(g_tTex1di4a) Binding 2
-                              Decorate 51(g_tTex1du4a) DescriptorSet 0
-                              Decorate 51(g_tTex1du4a) Binding 3
-                              Decorate 64(g_tTex2df4a) DescriptorSet 0
-                              Decorate 64(g_tTex2df4a) Binding 4
-                              Decorate 81(g_tTex2di4a) DescriptorSet 0
-                              Decorate 81(g_tTex2di4a) Binding 5
-                              Decorate 93(g_tTex2du4a) DescriptorSet 0
-                              Decorate 93(g_tTex2du4a) Binding 6
-                              Decorate 119(@entryPointOutput.Color) Location 0
-                              Decorate 123(@entryPointOutput.Depth) BuiltIn FragDepth
-                              Decorate 128(g_sSamp) DescriptorSet 0
-                              Decorate 128(g_sSamp) Binding 0
-                              Decorate 131(g_tTex1df4) DescriptorSet 0
-                              Decorate 131(g_tTex1df4) Binding 0
-                              Decorate 134(g_tTex1di4) DescriptorSet 0
-                              Decorate 134(g_tTex1di4) Binding 0
-                              Decorate 137(g_tTex1du4) DescriptorSet 0
-                              Decorate 137(g_tTex1du4) Binding 0
-                              Decorate 140(g_tTex2df4) DescriptorSet 0
-                              Decorate 140(g_tTex2df4) Binding 0
-                              Decorate 143(g_tTex2di4) DescriptorSet 0
-                              Decorate 143(g_tTex2di4) Binding 0
-                              Decorate 146(g_tTex2du4) DescriptorSet 0
-                              Decorate 146(g_tTex2du4) Binding 0
-                              Decorate 149(g_tTex3df4) DescriptorSet 0
-                              Decorate 149(g_tTex3df4) Binding 0
-                              Decorate 152(g_tTex3di4) DescriptorSet 0
-                              Decorate 152(g_tTex3di4) Binding 0
-                              Decorate 155(g_tTex3du4) DescriptorSet 0
-                              Decorate 155(g_tTex3du4) Binding 0
-                              Decorate 158(g_tTexcdf4) DescriptorSet 0
-                              Decorate 158(g_tTexcdf4) Binding 0
-                              Decorate 161(g_tTexcdi4) DescriptorSet 0
-                              Decorate 161(g_tTexcdi4) Binding 0
-                              Decorate 164(g_tTexcdu4) DescriptorSet 0
-                              Decorate 164(g_tTexcdu4) Binding 0
-                              Decorate 167(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 167(g_tTexcdf4a) Binding 0
-                              Decorate 170(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 170(g_tTexcdi4a) Binding 0
-                              Decorate 173(g_tTexcdu4a) DescriptorSet 0
-                              Decorate 173(g_tTexcdu4a) Binding 0
+                              Name 8  "getOffset1("
+                              Name 12  "getOffset2("
+                              Name 16  "PS_OUTPUT"
+                              MemberName 16(PS_OUTPUT) 0  "Color"
+                              MemberName 16(PS_OUTPUT) 1  "Depth"
+                              Name 18  "@main("
+                              Name 28  "g_tTex1df4a"
+                              Name 32  "$Global"
+                              MemberName 32($Global) 0  "c1"
+                              MemberName 32($Global) 1  "c2"
+                              MemberName 32($Global) 2  "c3"
+                              MemberName 32($Global) 3  "c4"
+                              Name 34  ""
+                              Name 49  "g_tTex1di4a"
+                              Name 60  "g_tTex1du4a"
+                              Name 72  "g_tTex2df4a"
+                              Name 86  "g_tTex2di4a"
+                              Name 97  "g_tTex2du4a"
+                              Name 107  "psout"
+                              Name 118  "flattenTemp"
+                              Name 121  "@entryPointOutput.Color"
+                              Name 125  "@entryPointOutput.Depth"
+                              Name 130  "g_sSamp"
+                              Name 133  "g_tTex1df4"
+                              Name 136  "g_tTex1di4"
+                              Name 139  "g_tTex1du4"
+                              Name 142  "g_tTex2df4"
+                              Name 145  "g_tTex2di4"
+                              Name 148  "g_tTex2du4"
+                              Name 151  "g_tTex3df4"
+                              Name 154  "g_tTex3di4"
+                              Name 157  "g_tTex3du4"
+                              Name 160  "g_tTexcdf4"
+                              Name 163  "g_tTexcdi4"
+                              Name 166  "g_tTexcdu4"
+                              Name 169  "g_tTexcdf4a"
+                              Name 172  "g_tTexcdi4a"
+                              Name 175  "g_tTexcdu4a"
+                              Decorate 28(g_tTex1df4a) DescriptorSet 0
+                              Decorate 28(g_tTex1df4a) Binding 1
+                              MemberDecorate 32($Global) 0 Offset 0
+                              MemberDecorate 32($Global) 1 Offset 8
+                              MemberDecorate 32($Global) 2 Offset 16
+                              MemberDecorate 32($Global) 3 Offset 32
+                              Decorate 32($Global) Block
+                              Decorate 34 DescriptorSet 0
+                              Decorate 34 Binding 7
+                              Decorate 49(g_tTex1di4a) DescriptorSet 0
+                              Decorate 49(g_tTex1di4a) Binding 2
+                              Decorate 60(g_tTex1du4a) DescriptorSet 0
+                              Decorate 60(g_tTex1du4a) Binding 3
+                              Decorate 72(g_tTex2df4a) DescriptorSet 0
+                              Decorate 72(g_tTex2df4a) Binding 4
+                              Decorate 86(g_tTex2di4a) DescriptorSet 0
+                              Decorate 86(g_tTex2di4a) Binding 5
+                              Decorate 97(g_tTex2du4a) DescriptorSet 0
+                              Decorate 97(g_tTex2du4a) Binding 6
+                              Decorate 121(@entryPointOutput.Color) Location 0
+                              Decorate 125(@entryPointOutput.Depth) BuiltIn FragDepth
+                              Decorate 130(g_sSamp) DescriptorSet 0
+                              Decorate 130(g_sSamp) Binding 0
+                              Decorate 133(g_tTex1df4) DescriptorSet 0
+                              Decorate 133(g_tTex1df4) Binding 0
+                              Decorate 136(g_tTex1di4) DescriptorSet 0
+                              Decorate 136(g_tTex1di4) Binding 0
+                              Decorate 139(g_tTex1du4) DescriptorSet 0
+                              Decorate 139(g_tTex1du4) Binding 0
+                              Decorate 142(g_tTex2df4) DescriptorSet 0
+                              Decorate 142(g_tTex2df4) Binding 0
+                              Decorate 145(g_tTex2di4) DescriptorSet 0
+                              Decorate 145(g_tTex2di4) Binding 0
+                              Decorate 148(g_tTex2du4) DescriptorSet 0
+                              Decorate 148(g_tTex2du4) Binding 0
+                              Decorate 151(g_tTex3df4) DescriptorSet 0
+                              Decorate 151(g_tTex3df4) Binding 0
+                              Decorate 154(g_tTex3di4) DescriptorSet 0
+                              Decorate 154(g_tTex3di4) Binding 0
+                              Decorate 157(g_tTex3du4) DescriptorSet 0
+                              Decorate 157(g_tTex3du4) Binding 0
+                              Decorate 160(g_tTexcdf4) DescriptorSet 0
+                              Decorate 160(g_tTexcdf4) Binding 0
+                              Decorate 163(g_tTexcdi4) DescriptorSet 0
+                              Decorate 163(g_tTexcdi4) Binding 0
+                              Decorate 166(g_tTexcdu4) DescriptorSet 0
+                              Decorate 166(g_tTexcdu4) Binding 0
+                              Decorate 169(g_tTexcdf4a) DescriptorSet 0
+                              Decorate 169(g_tTexcdf4a) Binding 0
+                              Decorate 172(g_tTexcdi4a) DescriptorSet 0
+                              Decorate 172(g_tTexcdi4a) Binding 0
+                              Decorate 175(g_tTexcdu4a) DescriptorSet 0
+                              Decorate 175(g_tTexcdu4a) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
-               6:             TypeFloat 32
-               7:             TypeVector 6(float) 4
-    8(PS_OUTPUT):             TypeStruct 7(fvec4) 6(float)
-               9:             TypeFunction 8(PS_OUTPUT)
-              12:             TypeImage 6(float) 1D array sampled format:Unknown
-              13:             TypePointer UniformConstant 12
- 14(g_tTex1df4a):     13(ptr) Variable UniformConstant
-              16:             TypeInt 32 1
-              17:             TypeVector 16(int) 2
-              18:             TypeVector 16(int) 3
-              19:             TypeVector 16(int) 4
-     20($Global):             TypeStruct 16(int) 17(ivec2) 18(ivec3) 19(ivec4) 16(int) 17(ivec2) 18(ivec3) 19(ivec4)
-              21:             TypePointer Uniform 20($Global)
-              22:     21(ptr) Variable Uniform
-              23:     16(int) Constant 2
-              24:             TypePointer Uniform 18(ivec3)
-              28:             TypeInt 32 0
-              29:     28(int) Constant 2
-              30:             TypePointer Uniform 16(int)
-              33:     16(int) Constant 4
-              37:             TypeImage 16(int) 1D array sampled format:Unknown
-              38:             TypePointer UniformConstant 37
- 39(g_tTex1di4a):     38(ptr) Variable UniformConstant
-              49:             TypeImage 28(int) 1D array sampled format:Unknown
-              50:             TypePointer UniformConstant 49
- 51(g_tTex1du4a):     50(ptr) Variable UniformConstant
-              60:             TypeVector 28(int) 4
-              62:             TypeImage 6(float) 2D array sampled format:Unknown
-              63:             TypePointer UniformConstant 62
- 64(g_tTex2df4a):     63(ptr) Variable UniformConstant
-              66:     16(int) Constant 3
-              67:             TypePointer Uniform 19(ivec4)
-              71:     28(int) Constant 3
-              74:     16(int) Constant 5
-              75:             TypePointer Uniform 17(ivec2)
-              79:             TypeImage 16(int) 2D array sampled format:Unknown
-              80:             TypePointer UniformConstant 79
- 81(g_tTex2di4a):     80(ptr) Variable UniformConstant
-              91:             TypeImage 28(int) 2D array sampled format:Unknown
-              92:             TypePointer UniformConstant 91
- 93(g_tTex2du4a):     92(ptr) Variable UniformConstant
-             103:             TypePointer Function 8(PS_OUTPUT)
-             105:     16(int) Constant 0
-             106:    6(float) Constant 1065353216
-             107:    7(fvec4) ConstantComposite 106 106 106 106
-             108:             TypePointer Function 7(fvec4)
-             110:     16(int) Constant 1
-             111:             TypePointer Function 6(float)
-             118:             TypePointer Output 7(fvec4)
-119(@entryPointOutput.Color):    118(ptr) Variable Output
-             122:             TypePointer Output 6(float)
-123(@entryPointOutput.Depth):    122(ptr) Variable Output
-             126:             TypeSampler
-             127:             TypePointer UniformConstant 126
-    128(g_sSamp):    127(ptr) Variable UniformConstant
-             129:             TypeImage 6(float) 1D sampled format:Unknown
-             130:             TypePointer UniformConstant 129
- 131(g_tTex1df4):    130(ptr) Variable UniformConstant
-             132:             TypeImage 16(int) 1D sampled format:Unknown
-             133:             TypePointer UniformConstant 132
- 134(g_tTex1di4):    133(ptr) Variable UniformConstant
-             135:             TypeImage 28(int) 1D sampled format:Unknown
-             136:             TypePointer UniformConstant 135
- 137(g_tTex1du4):    136(ptr) Variable UniformConstant
-             138:             TypeImage 6(float) 2D sampled format:Unknown
-             139:             TypePointer UniformConstant 138
- 140(g_tTex2df4):    139(ptr) Variable UniformConstant
-             141:             TypeImage 16(int) 2D sampled format:Unknown
-             142:             TypePointer UniformConstant 141
- 143(g_tTex2di4):    142(ptr) Variable UniformConstant
-             144:             TypeImage 28(int) 2D sampled format:Unknown
-             145:             TypePointer UniformConstant 144
- 146(g_tTex2du4):    145(ptr) Variable UniformConstant
-             147:             TypeImage 6(float) 3D sampled format:Unknown
-             148:             TypePointer UniformConstant 147
- 149(g_tTex3df4):    148(ptr) Variable UniformConstant
-             150:             TypeImage 16(int) 3D sampled format:Unknown
-             151:             TypePointer UniformConstant 150
- 152(g_tTex3di4):    151(ptr) Variable UniformConstant
-             153:             TypeImage 28(int) 3D sampled format:Unknown
-             154:             TypePointer UniformConstant 153
- 155(g_tTex3du4):    154(ptr) Variable UniformConstant
-             156:             TypeImage 6(float) Cube sampled format:Unknown
-             157:             TypePointer UniformConstant 156
- 158(g_tTexcdf4):    157(ptr) Variable UniformConstant
-             159:             TypeImage 16(int) Cube sampled format:Unknown
-             160:             TypePointer UniformConstant 159
- 161(g_tTexcdi4):    160(ptr) Variable UniformConstant
-             162:             TypeImage 28(int) Cube sampled format:Unknown
-             163:             TypePointer UniformConstant 162
- 164(g_tTexcdu4):    163(ptr) Variable UniformConstant
-             165:             TypeImage 6(float) Cube array sampled format:Unknown
-             166:             TypePointer UniformConstant 165
-167(g_tTexcdf4a):    166(ptr) Variable UniformConstant
-             168:             TypeImage 16(int) Cube array sampled format:Unknown
-             169:             TypePointer UniformConstant 168
-170(g_tTexcdi4a):    169(ptr) Variable UniformConstant
-             171:             TypeImage 28(int) Cube array sampled format:Unknown
-             172:             TypePointer UniformConstant 171
-173(g_tTexcdu4a):    172(ptr) Variable UniformConstant
+               6:             TypeInt 32 1
+               7:             TypeFunction 6(int)
+              10:             TypeVector 6(int) 2
+              11:             TypeFunction 10(ivec2)
+              14:             TypeFloat 32
+              15:             TypeVector 14(float) 4
+   16(PS_OUTPUT):             TypeStruct 15(fvec4) 14(float)
+              17:             TypeFunction 16(PS_OUTPUT)
+              20:      6(int) Constant 1
+              23:   10(ivec2) ConstantComposite 20 20
+              26:             TypeImage 14(float) 1D array sampled format:Unknown
+              27:             TypePointer UniformConstant 26
+ 28(g_tTex1df4a):     27(ptr) Variable UniformConstant
+              30:             TypeVector 6(int) 3
+              31:             TypeVector 6(int) 4
+     32($Global):             TypeStruct 6(int) 10(ivec2) 30(ivec3) 31(ivec4)
+              33:             TypePointer Uniform 32($Global)
+              34:     33(ptr) Variable Uniform
+              35:      6(int) Constant 2
+              36:             TypePointer Uniform 30(ivec3)
+              40:             TypeInt 32 0
+              41:     40(int) Constant 2
+              42:             TypePointer Uniform 6(int)
+              47:             TypeImage 6(int) 1D array sampled format:Unknown
+              48:             TypePointer UniformConstant 47
+ 49(g_tTex1di4a):     48(ptr) Variable UniformConstant
+              58:             TypeImage 40(int) 1D array sampled format:Unknown
+              59:             TypePointer UniformConstant 58
+ 60(g_tTex1du4a):     59(ptr) Variable UniformConstant
+              68:             TypeVector 40(int) 4
+              70:             TypeImage 14(float) 2D array sampled format:Unknown
+              71:             TypePointer UniformConstant 70
+ 72(g_tTex2df4a):     71(ptr) Variable UniformConstant
+              74:      6(int) Constant 3
+              75:             TypePointer Uniform 31(ivec4)
+              79:     40(int) Constant 3
+              84:             TypeImage 6(int) 2D array sampled format:Unknown
+              85:             TypePointer UniformConstant 84
+ 86(g_tTex2di4a):     85(ptr) Variable UniformConstant
+              95:             TypeImage 40(int) 2D array sampled format:Unknown
+              96:             TypePointer UniformConstant 95
+ 97(g_tTex2du4a):     96(ptr) Variable UniformConstant
+             106:             TypePointer Function 16(PS_OUTPUT)
+             108:      6(int) Constant 0
+             109:   14(float) Constant 1065353216
+             110:   15(fvec4) ConstantComposite 109 109 109 109
+             111:             TypePointer Function 15(fvec4)
+             113:             TypePointer Function 14(float)
+             120:             TypePointer Output 15(fvec4)
+121(@entryPointOutput.Color):    120(ptr) Variable Output
+             124:             TypePointer Output 14(float)
+125(@entryPointOutput.Depth):    124(ptr) Variable Output
+             128:             TypeSampler
+             129:             TypePointer UniformConstant 128
+    130(g_sSamp):    129(ptr) Variable UniformConstant
+             131:             TypeImage 14(float) 1D sampled format:Unknown
+             132:             TypePointer UniformConstant 131
+ 133(g_tTex1df4):    132(ptr) Variable UniformConstant
+             134:             TypeImage 6(int) 1D sampled format:Unknown
+             135:             TypePointer UniformConstant 134
+ 136(g_tTex1di4):    135(ptr) Variable UniformConstant
+             137:             TypeImage 40(int) 1D sampled format:Unknown
+             138:             TypePointer UniformConstant 137
+ 139(g_tTex1du4):    138(ptr) Variable UniformConstant
+             140:             TypeImage 14(float) 2D sampled format:Unknown
+             141:             TypePointer UniformConstant 140
+ 142(g_tTex2df4):    141(ptr) Variable UniformConstant
+             143:             TypeImage 6(int) 2D sampled format:Unknown
+             144:             TypePointer UniformConstant 143
+ 145(g_tTex2di4):    144(ptr) Variable UniformConstant
+             146:             TypeImage 40(int) 2D sampled format:Unknown
+             147:             TypePointer UniformConstant 146
+ 148(g_tTex2du4):    147(ptr) Variable UniformConstant
+             149:             TypeImage 14(float) 3D sampled format:Unknown
+             150:             TypePointer UniformConstant 149
+ 151(g_tTex3df4):    150(ptr) Variable UniformConstant
+             152:             TypeImage 6(int) 3D sampled format:Unknown
+             153:             TypePointer UniformConstant 152
+ 154(g_tTex3di4):    153(ptr) Variable UniformConstant
+             155:             TypeImage 40(int) 3D sampled format:Unknown
+             156:             TypePointer UniformConstant 155
+ 157(g_tTex3du4):    156(ptr) Variable UniformConstant
+             158:             TypeImage 14(float) Cube sampled format:Unknown
+             159:             TypePointer UniformConstant 158
+ 160(g_tTexcdf4):    159(ptr) Variable UniformConstant
+             161:             TypeImage 6(int) Cube sampled format:Unknown
+             162:             TypePointer UniformConstant 161
+ 163(g_tTexcdi4):    162(ptr) Variable UniformConstant
+             164:             TypeImage 40(int) Cube sampled format:Unknown
+             165:             TypePointer UniformConstant 164
+ 166(g_tTexcdu4):    165(ptr) Variable UniformConstant
+             167:             TypeImage 14(float) Cube array sampled format:Unknown
+             168:             TypePointer UniformConstant 167
+169(g_tTexcdf4a):    168(ptr) Variable UniformConstant
+             170:             TypeImage 6(int) Cube array sampled format:Unknown
+             171:             TypePointer UniformConstant 170
+172(g_tTexcdi4a):    171(ptr) Variable UniformConstant
+             173:             TypeImage 40(int) Cube array sampled format:Unknown
+             174:             TypePointer UniformConstant 173
+175(g_tTexcdu4a):    174(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-116(flattenTemp):    103(ptr) Variable Function
-             117:8(PS_OUTPUT) FunctionCall 10(@main()
-                              Store 116(flattenTemp) 117
-             120:    108(ptr) AccessChain 116(flattenTemp) 105
-             121:    7(fvec4) Load 120
-                              Store 119(@entryPointOutput.Color) 121
-             124:    111(ptr) AccessChain 116(flattenTemp) 110
-             125:    6(float) Load 124
-                              Store 123(@entryPointOutput.Depth) 125
+118(flattenTemp):    106(ptr) Variable Function
+             119:16(PS_OUTPUT) FunctionCall 18(@main()
+                              Store 118(flattenTemp) 119
+             122:    111(ptr) AccessChain 118(flattenTemp) 108
+             123:   15(fvec4) Load 122
+                              Store 121(@entryPointOutput.Color) 123
+             126:    113(ptr) AccessChain 118(flattenTemp) 20
+             127:   14(float) Load 126
+                              Store 125(@entryPointOutput.Depth) 127
                               Return
                               FunctionEnd
-      10(@main():8(PS_OUTPUT) Function None 9
-              11:             Label
-      104(psout):    103(ptr) Variable Function
-              15:          12 Load 14(g_tTex1df4a)
-              25:     24(ptr) AccessChain 22 23
-              26:   18(ivec3) Load 25
-              27:   17(ivec2) VectorShuffle 26 26 0 1
-              31:     30(ptr) AccessChain 22 23 29
-              32:     16(int) Load 31
-              34:     30(ptr) AccessChain 22 33
-              35:     16(int) Load 34
-              36:    7(fvec4) ImageFetch 15 27 Lod Offset 32 35
-              40:          37 Load 39(g_tTex1di4a)
-              41:     24(ptr) AccessChain 22 23
-              42:   18(ivec3) Load 41
-              43:   17(ivec2) VectorShuffle 42 42 0 1
-              44:     30(ptr) AccessChain 22 23 29
-              45:     16(int) Load 44
-              46:     30(ptr) AccessChain 22 33
-              47:     16(int) Load 46
-              48:   19(ivec4) ImageFetch 40 43 Lod Offset 45 47
-              52:          49 Load 51(g_tTex1du4a)
-              53:     24(ptr) AccessChain 22 23
-              54:   18(ivec3) Load 53
-              55:   17(ivec2) VectorShuffle 54 54 0 1
-              56:     30(ptr) AccessChain 22 23 29
-              57:     16(int) Load 56
-              58:     30(ptr) AccessChain 22 33
-              59:     16(int) Load 58
-              61:   60(ivec4) ImageFetch 52 55 Lod Offset 57 59
-              65:          62 Load 64(g_tTex2df4a)
-              68:     67(ptr) AccessChain 22 66
-              69:   19(ivec4) Load 68
-              70:   18(ivec3) VectorShuffle 69 69 0 1 2
-              72:     30(ptr) AccessChain 22 66 71
-              73:     16(int) Load 72
-              76:     75(ptr) AccessChain 22 74
-              77:   17(ivec2) Load 76
-              78:    7(fvec4) ImageFetch 65 70 Lod Offset 73 77
-              82:          79 Load 81(g_tTex2di4a)
-              83:     67(ptr) AccessChain 22 66
-              84:   19(ivec4) Load 83
-              85:   18(ivec3) VectorShuffle 84 84 0 1 2
-              86:     30(ptr) AccessChain 22 66 71
-              87:     16(int) Load 86
-              88:     75(ptr) AccessChain 22 74
-              89:   17(ivec2) Load 88
-              90:   19(ivec4) ImageFetch 82 85 Lod Offset 87 89
-              94:          91 Load 93(g_tTex2du4a)
-              95:     67(ptr) AccessChain 22 66
-              96:   19(ivec4) Load 95
-              97:   18(ivec3) VectorShuffle 96 96 0 1 2
-              98:     30(ptr) AccessChain 22 66 71
-              99:     16(int) Load 98
-             100:     75(ptr) AccessChain 22 74
-             101:   17(ivec2) Load 100
-             102:   60(ivec4) ImageFetch 94 97 Lod Offset 99 101
-             109:    108(ptr) AccessChain 104(psout) 105
-                              Store 109 107
-             112:    111(ptr) AccessChain 104(psout) 110
-                              Store 112 106
-             113:8(PS_OUTPUT) Load 104(psout)
-                              ReturnValue 113
+  8(getOffset1():      6(int) Function None 7
+               9:             Label
+                              ReturnValue 20
+                              FunctionEnd
+ 12(getOffset2():   10(ivec2) Function None 11
+              13:             Label
+                              ReturnValue 23
+                              FunctionEnd
+      18(@main():16(PS_OUTPUT) Function None 17
+              19:             Label
+      107(psout):    106(ptr) Variable Function
+              29:          26 Load 28(g_tTex1df4a)
+              37:     36(ptr) AccessChain 34 35
+              38:   30(ivec3) Load 37
+              39:   10(ivec2) VectorShuffle 38 38 0 1
+              43:     42(ptr) AccessChain 34 35 41
+              44:      6(int) Load 43
+              45:      6(int) FunctionCall 8(getOffset1()
+              46:   15(fvec4) ImageFetch 29 39 Lod Offset 44 45
+              50:          47 Load 49(g_tTex1di4a)
+              51:     36(ptr) AccessChain 34 35
+              52:   30(ivec3) Load 51
+              53:   10(ivec2) VectorShuffle 52 52 0 1
+              54:     42(ptr) AccessChain 34 35 41
+              55:      6(int) Load 54
+              56:      6(int) FunctionCall 8(getOffset1()
+              57:   31(ivec4) ImageFetch 50 53 Lod Offset 55 56
+              61:          58 Load 60(g_tTex1du4a)
+              62:     36(ptr) AccessChain 34 35
+              63:   30(ivec3) Load 62
+              64:   10(ivec2) VectorShuffle 63 63 0 1
+              65:     42(ptr) AccessChain 34 35 41
+              66:      6(int) Load 65
+              67:      6(int) FunctionCall 8(getOffset1()
+              69:   68(ivec4) ImageFetch 61 64 Lod Offset 66 67
+              73:          70 Load 72(g_tTex2df4a)
+              76:     75(ptr) AccessChain 34 74
+              77:   31(ivec4) Load 76
+              78:   30(ivec3) VectorShuffle 77 77 0 1 2
+              80:     42(ptr) AccessChain 34 74 79
+              81:      6(int) Load 80
+              82:   10(ivec2) FunctionCall 12(getOffset2()
+              83:   15(fvec4) ImageFetch 73 78 Lod Offset 81 82
+              87:          84 Load 86(g_tTex2di4a)
+              88:     75(ptr) AccessChain 34 74
+              89:   31(ivec4) Load 88
+              90:   30(ivec3) VectorShuffle 89 89 0 1 2
+              91:     42(ptr) AccessChain 34 74 79
+              92:      6(int) Load 91
+              93:   10(ivec2) FunctionCall 12(getOffset2()
+              94:   31(ivec4) ImageFetch 87 90 Lod Offset 92 93
+              98:          95 Load 97(g_tTex2du4a)
+              99:     75(ptr) AccessChain 34 74
+             100:   31(ivec4) Load 99
+             101:   30(ivec3) VectorShuffle 100 100 0 1 2
+             102:     42(ptr) AccessChain 34 74 79
+             103:      6(int) Load 102
+             104:   10(ivec2) FunctionCall 12(getOffset2()
+             105:   68(ivec4) ImageFetch 98 101 Lod Offset 103 104
+             112:    111(ptr) AccessChain 107(psout) 108
+                              Store 112 110
+             114:    113(ptr) AccessChain 107(psout) 20
+                              Store 114 109
+             115:16(PS_OUTPUT) Load 107(psout)
+                              ReturnValue 115
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.matType.bool.frag.out b/Test/baseResults/hlsl.matType.bool.frag.out
index 47bbaf1..500b311 100644
--- a/Test/baseResults/hlsl.matType.bool.frag.out
+++ b/Test/baseResults/hlsl.matType.bool.frag.out
@@ -93,11 +93,11 @@
 0:51          'ps_output' ( temp structure{ temp 4-component vector of float color})
 0:51          Constant:
 0:51            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:51        Constant:
+0:51          0.000000
+0:51          0.000000
+0:51          0.000000
+0:51          0.000000
 0:52      Branch: Return with expression
 0:52        'ps_output' ( temp structure{ temp 4-component vector of float color})
 0:49  Function Definition: main( ( temp void)
@@ -211,11 +211,11 @@
 0:51          'ps_output' ( temp structure{ temp 4-component vector of float color})
 0:51          Constant:
 0:51            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:51        Constant:
+0:51          0.000000
+0:51          0.000000
+0:51          0.000000
+0:51          0.000000
 0:52      Branch: Return with expression
 0:52        'ps_output' ( temp structure{ temp 4-component vector of float color})
 0:49  Function Definition: main( ( temp void)
diff --git a/Test/baseResults/hlsl.matType.int.frag.out b/Test/baseResults/hlsl.matType.int.frag.out
index d567c17..a99bd15 100644
--- a/Test/baseResults/hlsl.matType.int.frag.out
+++ b/Test/baseResults/hlsl.matType.int.frag.out
@@ -176,11 +176,11 @@
 0:95          'ps_output' ( temp structure{ temp 4-component vector of float color})
 0:95          Constant:
 0:95            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:95        Constant:
+0:95          0.000000
+0:95          0.000000
+0:95          0.000000
+0:95          0.000000
 0:96      Branch: Return with expression
 0:96        'ps_output' ( temp structure{ temp 4-component vector of float color})
 0:93  Function Definition: main( ( temp void)
@@ -377,11 +377,11 @@
 0:95          'ps_output' ( temp structure{ temp 4-component vector of float color})
 0:95          Constant:
 0:95            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:95        Constant:
+0:95          0.000000
+0:95          0.000000
+0:95          0.000000
+0:95          0.000000
 0:96      Branch: Return with expression
 0:96        'ps_output' ( temp structure{ temp 4-component vector of float color})
 0:93  Function Definition: main( ( temp void)
diff --git a/Test/baseResults/hlsl.mip.negative.frag.out b/Test/baseResults/hlsl.mip.negative.frag.out
index 36f4137..4fb8f6e 100644
--- a/Test/baseResults/hlsl.mip.negative.frag.out
+++ b/Test/baseResults/hlsl.mip.negative.frag.out
@@ -9,11 +9,11 @@
 0:4  Function Definition: @main( ( temp 4-component vector of float)
 0:4    Function Parameters: 
 0:?     Sequence
-0:?       textureFetch ( temp 4-component vector of float)
+0:5      textureFetch ( temp 4-component vector of float)
 0:5        'g_tTex2df4' ( uniform texture2D)
-0:?         Constant:
-0:?           3 (const uint)
-0:?           4 (const uint)
+0:5        Constant:
+0:5          3 (const uint)
+0:5          4 (const uint)
 0:5        Constant:
 0:5          2 (const int)
 0:7      Branch: Return with expression
@@ -42,11 +42,11 @@
 0:4  Function Definition: @main( ( temp 4-component vector of float)
 0:4    Function Parameters: 
 0:?     Sequence
-0:?       textureFetch ( temp 4-component vector of float)
+0:5      textureFetch ( temp 4-component vector of float)
 0:5        'g_tTex2df4' ( uniform texture2D)
-0:?         Constant:
-0:?           3 (const uint)
-0:?           4 (const uint)
+0:5        Constant:
+0:5          3 (const uint)
+0:5          4 (const uint)
 0:5        Constant:
 0:5          2 (const int)
 0:7      Branch: Return with expression
diff --git a/Test/baseResults/hlsl.mip.negative2.frag.out b/Test/baseResults/hlsl.mip.negative2.frag.out
index 75cf95f..0036f63 100644
--- a/Test/baseResults/hlsl.mip.negative2.frag.out
+++ b/Test/baseResults/hlsl.mip.negative2.frag.out
@@ -16,9 +16,9 @@
 0:5            2 (const int)
 0:5          Constant:
 0:5            0 (const int)
-0:?         Constant:
-0:?           3 (const uint)
-0:?           4 (const uint)
+0:5        Constant:
+0:5          3 (const uint)
+0:5          4 (const uint)
 0:7      Branch: Return with expression
 0:7        Constant:
 0:7          0.000000
@@ -52,9 +52,9 @@
 0:5            2 (const int)
 0:5          Constant:
 0:5            0 (const int)
-0:?         Constant:
-0:?           3 (const uint)
-0:?           4 (const uint)
+0:5        Constant:
+0:5          3 (const uint)
+0:5          4 (const uint)
 0:7      Branch: Return with expression
 0:7        Constant:
 0:7          0.000000
diff --git a/Test/baseResults/hlsl.mip.operator.frag.out b/Test/baseResults/hlsl.mip.operator.frag.out
index 82b000f..48e563c 100644
--- a/Test/baseResults/hlsl.mip.operator.frag.out
+++ b/Test/baseResults/hlsl.mip.operator.frag.out
@@ -8,30 +8,30 @@
 0:13      Branch: Return with expression
 0:9        add ( temp 4-component vector of float)
 0:6          add ( temp 4-component vector of float)
-0:?             textureFetch ( temp 4-component vector of float)
+0:6            textureFetch ( temp 4-component vector of float)
 0:6              'g_tTex2df4' ( uniform texture2D)
-0:?               Constant:
-0:?                 3 (const uint)
-0:?                 4 (const uint)
+0:6              Constant:
+0:6                3 (const uint)
+0:6                4 (const uint)
 0:6              Constant:
 0:6                2 (const int)
-0:?             textureFetch ( temp 4-component vector of float)
+0:9            textureFetch ( temp 4-component vector of float)
 0:9              'g_tTex2df4a' ( uniform texture2DArray)
-0:?               Constant:
-0:?                 6 (const uint)
-0:?                 7 (const uint)
-0:?                 8 (const uint)
+0:9              Constant:
+0:9                6 (const uint)
+0:9                7 (const uint)
+0:9                8 (const uint)
 0:9              Constant:
 0:9                5 (const uint)
 0:13          textureFetch ( temp 4-component vector of float)
 0:13            'g_tTex2df4' ( uniform texture2D)
 0:13            Convert float to uint ( temp 2-component vector of uint)
 0:13              vector swizzle ( temp 2-component vector of float)
-0:?                 textureFetch ( temp 4-component vector of float)
+0:13                textureFetch ( temp 4-component vector of float)
 0:13                  'g_tTex2df4' ( uniform texture2D)
-0:?                   Constant:
-0:?                     14 (const uint)
-0:?                     15 (const uint)
+0:13                  Constant:
+0:13                    14 (const uint)
+0:13                    15 (const uint)
 0:13                  Constant:
 0:13                    13 (const int)
 0:13                Sequence
@@ -41,11 +41,11 @@
 0:13                    1 (const int)
 0:13            Convert float to uint ( temp uint)
 0:13              direct index ( temp float)
-0:?                 textureFetch ( temp 4-component vector of float)
+0:13                textureFetch ( temp 4-component vector of float)
 0:13                  'g_tTex2df4' ( uniform texture2D)
-0:?                   Constant:
-0:?                     10 (const uint)
-0:?                     11 (const uint)
+0:13                  Constant:
+0:13                    10 (const uint)
+0:13                    11 (const uint)
 0:13                  Constant:
 0:13                    9 (const int)
 0:13                Constant:
@@ -74,30 +74,30 @@
 0:13      Branch: Return with expression
 0:9        add ( temp 4-component vector of float)
 0:6          add ( temp 4-component vector of float)
-0:?             textureFetch ( temp 4-component vector of float)
+0:6            textureFetch ( temp 4-component vector of float)
 0:6              'g_tTex2df4' ( uniform texture2D)
-0:?               Constant:
-0:?                 3 (const uint)
-0:?                 4 (const uint)
+0:6              Constant:
+0:6                3 (const uint)
+0:6                4 (const uint)
 0:6              Constant:
 0:6                2 (const int)
-0:?             textureFetch ( temp 4-component vector of float)
+0:9            textureFetch ( temp 4-component vector of float)
 0:9              'g_tTex2df4a' ( uniform texture2DArray)
-0:?               Constant:
-0:?                 6 (const uint)
-0:?                 7 (const uint)
-0:?                 8 (const uint)
+0:9              Constant:
+0:9                6 (const uint)
+0:9                7 (const uint)
+0:9                8 (const uint)
 0:9              Constant:
 0:9                5 (const uint)
 0:13          textureFetch ( temp 4-component vector of float)
 0:13            'g_tTex2df4' ( uniform texture2D)
 0:13            Convert float to uint ( temp 2-component vector of uint)
 0:13              vector swizzle ( temp 2-component vector of float)
-0:?                 textureFetch ( temp 4-component vector of float)
+0:13                textureFetch ( temp 4-component vector of float)
 0:13                  'g_tTex2df4' ( uniform texture2D)
-0:?                   Constant:
-0:?                     14 (const uint)
-0:?                     15 (const uint)
+0:13                  Constant:
+0:13                    14 (const uint)
+0:13                    15 (const uint)
 0:13                  Constant:
 0:13                    13 (const int)
 0:13                Sequence
@@ -107,11 +107,11 @@
 0:13                    1 (const int)
 0:13            Convert float to uint ( temp uint)
 0:13              direct index ( temp float)
-0:?                 textureFetch ( temp 4-component vector of float)
+0:13                textureFetch ( temp 4-component vector of float)
 0:13                  'g_tTex2df4' ( uniform texture2D)
-0:?                   Constant:
-0:?                     10 (const uint)
-0:?                     11 (const uint)
+0:13                  Constant:
+0:13                    10 (const uint)
+0:13                    11 (const uint)
 0:13                  Constant:
 0:13                    9 (const int)
 0:13                Constant:
diff --git a/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out b/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out
index 59b251a..5a485c6 100644
--- a/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out
+++ b/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out
@@ -5,9 +5,9 @@
 0:1  Sequence
 0:1    move second child to first child ( temp 2-component vector of float)
 0:1      'i' ( global 2-component vector of float)
-0:?       Constant:
-0:?         1.000000
-0:?         2.000000
+0:1      Constant:
+0:1        1.000000
+0:1        2.000000
 0:5  Function Definition: type1::setmem(vf4; ( temp void)
 0:5    Function Parameters: 
 0:5      '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
@@ -85,11 +85,11 @@
 0:?     Sequence
 0:29      Function Call: type1::setmem(vf4; ( temp void)
 0:29        'test' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
-0:?         Constant:
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
+0:29        Constant:
+0:29          2.000000
+0:29          2.000000
+0:29          2.000000
+0:29          2.000000
 0:30      Function Call: type1::seti(i1; ( temp void)
 0:30        'test' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
 0:30        Constant:
@@ -97,20 +97,20 @@
 0:31      Sequence
 0:31        move second child to first child ( temp 4-component vector of float)
 0:31          'f4' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             1.000000
-0:?             1.000000
-0:?             1.000000
-0:?             1.000000
+0:31          Constant:
+0:31            1.000000
+0:31            1.000000
+0:31            1.000000
+0:31            1.000000
 0:32      add second child into first child ( temp 4-component vector of float)
 0:32        'f4' ( temp 4-component vector of float)
 0:32        Function Call: type1::memFun(vf4; ( temp 4-component vector of float)
 0:32          'test' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
-0:?           Constant:
-0:?             5.000000
-0:?             5.000000
-0:?             5.000000
-0:?             5.000000
+0:32          Constant:
+0:32            5.000000
+0:32            5.000000
+0:32            5.000000
+0:32            5.000000
 0:33      add second child into first child ( temp 4-component vector of float)
 0:33        'f4' ( temp 4-component vector of float)
 0:33        Convert int to float ( temp float)
@@ -141,9 +141,9 @@
 0:1  Sequence
 0:1    move second child to first child ( temp 2-component vector of float)
 0:1      'i' ( global 2-component vector of float)
-0:?       Constant:
-0:?         1.000000
-0:?         2.000000
+0:1      Constant:
+0:1        1.000000
+0:1        2.000000
 0:5  Function Definition: type1::setmem(vf4; ( temp void)
 0:5    Function Parameters: 
 0:5      '@this' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
@@ -221,11 +221,11 @@
 0:?     Sequence
 0:29      Function Call: type1::setmem(vf4; ( temp void)
 0:29        'test' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
-0:?         Constant:
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
-0:?           2.000000
+0:29        Constant:
+0:29          2.000000
+0:29          2.000000
+0:29          2.000000
+0:29          2.000000
 0:30      Function Call: type1::seti(i1; ( temp void)
 0:30        'test' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
 0:30        Constant:
@@ -233,20 +233,20 @@
 0:31      Sequence
 0:31        move second child to first child ( temp 4-component vector of float)
 0:31          'f4' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             1.000000
-0:?             1.000000
-0:?             1.000000
-0:?             1.000000
+0:31          Constant:
+0:31            1.000000
+0:31            1.000000
+0:31            1.000000
+0:31            1.000000
 0:32      add second child into first child ( temp 4-component vector of float)
 0:32        'f4' ( temp 4-component vector of float)
 0:32        Function Call: type1::memFun(vf4; ( temp 4-component vector of float)
 0:32          'test' ( temp structure{ temp 4-component vector of float memVar,  temp int i})
-0:?           Constant:
-0:?             5.000000
-0:?             5.000000
-0:?             5.000000
-0:?             5.000000
+0:32          Constant:
+0:32            5.000000
+0:32            5.000000
+0:32            5.000000
+0:32            5.000000
 0:33      add second child into first child ( temp 4-component vector of float)
 0:33        'f4' ( temp 4-component vector of float)
 0:33        Convert int to float ( temp float)
diff --git a/Test/baseResults/hlsl.overload.frag.out b/Test/baseResults/hlsl.overload.frag.out
index 3428d80..4cfc391 100644
--- a/Test/baseResults/hlsl.overload.frag.out
+++ b/Test/baseResults/hlsl.overload.frag.out
@@ -330,8 +330,8 @@
 0:133          Construct vec3 ( temp 3-component vector of float)
 0:133            'f' ( temp float)
 0:134      Function Call: foo16(vu2; ( temp void)
-0:?         Convert int to uint ( temp 2-component vector of uint)
-0:?           Construct ivec2 ( temp 2-component vector of int)
+0:134        Convert int to uint ( temp 2-component vector of uint)
+0:134          Construct ivec2 ( temp 2-component vector of int)
 0:134            'i' ( temp int)
 0:134            'i' ( temp int)
 0:136      Function Call: foo13(vf3; ( temp void)
@@ -699,8 +699,8 @@
 0:133          Construct vec3 ( temp 3-component vector of float)
 0:133            'f' ( temp float)
 0:134      Function Call: foo16(vu2; ( temp void)
-0:?         Convert int to uint ( temp 2-component vector of uint)
-0:?           Construct ivec2 ( temp 2-component vector of int)
+0:134        Convert int to uint ( temp 2-component vector of uint)
+0:134          Construct ivec2 ( temp 2-component vector of int)
 0:134            'i' ( temp int)
 0:134            'i' ( temp int)
 0:136      Function Call: foo13(vf3; ( temp void)
diff --git a/Test/baseResults/hlsl.params.default.frag.out b/Test/baseResults/hlsl.params.default.frag.out
index a28ddc4..6898240 100644
--- a/Test/baseResults/hlsl.params.default.frag.out
+++ b/Test/baseResults/hlsl.params.default.frag.out
@@ -34,11 +34,11 @@
 0:23      'x' ( in int)
 0:?     Sequence
 0:24      Branch: Return with expression
-0:?         Constant:
-0:?           10 (const int)
-0:?           11 (const int)
-0:?           12 (const int)
-0:?           13 (const int)
+0:24        Constant:
+0:24          10 (const int)
+0:24          11 (const int)
+0:24          12 (const int)
+0:24          13 (const int)
 0:28  Function Definition: fn2(vi4;f1; ( temp 4-component vector of int)
 0:28    Function Parameters: 
 0:28      'p0' ( in 4-component vector of int)
@@ -47,11 +47,11 @@
 0:29      Branch: Return with expression
 0:29        add ( temp 4-component vector of int)
 0:29          'p0' ( in 4-component vector of int)
-0:?           Constant:
-0:?             20 (const int)
-0:?             21 (const int)
-0:?             22 (const int)
-0:?             23 (const int)
+0:29          Constant:
+0:29            20 (const int)
+0:29            21 (const int)
+0:29            22 (const int)
+0:29            23 (const int)
 0:32  Function Definition: fn3(i1; ( temp void)
 0:32    Function Parameters: 
 0:32      'p0' ( in int)
@@ -84,11 +84,11 @@
 0:42                          100 (const int)
 0:42                          100 (const int)
 0:42                          100 (const int)
-0:?                         Constant:
-0:?                           -1 (const int)
-0:?                           -2 (const int)
-0:?                           -3 (const int)
-0:?                           -4 (const int)
+0:14                        Constant:
+0:14                          -1 (const int)
+0:14                          -2 (const int)
+0:14                          -3 (const int)
+0:14                          -4 (const int)
 0:15                        Constant:
 0:15                          1 (const int)
 0:15                          2 (const int)
@@ -224,11 +224,11 @@
 0:23      'x' ( in int)
 0:?     Sequence
 0:24      Branch: Return with expression
-0:?         Constant:
-0:?           10 (const int)
-0:?           11 (const int)
-0:?           12 (const int)
-0:?           13 (const int)
+0:24        Constant:
+0:24          10 (const int)
+0:24          11 (const int)
+0:24          12 (const int)
+0:24          13 (const int)
 0:28  Function Definition: fn2(vi4;f1; ( temp 4-component vector of int)
 0:28    Function Parameters: 
 0:28      'p0' ( in 4-component vector of int)
@@ -237,11 +237,11 @@
 0:29      Branch: Return with expression
 0:29        add ( temp 4-component vector of int)
 0:29          'p0' ( in 4-component vector of int)
-0:?           Constant:
-0:?             20 (const int)
-0:?             21 (const int)
-0:?             22 (const int)
-0:?             23 (const int)
+0:29          Constant:
+0:29            20 (const int)
+0:29            21 (const int)
+0:29            22 (const int)
+0:29            23 (const int)
 0:32  Function Definition: fn3(i1; ( temp void)
 0:32    Function Parameters: 
 0:32      'p0' ( in int)
@@ -274,11 +274,11 @@
 0:42                          100 (const int)
 0:42                          100 (const int)
 0:42                          100 (const int)
-0:?                         Constant:
-0:?                           -1 (const int)
-0:?                           -2 (const int)
-0:?                           -3 (const int)
-0:?                           -4 (const int)
+0:14                        Constant:
+0:14                          -1 (const int)
+0:14                          -2 (const int)
+0:14                          -3 (const int)
+0:14                          -4 (const int)
 0:15                        Constant:
 0:15                          1 (const int)
 0:15                          2 (const int)
diff --git a/Test/baseResults/hlsl.params.default.negative.frag.out b/Test/baseResults/hlsl.params.default.negative.frag.out
index f841bd8..213687a 100644
--- a/Test/baseResults/hlsl.params.default.negative.frag.out
+++ b/Test/baseResults/hlsl.params.default.negative.frag.out
@@ -14,11 +14,11 @@
 0:7      'p0' ( in 4-component vector of int)
 0:?     Sequence
 0:7      Branch: Return with expression
-0:?         Constant:
-0:?           1 (const int)
-0:?           2 (const int)
-0:?           3 (const int)
-0:?           4 (const int)
+0:7        Constant:
+0:7          1 (const int)
+0:7          2 (const int)
+0:7          3 (const int)
+0:7          4 (const int)
 0:9  Function Definition: fn1(vi4;b1;b1; ( temp 4-component vector of int)
 0:9    Function Parameters: 
 0:9      'p0' ( in 4-component vector of int)
@@ -51,11 +51,11 @@
 0:23      'x' ( in int)
 0:?     Sequence
 0:24      Branch: Return with expression
-0:?         Constant:
-0:?           10 (const int)
-0:?           11 (const int)
-0:?           12 (const int)
-0:?           13 (const int)
+0:24        Constant:
+0:24          10 (const int)
+0:24          11 (const int)
+0:24          12 (const int)
+0:24          13 (const int)
 0:28  Function Definition: fn2(vi4; ( temp 4-component vector of int)
 0:28    Function Parameters: 
 0:28      'p0' ( in 4-component vector of int)
@@ -63,11 +63,11 @@
 0:29      Branch: Return with expression
 0:29        add ( temp 4-component vector of int)
 0:29          'p0' ( in 4-component vector of int)
-0:?           Constant:
-0:?             20 (const int)
-0:?             21 (const int)
-0:?             22 (const int)
-0:?             23 (const int)
+0:29          Constant:
+0:29            20 (const int)
+0:29            21 (const int)
+0:29            22 (const int)
+0:29            23 (const int)
 0:33  Function Definition: fn3(i1; ( temp void)
 0:33    Function Parameters: 
 0:33      'p0' ( in int)
@@ -204,11 +204,11 @@
 0:7      'p0' ( in 4-component vector of int)
 0:?     Sequence
 0:7      Branch: Return with expression
-0:?         Constant:
-0:?           1 (const int)
-0:?           2 (const int)
-0:?           3 (const int)
-0:?           4 (const int)
+0:7        Constant:
+0:7          1 (const int)
+0:7          2 (const int)
+0:7          3 (const int)
+0:7          4 (const int)
 0:9  Function Definition: fn1(vi4;b1;b1; ( temp 4-component vector of int)
 0:9    Function Parameters: 
 0:9      'p0' ( in 4-component vector of int)
@@ -241,11 +241,11 @@
 0:23      'x' ( in int)
 0:?     Sequence
 0:24      Branch: Return with expression
-0:?         Constant:
-0:?           10 (const int)
-0:?           11 (const int)
-0:?           12 (const int)
-0:?           13 (const int)
+0:24        Constant:
+0:24          10 (const int)
+0:24          11 (const int)
+0:24          12 (const int)
+0:24          13 (const int)
 0:28  Function Definition: fn2(vi4; ( temp 4-component vector of int)
 0:28    Function Parameters: 
 0:28      'p0' ( in 4-component vector of int)
@@ -253,11 +253,11 @@
 0:29      Branch: Return with expression
 0:29        add ( temp 4-component vector of int)
 0:29          'p0' ( in 4-component vector of int)
-0:?           Constant:
-0:?             20 (const int)
-0:?             21 (const int)
-0:?             22 (const int)
-0:?             23 (const int)
+0:29          Constant:
+0:29            20 (const int)
+0:29            21 (const int)
+0:29            22 (const int)
+0:29            23 (const int)
 0:33  Function Definition: fn3(i1; ( temp void)
 0:33    Function Parameters: 
 0:33      'p0' ( in int)
diff --git a/Test/baseResults/hlsl.partialFlattenLocal.vert.out b/Test/baseResults/hlsl.partialFlattenLocal.vert.out
index 754c86c..7bcc879 100644
--- a/Test/baseResults/hlsl.partialFlattenLocal.vert.out
+++ b/Test/baseResults/hlsl.partialFlattenLocal.vert.out
@@ -20,10 +20,10 @@
 0:15              1 (const int)
 0:15          Constant:
 0:15            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:15        Constant:
+0:15          0.000000
+0:15          0.000000
+0:15          0.000000
 0:16      move second child to first child ( temp 2-component vector of float)
 0:16        direct index ( temp 2-component vector of float)
 0:16          uv: direct index for structure ( temp 2-element array of 2-component vector of float)
@@ -32,9 +32,9 @@
 0:16              2 (const int)
 0:16          Constant:
 0:16            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           1.000000
+0:16        Constant:
+0:16          0.000000
+0:16          1.000000
 0:17      move second child to first child ( temp float)
 0:17        x: direct index for structure ( temp float)
 0:17          'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
@@ -91,7 +91,7 @@
 0:26      Branch: Return with expression
 0:26        add ( temp 4-component vector of float)
 0:26          'pos' ( in 4-component vector of float)
-0:?           Construct vec4 ( temp 4-component vector of float)
+0:26          Construct vec4 ( temp 4-component vector of float)
 0:26            direct index ( temp 3-component vector of float)
 0:26              pos: direct index for structure ( temp 3-element array of 3-component vector of float)
 0:26                'packed2' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
@@ -140,10 +140,10 @@
 0:15              1 (const int)
 0:15          Constant:
 0:15            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:15        Constant:
+0:15          0.000000
+0:15          0.000000
+0:15          0.000000
 0:16      move second child to first child ( temp 2-component vector of float)
 0:16        direct index ( temp 2-component vector of float)
 0:16          uv: direct index for structure ( temp 2-element array of 2-component vector of float)
@@ -152,9 +152,9 @@
 0:16              2 (const int)
 0:16          Constant:
 0:16            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           1.000000
+0:16        Constant:
+0:16          0.000000
+0:16          1.000000
 0:17      move second child to first child ( temp float)
 0:17        x: direct index for structure ( temp float)
 0:17          'packed' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
@@ -211,7 +211,7 @@
 0:26      Branch: Return with expression
 0:26        add ( temp 4-component vector of float)
 0:26          'pos' ( in 4-component vector of float)
-0:?           Construct vec4 ( temp 4-component vector of float)
+0:26          Construct vec4 ( temp 4-component vector of float)
 0:26            direct index ( temp 3-component vector of float)
 0:26              pos: direct index for structure ( temp 3-element array of 3-component vector of float)
 0:26                'packed2' ( temp structure{ temp texture2D tex,  temp 3-element array of 3-component vector of float pos,  temp 2-element array of 2-component vector of float uv,  temp float x,  temp int n})
@@ -238,12 +238,12 @@
 
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 90
+// Id's are bound by 93
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Vertex 4  "main" 83 86
+                              EntryPoint Vertex 4  "main" 86 89
                               Source HLSL 500
                               Name 4  "main"
                               Name 11  "@main(vf4;"
@@ -257,15 +257,15 @@
                               Name 24  "packed"
                               Name 27  "tex"
                               Name 47  "i"
-                              Name 69  "packed2"
-                              Name 81  "pos"
-                              Name 83  "pos"
-                              Name 86  "@entryPointOutput"
-                              Name 87  "param"
+                              Name 72  "packed2"
+                              Name 84  "pos"
+                              Name 86  "pos"
+                              Name 89  "@entryPointOutput"
+                              Name 90  "param"
                               Decorate 27(tex) DescriptorSet 0
                               Decorate 27(tex) Binding 0
-                              Decorate 83(pos) Location 0
-                              Decorate 86(@entryPointOutput) BuiltIn Position
+                              Decorate 86(pos) Location 0
+                              Decorate 89(@entryPointOutput) BuiltIn Position
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -300,20 +300,22 @@
               44:     21(int) Constant 4
               45:             TypePointer Function 21(int)
               54:             TypeBool
-              82:             TypePointer Input 7(fvec4)
-         83(pos):     82(ptr) Variable Input
-              85:             TypePointer Output 7(fvec4)
-86(@entryPointOutput):     85(ptr) Variable Output
+              64:     15(int) Constant 0
+              67:     15(int) Constant 1
+              85:             TypePointer Input 7(fvec4)
+         86(pos):     85(ptr) Variable Input
+              88:             TypePointer Output 7(fvec4)
+89(@entryPointOutput):     88(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
-         81(pos):      8(ptr) Variable Function
-       87(param):      8(ptr) Variable Function
-              84:    7(fvec4) Load 83(pos)
-                              Store 81(pos) 84
-              88:    7(fvec4) Load 81(pos)
-                              Store 87(param) 88
-              89:    7(fvec4) FunctionCall 11(@main(vf4;) 87(param)
-                              Store 86(@entryPointOutput) 89
+         84(pos):      8(ptr) Variable Function
+       90(param):      8(ptr) Variable Function
+              87:    7(fvec4) Load 86(pos)
+                              Store 84(pos) 87
+              91:    7(fvec4) Load 84(pos)
+                              Store 90(param) 91
+              92:    7(fvec4) FunctionCall 11(@main(vf4;) 90(param)
+                              Store 89(@entryPointOutput) 92
                               Return
                               FunctionEnd
   11(@main(vf4;):    7(fvec4) Function None 9
@@ -321,7 +323,7 @@
               12:             Label
       24(packed):     23(ptr) Variable Function
            47(i):     45(ptr) Variable Function
-     69(packed2):     23(ptr) Variable Function
+     72(packed2):     23(ptr) Variable Function
               28:          13 Load 27(tex)
               30:     29(ptr) AccessChain 24(packed) 25
                               Store 30 28
@@ -351,26 +353,28 @@
               61:   14(fvec3)   Load 60
               62:   18(fvec2)   VectorShuffle 61 61 0 1
               63:   18(fvec2)   FAdd 62 59
-              64:     34(ptr)   AccessChain 24(packed) 31 56
-              65:   14(fvec3)   Load 64
-              66:   14(fvec3)   VectorShuffle 65 63 3 4 2
-                                Store 64 66
+              65:     42(ptr)   AccessChain 24(packed) 31 56 64
+              66:    6(float)   CompositeExtract 63 0
+                                Store 65 66
+              68:     42(ptr)   AccessChain 24(packed) 31 56 67
+              69:    6(float)   CompositeExtract 63 1
+                                Store 68 69
                                 Branch 51
               51:               Label
-              67:     21(int)   Load 47(i)
-              68:     21(int)   IAdd 67 31
-                                Store 47(i) 68
+              70:     21(int)   Load 47(i)
+              71:     21(int)   IAdd 70 31
+                                Store 47(i) 71
                                 Branch 48
               50:             Label
-              70:  22(Packed) Load 24(packed)
-                              Store 69(packed2) 70
-              71:    7(fvec4) Load 10(pos)
-              72:     34(ptr) AccessChain 69(packed2) 31 25
-              73:   14(fvec3) Load 72
-              74:    6(float) CompositeExtract 73 0
-              75:    6(float) CompositeExtract 73 1
-              76:    6(float) CompositeExtract 73 2
-              77:    7(fvec4) CompositeConstruct 74 75 76 32
-              78:    7(fvec4) FAdd 71 77
-                              ReturnValue 78
+              73:  22(Packed) Load 24(packed)
+                              Store 72(packed2) 73
+              74:    7(fvec4) Load 10(pos)
+              75:     34(ptr) AccessChain 72(packed2) 31 25
+              76:   14(fvec3) Load 75
+              77:    6(float) CompositeExtract 76 0
+              78:    6(float) CompositeExtract 76 1
+              79:    6(float) CompositeExtract 76 2
+              80:    7(fvec4) CompositeConstruct 77 78 79 32
+              81:    7(fvec4) FAdd 74 80
+                              ReturnValue 81
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.pp.line.frag.out b/Test/baseResults/hlsl.pp.line.frag.out
index a8479f5..68476d2 100644
--- a/Test/baseResults/hlsl.pp.line.frag.out
+++ b/Test/baseResults/hlsl.pp.line.frag.out
@@ -16,7 +16,7 @@
 0:126          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
 0:126          Constant:
 0:126            0 (const int)
-0:?         Construct vec4 ( temp 4-component vector of float)
+0:126        Construct vec4 ( temp 4-component vector of float)
 0:126          Convert int to float ( temp float)
 0:126            'thisLineIs' ( temp int)
 0:126          Constant:
@@ -78,7 +78,7 @@
 0:126          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
 0:126          Constant:
 0:126            0 (const int)
-0:?         Construct vec4 ( temp 4-component vector of float)
+0:126        Construct vec4 ( temp 4-component vector of float)
 0:126          Convert int to float ( temp float)
 0:126            'thisLineIs' ( temp int)
 0:126          Constant:
diff --git a/Test/baseResults/hlsl.precedence.frag.out b/Test/baseResults/hlsl.precedence.frag.out
index 85fe187..3992618 100644
--- a/Test/baseResults/hlsl.precedence.frag.out
+++ b/Test/baseResults/hlsl.precedence.frag.out
@@ -18,7 +18,7 @@
 0:8                'a2' ( in 4-component vector of float)
 0:8                'a3' ( in 4-component vector of float)
 0:8            'a4' ( in 4-component vector of float)
-0:?           Construct vec4 ( temp 4-component vector of float)
+0:8          Construct vec4 ( temp 4-component vector of float)
 0:8            component-wise multiply ( temp 3-component vector of float)
 0:8              vector swizzle ( temp 3-component vector of float)
 0:8                'a1' ( in 4-component vector of float)
@@ -94,7 +94,7 @@
 0:8                'a2' ( in 4-component vector of float)
 0:8                'a3' ( in 4-component vector of float)
 0:8            'a4' ( in 4-component vector of float)
-0:?           Construct vec4 ( temp 4-component vector of float)
+0:8          Construct vec4 ( temp 4-component vector of float)
 0:8            component-wise multiply ( temp 3-component vector of float)
 0:8              vector swizzle ( temp 3-component vector of float)
 0:8                'a1' ( in 4-component vector of float)
diff --git a/Test/baseResults/hlsl.promote.atomic.frag.out b/Test/baseResults/hlsl.promote.atomic.frag.out
index f4197ef..a34b7dd 100644
--- a/Test/baseResults/hlsl.promote.atomic.frag.out
+++ b/Test/baseResults/hlsl.promote.atomic.frag.out
@@ -14,11 +14,11 @@
 0:13            Convert int to uint ( temp uint)
 0:13              'Inc' ( temp int)
 0:15      Branch: Return with expression
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:15        Constant:
+0:15          0.000000
+0:15          0.000000
+0:15          0.000000
+0:15          0.000000
 0:5  Function Definition: main( ( temp void)
 0:5    Function Parameters: 
 0:?     Sequence
@@ -48,11 +48,11 @@
 0:13            Convert int to uint ( temp uint)
 0:13              'Inc' ( temp int)
 0:15      Branch: Return with expression
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:15        Constant:
+0:15          0.000000
+0:15          0.000000
+0:15          0.000000
+0:15          0.000000
 0:5  Function Definition: main( ( temp void)
 0:5    Function Parameters: 
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.promote.vec1.frag.out b/Test/baseResults/hlsl.promote.vec1.frag.out
index 8ea55d0..11e324f 100644
--- a/Test/baseResults/hlsl.promote.vec1.frag.out
+++ b/Test/baseResults/hlsl.promote.vec1.frag.out
@@ -23,11 +23,11 @@
 0:13        Construct float ( in float)
 0:13          'f1b' ( temp 1-component vector of float)
 0:15      Branch: Return with expression
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:15        Constant:
+0:15          0.000000
+0:15          0.000000
+0:15          0.000000
+0:15          0.000000
 0:3  Function Definition: main( ( temp void)
 0:3    Function Parameters: 
 0:?     Sequence
@@ -65,11 +65,11 @@
 0:13        Construct float ( in float)
 0:13          'f1b' ( temp 1-component vector of float)
 0:15      Branch: Return with expression
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:15        Constant:
+0:15          0.000000
+0:15          0.000000
+0:15          0.000000
+0:15          0.000000
 0:3  Function Definition: main( ( temp void)
 0:3    Function Parameters: 
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.promotions.frag.out b/Test/baseResults/hlsl.promotions.frag.out
index 91ed472..f135406 100644
--- a/Test/baseResults/hlsl.promotions.frag.out
+++ b/Test/baseResults/hlsl.promotions.frag.out
@@ -757,7 +757,7 @@
 0:196      Sequence
 0:196        move second child to first child ( temp 4-component vector of float)
 0:196          'outval' ( temp 4-component vector of float)
-0:?           Construct vec4 ( temp 4-component vector of float)
+0:196          Construct vec4 ( temp 4-component vector of float)
 0:196            Constant:
 0:196              3.600000
 0:196            Constant:
@@ -1550,7 +1550,7 @@
 0:196      Sequence
 0:196        move second child to first child ( temp 4-component vector of float)
 0:196          'outval' ( temp 4-component vector of float)
-0:?           Construct vec4 ( temp 4-component vector of float)
+0:196          Construct vec4 ( temp 4-component vector of float)
 0:196            Constant:
 0:196              3.600000
 0:196            Constant:
diff --git a/Test/baseResults/hlsl.rw.bracket.frag.out b/Test/baseResults/hlsl.rw.bracket.frag.out
index 7068825..c79877c 100644
--- a/Test/baseResults/hlsl.rw.bracket.frag.out
+++ b/Test/baseResults/hlsl.rw.bracket.frag.out
@@ -183,11 +183,11 @@
 0:79      Sequence
 0:79        move second child to first child ( temp 4-component vector of int)
 0:79          'storeTemp' ( temp 4-component vector of int)
-0:?           Constant:
-0:?             2 (const int)
-0:?             2 (const int)
-0:?             3 (const int)
-0:?             4 (const int)
+0:79          Constant:
+0:79            2 (const int)
+0:79            2 (const int)
+0:79            3 (const int)
+0:79            4 (const int)
 0:79        imageStore ( temp void)
 0:79          'g_tTex1di4' (layout( rgba32i) uniform iimage1D)
 0:79          c1: direct index for structure ( uniform int)
@@ -199,11 +199,11 @@
 0:80      Sequence
 0:80        move second child to first child ( temp 4-component vector of uint)
 0:80          'storeTemp' ( temp 4-component vector of uint)
-0:?           Constant:
-0:?             3 (const uint)
-0:?             2 (const uint)
-0:?             3 (const uint)
-0:?             4 (const uint)
+0:80          Constant:
+0:80            3 (const uint)
+0:80            2 (const uint)
+0:80            3 (const uint)
+0:80            4 (const uint)
 0:80        imageStore ( temp void)
 0:80          'g_tTex1du4' (layout( rgba32ui) uniform uimage1D)
 0:80          c1: direct index for structure ( uniform int)
@@ -428,11 +428,11 @@
 0:97      Sequence
 0:97        move second child to first child ( temp 4-component vector of int)
 0:97          'storeTemp' ( temp 4-component vector of int)
-0:?           Constant:
-0:?             5 (const int)
-0:?             2 (const int)
-0:?             3 (const int)
-0:?             4 (const int)
+0:97          Constant:
+0:97            5 (const int)
+0:97            2 (const int)
+0:97            3 (const int)
+0:97            4 (const int)
 0:97        imageStore ( temp void)
 0:97          'g_tTex2di4' (layout( rgba32i) uniform iimage2D)
 0:97          c2: direct index for structure ( uniform 2-component vector of int)
@@ -444,11 +444,11 @@
 0:98      Sequence
 0:98        move second child to first child ( temp 4-component vector of uint)
 0:98          'storeTemp' ( temp 4-component vector of uint)
-0:?           Constant:
-0:?             6 (const uint)
-0:?             2 (const uint)
-0:?             3 (const uint)
-0:?             4 (const uint)
+0:98          Constant:
+0:98            6 (const uint)
+0:98            2 (const uint)
+0:98            3 (const uint)
+0:98            4 (const uint)
 0:98        imageStore ( temp void)
 0:98          'g_tTex2du4' (layout( rgba32ui) uniform uimage2D)
 0:98          c2: direct index for structure ( uniform 2-component vector of int)
@@ -481,11 +481,11 @@
 0:103      Sequence
 0:103        move second child to first child ( temp 4-component vector of int)
 0:103          'storeTemp' ( temp 4-component vector of int)
-0:?           Constant:
-0:?             8 (const int)
-0:?             6 (const int)
-0:?             7 (const int)
-0:?             8 (const int)
+0:103          Constant:
+0:103            8 (const int)
+0:103            6 (const int)
+0:103            7 (const int)
+0:103            8 (const int)
 0:103        imageStore ( temp void)
 0:103          'g_tTex3di4' (layout( rgba32i) uniform iimage3D)
 0:103          c3: direct index for structure ( uniform 3-component vector of int)
@@ -497,11 +497,11 @@
 0:104      Sequence
 0:104        move second child to first child ( temp 4-component vector of uint)
 0:104          'storeTemp' ( temp 4-component vector of uint)
-0:?           Constant:
-0:?             9 (const uint)
-0:?             2 (const uint)
-0:?             3 (const uint)
-0:?             4 (const uint)
+0:104          Constant:
+0:104            9 (const uint)
+0:104            2 (const uint)
+0:104            3 (const uint)
+0:104            4 (const uint)
 0:104        imageStore ( temp void)
 0:104          'g_tTex3du4' (layout( rgba32ui) uniform uimage3D)
 0:104          c3: direct index for structure ( uniform 3-component vector of int)
@@ -816,11 +816,11 @@
 0:135      Sequence
 0:135        move second child to first child ( temp 4-component vector of float)
 0:135          'storeTemp' ( temp 4-component vector of float)
-0:?           imageLoad ( temp 4-component vector of float)
+0:135          imageLoad ( temp 4-component vector of float)
 0:135            'g_tTex2df4' (layout( rgba32f) uniform image2D)
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:135            Constant:
+0:135              2 (const int)
+0:135              3 (const int)
 0:135        imageStore ( temp void)
 0:135          'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D)
 0:135          Constant:
@@ -1057,11 +1057,11 @@
 0:79      Sequence
 0:79        move second child to first child ( temp 4-component vector of int)
 0:79          'storeTemp' ( temp 4-component vector of int)
-0:?           Constant:
-0:?             2 (const int)
-0:?             2 (const int)
-0:?             3 (const int)
-0:?             4 (const int)
+0:79          Constant:
+0:79            2 (const int)
+0:79            2 (const int)
+0:79            3 (const int)
+0:79            4 (const int)
 0:79        imageStore ( temp void)
 0:79          'g_tTex1di4' (layout( rgba32i) uniform iimage1D)
 0:79          c1: direct index for structure ( uniform int)
@@ -1073,11 +1073,11 @@
 0:80      Sequence
 0:80        move second child to first child ( temp 4-component vector of uint)
 0:80          'storeTemp' ( temp 4-component vector of uint)
-0:?           Constant:
-0:?             3 (const uint)
-0:?             2 (const uint)
-0:?             3 (const uint)
-0:?             4 (const uint)
+0:80          Constant:
+0:80            3 (const uint)
+0:80            2 (const uint)
+0:80            3 (const uint)
+0:80            4 (const uint)
 0:80        imageStore ( temp void)
 0:80          'g_tTex1du4' (layout( rgba32ui) uniform uimage1D)
 0:80          c1: direct index for structure ( uniform int)
@@ -1302,11 +1302,11 @@
 0:97      Sequence
 0:97        move second child to first child ( temp 4-component vector of int)
 0:97          'storeTemp' ( temp 4-component vector of int)
-0:?           Constant:
-0:?             5 (const int)
-0:?             2 (const int)
-0:?             3 (const int)
-0:?             4 (const int)
+0:97          Constant:
+0:97            5 (const int)
+0:97            2 (const int)
+0:97            3 (const int)
+0:97            4 (const int)
 0:97        imageStore ( temp void)
 0:97          'g_tTex2di4' (layout( rgba32i) uniform iimage2D)
 0:97          c2: direct index for structure ( uniform 2-component vector of int)
@@ -1318,11 +1318,11 @@
 0:98      Sequence
 0:98        move second child to first child ( temp 4-component vector of uint)
 0:98          'storeTemp' ( temp 4-component vector of uint)
-0:?           Constant:
-0:?             6 (const uint)
-0:?             2 (const uint)
-0:?             3 (const uint)
-0:?             4 (const uint)
+0:98          Constant:
+0:98            6 (const uint)
+0:98            2 (const uint)
+0:98            3 (const uint)
+0:98            4 (const uint)
 0:98        imageStore ( temp void)
 0:98          'g_tTex2du4' (layout( rgba32ui) uniform uimage2D)
 0:98          c2: direct index for structure ( uniform 2-component vector of int)
@@ -1355,11 +1355,11 @@
 0:103      Sequence
 0:103        move second child to first child ( temp 4-component vector of int)
 0:103          'storeTemp' ( temp 4-component vector of int)
-0:?           Constant:
-0:?             8 (const int)
-0:?             6 (const int)
-0:?             7 (const int)
-0:?             8 (const int)
+0:103          Constant:
+0:103            8 (const int)
+0:103            6 (const int)
+0:103            7 (const int)
+0:103            8 (const int)
 0:103        imageStore ( temp void)
 0:103          'g_tTex3di4' (layout( rgba32i) uniform iimage3D)
 0:103          c3: direct index for structure ( uniform 3-component vector of int)
@@ -1371,11 +1371,11 @@
 0:104      Sequence
 0:104        move second child to first child ( temp 4-component vector of uint)
 0:104          'storeTemp' ( temp 4-component vector of uint)
-0:?           Constant:
-0:?             9 (const uint)
-0:?             2 (const uint)
-0:?             3 (const uint)
-0:?             4 (const uint)
+0:104          Constant:
+0:104            9 (const uint)
+0:104            2 (const uint)
+0:104            3 (const uint)
+0:104            4 (const uint)
 0:104        imageStore ( temp void)
 0:104          'g_tTex3du4' (layout( rgba32ui) uniform uimage3D)
 0:104          c3: direct index for structure ( uniform 3-component vector of int)
@@ -1690,11 +1690,11 @@
 0:135      Sequence
 0:135        move second child to first child ( temp 4-component vector of float)
 0:135          'storeTemp' ( temp 4-component vector of float)
-0:?           imageLoad ( temp 4-component vector of float)
+0:135          imageLoad ( temp 4-component vector of float)
 0:135            'g_tTex2df4' (layout( rgba32f) uniform image2D)
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:135            Constant:
+0:135              2 (const int)
+0:135              3 (const int)
 0:135        imageStore ( temp void)
 0:135          'g_tTex1df4' (layout( binding=0 rgba32f) uniform image1D)
 0:135          Constant:
diff --git a/Test/baseResults/hlsl.rw.register.frag.out b/Test/baseResults/hlsl.rw.register.frag.out
index 7bcecc9..265eaf9 100644
--- a/Test/baseResults/hlsl.rw.register.frag.out
+++ b/Test/baseResults/hlsl.rw.register.frag.out
@@ -97,17 +97,16 @@
 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
+// Id's are bound by 45
 
                               Capability Shader
                               Capability Image1D
                               Capability ImageBuffer
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 39
+                              EntryPoint Fragment 4  "main" 42
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "main"
@@ -116,15 +115,15 @@
                               Name 10  "@main("
                               Name 13  "r00"
                               Name 16  "g_tTex1df1"
-                              Name 23  "r01"
-                              Name 26  "g_tBuf1du1"
-                              Name 30  "psout"
-                              Name 39  "@entryPointOutput.Color"
+                              Name 24  "r01"
+                              Name 27  "g_tBuf1du1"
+                              Name 33  "psout"
+                              Name 42  "@entryPointOutput.Color"
                               Decorate 16(g_tTex1df1) DescriptorSet 0
                               Decorate 16(g_tTex1df1) Binding 2
-                              Decorate 26(g_tBuf1du1) DescriptorSet 0
-                              Decorate 26(g_tBuf1du1) Binding 3
-                              Decorate 39(@entryPointOutput.Color) Location 0
+                              Decorate 27(g_tBuf1du1) DescriptorSet 0
+                              Decorate 27(g_tBuf1du1) Binding 3
+                              Decorate 42(@entryPointOutput.Color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -137,37 +136,40 @@
   16(g_tTex1df1):     15(ptr) Variable UniformConstant
               18:             TypeInt 32 1
               19:     18(int) Constant 0
-              21:             TypeInt 32 0
-              22:             TypePointer Function 21(int)
-              24:             TypeImage 21(int) Buffer nonsampled format:R32ui
-              25:             TypePointer UniformConstant 24
-  26(g_tBuf1du1):     25(ptr) Variable UniformConstant
-              29:             TypePointer Function 8(PS_OUTPUT)
-              31:    6(float) Constant 1065353216
-              32:    7(fvec4) ConstantComposite 31 31 31 31
-              33:             TypePointer Function 7(fvec4)
-              38:             TypePointer Output 7(fvec4)
-39(@entryPointOutput.Color):     38(ptr) Variable Output
+              22:             TypeInt 32 0
+              23:             TypePointer Function 22(int)
+              25:             TypeImage 22(int) Buffer nonsampled format:R32ui
+              26:             TypePointer UniformConstant 25
+  27(g_tBuf1du1):     26(ptr) Variable UniformConstant
+              29:             TypeVector 22(int) 4
+              32:             TypePointer Function 8(PS_OUTPUT)
+              34:    6(float) Constant 1065353216
+              35:    7(fvec4) ConstantComposite 34 34 34 34
+              36:             TypePointer Function 7(fvec4)
+              41:             TypePointer Output 7(fvec4)
+42(@entryPointOutput.Color):     41(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
-              40:8(PS_OUTPUT) FunctionCall 10(@main()
-              41:    7(fvec4) CompositeExtract 40 0
-                              Store 39(@entryPointOutput.Color) 41
+              43:8(PS_OUTPUT) FunctionCall 10(@main()
+              44:    7(fvec4) CompositeExtract 43 0
+                              Store 42(@entryPointOutput.Color) 44
                               Return
                               FunctionEnd
       10(@main():8(PS_OUTPUT) Function None 9
               11:             Label
          13(r00):     12(ptr) Variable Function
-         23(r01):     22(ptr) Variable Function
-       30(psout):     29(ptr) Variable Function
+         24(r01):     23(ptr) Variable Function
+       33(psout):     32(ptr) Variable Function
               17:          14 Load 16(g_tTex1df1)
-              20:    6(float) ImageRead 17 19
-                              Store 13(r00) 20
-              27:          24 Load 26(g_tBuf1du1)
-              28:     21(int) ImageRead 27 19
-                              Store 23(r01) 28
-              34:     33(ptr) AccessChain 30(psout) 19
-                              Store 34 32
-              35:8(PS_OUTPUT) Load 30(psout)
-                              ReturnValue 35
+              20:    7(fvec4) ImageRead 17 19
+              21:    6(float) CompositeExtract 20 0
+                              Store 13(r00) 21
+              28:          25 Load 27(g_tBuf1du1)
+              30:   29(ivec4) ImageRead 28 19
+              31:     22(int) CompositeExtract 30 0
+                              Store 24(r01) 31
+              37:     36(ptr) AccessChain 33(psout) 19
+                              Store 37 35
+              38:8(PS_OUTPUT) Load 33(psout)
+                              ReturnValue 38
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
index 0614677..8e4716b 100644
--- a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
+++ b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
@@ -789,11 +789,11 @@
 0:135      Sequence
 0:135        move second child to first child ( temp float)
 0:135          'storeTemp' ( temp float)
-0:?           imageLoad ( temp float)
+0:135          imageLoad ( temp float)
 0:135            'g_tTex2df1' (layout( r32f) uniform image2D)
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:135            Constant:
+0:135              2 (const int)
+0:135              3 (const int)
 0:135        imageStore ( temp void)
 0:135          'g_tTex1df1' (layout( r32f) uniform image1D)
 0:135          Constant:
@@ -1636,11 +1636,11 @@
 0:135      Sequence
 0:135        move second child to first child ( temp float)
 0:135          'storeTemp' ( temp float)
-0:?           imageLoad ( temp float)
+0:135          imageLoad ( temp float)
 0:135            'g_tTex2df1' (layout( r32f) uniform image2D)
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:135            Constant:
+0:135              2 (const int)
+0:135              3 (const int)
 0:135        imageStore ( temp void)
 0:135          'g_tTex1df1' (layout( r32f) uniform image1D)
 0:135          Constant:
@@ -1689,16 +1689,15 @@
 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
+// Id's are bound by 607
 
                               Capability Shader
                               Capability Image1D
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 547
+                              EntryPoint Fragment 4  "main" 583
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "main"
@@ -1732,101 +1731,101 @@
                               MemberName 59($Global) 10  "uu1"
                               Name 61  ""
                               Name 70  "g_tTex1df1"
-                              Name 75  "r00"
-                              Name 80  "r01"
-                              Name 83  "g_tTex1di1"
-                              Name 88  "r02"
-                              Name 91  "g_tTex1du1"
-                              Name 96  "r10"
-                              Name 99  "g_tTex2df1"
-                              Name 106  "r11"
-                              Name 109  "g_tTex2di1"
-                              Name 114  "r12"
-                              Name 117  "g_tTex2du1"
-                              Name 122  "r20"
-                              Name 125  "g_tTex3df1"
-                              Name 132  "r21"
-                              Name 135  "g_tTex3di1"
-                              Name 140  "r22"
-                              Name 143  "g_tTex3du1"
-                              Name 148  "lf1"
-                              Name 153  "storeTemp"
-                              Name 163  "storeTemp"
-                              Name 168  "storeTemp"
-                              Name 174  "val1"
-                              Name 175  "coordTemp"
-                              Name 178  "storeTemp"
-                              Name 189  "coordTemp"
-                              Name 192  "storeTemp"
-                              Name 202  "coordTemp"
-                              Name 205  "storeTemp"
+                              Name 76  "r00"
+                              Name 82  "r01"
+                              Name 85  "g_tTex1di1"
+                              Name 91  "r02"
+                              Name 94  "g_tTex1du1"
+                              Name 101  "r10"
+                              Name 104  "g_tTex2df1"
+                              Name 112  "r11"
+                              Name 115  "g_tTex2di1"
+                              Name 121  "r12"
+                              Name 124  "g_tTex2du1"
+                              Name 130  "r20"
+                              Name 133  "g_tTex3df1"
+                              Name 141  "r21"
+                              Name 144  "g_tTex3di1"
+                              Name 150  "r22"
+                              Name 153  "g_tTex3du1"
+                              Name 159  "lf1"
+                              Name 164  "storeTemp"
+                              Name 174  "storeTemp"
+                              Name 179  "storeTemp"
+                              Name 185  "val1"
+                              Name 186  "coordTemp"
+                              Name 189  "storeTemp"
+                              Name 201  "coordTemp"
+                              Name 204  "storeTemp"
                               Name 215  "coordTemp"
                               Name 218  "storeTemp"
-                              Name 227  "coordTemp"
-                              Name 230  "storeTemp"
-                              Name 239  "coordTemp"
-                              Name 242  "storeTemp"
-                              Name 252  "coordTemp"
-                              Name 255  "storeTemp"
-                              Name 265  "coordTemp"
-                              Name 268  "storeTemp"
-                              Name 277  "coordTemp"
-                              Name 280  "storeTemp"
-                              Name 289  "storeTemp"
+                              Name 229  "coordTemp"
+                              Name 232  "storeTemp"
+                              Name 242  "coordTemp"
+                              Name 245  "storeTemp"
+                              Name 255  "coordTemp"
+                              Name 258  "storeTemp"
+                              Name 269  "coordTemp"
+                              Name 272  "storeTemp"
+                              Name 283  "coordTemp"
+                              Name 286  "storeTemp"
+                              Name 296  "coordTemp"
                               Name 299  "storeTemp"
-                              Name 305  "storeTemp"
-                              Name 311  "storeTemp"
-                              Name 321  "storeTemp"
-                              Name 326  "storeTemp"
-                              Name 336  "param"
-                              Name 342  "param"
-                              Name 348  "param"
-                              Name 350  "tempArg"
-                              Name 351  "param"
-                              Name 358  "tempArg"
-                              Name 359  "param"
-                              Name 366  "tempArg"
-                              Name 367  "param"
-                              Name 374  "coordTemp"
-                              Name 377  "storeTemp"
-                              Name 387  "coordTemp"
-                              Name 390  "storeTemp"
-                              Name 399  "coordTemp"
-                              Name 402  "storeTemp"
+                              Name 309  "storeTemp"
+                              Name 319  "storeTemp"
+                              Name 325  "storeTemp"
+                              Name 331  "storeTemp"
+                              Name 341  "storeTemp"
+                              Name 346  "storeTemp"
+                              Name 357  "param"
+                              Name 364  "param"
+                              Name 371  "param"
+                              Name 373  "tempArg"
+                              Name 374  "param"
+                              Name 381  "tempArg"
+                              Name 382  "param"
+                              Name 389  "tempArg"
+                              Name 390  "param"
+                              Name 397  "coordTemp"
+                              Name 400  "storeTemp"
                               Name 411  "coordTemp"
                               Name 414  "storeTemp"
-                              Name 423  "coordTemp"
-                              Name 426  "storeTemp"
-                              Name 435  "coordTemp"
-                              Name 438  "storeTemp"
-                              Name 447  "coordTemp"
-                              Name 450  "storeTempPre"
-                              Name 454  "storeTempPost"
-                              Name 461  "coordTemp"
-                              Name 464  "storeTempPre"
-                              Name 468  "storeTempPost"
-                              Name 475  "coordTemp"
-                              Name 478  "storeTempPre"
-                              Name 482  "storeTempPost"
-                              Name 489  "coordTemp"
-                              Name 492  "storeTempPre"
-                              Name 496  "storeTempPost"
-                              Name 503  "coordTemp"
-                              Name 506  "storeTempPre"
-                              Name 510  "storeTempPost"
-                              Name 517  "coordTemp"
-                              Name 520  "storeTempPre"
-                              Name 524  "storeTempPost"
-                              Name 531  "storeTemp"
-                              Name 539  "psout"
-                              Name 547  "@entryPointOutput.Color"
-                              Name 552  "g_sSamp"
-                              Name 555  "g_tTex1df1a"
-                              Name 558  "g_tTex1di1a"
-                              Name 561  "g_tTex1du1a"
-                              Name 564  "g_tTex2df1a"
-                              Name 567  "g_tTex2di1a"
-                              Name 570  "g_tTex2du1a"
+                              Name 424  "coordTemp"
+                              Name 427  "storeTemp"
+                              Name 437  "coordTemp"
+                              Name 440  "storeTemp"
+                              Name 450  "coordTemp"
+                              Name 453  "storeTemp"
+                              Name 463  "coordTemp"
+                              Name 466  "storeTemp"
+                              Name 476  "coordTemp"
+                              Name 479  "storeTempPre"
+                              Name 484  "storeTempPost"
+                              Name 491  "coordTemp"
+                              Name 494  "storeTempPre"
+                              Name 499  "storeTempPost"
+                              Name 506  "coordTemp"
+                              Name 509  "storeTempPre"
+                              Name 514  "storeTempPost"
+                              Name 521  "coordTemp"
+                              Name 524  "storeTempPre"
+                              Name 529  "storeTempPost"
+                              Name 536  "coordTemp"
+                              Name 539  "storeTempPre"
+                              Name 544  "storeTempPost"
+                              Name 551  "coordTemp"
+                              Name 554  "storeTempPre"
+                              Name 559  "storeTempPost"
+                              Name 566  "storeTemp"
+                              Name 575  "psout"
+                              Name 583  "@entryPointOutput.Color"
+                              Name 588  "g_sSamp"
+                              Name 591  "g_tTex1df1a"
+                              Name 594  "g_tTex1di1a"
+                              Name 597  "g_tTex1du1a"
+                              Name 600  "g_tTex2df1a"
+                              Name 603  "g_tTex2di1a"
+                              Name 606  "g_tTex2du1a"
                               MemberDecorate 59($Global) 0 Offset 0
                               MemberDecorate 59($Global) 1 Offset 8
                               MemberDecorate 59($Global) 2 Offset 16
@@ -1843,37 +1842,37 @@
                               Decorate 61 Binding 10
                               Decorate 70(g_tTex1df1) DescriptorSet 0
                               Decorate 70(g_tTex1df1) Binding 1
-                              Decorate 83(g_tTex1di1) DescriptorSet 0
-                              Decorate 83(g_tTex1di1) Binding 2
-                              Decorate 91(g_tTex1du1) DescriptorSet 0
-                              Decorate 91(g_tTex1du1) Binding 3
-                              Decorate 99(g_tTex2df1) DescriptorSet 0
-                              Decorate 99(g_tTex2df1) Binding 4
-                              Decorate 109(g_tTex2di1) DescriptorSet 0
-                              Decorate 109(g_tTex2di1) Binding 5
-                              Decorate 117(g_tTex2du1) DescriptorSet 0
-                              Decorate 117(g_tTex2du1) Binding 6
-                              Decorate 125(g_tTex3df1) DescriptorSet 0
-                              Decorate 125(g_tTex3df1) Binding 7
-                              Decorate 135(g_tTex3di1) DescriptorSet 0
-                              Decorate 135(g_tTex3di1) Binding 8
-                              Decorate 143(g_tTex3du1) DescriptorSet 0
-                              Decorate 143(g_tTex3du1) Binding 9
-                              Decorate 547(@entryPointOutput.Color) Location 0
-                              Decorate 552(g_sSamp) DescriptorSet 0
-                              Decorate 552(g_sSamp) Binding 0
-                              Decorate 555(g_tTex1df1a) DescriptorSet 0
-                              Decorate 555(g_tTex1df1a) Binding 0
-                              Decorate 558(g_tTex1di1a) DescriptorSet 0
-                              Decorate 558(g_tTex1di1a) Binding 0
-                              Decorate 561(g_tTex1du1a) DescriptorSet 0
-                              Decorate 561(g_tTex1du1a) Binding 0
-                              Decorate 564(g_tTex2df1a) DescriptorSet 0
-                              Decorate 564(g_tTex2df1a) Binding 0
-                              Decorate 567(g_tTex2di1a) DescriptorSet 0
-                              Decorate 567(g_tTex2di1a) Binding 0
-                              Decorate 570(g_tTex2du1a) DescriptorSet 0
-                              Decorate 570(g_tTex2du1a) Binding 0
+                              Decorate 85(g_tTex1di1) DescriptorSet 0
+                              Decorate 85(g_tTex1di1) Binding 2
+                              Decorate 94(g_tTex1du1) DescriptorSet 0
+                              Decorate 94(g_tTex1du1) Binding 3
+                              Decorate 104(g_tTex2df1) DescriptorSet 0
+                              Decorate 104(g_tTex2df1) Binding 4
+                              Decorate 115(g_tTex2di1) DescriptorSet 0
+                              Decorate 115(g_tTex2di1) Binding 5
+                              Decorate 124(g_tTex2du1) DescriptorSet 0
+                              Decorate 124(g_tTex2du1) Binding 6
+                              Decorate 133(g_tTex3df1) DescriptorSet 0
+                              Decorate 133(g_tTex3df1) Binding 7
+                              Decorate 144(g_tTex3di1) DescriptorSet 0
+                              Decorate 144(g_tTex3di1) Binding 8
+                              Decorate 153(g_tTex3du1) DescriptorSet 0
+                              Decorate 153(g_tTex3du1) Binding 9
+                              Decorate 583(@entryPointOutput.Color) Location 0
+                              Decorate 588(g_sSamp) DescriptorSet 0
+                              Decorate 588(g_sSamp) Binding 0
+                              Decorate 591(g_tTex1df1a) DescriptorSet 0
+                              Decorate 591(g_tTex1df1a) Binding 0
+                              Decorate 594(g_tTex1di1a) DescriptorSet 0
+                              Decorate 594(g_tTex1di1a) Binding 0
+                              Decorate 597(g_tTex1du1a) DescriptorSet 0
+                              Decorate 597(g_tTex1du1a) Binding 0
+                              Decorate 600(g_tTex2df1a) DescriptorSet 0
+                              Decorate 600(g_tTex2df1a) Binding 0
+                              Decorate 603(g_tTex2di1a) DescriptorSet 0
+                              Decorate 603(g_tTex2di1a) Binding 0
+                              Decorate 606(g_tTex2du1a) DescriptorSet 0
+                              Decorate 606(g_tTex2du1a) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
@@ -1905,79 +1904,80 @@
               68:             TypeImage 18(float) 1D nonsampled format:R32f
               69:             TypePointer UniformConstant 68
   70(g_tTex1df1):     69(ptr) Variable UniformConstant
-              81:             TypeImage 6(int) 1D nonsampled format:R32i
-              82:             TypePointer UniformConstant 81
-  83(g_tTex1di1):     82(ptr) Variable UniformConstant
-              89:             TypeImage 12(int) 1D nonsampled format:R32ui
-              90:             TypePointer UniformConstant 89
-  91(g_tTex1du1):     90(ptr) Variable UniformConstant
-              97:             TypeImage 18(float) 2D nonsampled format:R32f
-              98:             TypePointer UniformConstant 97
-  99(g_tTex2df1):     98(ptr) Variable UniformConstant
-             101:      6(int) Constant 1
-             102:             TypePointer Uniform 56(ivec2)
-             107:             TypeImage 6(int) 2D nonsampled format:R32i
-             108:             TypePointer UniformConstant 107
- 109(g_tTex2di1):    108(ptr) Variable UniformConstant
-             115:             TypeImage 12(int) 2D nonsampled format:R32ui
-             116:             TypePointer UniformConstant 115
- 117(g_tTex2du1):    116(ptr) Variable UniformConstant
-             123:             TypeImage 18(float) 3D nonsampled format:R32f
-             124:             TypePointer UniformConstant 123
- 125(g_tTex3df1):    124(ptr) Variable UniformConstant
-             127:      6(int) Constant 2
-             128:             TypePointer Uniform 57(ivec3)
-             133:             TypeImage 6(int) 3D nonsampled format:R32i
-             134:             TypePointer UniformConstant 133
- 135(g_tTex3di1):    134(ptr) Variable UniformConstant
-             141:             TypeImage 12(int) 3D nonsampled format:R32ui
-             142:             TypePointer UniformConstant 141
- 143(g_tTex3du1):    142(ptr) Variable UniformConstant
-             149:      6(int) Constant 8
-             150:             TypePointer Uniform 18(float)
-             169:     12(int) Constant 3
-             182:   18(float) Constant 1073741824
-             196:   18(float) Constant 1077936128
-             209:   18(float) Constant 1082130432
-             246:      6(int) Constant 65535
-             259:      6(int) Constant 61680
-             300:      6(int) Constant 5
-             306:     12(int) Constant 6
-             327:     12(int) Constant 9
-             382:   18(float) Constant 1065353216
-             533:      6(int) Constant 3
-             534:   56(ivec2) ConstantComposite 127 533
-             538:             TypePointer Function 40(PS_OUTPUT)
-             540:   39(fvec4) ConstantComposite 382 382 382 382
-             541:             TypePointer Function 39(fvec4)
-             546:             TypePointer Output 39(fvec4)
-547(@entryPointOutput.Color):    546(ptr) Variable Output
-             550:             TypeSampler
-             551:             TypePointer UniformConstant 550
-    552(g_sSamp):    551(ptr) Variable UniformConstant
-             553:             TypeImage 18(float) 1D array nonsampled format:R32f
-             554:             TypePointer UniformConstant 553
-555(g_tTex1df1a):    554(ptr) Variable UniformConstant
-             556:             TypeImage 6(int) 1D array nonsampled format:R32i
-             557:             TypePointer UniformConstant 556
-558(g_tTex1di1a):    557(ptr) Variable UniformConstant
-             559:             TypeImage 12(int) 1D array nonsampled format:R32ui
-             560:             TypePointer UniformConstant 559
-561(g_tTex1du1a):    560(ptr) Variable UniformConstant
-             562:             TypeImage 18(float) 2D array nonsampled format:R32f
-             563:             TypePointer UniformConstant 562
-564(g_tTex2df1a):    563(ptr) Variable UniformConstant
-             565:             TypeImage 6(int) 2D array nonsampled format:R32i
-             566:             TypePointer UniformConstant 565
-567(g_tTex2di1a):    566(ptr) Variable UniformConstant
-             568:             TypeImage 12(int) 2D array nonsampled format:R32ui
-             569:             TypePointer UniformConstant 568
-570(g_tTex2du1a):    569(ptr) Variable UniformConstant
+              83:             TypeImage 6(int) 1D nonsampled format:R32i
+              84:             TypePointer UniformConstant 83
+  85(g_tTex1di1):     84(ptr) Variable UniformConstant
+              92:             TypeImage 12(int) 1D nonsampled format:R32ui
+              93:             TypePointer UniformConstant 92
+  94(g_tTex1du1):     93(ptr) Variable UniformConstant
+              98:             TypeVector 12(int) 4
+             102:             TypeImage 18(float) 2D nonsampled format:R32f
+             103:             TypePointer UniformConstant 102
+ 104(g_tTex2df1):    103(ptr) Variable UniformConstant
+             106:      6(int) Constant 1
+             107:             TypePointer Uniform 56(ivec2)
+             113:             TypeImage 6(int) 2D nonsampled format:R32i
+             114:             TypePointer UniformConstant 113
+ 115(g_tTex2di1):    114(ptr) Variable UniformConstant
+             122:             TypeImage 12(int) 2D nonsampled format:R32ui
+             123:             TypePointer UniformConstant 122
+ 124(g_tTex2du1):    123(ptr) Variable UniformConstant
+             131:             TypeImage 18(float) 3D nonsampled format:R32f
+             132:             TypePointer UniformConstant 131
+ 133(g_tTex3df1):    132(ptr) Variable UniformConstant
+             135:      6(int) Constant 2
+             136:             TypePointer Uniform 57(ivec3)
+             142:             TypeImage 6(int) 3D nonsampled format:R32i
+             143:             TypePointer UniformConstant 142
+ 144(g_tTex3di1):    143(ptr) Variable UniformConstant
+             151:             TypeImage 12(int) 3D nonsampled format:R32ui
+             152:             TypePointer UniformConstant 151
+ 153(g_tTex3du1):    152(ptr) Variable UniformConstant
+             160:      6(int) Constant 8
+             161:             TypePointer Uniform 18(float)
+             180:     12(int) Constant 3
+             194:   18(float) Constant 1073741824
+             209:   18(float) Constant 1077936128
+             223:   18(float) Constant 1082130432
+             263:      6(int) Constant 65535
+             277:      6(int) Constant 61680
+             320:      6(int) Constant 5
+             326:     12(int) Constant 6
+             347:     12(int) Constant 9
+             406:   18(float) Constant 1065353216
+             568:      6(int) Constant 3
+             569:   56(ivec2) ConstantComposite 135 568
+             574:             TypePointer Function 40(PS_OUTPUT)
+             576:   39(fvec4) ConstantComposite 406 406 406 406
+             577:             TypePointer Function 39(fvec4)
+             582:             TypePointer Output 39(fvec4)
+583(@entryPointOutput.Color):    582(ptr) Variable Output
+             586:             TypeSampler
+             587:             TypePointer UniformConstant 586
+    588(g_sSamp):    587(ptr) Variable UniformConstant
+             589:             TypeImage 18(float) 1D array nonsampled format:R32f
+             590:             TypePointer UniformConstant 589
+591(g_tTex1df1a):    590(ptr) Variable UniformConstant
+             592:             TypeImage 6(int) 1D array nonsampled format:R32i
+             593:             TypePointer UniformConstant 592
+594(g_tTex1di1a):    593(ptr) Variable UniformConstant
+             595:             TypeImage 12(int) 1D array nonsampled format:R32ui
+             596:             TypePointer UniformConstant 595
+597(g_tTex1du1a):    596(ptr) Variable UniformConstant
+             598:             TypeImage 18(float) 2D array nonsampled format:R32f
+             599:             TypePointer UniformConstant 598
+600(g_tTex2df1a):    599(ptr) Variable UniformConstant
+             601:             TypeImage 6(int) 2D array nonsampled format:R32i
+             602:             TypePointer UniformConstant 601
+603(g_tTex2di1a):    602(ptr) Variable UniformConstant
+             604:             TypeImage 12(int) 2D array nonsampled format:R32ui
+             605:             TypePointer UniformConstant 604
+606(g_tTex2du1a):    605(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-             548:40(PS_OUTPUT) FunctionCall 42(@main()
-             549:   39(fvec4) CompositeExtract 548 0
-                              Store 547(@entryPointOutput.Color) 549
+             584:40(PS_OUTPUT) FunctionCall 42(@main()
+             585:   39(fvec4) CompositeExtract 584 0
+                              Store 583(@entryPointOutput.Color) 585
                               Return
                               FunctionEnd
      10(Fn1(i1;):      6(int) Function None 8
@@ -2025,567 +2025,602 @@
                               FunctionEnd
       42(@main():40(PS_OUTPUT) Function None 41
               43:             Label
-         75(r00):     19(ptr) Variable Function
-         80(r01):      7(ptr) Variable Function
-         88(r02):     13(ptr) Variable Function
-         96(r10):     19(ptr) Variable Function
-        106(r11):      7(ptr) Variable Function
-        114(r12):     13(ptr) Variable Function
-        122(r20):     19(ptr) Variable Function
-        132(r21):      7(ptr) Variable Function
-        140(r22):     13(ptr) Variable Function
-        148(lf1):     19(ptr) Variable Function
-  153(storeTemp):     19(ptr) Variable Function
-  163(storeTemp):      7(ptr) Variable Function
-  168(storeTemp):     13(ptr) Variable Function
-       174(val1):     19(ptr) Variable Function
-  175(coordTemp):      7(ptr) Variable Function
-  178(storeTemp):     19(ptr) Variable Function
-  189(coordTemp):      7(ptr) Variable Function
-  192(storeTemp):     19(ptr) Variable Function
-  202(coordTemp):      7(ptr) Variable Function
-  205(storeTemp):     19(ptr) Variable Function
+         76(r00):     19(ptr) Variable Function
+         82(r01):      7(ptr) Variable Function
+         91(r02):     13(ptr) Variable Function
+        101(r10):     19(ptr) Variable Function
+        112(r11):      7(ptr) Variable Function
+        121(r12):     13(ptr) Variable Function
+        130(r20):     19(ptr) Variable Function
+        141(r21):      7(ptr) Variable Function
+        150(r22):     13(ptr) Variable Function
+        159(lf1):     19(ptr) Variable Function
+  164(storeTemp):     19(ptr) Variable Function
+  174(storeTemp):      7(ptr) Variable Function
+  179(storeTemp):     13(ptr) Variable Function
+       185(val1):     19(ptr) Variable Function
+  186(coordTemp):      7(ptr) Variable Function
+  189(storeTemp):     19(ptr) Variable Function
+  201(coordTemp):      7(ptr) Variable Function
+  204(storeTemp):     19(ptr) Variable Function
   215(coordTemp):      7(ptr) Variable Function
-  218(storeTemp):      7(ptr) Variable Function
-  227(coordTemp):      7(ptr) Variable Function
-  230(storeTemp):      7(ptr) Variable Function
-  239(coordTemp):      7(ptr) Variable Function
-  242(storeTemp):      7(ptr) Variable Function
-  252(coordTemp):      7(ptr) Variable Function
-  255(storeTemp):      7(ptr) Variable Function
-  265(coordTemp):      7(ptr) Variable Function
-  268(storeTemp):      7(ptr) Variable Function
-  277(coordTemp):      7(ptr) Variable Function
-  280(storeTemp):      7(ptr) Variable Function
-  289(storeTemp):     19(ptr) Variable Function
+  218(storeTemp):     19(ptr) Variable Function
+  229(coordTemp):      7(ptr) Variable Function
+  232(storeTemp):      7(ptr) Variable Function
+  242(coordTemp):      7(ptr) Variable Function
+  245(storeTemp):      7(ptr) Variable Function
+  255(coordTemp):      7(ptr) Variable Function
+  258(storeTemp):      7(ptr) Variable Function
+  269(coordTemp):      7(ptr) Variable Function
+  272(storeTemp):      7(ptr) Variable Function
+  283(coordTemp):      7(ptr) Variable Function
+  286(storeTemp):      7(ptr) Variable Function
+  296(coordTemp):      7(ptr) Variable Function
   299(storeTemp):      7(ptr) Variable Function
-  305(storeTemp):     13(ptr) Variable Function
-  311(storeTemp):     19(ptr) Variable Function
-  321(storeTemp):      7(ptr) Variable Function
-  326(storeTemp):     13(ptr) Variable Function
-      336(param):     19(ptr) Variable Function
-      342(param):      7(ptr) Variable Function
-      348(param):     13(ptr) Variable Function
-    350(tempArg):     19(ptr) Variable Function
-      351(param):     19(ptr) Variable Function
-    358(tempArg):      7(ptr) Variable Function
-      359(param):      7(ptr) Variable Function
-    366(tempArg):     13(ptr) Variable Function
-      367(param):     13(ptr) Variable Function
-  374(coordTemp):      7(ptr) Variable Function
-  377(storeTemp):     19(ptr) Variable Function
-  387(coordTemp):      7(ptr) Variable Function
-  390(storeTemp):      7(ptr) Variable Function
-  399(coordTemp):      7(ptr) Variable Function
-  402(storeTemp):     13(ptr) Variable Function
+  309(storeTemp):     19(ptr) Variable Function
+  319(storeTemp):      7(ptr) Variable Function
+  325(storeTemp):     13(ptr) Variable Function
+  331(storeTemp):     19(ptr) Variable Function
+  341(storeTemp):      7(ptr) Variable Function
+  346(storeTemp):     13(ptr) Variable Function
+      357(param):     19(ptr) Variable Function
+      364(param):      7(ptr) Variable Function
+      371(param):     13(ptr) Variable Function
+    373(tempArg):     19(ptr) Variable Function
+      374(param):     19(ptr) Variable Function
+    381(tempArg):      7(ptr) Variable Function
+      382(param):      7(ptr) Variable Function
+    389(tempArg):     13(ptr) Variable Function
+      390(param):     13(ptr) Variable Function
+  397(coordTemp):      7(ptr) Variable Function
+  400(storeTemp):     19(ptr) Variable Function
   411(coordTemp):      7(ptr) Variable Function
-  414(storeTemp):     19(ptr) Variable Function
-  423(coordTemp):      7(ptr) Variable Function
-  426(storeTemp):      7(ptr) Variable Function
-  435(coordTemp):      7(ptr) Variable Function
-  438(storeTemp):     13(ptr) Variable Function
-  447(coordTemp):      7(ptr) Variable Function
-450(storeTempPre):     19(ptr) Variable Function
-454(storeTempPost):     19(ptr) Variable Function
-  461(coordTemp):      7(ptr) Variable Function
-464(storeTempPre):     13(ptr) Variable Function
-468(storeTempPost):     13(ptr) Variable Function
-  475(coordTemp):      7(ptr) Variable Function
-478(storeTempPre):      7(ptr) Variable Function
-482(storeTempPost):      7(ptr) Variable Function
-  489(coordTemp):      7(ptr) Variable Function
-492(storeTempPre):     19(ptr) Variable Function
-496(storeTempPost):     19(ptr) Variable Function
-  503(coordTemp):      7(ptr) Variable Function
-506(storeTempPre):      7(ptr) Variable Function
-510(storeTempPost):      7(ptr) Variable Function
-  517(coordTemp):      7(ptr) Variable Function
-520(storeTempPre):     13(ptr) Variable Function
-524(storeTempPost):     13(ptr) Variable Function
-  531(storeTemp):     19(ptr) Variable Function
-      539(psout):    538(ptr) Variable Function
+  414(storeTemp):      7(ptr) Variable Function
+  424(coordTemp):      7(ptr) Variable Function
+  427(storeTemp):     13(ptr) Variable Function
+  437(coordTemp):      7(ptr) Variable Function
+  440(storeTemp):     19(ptr) Variable Function
+  450(coordTemp):      7(ptr) Variable Function
+  453(storeTemp):      7(ptr) Variable Function
+  463(coordTemp):      7(ptr) Variable Function
+  466(storeTemp):     13(ptr) Variable Function
+  476(coordTemp):      7(ptr) Variable Function
+479(storeTempPre):     19(ptr) Variable Function
+484(storeTempPost):     19(ptr) Variable Function
+  491(coordTemp):      7(ptr) Variable Function
+494(storeTempPre):     13(ptr) Variable Function
+499(storeTempPost):     13(ptr) Variable Function
+  506(coordTemp):      7(ptr) Variable Function
+509(storeTempPre):      7(ptr) Variable Function
+514(storeTempPost):      7(ptr) Variable Function
+  521(coordTemp):      7(ptr) Variable Function
+524(storeTempPre):     19(ptr) Variable Function
+529(storeTempPost):     19(ptr) Variable Function
+  536(coordTemp):      7(ptr) Variable Function
+539(storeTempPre):      7(ptr) Variable Function
+544(storeTempPost):      7(ptr) Variable Function
+  551(coordTemp):      7(ptr) Variable Function
+554(storeTempPre):     13(ptr) Variable Function
+559(storeTempPost):     13(ptr) Variable Function
+  566(storeTemp):     19(ptr) Variable Function
+      575(psout):    574(ptr) Variable Function
               71:          68 Load 70(g_tTex1df1)
               72:     62(ptr) AccessChain 61 53
               73:      6(int) Load 72
-              74:   18(float) ImageRead 71 73
-              76:          68 Load 70(g_tTex1df1)
-              77:     62(ptr) AccessChain 61 53
-              78:      6(int) Load 77
-              79:   18(float) ImageRead 76 78
-                              Store 75(r00) 79
-              84:          81 Load 83(g_tTex1di1)
-              85:     62(ptr) AccessChain 61 53
-              86:      6(int) Load 85
-              87:      6(int) ImageRead 84 86
-                              Store 80(r01) 87
-              92:          89 Load 91(g_tTex1du1)
-              93:     62(ptr) AccessChain 61 53
-              94:      6(int) Load 93
-              95:     12(int) ImageRead 92 94
-                              Store 88(r02) 95
-             100:          97 Load 99(g_tTex2df1)
-             103:    102(ptr) AccessChain 61 101
-             104:   56(ivec2) Load 103
-             105:   18(float) ImageRead 100 104
-                              Store 96(r10) 105
-             110:         107 Load 109(g_tTex2di1)
-             111:    102(ptr) AccessChain 61 101
-             112:   56(ivec2) Load 111
-             113:      6(int) ImageRead 110 112
-                              Store 106(r11) 113
-             118:         115 Load 117(g_tTex2du1)
-             119:    102(ptr) AccessChain 61 101
-             120:   56(ivec2) Load 119
-             121:     12(int) ImageRead 118 120
-                              Store 114(r12) 121
-             126:         123 Load 125(g_tTex3df1)
-             129:    128(ptr) AccessChain 61 127
-             130:   57(ivec3) Load 129
-             131:   18(float) ImageRead 126 130
-                              Store 122(r20) 131
-             136:         133 Load 135(g_tTex3di1)
-             137:    128(ptr) AccessChain 61 127
+              74:   39(fvec4) ImageRead 71 73
+              75:   18(float) CompositeExtract 74 0
+              77:          68 Load 70(g_tTex1df1)
+              78:     62(ptr) AccessChain 61 53
+              79:      6(int) Load 78
+              80:   39(fvec4) ImageRead 77 79
+              81:   18(float) CompositeExtract 80 0
+                              Store 76(r00) 81
+              86:          83 Load 85(g_tTex1di1)
+              87:     62(ptr) AccessChain 61 53
+              88:      6(int) Load 87
+              89:   58(ivec4) ImageRead 86 88
+              90:      6(int) CompositeExtract 89 0
+                              Store 82(r01) 90
+              95:          92 Load 94(g_tTex1du1)
+              96:     62(ptr) AccessChain 61 53
+              97:      6(int) Load 96
+              99:   98(ivec4) ImageRead 95 97
+             100:     12(int) CompositeExtract 99 0
+                              Store 91(r02) 100
+             105:         102 Load 104(g_tTex2df1)
+             108:    107(ptr) AccessChain 61 106
+             109:   56(ivec2) Load 108
+             110:   39(fvec4) ImageRead 105 109
+             111:   18(float) CompositeExtract 110 0
+                              Store 101(r10) 111
+             116:         113 Load 115(g_tTex2di1)
+             117:    107(ptr) AccessChain 61 106
+             118:   56(ivec2) Load 117
+             119:   58(ivec4) ImageRead 116 118
+             120:      6(int) CompositeExtract 119 0
+                              Store 112(r11) 120
+             125:         122 Load 124(g_tTex2du1)
+             126:    107(ptr) AccessChain 61 106
+             127:   56(ivec2) Load 126
+             128:   98(ivec4) ImageRead 125 127
+             129:     12(int) CompositeExtract 128 0
+                              Store 121(r12) 129
+             134:         131 Load 133(g_tTex3df1)
+             137:    136(ptr) AccessChain 61 135
              138:   57(ivec3) Load 137
-             139:      6(int) ImageRead 136 138
-                              Store 132(r21) 139
-             144:         141 Load 143(g_tTex3du1)
-             145:    128(ptr) AccessChain 61 127
-             146:   57(ivec3) Load 145
-             147:     12(int) ImageRead 144 146
-                              Store 140(r22) 147
-             151:    150(ptr) AccessChain 61 149
-             152:   18(float) Load 151
-                              Store 148(lf1) 152
-             154:   18(float) FunctionCall 37(SomeValue()
-                              Store 153(storeTemp) 154
-             155:          68 Load 70(g_tTex1df1)
-             156:     62(ptr) AccessChain 61 53
-             157:      6(int) Load 156
-             158:   18(float) Load 153(storeTemp)
-                              ImageWrite 155 157 158
-             159:          68 Load 70(g_tTex1df1)
-             160:     62(ptr) AccessChain 61 53
-             161:      6(int) Load 160
-             162:   18(float) Load 148(lf1)
-                              ImageWrite 159 161 162
-                              Store 163(storeTemp) 127
-             164:          81 Load 83(g_tTex1di1)
-             165:     62(ptr) AccessChain 61 53
-             166:      6(int) Load 165
-             167:      6(int) Load 163(storeTemp)
-                              ImageWrite 164 166 167
-                              Store 168(storeTemp) 169
-             170:          89 Load 91(g_tTex1du1)
+             139:   39(fvec4) ImageRead 134 138
+             140:   18(float) CompositeExtract 139 0
+                              Store 130(r20) 140
+             145:         142 Load 144(g_tTex3di1)
+             146:    136(ptr) AccessChain 61 135
+             147:   57(ivec3) Load 146
+             148:   58(ivec4) ImageRead 145 147
+             149:      6(int) CompositeExtract 148 0
+                              Store 141(r21) 149
+             154:         151 Load 153(g_tTex3du1)
+             155:    136(ptr) AccessChain 61 135
+             156:   57(ivec3) Load 155
+             157:   98(ivec4) ImageRead 154 156
+             158:     12(int) CompositeExtract 157 0
+                              Store 150(r22) 158
+             162:    161(ptr) AccessChain 61 160
+             163:   18(float) Load 162
+                              Store 159(lf1) 163
+             165:   18(float) FunctionCall 37(SomeValue()
+                              Store 164(storeTemp) 165
+             166:          68 Load 70(g_tTex1df1)
+             167:     62(ptr) AccessChain 61 53
+             168:      6(int) Load 167
+             169:   18(float) Load 164(storeTemp)
+                              ImageWrite 166 168 169
+             170:          68 Load 70(g_tTex1df1)
              171:     62(ptr) AccessChain 61 53
              172:      6(int) Load 171
-             173:     12(int) Load 168(storeTemp)
+             173:   18(float) Load 159(lf1)
                               ImageWrite 170 172 173
+                              Store 174(storeTemp) 135
+             175:          83 Load 85(g_tTex1di1)
              176:     62(ptr) AccessChain 61 53
              177:      6(int) Load 176
-                              Store 175(coordTemp) 177
-             179:          68 Load 70(g_tTex1df1)
-             180:      6(int) Load 175(coordTemp)
-             181:   18(float) ImageRead 179 180
-                              Store 178(storeTemp) 181
-             183:   18(float) Load 178(storeTemp)
-             184:   18(float) FMul 183 182
-                              Store 178(storeTemp) 184
-             185:          68 Load 70(g_tTex1df1)
-             186:      6(int) Load 175(coordTemp)
-             187:   18(float) Load 178(storeTemp)
-                              ImageWrite 185 186 187
-             188:   18(float) Load 178(storeTemp)
-                              Store 174(val1) 188
-             190:     62(ptr) AccessChain 61 53
-             191:      6(int) Load 190
-                              Store 189(coordTemp) 191
-             193:          68 Load 70(g_tTex1df1)
-             194:      6(int) Load 189(coordTemp)
-             195:   18(float) ImageRead 193 194
-                              Store 192(storeTemp) 195
-             197:   18(float) Load 192(storeTemp)
-             198:   18(float) FSub 197 196
-                              Store 192(storeTemp) 198
-             199:          68 Load 70(g_tTex1df1)
-             200:      6(int) Load 189(coordTemp)
-             201:   18(float) Load 192(storeTemp)
-                              ImageWrite 199 200 201
-             203:     62(ptr) AccessChain 61 53
-             204:      6(int) Load 203
-                              Store 202(coordTemp) 204
-             206:          68 Load 70(g_tTex1df1)
-             207:      6(int) Load 202(coordTemp)
-             208:   18(float) ImageRead 206 207
-                              Store 205(storeTemp) 208
-             210:   18(float) Load 205(storeTemp)
-             211:   18(float) FAdd 210 209
-                              Store 205(storeTemp) 211
+             178:      6(int) Load 174(storeTemp)
+                              ImageWrite 175 177 178
+                              Store 179(storeTemp) 180
+             181:          92 Load 94(g_tTex1du1)
+             182:     62(ptr) AccessChain 61 53
+             183:      6(int) Load 182
+             184:     12(int) Load 179(storeTemp)
+                              ImageWrite 181 183 184
+             187:     62(ptr) AccessChain 61 53
+             188:      6(int) Load 187
+                              Store 186(coordTemp) 188
+             190:          68 Load 70(g_tTex1df1)
+             191:      6(int) Load 186(coordTemp)
+             192:   39(fvec4) ImageRead 190 191
+             193:   18(float) CompositeExtract 192 0
+                              Store 189(storeTemp) 193
+             195:   18(float) Load 189(storeTemp)
+             196:   18(float) FMul 195 194
+                              Store 189(storeTemp) 196
+             197:          68 Load 70(g_tTex1df1)
+             198:      6(int) Load 186(coordTemp)
+             199:   18(float) Load 189(storeTemp)
+                              ImageWrite 197 198 199
+             200:   18(float) Load 189(storeTemp)
+                              Store 185(val1) 200
+             202:     62(ptr) AccessChain 61 53
+             203:      6(int) Load 202
+                              Store 201(coordTemp) 203
+             205:          68 Load 70(g_tTex1df1)
+             206:      6(int) Load 201(coordTemp)
+             207:   39(fvec4) ImageRead 205 206
+             208:   18(float) CompositeExtract 207 0
+                              Store 204(storeTemp) 208
+             210:   18(float) Load 204(storeTemp)
+             211:   18(float) FSub 210 209
+                              Store 204(storeTemp) 211
              212:          68 Load 70(g_tTex1df1)
-             213:      6(int) Load 202(coordTemp)
-             214:   18(float) Load 205(storeTemp)
+             213:      6(int) Load 201(coordTemp)
+             214:   18(float) Load 204(storeTemp)
                               ImageWrite 212 213 214
              216:     62(ptr) AccessChain 61 53
              217:      6(int) Load 216
                               Store 215(coordTemp) 217
-             219:          81 Load 83(g_tTex1di1)
+             219:          68 Load 70(g_tTex1df1)
              220:      6(int) Load 215(coordTemp)
-             221:      6(int) ImageRead 219 220
-                              Store 218(storeTemp) 221
-             222:      6(int) Load 218(storeTemp)
-             223:      6(int) SDiv 222 127
-                              Store 218(storeTemp) 223
-             224:          81 Load 83(g_tTex1di1)
-             225:      6(int) Load 215(coordTemp)
-             226:      6(int) Load 218(storeTemp)
-                              ImageWrite 224 225 226
-             228:     62(ptr) AccessChain 61 53
-             229:      6(int) Load 228
-                              Store 227(coordTemp) 229
-             231:          81 Load 83(g_tTex1di1)
-             232:      6(int) Load 227(coordTemp)
-             233:      6(int) ImageRead 231 232
-                              Store 230(storeTemp) 233
-             234:      6(int) Load 230(storeTemp)
-             235:      6(int) SMod 234 127
-                              Store 230(storeTemp) 235
-             236:          81 Load 83(g_tTex1di1)
-             237:      6(int) Load 227(coordTemp)
-             238:      6(int) Load 230(storeTemp)
-                              ImageWrite 236 237 238
-             240:     62(ptr) AccessChain 61 53
-             241:      6(int) Load 240
-                              Store 239(coordTemp) 241
-             243:          81 Load 83(g_tTex1di1)
-             244:      6(int) Load 239(coordTemp)
-             245:      6(int) ImageRead 243 244
-                              Store 242(storeTemp) 245
-             247:      6(int) Load 242(storeTemp)
-             248:      6(int) BitwiseAnd 247 246
-                              Store 242(storeTemp) 248
-             249:          81 Load 83(g_tTex1di1)
-             250:      6(int) Load 239(coordTemp)
-             251:      6(int) Load 242(storeTemp)
-                              ImageWrite 249 250 251
-             253:     62(ptr) AccessChain 61 53
-             254:      6(int) Load 253
-                              Store 252(coordTemp) 254
-             256:          81 Load 83(g_tTex1di1)
-             257:      6(int) Load 252(coordTemp)
-             258:      6(int) ImageRead 256 257
-                              Store 255(storeTemp) 258
-             260:      6(int) Load 255(storeTemp)
-             261:      6(int) BitwiseOr 260 259
-                              Store 255(storeTemp) 261
-             262:          81 Load 83(g_tTex1di1)
-             263:      6(int) Load 252(coordTemp)
-             264:      6(int) Load 255(storeTemp)
-                              ImageWrite 262 263 264
-             266:     62(ptr) AccessChain 61 53
-             267:      6(int) Load 266
-                              Store 265(coordTemp) 267
-             269:          81 Load 83(g_tTex1di1)
-             270:      6(int) Load 265(coordTemp)
-             271:      6(int) ImageRead 269 270
-                              Store 268(storeTemp) 271
-             272:      6(int) Load 268(storeTemp)
-             273:      6(int) ShiftLeftLogical 272 127
-                              Store 268(storeTemp) 273
-             274:          81 Load 83(g_tTex1di1)
-             275:      6(int) Load 265(coordTemp)
-             276:      6(int) Load 268(storeTemp)
-                              ImageWrite 274 275 276
-             278:     62(ptr) AccessChain 61 53
-             279:      6(int) Load 278
-                              Store 277(coordTemp) 279
-             281:          81 Load 83(g_tTex1di1)
-             282:      6(int) Load 277(coordTemp)
-             283:      6(int) ImageRead 281 282
-                              Store 280(storeTemp) 283
-             284:      6(int) Load 280(storeTemp)
-             285:      6(int) ShiftRightArithmetic 284 127
-                              Store 280(storeTemp) 285
-             286:          81 Load 83(g_tTex1di1)
-             287:      6(int) Load 277(coordTemp)
-             288:      6(int) Load 280(storeTemp)
-                              ImageWrite 286 287 288
-             290:   18(float) FunctionCall 37(SomeValue()
-                              Store 289(storeTemp) 290
-             291:          97 Load 99(g_tTex2df1)
-             292:    102(ptr) AccessChain 61 101
-             293:   56(ivec2) Load 292
-             294:   18(float) Load 289(storeTemp)
-                              ImageWrite 291 293 294
-             295:          97 Load 99(g_tTex2df1)
-             296:    102(ptr) AccessChain 61 101
-             297:   56(ivec2) Load 296
-             298:   18(float) Load 148(lf1)
-                              ImageWrite 295 297 298
-                              Store 299(storeTemp) 300
-             301:         107 Load 109(g_tTex2di1)
-             302:    102(ptr) AccessChain 61 101
-             303:   56(ivec2) Load 302
+             221:   39(fvec4) ImageRead 219 220
+             222:   18(float) CompositeExtract 221 0
+                              Store 218(storeTemp) 222
+             224:   18(float) Load 218(storeTemp)
+             225:   18(float) FAdd 224 223
+                              Store 218(storeTemp) 225
+             226:          68 Load 70(g_tTex1df1)
+             227:      6(int) Load 215(coordTemp)
+             228:   18(float) Load 218(storeTemp)
+                              ImageWrite 226 227 228
+             230:     62(ptr) AccessChain 61 53
+             231:      6(int) Load 230
+                              Store 229(coordTemp) 231
+             233:          83 Load 85(g_tTex1di1)
+             234:      6(int) Load 229(coordTemp)
+             235:   58(ivec4) ImageRead 233 234
+             236:      6(int) CompositeExtract 235 0
+                              Store 232(storeTemp) 236
+             237:      6(int) Load 232(storeTemp)
+             238:      6(int) SDiv 237 135
+                              Store 232(storeTemp) 238
+             239:          83 Load 85(g_tTex1di1)
+             240:      6(int) Load 229(coordTemp)
+             241:      6(int) Load 232(storeTemp)
+                              ImageWrite 239 240 241
+             243:     62(ptr) AccessChain 61 53
+             244:      6(int) Load 243
+                              Store 242(coordTemp) 244
+             246:          83 Load 85(g_tTex1di1)
+             247:      6(int) Load 242(coordTemp)
+             248:   58(ivec4) ImageRead 246 247
+             249:      6(int) CompositeExtract 248 0
+                              Store 245(storeTemp) 249
+             250:      6(int) Load 245(storeTemp)
+             251:      6(int) SMod 250 135
+                              Store 245(storeTemp) 251
+             252:          83 Load 85(g_tTex1di1)
+             253:      6(int) Load 242(coordTemp)
+             254:      6(int) Load 245(storeTemp)
+                              ImageWrite 252 253 254
+             256:     62(ptr) AccessChain 61 53
+             257:      6(int) Load 256
+                              Store 255(coordTemp) 257
+             259:          83 Load 85(g_tTex1di1)
+             260:      6(int) Load 255(coordTemp)
+             261:   58(ivec4) ImageRead 259 260
+             262:      6(int) CompositeExtract 261 0
+                              Store 258(storeTemp) 262
+             264:      6(int) Load 258(storeTemp)
+             265:      6(int) BitwiseAnd 264 263
+                              Store 258(storeTemp) 265
+             266:          83 Load 85(g_tTex1di1)
+             267:      6(int) Load 255(coordTemp)
+             268:      6(int) Load 258(storeTemp)
+                              ImageWrite 266 267 268
+             270:     62(ptr) AccessChain 61 53
+             271:      6(int) Load 270
+                              Store 269(coordTemp) 271
+             273:          83 Load 85(g_tTex1di1)
+             274:      6(int) Load 269(coordTemp)
+             275:   58(ivec4) ImageRead 273 274
+             276:      6(int) CompositeExtract 275 0
+                              Store 272(storeTemp) 276
+             278:      6(int) Load 272(storeTemp)
+             279:      6(int) BitwiseOr 278 277
+                              Store 272(storeTemp) 279
+             280:          83 Load 85(g_tTex1di1)
+             281:      6(int) Load 269(coordTemp)
+             282:      6(int) Load 272(storeTemp)
+                              ImageWrite 280 281 282
+             284:     62(ptr) AccessChain 61 53
+             285:      6(int) Load 284
+                              Store 283(coordTemp) 285
+             287:          83 Load 85(g_tTex1di1)
+             288:      6(int) Load 283(coordTemp)
+             289:   58(ivec4) ImageRead 287 288
+             290:      6(int) CompositeExtract 289 0
+                              Store 286(storeTemp) 290
+             291:      6(int) Load 286(storeTemp)
+             292:      6(int) ShiftLeftLogical 291 135
+                              Store 286(storeTemp) 292
+             293:          83 Load 85(g_tTex1di1)
+             294:      6(int) Load 283(coordTemp)
+             295:      6(int) Load 286(storeTemp)
+                              ImageWrite 293 294 295
+             297:     62(ptr) AccessChain 61 53
+             298:      6(int) Load 297
+                              Store 296(coordTemp) 298
+             300:          83 Load 85(g_tTex1di1)
+             301:      6(int) Load 296(coordTemp)
+             302:   58(ivec4) ImageRead 300 301
+             303:      6(int) CompositeExtract 302 0
+                              Store 299(storeTemp) 303
              304:      6(int) Load 299(storeTemp)
-                              ImageWrite 301 303 304
-                              Store 305(storeTemp) 306
-             307:         115 Load 117(g_tTex2du1)
-             308:    102(ptr) AccessChain 61 101
-             309:   56(ivec2) Load 308
-             310:     12(int) Load 305(storeTemp)
-                              ImageWrite 307 309 310
-             312:   18(float) FunctionCall 37(SomeValue()
-                              Store 311(storeTemp) 312
-             313:         123 Load 125(g_tTex3df1)
-             314:    128(ptr) AccessChain 61 127
-             315:   57(ivec3) Load 314
-             316:   18(float) Load 311(storeTemp)
-                              ImageWrite 313 315 316
-             317:         123 Load 125(g_tTex3df1)
-             318:    128(ptr) AccessChain 61 127
-             319:   57(ivec3) Load 318
-             320:   18(float) Load 148(lf1)
-                              ImageWrite 317 319 320
-                              Store 321(storeTemp) 149
-             322:         133 Load 135(g_tTex3di1)
-             323:    128(ptr) AccessChain 61 127
-             324:   57(ivec3) Load 323
-             325:      6(int) Load 321(storeTemp)
-                              ImageWrite 322 324 325
-                              Store 326(storeTemp) 327
-             328:         141 Load 143(g_tTex3du1)
-             329:    128(ptr) AccessChain 61 127
-             330:   57(ivec3) Load 329
-             331:     12(int) Load 326(storeTemp)
-                              ImageWrite 328 330 331
-             332:          68 Load 70(g_tTex1df1)
-             333:     62(ptr) AccessChain 61 53
-             334:      6(int) Load 333
-             335:   18(float) ImageRead 332 334
-                              Store 336(param) 335
-             337:   18(float) FunctionCall 22(Fn1(f1;) 336(param)
-             338:          81 Load 83(g_tTex1di1)
-             339:     62(ptr) AccessChain 61 53
-             340:      6(int) Load 339
-             341:      6(int) ImageRead 338 340
-                              Store 342(param) 341
-             343:      6(int) FunctionCall 10(Fn1(i1;) 342(param)
-             344:          89 Load 91(g_tTex1du1)
-             345:     62(ptr) AccessChain 61 53
-             346:      6(int) Load 345
-             347:     12(int) ImageRead 344 346
-                              Store 348(param) 347
-             349:     12(int) FunctionCall 16(Fn1(u1;) 348(param)
-             352:           2 FunctionCall 34(Fn2(f1;) 351(param)
-             353:   18(float) Load 351(param)
-                              Store 350(tempArg) 353
-             354:          68 Load 70(g_tTex1df1)
-             355:     62(ptr) AccessChain 61 53
-             356:      6(int) Load 355
-             357:   18(float) Load 350(tempArg)
-                              ImageWrite 354 356 357
-             360:           2 FunctionCall 26(Fn2(i1;) 359(param)
-             361:      6(int) Load 359(param)
-                              Store 358(tempArg) 361
-             362:          81 Load 83(g_tTex1di1)
-             363:     62(ptr) AccessChain 61 53
-             364:      6(int) Load 363
-             365:      6(int) Load 358(tempArg)
-                              ImageWrite 362 364 365
-             368:           2 FunctionCall 30(Fn2(u1;) 367(param)
-             369:     12(int) Load 367(param)
-                              Store 366(tempArg) 369
-             370:          89 Load 91(g_tTex1du1)
-             371:     62(ptr) AccessChain 61 53
-             372:      6(int) Load 371
-             373:     12(int) Load 366(tempArg)
-                              ImageWrite 370 372 373
-             375:     62(ptr) AccessChain 61 53
-             376:      6(int) Load 375
-                              Store 374(coordTemp) 376
-             378:          68 Load 70(g_tTex1df1)
-             379:      6(int) Load 374(coordTemp)
-             380:   18(float) ImageRead 378 379
-                              Store 377(storeTemp) 380
-             381:   18(float) Load 377(storeTemp)
-             383:   18(float) FAdd 381 382
-                              Store 377(storeTemp) 383
-             384:          68 Load 70(g_tTex1df1)
-             385:      6(int) Load 374(coordTemp)
-             386:   18(float) Load 377(storeTemp)
-                              ImageWrite 384 385 386
-             388:     62(ptr) AccessChain 61 53
-             389:      6(int) Load 388
-                              Store 387(coordTemp) 389
-             391:          81 Load 83(g_tTex1di1)
-             392:      6(int) Load 387(coordTemp)
-             393:      6(int) ImageRead 391 392
-                              Store 390(storeTemp) 393
-             394:      6(int) Load 390(storeTemp)
-             395:      6(int) IAdd 394 101
-                              Store 390(storeTemp) 395
-             396:          81 Load 83(g_tTex1di1)
-             397:      6(int) Load 387(coordTemp)
-             398:      6(int) Load 390(storeTemp)
-                              ImageWrite 396 397 398
-             400:     62(ptr) AccessChain 61 53
-             401:      6(int) Load 400
-                              Store 399(coordTemp) 401
-             403:          89 Load 91(g_tTex1du1)
-             404:      6(int) Load 399(coordTemp)
-             405:     12(int) ImageRead 403 404
-                              Store 402(storeTemp) 405
-             406:     12(int) Load 402(storeTemp)
-             407:     12(int) IAdd 406 101
-                              Store 402(storeTemp) 407
-             408:          89 Load 91(g_tTex1du1)
-             409:      6(int) Load 399(coordTemp)
-             410:     12(int) Load 402(storeTemp)
+             305:      6(int) ShiftRightArithmetic 304 135
+                              Store 299(storeTemp) 305
+             306:          83 Load 85(g_tTex1di1)
+             307:      6(int) Load 296(coordTemp)
+             308:      6(int) Load 299(storeTemp)
+                              ImageWrite 306 307 308
+             310:   18(float) FunctionCall 37(SomeValue()
+                              Store 309(storeTemp) 310
+             311:         102 Load 104(g_tTex2df1)
+             312:    107(ptr) AccessChain 61 106
+             313:   56(ivec2) Load 312
+             314:   18(float) Load 309(storeTemp)
+                              ImageWrite 311 313 314
+             315:         102 Load 104(g_tTex2df1)
+             316:    107(ptr) AccessChain 61 106
+             317:   56(ivec2) Load 316
+             318:   18(float) Load 159(lf1)
+                              ImageWrite 315 317 318
+                              Store 319(storeTemp) 320
+             321:         113 Load 115(g_tTex2di1)
+             322:    107(ptr) AccessChain 61 106
+             323:   56(ivec2) Load 322
+             324:      6(int) Load 319(storeTemp)
+                              ImageWrite 321 323 324
+                              Store 325(storeTemp) 326
+             327:         122 Load 124(g_tTex2du1)
+             328:    107(ptr) AccessChain 61 106
+             329:   56(ivec2) Load 328
+             330:     12(int) Load 325(storeTemp)
+                              ImageWrite 327 329 330
+             332:   18(float) FunctionCall 37(SomeValue()
+                              Store 331(storeTemp) 332
+             333:         131 Load 133(g_tTex3df1)
+             334:    136(ptr) AccessChain 61 135
+             335:   57(ivec3) Load 334
+             336:   18(float) Load 331(storeTemp)
+                              ImageWrite 333 335 336
+             337:         131 Load 133(g_tTex3df1)
+             338:    136(ptr) AccessChain 61 135
+             339:   57(ivec3) Load 338
+             340:   18(float) Load 159(lf1)
+                              ImageWrite 337 339 340
+                              Store 341(storeTemp) 160
+             342:         142 Load 144(g_tTex3di1)
+             343:    136(ptr) AccessChain 61 135
+             344:   57(ivec3) Load 343
+             345:      6(int) Load 341(storeTemp)
+                              ImageWrite 342 344 345
+                              Store 346(storeTemp) 347
+             348:         151 Load 153(g_tTex3du1)
+             349:    136(ptr) AccessChain 61 135
+             350:   57(ivec3) Load 349
+             351:     12(int) Load 346(storeTemp)
+                              ImageWrite 348 350 351
+             352:          68 Load 70(g_tTex1df1)
+             353:     62(ptr) AccessChain 61 53
+             354:      6(int) Load 353
+             355:   39(fvec4) ImageRead 352 354
+             356:   18(float) CompositeExtract 355 0
+                              Store 357(param) 356
+             358:   18(float) FunctionCall 22(Fn1(f1;) 357(param)
+             359:          83 Load 85(g_tTex1di1)
+             360:     62(ptr) AccessChain 61 53
+             361:      6(int) Load 360
+             362:   58(ivec4) ImageRead 359 361
+             363:      6(int) CompositeExtract 362 0
+                              Store 364(param) 363
+             365:      6(int) FunctionCall 10(Fn1(i1;) 364(param)
+             366:          92 Load 94(g_tTex1du1)
+             367:     62(ptr) AccessChain 61 53
+             368:      6(int) Load 367
+             369:   98(ivec4) ImageRead 366 368
+             370:     12(int) CompositeExtract 369 0
+                              Store 371(param) 370
+             372:     12(int) FunctionCall 16(Fn1(u1;) 371(param)
+             375:           2 FunctionCall 34(Fn2(f1;) 374(param)
+             376:   18(float) Load 374(param)
+                              Store 373(tempArg) 376
+             377:          68 Load 70(g_tTex1df1)
+             378:     62(ptr) AccessChain 61 53
+             379:      6(int) Load 378
+             380:   18(float) Load 373(tempArg)
+                              ImageWrite 377 379 380
+             383:           2 FunctionCall 26(Fn2(i1;) 382(param)
+             384:      6(int) Load 382(param)
+                              Store 381(tempArg) 384
+             385:          83 Load 85(g_tTex1di1)
+             386:     62(ptr) AccessChain 61 53
+             387:      6(int) Load 386
+             388:      6(int) Load 381(tempArg)
+                              ImageWrite 385 387 388
+             391:           2 FunctionCall 30(Fn2(u1;) 390(param)
+             392:     12(int) Load 390(param)
+                              Store 389(tempArg) 392
+             393:          92 Load 94(g_tTex1du1)
+             394:     62(ptr) AccessChain 61 53
+             395:      6(int) Load 394
+             396:     12(int) Load 389(tempArg)
+                              ImageWrite 393 395 396
+             398:     62(ptr) AccessChain 61 53
+             399:      6(int) Load 398
+                              Store 397(coordTemp) 399
+             401:          68 Load 70(g_tTex1df1)
+             402:      6(int) Load 397(coordTemp)
+             403:   39(fvec4) ImageRead 401 402
+             404:   18(float) CompositeExtract 403 0
+                              Store 400(storeTemp) 404
+             405:   18(float) Load 400(storeTemp)
+             407:   18(float) FAdd 405 406
+                              Store 400(storeTemp) 407
+             408:          68 Load 70(g_tTex1df1)
+             409:      6(int) Load 397(coordTemp)
+             410:   18(float) Load 400(storeTemp)
                               ImageWrite 408 409 410
              412:     62(ptr) AccessChain 61 53
              413:      6(int) Load 412
                               Store 411(coordTemp) 413
-             415:          68 Load 70(g_tTex1df1)
+             415:          83 Load 85(g_tTex1di1)
              416:      6(int) Load 411(coordTemp)
-             417:   18(float) ImageRead 415 416
-                              Store 414(storeTemp) 417
-             418:   18(float) Load 414(storeTemp)
-             419:   18(float) FSub 418 382
-                              Store 414(storeTemp) 419
-             420:          68 Load 70(g_tTex1df1)
-             421:      6(int) Load 411(coordTemp)
-             422:   18(float) Load 414(storeTemp)
-                              ImageWrite 420 421 422
-             424:     62(ptr) AccessChain 61 53
-             425:      6(int) Load 424
-                              Store 423(coordTemp) 425
-             427:          81 Load 83(g_tTex1di1)
-             428:      6(int) Load 423(coordTemp)
-             429:      6(int) ImageRead 427 428
-                              Store 426(storeTemp) 429
-             430:      6(int) Load 426(storeTemp)
-             431:      6(int) ISub 430 101
-                              Store 426(storeTemp) 431
-             432:          81 Load 83(g_tTex1di1)
-             433:      6(int) Load 423(coordTemp)
-             434:      6(int) Load 426(storeTemp)
-                              ImageWrite 432 433 434
-             436:     62(ptr) AccessChain 61 53
-             437:      6(int) Load 436
-                              Store 435(coordTemp) 437
-             439:          89 Load 91(g_tTex1du1)
-             440:      6(int) Load 435(coordTemp)
-             441:     12(int) ImageRead 439 440
-                              Store 438(storeTemp) 441
-             442:     12(int) Load 438(storeTemp)
-             443:     12(int) ISub 442 101
-                              Store 438(storeTemp) 443
-             444:          89 Load 91(g_tTex1du1)
-             445:      6(int) Load 435(coordTemp)
-             446:     12(int) Load 438(storeTemp)
-                              ImageWrite 444 445 446
-             448:     62(ptr) AccessChain 61 53
-             449:      6(int) Load 448
-                              Store 447(coordTemp) 449
-             451:          68 Load 70(g_tTex1df1)
-             452:      6(int) Load 447(coordTemp)
-             453:   18(float) ImageRead 451 452
-                              Store 450(storeTempPre) 453
-             455:   18(float) Load 450(storeTempPre)
-                              Store 454(storeTempPost) 455
-             456:   18(float) Load 454(storeTempPost)
-             457:   18(float) FAdd 456 382
-                              Store 454(storeTempPost) 457
-             458:          68 Load 70(g_tTex1df1)
-             459:      6(int) Load 447(coordTemp)
-             460:   18(float) Load 454(storeTempPost)
-                              ImageWrite 458 459 460
-             462:     62(ptr) AccessChain 61 53
-             463:      6(int) Load 462
-                              Store 461(coordTemp) 463
-             465:          89 Load 91(g_tTex1du1)
-             466:      6(int) Load 461(coordTemp)
-             467:     12(int) ImageRead 465 466
-                              Store 464(storeTempPre) 467
-             469:     12(int) Load 464(storeTempPre)
-                              Store 468(storeTempPost) 469
-             470:     12(int) Load 468(storeTempPost)
-             471:     12(int) ISub 470 101
-                              Store 468(storeTempPost) 471
-             472:          89 Load 91(g_tTex1du1)
-             473:      6(int) Load 461(coordTemp)
-             474:     12(int) Load 468(storeTempPost)
-                              ImageWrite 472 473 474
-             476:     62(ptr) AccessChain 61 53
-             477:      6(int) Load 476
-                              Store 475(coordTemp) 477
-             479:          81 Load 83(g_tTex1di1)
-             480:      6(int) Load 475(coordTemp)
-             481:      6(int) ImageRead 479 480
-                              Store 478(storeTempPre) 481
-             483:      6(int) Load 478(storeTempPre)
-                              Store 482(storeTempPost) 483
-             484:      6(int) Load 482(storeTempPost)
-             485:      6(int) IAdd 484 101
-                              Store 482(storeTempPost) 485
-             486:          81 Load 83(g_tTex1di1)
-             487:      6(int) Load 475(coordTemp)
-             488:      6(int) Load 482(storeTempPost)
-                              ImageWrite 486 487 488
-             490:     62(ptr) AccessChain 61 53
-             491:      6(int) Load 490
-                              Store 489(coordTemp) 491
-             493:          68 Load 70(g_tTex1df1)
-             494:      6(int) Load 489(coordTemp)
-             495:   18(float) ImageRead 493 494
-                              Store 492(storeTempPre) 495
-             497:   18(float) Load 492(storeTempPre)
-                              Store 496(storeTempPost) 497
-             498:   18(float) Load 496(storeTempPost)
-             499:   18(float) FSub 498 382
-                              Store 496(storeTempPost) 499
-             500:          68 Load 70(g_tTex1df1)
-             501:      6(int) Load 489(coordTemp)
-             502:   18(float) Load 496(storeTempPost)
-                              ImageWrite 500 501 502
-             504:     62(ptr) AccessChain 61 53
-             505:      6(int) Load 504
-                              Store 503(coordTemp) 505
-             507:          81 Load 83(g_tTex1di1)
-             508:      6(int) Load 503(coordTemp)
-             509:      6(int) ImageRead 507 508
-                              Store 506(storeTempPre) 509
-             511:      6(int) Load 506(storeTempPre)
-                              Store 510(storeTempPost) 511
-             512:      6(int) Load 510(storeTempPost)
-             513:      6(int) IAdd 512 101
-                              Store 510(storeTempPost) 513
-             514:          81 Load 83(g_tTex1di1)
-             515:      6(int) Load 503(coordTemp)
-             516:      6(int) Load 510(storeTempPost)
-                              ImageWrite 514 515 516
-             518:     62(ptr) AccessChain 61 53
-             519:      6(int) Load 518
-                              Store 517(coordTemp) 519
-             521:          89 Load 91(g_tTex1du1)
-             522:      6(int) Load 517(coordTemp)
-             523:     12(int) ImageRead 521 522
-                              Store 520(storeTempPre) 523
-             525:     12(int) Load 520(storeTempPre)
-                              Store 524(storeTempPost) 525
-             526:     12(int) Load 524(storeTempPost)
-             527:     12(int) ISub 526 101
-                              Store 524(storeTempPost) 527
-             528:          89 Load 91(g_tTex1du1)
-             529:      6(int) Load 517(coordTemp)
-             530:     12(int) Load 524(storeTempPost)
-                              ImageWrite 528 529 530
-             532:          97 Load 99(g_tTex2df1)
-             535:   18(float) ImageRead 532 534
-                              Store 531(storeTemp) 535
-             536:          68 Load 70(g_tTex1df1)
-             537:   18(float) Load 531(storeTemp)
-                              ImageWrite 536 101 537
-             542:    541(ptr) AccessChain 539(psout) 53
-                              Store 542 540
-             543:40(PS_OUTPUT) Load 539(psout)
-                              ReturnValue 543
+             417:   58(ivec4) ImageRead 415 416
+             418:      6(int) CompositeExtract 417 0
+                              Store 414(storeTemp) 418
+             419:      6(int) Load 414(storeTemp)
+             420:      6(int) IAdd 419 106
+                              Store 414(storeTemp) 420
+             421:          83 Load 85(g_tTex1di1)
+             422:      6(int) Load 411(coordTemp)
+             423:      6(int) Load 414(storeTemp)
+                              ImageWrite 421 422 423
+             425:     62(ptr) AccessChain 61 53
+             426:      6(int) Load 425
+                              Store 424(coordTemp) 426
+             428:          92 Load 94(g_tTex1du1)
+             429:      6(int) Load 424(coordTemp)
+             430:   98(ivec4) ImageRead 428 429
+             431:     12(int) CompositeExtract 430 0
+                              Store 427(storeTemp) 431
+             432:     12(int) Load 427(storeTemp)
+             433:     12(int) IAdd 432 106
+                              Store 427(storeTemp) 433
+             434:          92 Load 94(g_tTex1du1)
+             435:      6(int) Load 424(coordTemp)
+             436:     12(int) Load 427(storeTemp)
+                              ImageWrite 434 435 436
+             438:     62(ptr) AccessChain 61 53
+             439:      6(int) Load 438
+                              Store 437(coordTemp) 439
+             441:          68 Load 70(g_tTex1df1)
+             442:      6(int) Load 437(coordTemp)
+             443:   39(fvec4) ImageRead 441 442
+             444:   18(float) CompositeExtract 443 0
+                              Store 440(storeTemp) 444
+             445:   18(float) Load 440(storeTemp)
+             446:   18(float) FSub 445 406
+                              Store 440(storeTemp) 446
+             447:          68 Load 70(g_tTex1df1)
+             448:      6(int) Load 437(coordTemp)
+             449:   18(float) Load 440(storeTemp)
+                              ImageWrite 447 448 449
+             451:     62(ptr) AccessChain 61 53
+             452:      6(int) Load 451
+                              Store 450(coordTemp) 452
+             454:          83 Load 85(g_tTex1di1)
+             455:      6(int) Load 450(coordTemp)
+             456:   58(ivec4) ImageRead 454 455
+             457:      6(int) CompositeExtract 456 0
+                              Store 453(storeTemp) 457
+             458:      6(int) Load 453(storeTemp)
+             459:      6(int) ISub 458 106
+                              Store 453(storeTemp) 459
+             460:          83 Load 85(g_tTex1di1)
+             461:      6(int) Load 450(coordTemp)
+             462:      6(int) Load 453(storeTemp)
+                              ImageWrite 460 461 462
+             464:     62(ptr) AccessChain 61 53
+             465:      6(int) Load 464
+                              Store 463(coordTemp) 465
+             467:          92 Load 94(g_tTex1du1)
+             468:      6(int) Load 463(coordTemp)
+             469:   98(ivec4) ImageRead 467 468
+             470:     12(int) CompositeExtract 469 0
+                              Store 466(storeTemp) 470
+             471:     12(int) Load 466(storeTemp)
+             472:     12(int) ISub 471 106
+                              Store 466(storeTemp) 472
+             473:          92 Load 94(g_tTex1du1)
+             474:      6(int) Load 463(coordTemp)
+             475:     12(int) Load 466(storeTemp)
+                              ImageWrite 473 474 475
+             477:     62(ptr) AccessChain 61 53
+             478:      6(int) Load 477
+                              Store 476(coordTemp) 478
+             480:          68 Load 70(g_tTex1df1)
+             481:      6(int) Load 476(coordTemp)
+             482:   39(fvec4) ImageRead 480 481
+             483:   18(float) CompositeExtract 482 0
+                              Store 479(storeTempPre) 483
+             485:   18(float) Load 479(storeTempPre)
+                              Store 484(storeTempPost) 485
+             486:   18(float) Load 484(storeTempPost)
+             487:   18(float) FAdd 486 406
+                              Store 484(storeTempPost) 487
+             488:          68 Load 70(g_tTex1df1)
+             489:      6(int) Load 476(coordTemp)
+             490:   18(float) Load 484(storeTempPost)
+                              ImageWrite 488 489 490
+             492:     62(ptr) AccessChain 61 53
+             493:      6(int) Load 492
+                              Store 491(coordTemp) 493
+             495:          92 Load 94(g_tTex1du1)
+             496:      6(int) Load 491(coordTemp)
+             497:   98(ivec4) ImageRead 495 496
+             498:     12(int) CompositeExtract 497 0
+                              Store 494(storeTempPre) 498
+             500:     12(int) Load 494(storeTempPre)
+                              Store 499(storeTempPost) 500
+             501:     12(int) Load 499(storeTempPost)
+             502:     12(int) ISub 501 106
+                              Store 499(storeTempPost) 502
+             503:          92 Load 94(g_tTex1du1)
+             504:      6(int) Load 491(coordTemp)
+             505:     12(int) Load 499(storeTempPost)
+                              ImageWrite 503 504 505
+             507:     62(ptr) AccessChain 61 53
+             508:      6(int) Load 507
+                              Store 506(coordTemp) 508
+             510:          83 Load 85(g_tTex1di1)
+             511:      6(int) Load 506(coordTemp)
+             512:   58(ivec4) ImageRead 510 511
+             513:      6(int) CompositeExtract 512 0
+                              Store 509(storeTempPre) 513
+             515:      6(int) Load 509(storeTempPre)
+                              Store 514(storeTempPost) 515
+             516:      6(int) Load 514(storeTempPost)
+             517:      6(int) IAdd 516 106
+                              Store 514(storeTempPost) 517
+             518:          83 Load 85(g_tTex1di1)
+             519:      6(int) Load 506(coordTemp)
+             520:      6(int) Load 514(storeTempPost)
+                              ImageWrite 518 519 520
+             522:     62(ptr) AccessChain 61 53
+             523:      6(int) Load 522
+                              Store 521(coordTemp) 523
+             525:          68 Load 70(g_tTex1df1)
+             526:      6(int) Load 521(coordTemp)
+             527:   39(fvec4) ImageRead 525 526
+             528:   18(float) CompositeExtract 527 0
+                              Store 524(storeTempPre) 528
+             530:   18(float) Load 524(storeTempPre)
+                              Store 529(storeTempPost) 530
+             531:   18(float) Load 529(storeTempPost)
+             532:   18(float) FSub 531 406
+                              Store 529(storeTempPost) 532
+             533:          68 Load 70(g_tTex1df1)
+             534:      6(int) Load 521(coordTemp)
+             535:   18(float) Load 529(storeTempPost)
+                              ImageWrite 533 534 535
+             537:     62(ptr) AccessChain 61 53
+             538:      6(int) Load 537
+                              Store 536(coordTemp) 538
+             540:          83 Load 85(g_tTex1di1)
+             541:      6(int) Load 536(coordTemp)
+             542:   58(ivec4) ImageRead 540 541
+             543:      6(int) CompositeExtract 542 0
+                              Store 539(storeTempPre) 543
+             545:      6(int) Load 539(storeTempPre)
+                              Store 544(storeTempPost) 545
+             546:      6(int) Load 544(storeTempPost)
+             547:      6(int) IAdd 546 106
+                              Store 544(storeTempPost) 547
+             548:          83 Load 85(g_tTex1di1)
+             549:      6(int) Load 536(coordTemp)
+             550:      6(int) Load 544(storeTempPost)
+                              ImageWrite 548 549 550
+             552:     62(ptr) AccessChain 61 53
+             553:      6(int) Load 552
+                              Store 551(coordTemp) 553
+             555:          92 Load 94(g_tTex1du1)
+             556:      6(int) Load 551(coordTemp)
+             557:   98(ivec4) ImageRead 555 556
+             558:     12(int) CompositeExtract 557 0
+                              Store 554(storeTempPre) 558
+             560:     12(int) Load 554(storeTempPre)
+                              Store 559(storeTempPost) 560
+             561:     12(int) Load 559(storeTempPost)
+             562:     12(int) ISub 561 106
+                              Store 559(storeTempPost) 562
+             563:          92 Load 94(g_tTex1du1)
+             564:      6(int) Load 551(coordTemp)
+             565:     12(int) Load 559(storeTempPost)
+                              ImageWrite 563 564 565
+             567:         102 Load 104(g_tTex2df1)
+             570:   39(fvec4) ImageRead 567 569
+             571:   18(float) CompositeExtract 570 0
+                              Store 566(storeTemp) 571
+             572:          68 Load 70(g_tTex1df1)
+             573:   18(float) Load 566(storeTemp)
+                              ImageWrite 572 106 573
+             578:    577(ptr) AccessChain 575(psout) 53
+                              Store 578 576
+             579:40(PS_OUTPUT) Load 575(psout)
+                              ReturnValue 579
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.rw.swizzle.frag.out b/Test/baseResults/hlsl.rw.swizzle.frag.out
index 71a9e6c..97dd0dc 100644
--- a/Test/baseResults/hlsl.rw.swizzle.frag.out
+++ b/Test/baseResults/hlsl.rw.swizzle.frag.out
@@ -6,10 +6,10 @@
 0:4    Function Parameters: 
 0:?     Sequence
 0:4      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
+0:4        Constant:
+0:4          1.000000
+0:4          2.000000
+0:4          3.000000
 0:7  Function Definition: @main( ( temp 4-component vector of float)
 0:7    Function Parameters: 
 0:?     Sequence
@@ -35,10 +35,10 @@
 0:12                1 (const int)
 0:12              Constant:
 0:12                0 (const int)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
+0:12          Constant:
+0:12            1.000000
+0:12            2.000000
+0:12            3.000000
 0:12        imageStore ( temp void)
 0:12          'rwtx' (layout( rgba32f) uniform image2D)
 0:12          'tc2' ( temp 2-component vector of int)
@@ -109,10 +109,10 @@
 0:4    Function Parameters: 
 0:?     Sequence
 0:4      Branch: Return with expression
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
+0:4        Constant:
+0:4          1.000000
+0:4          2.000000
+0:4          3.000000
 0:7  Function Definition: @main( ( temp 4-component vector of float)
 0:7    Function Parameters: 
 0:?     Sequence
@@ -138,10 +138,10 @@
 0:12                1 (const int)
 0:12              Constant:
 0:12                0 (const int)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
+0:12          Constant:
+0:12            1.000000
+0:12            2.000000
+0:12            3.000000
 0:12        imageStore ( temp void)
 0:12          'rwtx' (layout( rgba32f) uniform image2D)
 0:12          'tc2' ( temp 2-component vector of int)
diff --git a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
index 68e40de..1f77a77 100644
--- a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
+++ b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
@@ -26,27 +26,27 @@
 0:?     Sequence
 0:46      move second child to first child ( temp 2-component vector of int)
 0:46        'x' ( out 2-component vector of int)
-0:?         Constant:
-0:?           0 (const int)
-0:?           0 (const int)
+0:46        Constant:
+0:46          0 (const int)
+0:46          0 (const int)
 0:47  Function Definition: Fn2(vu2; ( temp void)
 0:47    Function Parameters: 
 0:47      'x' ( out 2-component vector of uint)
 0:?     Sequence
 0:47      move second child to first child ( temp 2-component vector of uint)
 0:47        'x' ( out 2-component vector of uint)
-0:?         Constant:
-0:?           0 (const uint)
-0:?           0 (const uint)
+0:47        Constant:
+0:47          0 (const uint)
+0:47          0 (const uint)
 0:48  Function Definition: Fn2(vf2; ( temp void)
 0:48    Function Parameters: 
 0:48      'x' ( out 2-component vector of float)
 0:?     Sequence
 0:48      move second child to first child ( temp 2-component vector of float)
 0:48        'x' ( out 2-component vector of float)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
+0:48        Constant:
+0:48          0.000000
+0:48          0.000000
 0:50  Function Definition: SomeValue( ( temp 2-component vector of float)
 0:50    Function Parameters: 
 0:?     Sequence
@@ -177,9 +177,9 @@
 0:79      Sequence
 0:79        move second child to first child ( temp 2-component vector of int)
 0:79          'storeTemp' ( temp 2-component vector of int)
-0:?           Constant:
-0:?             2 (const int)
-0:?             2 (const int)
+0:79          Constant:
+0:79            2 (const int)
+0:79            2 (const int)
 0:79        imageStore ( temp void)
 0:79          'g_tTex1di2' (layout( rg32i) uniform iimage1D)
 0:79          c1: direct index for structure ( uniform int)
@@ -191,9 +191,9 @@
 0:80      Sequence
 0:80        move second child to first child ( temp 2-component vector of uint)
 0:80          'storeTemp' ( temp 2-component vector of uint)
-0:?           Constant:
-0:?             3 (const uint)
-0:?             2 (const uint)
+0:80          Constant:
+0:80            3 (const uint)
+0:80            2 (const uint)
 0:80        imageStore ( temp void)
 0:80          'g_tTex1du2' (layout( rg32ui) uniform uimage1D)
 0:80          c1: direct index for structure ( uniform int)
@@ -418,9 +418,9 @@
 0:97      Sequence
 0:97        move second child to first child ( temp 2-component vector of int)
 0:97          'storeTemp' ( temp 2-component vector of int)
-0:?           Constant:
-0:?             5 (const int)
-0:?             2 (const int)
+0:97          Constant:
+0:97            5 (const int)
+0:97            2 (const int)
 0:97        imageStore ( temp void)
 0:97          'g_tTex2di2' (layout( rg32i) uniform iimage2D)
 0:97          c2: direct index for structure ( uniform 2-component vector of int)
@@ -432,9 +432,9 @@
 0:98      Sequence
 0:98        move second child to first child ( temp 2-component vector of uint)
 0:98          'storeTemp' ( temp 2-component vector of uint)
-0:?           Constant:
-0:?             6 (const uint)
-0:?             2 (const uint)
+0:98          Constant:
+0:98            6 (const uint)
+0:98            2 (const uint)
 0:98        imageStore ( temp void)
 0:98          'g_tTex2du2' (layout( rg32ui) uniform uimage2D)
 0:98          c2: direct index for structure ( uniform 2-component vector of int)
@@ -467,9 +467,9 @@
 0:103      Sequence
 0:103        move second child to first child ( temp 2-component vector of int)
 0:103          'storeTemp' ( temp 2-component vector of int)
-0:?           Constant:
-0:?             8 (const int)
-0:?             6 (const int)
+0:103          Constant:
+0:103            8 (const int)
+0:103            6 (const int)
 0:103        imageStore ( temp void)
 0:103          'g_tTex3di2' (layout( rg32i) uniform iimage3D)
 0:103          c3: direct index for structure ( uniform 3-component vector of int)
@@ -481,9 +481,9 @@
 0:104      Sequence
 0:104        move second child to first child ( temp 2-component vector of uint)
 0:104          'storeTemp' ( temp 2-component vector of uint)
-0:?           Constant:
-0:?             9 (const uint)
-0:?             2 (const uint)
+0:104          Constant:
+0:104            9 (const uint)
+0:104            2 (const uint)
 0:104        imageStore ( temp void)
 0:104          'g_tTex3du2' (layout( rg32ui) uniform uimage3D)
 0:104          c3: direct index for structure ( uniform 3-component vector of int)
@@ -798,11 +798,11 @@
 0:135      Sequence
 0:135        move second child to first child ( temp 2-component vector of float)
 0:135          'storeTemp' ( temp 2-component vector of float)
-0:?           imageLoad ( temp 2-component vector of float)
+0:135          imageLoad ( temp 2-component vector of float)
 0:135            'g_tTex2df2' (layout( rg32f) uniform image2D)
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:135            Constant:
+0:135              2 (const int)
+0:135              3 (const int)
 0:135        imageStore ( temp void)
 0:135          'g_tTex1df2' (layout( rg32f) uniform image1D)
 0:135          Constant:
@@ -882,27 +882,27 @@
 0:?     Sequence
 0:46      move second child to first child ( temp 2-component vector of int)
 0:46        'x' ( out 2-component vector of int)
-0:?         Constant:
-0:?           0 (const int)
-0:?           0 (const int)
+0:46        Constant:
+0:46          0 (const int)
+0:46          0 (const int)
 0:47  Function Definition: Fn2(vu2; ( temp void)
 0:47    Function Parameters: 
 0:47      'x' ( out 2-component vector of uint)
 0:?     Sequence
 0:47      move second child to first child ( temp 2-component vector of uint)
 0:47        'x' ( out 2-component vector of uint)
-0:?         Constant:
-0:?           0 (const uint)
-0:?           0 (const uint)
+0:47        Constant:
+0:47          0 (const uint)
+0:47          0 (const uint)
 0:48  Function Definition: Fn2(vf2; ( temp void)
 0:48    Function Parameters: 
 0:48      'x' ( out 2-component vector of float)
 0:?     Sequence
 0:48      move second child to first child ( temp 2-component vector of float)
 0:48        'x' ( out 2-component vector of float)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
+0:48        Constant:
+0:48          0.000000
+0:48          0.000000
 0:50  Function Definition: SomeValue( ( temp 2-component vector of float)
 0:50    Function Parameters: 
 0:?     Sequence
@@ -1033,9 +1033,9 @@
 0:79      Sequence
 0:79        move second child to first child ( temp 2-component vector of int)
 0:79          'storeTemp' ( temp 2-component vector of int)
-0:?           Constant:
-0:?             2 (const int)
-0:?             2 (const int)
+0:79          Constant:
+0:79            2 (const int)
+0:79            2 (const int)
 0:79        imageStore ( temp void)
 0:79          'g_tTex1di2' (layout( rg32i) uniform iimage1D)
 0:79          c1: direct index for structure ( uniform int)
@@ -1047,9 +1047,9 @@
 0:80      Sequence
 0:80        move second child to first child ( temp 2-component vector of uint)
 0:80          'storeTemp' ( temp 2-component vector of uint)
-0:?           Constant:
-0:?             3 (const uint)
-0:?             2 (const uint)
+0:80          Constant:
+0:80            3 (const uint)
+0:80            2 (const uint)
 0:80        imageStore ( temp void)
 0:80          'g_tTex1du2' (layout( rg32ui) uniform uimage1D)
 0:80          c1: direct index for structure ( uniform int)
@@ -1274,9 +1274,9 @@
 0:97      Sequence
 0:97        move second child to first child ( temp 2-component vector of int)
 0:97          'storeTemp' ( temp 2-component vector of int)
-0:?           Constant:
-0:?             5 (const int)
-0:?             2 (const int)
+0:97          Constant:
+0:97            5 (const int)
+0:97            2 (const int)
 0:97        imageStore ( temp void)
 0:97          'g_tTex2di2' (layout( rg32i) uniform iimage2D)
 0:97          c2: direct index for structure ( uniform 2-component vector of int)
@@ -1288,9 +1288,9 @@
 0:98      Sequence
 0:98        move second child to first child ( temp 2-component vector of uint)
 0:98          'storeTemp' ( temp 2-component vector of uint)
-0:?           Constant:
-0:?             6 (const uint)
-0:?             2 (const uint)
+0:98          Constant:
+0:98            6 (const uint)
+0:98            2 (const uint)
 0:98        imageStore ( temp void)
 0:98          'g_tTex2du2' (layout( rg32ui) uniform uimage2D)
 0:98          c2: direct index for structure ( uniform 2-component vector of int)
@@ -1323,9 +1323,9 @@
 0:103      Sequence
 0:103        move second child to first child ( temp 2-component vector of int)
 0:103          'storeTemp' ( temp 2-component vector of int)
-0:?           Constant:
-0:?             8 (const int)
-0:?             6 (const int)
+0:103          Constant:
+0:103            8 (const int)
+0:103            6 (const int)
 0:103        imageStore ( temp void)
 0:103          'g_tTex3di2' (layout( rg32i) uniform iimage3D)
 0:103          c3: direct index for structure ( uniform 3-component vector of int)
@@ -1337,9 +1337,9 @@
 0:104      Sequence
 0:104        move second child to first child ( temp 2-component vector of uint)
 0:104          'storeTemp' ( temp 2-component vector of uint)
-0:?           Constant:
-0:?             9 (const uint)
-0:?             2 (const uint)
+0:104          Constant:
+0:104            9 (const uint)
+0:104            2 (const uint)
 0:104        imageStore ( temp void)
 0:104          'g_tTex3du2' (layout( rg32ui) uniform uimage3D)
 0:104          c3: direct index for structure ( uniform 3-component vector of int)
@@ -1654,11 +1654,11 @@
 0:135      Sequence
 0:135        move second child to first child ( temp 2-component vector of float)
 0:135          'storeTemp' ( temp 2-component vector of float)
-0:?           imageLoad ( temp 2-component vector of float)
+0:135          imageLoad ( temp 2-component vector of float)
 0:135            'g_tTex2df2' (layout( rg32f) uniform image2D)
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:135            Constant:
+0:135              2 (const int)
+0:135              3 (const int)
 0:135        imageStore ( temp void)
 0:135          'g_tTex1df2' (layout( rg32f) uniform image1D)
 0:135          Constant:
@@ -1707,17 +1707,16 @@
 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
+// Id's are bound by 711
 
                               Capability Shader
                               Capability Image1D
                               Capability StorageImageExtendedFormats
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 581
+                              EntryPoint Fragment 4  "main" 687
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "main"
@@ -1751,101 +1750,101 @@
                               MemberName 64($Global) 10  "uu2"
                               Name 66  ""
                               Name 76  "g_tTex1df2"
-                              Name 82  "r00"
-                              Name 87  "r01"
-                              Name 90  "g_tTex1di2"
-                              Name 95  "r02"
-                              Name 98  "g_tTex1du2"
-                              Name 103  "r10"
-                              Name 106  "g_tTex2df2"
-                              Name 111  "r11"
-                              Name 114  "g_tTex2di2"
-                              Name 119  "r12"
-                              Name 122  "g_tTex2du2"
-                              Name 127  "r20"
-                              Name 130  "g_tTex3df2"
-                              Name 137  "r21"
-                              Name 140  "g_tTex3di2"
-                              Name 145  "r22"
-                              Name 148  "g_tTex3du2"
-                              Name 153  "lf2"
-                              Name 158  "storeTemp"
-                              Name 168  "storeTemp"
-                              Name 174  "storeTemp"
-                              Name 182  "val1"
-                              Name 184  "coordTemp"
-                              Name 187  "storeTemp"
-                              Name 198  "coordTemp"
-                              Name 201  "storeTemp"
-                              Name 212  "coordTemp"
-                              Name 215  "storeTemp"
-                              Name 226  "coordTemp"
-                              Name 229  "storeTemp"
-                              Name 239  "coordTemp"
-                              Name 242  "storeTemp"
-                              Name 252  "coordTemp"
-                              Name 255  "storeTemp"
+                              Name 85  "r00"
+                              Name 93  "r01"
+                              Name 96  "g_tTex1di2"
+                              Name 104  "r02"
+                              Name 107  "g_tTex1du2"
+                              Name 116  "r10"
+                              Name 119  "g_tTex2df2"
+                              Name 127  "r11"
+                              Name 130  "g_tTex2di2"
+                              Name 138  "r12"
+                              Name 141  "g_tTex2du2"
+                              Name 149  "r20"
+                              Name 152  "g_tTex3df2"
+                              Name 162  "r21"
+                              Name 165  "g_tTex3di2"
+                              Name 173  "r22"
+                              Name 176  "g_tTex3du2"
+                              Name 184  "lf2"
+                              Name 189  "storeTemp"
+                              Name 199  "storeTemp"
+                              Name 205  "storeTemp"
+                              Name 213  "val1"
+                              Name 215  "coordTemp"
+                              Name 218  "storeTemp"
+                              Name 232  "coordTemp"
+                              Name 235  "storeTemp"
+                              Name 249  "coordTemp"
+                              Name 252  "storeTemp"
                               Name 266  "coordTemp"
                               Name 269  "storeTemp"
-                              Name 280  "coordTemp"
-                              Name 283  "storeTemp"
-                              Name 293  "coordTemp"
-                              Name 296  "storeTemp"
-                              Name 306  "storeTemp"
-                              Name 316  "storeTemp"
-                              Name 323  "storeTemp"
-                              Name 330  "storeTemp"
-                              Name 340  "storeTemp"
-                              Name 347  "storeTemp"
-                              Name 358  "param"
-                              Name 364  "param"
-                              Name 370  "param"
-                              Name 372  "tempArg"
-                              Name 373  "param"
-                              Name 380  "tempArg"
-                              Name 381  "param"
-                              Name 388  "tempArg"
-                              Name 389  "param"
-                              Name 396  "coordTemp"
-                              Name 399  "storeTemp"
-                              Name 410  "coordTemp"
-                              Name 413  "storeTemp"
-                              Name 423  "coordTemp"
-                              Name 426  "storeTemp"
-                              Name 436  "coordTemp"
-                              Name 439  "storeTemp"
-                              Name 449  "coordTemp"
-                              Name 452  "storeTemp"
-                              Name 462  "coordTemp"
-                              Name 465  "storeTemp"
-                              Name 475  "coordTemp"
-                              Name 478  "storeTempPre"
-                              Name 482  "storeTempPost"
-                              Name 490  "coordTemp"
-                              Name 493  "storeTempPre"
-                              Name 497  "storeTempPost"
-                              Name 505  "coordTemp"
-                              Name 508  "storeTempPre"
-                              Name 512  "storeTempPost"
-                              Name 520  "coordTemp"
-                              Name 523  "storeTempPre"
-                              Name 527  "storeTempPost"
-                              Name 535  "coordTemp"
-                              Name 538  "storeTempPre"
-                              Name 542  "storeTempPost"
-                              Name 550  "coordTemp"
-                              Name 553  "storeTempPre"
-                              Name 557  "storeTempPost"
-                              Name 565  "storeTemp"
-                              Name 573  "psout"
-                              Name 581  "@entryPointOutput.Color"
-                              Name 586  "g_sSamp"
-                              Name 589  "g_tTex1df2a"
-                              Name 592  "g_tTex1di2a"
-                              Name 595  "g_tTex1du2a"
-                              Name 598  "g_tTex2df2a"
-                              Name 601  "g_tTex2di2a"
-                              Name 604  "g_tTex2du2a"
+                              Name 282  "coordTemp"
+                              Name 285  "storeTemp"
+                              Name 298  "coordTemp"
+                              Name 301  "storeTemp"
+                              Name 315  "coordTemp"
+                              Name 318  "storeTemp"
+                              Name 332  "coordTemp"
+                              Name 335  "storeTemp"
+                              Name 348  "coordTemp"
+                              Name 351  "storeTemp"
+                              Name 364  "storeTemp"
+                              Name 374  "storeTemp"
+                              Name 381  "storeTemp"
+                              Name 388  "storeTemp"
+                              Name 398  "storeTemp"
+                              Name 405  "storeTemp"
+                              Name 419  "param"
+                              Name 428  "param"
+                              Name 437  "param"
+                              Name 439  "tempArg"
+                              Name 440  "param"
+                              Name 447  "tempArg"
+                              Name 448  "param"
+                              Name 455  "tempArg"
+                              Name 456  "param"
+                              Name 463  "coordTemp"
+                              Name 466  "storeTemp"
+                              Name 480  "coordTemp"
+                              Name 483  "storeTemp"
+                              Name 496  "coordTemp"
+                              Name 499  "storeTemp"
+                              Name 512  "coordTemp"
+                              Name 515  "storeTemp"
+                              Name 528  "coordTemp"
+                              Name 531  "storeTemp"
+                              Name 544  "coordTemp"
+                              Name 547  "storeTemp"
+                              Name 560  "coordTemp"
+                              Name 563  "storeTempPre"
+                              Name 570  "storeTempPost"
+                              Name 578  "coordTemp"
+                              Name 581  "storeTempPre"
+                              Name 588  "storeTempPost"
+                              Name 596  "coordTemp"
+                              Name 599  "storeTempPre"
+                              Name 606  "storeTempPost"
+                              Name 614  "coordTemp"
+                              Name 617  "storeTempPre"
+                              Name 624  "storeTempPost"
+                              Name 632  "coordTemp"
+                              Name 635  "storeTempPre"
+                              Name 642  "storeTempPost"
+                              Name 650  "coordTemp"
+                              Name 653  "storeTempPre"
+                              Name 660  "storeTempPost"
+                              Name 668  "storeTemp"
+                              Name 679  "psout"
+                              Name 687  "@entryPointOutput.Color"
+                              Name 692  "g_sSamp"
+                              Name 695  "g_tTex1df2a"
+                              Name 698  "g_tTex1di2a"
+                              Name 701  "g_tTex1du2a"
+                              Name 704  "g_tTex2df2a"
+                              Name 707  "g_tTex2di2a"
+                              Name 710  "g_tTex2du2a"
                               MemberDecorate 64($Global) 0 Offset 0
                               MemberDecorate 64($Global) 1 Offset 8
                               MemberDecorate 64($Global) 2 Offset 16
@@ -1862,37 +1861,37 @@
                               Decorate 66 Binding 10
                               Decorate 76(g_tTex1df2) DescriptorSet 0
                               Decorate 76(g_tTex1df2) Binding 1
-                              Decorate 90(g_tTex1di2) DescriptorSet 0
-                              Decorate 90(g_tTex1di2) Binding 2
-                              Decorate 98(g_tTex1du2) DescriptorSet 0
-                              Decorate 98(g_tTex1du2) Binding 3
-                              Decorate 106(g_tTex2df2) DescriptorSet 0
-                              Decorate 106(g_tTex2df2) Binding 4
-                              Decorate 114(g_tTex2di2) DescriptorSet 0
-                              Decorate 114(g_tTex2di2) Binding 5
-                              Decorate 122(g_tTex2du2) DescriptorSet 0
-                              Decorate 122(g_tTex2du2) Binding 6
-                              Decorate 130(g_tTex3df2) DescriptorSet 0
-                              Decorate 130(g_tTex3df2) Binding 7
-                              Decorate 140(g_tTex3di2) DescriptorSet 0
-                              Decorate 140(g_tTex3di2) Binding 8
-                              Decorate 148(g_tTex3du2) DescriptorSet 0
-                              Decorate 148(g_tTex3du2) Binding 9
-                              Decorate 581(@entryPointOutput.Color) Location 0
-                              Decorate 586(g_sSamp) DescriptorSet 0
-                              Decorate 586(g_sSamp) Binding 0
-                              Decorate 589(g_tTex1df2a) DescriptorSet 0
-                              Decorate 589(g_tTex1df2a) Binding 0
-                              Decorate 592(g_tTex1di2a) DescriptorSet 0
-                              Decorate 592(g_tTex1di2a) Binding 0
-                              Decorate 595(g_tTex1du2a) DescriptorSet 0
-                              Decorate 595(g_tTex1du2a) Binding 0
-                              Decorate 598(g_tTex2df2a) DescriptorSet 0
-                              Decorate 598(g_tTex2df2a) Binding 0
-                              Decorate 601(g_tTex2di2a) DescriptorSet 0
-                              Decorate 601(g_tTex2di2a) Binding 0
-                              Decorate 604(g_tTex2du2a) DescriptorSet 0
-                              Decorate 604(g_tTex2du2a) Binding 0
+                              Decorate 96(g_tTex1di2) DescriptorSet 0
+                              Decorate 96(g_tTex1di2) Binding 2
+                              Decorate 107(g_tTex1du2) DescriptorSet 0
+                              Decorate 107(g_tTex1du2) Binding 3
+                              Decorate 119(g_tTex2df2) DescriptorSet 0
+                              Decorate 119(g_tTex2df2) Binding 4
+                              Decorate 130(g_tTex2di2) DescriptorSet 0
+                              Decorate 130(g_tTex2di2) Binding 5
+                              Decorate 141(g_tTex2du2) DescriptorSet 0
+                              Decorate 141(g_tTex2du2) Binding 6
+                              Decorate 152(g_tTex3df2) DescriptorSet 0
+                              Decorate 152(g_tTex3df2) Binding 7
+                              Decorate 165(g_tTex3di2) DescriptorSet 0
+                              Decorate 165(g_tTex3di2) Binding 8
+                              Decorate 176(g_tTex3du2) DescriptorSet 0
+                              Decorate 176(g_tTex3du2) Binding 9
+                              Decorate 687(@entryPointOutput.Color) Location 0
+                              Decorate 692(g_sSamp) DescriptorSet 0
+                              Decorate 692(g_sSamp) Binding 0
+                              Decorate 695(g_tTex1df2a) DescriptorSet 0
+                              Decorate 695(g_tTex1df2a) Binding 0
+                              Decorate 698(g_tTex1di2a) DescriptorSet 0
+                              Decorate 698(g_tTex1di2a) Binding 0
+                              Decorate 701(g_tTex1du2a) DescriptorSet 0
+                              Decorate 701(g_tTex1du2a) Binding 0
+                              Decorate 704(g_tTex2df2a) DescriptorSet 0
+                              Decorate 704(g_tTex2df2a) Binding 0
+                              Decorate 707(g_tTex2di2a) DescriptorSet 0
+                              Decorate 707(g_tTex2di2a) Binding 0
+                              Decorate 710(g_tTex2du2a) DescriptorSet 0
+                              Decorate 710(g_tTex2du2a) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
@@ -1931,86 +1930,87 @@
               75:             TypePointer UniformConstant 74
   76(g_tTex1df2):     75(ptr) Variable UniformConstant
               78:             TypePointer Uniform 6(int)
-              88:             TypeImage 6(int) 1D nonsampled format:Rg32i
-              89:             TypePointer UniformConstant 88
-  90(g_tTex1di2):     89(ptr) Variable UniformConstant
-              96:             TypeImage 13(int) 1D nonsampled format:Rg32ui
-              97:             TypePointer UniformConstant 96
-  98(g_tTex1du2):     97(ptr) Variable UniformConstant
-             104:             TypeImage 20(float) 2D nonsampled format:Rg32f
-             105:             TypePointer UniformConstant 104
- 106(g_tTex2df2):    105(ptr) Variable UniformConstant
-             112:             TypeImage 6(int) 2D nonsampled format:Rg32i
-             113:             TypePointer UniformConstant 112
- 114(g_tTex2di2):    113(ptr) Variable UniformConstant
-             120:             TypeImage 13(int) 2D nonsampled format:Rg32ui
-             121:             TypePointer UniformConstant 120
- 122(g_tTex2du2):    121(ptr) Variable UniformConstant
-             128:             TypeImage 20(float) 3D nonsampled format:Rg32f
+              94:             TypeImage 6(int) 1D nonsampled format:Rg32i
+              95:             TypePointer UniformConstant 94
+  96(g_tTex1di2):     95(ptr) Variable UniformConstant
+             105:             TypeImage 13(int) 1D nonsampled format:Rg32ui
+             106:             TypePointer UniformConstant 105
+ 107(g_tTex1du2):    106(ptr) Variable UniformConstant
+             111:             TypeVector 13(int) 4
+             117:             TypeImage 20(float) 2D nonsampled format:Rg32f
+             118:             TypePointer UniformConstant 117
+ 119(g_tTex2df2):    118(ptr) Variable UniformConstant
+             128:             TypeImage 6(int) 2D nonsampled format:Rg32i
              129:             TypePointer UniformConstant 128
- 130(g_tTex3df2):    129(ptr) Variable UniformConstant
-             132:      6(int) Constant 2
-             133:             TypePointer Uniform 62(ivec3)
-             138:             TypeImage 6(int) 3D nonsampled format:Rg32i
-             139:             TypePointer UniformConstant 138
- 140(g_tTex3di2):    139(ptr) Variable UniformConstant
-             146:             TypeImage 13(int) 3D nonsampled format:Rg32ui
-             147:             TypePointer UniformConstant 146
- 148(g_tTex3du2):    147(ptr) Variable UniformConstant
-             154:      6(int) Constant 8
-             155:             TypePointer Uniform 21(fvec2)
-             169:    7(ivec2) ConstantComposite 132 132
-             175:     13(int) Constant 3
-             176:     13(int) Constant 2
-             177:   14(ivec2) ConstantComposite 175 176
-             183:             TypePointer Function 6(int)
-             191:   20(float) Constant 1073741824
-             205:   20(float) Constant 1077936128
-             219:   20(float) Constant 1082130432
-             259:      6(int) Constant 65535
-             273:      6(int) Constant 61680
-             317:      6(int) Constant 5
-             318:    7(ivec2) ConstantComposite 317 132
-             324:     13(int) Constant 6
-             325:   14(ivec2) ConstantComposite 324 176
-             341:      6(int) Constant 6
-             342:    7(ivec2) ConstantComposite 154 341
-             348:     13(int) Constant 9
-             349:   14(ivec2) ConstantComposite 348 176
-             404:   20(float) Constant 1065353216
-             567:      6(int) Constant 3
-             568:    7(ivec2) ConstantComposite 132 567
-             572:             TypePointer Function 43(PS_OUTPUT)
-             574:   42(fvec4) ConstantComposite 404 404 404 404
-             575:             TypePointer Function 42(fvec4)
-             580:             TypePointer Output 42(fvec4)
-581(@entryPointOutput.Color):    580(ptr) Variable Output
-             584:             TypeSampler
-             585:             TypePointer UniformConstant 584
-    586(g_sSamp):    585(ptr) Variable UniformConstant
-             587:             TypeImage 20(float) 1D array nonsampled format:Rg32f
-             588:             TypePointer UniformConstant 587
-589(g_tTex1df2a):    588(ptr) Variable UniformConstant
-             590:             TypeImage 6(int) 1D array nonsampled format:Rg32i
-             591:             TypePointer UniformConstant 590
-592(g_tTex1di2a):    591(ptr) Variable UniformConstant
-             593:             TypeImage 13(int) 1D array nonsampled format:Rg32ui
-             594:             TypePointer UniformConstant 593
-595(g_tTex1du2a):    594(ptr) Variable UniformConstant
-             596:             TypeImage 20(float) 2D array nonsampled format:Rg32f
-             597:             TypePointer UniformConstant 596
-598(g_tTex2df2a):    597(ptr) Variable UniformConstant
-             599:             TypeImage 6(int) 2D array nonsampled format:Rg32i
-             600:             TypePointer UniformConstant 599
-601(g_tTex2di2a):    600(ptr) Variable UniformConstant
-             602:             TypeImage 13(int) 2D array nonsampled format:Rg32ui
-             603:             TypePointer UniformConstant 602
-604(g_tTex2du2a):    603(ptr) Variable UniformConstant
+ 130(g_tTex2di2):    129(ptr) Variable UniformConstant
+             139:             TypeImage 13(int) 2D nonsampled format:Rg32ui
+             140:             TypePointer UniformConstant 139
+ 141(g_tTex2du2):    140(ptr) Variable UniformConstant
+             150:             TypeImage 20(float) 3D nonsampled format:Rg32f
+             151:             TypePointer UniformConstant 150
+ 152(g_tTex3df2):    151(ptr) Variable UniformConstant
+             154:      6(int) Constant 2
+             155:             TypePointer Uniform 62(ivec3)
+             163:             TypeImage 6(int) 3D nonsampled format:Rg32i
+             164:             TypePointer UniformConstant 163
+ 165(g_tTex3di2):    164(ptr) Variable UniformConstant
+             174:             TypeImage 13(int) 3D nonsampled format:Rg32ui
+             175:             TypePointer UniformConstant 174
+ 176(g_tTex3du2):    175(ptr) Variable UniformConstant
+             185:      6(int) Constant 8
+             186:             TypePointer Uniform 21(fvec2)
+             200:    7(ivec2) ConstantComposite 154 154
+             206:     13(int) Constant 3
+             207:     13(int) Constant 2
+             208:   14(ivec2) ConstantComposite 206 207
+             214:             TypePointer Function 6(int)
+             225:   20(float) Constant 1073741824
+             242:   20(float) Constant 1077936128
+             259:   20(float) Constant 1082130432
+             308:      6(int) Constant 65535
+             325:      6(int) Constant 61680
+             375:      6(int) Constant 5
+             376:    7(ivec2) ConstantComposite 375 154
+             382:     13(int) Constant 6
+             383:   14(ivec2) ConstantComposite 382 207
+             399:      6(int) Constant 6
+             400:    7(ivec2) ConstantComposite 185 399
+             406:     13(int) Constant 9
+             407:   14(ivec2) ConstantComposite 406 207
+             474:   20(float) Constant 1065353216
+             670:      6(int) Constant 3
+             671:    7(ivec2) ConstantComposite 154 670
+             678:             TypePointer Function 43(PS_OUTPUT)
+             680:   42(fvec4) ConstantComposite 474 474 474 474
+             681:             TypePointer Function 42(fvec4)
+             686:             TypePointer Output 42(fvec4)
+687(@entryPointOutput.Color):    686(ptr) Variable Output
+             690:             TypeSampler
+             691:             TypePointer UniformConstant 690
+    692(g_sSamp):    691(ptr) Variable UniformConstant
+             693:             TypeImage 20(float) 1D array nonsampled format:Rg32f
+             694:             TypePointer UniformConstant 693
+695(g_tTex1df2a):    694(ptr) Variable UniformConstant
+             696:             TypeImage 6(int) 1D array nonsampled format:Rg32i
+             697:             TypePointer UniformConstant 696
+698(g_tTex1di2a):    697(ptr) Variable UniformConstant
+             699:             TypeImage 13(int) 1D array nonsampled format:Rg32ui
+             700:             TypePointer UniformConstant 699
+701(g_tTex1du2a):    700(ptr) Variable UniformConstant
+             702:             TypeImage 20(float) 2D array nonsampled format:Rg32f
+             703:             TypePointer UniformConstant 702
+704(g_tTex2df2a):    703(ptr) Variable UniformConstant
+             705:             TypeImage 6(int) 2D array nonsampled format:Rg32i
+             706:             TypePointer UniformConstant 705
+707(g_tTex2di2a):    706(ptr) Variable UniformConstant
+             708:             TypeImage 13(int) 2D array nonsampled format:Rg32ui
+             709:             TypePointer UniformConstant 708
+710(g_tTex2du2a):    709(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
-             582:43(PS_OUTPUT) FunctionCall 45(@main()
-             583:   42(fvec4) CompositeExtract 582 0
-                              Store 581(@entryPointOutput.Color) 583
+             688:43(PS_OUTPUT) FunctionCall 45(@main()
+             689:   42(fvec4) CompositeExtract 688 0
+                              Store 687(@entryPointOutput.Color) 689
                               Return
                               FunctionEnd
     11(Fn1(vi2;):    7(ivec2) Function None 9
@@ -2058,587 +2058,692 @@
                               FunctionEnd
       45(@main():43(PS_OUTPUT) Function None 44
               46:             Label
-         82(r00):     22(ptr) Variable Function
-         87(r01):      8(ptr) Variable Function
-         95(r02):     15(ptr) Variable Function
-        103(r10):     22(ptr) Variable Function
-        111(r11):      8(ptr) Variable Function
-        119(r12):     15(ptr) Variable Function
-        127(r20):     22(ptr) Variable Function
-        137(r21):      8(ptr) Variable Function
-        145(r22):     15(ptr) Variable Function
-        153(lf2):     22(ptr) Variable Function
-  158(storeTemp):     22(ptr) Variable Function
-  168(storeTemp):      8(ptr) Variable Function
-  174(storeTemp):     15(ptr) Variable Function
-       182(val1):     22(ptr) Variable Function
-  184(coordTemp):    183(ptr) Variable Function
-  187(storeTemp):     22(ptr) Variable Function
-  198(coordTemp):    183(ptr) Variable Function
-  201(storeTemp):     22(ptr) Variable Function
-  212(coordTemp):    183(ptr) Variable Function
-  215(storeTemp):     22(ptr) Variable Function
-  226(coordTemp):    183(ptr) Variable Function
-  229(storeTemp):      8(ptr) Variable Function
-  239(coordTemp):    183(ptr) Variable Function
-  242(storeTemp):      8(ptr) Variable Function
-  252(coordTemp):    183(ptr) Variable Function
-  255(storeTemp):      8(ptr) Variable Function
-  266(coordTemp):    183(ptr) Variable Function
+         85(r00):     22(ptr) Variable Function
+         93(r01):      8(ptr) Variable Function
+        104(r02):     15(ptr) Variable Function
+        116(r10):     22(ptr) Variable Function
+        127(r11):      8(ptr) Variable Function
+        138(r12):     15(ptr) Variable Function
+        149(r20):     22(ptr) Variable Function
+        162(r21):      8(ptr) Variable Function
+        173(r22):     15(ptr) Variable Function
+        184(lf2):     22(ptr) Variable Function
+  189(storeTemp):     22(ptr) Variable Function
+  199(storeTemp):      8(ptr) Variable Function
+  205(storeTemp):     15(ptr) Variable Function
+       213(val1):     22(ptr) Variable Function
+  215(coordTemp):    214(ptr) Variable Function
+  218(storeTemp):     22(ptr) Variable Function
+  232(coordTemp):    214(ptr) Variable Function
+  235(storeTemp):     22(ptr) Variable Function
+  249(coordTemp):    214(ptr) Variable Function
+  252(storeTemp):     22(ptr) Variable Function
+  266(coordTemp):    214(ptr) Variable Function
   269(storeTemp):      8(ptr) Variable Function
-  280(coordTemp):    183(ptr) Variable Function
-  283(storeTemp):      8(ptr) Variable Function
-  293(coordTemp):    183(ptr) Variable Function
-  296(storeTemp):      8(ptr) Variable Function
-  306(storeTemp):     22(ptr) Variable Function
-  316(storeTemp):      8(ptr) Variable Function
-  323(storeTemp):     15(ptr) Variable Function
-  330(storeTemp):     22(ptr) Variable Function
-  340(storeTemp):      8(ptr) Variable Function
-  347(storeTemp):     15(ptr) Variable Function
-      358(param):     22(ptr) Variable Function
-      364(param):      8(ptr) Variable Function
-      370(param):     15(ptr) Variable Function
-    372(tempArg):     22(ptr) Variable Function
-      373(param):     22(ptr) Variable Function
-    380(tempArg):      8(ptr) Variable Function
-      381(param):      8(ptr) Variable Function
-    388(tempArg):     15(ptr) Variable Function
-      389(param):     15(ptr) Variable Function
-  396(coordTemp):    183(ptr) Variable Function
-  399(storeTemp):     22(ptr) Variable Function
-  410(coordTemp):    183(ptr) Variable Function
-  413(storeTemp):      8(ptr) Variable Function
-  423(coordTemp):    183(ptr) Variable Function
-  426(storeTemp):     15(ptr) Variable Function
-  436(coordTemp):    183(ptr) Variable Function
-  439(storeTemp):     22(ptr) Variable Function
-  449(coordTemp):    183(ptr) Variable Function
-  452(storeTemp):      8(ptr) Variable Function
-  462(coordTemp):    183(ptr) Variable Function
-  465(storeTemp):     15(ptr) Variable Function
-  475(coordTemp):    183(ptr) Variable Function
-478(storeTempPre):     22(ptr) Variable Function
-482(storeTempPost):     22(ptr) Variable Function
-  490(coordTemp):    183(ptr) Variable Function
-493(storeTempPre):     15(ptr) Variable Function
-497(storeTempPost):     15(ptr) Variable Function
-  505(coordTemp):    183(ptr) Variable Function
-508(storeTempPre):      8(ptr) Variable Function
-512(storeTempPost):      8(ptr) Variable Function
-  520(coordTemp):    183(ptr) Variable Function
-523(storeTempPre):     22(ptr) Variable Function
-527(storeTempPost):     22(ptr) Variable Function
-  535(coordTemp):    183(ptr) Variable Function
-538(storeTempPre):      8(ptr) Variable Function
-542(storeTempPost):      8(ptr) Variable Function
-  550(coordTemp):    183(ptr) Variable Function
-553(storeTempPre):     15(ptr) Variable Function
-557(storeTempPost):     15(ptr) Variable Function
-  565(storeTemp):     22(ptr) Variable Function
-      573(psout):    572(ptr) Variable Function
+  282(coordTemp):    214(ptr) Variable Function
+  285(storeTemp):      8(ptr) Variable Function
+  298(coordTemp):    214(ptr) Variable Function
+  301(storeTemp):      8(ptr) Variable Function
+  315(coordTemp):    214(ptr) Variable Function
+  318(storeTemp):      8(ptr) Variable Function
+  332(coordTemp):    214(ptr) Variable Function
+  335(storeTemp):      8(ptr) Variable Function
+  348(coordTemp):    214(ptr) Variable Function
+  351(storeTemp):      8(ptr) Variable Function
+  364(storeTemp):     22(ptr) Variable Function
+  374(storeTemp):      8(ptr) Variable Function
+  381(storeTemp):     15(ptr) Variable Function
+  388(storeTemp):     22(ptr) Variable Function
+  398(storeTemp):      8(ptr) Variable Function
+  405(storeTemp):     15(ptr) Variable Function
+      419(param):     22(ptr) Variable Function
+      428(param):      8(ptr) Variable Function
+      437(param):     15(ptr) Variable Function
+    439(tempArg):     22(ptr) Variable Function
+      440(param):     22(ptr) Variable Function
+    447(tempArg):      8(ptr) Variable Function
+      448(param):      8(ptr) Variable Function
+    455(tempArg):     15(ptr) Variable Function
+      456(param):     15(ptr) Variable Function
+  463(coordTemp):    214(ptr) Variable Function
+  466(storeTemp):     22(ptr) Variable Function
+  480(coordTemp):    214(ptr) Variable Function
+  483(storeTemp):      8(ptr) Variable Function
+  496(coordTemp):    214(ptr) Variable Function
+  499(storeTemp):     15(ptr) Variable Function
+  512(coordTemp):    214(ptr) Variable Function
+  515(storeTemp):     22(ptr) Variable Function
+  528(coordTemp):    214(ptr) Variable Function
+  531(storeTemp):      8(ptr) Variable Function
+  544(coordTemp):    214(ptr) Variable Function
+  547(storeTemp):     15(ptr) Variable Function
+  560(coordTemp):    214(ptr) Variable Function
+563(storeTempPre):     22(ptr) Variable Function
+570(storeTempPost):     22(ptr) Variable Function
+  578(coordTemp):    214(ptr) Variable Function
+581(storeTempPre):     15(ptr) Variable Function
+588(storeTempPost):     15(ptr) Variable Function
+  596(coordTemp):    214(ptr) Variable Function
+599(storeTempPre):      8(ptr) Variable Function
+606(storeTempPost):      8(ptr) Variable Function
+  614(coordTemp):    214(ptr) Variable Function
+617(storeTempPre):     22(ptr) Variable Function
+624(storeTempPost):     22(ptr) Variable Function
+  632(coordTemp):    214(ptr) Variable Function
+635(storeTempPre):      8(ptr) Variable Function
+642(storeTempPost):      8(ptr) Variable Function
+  650(coordTemp):    214(ptr) Variable Function
+653(storeTempPre):     15(ptr) Variable Function
+660(storeTempPost):     15(ptr) Variable Function
+  668(storeTemp):     22(ptr) Variable Function
+      679(psout):    678(ptr) Variable Function
               77:          74 Load 76(g_tTex1df2)
               79:     78(ptr) AccessChain 66 56
               80:      6(int) Load 79
-              81:   21(fvec2) ImageRead 77 80
-              83:          74 Load 76(g_tTex1df2)
-              84:     78(ptr) AccessChain 66 56
-              85:      6(int) Load 84
-              86:   21(fvec2) ImageRead 83 85
-                              Store 82(r00) 86
-              91:          88 Load 90(g_tTex1di2)
-              92:     78(ptr) AccessChain 66 56
-              93:      6(int) Load 92
-              94:    7(ivec2) ImageRead 91 93
-                              Store 87(r01) 94
-              99:          96 Load 98(g_tTex1du2)
-             100:     78(ptr) AccessChain 66 56
-             101:      6(int) Load 100
-             102:   14(ivec2) ImageRead 99 101
-                              Store 95(r02) 102
-             107:         104 Load 106(g_tTex2df2)
-             108:     68(ptr) AccessChain 66 67
-             109:    7(ivec2) Load 108
-             110:   21(fvec2) ImageRead 107 109
-                              Store 103(r10) 110
-             115:         112 Load 114(g_tTex2di2)
-             116:     68(ptr) AccessChain 66 67
-             117:    7(ivec2) Load 116
-             118:    7(ivec2) ImageRead 115 117
-                              Store 111(r11) 118
-             123:         120 Load 122(g_tTex2du2)
-             124:     68(ptr) AccessChain 66 67
-             125:    7(ivec2) Load 124
-             126:   14(ivec2) ImageRead 123 125
-                              Store 119(r12) 126
-             131:         128 Load 130(g_tTex3df2)
-             134:    133(ptr) AccessChain 66 132
-             135:   62(ivec3) Load 134
-             136:   21(fvec2) ImageRead 131 135
-                              Store 127(r20) 136
-             141:         138 Load 140(g_tTex3di2)
-             142:    133(ptr) AccessChain 66 132
-             143:   62(ivec3) Load 142
-             144:    7(ivec2) ImageRead 141 143
-                              Store 137(r21) 144
-             149:         146 Load 148(g_tTex3du2)
-             150:    133(ptr) AccessChain 66 132
-             151:   62(ivec3) Load 150
-             152:   14(ivec2) ImageRead 149 151
-                              Store 145(r22) 152
+              81:   42(fvec4) ImageRead 77 80
+              82:   20(float) CompositeExtract 81 0
+              83:   20(float) CompositeExtract 81 1
+              84:   21(fvec2) CompositeConstruct 82 83
+              86:          74 Load 76(g_tTex1df2)
+              87:     78(ptr) AccessChain 66 56
+              88:      6(int) Load 87
+              89:   42(fvec4) ImageRead 86 88
+              90:   20(float) CompositeExtract 89 0
+              91:   20(float) CompositeExtract 89 1
+              92:   21(fvec2) CompositeConstruct 90 91
+                              Store 85(r00) 92
+              97:          94 Load 96(g_tTex1di2)
+              98:     78(ptr) AccessChain 66 56
+              99:      6(int) Load 98
+             100:   63(ivec4) ImageRead 97 99
+             101:      6(int) CompositeExtract 100 0
+             102:      6(int) CompositeExtract 100 1
+             103:    7(ivec2) CompositeConstruct 101 102
+                              Store 93(r01) 103
+             108:         105 Load 107(g_tTex1du2)
+             109:     78(ptr) AccessChain 66 56
+             110:      6(int) Load 109
+             112:  111(ivec4) ImageRead 108 110
+             113:     13(int) CompositeExtract 112 0
+             114:     13(int) CompositeExtract 112 1
+             115:   14(ivec2) CompositeConstruct 113 114
+                              Store 104(r02) 115
+             120:         117 Load 119(g_tTex2df2)
+             121:     68(ptr) AccessChain 66 67
+             122:    7(ivec2) Load 121
+             123:   42(fvec4) ImageRead 120 122
+             124:   20(float) CompositeExtract 123 0
+             125:   20(float) CompositeExtract 123 1
+             126:   21(fvec2) CompositeConstruct 124 125
+                              Store 116(r10) 126
+             131:         128 Load 130(g_tTex2di2)
+             132:     68(ptr) AccessChain 66 67
+             133:    7(ivec2) Load 132
+             134:   63(ivec4) ImageRead 131 133
+             135:      6(int) CompositeExtract 134 0
+             136:      6(int) CompositeExtract 134 1
+             137:    7(ivec2) CompositeConstruct 135 136
+                              Store 127(r11) 137
+             142:         139 Load 141(g_tTex2du2)
+             143:     68(ptr) AccessChain 66 67
+             144:    7(ivec2) Load 143
+             145:  111(ivec4) ImageRead 142 144
+             146:     13(int) CompositeExtract 145 0
+             147:     13(int) CompositeExtract 145 1
+             148:   14(ivec2) CompositeConstruct 146 147
+                              Store 138(r12) 148
+             153:         150 Load 152(g_tTex3df2)
              156:    155(ptr) AccessChain 66 154
-             157:   21(fvec2) Load 156
-                              Store 153(lf2) 157
-             159:   21(fvec2) FunctionCall 40(SomeValue()
-                              Store 158(storeTemp) 159
-             160:          74 Load 76(g_tTex1df2)
-             161:     78(ptr) AccessChain 66 56
-             162:      6(int) Load 161
-             163:   21(fvec2) Load 158(storeTemp)
-                              ImageWrite 160 162 163
-             164:          74 Load 76(g_tTex1df2)
-             165:     78(ptr) AccessChain 66 56
-             166:      6(int) Load 165
-             167:   21(fvec2) Load 153(lf2)
-                              ImageWrite 164 166 167
-                              Store 168(storeTemp) 169
-             170:          88 Load 90(g_tTex1di2)
-             171:     78(ptr) AccessChain 66 56
-             172:      6(int) Load 171
-             173:    7(ivec2) Load 168(storeTemp)
-                              ImageWrite 170 172 173
-                              Store 174(storeTemp) 177
-             178:          96 Load 98(g_tTex1du2)
-             179:     78(ptr) AccessChain 66 56
-             180:      6(int) Load 179
-             181:   14(ivec2) Load 174(storeTemp)
-                              ImageWrite 178 180 181
-             185:     78(ptr) AccessChain 66 56
-             186:      6(int) Load 185
-                              Store 184(coordTemp) 186
-             188:          74 Load 76(g_tTex1df2)
-             189:      6(int) Load 184(coordTemp)
-             190:   21(fvec2) ImageRead 188 189
-                              Store 187(storeTemp) 190
-             192:   21(fvec2) Load 187(storeTemp)
-             193:   21(fvec2) VectorTimesScalar 192 191
-                              Store 187(storeTemp) 193
-             194:          74 Load 76(g_tTex1df2)
-             195:      6(int) Load 184(coordTemp)
-             196:   21(fvec2) Load 187(storeTemp)
-                              ImageWrite 194 195 196
-             197:   21(fvec2) Load 187(storeTemp)
-                              Store 182(val1) 197
-             199:     78(ptr) AccessChain 66 56
-             200:      6(int) Load 199
-                              Store 198(coordTemp) 200
-             202:          74 Load 76(g_tTex1df2)
-             203:      6(int) Load 198(coordTemp)
-             204:   21(fvec2) ImageRead 202 203
-                              Store 201(storeTemp) 204
-             206:   21(fvec2) Load 201(storeTemp)
-             207:   21(fvec2) CompositeConstruct 205 205
-             208:   21(fvec2) FSub 206 207
-                              Store 201(storeTemp) 208
-             209:          74 Load 76(g_tTex1df2)
-             210:      6(int) Load 198(coordTemp)
-             211:   21(fvec2) Load 201(storeTemp)
-                              ImageWrite 209 210 211
-             213:     78(ptr) AccessChain 66 56
-             214:      6(int) Load 213
-                              Store 212(coordTemp) 214
-             216:          74 Load 76(g_tTex1df2)
-             217:      6(int) Load 212(coordTemp)
-             218:   21(fvec2) ImageRead 216 217
-                              Store 215(storeTemp) 218
-             220:   21(fvec2) Load 215(storeTemp)
-             221:   21(fvec2) CompositeConstruct 219 219
-             222:   21(fvec2) FAdd 220 221
-                              Store 215(storeTemp) 222
-             223:          74 Load 76(g_tTex1df2)
-             224:      6(int) Load 212(coordTemp)
-             225:   21(fvec2) Load 215(storeTemp)
-                              ImageWrite 223 224 225
-             227:     78(ptr) AccessChain 66 56
-             228:      6(int) Load 227
-                              Store 226(coordTemp) 228
-             230:          88 Load 90(g_tTex1di2)
-             231:      6(int) Load 226(coordTemp)
-             232:    7(ivec2) ImageRead 230 231
-                              Store 229(storeTemp) 232
-             233:    7(ivec2) Load 229(storeTemp)
-             234:    7(ivec2) CompositeConstruct 132 132
-             235:    7(ivec2) SDiv 233 234
-                              Store 229(storeTemp) 235
-             236:          88 Load 90(g_tTex1di2)
-             237:      6(int) Load 226(coordTemp)
-             238:    7(ivec2) Load 229(storeTemp)
-                              ImageWrite 236 237 238
-             240:     78(ptr) AccessChain 66 56
-             241:      6(int) Load 240
-                              Store 239(coordTemp) 241
-             243:          88 Load 90(g_tTex1di2)
-             244:      6(int) Load 239(coordTemp)
-             245:    7(ivec2) ImageRead 243 244
-                              Store 242(storeTemp) 245
-             246:    7(ivec2) Load 242(storeTemp)
-             247:    7(ivec2) CompositeConstruct 132 132
-             248:    7(ivec2) SMod 246 247
-                              Store 242(storeTemp) 248
-             249:          88 Load 90(g_tTex1di2)
-             250:      6(int) Load 239(coordTemp)
-             251:    7(ivec2) Load 242(storeTemp)
-                              ImageWrite 249 250 251
-             253:     78(ptr) AccessChain 66 56
-             254:      6(int) Load 253
-                              Store 252(coordTemp) 254
-             256:          88 Load 90(g_tTex1di2)
-             257:      6(int) Load 252(coordTemp)
-             258:    7(ivec2) ImageRead 256 257
-                              Store 255(storeTemp) 258
-             260:    7(ivec2) Load 255(storeTemp)
-             261:    7(ivec2) CompositeConstruct 259 259
-             262:    7(ivec2) BitwiseAnd 260 261
-                              Store 255(storeTemp) 262
-             263:          88 Load 90(g_tTex1di2)
-             264:      6(int) Load 252(coordTemp)
-             265:    7(ivec2) Load 255(storeTemp)
+             157:   62(ivec3) Load 156
+             158:   42(fvec4) ImageRead 153 157
+             159:   20(float) CompositeExtract 158 0
+             160:   20(float) CompositeExtract 158 1
+             161:   21(fvec2) CompositeConstruct 159 160
+                              Store 149(r20) 161
+             166:         163 Load 165(g_tTex3di2)
+             167:    155(ptr) AccessChain 66 154
+             168:   62(ivec3) Load 167
+             169:   63(ivec4) ImageRead 166 168
+             170:      6(int) CompositeExtract 169 0
+             171:      6(int) CompositeExtract 169 1
+             172:    7(ivec2) CompositeConstruct 170 171
+                              Store 162(r21) 172
+             177:         174 Load 176(g_tTex3du2)
+             178:    155(ptr) AccessChain 66 154
+             179:   62(ivec3) Load 178
+             180:  111(ivec4) ImageRead 177 179
+             181:     13(int) CompositeExtract 180 0
+             182:     13(int) CompositeExtract 180 1
+             183:   14(ivec2) CompositeConstruct 181 182
+                              Store 173(r22) 183
+             187:    186(ptr) AccessChain 66 185
+             188:   21(fvec2) Load 187
+                              Store 184(lf2) 188
+             190:   21(fvec2) FunctionCall 40(SomeValue()
+                              Store 189(storeTemp) 190
+             191:          74 Load 76(g_tTex1df2)
+             192:     78(ptr) AccessChain 66 56
+             193:      6(int) Load 192
+             194:   21(fvec2) Load 189(storeTemp)
+                              ImageWrite 191 193 194
+             195:          74 Load 76(g_tTex1df2)
+             196:     78(ptr) AccessChain 66 56
+             197:      6(int) Load 196
+             198:   21(fvec2) Load 184(lf2)
+                              ImageWrite 195 197 198
+                              Store 199(storeTemp) 200
+             201:          94 Load 96(g_tTex1di2)
+             202:     78(ptr) AccessChain 66 56
+             203:      6(int) Load 202
+             204:    7(ivec2) Load 199(storeTemp)
+                              ImageWrite 201 203 204
+                              Store 205(storeTemp) 208
+             209:         105 Load 107(g_tTex1du2)
+             210:     78(ptr) AccessChain 66 56
+             211:      6(int) Load 210
+             212:   14(ivec2) Load 205(storeTemp)
+                              ImageWrite 209 211 212
+             216:     78(ptr) AccessChain 66 56
+             217:      6(int) Load 216
+                              Store 215(coordTemp) 217
+             219:          74 Load 76(g_tTex1df2)
+             220:      6(int) Load 215(coordTemp)
+             221:   42(fvec4) ImageRead 219 220
+             222:   20(float) CompositeExtract 221 0
+             223:   20(float) CompositeExtract 221 1
+             224:   21(fvec2) CompositeConstruct 222 223
+                              Store 218(storeTemp) 224
+             226:   21(fvec2) Load 218(storeTemp)
+             227:   21(fvec2) VectorTimesScalar 226 225
+                              Store 218(storeTemp) 227
+             228:          74 Load 76(g_tTex1df2)
+             229:      6(int) Load 215(coordTemp)
+             230:   21(fvec2) Load 218(storeTemp)
+                              ImageWrite 228 229 230
+             231:   21(fvec2) Load 218(storeTemp)
+                              Store 213(val1) 231
+             233:     78(ptr) AccessChain 66 56
+             234:      6(int) Load 233
+                              Store 232(coordTemp) 234
+             236:          74 Load 76(g_tTex1df2)
+             237:      6(int) Load 232(coordTemp)
+             238:   42(fvec4) ImageRead 236 237
+             239:   20(float) CompositeExtract 238 0
+             240:   20(float) CompositeExtract 238 1
+             241:   21(fvec2) CompositeConstruct 239 240
+                              Store 235(storeTemp) 241
+             243:   21(fvec2) Load 235(storeTemp)
+             244:   21(fvec2) CompositeConstruct 242 242
+             245:   21(fvec2) FSub 243 244
+                              Store 235(storeTemp) 245
+             246:          74 Load 76(g_tTex1df2)
+             247:      6(int) Load 232(coordTemp)
+             248:   21(fvec2) Load 235(storeTemp)
+                              ImageWrite 246 247 248
+             250:     78(ptr) AccessChain 66 56
+             251:      6(int) Load 250
+                              Store 249(coordTemp) 251
+             253:          74 Load 76(g_tTex1df2)
+             254:      6(int) Load 249(coordTemp)
+             255:   42(fvec4) ImageRead 253 254
+             256:   20(float) CompositeExtract 255 0
+             257:   20(float) CompositeExtract 255 1
+             258:   21(fvec2) CompositeConstruct 256 257
+                              Store 252(storeTemp) 258
+             260:   21(fvec2) Load 252(storeTemp)
+             261:   21(fvec2) CompositeConstruct 259 259
+             262:   21(fvec2) FAdd 260 261
+                              Store 252(storeTemp) 262
+             263:          74 Load 76(g_tTex1df2)
+             264:      6(int) Load 249(coordTemp)
+             265:   21(fvec2) Load 252(storeTemp)
                               ImageWrite 263 264 265
              267:     78(ptr) AccessChain 66 56
              268:      6(int) Load 267
                               Store 266(coordTemp) 268
-             270:          88 Load 90(g_tTex1di2)
+             270:          94 Load 96(g_tTex1di2)
              271:      6(int) Load 266(coordTemp)
-             272:    7(ivec2) ImageRead 270 271
-                              Store 269(storeTemp) 272
-             274:    7(ivec2) Load 269(storeTemp)
-             275:    7(ivec2) CompositeConstruct 273 273
-             276:    7(ivec2) BitwiseOr 274 275
-                              Store 269(storeTemp) 276
-             277:          88 Load 90(g_tTex1di2)
-             278:      6(int) Load 266(coordTemp)
-             279:    7(ivec2) Load 269(storeTemp)
-                              ImageWrite 277 278 279
-             281:     78(ptr) AccessChain 66 56
-             282:      6(int) Load 281
-                              Store 280(coordTemp) 282
-             284:          88 Load 90(g_tTex1di2)
-             285:      6(int) Load 280(coordTemp)
-             286:    7(ivec2) ImageRead 284 285
-                              Store 283(storeTemp) 286
-             287:    7(ivec2) Load 283(storeTemp)
-             288:    7(ivec2) CompositeConstruct 132 132
-             289:    7(ivec2) ShiftLeftLogical 287 288
-                              Store 283(storeTemp) 289
-             290:          88 Load 90(g_tTex1di2)
-             291:      6(int) Load 280(coordTemp)
-             292:    7(ivec2) Load 283(storeTemp)
-                              ImageWrite 290 291 292
-             294:     78(ptr) AccessChain 66 56
-             295:      6(int) Load 294
-                              Store 293(coordTemp) 295
-             297:          88 Load 90(g_tTex1di2)
-             298:      6(int) Load 293(coordTemp)
-             299:    7(ivec2) ImageRead 297 298
-                              Store 296(storeTemp) 299
-             300:    7(ivec2) Load 296(storeTemp)
-             301:    7(ivec2) CompositeConstruct 132 132
-             302:    7(ivec2) ShiftRightArithmetic 300 301
-                              Store 296(storeTemp) 302
-             303:          88 Load 90(g_tTex1di2)
-             304:      6(int) Load 293(coordTemp)
-             305:    7(ivec2) Load 296(storeTemp)
-                              ImageWrite 303 304 305
-             307:   21(fvec2) FunctionCall 40(SomeValue()
-                              Store 306(storeTemp) 307
-             308:         104 Load 106(g_tTex2df2)
-             309:     68(ptr) AccessChain 66 67
-             310:    7(ivec2) Load 309
-             311:   21(fvec2) Load 306(storeTemp)
-                              ImageWrite 308 310 311
-             312:         104 Load 106(g_tTex2df2)
-             313:     68(ptr) AccessChain 66 67
-             314:    7(ivec2) Load 313
-             315:   21(fvec2) Load 153(lf2)
-                              ImageWrite 312 314 315
-                              Store 316(storeTemp) 318
-             319:         112 Load 114(g_tTex2di2)
-             320:     68(ptr) AccessChain 66 67
-             321:    7(ivec2) Load 320
-             322:    7(ivec2) Load 316(storeTemp)
-                              ImageWrite 319 321 322
-                              Store 323(storeTemp) 325
-             326:         120 Load 122(g_tTex2du2)
-             327:     68(ptr) AccessChain 66 67
-             328:    7(ivec2) Load 327
-             329:   14(ivec2) Load 323(storeTemp)
-                              ImageWrite 326 328 329
-             331:   21(fvec2) FunctionCall 40(SomeValue()
-                              Store 330(storeTemp) 331
-             332:         128 Load 130(g_tTex3df2)
-             333:    133(ptr) AccessChain 66 132
-             334:   62(ivec3) Load 333
-             335:   21(fvec2) Load 330(storeTemp)
-                              ImageWrite 332 334 335
-             336:         128 Load 130(g_tTex3df2)
-             337:    133(ptr) AccessChain 66 132
-             338:   62(ivec3) Load 337
-             339:   21(fvec2) Load 153(lf2)
-                              ImageWrite 336 338 339
-                              Store 340(storeTemp) 342
-             343:         138 Load 140(g_tTex3di2)
-             344:    133(ptr) AccessChain 66 132
-             345:   62(ivec3) Load 344
-             346:    7(ivec2) Load 340(storeTemp)
-                              ImageWrite 343 345 346
-                              Store 347(storeTemp) 349
-             350:         146 Load 148(g_tTex3du2)
-             351:    133(ptr) AccessChain 66 132
-             352:   62(ivec3) Load 351
-             353:   14(ivec2) Load 347(storeTemp)
-                              ImageWrite 350 352 353
-             354:          74 Load 76(g_tTex1df2)
-             355:     78(ptr) AccessChain 66 56
-             356:      6(int) Load 355
-             357:   21(fvec2) ImageRead 354 356
-                              Store 358(param) 357
-             359:   21(fvec2) FunctionCall 25(Fn1(vf2;) 358(param)
-             360:          88 Load 90(g_tTex1di2)
-             361:     78(ptr) AccessChain 66 56
-             362:      6(int) Load 361
-             363:    7(ivec2) ImageRead 360 362
-                              Store 364(param) 363
-             365:    7(ivec2) FunctionCall 11(Fn1(vi2;) 364(param)
-             366:          96 Load 98(g_tTex1du2)
-             367:     78(ptr) AccessChain 66 56
-             368:      6(int) Load 367
-             369:   14(ivec2) ImageRead 366 368
-                              Store 370(param) 369
-             371:   14(ivec2) FunctionCall 18(Fn1(vu2;) 370(param)
-             374:           2 FunctionCall 37(Fn2(vf2;) 373(param)
-             375:   21(fvec2) Load 373(param)
-                              Store 372(tempArg) 375
-             376:          74 Load 76(g_tTex1df2)
-             377:     78(ptr) AccessChain 66 56
-             378:      6(int) Load 377
-             379:   21(fvec2) Load 372(tempArg)
-                              ImageWrite 376 378 379
-             382:           2 FunctionCall 29(Fn2(vi2;) 381(param)
-             383:    7(ivec2) Load 381(param)
-                              Store 380(tempArg) 383
-             384:          88 Load 90(g_tTex1di2)
-             385:     78(ptr) AccessChain 66 56
-             386:      6(int) Load 385
-             387:    7(ivec2) Load 380(tempArg)
+             272:   63(ivec4) ImageRead 270 271
+             273:      6(int) CompositeExtract 272 0
+             274:      6(int) CompositeExtract 272 1
+             275:    7(ivec2) CompositeConstruct 273 274
+                              Store 269(storeTemp) 275
+             276:    7(ivec2) Load 269(storeTemp)
+             277:    7(ivec2) CompositeConstruct 154 154
+             278:    7(ivec2) SDiv 276 277
+                              Store 269(storeTemp) 278
+             279:          94 Load 96(g_tTex1di2)
+             280:      6(int) Load 266(coordTemp)
+             281:    7(ivec2) Load 269(storeTemp)
+                              ImageWrite 279 280 281
+             283:     78(ptr) AccessChain 66 56
+             284:      6(int) Load 283
+                              Store 282(coordTemp) 284
+             286:          94 Load 96(g_tTex1di2)
+             287:      6(int) Load 282(coordTemp)
+             288:   63(ivec4) ImageRead 286 287
+             289:      6(int) CompositeExtract 288 0
+             290:      6(int) CompositeExtract 288 1
+             291:    7(ivec2) CompositeConstruct 289 290
+                              Store 285(storeTemp) 291
+             292:    7(ivec2) Load 285(storeTemp)
+             293:    7(ivec2) CompositeConstruct 154 154
+             294:    7(ivec2) SMod 292 293
+                              Store 285(storeTemp) 294
+             295:          94 Load 96(g_tTex1di2)
+             296:      6(int) Load 282(coordTemp)
+             297:    7(ivec2) Load 285(storeTemp)
+                              ImageWrite 295 296 297
+             299:     78(ptr) AccessChain 66 56
+             300:      6(int) Load 299
+                              Store 298(coordTemp) 300
+             302:          94 Load 96(g_tTex1di2)
+             303:      6(int) Load 298(coordTemp)
+             304:   63(ivec4) ImageRead 302 303
+             305:      6(int) CompositeExtract 304 0
+             306:      6(int) CompositeExtract 304 1
+             307:    7(ivec2) CompositeConstruct 305 306
+                              Store 301(storeTemp) 307
+             309:    7(ivec2) Load 301(storeTemp)
+             310:    7(ivec2) CompositeConstruct 308 308
+             311:    7(ivec2) BitwiseAnd 309 310
+                              Store 301(storeTemp) 311
+             312:          94 Load 96(g_tTex1di2)
+             313:      6(int) Load 298(coordTemp)
+             314:    7(ivec2) Load 301(storeTemp)
+                              ImageWrite 312 313 314
+             316:     78(ptr) AccessChain 66 56
+             317:      6(int) Load 316
+                              Store 315(coordTemp) 317
+             319:          94 Load 96(g_tTex1di2)
+             320:      6(int) Load 315(coordTemp)
+             321:   63(ivec4) ImageRead 319 320
+             322:      6(int) CompositeExtract 321 0
+             323:      6(int) CompositeExtract 321 1
+             324:    7(ivec2) CompositeConstruct 322 323
+                              Store 318(storeTemp) 324
+             326:    7(ivec2) Load 318(storeTemp)
+             327:    7(ivec2) CompositeConstruct 325 325
+             328:    7(ivec2) BitwiseOr 326 327
+                              Store 318(storeTemp) 328
+             329:          94 Load 96(g_tTex1di2)
+             330:      6(int) Load 315(coordTemp)
+             331:    7(ivec2) Load 318(storeTemp)
+                              ImageWrite 329 330 331
+             333:     78(ptr) AccessChain 66 56
+             334:      6(int) Load 333
+                              Store 332(coordTemp) 334
+             336:          94 Load 96(g_tTex1di2)
+             337:      6(int) Load 332(coordTemp)
+             338:   63(ivec4) ImageRead 336 337
+             339:      6(int) CompositeExtract 338 0
+             340:      6(int) CompositeExtract 338 1
+             341:    7(ivec2) CompositeConstruct 339 340
+                              Store 335(storeTemp) 341
+             342:    7(ivec2) Load 335(storeTemp)
+             343:    7(ivec2) CompositeConstruct 154 154
+             344:    7(ivec2) ShiftLeftLogical 342 343
+                              Store 335(storeTemp) 344
+             345:          94 Load 96(g_tTex1di2)
+             346:      6(int) Load 332(coordTemp)
+             347:    7(ivec2) Load 335(storeTemp)
+                              ImageWrite 345 346 347
+             349:     78(ptr) AccessChain 66 56
+             350:      6(int) Load 349
+                              Store 348(coordTemp) 350
+             352:          94 Load 96(g_tTex1di2)
+             353:      6(int) Load 348(coordTemp)
+             354:   63(ivec4) ImageRead 352 353
+             355:      6(int) CompositeExtract 354 0
+             356:      6(int) CompositeExtract 354 1
+             357:    7(ivec2) CompositeConstruct 355 356
+                              Store 351(storeTemp) 357
+             358:    7(ivec2) Load 351(storeTemp)
+             359:    7(ivec2) CompositeConstruct 154 154
+             360:    7(ivec2) ShiftRightArithmetic 358 359
+                              Store 351(storeTemp) 360
+             361:          94 Load 96(g_tTex1di2)
+             362:      6(int) Load 348(coordTemp)
+             363:    7(ivec2) Load 351(storeTemp)
+                              ImageWrite 361 362 363
+             365:   21(fvec2) FunctionCall 40(SomeValue()
+                              Store 364(storeTemp) 365
+             366:         117 Load 119(g_tTex2df2)
+             367:     68(ptr) AccessChain 66 67
+             368:    7(ivec2) Load 367
+             369:   21(fvec2) Load 364(storeTemp)
+                              ImageWrite 366 368 369
+             370:         117 Load 119(g_tTex2df2)
+             371:     68(ptr) AccessChain 66 67
+             372:    7(ivec2) Load 371
+             373:   21(fvec2) Load 184(lf2)
+                              ImageWrite 370 372 373
+                              Store 374(storeTemp) 376
+             377:         128 Load 130(g_tTex2di2)
+             378:     68(ptr) AccessChain 66 67
+             379:    7(ivec2) Load 378
+             380:    7(ivec2) Load 374(storeTemp)
+                              ImageWrite 377 379 380
+                              Store 381(storeTemp) 383
+             384:         139 Load 141(g_tTex2du2)
+             385:     68(ptr) AccessChain 66 67
+             386:    7(ivec2) Load 385
+             387:   14(ivec2) Load 381(storeTemp)
                               ImageWrite 384 386 387
-             390:           2 FunctionCall 33(Fn2(vu2;) 389(param)
-             391:   14(ivec2) Load 389(param)
-                              Store 388(tempArg) 391
-             392:          96 Load 98(g_tTex1du2)
-             393:     78(ptr) AccessChain 66 56
-             394:      6(int) Load 393
-             395:   14(ivec2) Load 388(tempArg)
-                              ImageWrite 392 394 395
-             397:     78(ptr) AccessChain 66 56
-             398:      6(int) Load 397
-                              Store 396(coordTemp) 398
-             400:          74 Load 76(g_tTex1df2)
-             401:      6(int) Load 396(coordTemp)
-             402:   21(fvec2) ImageRead 400 401
-                              Store 399(storeTemp) 402
-             403:   21(fvec2) Load 399(storeTemp)
-             405:   21(fvec2) CompositeConstruct 404 404
-             406:   21(fvec2) FAdd 403 405
-                              Store 399(storeTemp) 406
-             407:          74 Load 76(g_tTex1df2)
-             408:      6(int) Load 396(coordTemp)
-             409:   21(fvec2) Load 399(storeTemp)
-                              ImageWrite 407 408 409
-             411:     78(ptr) AccessChain 66 56
-             412:      6(int) Load 411
-                              Store 410(coordTemp) 412
-             414:          88 Load 90(g_tTex1di2)
-             415:      6(int) Load 410(coordTemp)
-             416:    7(ivec2) ImageRead 414 415
-                              Store 413(storeTemp) 416
-             417:    7(ivec2) Load 413(storeTemp)
-             418:    7(ivec2) CompositeConstruct 67 67
-             419:    7(ivec2) IAdd 417 418
-                              Store 413(storeTemp) 419
-             420:          88 Load 90(g_tTex1di2)
-             421:      6(int) Load 410(coordTemp)
-             422:    7(ivec2) Load 413(storeTemp)
-                              ImageWrite 420 421 422
-             424:     78(ptr) AccessChain 66 56
-             425:      6(int) Load 424
-                              Store 423(coordTemp) 425
-             427:          96 Load 98(g_tTex1du2)
-             428:      6(int) Load 423(coordTemp)
-             429:   14(ivec2) ImageRead 427 428
-                              Store 426(storeTemp) 429
-             430:   14(ivec2) Load 426(storeTemp)
-             431:    7(ivec2) CompositeConstruct 67 67
-             432:   14(ivec2) IAdd 430 431
-                              Store 426(storeTemp) 432
-             433:          96 Load 98(g_tTex1du2)
-             434:      6(int) Load 423(coordTemp)
-             435:   14(ivec2) Load 426(storeTemp)
-                              ImageWrite 433 434 435
-             437:     78(ptr) AccessChain 66 56
-             438:      6(int) Load 437
-                              Store 436(coordTemp) 438
-             440:          74 Load 76(g_tTex1df2)
-             441:      6(int) Load 436(coordTemp)
-             442:   21(fvec2) ImageRead 440 441
-                              Store 439(storeTemp) 442
-             443:   21(fvec2) Load 439(storeTemp)
-             444:   21(fvec2) CompositeConstruct 404 404
-             445:   21(fvec2) FSub 443 444
-                              Store 439(storeTemp) 445
-             446:          74 Load 76(g_tTex1df2)
-             447:      6(int) Load 436(coordTemp)
-             448:   21(fvec2) Load 439(storeTemp)
-                              ImageWrite 446 447 448
-             450:     78(ptr) AccessChain 66 56
-             451:      6(int) Load 450
-                              Store 449(coordTemp) 451
-             453:          88 Load 90(g_tTex1di2)
-             454:      6(int) Load 449(coordTemp)
-             455:    7(ivec2) ImageRead 453 454
-                              Store 452(storeTemp) 455
-             456:    7(ivec2) Load 452(storeTemp)
-             457:    7(ivec2) CompositeConstruct 67 67
-             458:    7(ivec2) ISub 456 457
-                              Store 452(storeTemp) 458
-             459:          88 Load 90(g_tTex1di2)
-             460:      6(int) Load 449(coordTemp)
-             461:    7(ivec2) Load 452(storeTemp)
-                              ImageWrite 459 460 461
-             463:     78(ptr) AccessChain 66 56
-             464:      6(int) Load 463
-                              Store 462(coordTemp) 464
-             466:          96 Load 98(g_tTex1du2)
-             467:      6(int) Load 462(coordTemp)
-             468:   14(ivec2) ImageRead 466 467
-                              Store 465(storeTemp) 468
-             469:   14(ivec2) Load 465(storeTemp)
-             470:    7(ivec2) CompositeConstruct 67 67
-             471:   14(ivec2) ISub 469 470
-                              Store 465(storeTemp) 471
-             472:          96 Load 98(g_tTex1du2)
-             473:      6(int) Load 462(coordTemp)
-             474:   14(ivec2) Load 465(storeTemp)
-                              ImageWrite 472 473 474
-             476:     78(ptr) AccessChain 66 56
-             477:      6(int) Load 476
-                              Store 475(coordTemp) 477
-             479:          74 Load 76(g_tTex1df2)
-             480:      6(int) Load 475(coordTemp)
-             481:   21(fvec2) ImageRead 479 480
-                              Store 478(storeTempPre) 481
-             483:   21(fvec2) Load 478(storeTempPre)
-                              Store 482(storeTempPost) 483
-             484:   21(fvec2) Load 482(storeTempPost)
-             485:   21(fvec2) CompositeConstruct 404 404
-             486:   21(fvec2) FAdd 484 485
-                              Store 482(storeTempPost) 486
-             487:          74 Load 76(g_tTex1df2)
-             488:      6(int) Load 475(coordTemp)
-             489:   21(fvec2) Load 482(storeTempPost)
-                              ImageWrite 487 488 489
-             491:     78(ptr) AccessChain 66 56
-             492:      6(int) Load 491
-                              Store 490(coordTemp) 492
-             494:          96 Load 98(g_tTex1du2)
-             495:      6(int) Load 490(coordTemp)
-             496:   14(ivec2) ImageRead 494 495
-                              Store 493(storeTempPre) 496
-             498:   14(ivec2) Load 493(storeTempPre)
-                              Store 497(storeTempPost) 498
-             499:   14(ivec2) Load 497(storeTempPost)
-             500:    7(ivec2) CompositeConstruct 67 67
-             501:   14(ivec2) ISub 499 500
-                              Store 497(storeTempPost) 501
-             502:          96 Load 98(g_tTex1du2)
-             503:      6(int) Load 490(coordTemp)
-             504:   14(ivec2) Load 497(storeTempPost)
-                              ImageWrite 502 503 504
-             506:     78(ptr) AccessChain 66 56
-             507:      6(int) Load 506
-                              Store 505(coordTemp) 507
-             509:          88 Load 90(g_tTex1di2)
-             510:      6(int) Load 505(coordTemp)
-             511:    7(ivec2) ImageRead 509 510
-                              Store 508(storeTempPre) 511
-             513:    7(ivec2) Load 508(storeTempPre)
-                              Store 512(storeTempPost) 513
-             514:    7(ivec2) Load 512(storeTempPost)
-             515:    7(ivec2) CompositeConstruct 67 67
-             516:    7(ivec2) IAdd 514 515
-                              Store 512(storeTempPost) 516
-             517:          88 Load 90(g_tTex1di2)
-             518:      6(int) Load 505(coordTemp)
-             519:    7(ivec2) Load 512(storeTempPost)
-                              ImageWrite 517 518 519
-             521:     78(ptr) AccessChain 66 56
-             522:      6(int) Load 521
-                              Store 520(coordTemp) 522
-             524:          74 Load 76(g_tTex1df2)
-             525:      6(int) Load 520(coordTemp)
-             526:   21(fvec2) ImageRead 524 525
-                              Store 523(storeTempPre) 526
-             528:   21(fvec2) Load 523(storeTempPre)
-                              Store 527(storeTempPost) 528
-             529:   21(fvec2) Load 527(storeTempPost)
-             530:   21(fvec2) CompositeConstruct 404 404
-             531:   21(fvec2) FSub 529 530
-                              Store 527(storeTempPost) 531
-             532:          74 Load 76(g_tTex1df2)
-             533:      6(int) Load 520(coordTemp)
-             534:   21(fvec2) Load 527(storeTempPost)
-                              ImageWrite 532 533 534
-             536:     78(ptr) AccessChain 66 56
-             537:      6(int) Load 536
-                              Store 535(coordTemp) 537
-             539:          88 Load 90(g_tTex1di2)
-             540:      6(int) Load 535(coordTemp)
-             541:    7(ivec2) ImageRead 539 540
-                              Store 538(storeTempPre) 541
-             543:    7(ivec2) Load 538(storeTempPre)
-                              Store 542(storeTempPost) 543
-             544:    7(ivec2) Load 542(storeTempPost)
-             545:    7(ivec2) CompositeConstruct 67 67
-             546:    7(ivec2) IAdd 544 545
-                              Store 542(storeTempPost) 546
-             547:          88 Load 90(g_tTex1di2)
-             548:      6(int) Load 535(coordTemp)
-             549:    7(ivec2) Load 542(storeTempPost)
-                              ImageWrite 547 548 549
-             551:     78(ptr) AccessChain 66 56
-             552:      6(int) Load 551
-                              Store 550(coordTemp) 552
-             554:          96 Load 98(g_tTex1du2)
-             555:      6(int) Load 550(coordTemp)
-             556:   14(ivec2) ImageRead 554 555
-                              Store 553(storeTempPre) 556
-             558:   14(ivec2) Load 553(storeTempPre)
-                              Store 557(storeTempPost) 558
-             559:   14(ivec2) Load 557(storeTempPost)
-             560:    7(ivec2) CompositeConstruct 67 67
-             561:   14(ivec2) ISub 559 560
-                              Store 557(storeTempPost) 561
-             562:          96 Load 98(g_tTex1du2)
-             563:      6(int) Load 550(coordTemp)
-             564:   14(ivec2) Load 557(storeTempPost)
-                              ImageWrite 562 563 564
-             566:         104 Load 106(g_tTex2df2)
-             569:   21(fvec2) ImageRead 566 568
-                              Store 565(storeTemp) 569
-             570:          74 Load 76(g_tTex1df2)
-             571:   21(fvec2) Load 565(storeTemp)
-                              ImageWrite 570 67 571
-             576:    575(ptr) AccessChain 573(psout) 56
-                              Store 576 574
-             577:43(PS_OUTPUT) Load 573(psout)
-                              ReturnValue 577
+             389:   21(fvec2) FunctionCall 40(SomeValue()
+                              Store 388(storeTemp) 389
+             390:         150 Load 152(g_tTex3df2)
+             391:    155(ptr) AccessChain 66 154
+             392:   62(ivec3) Load 391
+             393:   21(fvec2) Load 388(storeTemp)
+                              ImageWrite 390 392 393
+             394:         150 Load 152(g_tTex3df2)
+             395:    155(ptr) AccessChain 66 154
+             396:   62(ivec3) Load 395
+             397:   21(fvec2) Load 184(lf2)
+                              ImageWrite 394 396 397
+                              Store 398(storeTemp) 400
+             401:         163 Load 165(g_tTex3di2)
+             402:    155(ptr) AccessChain 66 154
+             403:   62(ivec3) Load 402
+             404:    7(ivec2) Load 398(storeTemp)
+                              ImageWrite 401 403 404
+                              Store 405(storeTemp) 407
+             408:         174 Load 176(g_tTex3du2)
+             409:    155(ptr) AccessChain 66 154
+             410:   62(ivec3) Load 409
+             411:   14(ivec2) Load 405(storeTemp)
+                              ImageWrite 408 410 411
+             412:          74 Load 76(g_tTex1df2)
+             413:     78(ptr) AccessChain 66 56
+             414:      6(int) Load 413
+             415:   42(fvec4) ImageRead 412 414
+             416:   20(float) CompositeExtract 415 0
+             417:   20(float) CompositeExtract 415 1
+             418:   21(fvec2) CompositeConstruct 416 417
+                              Store 419(param) 418
+             420:   21(fvec2) FunctionCall 25(Fn1(vf2;) 419(param)
+             421:          94 Load 96(g_tTex1di2)
+             422:     78(ptr) AccessChain 66 56
+             423:      6(int) Load 422
+             424:   63(ivec4) ImageRead 421 423
+             425:      6(int) CompositeExtract 424 0
+             426:      6(int) CompositeExtract 424 1
+             427:    7(ivec2) CompositeConstruct 425 426
+                              Store 428(param) 427
+             429:    7(ivec2) FunctionCall 11(Fn1(vi2;) 428(param)
+             430:         105 Load 107(g_tTex1du2)
+             431:     78(ptr) AccessChain 66 56
+             432:      6(int) Load 431
+             433:  111(ivec4) ImageRead 430 432
+             434:     13(int) CompositeExtract 433 0
+             435:     13(int) CompositeExtract 433 1
+             436:   14(ivec2) CompositeConstruct 434 435
+                              Store 437(param) 436
+             438:   14(ivec2) FunctionCall 18(Fn1(vu2;) 437(param)
+             441:           2 FunctionCall 37(Fn2(vf2;) 440(param)
+             442:   21(fvec2) Load 440(param)
+                              Store 439(tempArg) 442
+             443:          74 Load 76(g_tTex1df2)
+             444:     78(ptr) AccessChain 66 56
+             445:      6(int) Load 444
+             446:   21(fvec2) Load 439(tempArg)
+                              ImageWrite 443 445 446
+             449:           2 FunctionCall 29(Fn2(vi2;) 448(param)
+             450:    7(ivec2) Load 448(param)
+                              Store 447(tempArg) 450
+             451:          94 Load 96(g_tTex1di2)
+             452:     78(ptr) AccessChain 66 56
+             453:      6(int) Load 452
+             454:    7(ivec2) Load 447(tempArg)
+                              ImageWrite 451 453 454
+             457:           2 FunctionCall 33(Fn2(vu2;) 456(param)
+             458:   14(ivec2) Load 456(param)
+                              Store 455(tempArg) 458
+             459:         105 Load 107(g_tTex1du2)
+             460:     78(ptr) AccessChain 66 56
+             461:      6(int) Load 460
+             462:   14(ivec2) Load 455(tempArg)
+                              ImageWrite 459 461 462
+             464:     78(ptr) AccessChain 66 56
+             465:      6(int) Load 464
+                              Store 463(coordTemp) 465
+             467:          74 Load 76(g_tTex1df2)
+             468:      6(int) Load 463(coordTemp)
+             469:   42(fvec4) ImageRead 467 468
+             470:   20(float) CompositeExtract 469 0
+             471:   20(float) CompositeExtract 469 1
+             472:   21(fvec2) CompositeConstruct 470 471
+                              Store 466(storeTemp) 472
+             473:   21(fvec2) Load 466(storeTemp)
+             475:   21(fvec2) CompositeConstruct 474 474
+             476:   21(fvec2) FAdd 473 475
+                              Store 466(storeTemp) 476
+             477:          74 Load 76(g_tTex1df2)
+             478:      6(int) Load 463(coordTemp)
+             479:   21(fvec2) Load 466(storeTemp)
+                              ImageWrite 477 478 479
+             481:     78(ptr) AccessChain 66 56
+             482:      6(int) Load 481
+                              Store 480(coordTemp) 482
+             484:          94 Load 96(g_tTex1di2)
+             485:      6(int) Load 480(coordTemp)
+             486:   63(ivec4) ImageRead 484 485
+             487:      6(int) CompositeExtract 486 0
+             488:      6(int) CompositeExtract 486 1
+             489:    7(ivec2) CompositeConstruct 487 488
+                              Store 483(storeTemp) 489
+             490:    7(ivec2) Load 483(storeTemp)
+             491:    7(ivec2) CompositeConstruct 67 67
+             492:    7(ivec2) IAdd 490 491
+                              Store 483(storeTemp) 492
+             493:          94 Load 96(g_tTex1di2)
+             494:      6(int) Load 480(coordTemp)
+             495:    7(ivec2) Load 483(storeTemp)
+                              ImageWrite 493 494 495
+             497:     78(ptr) AccessChain 66 56
+             498:      6(int) Load 497
+                              Store 496(coordTemp) 498
+             500:         105 Load 107(g_tTex1du2)
+             501:      6(int) Load 496(coordTemp)
+             502:  111(ivec4) ImageRead 500 501
+             503:     13(int) CompositeExtract 502 0
+             504:     13(int) CompositeExtract 502 1
+             505:   14(ivec2) CompositeConstruct 503 504
+                              Store 499(storeTemp) 505
+             506:   14(ivec2) Load 499(storeTemp)
+             507:    7(ivec2) CompositeConstruct 67 67
+             508:   14(ivec2) IAdd 506 507
+                              Store 499(storeTemp) 508
+             509:         105 Load 107(g_tTex1du2)
+             510:      6(int) Load 496(coordTemp)
+             511:   14(ivec2) Load 499(storeTemp)
+                              ImageWrite 509 510 511
+             513:     78(ptr) AccessChain 66 56
+             514:      6(int) Load 513
+                              Store 512(coordTemp) 514
+             516:          74 Load 76(g_tTex1df2)
+             517:      6(int) Load 512(coordTemp)
+             518:   42(fvec4) ImageRead 516 517
+             519:   20(float) CompositeExtract 518 0
+             520:   20(float) CompositeExtract 518 1
+             521:   21(fvec2) CompositeConstruct 519 520
+                              Store 515(storeTemp) 521
+             522:   21(fvec2) Load 515(storeTemp)
+             523:   21(fvec2) CompositeConstruct 474 474
+             524:   21(fvec2) FSub 522 523
+                              Store 515(storeTemp) 524
+             525:          74 Load 76(g_tTex1df2)
+             526:      6(int) Load 512(coordTemp)
+             527:   21(fvec2) Load 515(storeTemp)
+                              ImageWrite 525 526 527
+             529:     78(ptr) AccessChain 66 56
+             530:      6(int) Load 529
+                              Store 528(coordTemp) 530
+             532:          94 Load 96(g_tTex1di2)
+             533:      6(int) Load 528(coordTemp)
+             534:   63(ivec4) ImageRead 532 533
+             535:      6(int) CompositeExtract 534 0
+             536:      6(int) CompositeExtract 534 1
+             537:    7(ivec2) CompositeConstruct 535 536
+                              Store 531(storeTemp) 537
+             538:    7(ivec2) Load 531(storeTemp)
+             539:    7(ivec2) CompositeConstruct 67 67
+             540:    7(ivec2) ISub 538 539
+                              Store 531(storeTemp) 540
+             541:          94 Load 96(g_tTex1di2)
+             542:      6(int) Load 528(coordTemp)
+             543:    7(ivec2) Load 531(storeTemp)
+                              ImageWrite 541 542 543
+             545:     78(ptr) AccessChain 66 56
+             546:      6(int) Load 545
+                              Store 544(coordTemp) 546
+             548:         105 Load 107(g_tTex1du2)
+             549:      6(int) Load 544(coordTemp)
+             550:  111(ivec4) ImageRead 548 549
+             551:     13(int) CompositeExtract 550 0
+             552:     13(int) CompositeExtract 550 1
+             553:   14(ivec2) CompositeConstruct 551 552
+                              Store 547(storeTemp) 553
+             554:   14(ivec2) Load 547(storeTemp)
+             555:    7(ivec2) CompositeConstruct 67 67
+             556:   14(ivec2) ISub 554 555
+                              Store 547(storeTemp) 556
+             557:         105 Load 107(g_tTex1du2)
+             558:      6(int) Load 544(coordTemp)
+             559:   14(ivec2) Load 547(storeTemp)
+                              ImageWrite 557 558 559
+             561:     78(ptr) AccessChain 66 56
+             562:      6(int) Load 561
+                              Store 560(coordTemp) 562
+             564:          74 Load 76(g_tTex1df2)
+             565:      6(int) Load 560(coordTemp)
+             566:   42(fvec4) ImageRead 564 565
+             567:   20(float) CompositeExtract 566 0
+             568:   20(float) CompositeExtract 566 1
+             569:   21(fvec2) CompositeConstruct 567 568
+                              Store 563(storeTempPre) 569
+             571:   21(fvec2) Load 563(storeTempPre)
+                              Store 570(storeTempPost) 571
+             572:   21(fvec2) Load 570(storeTempPost)
+             573:   21(fvec2) CompositeConstruct 474 474
+             574:   21(fvec2) FAdd 572 573
+                              Store 570(storeTempPost) 574
+             575:          74 Load 76(g_tTex1df2)
+             576:      6(int) Load 560(coordTemp)
+             577:   21(fvec2) Load 570(storeTempPost)
+                              ImageWrite 575 576 577
+             579:     78(ptr) AccessChain 66 56
+             580:      6(int) Load 579
+                              Store 578(coordTemp) 580
+             582:         105 Load 107(g_tTex1du2)
+             583:      6(int) Load 578(coordTemp)
+             584:  111(ivec4) ImageRead 582 583
+             585:     13(int) CompositeExtract 584 0
+             586:     13(int) CompositeExtract 584 1
+             587:   14(ivec2) CompositeConstruct 585 586
+                              Store 581(storeTempPre) 587
+             589:   14(ivec2) Load 581(storeTempPre)
+                              Store 588(storeTempPost) 589
+             590:   14(ivec2) Load 588(storeTempPost)
+             591:    7(ivec2) CompositeConstruct 67 67
+             592:   14(ivec2) ISub 590 591
+                              Store 588(storeTempPost) 592
+             593:         105 Load 107(g_tTex1du2)
+             594:      6(int) Load 578(coordTemp)
+             595:   14(ivec2) Load 588(storeTempPost)
+                              ImageWrite 593 594 595
+             597:     78(ptr) AccessChain 66 56
+             598:      6(int) Load 597
+                              Store 596(coordTemp) 598
+             600:          94 Load 96(g_tTex1di2)
+             601:      6(int) Load 596(coordTemp)
+             602:   63(ivec4) ImageRead 600 601
+             603:      6(int) CompositeExtract 602 0
+             604:      6(int) CompositeExtract 602 1
+             605:    7(ivec2) CompositeConstruct 603 604
+                              Store 599(storeTempPre) 605
+             607:    7(ivec2) Load 599(storeTempPre)
+                              Store 606(storeTempPost) 607
+             608:    7(ivec2) Load 606(storeTempPost)
+             609:    7(ivec2) CompositeConstruct 67 67
+             610:    7(ivec2) IAdd 608 609
+                              Store 606(storeTempPost) 610
+             611:          94 Load 96(g_tTex1di2)
+             612:      6(int) Load 596(coordTemp)
+             613:    7(ivec2) Load 606(storeTempPost)
+                              ImageWrite 611 612 613
+             615:     78(ptr) AccessChain 66 56
+             616:      6(int) Load 615
+                              Store 614(coordTemp) 616
+             618:          74 Load 76(g_tTex1df2)
+             619:      6(int) Load 614(coordTemp)
+             620:   42(fvec4) ImageRead 618 619
+             621:   20(float) CompositeExtract 620 0
+             622:   20(float) CompositeExtract 620 1
+             623:   21(fvec2) CompositeConstruct 621 622
+                              Store 617(storeTempPre) 623
+             625:   21(fvec2) Load 617(storeTempPre)
+                              Store 624(storeTempPost) 625
+             626:   21(fvec2) Load 624(storeTempPost)
+             627:   21(fvec2) CompositeConstruct 474 474
+             628:   21(fvec2) FSub 626 627
+                              Store 624(storeTempPost) 628
+             629:          74 Load 76(g_tTex1df2)
+             630:      6(int) Load 614(coordTemp)
+             631:   21(fvec2) Load 624(storeTempPost)
+                              ImageWrite 629 630 631
+             633:     78(ptr) AccessChain 66 56
+             634:      6(int) Load 633
+                              Store 632(coordTemp) 634
+             636:          94 Load 96(g_tTex1di2)
+             637:      6(int) Load 632(coordTemp)
+             638:   63(ivec4) ImageRead 636 637
+             639:      6(int) CompositeExtract 638 0
+             640:      6(int) CompositeExtract 638 1
+             641:    7(ivec2) CompositeConstruct 639 640
+                              Store 635(storeTempPre) 641
+             643:    7(ivec2) Load 635(storeTempPre)
+                              Store 642(storeTempPost) 643
+             644:    7(ivec2) Load 642(storeTempPost)
+             645:    7(ivec2) CompositeConstruct 67 67
+             646:    7(ivec2) IAdd 644 645
+                              Store 642(storeTempPost) 646
+             647:          94 Load 96(g_tTex1di2)
+             648:      6(int) Load 632(coordTemp)
+             649:    7(ivec2) Load 642(storeTempPost)
+                              ImageWrite 647 648 649
+             651:     78(ptr) AccessChain 66 56
+             652:      6(int) Load 651
+                              Store 650(coordTemp) 652
+             654:         105 Load 107(g_tTex1du2)
+             655:      6(int) Load 650(coordTemp)
+             656:  111(ivec4) ImageRead 654 655
+             657:     13(int) CompositeExtract 656 0
+             658:     13(int) CompositeExtract 656 1
+             659:   14(ivec2) CompositeConstruct 657 658
+                              Store 653(storeTempPre) 659
+             661:   14(ivec2) Load 653(storeTempPre)
+                              Store 660(storeTempPost) 661
+             662:   14(ivec2) Load 660(storeTempPost)
+             663:    7(ivec2) CompositeConstruct 67 67
+             664:   14(ivec2) ISub 662 663
+                              Store 660(storeTempPost) 664
+             665:         105 Load 107(g_tTex1du2)
+             666:      6(int) Load 650(coordTemp)
+             667:   14(ivec2) Load 660(storeTempPost)
+                              ImageWrite 665 666 667
+             669:         117 Load 119(g_tTex2df2)
+             672:   42(fvec4) ImageRead 669 671
+             673:   20(float) CompositeExtract 672 0
+             674:   20(float) CompositeExtract 672 1
+             675:   21(fvec2) CompositeConstruct 673 674
+                              Store 668(storeTemp) 675
+             676:          74 Load 76(g_tTex1df2)
+             677:   21(fvec2) Load 668(storeTemp)
+                              ImageWrite 676 67 677
+             682:    681(ptr) AccessChain 679(psout) 56
+                              Store 682 680
+             683:43(PS_OUTPUT) Load 679(psout)
+                              ReturnValue 683
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.sample.array.dx10.frag.out b/Test/baseResults/hlsl.sample.array.dx10.frag.out
index 6ecbcf3..28d96f0 100644
--- a/Test/baseResults/hlsl.sample.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.array.dx10.frag.out
@@ -13,9 +13,9 @@
 0:27            Construct combined texture-sampler ( temp sampler1DArray)
 0:27              'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:27            Constant:
+0:27              0.100000
+0:27              0.200000
 0:28      Sequence
 0:28        move second child to first child ( temp 4-component vector of int)
 0:28          'txval11' ( temp 4-component vector of int)
@@ -23,9 +23,9 @@
 0:28            Construct combined texture-sampler ( temp isampler1DArray)
 0:28              'g_tTex1di4' ( uniform itexture1DArray)
 0:28              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.200000
-0:?               0.300000
+0:28            Constant:
+0:28              0.200000
+0:28              0.300000
 0:29      Sequence
 0:29        move second child to first child ( temp 4-component vector of uint)
 0:29          'txval12' ( temp 4-component vector of uint)
@@ -33,9 +33,9 @@
 0:29            Construct combined texture-sampler ( temp usampler1DArray)
 0:29              'g_tTex1du4' ( uniform utexture1DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:29            Constant:
+0:29              0.300000
+0:29              0.400000
 0:31      Sequence
 0:31        move second child to first child ( temp 4-component vector of float)
 0:31          'txval20' ( temp 4-component vector of float)
@@ -43,10 +43,10 @@
 0:31            Construct combined texture-sampler ( temp sampler2DArray)
 0:31              'g_tTex2df4' ( uniform texture2DArray)
 0:31              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:31            Constant:
+0:31              0.100000
+0:31              0.200000
+0:31              0.300000
 0:32      Sequence
 0:32        move second child to first child ( temp 4-component vector of int)
 0:32          'txval21' ( temp 4-component vector of int)
@@ -54,10 +54,10 @@
 0:32            Construct combined texture-sampler ( temp isampler2DArray)
 0:32              'g_tTex2di4' ( uniform itexture2DArray)
 0:32              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.500000
+0:32            Constant:
+0:32              0.300000
+0:32              0.400000
+0:32              0.500000
 0:33      Sequence
 0:33        move second child to first child ( temp 4-component vector of uint)
 0:33          'txval22' ( temp 4-component vector of uint)
@@ -65,10 +65,10 @@
 0:33            Construct combined texture-sampler ( temp usampler2DArray)
 0:33              'g_tTex2du4' ( uniform utexture2DArray)
 0:33              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:33            Constant:
+0:33              0.500000
+0:33              0.600000
+0:33              0.700000
 0:35      Sequence
 0:35        move second child to first child ( temp 4-component vector of float)
 0:35          'txval40' ( temp 4-component vector of float)
@@ -76,11 +76,11 @@
 0:35            Construct combined texture-sampler ( temp samplerCubeArray)
 0:35              'g_tTexcdf4' ( uniform textureCubeArray)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?               0.400000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35              0.300000
+0:35              0.400000
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of int)
 0:36          'txval41' ( temp 4-component vector of int)
@@ -88,11 +88,11 @@
 0:36            Construct combined texture-sampler ( temp isamplerCubeArray)
 0:36              'g_tTexcdi4' ( uniform itextureCubeArray)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:36            Constant:
+0:36              0.400000
+0:36              0.500000
+0:36              0.600000
+0:36              0.700000
 0:37      Sequence
 0:37        move second child to first child ( temp 4-component vector of uint)
 0:37          'txval42' ( temp 4-component vector of uint)
@@ -100,11 +100,11 @@
 0:37            Construct combined texture-sampler ( temp usamplerCubeArray)
 0:37              'g_tTexcdu4' ( uniform utextureCubeArray)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?               1.000000
+0:37            Constant:
+0:37              0.700000
+0:37              0.800000
+0:37              0.900000
+0:37              1.000000
 0:39      move second child to first child ( temp 4-component vector of float)
 0:39        Color: direct index for structure ( temp 4-component vector of float)
 0:39          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -176,9 +176,9 @@
 0:27            Construct combined texture-sampler ( temp sampler1DArray)
 0:27              'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:27            Constant:
+0:27              0.100000
+0:27              0.200000
 0:28      Sequence
 0:28        move second child to first child ( temp 4-component vector of int)
 0:28          'txval11' ( temp 4-component vector of int)
@@ -186,9 +186,9 @@
 0:28            Construct combined texture-sampler ( temp isampler1DArray)
 0:28              'g_tTex1di4' ( uniform itexture1DArray)
 0:28              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.200000
-0:?               0.300000
+0:28            Constant:
+0:28              0.200000
+0:28              0.300000
 0:29      Sequence
 0:29        move second child to first child ( temp 4-component vector of uint)
 0:29          'txval12' ( temp 4-component vector of uint)
@@ -196,9 +196,9 @@
 0:29            Construct combined texture-sampler ( temp usampler1DArray)
 0:29              'g_tTex1du4' ( uniform utexture1DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:29            Constant:
+0:29              0.300000
+0:29              0.400000
 0:31      Sequence
 0:31        move second child to first child ( temp 4-component vector of float)
 0:31          'txval20' ( temp 4-component vector of float)
@@ -206,10 +206,10 @@
 0:31            Construct combined texture-sampler ( temp sampler2DArray)
 0:31              'g_tTex2df4' ( uniform texture2DArray)
 0:31              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:31            Constant:
+0:31              0.100000
+0:31              0.200000
+0:31              0.300000
 0:32      Sequence
 0:32        move second child to first child ( temp 4-component vector of int)
 0:32          'txval21' ( temp 4-component vector of int)
@@ -217,10 +217,10 @@
 0:32            Construct combined texture-sampler ( temp isampler2DArray)
 0:32              'g_tTex2di4' ( uniform itexture2DArray)
 0:32              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.500000
+0:32            Constant:
+0:32              0.300000
+0:32              0.400000
+0:32              0.500000
 0:33      Sequence
 0:33        move second child to first child ( temp 4-component vector of uint)
 0:33          'txval22' ( temp 4-component vector of uint)
@@ -228,10 +228,10 @@
 0:33            Construct combined texture-sampler ( temp usampler2DArray)
 0:33              'g_tTex2du4' ( uniform utexture2DArray)
 0:33              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:33            Constant:
+0:33              0.500000
+0:33              0.600000
+0:33              0.700000
 0:35      Sequence
 0:35        move second child to first child ( temp 4-component vector of float)
 0:35          'txval40' ( temp 4-component vector of float)
@@ -239,11 +239,11 @@
 0:35            Construct combined texture-sampler ( temp samplerCubeArray)
 0:35              'g_tTexcdf4' ( uniform textureCubeArray)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?               0.400000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35              0.300000
+0:35              0.400000
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of int)
 0:36          'txval41' ( temp 4-component vector of int)
@@ -251,11 +251,11 @@
 0:36            Construct combined texture-sampler ( temp isamplerCubeArray)
 0:36              'g_tTexcdi4' ( uniform itextureCubeArray)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:36            Constant:
+0:36              0.400000
+0:36              0.500000
+0:36              0.600000
+0:36              0.700000
 0:37      Sequence
 0:37        move second child to first child ( temp 4-component vector of uint)
 0:37          'txval42' ( temp 4-component vector of uint)
@@ -263,11 +263,11 @@
 0:37            Construct combined texture-sampler ( temp usamplerCubeArray)
 0:37              'g_tTexcdu4' ( uniform utextureCubeArray)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?               1.000000
+0:37            Constant:
+0:37              0.700000
+0:37              0.800000
+0:37              0.900000
+0:37              1.000000
 0:39      move second child to first child ( temp 4-component vector of float)
 0:39        Color: direct index for structure ( temp 4-component vector of float)
 0:39          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.sample.basic.dx10.frag.out b/Test/baseResults/hlsl.sample.basic.dx10.frag.out
index 9d06667..12c6711 100644
--- a/Test/baseResults/hlsl.sample.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.basic.dx10.frag.out
@@ -126,9 +126,9 @@
 0:74            Construct combined texture-sampler ( temp sampler2D)
 0:74              'g_tTex2df4' ( uniform texture2D)
 0:74              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:74            Constant:
+0:74              0.100000
+0:74              0.200000
 0:75      Sequence
 0:75        move second child to first child ( temp 4-component vector of int)
 0:75          'txval21' ( temp 4-component vector of int)
@@ -136,9 +136,9 @@
 0:75            Construct combined texture-sampler ( temp isampler2D)
 0:75              'g_tTex2di4' ( uniform itexture2D)
 0:75              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:75            Constant:
+0:75              0.300000
+0:75              0.400000
 0:76      Sequence
 0:76        move second child to first child ( temp 4-component vector of uint)
 0:76          'txval22' ( temp 4-component vector of uint)
@@ -146,9 +146,9 @@
 0:76            Construct combined texture-sampler ( temp usampler2D)
 0:76              'g_tTex2du4' ( uniform utexture2D)
 0:76              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
+0:76            Constant:
+0:76              0.500000
+0:76              0.600000
 0:78      Sequence
 0:78        move second child to first child ( temp 4-component vector of float)
 0:78          'txval30' ( temp 4-component vector of float)
@@ -156,10 +156,10 @@
 0:78            Construct combined texture-sampler ( temp sampler3D)
 0:78              'g_tTex3df4' ( uniform texture3D)
 0:78              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:78            Constant:
+0:78              0.100000
+0:78              0.200000
+0:78              0.300000
 0:79      Sequence
 0:79        move second child to first child ( temp 4-component vector of int)
 0:79          'txval31' ( temp 4-component vector of int)
@@ -167,10 +167,10 @@
 0:79            Construct combined texture-sampler ( temp isampler3D)
 0:79              'g_tTex3di4' ( uniform itexture3D)
 0:79              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:79            Constant:
+0:79              0.400000
+0:79              0.500000
+0:79              0.600000
 0:80      Sequence
 0:80        move second child to first child ( temp 4-component vector of uint)
 0:80          'txval32' ( temp 4-component vector of uint)
@@ -178,10 +178,10 @@
 0:80            Construct combined texture-sampler ( temp usampler3D)
 0:80              'g_tTex3du4' ( uniform utexture3D)
 0:80              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:80            Constant:
+0:80              0.700000
+0:80              0.800000
+0:80              0.900000
 0:82      Sequence
 0:82        move second child to first child ( temp 4-component vector of float)
 0:82          'txval40' ( temp 4-component vector of float)
@@ -189,10 +189,10 @@
 0:82            Construct combined texture-sampler ( temp samplerCube)
 0:82              'g_tTexcdf4' ( uniform textureCube)
 0:82              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:82            Constant:
+0:82              0.100000
+0:82              0.200000
+0:82              0.300000
 0:83      Sequence
 0:83        move second child to first child ( temp 4-component vector of int)
 0:83          'txval41' ( temp 4-component vector of int)
@@ -200,10 +200,10 @@
 0:83            Construct combined texture-sampler ( temp isamplerCube)
 0:83              'g_tTexcdi4' ( uniform itextureCube)
 0:83              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:83            Constant:
+0:83              0.400000
+0:83              0.500000
+0:83              0.600000
 0:84      Sequence
 0:84        move second child to first child ( temp 4-component vector of uint)
 0:84          'txval42' ( temp 4-component vector of uint)
@@ -211,10 +211,10 @@
 0:84            Construct combined texture-sampler ( temp usamplerCube)
 0:84              'g_tTexcdu4' ( uniform utextureCube)
 0:84              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:84            Constant:
+0:84              0.700000
+0:84              0.800000
+0:84              0.900000
 0:86      move second child to first child ( temp 4-component vector of float)
 0:86        Color: direct index for structure ( temp 4-component vector of float)
 0:86          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -402,9 +402,9 @@
 0:74            Construct combined texture-sampler ( temp sampler2D)
 0:74              'g_tTex2df4' ( uniform texture2D)
 0:74              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:74            Constant:
+0:74              0.100000
+0:74              0.200000
 0:75      Sequence
 0:75        move second child to first child ( temp 4-component vector of int)
 0:75          'txval21' ( temp 4-component vector of int)
@@ -412,9 +412,9 @@
 0:75            Construct combined texture-sampler ( temp isampler2D)
 0:75              'g_tTex2di4' ( uniform itexture2D)
 0:75              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:75            Constant:
+0:75              0.300000
+0:75              0.400000
 0:76      Sequence
 0:76        move second child to first child ( temp 4-component vector of uint)
 0:76          'txval22' ( temp 4-component vector of uint)
@@ -422,9 +422,9 @@
 0:76            Construct combined texture-sampler ( temp usampler2D)
 0:76              'g_tTex2du4' ( uniform utexture2D)
 0:76              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
+0:76            Constant:
+0:76              0.500000
+0:76              0.600000
 0:78      Sequence
 0:78        move second child to first child ( temp 4-component vector of float)
 0:78          'txval30' ( temp 4-component vector of float)
@@ -432,10 +432,10 @@
 0:78            Construct combined texture-sampler ( temp sampler3D)
 0:78              'g_tTex3df4' ( uniform texture3D)
 0:78              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:78            Constant:
+0:78              0.100000
+0:78              0.200000
+0:78              0.300000
 0:79      Sequence
 0:79        move second child to first child ( temp 4-component vector of int)
 0:79          'txval31' ( temp 4-component vector of int)
@@ -443,10 +443,10 @@
 0:79            Construct combined texture-sampler ( temp isampler3D)
 0:79              'g_tTex3di4' ( uniform itexture3D)
 0:79              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:79            Constant:
+0:79              0.400000
+0:79              0.500000
+0:79              0.600000
 0:80      Sequence
 0:80        move second child to first child ( temp 4-component vector of uint)
 0:80          'txval32' ( temp 4-component vector of uint)
@@ -454,10 +454,10 @@
 0:80            Construct combined texture-sampler ( temp usampler3D)
 0:80              'g_tTex3du4' ( uniform utexture3D)
 0:80              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:80            Constant:
+0:80              0.700000
+0:80              0.800000
+0:80              0.900000
 0:82      Sequence
 0:82        move second child to first child ( temp 4-component vector of float)
 0:82          'txval40' ( temp 4-component vector of float)
@@ -465,10 +465,10 @@
 0:82            Construct combined texture-sampler ( temp samplerCube)
 0:82              'g_tTexcdf4' ( uniform textureCube)
 0:82              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:82            Constant:
+0:82              0.100000
+0:82              0.200000
+0:82              0.300000
 0:83      Sequence
 0:83        move second child to first child ( temp 4-component vector of int)
 0:83          'txval41' ( temp 4-component vector of int)
@@ -476,10 +476,10 @@
 0:83            Construct combined texture-sampler ( temp isamplerCube)
 0:83              'g_tTexcdi4' ( uniform itextureCube)
 0:83              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:83            Constant:
+0:83              0.400000
+0:83              0.500000
+0:83              0.600000
 0:84      Sequence
 0:84        move second child to first child ( temp 4-component vector of uint)
 0:84          'txval42' ( temp 4-component vector of uint)
@@ -487,10 +487,10 @@
 0:84            Construct combined texture-sampler ( temp usamplerCube)
 0:84              'g_tTexcdu4' ( uniform utextureCube)
 0:84              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:84            Constant:
+0:84              0.700000
+0:84              0.800000
+0:84              0.900000
 0:86      move second child to first child ( temp 4-component vector of float)
 0:86        Color: direct index for structure ( temp 4-component vector of float)
 0:86          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.sample.dx9.frag.out b/Test/baseResults/hlsl.sample.dx9.frag.out
index 5f2aecd..282455c 100644
--- a/Test/baseResults/hlsl.sample.dx9.frag.out
+++ b/Test/baseResults/hlsl.sample.dx9.frag.out
@@ -9,18 +9,18 @@
 0:18      Sequence
 0:18        move second child to first child ( temp 4-component vector of float)
 0:18          'ColorOut' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:18          Constant:
+0:18            0.000000
+0:18            0.000000
+0:18            0.000000
+0:18            0.000000
 0:20      add second child into first child ( temp 4-component vector of float)
 0:20        'ColorOut' ( temp 4-component vector of float)
 0:20        texture ( temp 4-component vector of float)
 0:20          'g_sam' (layout( binding=0) uniform sampler2D)
-0:?           Constant:
-0:?             0.400000
-0:?             0.300000
+0:20          Constant:
+0:20            0.400000
+0:20            0.300000
 0:21      add second child into first child ( temp 4-component vector of float)
 0:21        'ColorOut' ( temp 4-component vector of float)
 0:21        texture ( temp 4-component vector of float)
@@ -31,41 +31,41 @@
 0:22        'ColorOut' ( temp 4-component vector of float)
 0:22        texture ( temp 4-component vector of float)
 0:22          'g_sam2D' (layout( binding=2) uniform sampler2D)
-0:?           Constant:
-0:?             0.500000
-0:?             0.600000
+0:22          Constant:
+0:22            0.500000
+0:22            0.600000
 0:23      add second child into first child ( temp 4-component vector of float)
 0:23        'ColorOut' ( temp 4-component vector of float)
 0:23        texture ( temp 4-component vector of float)
 0:23          'g_sam3D' (layout( binding=3) uniform sampler3D)
-0:?           Constant:
-0:?             0.500000
-0:?             0.600000
-0:?             0.400000
+0:23          Constant:
+0:23            0.500000
+0:23            0.600000
+0:23            0.400000
 0:24      add second child into first child ( temp 4-component vector of float)
 0:24        'ColorOut' ( temp 4-component vector of float)
 0:24        texture ( temp 4-component vector of float)
 0:24          'g_samCube' (layout( binding=4) uniform samplerCube)
-0:?           Constant:
-0:?             0.500000
-0:?             0.600000
-0:?             0.400000
+0:24          Constant:
+0:24            0.500000
+0:24            0.600000
+0:24            0.400000
 0:26      add second child into first child ( temp 4-component vector of float)
 0:26        'ColorOut' ( temp 4-component vector of float)
 0:26        textureLod ( temp 4-component vector of float)
 0:26          'g_sam' (layout( binding=0) uniform sampler2D)
 0:26          Construct vec2 ( temp 2-component vector of float)
-0:?             Constant:
-0:?               0.400000
-0:?               0.300000
-0:?               0.000000
-0:?               0.000000
+0:26            Constant:
+0:26              0.400000
+0:26              0.300000
+0:26              0.000000
+0:26              0.000000
 0:26          direct index ( temp float)
-0:?             Constant:
-0:?               0.400000
-0:?               0.300000
-0:?               0.000000
-0:?               0.000000
+0:26            Constant:
+0:26              0.400000
+0:26              0.300000
+0:26              0.000000
+0:26              0.000000
 0:26            Constant:
 0:26              3 (const int)
 0:27      add second child into first child ( temp 4-component vector of float)
@@ -73,17 +73,17 @@
 0:27        textureLod ( temp 4-component vector of float)
 0:27          'g_sam1D' (layout( binding=1) uniform sampler1D)
 0:27          Construct float ( temp float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.000000
-0:?               0.000000
-0:?               0.000000
+0:27            Constant:
+0:27              0.500000
+0:27              0.000000
+0:27              0.000000
+0:27              0.000000
 0:27          direct index ( temp float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.000000
-0:?               0.000000
-0:?               0.000000
+0:27            Constant:
+0:27              0.500000
+0:27              0.000000
+0:27              0.000000
+0:27              0.000000
 0:27            Constant:
 0:27              3 (const int)
 0:28      add second child into first child ( temp 4-component vector of float)
@@ -91,17 +91,17 @@
 0:28        textureLod ( temp 4-component vector of float)
 0:28          'g_sam2D' (layout( binding=2) uniform sampler2D)
 0:28          Construct vec2 ( temp 2-component vector of float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.000000
-0:?               0.000000
+0:28            Constant:
+0:28              0.500000
+0:28              0.600000
+0:28              0.000000
+0:28              0.000000
 0:28          direct index ( temp float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.000000
-0:?               0.000000
+0:28            Constant:
+0:28              0.500000
+0:28              0.600000
+0:28              0.000000
+0:28              0.000000
 0:28            Constant:
 0:28              3 (const int)
 0:29      add second child into first child ( temp 4-component vector of float)
@@ -109,17 +109,17 @@
 0:29        textureLod ( temp 4-component vector of float)
 0:29          'g_sam3D' (layout( binding=3) uniform sampler3D)
 0:29          Construct vec3 ( temp 3-component vector of float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.400000
-0:?               0.000000
+0:29            Constant:
+0:29              0.500000
+0:29              0.600000
+0:29              0.400000
+0:29              0.000000
 0:29          direct index ( temp float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.400000
-0:?               0.000000
+0:29            Constant:
+0:29              0.500000
+0:29              0.600000
+0:29              0.400000
+0:29              0.000000
 0:29            Constant:
 0:29              3 (const int)
 0:30      add second child into first child ( temp 4-component vector of float)
@@ -127,17 +127,17 @@
 0:30        textureLod ( temp 4-component vector of float)
 0:30          'g_samCube' (layout( binding=4) uniform samplerCube)
 0:30          Construct vec3 ( temp 3-component vector of float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.400000
-0:?               0.000000
+0:30            Constant:
+0:30              0.500000
+0:30              0.600000
+0:30              0.400000
+0:30              0.000000
 0:30          direct index ( temp float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.400000
-0:?               0.000000
+0:30            Constant:
+0:30              0.500000
+0:30              0.600000
+0:30              0.400000
+0:30              0.000000
 0:30            Constant:
 0:30              3 (const int)
 0:32      move second child to first child ( temp 4-component vector of float)
@@ -200,18 +200,18 @@
 0:18      Sequence
 0:18        move second child to first child ( temp 4-component vector of float)
 0:18          'ColorOut' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:18          Constant:
+0:18            0.000000
+0:18            0.000000
+0:18            0.000000
+0:18            0.000000
 0:20      add second child into first child ( temp 4-component vector of float)
 0:20        'ColorOut' ( temp 4-component vector of float)
 0:20        texture ( temp 4-component vector of float)
 0:20          'g_sam' (layout( binding=0) uniform sampler2D)
-0:?           Constant:
-0:?             0.400000
-0:?             0.300000
+0:20          Constant:
+0:20            0.400000
+0:20            0.300000
 0:21      add second child into first child ( temp 4-component vector of float)
 0:21        'ColorOut' ( temp 4-component vector of float)
 0:21        texture ( temp 4-component vector of float)
@@ -222,41 +222,41 @@
 0:22        'ColorOut' ( temp 4-component vector of float)
 0:22        texture ( temp 4-component vector of float)
 0:22          'g_sam2D' (layout( binding=2) uniform sampler2D)
-0:?           Constant:
-0:?             0.500000
-0:?             0.600000
+0:22          Constant:
+0:22            0.500000
+0:22            0.600000
 0:23      add second child into first child ( temp 4-component vector of float)
 0:23        'ColorOut' ( temp 4-component vector of float)
 0:23        texture ( temp 4-component vector of float)
 0:23          'g_sam3D' (layout( binding=3) uniform sampler3D)
-0:?           Constant:
-0:?             0.500000
-0:?             0.600000
-0:?             0.400000
+0:23          Constant:
+0:23            0.500000
+0:23            0.600000
+0:23            0.400000
 0:24      add second child into first child ( temp 4-component vector of float)
 0:24        'ColorOut' ( temp 4-component vector of float)
 0:24        texture ( temp 4-component vector of float)
 0:24          'g_samCube' (layout( binding=4) uniform samplerCube)
-0:?           Constant:
-0:?             0.500000
-0:?             0.600000
-0:?             0.400000
+0:24          Constant:
+0:24            0.500000
+0:24            0.600000
+0:24            0.400000
 0:26      add second child into first child ( temp 4-component vector of float)
 0:26        'ColorOut' ( temp 4-component vector of float)
 0:26        textureLod ( temp 4-component vector of float)
 0:26          'g_sam' (layout( binding=0) uniform sampler2D)
 0:26          Construct vec2 ( temp 2-component vector of float)
-0:?             Constant:
-0:?               0.400000
-0:?               0.300000
-0:?               0.000000
-0:?               0.000000
+0:26            Constant:
+0:26              0.400000
+0:26              0.300000
+0:26              0.000000
+0:26              0.000000
 0:26          direct index ( temp float)
-0:?             Constant:
-0:?               0.400000
-0:?               0.300000
-0:?               0.000000
-0:?               0.000000
+0:26            Constant:
+0:26              0.400000
+0:26              0.300000
+0:26              0.000000
+0:26              0.000000
 0:26            Constant:
 0:26              3 (const int)
 0:27      add second child into first child ( temp 4-component vector of float)
@@ -264,17 +264,17 @@
 0:27        textureLod ( temp 4-component vector of float)
 0:27          'g_sam1D' (layout( binding=1) uniform sampler1D)
 0:27          Construct float ( temp float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.000000
-0:?               0.000000
-0:?               0.000000
+0:27            Constant:
+0:27              0.500000
+0:27              0.000000
+0:27              0.000000
+0:27              0.000000
 0:27          direct index ( temp float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.000000
-0:?               0.000000
-0:?               0.000000
+0:27            Constant:
+0:27              0.500000
+0:27              0.000000
+0:27              0.000000
+0:27              0.000000
 0:27            Constant:
 0:27              3 (const int)
 0:28      add second child into first child ( temp 4-component vector of float)
@@ -282,17 +282,17 @@
 0:28        textureLod ( temp 4-component vector of float)
 0:28          'g_sam2D' (layout( binding=2) uniform sampler2D)
 0:28          Construct vec2 ( temp 2-component vector of float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.000000
-0:?               0.000000
+0:28            Constant:
+0:28              0.500000
+0:28              0.600000
+0:28              0.000000
+0:28              0.000000
 0:28          direct index ( temp float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.000000
-0:?               0.000000
+0:28            Constant:
+0:28              0.500000
+0:28              0.600000
+0:28              0.000000
+0:28              0.000000
 0:28            Constant:
 0:28              3 (const int)
 0:29      add second child into first child ( temp 4-component vector of float)
@@ -300,17 +300,17 @@
 0:29        textureLod ( temp 4-component vector of float)
 0:29          'g_sam3D' (layout( binding=3) uniform sampler3D)
 0:29          Construct vec3 ( temp 3-component vector of float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.400000
-0:?               0.000000
+0:29            Constant:
+0:29              0.500000
+0:29              0.600000
+0:29              0.400000
+0:29              0.000000
 0:29          direct index ( temp float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.400000
-0:?               0.000000
+0:29            Constant:
+0:29              0.500000
+0:29              0.600000
+0:29              0.400000
+0:29              0.000000
 0:29            Constant:
 0:29              3 (const int)
 0:30      add second child into first child ( temp 4-component vector of float)
@@ -318,17 +318,17 @@
 0:30        textureLod ( temp 4-component vector of float)
 0:30          'g_samCube' (layout( binding=4) uniform samplerCube)
 0:30          Construct vec3 ( temp 3-component vector of float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.400000
-0:?               0.000000
+0:30            Constant:
+0:30              0.500000
+0:30              0.600000
+0:30              0.400000
+0:30              0.000000
 0:30          direct index ( temp float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.400000
-0:?               0.000000
+0:30            Constant:
+0:30              0.500000
+0:30              0.600000
+0:30              0.400000
+0:30              0.000000
 0:30            Constant:
 0:30              3 (const int)
 0:32      move second child to first child ( temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.sample.dx9.vert.out b/Test/baseResults/hlsl.sample.dx9.vert.out
index 0b47bff..4b718cf 100644
--- a/Test/baseResults/hlsl.sample.dx9.vert.out
+++ b/Test/baseResults/hlsl.sample.dx9.vert.out
@@ -7,27 +7,27 @@
 0:14      Sequence
 0:14        move second child to first child ( temp 4-component vector of float)
 0:14          'PosOut' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:14          Constant:
+0:14            0.000000
+0:14            0.000000
+0:14            0.000000
+0:14            0.000000
 0:16      add second child into first child ( temp 4-component vector of float)
 0:16        'PosOut' ( temp 4-component vector of float)
 0:16        textureLod ( temp 4-component vector of float)
 0:16          'g_sam' (layout( binding=0) uniform sampler2D)
 0:16          Construct vec2 ( temp 2-component vector of float)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.000000
-0:?               1.000000
+0:16            Constant:
+0:16              0.300000
+0:16              0.400000
+0:16              0.000000
+0:16              1.000000
 0:16          direct index ( temp float)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.000000
-0:?               1.000000
+0:16            Constant:
+0:16              0.300000
+0:16              0.400000
+0:16              0.000000
+0:16              1.000000
 0:16            Constant:
 0:16              3 (const int)
 0:17      add second child into first child ( temp 4-component vector of float)
@@ -35,17 +35,17 @@
 0:17        textureLod ( temp 4-component vector of float)
 0:17          'g_sam2D' (layout( binding=1) uniform sampler2D)
 0:17          Construct vec2 ( temp 2-component vector of float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.000000
-0:?               1.000000
+0:17            Constant:
+0:17              0.500000
+0:17              0.600000
+0:17              0.000000
+0:17              1.000000
 0:17          direct index ( temp float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.000000
-0:?               1.000000
+0:17            Constant:
+0:17              0.500000
+0:17              0.600000
+0:17              0.000000
+0:17              1.000000
 0:17            Constant:
 0:17              3 (const int)
 0:19      move second child to first child ( temp 4-component vector of float)
@@ -86,27 +86,27 @@
 0:14      Sequence
 0:14        move second child to first child ( temp 4-component vector of float)
 0:14          'PosOut' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:14          Constant:
+0:14            0.000000
+0:14            0.000000
+0:14            0.000000
+0:14            0.000000
 0:16      add second child into first child ( temp 4-component vector of float)
 0:16        'PosOut' ( temp 4-component vector of float)
 0:16        textureLod ( temp 4-component vector of float)
 0:16          'g_sam' (layout( binding=0) uniform sampler2D)
 0:16          Construct vec2 ( temp 2-component vector of float)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.000000
-0:?               1.000000
+0:16            Constant:
+0:16              0.300000
+0:16              0.400000
+0:16              0.000000
+0:16              1.000000
 0:16          direct index ( temp float)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.000000
-0:?               1.000000
+0:16            Constant:
+0:16              0.300000
+0:16              0.400000
+0:16              0.000000
+0:16              1.000000
 0:16            Constant:
 0:16              3 (const int)
 0:17      add second child into first child ( temp 4-component vector of float)
@@ -114,17 +114,17 @@
 0:17        textureLod ( temp 4-component vector of float)
 0:17          'g_sam2D' (layout( binding=1) uniform sampler2D)
 0:17          Construct vec2 ( temp 2-component vector of float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.000000
-0:?               1.000000
+0:17            Constant:
+0:17              0.500000
+0:17              0.600000
+0:17              0.000000
+0:17              1.000000
 0:17          direct index ( temp float)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.000000
-0:?               1.000000
+0:17            Constant:
+0:17              0.500000
+0:17              0.600000
+0:17              0.000000
+0:17              1.000000
 0:17            Constant:
 0:17              3 (const int)
 0:19      move second child to first child ( temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.sample.offset.dx10.frag.out b/Test/baseResults/hlsl.sample.offset.dx10.frag.out
index fc91699..e5d204f 100644
--- a/Test/baseResults/hlsl.sample.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.offset.dx10.frag.out
@@ -46,12 +46,12 @@
 0:35            Construct combined texture-sampler ( temp sampler2D)
 0:35              'g_tTex2df4' ( uniform texture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35            Constant:
+0:35              1 (const int)
+0:35              0 (const int)
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of int)
 0:36          'txval21' ( temp 4-component vector of int)
@@ -59,12 +59,12 @@
 0:36            Construct combined texture-sampler ( temp isampler2D)
 0:36              'g_tTex2di4' ( uniform itexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
+0:36            Constant:
+0:36              0.300000
+0:36              0.400000
+0:36            Constant:
+0:36              1 (const int)
+0:36              1 (const int)
 0:37      Sequence
 0:37        move second child to first child ( temp 4-component vector of uint)
 0:37          'txval22' ( temp 4-component vector of uint)
@@ -72,12 +72,12 @@
 0:37            Construct combined texture-sampler ( temp usampler2D)
 0:37              'g_tTex2du4' ( uniform utexture2D)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1 (const int)
-0:?               -1 (const int)
+0:37            Constant:
+0:37              0.500000
+0:37              0.600000
+0:37            Constant:
+0:37              1 (const int)
+0:37              -1 (const int)
 0:39      Sequence
 0:39        move second child to first child ( temp 4-component vector of float)
 0:39          'txval30' ( temp 4-component vector of float)
@@ -85,14 +85,14 @@
 0:39            Construct combined texture-sampler ( temp sampler3D)
 0:39              'g_tTex3df4' ( uniform texture3D)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
-0:?               1 (const int)
+0:39            Constant:
+0:39              0.100000
+0:39              0.200000
+0:39              0.300000
+0:39            Constant:
+0:39              1 (const int)
+0:39              0 (const int)
+0:39              1 (const int)
 0:40      Sequence
 0:40        move second child to first child ( temp 4-component vector of int)
 0:40          'txval31' ( temp 4-component vector of int)
@@ -100,14 +100,14 @@
 0:40            Construct combined texture-sampler ( temp isampler3D)
 0:40              'g_tTex3di4' ( uniform itexture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
-0:?               1 (const int)
+0:40            Constant:
+0:40              0.400000
+0:40              0.500000
+0:40              0.600000
+0:40            Constant:
+0:40              1 (const int)
+0:40              1 (const int)
+0:40              1 (const int)
 0:41      Sequence
 0:41        move second child to first child ( temp 4-component vector of uint)
 0:41          'txval32' ( temp 4-component vector of uint)
@@ -115,14 +115,14 @@
 0:41            Construct combined texture-sampler ( temp usampler3D)
 0:41              'g_tTex3du4' ( uniform utexture3D)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
-0:?               -1 (const int)
+0:41            Constant:
+0:41              0.700000
+0:41              0.800000
+0:41              0.900000
+0:41            Constant:
+0:41              1 (const int)
+0:41              0 (const int)
+0:41              -1 (const int)
 0:45      move second child to first child ( temp 4-component vector of float)
 0:45        Color: direct index for structure ( temp 4-component vector of float)
 0:45          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -230,12 +230,12 @@
 0:35            Construct combined texture-sampler ( temp sampler2D)
 0:35              'g_tTex2df4' ( uniform texture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35            Constant:
+0:35              1 (const int)
+0:35              0 (const int)
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of int)
 0:36          'txval21' ( temp 4-component vector of int)
@@ -243,12 +243,12 @@
 0:36            Construct combined texture-sampler ( temp isampler2D)
 0:36              'g_tTex2di4' ( uniform itexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
+0:36            Constant:
+0:36              0.300000
+0:36              0.400000
+0:36            Constant:
+0:36              1 (const int)
+0:36              1 (const int)
 0:37      Sequence
 0:37        move second child to first child ( temp 4-component vector of uint)
 0:37          'txval22' ( temp 4-component vector of uint)
@@ -256,12 +256,12 @@
 0:37            Construct combined texture-sampler ( temp usampler2D)
 0:37              'g_tTex2du4' ( uniform utexture2D)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1 (const int)
-0:?               -1 (const int)
+0:37            Constant:
+0:37              0.500000
+0:37              0.600000
+0:37            Constant:
+0:37              1 (const int)
+0:37              -1 (const int)
 0:39      Sequence
 0:39        move second child to first child ( temp 4-component vector of float)
 0:39          'txval30' ( temp 4-component vector of float)
@@ -269,14 +269,14 @@
 0:39            Construct combined texture-sampler ( temp sampler3D)
 0:39              'g_tTex3df4' ( uniform texture3D)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
-0:?               1 (const int)
+0:39            Constant:
+0:39              0.100000
+0:39              0.200000
+0:39              0.300000
+0:39            Constant:
+0:39              1 (const int)
+0:39              0 (const int)
+0:39              1 (const int)
 0:40      Sequence
 0:40        move second child to first child ( temp 4-component vector of int)
 0:40          'txval31' ( temp 4-component vector of int)
@@ -284,14 +284,14 @@
 0:40            Construct combined texture-sampler ( temp isampler3D)
 0:40              'g_tTex3di4' ( uniform itexture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
-0:?               1 (const int)
+0:40            Constant:
+0:40              0.400000
+0:40              0.500000
+0:40              0.600000
+0:40            Constant:
+0:40              1 (const int)
+0:40              1 (const int)
+0:40              1 (const int)
 0:41      Sequence
 0:41        move second child to first child ( temp 4-component vector of uint)
 0:41          'txval32' ( temp 4-component vector of uint)
@@ -299,14 +299,14 @@
 0:41            Construct combined texture-sampler ( temp usampler3D)
 0:41              'g_tTex3du4' ( uniform utexture3D)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
-0:?               -1 (const int)
+0:41            Constant:
+0:41              0.700000
+0:41              0.800000
+0:41              0.900000
+0:41            Constant:
+0:41              1 (const int)
+0:41              0 (const int)
+0:41              -1 (const int)
 0:45      move second child to first child ( temp 4-component vector of float)
 0:45        Color: direct index for structure ( temp 4-component vector of float)
 0:45          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
index 4d53975..5b14c65 100644
--- a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
@@ -13,9 +13,9 @@
 0:23            Construct combined texture-sampler ( temp sampler1DArray)
 0:23              'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
 0:23              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:23            Constant:
+0:23              0.100000
+0:23              0.200000
 0:23            Constant:
 0:23              0 (const int)
 0:24      Sequence
@@ -25,9 +25,9 @@
 0:24            Construct combined texture-sampler ( temp isampler1DArray)
 0:24              'g_tTex1di4' ( uniform itexture1DArray)
 0:24              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.200000
-0:?               0.300000
+0:24            Constant:
+0:24              0.200000
+0:24              0.300000
 0:24            Constant:
 0:24              1 (const int)
 0:25      Sequence
@@ -37,9 +37,9 @@
 0:25            Construct combined texture-sampler ( temp usampler1DArray)
 0:25              'g_tTex1du4' ( uniform utexture1DArray)
 0:25              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:25            Constant:
+0:25              0.300000
+0:25              0.400000
 0:25            Constant:
 0:25              2 (const int)
 0:27      Sequence
@@ -49,13 +49,13 @@
 0:27            Construct combined texture-sampler ( temp sampler2DArray)
 0:27              'g_tTex2df4' ( uniform texture2DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               0 (const int)
-0:?               0 (const int)
+0:27            Constant:
+0:27              0.100000
+0:27              0.200000
+0:27              0.300000
+0:27            Constant:
+0:27              0 (const int)
+0:27              0 (const int)
 0:28      Sequence
 0:28        move second child to first child ( temp 4-component vector of int)
 0:28          'txval21' ( temp 4-component vector of int)
@@ -63,13 +63,13 @@
 0:28            Construct combined texture-sampler ( temp isampler2DArray)
 0:28              'g_tTex2di4' ( uniform itexture2DArray)
 0:28              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.500000
-0:?             Constant:
-0:?               0 (const int)
-0:?               0 (const int)
+0:28            Constant:
+0:28              0.300000
+0:28              0.400000
+0:28              0.500000
+0:28            Constant:
+0:28              0 (const int)
+0:28              0 (const int)
 0:29      Sequence
 0:29        move second child to first child ( temp 4-component vector of uint)
 0:29          'txval22' ( temp 4-component vector of uint)
@@ -77,13 +77,13 @@
 0:29            Construct combined texture-sampler ( temp usampler2DArray)
 0:29              'g_tTex2du4' ( uniform utexture2DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
-0:?             Constant:
-0:?               0 (const int)
-0:?               1 (const int)
+0:29            Constant:
+0:29              0.500000
+0:29              0.600000
+0:29              0.700000
+0:29            Constant:
+0:29              0 (const int)
+0:29              1 (const int)
 0:33      move second child to first child ( temp 4-component vector of float)
 0:33        Color: direct index for structure ( temp 4-component vector of float)
 0:33          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -152,9 +152,9 @@
 0:23            Construct combined texture-sampler ( temp sampler1DArray)
 0:23              'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
 0:23              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:23            Constant:
+0:23              0.100000
+0:23              0.200000
 0:23            Constant:
 0:23              0 (const int)
 0:24      Sequence
@@ -164,9 +164,9 @@
 0:24            Construct combined texture-sampler ( temp isampler1DArray)
 0:24              'g_tTex1di4' ( uniform itexture1DArray)
 0:24              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.200000
-0:?               0.300000
+0:24            Constant:
+0:24              0.200000
+0:24              0.300000
 0:24            Constant:
 0:24              1 (const int)
 0:25      Sequence
@@ -176,9 +176,9 @@
 0:25            Construct combined texture-sampler ( temp usampler1DArray)
 0:25              'g_tTex1du4' ( uniform utexture1DArray)
 0:25              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:25            Constant:
+0:25              0.300000
+0:25              0.400000
 0:25            Constant:
 0:25              2 (const int)
 0:27      Sequence
@@ -188,13 +188,13 @@
 0:27            Construct combined texture-sampler ( temp sampler2DArray)
 0:27              'g_tTex2df4' ( uniform texture2DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               0 (const int)
-0:?               0 (const int)
+0:27            Constant:
+0:27              0.100000
+0:27              0.200000
+0:27              0.300000
+0:27            Constant:
+0:27              0 (const int)
+0:27              0 (const int)
 0:28      Sequence
 0:28        move second child to first child ( temp 4-component vector of int)
 0:28          'txval21' ( temp 4-component vector of int)
@@ -202,13 +202,13 @@
 0:28            Construct combined texture-sampler ( temp isampler2DArray)
 0:28              'g_tTex2di4' ( uniform itexture2DArray)
 0:28              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.500000
-0:?             Constant:
-0:?               0 (const int)
-0:?               0 (const int)
+0:28            Constant:
+0:28              0.300000
+0:28              0.400000
+0:28              0.500000
+0:28            Constant:
+0:28              0 (const int)
+0:28              0 (const int)
 0:29      Sequence
 0:29        move second child to first child ( temp 4-component vector of uint)
 0:29          'txval22' ( temp 4-component vector of uint)
@@ -216,13 +216,13 @@
 0:29            Construct combined texture-sampler ( temp usampler2DArray)
 0:29              'g_tTex2du4' ( uniform utexture2DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
-0:?             Constant:
-0:?               0 (const int)
-0:?               1 (const int)
+0:29            Constant:
+0:29              0.500000
+0:29              0.600000
+0:29              0.700000
+0:29            Constant:
+0:29              0 (const int)
+0:29              1 (const int)
 0:33      move second child to first child ( temp 4-component vector of float)
 0:33        Color: direct index for structure ( temp 4-component vector of float)
 0:33          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
index 7990196..e177d77 100644
--- a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
@@ -13,9 +13,9 @@
 0:27            Construct combined texture-sampler ( temp sampler1DArray)
 0:27              'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:27            Constant:
+0:27              0.100000
+0:27              0.200000
 0:27            Constant:
 0:27              0.500000
 0:28      Sequence
@@ -25,9 +25,9 @@
 0:28            Construct combined texture-sampler ( temp isampler1DArray)
 0:28              'g_tTex1di4' ( uniform itexture1DArray)
 0:28              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.200000
-0:?               0.300000
+0:28            Constant:
+0:28              0.200000
+0:28              0.300000
 0:28            Constant:
 0:28              0.500000
 0:29      Sequence
@@ -37,9 +37,9 @@
 0:29            Construct combined texture-sampler ( temp usampler1DArray)
 0:29              'g_tTex1du4' ( uniform utexture1DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:29            Constant:
+0:29              0.300000
+0:29              0.400000
 0:29            Constant:
 0:29              0.500000
 0:31      Sequence
@@ -49,10 +49,10 @@
 0:31            Construct combined texture-sampler ( temp sampler2DArray)
 0:31              'g_tTex2df4' ( uniform texture2DArray)
 0:31              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:31            Constant:
+0:31              0.100000
+0:31              0.200000
+0:31              0.300000
 0:31            Constant:
 0:31              0.500000
 0:32      Sequence
@@ -62,10 +62,10 @@
 0:32            Construct combined texture-sampler ( temp isampler2DArray)
 0:32              'g_tTex2di4' ( uniform itexture2DArray)
 0:32              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.500000
+0:32            Constant:
+0:32              0.300000
+0:32              0.400000
+0:32              0.500000
 0:32            Constant:
 0:32              0.500000
 0:33      Sequence
@@ -75,10 +75,10 @@
 0:33            Construct combined texture-sampler ( temp usampler2DArray)
 0:33              'g_tTex2du4' ( uniform utexture2DArray)
 0:33              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:33            Constant:
+0:33              0.500000
+0:33              0.600000
+0:33              0.700000
 0:33            Constant:
 0:33              0.500000
 0:35      Sequence
@@ -88,11 +88,11 @@
 0:35            Construct combined texture-sampler ( temp samplerCubeArray)
 0:35              'g_tTexcdf4' ( uniform textureCubeArray)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?               0.400000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35              0.300000
+0:35              0.400000
 0:35            Constant:
 0:35              0.500000
 0:36      Sequence
@@ -102,11 +102,11 @@
 0:36            Construct combined texture-sampler ( temp isamplerCubeArray)
 0:36              'g_tTexcdi4' ( uniform itextureCubeArray)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:36            Constant:
+0:36              0.400000
+0:36              0.500000
+0:36              0.600000
+0:36              0.700000
 0:36            Constant:
 0:36              0.500000
 0:37      Sequence
@@ -116,11 +116,11 @@
 0:37            Construct combined texture-sampler ( temp usamplerCubeArray)
 0:37              'g_tTexcdu4' ( uniform utextureCubeArray)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?               1.000000
+0:37            Constant:
+0:37              0.700000
+0:37              0.800000
+0:37              0.900000
+0:37              1.000000
 0:37            Constant:
 0:37              0.500000
 0:39      move second child to first child ( temp 4-component vector of float)
@@ -194,9 +194,9 @@
 0:27            Construct combined texture-sampler ( temp sampler1DArray)
 0:27              'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:27            Constant:
+0:27              0.100000
+0:27              0.200000
 0:27            Constant:
 0:27              0.500000
 0:28      Sequence
@@ -206,9 +206,9 @@
 0:28            Construct combined texture-sampler ( temp isampler1DArray)
 0:28              'g_tTex1di4' ( uniform itexture1DArray)
 0:28              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.200000
-0:?               0.300000
+0:28            Constant:
+0:28              0.200000
+0:28              0.300000
 0:28            Constant:
 0:28              0.500000
 0:29      Sequence
@@ -218,9 +218,9 @@
 0:29            Construct combined texture-sampler ( temp usampler1DArray)
 0:29              'g_tTex1du4' ( uniform utexture1DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:29            Constant:
+0:29              0.300000
+0:29              0.400000
 0:29            Constant:
 0:29              0.500000
 0:31      Sequence
@@ -230,10 +230,10 @@
 0:31            Construct combined texture-sampler ( temp sampler2DArray)
 0:31              'g_tTex2df4' ( uniform texture2DArray)
 0:31              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:31            Constant:
+0:31              0.100000
+0:31              0.200000
+0:31              0.300000
 0:31            Constant:
 0:31              0.500000
 0:32      Sequence
@@ -243,10 +243,10 @@
 0:32            Construct combined texture-sampler ( temp isampler2DArray)
 0:32              'g_tTex2di4' ( uniform itexture2DArray)
 0:32              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.500000
+0:32            Constant:
+0:32              0.300000
+0:32              0.400000
+0:32              0.500000
 0:32            Constant:
 0:32              0.500000
 0:33      Sequence
@@ -256,10 +256,10 @@
 0:33            Construct combined texture-sampler ( temp usampler2DArray)
 0:33              'g_tTex2du4' ( uniform utexture2DArray)
 0:33              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:33            Constant:
+0:33              0.500000
+0:33              0.600000
+0:33              0.700000
 0:33            Constant:
 0:33              0.500000
 0:35      Sequence
@@ -269,11 +269,11 @@
 0:35            Construct combined texture-sampler ( temp samplerCubeArray)
 0:35              'g_tTexcdf4' ( uniform textureCubeArray)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?               0.400000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35              0.300000
+0:35              0.400000
 0:35            Constant:
 0:35              0.500000
 0:36      Sequence
@@ -283,11 +283,11 @@
 0:36            Construct combined texture-sampler ( temp isamplerCubeArray)
 0:36              'g_tTexcdi4' ( uniform itextureCubeArray)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:36            Constant:
+0:36              0.400000
+0:36              0.500000
+0:36              0.600000
+0:36              0.700000
 0:36            Constant:
 0:36              0.500000
 0:37      Sequence
@@ -297,11 +297,11 @@
 0:37            Construct combined texture-sampler ( temp usamplerCubeArray)
 0:37              'g_tTexcdu4' ( uniform utextureCubeArray)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?               1.000000
+0:37            Constant:
+0:37              0.700000
+0:37              0.800000
+0:37              0.900000
+0:37              1.000000
 0:37            Constant:
 0:37              0.500000
 0:39      move second child to first child ( temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
index b318306..2f15b42 100644
--- a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
@@ -46,9 +46,9 @@
 0:35            Construct combined texture-sampler ( temp sampler2D)
 0:35              'g_tTex2df4' ( uniform texture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
 0:35            Constant:
 0:35              0.500000
 0:36      Sequence
@@ -58,9 +58,9 @@
 0:36            Construct combined texture-sampler ( temp isampler2D)
 0:36              'g_tTex2di4' ( uniform itexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:36            Constant:
+0:36              0.300000
+0:36              0.400000
 0:36            Constant:
 0:36              0.500000
 0:37      Sequence
@@ -70,9 +70,9 @@
 0:37            Construct combined texture-sampler ( temp usampler2D)
 0:37              'g_tTex2du4' ( uniform utexture2D)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
+0:37            Constant:
+0:37              0.500000
+0:37              0.600000
 0:37            Constant:
 0:37              0.500000
 0:39      Sequence
@@ -82,10 +82,10 @@
 0:39            Construct combined texture-sampler ( temp sampler3D)
 0:39              'g_tTex3df4' ( uniform texture3D)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:39            Constant:
+0:39              0.100000
+0:39              0.200000
+0:39              0.300000
 0:39            Constant:
 0:39              0.500000
 0:40      Sequence
@@ -95,10 +95,10 @@
 0:40            Construct combined texture-sampler ( temp isampler3D)
 0:40              'g_tTex3di4' ( uniform itexture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:40            Constant:
+0:40              0.400000
+0:40              0.500000
+0:40              0.600000
 0:40            Constant:
 0:40              0.500000
 0:41      Sequence
@@ -108,10 +108,10 @@
 0:41            Construct combined texture-sampler ( temp usampler3D)
 0:41              'g_tTex3du4' ( uniform utexture3D)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:41            Constant:
+0:41              0.700000
+0:41              0.800000
+0:41              0.900000
 0:41            Constant:
 0:41              0.500000
 0:43      Sequence
@@ -121,10 +121,10 @@
 0:43            Construct combined texture-sampler ( temp samplerCube)
 0:43              'g_tTexcdf4' ( uniform textureCube)
 0:43              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:43            Constant:
+0:43              0.100000
+0:43              0.200000
+0:43              0.300000
 0:43            Constant:
 0:43              0.500000
 0:44      Sequence
@@ -134,10 +134,10 @@
 0:44            Construct combined texture-sampler ( temp isamplerCube)
 0:44              'g_tTexcdi4' ( uniform itextureCube)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:44            Constant:
+0:44              0.400000
+0:44              0.500000
+0:44              0.600000
 0:44            Constant:
 0:44              0.500000
 0:45      Sequence
@@ -147,10 +147,10 @@
 0:45            Construct combined texture-sampler ( temp usamplerCube)
 0:45              'g_tTexcdu4' ( uniform utextureCube)
 0:45              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:45            Constant:
+0:45              0.700000
+0:45              0.800000
+0:45              0.900000
 0:45            Constant:
 0:45              0.500000
 0:47      move second child to first child ( temp 4-component vector of float)
@@ -260,9 +260,9 @@
 0:35            Construct combined texture-sampler ( temp sampler2D)
 0:35              'g_tTex2df4' ( uniform texture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
 0:35            Constant:
 0:35              0.500000
 0:36      Sequence
@@ -272,9 +272,9 @@
 0:36            Construct combined texture-sampler ( temp isampler2D)
 0:36              'g_tTex2di4' ( uniform itexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:36            Constant:
+0:36              0.300000
+0:36              0.400000
 0:36            Constant:
 0:36              0.500000
 0:37      Sequence
@@ -284,9 +284,9 @@
 0:37            Construct combined texture-sampler ( temp usampler2D)
 0:37              'g_tTex2du4' ( uniform utexture2D)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
+0:37            Constant:
+0:37              0.500000
+0:37              0.600000
 0:37            Constant:
 0:37              0.500000
 0:39      Sequence
@@ -296,10 +296,10 @@
 0:39            Construct combined texture-sampler ( temp sampler3D)
 0:39              'g_tTex3df4' ( uniform texture3D)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:39            Constant:
+0:39              0.100000
+0:39              0.200000
+0:39              0.300000
 0:39            Constant:
 0:39              0.500000
 0:40      Sequence
@@ -309,10 +309,10 @@
 0:40            Construct combined texture-sampler ( temp isampler3D)
 0:40              'g_tTex3di4' ( uniform itexture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:40            Constant:
+0:40              0.400000
+0:40              0.500000
+0:40              0.600000
 0:40            Constant:
 0:40              0.500000
 0:41      Sequence
@@ -322,10 +322,10 @@
 0:41            Construct combined texture-sampler ( temp usampler3D)
 0:41              'g_tTex3du4' ( uniform utexture3D)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:41            Constant:
+0:41              0.700000
+0:41              0.800000
+0:41              0.900000
 0:41            Constant:
 0:41              0.500000
 0:43      Sequence
@@ -335,10 +335,10 @@
 0:43            Construct combined texture-sampler ( temp samplerCube)
 0:43              'g_tTexcdf4' ( uniform textureCube)
 0:43              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:43            Constant:
+0:43              0.100000
+0:43              0.200000
+0:43              0.300000
 0:43            Constant:
 0:43              0.500000
 0:44      Sequence
@@ -348,10 +348,10 @@
 0:44            Construct combined texture-sampler ( temp isamplerCube)
 0:44              'g_tTexcdi4' ( uniform itextureCube)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:44            Constant:
+0:44              0.400000
+0:44              0.500000
+0:44              0.600000
 0:44            Constant:
 0:44              0.500000
 0:45      Sequence
@@ -361,10 +361,10 @@
 0:45            Construct combined texture-sampler ( temp usamplerCube)
 0:45              'g_tTexcdu4' ( uniform utextureCube)
 0:45              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:45            Constant:
+0:45              0.700000
+0:45              0.800000
+0:45              0.900000
 0:45            Constant:
 0:45              0.500000
 0:47      move second child to first child ( temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
index 0e073ee..291f624 100644
--- a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
@@ -16,9 +16,9 @@
 0:31            Constant:
 0:31              0.100000
 0:31            Constant:
-0:31              0.500000
-0:31            Constant:
 0:31              1 (const int)
+0:31            Constant:
+0:31              0.500000
 0:32      Sequence
 0:32        move second child to first child ( temp 4-component vector of int)
 0:32          'txval11' ( temp 4-component vector of int)
@@ -29,9 +29,9 @@
 0:32            Constant:
 0:32              0.200000
 0:32            Constant:
-0:32              0.500000
-0:32            Constant:
 0:32              1 (const int)
+0:32            Constant:
+0:32              0.500000
 0:33      Sequence
 0:33        move second child to first child ( temp 4-component vector of uint)
 0:33          'txval12' ( temp 4-component vector of uint)
@@ -42,9 +42,9 @@
 0:33            Constant:
 0:33              0.300000
 0:33            Constant:
-0:33              0.500000
-0:33            Constant:
 0:33              1 (const int)
+0:33            Constant:
+0:33              0.500000
 0:35      Sequence
 0:35        move second child to first child ( temp 4-component vector of float)
 0:35          'txval20' ( temp 4-component vector of float)
@@ -52,14 +52,14 @@
 0:35            Construct combined texture-sampler ( temp sampler2D)
 0:35              'g_tTex2df4' ( uniform texture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35            Constant:
+0:35              1 (const int)
+0:35              0 (const int)
 0:35            Constant:
 0:35              0.500000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of int)
 0:36          'txval21' ( temp 4-component vector of int)
@@ -67,14 +67,14 @@
 0:36            Construct combined texture-sampler ( temp isampler2D)
 0:36              'g_tTex2di4' ( uniform itexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:36            Constant:
+0:36              0.300000
+0:36              0.400000
+0:36            Constant:
+0:36              1 (const int)
+0:36              1 (const int)
 0:36            Constant:
 0:36              0.500000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
 0:37      Sequence
 0:37        move second child to first child ( temp 4-component vector of uint)
 0:37          'txval22' ( temp 4-component vector of uint)
@@ -82,14 +82,14 @@
 0:37            Construct combined texture-sampler ( temp usampler2D)
 0:37              'g_tTex2du4' ( uniform utexture2D)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
 0:37            Constant:
 0:37              0.500000
-0:?             Constant:
-0:?               1 (const int)
-0:?               -1 (const int)
+0:37              0.600000
+0:37            Constant:
+0:37              1 (const int)
+0:37              -1 (const int)
+0:37            Constant:
+0:37              0.500000
 0:39      Sequence
 0:39        move second child to first child ( temp 4-component vector of float)
 0:39          'txval30' ( temp 4-component vector of float)
@@ -97,16 +97,16 @@
 0:39            Construct combined texture-sampler ( temp sampler3D)
 0:39              'g_tTex3df4' ( uniform texture3D)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:39            Constant:
+0:39              0.100000
+0:39              0.200000
+0:39              0.300000
+0:39            Constant:
+0:39              1 (const int)
+0:39              0 (const int)
+0:39              1 (const int)
 0:39            Constant:
 0:39              0.500000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
-0:?               1 (const int)
 0:40      Sequence
 0:40        move second child to first child ( temp 4-component vector of int)
 0:40          'txval31' ( temp 4-component vector of int)
@@ -114,16 +114,16 @@
 0:40            Construct combined texture-sampler ( temp isampler3D)
 0:40              'g_tTex3di4' ( uniform itexture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:40            Constant:
+0:40              0.400000
+0:40              0.500000
+0:40              0.600000
+0:40            Constant:
+0:40              1 (const int)
+0:40              1 (const int)
+0:40              1 (const int)
 0:40            Constant:
 0:40              0.500000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
-0:?               1 (const int)
 0:41      Sequence
 0:41        move second child to first child ( temp 4-component vector of uint)
 0:41          'txval32' ( temp 4-component vector of uint)
@@ -131,16 +131,16 @@
 0:41            Construct combined texture-sampler ( temp usampler3D)
 0:41              'g_tTex3du4' ( uniform utexture3D)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:41            Constant:
+0:41              0.700000
+0:41              0.800000
+0:41              0.900000
+0:41            Constant:
+0:41              1 (const int)
+0:41              0 (const int)
+0:41              -1 (const int)
 0:41            Constant:
 0:41              0.500000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
-0:?               -1 (const int)
 0:45      move second child to first child ( temp 4-component vector of float)
 0:45        Color: direct index for structure ( temp 4-component vector of float)
 0:45          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -218,9 +218,9 @@
 0:31            Constant:
 0:31              0.100000
 0:31            Constant:
-0:31              0.500000
-0:31            Constant:
 0:31              1 (const int)
+0:31            Constant:
+0:31              0.500000
 0:32      Sequence
 0:32        move second child to first child ( temp 4-component vector of int)
 0:32          'txval11' ( temp 4-component vector of int)
@@ -231,9 +231,9 @@
 0:32            Constant:
 0:32              0.200000
 0:32            Constant:
-0:32              0.500000
-0:32            Constant:
 0:32              1 (const int)
+0:32            Constant:
+0:32              0.500000
 0:33      Sequence
 0:33        move second child to first child ( temp 4-component vector of uint)
 0:33          'txval12' ( temp 4-component vector of uint)
@@ -244,9 +244,9 @@
 0:33            Constant:
 0:33              0.300000
 0:33            Constant:
-0:33              0.500000
-0:33            Constant:
 0:33              1 (const int)
+0:33            Constant:
+0:33              0.500000
 0:35      Sequence
 0:35        move second child to first child ( temp 4-component vector of float)
 0:35          'txval20' ( temp 4-component vector of float)
@@ -254,14 +254,14 @@
 0:35            Construct combined texture-sampler ( temp sampler2D)
 0:35              'g_tTex2df4' ( uniform texture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35            Constant:
+0:35              1 (const int)
+0:35              0 (const int)
 0:35            Constant:
 0:35              0.500000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of int)
 0:36          'txval21' ( temp 4-component vector of int)
@@ -269,14 +269,14 @@
 0:36            Construct combined texture-sampler ( temp isampler2D)
 0:36              'g_tTex2di4' ( uniform itexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:36            Constant:
+0:36              0.300000
+0:36              0.400000
+0:36            Constant:
+0:36              1 (const int)
+0:36              1 (const int)
 0:36            Constant:
 0:36              0.500000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
 0:37      Sequence
 0:37        move second child to first child ( temp 4-component vector of uint)
 0:37          'txval22' ( temp 4-component vector of uint)
@@ -284,14 +284,14 @@
 0:37            Construct combined texture-sampler ( temp usampler2D)
 0:37              'g_tTex2du4' ( uniform utexture2D)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
 0:37            Constant:
 0:37              0.500000
-0:?             Constant:
-0:?               1 (const int)
-0:?               -1 (const int)
+0:37              0.600000
+0:37            Constant:
+0:37              1 (const int)
+0:37              -1 (const int)
+0:37            Constant:
+0:37              0.500000
 0:39      Sequence
 0:39        move second child to first child ( temp 4-component vector of float)
 0:39          'txval30' ( temp 4-component vector of float)
@@ -299,16 +299,16 @@
 0:39            Construct combined texture-sampler ( temp sampler3D)
 0:39              'g_tTex3df4' ( uniform texture3D)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:39            Constant:
+0:39              0.100000
+0:39              0.200000
+0:39              0.300000
+0:39            Constant:
+0:39              1 (const int)
+0:39              0 (const int)
+0:39              1 (const int)
 0:39            Constant:
 0:39              0.500000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
-0:?               1 (const int)
 0:40      Sequence
 0:40        move second child to first child ( temp 4-component vector of int)
 0:40          'txval31' ( temp 4-component vector of int)
@@ -316,16 +316,16 @@
 0:40            Construct combined texture-sampler ( temp isampler3D)
 0:40              'g_tTex3di4' ( uniform itexture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:40            Constant:
+0:40              0.400000
+0:40              0.500000
+0:40              0.600000
+0:40            Constant:
+0:40              1 (const int)
+0:40              1 (const int)
+0:40              1 (const int)
 0:40            Constant:
 0:40              0.500000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
-0:?               1 (const int)
 0:41      Sequence
 0:41        move second child to first child ( temp 4-component vector of uint)
 0:41          'txval32' ( temp 4-component vector of uint)
@@ -333,16 +333,16 @@
 0:41            Construct combined texture-sampler ( temp usampler3D)
 0:41              'g_tTex3du4' ( uniform utexture3D)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:41            Constant:
+0:41              0.700000
+0:41              0.800000
+0:41              0.900000
+0:41            Constant:
+0:41              1 (const int)
+0:41              0 (const int)
+0:41              -1 (const int)
 0:41            Constant:
 0:41              0.500000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
-0:?               -1 (const int)
 0:45      move second child to first child ( temp 4-component vector of float)
 0:45        Color: direct index for structure ( temp 4-component vector of float)
 0:45          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -399,7 +399,6 @@
 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 161
@@ -489,12 +488,12 @@
      20(g_sSamp):     19(ptr) Variable UniformConstant
               22:             TypeSampledImage 14
               24:    6(float) Constant 1036831949
-              25:    6(float) Constant 1056964608
-              26:             TypeInt 32 1
-              27:     26(int) Constant 1
-              29:             TypeVector 26(int) 4
+              25:             TypeInt 32 1
+              26:     25(int) Constant 1
+              27:    6(float) Constant 1056964608
+              29:             TypeVector 25(int) 4
               30:             TypePointer Function 29(ivec4)
-              32:             TypeImage 26(int) 1D sampled format:Unknown
+              32:             TypeImage 25(int) 1D sampled format:Unknown
               33:             TypePointer UniformConstant 32
   34(g_tTex1di4):     33(ptr) Variable UniformConstant
               37:             TypeSampledImage 32
@@ -513,38 +512,38 @@
               60:             TypeSampledImage 55
               62:             TypeVector 6(float) 2
               63:   62(fvec2) ConstantComposite 24 39
-              64:             TypeVector 26(int) 2
-              65:     26(int) Constant 0
-              66:   64(ivec2) ConstantComposite 27 65
-              69:             TypeImage 26(int) 2D sampled format:Unknown
+              64:             TypeVector 25(int) 2
+              65:     25(int) Constant 0
+              66:   64(ivec2) ConstantComposite 26 65
+              69:             TypeImage 25(int) 2D sampled format:Unknown
               70:             TypePointer UniformConstant 69
   71(g_tTex2di4):     70(ptr) Variable UniformConstant
               74:             TypeSampledImage 69
               76:    6(float) Constant 1053609165
               77:   62(fvec2) ConstantComposite 52 76
-              78:   64(ivec2) ConstantComposite 27 27
+              78:   64(ivec2) ConstantComposite 26 26
               81:             TypeImage 41(int) 2D sampled format:Unknown
               82:             TypePointer UniformConstant 81
   83(g_tTex2du4):     82(ptr) Variable UniformConstant
               86:             TypeSampledImage 81
               88:    6(float) Constant 1058642330
-              89:   62(fvec2) ConstantComposite 25 88
-              90:     26(int) Constant 4294967295
-              91:   64(ivec2) ConstantComposite 27 90
+              89:   62(fvec2) ConstantComposite 27 88
+              90:     25(int) Constant 4294967295
+              91:   64(ivec2) ConstantComposite 26 90
               94:             TypeImage 6(float) 3D sampled format:Unknown
               95:             TypePointer UniformConstant 94
   96(g_tTex3df4):     95(ptr) Variable UniformConstant
               99:             TypeSampledImage 94
              101:             TypeVector 6(float) 3
              102:  101(fvec3) ConstantComposite 24 39 52
-             103:             TypeVector 26(int) 3
-             104:  103(ivec3) ConstantComposite 27 65 27
-             107:             TypeImage 26(int) 3D sampled format:Unknown
+             103:             TypeVector 25(int) 3
+             104:  103(ivec3) ConstantComposite 26 65 26
+             107:             TypeImage 25(int) 3D sampled format:Unknown
              108:             TypePointer UniformConstant 107
  109(g_tTex3di4):    108(ptr) Variable UniformConstant
              112:             TypeSampledImage 107
-             114:  101(fvec3) ConstantComposite 76 25 88
-             115:  103(ivec3) ConstantComposite 27 27 27
+             114:  101(fvec3) ConstantComposite 76 27 88
+             115:  103(ivec3) ConstantComposite 26 26 26
              118:             TypeImage 41(int) 3D sampled format:Unknown
              119:             TypePointer UniformConstant 118
  120(g_tTex3du4):    119(ptr) Variable UniformConstant
@@ -553,7 +552,7 @@
              126:    6(float) Constant 1061997773
              127:    6(float) Constant 1063675494
              128:  101(fvec3) ConstantComposite 125 126 127
-             129:  103(ivec3) ConstantComposite 27 65 90
+             129:  103(ivec3) ConstantComposite 26 65 90
              131:             TypePointer Function 8(PS_OUTPUT)
              133:    6(float) Constant 1065353216
              134:    7(fvec4) ConstantComposite 133 133 133 133
@@ -566,7 +565,7 @@
              152:             TypeImage 6(float) Cube sampled format:Unknown
              153:             TypePointer UniformConstant 152
  154(g_tTexcdf4):    153(ptr) Variable UniformConstant
-             155:             TypeImage 26(int) Cube sampled format:Unknown
+             155:             TypeImage 25(int) Cube sampled format:Unknown
              156:             TypePointer UniformConstant 155
  157(g_tTexcdi4):    156(ptr) Variable UniformConstant
              158:             TypeImage 41(int) Cube sampled format:Unknown
@@ -580,7 +579,7 @@
              145:     12(ptr) AccessChain 141(flattenTemp) 65
              146:    7(fvec4) Load 145
                               Store 144(@entryPointOutput.Color) 146
-             149:    136(ptr) AccessChain 141(flattenTemp) 27
+             149:    136(ptr) AccessChain 141(flattenTemp) 26
              150:    6(float) Load 149
                               Store 148(@entryPointOutput.Depth) 150
                               Return
@@ -600,51 +599,51 @@
               17:          14 Load 16(g_tTex1df4)
               21:          18 Load 20(g_sSamp)
               23:          22 SampledImage 17 21
-              28:    7(fvec4) ImageSampleImplicitLod 23 24 Bias ConstOffset 27 25
+              28:    7(fvec4) ImageSampleImplicitLod 23 24 Bias ConstOffset 27 26
                               Store 13(txval10) 28
               35:          32 Load 34(g_tTex1di4)
               36:          18 Load 20(g_sSamp)
               38:          37 SampledImage 35 36
-              40:   29(ivec4) ImageSampleImplicitLod 38 39 Bias ConstOffset 27 25
+              40:   29(ivec4) ImageSampleImplicitLod 38 39 Bias ConstOffset 27 26
                               Store 31(txval11) 40
               48:          45 Load 47(g_tTex1du4)
               49:          18 Load 20(g_sSamp)
               51:          50 SampledImage 48 49
-              53:   42(ivec4) ImageSampleImplicitLod 51 52 Bias ConstOffset 27 25
+              53:   42(ivec4) ImageSampleImplicitLod 51 52 Bias ConstOffset 27 26
                               Store 44(txval12) 53
               58:          55 Load 57(g_tTex2df4)
               59:          18 Load 20(g_sSamp)
               61:          60 SampledImage 58 59
-              67:    7(fvec4) ImageSampleImplicitLod 61 63 Bias ConstOffset 66 25
+              67:    7(fvec4) ImageSampleImplicitLod 61 63 Bias ConstOffset 27 66
                               Store 54(txval20) 67
               72:          69 Load 71(g_tTex2di4)
               73:          18 Load 20(g_sSamp)
               75:          74 SampledImage 72 73
-              79:   29(ivec4) ImageSampleImplicitLod 75 77 Bias ConstOffset 78 25
+              79:   29(ivec4) ImageSampleImplicitLod 75 77 Bias ConstOffset 27 78
                               Store 68(txval21) 79
               84:          81 Load 83(g_tTex2du4)
               85:          18 Load 20(g_sSamp)
               87:          86 SampledImage 84 85
-              92:   42(ivec4) ImageSampleImplicitLod 87 89 Bias ConstOffset 91 25
+              92:   42(ivec4) ImageSampleImplicitLod 87 89 Bias ConstOffset 27 91
                               Store 80(txval22) 92
               97:          94 Load 96(g_tTex3df4)
               98:          18 Load 20(g_sSamp)
              100:          99 SampledImage 97 98
-             105:    7(fvec4) ImageSampleImplicitLod 100 102 Bias ConstOffset 104 25
+             105:    7(fvec4) ImageSampleImplicitLod 100 102 Bias ConstOffset 27 104
                               Store 93(txval30) 105
              110:         107 Load 109(g_tTex3di4)
              111:          18 Load 20(g_sSamp)
              113:         112 SampledImage 110 111
-             116:   29(ivec4) ImageSampleImplicitLod 113 114 Bias ConstOffset 115 25
+             116:   29(ivec4) ImageSampleImplicitLod 113 114 Bias ConstOffset 27 115
                               Store 106(txval31) 116
              121:         118 Load 120(g_tTex3du4)
              122:          18 Load 20(g_sSamp)
              124:         123 SampledImage 121 122
-             130:   42(ivec4) ImageSampleImplicitLod 124 128 Bias ConstOffset 129 25
+             130:   42(ivec4) ImageSampleImplicitLod 124 128 Bias ConstOffset 27 129
                               Store 117(txval32) 130
              135:     12(ptr) AccessChain 132(psout) 65
                               Store 135 134
-             137:    136(ptr) AccessChain 132(psout) 27
+             137:    136(ptr) AccessChain 132(psout) 26
                               Store 137 133
              138:8(PS_OUTPUT) Load 132(psout)
                               ReturnValue 138
diff --git a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
index 6225c45..a5bb613 100644
--- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
@@ -13,13 +13,13 @@
 0:23            Construct combined texture-sampler ( temp sampler1DArray)
 0:23              'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
 0:23              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
 0:23            Constant:
-0:23              0.500000
+0:23              0.100000
+0:23              0.200000
 0:23            Constant:
 0:23              0 (const int)
+0:23            Constant:
+0:23              0.500000
 0:24      Sequence
 0:24        move second child to first child ( temp 4-component vector of int)
 0:24          'txval11' ( temp 4-component vector of int)
@@ -27,13 +27,13 @@
 0:24            Construct combined texture-sampler ( temp isampler1DArray)
 0:24              'g_tTex1di4' ( uniform itexture1DArray)
 0:24              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.200000
-0:?               0.300000
 0:24            Constant:
-0:24              0.500000
+0:24              0.200000
+0:24              0.300000
 0:24            Constant:
 0:24              1 (const int)
+0:24            Constant:
+0:24              0.500000
 0:25      Sequence
 0:25        move second child to first child ( temp 4-component vector of uint)
 0:25          'txval12' ( temp 4-component vector of uint)
@@ -41,13 +41,13 @@
 0:25            Construct combined texture-sampler ( temp usampler1DArray)
 0:25              'g_tTex1du4' ( uniform utexture1DArray)
 0:25              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
 0:25            Constant:
-0:25              0.500000
+0:25              0.300000
+0:25              0.400000
 0:25            Constant:
 0:25              2 (const int)
+0:25            Constant:
+0:25              0.500000
 0:27      Sequence
 0:27        move second child to first child ( temp 4-component vector of float)
 0:27          'txval20' ( temp 4-component vector of float)
@@ -55,15 +55,15 @@
 0:27            Construct combined texture-sampler ( temp sampler2DArray)
 0:27              'g_tTex2df4' ( uniform texture2DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:27            Constant:
+0:27              0.100000
+0:27              0.200000
+0:27              0.300000
+0:27            Constant:
+0:27              0 (const int)
+0:27              0 (const int)
 0:27            Constant:
 0:27              0.500000
-0:?             Constant:
-0:?               0 (const int)
-0:?               0 (const int)
 0:28      Sequence
 0:28        move second child to first child ( temp 4-component vector of int)
 0:28          'txval21' ( temp 4-component vector of int)
@@ -71,15 +71,15 @@
 0:28            Construct combined texture-sampler ( temp isampler2DArray)
 0:28              'g_tTex2di4' ( uniform itexture2DArray)
 0:28              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.500000
+0:28            Constant:
+0:28              0.300000
+0:28              0.400000
+0:28              0.500000
+0:28            Constant:
+0:28              0 (const int)
+0:28              0 (const int)
 0:28            Constant:
 0:28              0.500000
-0:?             Constant:
-0:?               0 (const int)
-0:?               0 (const int)
 0:29      Sequence
 0:29        move second child to first child ( temp 4-component vector of uint)
 0:29          'txval22' ( temp 4-component vector of uint)
@@ -87,15 +87,15 @@
 0:29            Construct combined texture-sampler ( temp usampler2DArray)
 0:29              'g_tTex2du4' ( uniform utexture2DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
 0:29            Constant:
 0:29              0.500000
-0:?             Constant:
-0:?               0 (const int)
-0:?               1 (const int)
+0:29              0.600000
+0:29              0.700000
+0:29            Constant:
+0:29              0 (const int)
+0:29              1 (const int)
+0:29            Constant:
+0:29              0.500000
 0:33      move second child to first child ( temp 4-component vector of float)
 0:33        Color: direct index for structure ( temp 4-component vector of float)
 0:33          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -164,13 +164,13 @@
 0:23            Construct combined texture-sampler ( temp sampler1DArray)
 0:23              'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
 0:23              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
 0:23            Constant:
-0:23              0.500000
+0:23              0.100000
+0:23              0.200000
 0:23            Constant:
 0:23              0 (const int)
+0:23            Constant:
+0:23              0.500000
 0:24      Sequence
 0:24        move second child to first child ( temp 4-component vector of int)
 0:24          'txval11' ( temp 4-component vector of int)
@@ -178,13 +178,13 @@
 0:24            Construct combined texture-sampler ( temp isampler1DArray)
 0:24              'g_tTex1di4' ( uniform itexture1DArray)
 0:24              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.200000
-0:?               0.300000
 0:24            Constant:
-0:24              0.500000
+0:24              0.200000
+0:24              0.300000
 0:24            Constant:
 0:24              1 (const int)
+0:24            Constant:
+0:24              0.500000
 0:25      Sequence
 0:25        move second child to first child ( temp 4-component vector of uint)
 0:25          'txval12' ( temp 4-component vector of uint)
@@ -192,13 +192,13 @@
 0:25            Construct combined texture-sampler ( temp usampler1DArray)
 0:25              'g_tTex1du4' ( uniform utexture1DArray)
 0:25              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
 0:25            Constant:
-0:25              0.500000
+0:25              0.300000
+0:25              0.400000
 0:25            Constant:
 0:25              2 (const int)
+0:25            Constant:
+0:25              0.500000
 0:27      Sequence
 0:27        move second child to first child ( temp 4-component vector of float)
 0:27          'txval20' ( temp 4-component vector of float)
@@ -206,15 +206,15 @@
 0:27            Construct combined texture-sampler ( temp sampler2DArray)
 0:27              'g_tTex2df4' ( uniform texture2DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:27            Constant:
+0:27              0.100000
+0:27              0.200000
+0:27              0.300000
+0:27            Constant:
+0:27              0 (const int)
+0:27              0 (const int)
 0:27            Constant:
 0:27              0.500000
-0:?             Constant:
-0:?               0 (const int)
-0:?               0 (const int)
 0:28      Sequence
 0:28        move second child to first child ( temp 4-component vector of int)
 0:28          'txval21' ( temp 4-component vector of int)
@@ -222,15 +222,15 @@
 0:28            Construct combined texture-sampler ( temp isampler2DArray)
 0:28              'g_tTex2di4' ( uniform itexture2DArray)
 0:28              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.500000
+0:28            Constant:
+0:28              0.300000
+0:28              0.400000
+0:28              0.500000
+0:28            Constant:
+0:28              0 (const int)
+0:28              0 (const int)
 0:28            Constant:
 0:28              0.500000
-0:?             Constant:
-0:?               0 (const int)
-0:?               0 (const int)
 0:29      Sequence
 0:29        move second child to first child ( temp 4-component vector of uint)
 0:29          'txval22' ( temp 4-component vector of uint)
@@ -238,15 +238,15 @@
 0:29            Construct combined texture-sampler ( temp usampler2DArray)
 0:29              'g_tTex2du4' ( uniform utexture2DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
 0:29            Constant:
 0:29              0.500000
-0:?             Constant:
-0:?               0 (const int)
-0:?               1 (const int)
+0:29              0.600000
+0:29              0.700000
+0:29            Constant:
+0:29              0 (const int)
+0:29              1 (const int)
+0:29            Constant:
+0:29              0.500000
 0:33      move second child to first child ( temp 4-component vector of float)
 0:33        Color: direct index for structure ( temp 4-component vector of float)
 0:33          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -297,7 +297,6 @@
 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 118
@@ -369,18 +368,18 @@
               25:    6(float) Constant 1036831949
               26:    6(float) Constant 1045220557
               27:   24(fvec2) ConstantComposite 25 26
-              28:    6(float) Constant 1056964608
-              29:             TypeInt 32 1
-              30:     29(int) Constant 0
-              32:             TypeVector 29(int) 4
+              28:             TypeInt 32 1
+              29:     28(int) Constant 0
+              30:    6(float) Constant 1056964608
+              32:             TypeVector 28(int) 4
               33:             TypePointer Function 32(ivec4)
-              35:             TypeImage 29(int) 1D array sampled format:Unknown
+              35:             TypeImage 28(int) 1D array sampled format:Unknown
               36:             TypePointer UniformConstant 35
   37(g_tTex1di4):     36(ptr) Variable UniformConstant
               40:             TypeSampledImage 35
               42:    6(float) Constant 1050253722
               43:   24(fvec2) ConstantComposite 26 42
-              44:     29(int) Constant 1
+              44:     28(int) Constant 1
               46:             TypeInt 32 0
               47:             TypeVector 46(int) 4
               48:             TypePointer Function 47(ivec4)
@@ -390,28 +389,28 @@
               55:             TypeSampledImage 50
               57:    6(float) Constant 1053609165
               58:   24(fvec2) ConstantComposite 42 57
-              59:     29(int) Constant 2
+              59:     28(int) Constant 2
               62:             TypeImage 6(float) 2D array sampled format:Unknown
               63:             TypePointer UniformConstant 62
   64(g_tTex2df4):     63(ptr) Variable UniformConstant
               67:             TypeSampledImage 62
               69:             TypeVector 6(float) 3
               70:   69(fvec3) ConstantComposite 25 26 42
-              71:             TypeVector 29(int) 2
-              72:   71(ivec2) ConstantComposite 30 30
-              75:             TypeImage 29(int) 2D array sampled format:Unknown
+              71:             TypeVector 28(int) 2
+              72:   71(ivec2) ConstantComposite 29 29
+              75:             TypeImage 28(int) 2D array sampled format:Unknown
               76:             TypePointer UniformConstant 75
   77(g_tTex2di4):     76(ptr) Variable UniformConstant
               80:             TypeSampledImage 75
-              82:   69(fvec3) ConstantComposite 42 57 28
+              82:   69(fvec3) ConstantComposite 42 57 30
               85:             TypeImage 46(int) 2D array sampled format:Unknown
               86:             TypePointer UniformConstant 85
   87(g_tTex2du4):     86(ptr) Variable UniformConstant
               90:             TypeSampledImage 85
               92:    6(float) Constant 1058642330
               93:    6(float) Constant 1060320051
-              94:   69(fvec3) ConstantComposite 28 92 93
-              95:   71(ivec2) ConstantComposite 30 44
+              94:   69(fvec3) ConstantComposite 30 92 93
+              95:   71(ivec2) ConstantComposite 29 44
               97:             TypePointer Function 8(PS_OUTPUT)
               99:    6(float) Constant 1065353216
              100:    7(fvec4) ConstantComposite 99 99 99 99
@@ -426,7 +425,7 @@
 107(flattenTemp):     97(ptr) Variable Function
              108:8(PS_OUTPUT) FunctionCall 10(@main()
                               Store 107(flattenTemp) 108
-             111:     12(ptr) AccessChain 107(flattenTemp) 30
+             111:     12(ptr) AccessChain 107(flattenTemp) 29
              112:    7(fvec4) Load 111
                               Store 110(@entryPointOutput.Color) 112
              115:    102(ptr) AccessChain 107(flattenTemp) 44
@@ -446,34 +445,34 @@
               17:          14 Load 16(g_tTex1df4)
               21:          18 Load 20(g_sSamp)
               23:          22 SampledImage 17 21
-              31:    7(fvec4) ImageSampleImplicitLod 23 27 Bias ConstOffset 30 28
+              31:    7(fvec4) ImageSampleImplicitLod 23 27 Bias ConstOffset 30 29
                               Store 13(txval10) 31
               38:          35 Load 37(g_tTex1di4)
               39:          18 Load 20(g_sSamp)
               41:          40 SampledImage 38 39
-              45:   32(ivec4) ImageSampleImplicitLod 41 43 Bias ConstOffset 44 28
+              45:   32(ivec4) ImageSampleImplicitLod 41 43 Bias ConstOffset 30 44
                               Store 34(txval11) 45
               53:          50 Load 52(g_tTex1du4)
               54:          18 Load 20(g_sSamp)
               56:          55 SampledImage 53 54
-              60:   47(ivec4) ImageSampleImplicitLod 56 58 Bias ConstOffset 59 28
+              60:   47(ivec4) ImageSampleImplicitLod 56 58 Bias ConstOffset 30 59
                               Store 49(txval12) 60
               65:          62 Load 64(g_tTex2df4)
               66:          18 Load 20(g_sSamp)
               68:          67 SampledImage 65 66
-              73:    7(fvec4) ImageSampleImplicitLod 68 70 Bias ConstOffset 72 28
+              73:    7(fvec4) ImageSampleImplicitLod 68 70 Bias ConstOffset 30 72
                               Store 61(txval20) 73
               78:          75 Load 77(g_tTex2di4)
               79:          18 Load 20(g_sSamp)
               81:          80 SampledImage 78 79
-              83:   32(ivec4) ImageSampleImplicitLod 81 82 Bias ConstOffset 72 28
+              83:   32(ivec4) ImageSampleImplicitLod 81 82 Bias ConstOffset 30 72
                               Store 74(txval21) 83
               88:          85 Load 87(g_tTex2du4)
               89:          18 Load 20(g_sSamp)
               91:          90 SampledImage 88 89
-              96:   47(ivec4) ImageSampleImplicitLod 91 94 Bias ConstOffset 95 28
+              96:   47(ivec4) ImageSampleImplicitLod 91 94 Bias ConstOffset 30 95
                               Store 84(txval22) 96
-             101:     12(ptr) AccessChain 98(psout) 30
+             101:     12(ptr) AccessChain 98(psout) 29
                               Store 101 100
              103:    102(ptr) AccessChain 98(psout) 44
                               Store 103 99
diff --git a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
index b1c1d6d..0ab61eb 100644
--- a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
@@ -14,9 +14,9 @@
 0:42              'g_tTex1df4a' ( uniform texture1DArrayShadow)
 0:42              'g_sSamp' (layout( binding=0) uniform sampler)
 0:42            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:42              Constant:
+0:42                0.100000
+0:42                0.200000
 0:42              Constant:
 0:42                0.750000
 0:43      Sequence
@@ -27,9 +27,9 @@
 0:43              'g_tTex1di4a' ( uniform itexture1DArrayShadow)
 0:43              'g_sSamp' (layout( binding=0) uniform sampler)
 0:43            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:43              Constant:
+0:43                0.100000
+0:43                0.200000
 0:43              Constant:
 0:43                0.750000
 0:44      Sequence
@@ -40,9 +40,9 @@
 0:44              'g_tTex1du4a' ( uniform utexture1DArrayShadow)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
 0:44            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:44              Constant:
+0:44                0.100000
+0:44                0.200000
 0:44              Constant:
 0:44                0.750000
 0:47      Sequence
@@ -53,10 +53,10 @@
 0:47              'g_tTex2df4a' ( uniform texture2DArrayShadow)
 0:47              'g_sSamp' (layout( binding=0) uniform sampler)
 0:47            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:47              Constant:
+0:47                0.100000
+0:47                0.200000
+0:47                0.300000
 0:47              Constant:
 0:47                0.750000
 0:48      Sequence
@@ -67,10 +67,10 @@
 0:48              'g_tTex2di4a' ( uniform itexture2DArrayShadow)
 0:48              'g_sSamp' (layout( binding=0) uniform sampler)
 0:48            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:48              Constant:
+0:48                0.100000
+0:48                0.200000
+0:48                0.300000
 0:48              Constant:
 0:48                0.750000
 0:49      Sequence
@@ -81,10 +81,10 @@
 0:49              'g_tTex2du4a' ( uniform utexture2DArrayShadow)
 0:49              'g_sSamp' (layout( binding=0) uniform sampler)
 0:49            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:49              Constant:
+0:49                0.100000
+0:49                0.200000
+0:49                0.300000
 0:49              Constant:
 0:49                0.750000
 0:52      Sequence
@@ -95,11 +95,11 @@
 0:52              'g_tTexcdf4a' ( uniform textureCubeArrayShadow)
 0:52              'g_sSamp' (layout( binding=0) uniform sampler)
 0:52            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
-0:?                 0.400000
+0:52              Constant:
+0:52                0.100000
+0:52                0.200000
+0:52                0.300000
+0:52                0.400000
 0:52            Constant:
 0:52              0.750000
 0:53      Sequence
@@ -110,11 +110,11 @@
 0:53              'g_tTexcdi4a' ( uniform itextureCubeArrayShadow)
 0:53              'g_sSamp' (layout( binding=0) uniform sampler)
 0:53            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
-0:?                 0.400000
+0:53              Constant:
+0:53                0.100000
+0:53                0.200000
+0:53                0.300000
+0:53                0.400000
 0:53            Constant:
 0:53              0.750000
 0:54      Sequence
@@ -125,11 +125,11 @@
 0:54              'g_tTexcdu4a' ( uniform utextureCubeArrayShadow)
 0:54              'g_sSamp' (layout( binding=0) uniform sampler)
 0:54            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
-0:?                 0.400000
+0:54              Constant:
+0:54                0.100000
+0:54                0.200000
+0:54                0.300000
+0:54                0.400000
 0:54            Constant:
 0:54              0.750000
 0:56      move second child to first child ( temp 4-component vector of float)
@@ -215,9 +215,9 @@
 0:42              'g_tTex1df4a' ( uniform texture1DArrayShadow)
 0:42              'g_sSamp' (layout( binding=0) uniform sampler)
 0:42            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:42              Constant:
+0:42                0.100000
+0:42                0.200000
 0:42              Constant:
 0:42                0.750000
 0:43      Sequence
@@ -228,9 +228,9 @@
 0:43              'g_tTex1di4a' ( uniform itexture1DArrayShadow)
 0:43              'g_sSamp' (layout( binding=0) uniform sampler)
 0:43            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:43              Constant:
+0:43                0.100000
+0:43                0.200000
 0:43              Constant:
 0:43                0.750000
 0:44      Sequence
@@ -241,9 +241,9 @@
 0:44              'g_tTex1du4a' ( uniform utexture1DArrayShadow)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
 0:44            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:44              Constant:
+0:44                0.100000
+0:44                0.200000
 0:44              Constant:
 0:44                0.750000
 0:47      Sequence
@@ -254,10 +254,10 @@
 0:47              'g_tTex2df4a' ( uniform texture2DArrayShadow)
 0:47              'g_sSamp' (layout( binding=0) uniform sampler)
 0:47            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:47              Constant:
+0:47                0.100000
+0:47                0.200000
+0:47                0.300000
 0:47              Constant:
 0:47                0.750000
 0:48      Sequence
@@ -268,10 +268,10 @@
 0:48              'g_tTex2di4a' ( uniform itexture2DArrayShadow)
 0:48              'g_sSamp' (layout( binding=0) uniform sampler)
 0:48            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:48              Constant:
+0:48                0.100000
+0:48                0.200000
+0:48                0.300000
 0:48              Constant:
 0:48                0.750000
 0:49      Sequence
@@ -282,10 +282,10 @@
 0:49              'g_tTex2du4a' ( uniform utexture2DArrayShadow)
 0:49              'g_sSamp' (layout( binding=0) uniform sampler)
 0:49            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:49              Constant:
+0:49                0.100000
+0:49                0.200000
+0:49                0.300000
 0:49              Constant:
 0:49                0.750000
 0:52      Sequence
@@ -296,11 +296,11 @@
 0:52              'g_tTexcdf4a' ( uniform textureCubeArrayShadow)
 0:52              'g_sSamp' (layout( binding=0) uniform sampler)
 0:52            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
-0:?                 0.400000
+0:52              Constant:
+0:52                0.100000
+0:52                0.200000
+0:52                0.300000
+0:52                0.400000
 0:52            Constant:
 0:52              0.750000
 0:53      Sequence
@@ -311,11 +311,11 @@
 0:53              'g_tTexcdi4a' ( uniform itextureCubeArrayShadow)
 0:53              'g_sSamp' (layout( binding=0) uniform sampler)
 0:53            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
-0:?                 0.400000
+0:53              Constant:
+0:53                0.100000
+0:53                0.200000
+0:53                0.300000
+0:53                0.400000
 0:53            Constant:
 0:53              0.750000
 0:54      Sequence
@@ -326,11 +326,11 @@
 0:54              'g_tTexcdu4a' ( uniform utextureCubeArrayShadow)
 0:54              'g_sSamp' (layout( binding=0) uniform sampler)
 0:54            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
-0:?                 0.400000
+0:54              Constant:
+0:54                0.100000
+0:54                0.200000
+0:54                0.300000
+0:54                0.400000
 0:54            Constant:
 0:54              0.750000
 0:56      move second child to first child ( temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
index e3d5b93..c178c57 100644
--- a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
@@ -50,9 +50,9 @@
 0:47              'g_tTex2df4' ( uniform texture2DShadow)
 0:47              'g_sSamp' (layout( binding=0) uniform sampler)
 0:47            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:47              Constant:
+0:47                0.100000
+0:47                0.200000
 0:47              Constant:
 0:47                0.750000
 0:48      Sequence
@@ -63,9 +63,9 @@
 0:48              'g_tTex2di4' ( uniform itexture2DShadow)
 0:48              'g_sSamp' (layout( binding=0) uniform sampler)
 0:48            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:48              Constant:
+0:48                0.100000
+0:48                0.200000
 0:48              Constant:
 0:48                0.750000
 0:49      Sequence
@@ -76,9 +76,9 @@
 0:49              'g_tTex2du4' ( uniform utexture2DShadow)
 0:49              'g_sSamp' (layout( binding=0) uniform sampler)
 0:49            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:49              Constant:
+0:49                0.100000
+0:49                0.200000
 0:49              Constant:
 0:49                0.750000
 0:53      Sequence
@@ -89,10 +89,10 @@
 0:53              'g_tTexcdf4' ( uniform textureCubeShadow)
 0:53              'g_sSamp' (layout( binding=0) uniform sampler)
 0:53            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:53              Constant:
+0:53                0.100000
+0:53                0.200000
+0:53                0.300000
 0:53              Constant:
 0:53                0.750000
 0:54      Sequence
@@ -103,10 +103,10 @@
 0:54              'g_tTexcdi4' ( uniform itextureCubeShadow)
 0:54              'g_sSamp' (layout( binding=0) uniform sampler)
 0:54            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:54              Constant:
+0:54                0.100000
+0:54                0.200000
+0:54                0.300000
 0:54              Constant:
 0:54                0.750000
 0:55      Sequence
@@ -117,10 +117,10 @@
 0:55              'g_tTexcdu4' ( uniform utextureCubeShadow)
 0:55              'g_sSamp' (layout( binding=0) uniform sampler)
 0:55            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:55              Constant:
+0:55                0.100000
+0:55                0.200000
+0:55                0.300000
 0:55              Constant:
 0:55                0.750000
 0:57      move second child to first child ( temp 4-component vector of float)
@@ -242,9 +242,9 @@
 0:47              'g_tTex2df4' ( uniform texture2DShadow)
 0:47              'g_sSamp' (layout( binding=0) uniform sampler)
 0:47            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:47              Constant:
+0:47                0.100000
+0:47                0.200000
 0:47              Constant:
 0:47                0.750000
 0:48      Sequence
@@ -255,9 +255,9 @@
 0:48              'g_tTex2di4' ( uniform itexture2DShadow)
 0:48              'g_sSamp' (layout( binding=0) uniform sampler)
 0:48            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:48              Constant:
+0:48                0.100000
+0:48                0.200000
 0:48              Constant:
 0:48                0.750000
 0:49      Sequence
@@ -268,9 +268,9 @@
 0:49              'g_tTex2du4' ( uniform utexture2DShadow)
 0:49              'g_sSamp' (layout( binding=0) uniform sampler)
 0:49            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:49              Constant:
+0:49                0.100000
+0:49                0.200000
 0:49              Constant:
 0:49                0.750000
 0:53      Sequence
@@ -281,10 +281,10 @@
 0:53              'g_tTexcdf4' ( uniform textureCubeShadow)
 0:53              'g_sSamp' (layout( binding=0) uniform sampler)
 0:53            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:53              Constant:
+0:53                0.100000
+0:53                0.200000
+0:53                0.300000
 0:53              Constant:
 0:53                0.750000
 0:54      Sequence
@@ -295,10 +295,10 @@
 0:54              'g_tTexcdi4' ( uniform itextureCubeShadow)
 0:54              'g_sSamp' (layout( binding=0) uniform sampler)
 0:54            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:54              Constant:
+0:54                0.100000
+0:54                0.200000
+0:54                0.300000
 0:54              Constant:
 0:54                0.750000
 0:55      Sequence
@@ -309,10 +309,10 @@
 0:55              'g_tTexcdu4' ( uniform utextureCubeShadow)
 0:55              'g_sSamp' (layout( binding=0) uniform sampler)
 0:55            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:55              Constant:
+0:55                0.100000
+0:55                0.200000
+0:55                0.300000
 0:55              Constant:
 0:55                0.750000
 0:57      move second child to first child ( temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.samplecmp.negative.frag.out b/Test/baseResults/hlsl.samplecmp.negative.frag.out
index 65a69e8..37a324b 100644
--- a/Test/baseResults/hlsl.samplecmp.negative.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.negative.frag.out
@@ -14,18 +14,18 @@
 0:9          'g_shadowTex' ( uniform texture2DShadow)
 0:9          'g_shadowSamplerComp' ( uniform sampler)
 0:9        Construct vec3 ( temp 3-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
+0:9          Constant:
+0:9            0.000000
+0:9            0.000000
 0:9          Constant:
 0:9            0.000000
 0:10      ERROR: Bad aggregation op
  ( temp float)
 0:10        'g_nonShadowTex' ( uniform texture2D)
 0:10        'g_shadowSampler' ( uniform sampler)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
+0:10        Constant:
+0:10          0.000000
+0:10          0.000000
 0:10        Constant:
 0:10          0.000000
 0:12      Branch: Return with expression
@@ -62,18 +62,18 @@
 0:9          'g_shadowTex' ( uniform texture2DShadow)
 0:9          'g_shadowSamplerComp' ( uniform sampler)
 0:9        Construct vec3 ( temp 3-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
+0:9          Constant:
+0:9            0.000000
+0:9            0.000000
 0:9          Constant:
 0:9            0.000000
 0:10      ERROR: Bad aggregation op
  ( temp float)
 0:10        'g_nonShadowTex' ( uniform texture2D)
 0:10        'g_shadowSampler' ( uniform sampler)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
+0:10        Constant:
+0:10          0.000000
+0:10          0.000000
 0:10        Constant:
 0:10          0.000000
 0:12      Branch: Return with expression
diff --git a/Test/baseResults/hlsl.samplecmp.negative2.frag.out b/Test/baseResults/hlsl.samplecmp.negative2.frag.out
index 996b3f8..893a6d9 100644
--- a/Test/baseResults/hlsl.samplecmp.negative2.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.negative2.frag.out
@@ -13,14 +13,14 @@
  ( temp 4-component vector of float)
 0:7        'g_shadowTex' ( uniform texture2D)
 0:7        'g_shadowSampler' ( uniform sampler)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
 0:7        Constant:
 0:7          0.000000
-0:?         Constant:
-0:?           0 (const int)
-0:?           0 (const int)
+0:7          0.000000
+0:7        Constant:
+0:7          0.000000
+0:7        Constant:
+0:7          0 (const int)
+0:7          0 (const int)
 0:9      Branch: Return with expression
 0:9        Constant:
 0:9          0.000000
@@ -52,14 +52,14 @@
  ( temp 4-component vector of float)
 0:7        'g_shadowTex' ( uniform texture2D)
 0:7        'g_shadowSampler' ( uniform sampler)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
 0:7        Constant:
 0:7          0.000000
-0:?         Constant:
-0:?           0 (const int)
-0:?           0 (const int)
+0:7          0.000000
+0:7        Constant:
+0:7          0.000000
+0:7        Constant:
+0:7          0 (const int)
+0:7          0 (const int)
 0:9      Branch: Return with expression
 0:9        Constant:
 0:9          0.000000
diff --git a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
index aaa2b74..1e50d7b 100644
--- a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
@@ -56,14 +56,14 @@
 0:47              'g_tTex2df4' ( uniform texture2DShadow)
 0:47              'g_sSamp' (layout( binding=0) uniform sampler)
 0:47            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:47              Constant:
+0:47                0.100000
+0:47                0.200000
 0:47              Constant:
 0:47                0.750000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:47            Constant:
+0:47              2 (const int)
+0:47              3 (const int)
 0:48      Sequence
 0:48        move second child to first child ( temp float)
 0:48          'r23' ( temp float)
@@ -72,14 +72,14 @@
 0:48              'g_tTex2di4' ( uniform itexture2DShadow)
 0:48              'g_sSamp' (layout( binding=0) uniform sampler)
 0:48            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:48              Constant:
+0:48                0.100000
+0:48                0.200000
 0:48              Constant:
 0:48                0.750000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:48            Constant:
+0:48              2 (const int)
+0:48              3 (const int)
 0:49      Sequence
 0:49        move second child to first child ( temp float)
 0:49          'r25' ( temp float)
@@ -88,14 +88,14 @@
 0:49              'g_tTex2du4' ( uniform utexture2DShadow)
 0:49              'g_sSamp' (layout( binding=0) uniform sampler)
 0:49            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:49              Constant:
+0:49                0.100000
+0:49                0.200000
 0:49              Constant:
 0:49                0.750000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:49            Constant:
+0:49              2 (const int)
+0:49              3 (const int)
 0:62      move second child to first child ( temp 4-component vector of float)
 0:62        Color: direct index for structure ( temp 4-component vector of float)
 0:62          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -221,14 +221,14 @@
 0:47              'g_tTex2df4' ( uniform texture2DShadow)
 0:47              'g_sSamp' (layout( binding=0) uniform sampler)
 0:47            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:47              Constant:
+0:47                0.100000
+0:47                0.200000
 0:47              Constant:
 0:47                0.750000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:47            Constant:
+0:47              2 (const int)
+0:47              3 (const int)
 0:48      Sequence
 0:48        move second child to first child ( temp float)
 0:48          'r23' ( temp float)
@@ -237,14 +237,14 @@
 0:48              'g_tTex2di4' ( uniform itexture2DShadow)
 0:48              'g_sSamp' (layout( binding=0) uniform sampler)
 0:48            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:48              Constant:
+0:48                0.100000
+0:48                0.200000
 0:48              Constant:
 0:48                0.750000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:48            Constant:
+0:48              2 (const int)
+0:48              3 (const int)
 0:49      Sequence
 0:49        move second child to first child ( temp float)
 0:49          'r25' ( temp float)
@@ -253,14 +253,14 @@
 0:49              'g_tTex2du4' ( uniform utexture2DShadow)
 0:49              'g_sSamp' (layout( binding=0) uniform sampler)
 0:49            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:49              Constant:
+0:49                0.100000
+0:49                0.200000
 0:49              Constant:
 0:49                0.750000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:49            Constant:
+0:49              2 (const int)
+0:49              3 (const int)
 0:62      move second child to first child ( temp 4-component vector of float)
 0:62        Color: direct index for structure ( temp 4-component vector of float)
 0:62          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
index 501f4c0..3b1eb6f 100644
--- a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
@@ -14,9 +14,9 @@
 0:42              'g_tTex1df4a' ( uniform texture1DArrayShadow)
 0:42              'g_sSamp' (layout( binding=0) uniform sampler)
 0:42            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:42              Constant:
+0:42                0.100000
+0:42                0.200000
 0:42              Constant:
 0:42                0.750000
 0:42            Constant:
@@ -29,9 +29,9 @@
 0:43              'g_tTex1di4a' ( uniform itexture1DArrayShadow)
 0:43              'g_sSamp' (layout( binding=0) uniform sampler)
 0:43            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:43              Constant:
+0:43                0.100000
+0:43                0.200000
 0:43              Constant:
 0:43                0.750000
 0:43            Constant:
@@ -44,9 +44,9 @@
 0:44              'g_tTex1du4a' ( uniform utexture1DArrayShadow)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
 0:44            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:44              Constant:
+0:44                0.100000
+0:44                0.200000
 0:44              Constant:
 0:44                0.750000
 0:44            Constant:
@@ -59,15 +59,15 @@
 0:47              'g_tTex2df4a' ( uniform texture2DArrayShadow)
 0:47              'g_sSamp' (layout( binding=0) uniform sampler)
 0:47            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:47              Constant:
+0:47                0.100000
+0:47                0.200000
+0:47                0.300000
 0:47              Constant:
 0:47                0.750000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:47            Constant:
+0:47              2 (const int)
+0:47              3 (const int)
 0:48      Sequence
 0:48        move second child to first child ( temp float)
 0:48          'r33' ( temp float)
@@ -76,15 +76,15 @@
 0:48              'g_tTex2di4a' ( uniform itexture2DArrayShadow)
 0:48              'g_sSamp' (layout( binding=0) uniform sampler)
 0:48            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:48              Constant:
+0:48                0.100000
+0:48                0.200000
+0:48                0.300000
 0:48              Constant:
 0:48                0.750000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:48            Constant:
+0:48              2 (const int)
+0:48              3 (const int)
 0:49      Sequence
 0:49        move second child to first child ( temp float)
 0:49          'r35' ( temp float)
@@ -93,15 +93,15 @@
 0:49              'g_tTex2du4a' ( uniform utexture2DArrayShadow)
 0:49              'g_sSamp' (layout( binding=0) uniform sampler)
 0:49            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:49              Constant:
+0:49                0.100000
+0:49                0.200000
+0:49                0.300000
 0:49              Constant:
 0:49                0.750000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:49            Constant:
+0:49              2 (const int)
+0:49              3 (const int)
 0:63      move second child to first child ( temp 4-component vector of float)
 0:63        Color: direct index for structure ( temp 4-component vector of float)
 0:63          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -185,9 +185,9 @@
 0:42              'g_tTex1df4a' ( uniform texture1DArrayShadow)
 0:42              'g_sSamp' (layout( binding=0) uniform sampler)
 0:42            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:42              Constant:
+0:42                0.100000
+0:42                0.200000
 0:42              Constant:
 0:42                0.750000
 0:42            Constant:
@@ -200,9 +200,9 @@
 0:43              'g_tTex1di4a' ( uniform itexture1DArrayShadow)
 0:43              'g_sSamp' (layout( binding=0) uniform sampler)
 0:43            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:43              Constant:
+0:43                0.100000
+0:43                0.200000
 0:43              Constant:
 0:43                0.750000
 0:43            Constant:
@@ -215,9 +215,9 @@
 0:44              'g_tTex1du4a' ( uniform utexture1DArrayShadow)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
 0:44            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:44              Constant:
+0:44                0.100000
+0:44                0.200000
 0:44              Constant:
 0:44                0.750000
 0:44            Constant:
@@ -230,15 +230,15 @@
 0:47              'g_tTex2df4a' ( uniform texture2DArrayShadow)
 0:47              'g_sSamp' (layout( binding=0) uniform sampler)
 0:47            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:47              Constant:
+0:47                0.100000
+0:47                0.200000
+0:47                0.300000
 0:47              Constant:
 0:47                0.750000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:47            Constant:
+0:47              2 (const int)
+0:47              3 (const int)
 0:48      Sequence
 0:48        move second child to first child ( temp float)
 0:48          'r33' ( temp float)
@@ -247,15 +247,15 @@
 0:48              'g_tTex2di4a' ( uniform itexture2DArrayShadow)
 0:48              'g_sSamp' (layout( binding=0) uniform sampler)
 0:48            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:48              Constant:
+0:48                0.100000
+0:48                0.200000
+0:48                0.300000
 0:48              Constant:
 0:48                0.750000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:48            Constant:
+0:48              2 (const int)
+0:48              3 (const int)
 0:49      Sequence
 0:49        move second child to first child ( temp float)
 0:49          'r35' ( temp float)
@@ -264,15 +264,15 @@
 0:49              'g_tTex2du4a' ( uniform utexture2DArrayShadow)
 0:49              'g_sSamp' (layout( binding=0) uniform sampler)
 0:49            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:49              Constant:
+0:49                0.100000
+0:49                0.200000
+0:49                0.300000
 0:49              Constant:
 0:49                0.750000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:49            Constant:
+0:49              2 (const int)
+0:49              3 (const int)
 0:63      move second child to first child ( temp 4-component vector of float)
 0:63        Color: direct index for structure ( temp 4-component vector of float)
 0:63          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
index ecfeb1b..a734e54 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
@@ -14,9 +14,9 @@
 0:42              'g_tTex1df4a' ( uniform texture1DArrayShadow)
 0:42              'g_sSamp' (layout( binding=0) uniform sampler)
 0:42            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:42              Constant:
+0:42                0.100000
+0:42                0.200000
 0:42              Constant:
 0:42                0.750000
 0:42            Constant:
@@ -29,9 +29,9 @@
 0:43              'g_tTex1di4a' ( uniform itexture1DArrayShadow)
 0:43              'g_sSamp' (layout( binding=0) uniform sampler)
 0:43            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:43              Constant:
+0:43                0.100000
+0:43                0.200000
 0:43              Constant:
 0:43                0.750000
 0:43            Constant:
@@ -44,9 +44,9 @@
 0:44              'g_tTex1du4a' ( uniform utexture1DArrayShadow)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
 0:44            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:44              Constant:
+0:44                0.100000
+0:44                0.200000
 0:44              Constant:
 0:44                0.750000
 0:44            Constant:
@@ -59,10 +59,10 @@
 0:47              'g_tTex2df4a' ( uniform texture2DArrayShadow)
 0:47              'g_sSamp' (layout( binding=0) uniform sampler)
 0:47            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:47              Constant:
+0:47                0.100000
+0:47                0.200000
+0:47                0.300000
 0:47              Constant:
 0:47                0.750000
 0:47            Constant:
@@ -75,10 +75,10 @@
 0:48              'g_tTex2di4a' ( uniform itexture2DArrayShadow)
 0:48              'g_sSamp' (layout( binding=0) uniform sampler)
 0:48            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:48              Constant:
+0:48                0.100000
+0:48                0.200000
+0:48                0.300000
 0:48              Constant:
 0:48                0.750000
 0:48            Constant:
@@ -91,10 +91,10 @@
 0:49              'g_tTex2du4a' ( uniform utexture2DArrayShadow)
 0:49              'g_sSamp' (layout( binding=0) uniform sampler)
 0:49            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:49              Constant:
+0:49                0.100000
+0:49                0.200000
+0:49                0.300000
 0:49              Constant:
 0:49                0.750000
 0:49            Constant:
@@ -107,11 +107,11 @@
 0:52              'g_tTexcdf4a' ( uniform textureCubeArrayShadow)
 0:52              'g_sSamp' (layout( binding=0) uniform sampler)
 0:52            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
-0:?                 0.400000
+0:52              Constant:
+0:52                0.100000
+0:52                0.200000
+0:52                0.300000
+0:52                0.400000
 0:52            Constant:
 0:52              0.750000
 0:52            Constant:
@@ -124,11 +124,11 @@
 0:53              'g_tTexcdi4a' ( uniform itextureCubeArrayShadow)
 0:53              'g_sSamp' (layout( binding=0) uniform sampler)
 0:53            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
-0:?                 0.400000
+0:53              Constant:
+0:53                0.100000
+0:53                0.200000
+0:53                0.300000
+0:53                0.400000
 0:53            Constant:
 0:53              0.750000
 0:53            Constant:
@@ -141,11 +141,11 @@
 0:54              'g_tTexcdu4a' ( uniform utextureCubeArrayShadow)
 0:54              'g_sSamp' (layout( binding=0) uniform sampler)
 0:54            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
-0:?                 0.400000
+0:54              Constant:
+0:54                0.100000
+0:54                0.200000
+0:54                0.300000
+0:54                0.400000
 0:54            Constant:
 0:54              0.750000
 0:54            Constant:
@@ -233,9 +233,9 @@
 0:42              'g_tTex1df4a' ( uniform texture1DArrayShadow)
 0:42              'g_sSamp' (layout( binding=0) uniform sampler)
 0:42            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:42              Constant:
+0:42                0.100000
+0:42                0.200000
 0:42              Constant:
 0:42                0.750000
 0:42            Constant:
@@ -248,9 +248,9 @@
 0:43              'g_tTex1di4a' ( uniform itexture1DArrayShadow)
 0:43              'g_sSamp' (layout( binding=0) uniform sampler)
 0:43            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:43              Constant:
+0:43                0.100000
+0:43                0.200000
 0:43              Constant:
 0:43                0.750000
 0:43            Constant:
@@ -263,9 +263,9 @@
 0:44              'g_tTex1du4a' ( uniform utexture1DArrayShadow)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
 0:44            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:44              Constant:
+0:44                0.100000
+0:44                0.200000
 0:44              Constant:
 0:44                0.750000
 0:44            Constant:
@@ -278,10 +278,10 @@
 0:47              'g_tTex2df4a' ( uniform texture2DArrayShadow)
 0:47              'g_sSamp' (layout( binding=0) uniform sampler)
 0:47            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:47              Constant:
+0:47                0.100000
+0:47                0.200000
+0:47                0.300000
 0:47              Constant:
 0:47                0.750000
 0:47            Constant:
@@ -294,10 +294,10 @@
 0:48              'g_tTex2di4a' ( uniform itexture2DArrayShadow)
 0:48              'g_sSamp' (layout( binding=0) uniform sampler)
 0:48            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:48              Constant:
+0:48                0.100000
+0:48                0.200000
+0:48                0.300000
 0:48              Constant:
 0:48                0.750000
 0:48            Constant:
@@ -310,10 +310,10 @@
 0:49              'g_tTex2du4a' ( uniform utexture2DArrayShadow)
 0:49              'g_sSamp' (layout( binding=0) uniform sampler)
 0:49            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:49              Constant:
+0:49                0.100000
+0:49                0.200000
+0:49                0.300000
 0:49              Constant:
 0:49                0.750000
 0:49            Constant:
@@ -326,11 +326,11 @@
 0:52              'g_tTexcdf4a' ( uniform textureCubeArrayShadow)
 0:52              'g_sSamp' (layout( binding=0) uniform sampler)
 0:52            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
-0:?                 0.400000
+0:52              Constant:
+0:52                0.100000
+0:52                0.200000
+0:52                0.300000
+0:52                0.400000
 0:52            Constant:
 0:52              0.750000
 0:52            Constant:
@@ -343,11 +343,11 @@
 0:53              'g_tTexcdi4a' ( uniform itextureCubeArrayShadow)
 0:53              'g_sSamp' (layout( binding=0) uniform sampler)
 0:53            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
-0:?                 0.400000
+0:53              Constant:
+0:53                0.100000
+0:53                0.200000
+0:53                0.300000
+0:53                0.400000
 0:53            Constant:
 0:53              0.750000
 0:53            Constant:
@@ -360,11 +360,11 @@
 0:54              'g_tTexcdu4a' ( uniform utextureCubeArrayShadow)
 0:54              'g_sSamp' (layout( binding=0) uniform sampler)
 0:54            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
-0:?                 0.400000
+0:54              Constant:
+0:54                0.100000
+0:54                0.200000
+0:54                0.300000
+0:54                0.400000
 0:54            Constant:
 0:54              0.750000
 0:54            Constant:
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
index c852c9f..54135cd 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
@@ -56,9 +56,9 @@
 0:47              'g_tTex2df4' ( uniform texture2DShadow)
 0:47              'g_sSamp' (layout( binding=0) uniform sampler)
 0:47            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:47              Constant:
+0:47                0.100000
+0:47                0.200000
 0:47              Constant:
 0:47                0.750000
 0:47            Constant:
@@ -71,9 +71,9 @@
 0:48              'g_tTex2di4' ( uniform itexture2DShadow)
 0:48              'g_sSamp' (layout( binding=0) uniform sampler)
 0:48            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:48              Constant:
+0:48                0.100000
+0:48                0.200000
 0:48              Constant:
 0:48                0.750000
 0:48            Constant:
@@ -86,9 +86,9 @@
 0:49              'g_tTex2du4' ( uniform utexture2DShadow)
 0:49              'g_sSamp' (layout( binding=0) uniform sampler)
 0:49            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:49              Constant:
+0:49                0.100000
+0:49                0.200000
 0:49              Constant:
 0:49                0.750000
 0:49            Constant:
@@ -101,10 +101,10 @@
 0:53              'g_tTexcdf4' ( uniform textureCubeShadow)
 0:53              'g_sSamp' (layout( binding=0) uniform sampler)
 0:53            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:53              Constant:
+0:53                0.100000
+0:53                0.200000
+0:53                0.300000
 0:53              Constant:
 0:53                0.750000
 0:53            Constant:
@@ -117,10 +117,10 @@
 0:54              'g_tTexcdi4' ( uniform itextureCubeShadow)
 0:54              'g_sSamp' (layout( binding=0) uniform sampler)
 0:54            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:54              Constant:
+0:54                0.100000
+0:54                0.200000
+0:54                0.300000
 0:54              Constant:
 0:54                0.750000
 0:54            Constant:
@@ -133,10 +133,10 @@
 0:55              'g_tTexcdu4' ( uniform utextureCubeShadow)
 0:55              'g_sSamp' (layout( binding=0) uniform sampler)
 0:55            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:55              Constant:
+0:55                0.100000
+0:55                0.200000
+0:55                0.300000
 0:55              Constant:
 0:55                0.750000
 0:55            Constant:
@@ -266,9 +266,9 @@
 0:47              'g_tTex2df4' ( uniform texture2DShadow)
 0:47              'g_sSamp' (layout( binding=0) uniform sampler)
 0:47            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:47              Constant:
+0:47                0.100000
+0:47                0.200000
 0:47              Constant:
 0:47                0.750000
 0:47            Constant:
@@ -281,9 +281,9 @@
 0:48              'g_tTex2di4' ( uniform itexture2DShadow)
 0:48              'g_sSamp' (layout( binding=0) uniform sampler)
 0:48            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:48              Constant:
+0:48                0.100000
+0:48                0.200000
 0:48              Constant:
 0:48                0.750000
 0:48            Constant:
@@ -296,9 +296,9 @@
 0:49              'g_tTex2du4' ( uniform utexture2DShadow)
 0:49              'g_sSamp' (layout( binding=0) uniform sampler)
 0:49            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:49              Constant:
+0:49                0.100000
+0:49                0.200000
 0:49              Constant:
 0:49                0.750000
 0:49            Constant:
@@ -311,10 +311,10 @@
 0:53              'g_tTexcdf4' ( uniform textureCubeShadow)
 0:53              'g_sSamp' (layout( binding=0) uniform sampler)
 0:53            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:53              Constant:
+0:53                0.100000
+0:53                0.200000
+0:53                0.300000
 0:53              Constant:
 0:53                0.750000
 0:53            Constant:
@@ -327,10 +327,10 @@
 0:54              'g_tTexcdi4' ( uniform itextureCubeShadow)
 0:54              'g_sSamp' (layout( binding=0) uniform sampler)
 0:54            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:54              Constant:
+0:54                0.100000
+0:54                0.200000
+0:54                0.300000
 0:54              Constant:
 0:54                0.750000
 0:54            Constant:
@@ -343,10 +343,10 @@
 0:55              'g_tTexcdu4' ( uniform utextureCubeShadow)
 0:55              'g_sSamp' (layout( binding=0) uniform sampler)
 0:55            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:55              Constant:
+0:55                0.100000
+0:55                0.200000
+0:55                0.300000
 0:55              Constant:
 0:55                0.750000
 0:55            Constant:
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
index 95c5c61..4922cde 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
@@ -62,16 +62,16 @@
 0:47              'g_tTex2df4' ( uniform texture2DShadow)
 0:47              'g_sSamp' (layout( binding=0) uniform sampler)
 0:47            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:47              Constant:
+0:47                0.100000
+0:47                0.200000
 0:47              Constant:
 0:47                0.750000
 0:47            Constant:
 0:47              0.000000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:47            Constant:
+0:47              2 (const int)
+0:47              3 (const int)
 0:48      Sequence
 0:48        move second child to first child ( temp float)
 0:48          'r23' ( temp float)
@@ -80,16 +80,16 @@
 0:48              'g_tTex2di4' ( uniform itexture2DShadow)
 0:48              'g_sSamp' (layout( binding=0) uniform sampler)
 0:48            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:48              Constant:
+0:48                0.100000
+0:48                0.200000
 0:48              Constant:
 0:48                0.750000
 0:48            Constant:
 0:48              0.000000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:48            Constant:
+0:48              2 (const int)
+0:48              3 (const int)
 0:49      Sequence
 0:49        move second child to first child ( temp float)
 0:49          'r25' ( temp float)
@@ -98,16 +98,16 @@
 0:49              'g_tTex2du4' ( uniform utexture2DShadow)
 0:49              'g_sSamp' (layout( binding=0) uniform sampler)
 0:49            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:49              Constant:
+0:49                0.100000
+0:49                0.200000
 0:49              Constant:
 0:49                0.750000
 0:49            Constant:
 0:49              0.000000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:49            Constant:
+0:49              2 (const int)
+0:49              3 (const int)
 0:62      move second child to first child ( temp 4-component vector of float)
 0:62        Color: direct index for structure ( temp 4-component vector of float)
 0:62          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -239,16 +239,16 @@
 0:47              'g_tTex2df4' ( uniform texture2DShadow)
 0:47              'g_sSamp' (layout( binding=0) uniform sampler)
 0:47            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:47              Constant:
+0:47                0.100000
+0:47                0.200000
 0:47              Constant:
 0:47                0.750000
 0:47            Constant:
 0:47              0.000000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:47            Constant:
+0:47              2 (const int)
+0:47              3 (const int)
 0:48      Sequence
 0:48        move second child to first child ( temp float)
 0:48          'r23' ( temp float)
@@ -257,16 +257,16 @@
 0:48              'g_tTex2di4' ( uniform itexture2DShadow)
 0:48              'g_sSamp' (layout( binding=0) uniform sampler)
 0:48            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:48              Constant:
+0:48                0.100000
+0:48                0.200000
 0:48              Constant:
 0:48                0.750000
 0:48            Constant:
 0:48              0.000000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:48            Constant:
+0:48              2 (const int)
+0:48              3 (const int)
 0:49      Sequence
 0:49        move second child to first child ( temp float)
 0:49          'r25' ( temp float)
@@ -275,16 +275,16 @@
 0:49              'g_tTex2du4' ( uniform utexture2DShadow)
 0:49              'g_sSamp' (layout( binding=0) uniform sampler)
 0:49            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:49              Constant:
+0:49                0.100000
+0:49                0.200000
 0:49              Constant:
 0:49                0.750000
 0:49            Constant:
 0:49              0.000000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:49            Constant:
+0:49              2 (const int)
+0:49              3 (const int)
 0:62      move second child to first child ( temp 4-component vector of float)
 0:62        Color: direct index for structure ( temp 4-component vector of float)
 0:62          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
index 89a7bba..22bd257 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
@@ -14,9 +14,9 @@
 0:42              'g_tTex1df4a' ( uniform texture1DArrayShadow)
 0:42              'g_sSamp' (layout( binding=0) uniform sampler)
 0:42            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:42              Constant:
+0:42                0.100000
+0:42                0.200000
 0:42              Constant:
 0:42                0.750000
 0:42            Constant:
@@ -31,9 +31,9 @@
 0:43              'g_tTex1di4a' ( uniform itexture1DArrayShadow)
 0:43              'g_sSamp' (layout( binding=0) uniform sampler)
 0:43            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:43              Constant:
+0:43                0.100000
+0:43                0.200000
 0:43              Constant:
 0:43                0.750000
 0:43            Constant:
@@ -48,9 +48,9 @@
 0:44              'g_tTex1du4a' ( uniform utexture1DArrayShadow)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
 0:44            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:44              Constant:
+0:44                0.100000
+0:44                0.200000
 0:44              Constant:
 0:44                0.750000
 0:44            Constant:
@@ -65,17 +65,17 @@
 0:47              'g_tTex2df4a' ( uniform texture2DArrayShadow)
 0:47              'g_sSamp' (layout( binding=0) uniform sampler)
 0:47            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:47              Constant:
+0:47                0.100000
+0:47                0.200000
+0:47                0.300000
 0:47              Constant:
 0:47                0.750000
 0:47            Constant:
 0:47              0.000000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:47            Constant:
+0:47              2 (const int)
+0:47              3 (const int)
 0:48      Sequence
 0:48        move second child to first child ( temp float)
 0:48          'r33' ( temp float)
@@ -84,17 +84,17 @@
 0:48              'g_tTex2di4a' ( uniform itexture2DArrayShadow)
 0:48              'g_sSamp' (layout( binding=0) uniform sampler)
 0:48            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:48              Constant:
+0:48                0.100000
+0:48                0.200000
+0:48                0.300000
 0:48              Constant:
 0:48                0.750000
 0:48            Constant:
 0:48              0.000000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:48            Constant:
+0:48              2 (const int)
+0:48              3 (const int)
 0:49      Sequence
 0:49        move second child to first child ( temp float)
 0:49          'r35' ( temp float)
@@ -103,17 +103,17 @@
 0:49              'g_tTex2du4a' ( uniform utexture2DArrayShadow)
 0:49              'g_sSamp' (layout( binding=0) uniform sampler)
 0:49            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:49              Constant:
+0:49                0.100000
+0:49                0.200000
+0:49                0.300000
 0:49              Constant:
 0:49                0.750000
 0:49            Constant:
 0:49              0.000000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:49            Constant:
+0:49              2 (const int)
+0:49              3 (const int)
 0:63      move second child to first child ( temp 4-component vector of float)
 0:63        Color: direct index for structure ( temp 4-component vector of float)
 0:63          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -197,9 +197,9 @@
 0:42              'g_tTex1df4a' ( uniform texture1DArrayShadow)
 0:42              'g_sSamp' (layout( binding=0) uniform sampler)
 0:42            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:42              Constant:
+0:42                0.100000
+0:42                0.200000
 0:42              Constant:
 0:42                0.750000
 0:42            Constant:
@@ -214,9 +214,9 @@
 0:43              'g_tTex1di4a' ( uniform itexture1DArrayShadow)
 0:43              'g_sSamp' (layout( binding=0) uniform sampler)
 0:43            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:43              Constant:
+0:43                0.100000
+0:43                0.200000
 0:43              Constant:
 0:43                0.750000
 0:43            Constant:
@@ -231,9 +231,9 @@
 0:44              'g_tTex1du4a' ( uniform utexture1DArrayShadow)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
 0:44            Construct vec3 ( temp 3-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
+0:44              Constant:
+0:44                0.100000
+0:44                0.200000
 0:44              Constant:
 0:44                0.750000
 0:44            Constant:
@@ -248,17 +248,17 @@
 0:47              'g_tTex2df4a' ( uniform texture2DArrayShadow)
 0:47              'g_sSamp' (layout( binding=0) uniform sampler)
 0:47            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:47              Constant:
+0:47                0.100000
+0:47                0.200000
+0:47                0.300000
 0:47              Constant:
 0:47                0.750000
 0:47            Constant:
 0:47              0.000000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:47            Constant:
+0:47              2 (const int)
+0:47              3 (const int)
 0:48      Sequence
 0:48        move second child to first child ( temp float)
 0:48          'r33' ( temp float)
@@ -267,17 +267,17 @@
 0:48              'g_tTex2di4a' ( uniform itexture2DArrayShadow)
 0:48              'g_sSamp' (layout( binding=0) uniform sampler)
 0:48            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:48              Constant:
+0:48                0.100000
+0:48                0.200000
+0:48                0.300000
 0:48              Constant:
 0:48                0.750000
 0:48            Constant:
 0:48              0.000000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:48            Constant:
+0:48              2 (const int)
+0:48              3 (const int)
 0:49      Sequence
 0:49        move second child to first child ( temp float)
 0:49          'r35' ( temp float)
@@ -286,17 +286,17 @@
 0:49              'g_tTex2du4a' ( uniform utexture2DArrayShadow)
 0:49              'g_sSamp' (layout( binding=0) uniform sampler)
 0:49            Construct vec4 ( temp 4-component vector of float)
-0:?               Constant:
-0:?                 0.100000
-0:?                 0.200000
-0:?                 0.300000
+0:49              Constant:
+0:49                0.100000
+0:49                0.200000
+0:49                0.300000
 0:49              Constant:
 0:49                0.750000
 0:49            Constant:
 0:49              0.000000
-0:?             Constant:
-0:?               2 (const int)
-0:?               3 (const int)
+0:49            Constant:
+0:49              2 (const int)
+0:49              3 (const int)
 0:63      move second child to first child ( temp 4-component vector of float)
 0:63        Color: direct index for structure ( temp 4-component vector of float)
 0:63          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
index 8daeb7f..67e1d15 100644
--- a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
@@ -13,9 +13,9 @@
 0:27            Construct combined texture-sampler ( temp sampler1DArray)
 0:27              'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:27            Constant:
+0:27              0.100000
+0:27              0.200000
 0:27            Constant:
 0:27              1.100000
 0:27            Constant:
@@ -27,9 +27,9 @@
 0:28            Construct combined texture-sampler ( temp isampler1DArray)
 0:28              'g_tTex1di4' ( uniform itexture1DArray)
 0:28              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:28            Constant:
+0:28              0.100000
+0:28              0.200000
 0:28            Constant:
 0:28              1.100000
 0:28            Constant:
@@ -41,9 +41,9 @@
 0:29            Construct combined texture-sampler ( temp usampler1DArray)
 0:29              'g_tTex1du4' ( uniform utexture1DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:29            Constant:
+0:29              0.100000
+0:29              0.200000
 0:29            Constant:
 0:29              1.100000
 0:29            Constant:
@@ -55,16 +55,16 @@
 0:31            Construct combined texture-sampler ( temp sampler2DArray)
 0:31              'g_tTex2df4' ( uniform texture2DArray)
 0:31              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:31            Constant:
+0:31              0.100000
+0:31              0.200000
+0:31              0.300000
+0:31            Constant:
+0:31              1.100000
+0:31              1.200000
+0:31            Constant:
+0:31              1.100000
+0:31              1.200000
 0:32      Sequence
 0:32        move second child to first child ( temp 4-component vector of int)
 0:32          'txval21' ( temp 4-component vector of int)
@@ -72,16 +72,16 @@
 0:32            Construct combined texture-sampler ( temp isampler2DArray)
 0:32              'g_tTex2di4' ( uniform itexture2DArray)
 0:32              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:32            Constant:
+0:32              0.100000
+0:32              0.200000
+0:32              0.300000
+0:32            Constant:
+0:32              1.100000
+0:32              1.200000
+0:32            Constant:
+0:32              1.100000
+0:32              1.200000
 0:33      Sequence
 0:33        move second child to first child ( temp 4-component vector of uint)
 0:33          'txval22' ( temp 4-component vector of uint)
@@ -89,16 +89,16 @@
 0:33            Construct combined texture-sampler ( temp usampler2DArray)
 0:33              'g_tTex2du4' ( uniform utexture2DArray)
 0:33              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:33            Constant:
+0:33              0.100000
+0:33              0.200000
+0:33              0.300000
+0:33            Constant:
+0:33              1.100000
+0:33              1.200000
+0:33            Constant:
+0:33              1.100000
+0:33              1.200000
 0:35      Sequence
 0:35        move second child to first child ( temp 4-component vector of float)
 0:35          'txval40' ( temp 4-component vector of float)
@@ -106,19 +106,19 @@
 0:35            Construct combined texture-sampler ( temp samplerCubeArray)
 0:35              'g_tTexcdf4' ( uniform textureCubeArray)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?               0.400000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35              0.300000
+0:35              0.400000
+0:35            Constant:
+0:35              1.100000
+0:35              1.200000
+0:35              1.300000
+0:35            Constant:
+0:35              1.100000
+0:35              1.200000
+0:35              1.300000
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of int)
 0:36          'txval41' ( temp 4-component vector of int)
@@ -126,19 +126,19 @@
 0:36            Construct combined texture-sampler ( temp isamplerCubeArray)
 0:36              'g_tTexcdi4' ( uniform itextureCubeArray)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?               0.400000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:36            Constant:
+0:36              0.100000
+0:36              0.200000
+0:36              0.300000
+0:36              0.400000
+0:36            Constant:
+0:36              1.100000
+0:36              1.200000
+0:36              1.300000
+0:36            Constant:
+0:36              1.100000
+0:36              1.200000
+0:36              1.300000
 0:37      Sequence
 0:37        move second child to first child ( temp 4-component vector of uint)
 0:37          'txval42' ( temp 4-component vector of uint)
@@ -146,19 +146,19 @@
 0:37            Construct combined texture-sampler ( temp usamplerCubeArray)
 0:37              'g_tTexcdu4' ( uniform utextureCubeArray)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?               0.400000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:37            Constant:
+0:37              0.100000
+0:37              0.200000
+0:37              0.300000
+0:37              0.400000
+0:37            Constant:
+0:37              1.100000
+0:37              1.200000
+0:37              1.300000
+0:37            Constant:
+0:37              1.100000
+0:37              1.200000
+0:37              1.300000
 0:39      move second child to first child ( temp 4-component vector of float)
 0:39        Color: direct index for structure ( temp 4-component vector of float)
 0:39          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -230,9 +230,9 @@
 0:27            Construct combined texture-sampler ( temp sampler1DArray)
 0:27              'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:27            Constant:
+0:27              0.100000
+0:27              0.200000
 0:27            Constant:
 0:27              1.100000
 0:27            Constant:
@@ -244,9 +244,9 @@
 0:28            Construct combined texture-sampler ( temp isampler1DArray)
 0:28              'g_tTex1di4' ( uniform itexture1DArray)
 0:28              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:28            Constant:
+0:28              0.100000
+0:28              0.200000
 0:28            Constant:
 0:28              1.100000
 0:28            Constant:
@@ -258,9 +258,9 @@
 0:29            Construct combined texture-sampler ( temp usampler1DArray)
 0:29              'g_tTex1du4' ( uniform utexture1DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:29            Constant:
+0:29              0.100000
+0:29              0.200000
 0:29            Constant:
 0:29              1.100000
 0:29            Constant:
@@ -272,16 +272,16 @@
 0:31            Construct combined texture-sampler ( temp sampler2DArray)
 0:31              'g_tTex2df4' ( uniform texture2DArray)
 0:31              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:31            Constant:
+0:31              0.100000
+0:31              0.200000
+0:31              0.300000
+0:31            Constant:
+0:31              1.100000
+0:31              1.200000
+0:31            Constant:
+0:31              1.100000
+0:31              1.200000
 0:32      Sequence
 0:32        move second child to first child ( temp 4-component vector of int)
 0:32          'txval21' ( temp 4-component vector of int)
@@ -289,16 +289,16 @@
 0:32            Construct combined texture-sampler ( temp isampler2DArray)
 0:32              'g_tTex2di4' ( uniform itexture2DArray)
 0:32              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:32            Constant:
+0:32              0.100000
+0:32              0.200000
+0:32              0.300000
+0:32            Constant:
+0:32              1.100000
+0:32              1.200000
+0:32            Constant:
+0:32              1.100000
+0:32              1.200000
 0:33      Sequence
 0:33        move second child to first child ( temp 4-component vector of uint)
 0:33          'txval22' ( temp 4-component vector of uint)
@@ -306,16 +306,16 @@
 0:33            Construct combined texture-sampler ( temp usampler2DArray)
 0:33              'g_tTex2du4' ( uniform utexture2DArray)
 0:33              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:33            Constant:
+0:33              0.100000
+0:33              0.200000
+0:33              0.300000
+0:33            Constant:
+0:33              1.100000
+0:33              1.200000
+0:33            Constant:
+0:33              1.100000
+0:33              1.200000
 0:35      Sequence
 0:35        move second child to first child ( temp 4-component vector of float)
 0:35          'txval40' ( temp 4-component vector of float)
@@ -323,19 +323,19 @@
 0:35            Construct combined texture-sampler ( temp samplerCubeArray)
 0:35              'g_tTexcdf4' ( uniform textureCubeArray)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?               0.400000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35              0.300000
+0:35              0.400000
+0:35            Constant:
+0:35              1.100000
+0:35              1.200000
+0:35              1.300000
+0:35            Constant:
+0:35              1.100000
+0:35              1.200000
+0:35              1.300000
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of int)
 0:36          'txval41' ( temp 4-component vector of int)
@@ -343,19 +343,19 @@
 0:36            Construct combined texture-sampler ( temp isamplerCubeArray)
 0:36              'g_tTexcdi4' ( uniform itextureCubeArray)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?               0.400000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:36            Constant:
+0:36              0.100000
+0:36              0.200000
+0:36              0.300000
+0:36              0.400000
+0:36            Constant:
+0:36              1.100000
+0:36              1.200000
+0:36              1.300000
+0:36            Constant:
+0:36              1.100000
+0:36              1.200000
+0:36              1.300000
 0:37      Sequence
 0:37        move second child to first child ( temp 4-component vector of uint)
 0:37          'txval42' ( temp 4-component vector of uint)
@@ -363,19 +363,19 @@
 0:37            Construct combined texture-sampler ( temp usamplerCubeArray)
 0:37              'g_tTexcdu4' ( uniform utextureCubeArray)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?               0.400000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:37            Constant:
+0:37              0.100000
+0:37              0.200000
+0:37              0.300000
+0:37              0.400000
+0:37            Constant:
+0:37              1.100000
+0:37              1.200000
+0:37              1.300000
+0:37            Constant:
+0:37              1.100000
+0:37              1.200000
+0:37              1.300000
 0:39      move second child to first child ( temp 4-component vector of float)
 0:39        Color: direct index for structure ( temp 4-component vector of float)
 0:39          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
index 03888b6..8f2fabc 100644
--- a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
@@ -52,15 +52,15 @@
 0:35            Construct combined texture-sampler ( temp sampler2D)
 0:35              'g_tTex2df4' ( uniform texture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35            Constant:
+0:35              1.100000
+0:35              1.200000
+0:35            Constant:
+0:35              1.100000
+0:35              1.200000
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of int)
 0:36          'txval21' ( temp 4-component vector of int)
@@ -68,15 +68,15 @@
 0:36            Construct combined texture-sampler ( temp isampler2D)
 0:36              'g_tTex2di4' ( uniform itexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:36            Constant:
+0:36              0.300000
+0:36              0.400000
+0:36            Constant:
+0:36              1.100000
+0:36              1.200000
+0:36            Constant:
+0:36              1.100000
+0:36              1.200000
 0:37      Sequence
 0:37        move second child to first child ( temp 4-component vector of uint)
 0:37          'txval22' ( temp 4-component vector of uint)
@@ -84,15 +84,15 @@
 0:37            Construct combined texture-sampler ( temp usampler2D)
 0:37              'g_tTex2du4' ( uniform utexture2D)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:37            Constant:
+0:37              0.500000
+0:37              0.600000
+0:37            Constant:
+0:37              1.100000
+0:37              1.200000
+0:37            Constant:
+0:37              1.100000
+0:37              1.200000
 0:39      Sequence
 0:39        move second child to first child ( temp 4-component vector of float)
 0:39          'txval30' ( temp 4-component vector of float)
@@ -100,18 +100,18 @@
 0:39            Construct combined texture-sampler ( temp sampler3D)
 0:39              'g_tTex3df4' ( uniform texture3D)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:39            Constant:
+0:39              0.100000
+0:39              0.200000
+0:39              0.300000
+0:39            Constant:
+0:39              1.100000
+0:39              1.200000
+0:39              1.300000
+0:39            Constant:
+0:39              1.100000
+0:39              1.200000
+0:39              1.300000
 0:40      Sequence
 0:40        move second child to first child ( temp 4-component vector of int)
 0:40          'txval31' ( temp 4-component vector of int)
@@ -119,18 +119,18 @@
 0:40            Construct combined texture-sampler ( temp isampler3D)
 0:40              'g_tTex3di4' ( uniform itexture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:40            Constant:
+0:40              0.400000
+0:40              0.500000
+0:40              0.600000
+0:40            Constant:
+0:40              1.100000
+0:40              1.200000
+0:40              1.300000
+0:40            Constant:
+0:40              1.100000
+0:40              1.200000
+0:40              1.300000
 0:41      Sequence
 0:41        move second child to first child ( temp 4-component vector of uint)
 0:41          'txval32' ( temp 4-component vector of uint)
@@ -138,18 +138,18 @@
 0:41            Construct combined texture-sampler ( temp usampler3D)
 0:41              'g_tTex3du4' ( uniform utexture3D)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:41            Constant:
+0:41              0.700000
+0:41              0.800000
+0:41              0.900000
+0:41            Constant:
+0:41              1.100000
+0:41              1.200000
+0:41              1.300000
+0:41            Constant:
+0:41              1.100000
+0:41              1.200000
+0:41              1.300000
 0:43      Sequence
 0:43        move second child to first child ( temp 4-component vector of float)
 0:43          'txval40' ( temp 4-component vector of float)
@@ -157,18 +157,18 @@
 0:43            Construct combined texture-sampler ( temp samplerCube)
 0:43              'g_tTexcdf4' ( uniform textureCube)
 0:43              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:43            Constant:
+0:43              0.100000
+0:43              0.200000
+0:43              0.300000
+0:43            Constant:
+0:43              1.100000
+0:43              1.200000
+0:43              1.300000
+0:43            Constant:
+0:43              1.100000
+0:43              1.200000
+0:43              1.300000
 0:44      Sequence
 0:44        move second child to first child ( temp 4-component vector of int)
 0:44          'txval41' ( temp 4-component vector of int)
@@ -176,18 +176,18 @@
 0:44            Construct combined texture-sampler ( temp isamplerCube)
 0:44              'g_tTexcdi4' ( uniform itextureCube)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:44            Constant:
+0:44              0.400000
+0:44              0.500000
+0:44              0.600000
+0:44            Constant:
+0:44              1.100000
+0:44              1.200000
+0:44              1.300000
+0:44            Constant:
+0:44              1.100000
+0:44              1.200000
+0:44              1.300000
 0:45      Sequence
 0:45        move second child to first child ( temp 4-component vector of uint)
 0:45          'txval42' ( temp 4-component vector of uint)
@@ -195,18 +195,18 @@
 0:45            Construct combined texture-sampler ( temp usamplerCube)
 0:45              'g_tTexcdu4' ( uniform utextureCube)
 0:45              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:45            Constant:
+0:45              0.700000
+0:45              0.800000
+0:45              0.900000
+0:45            Constant:
+0:45              1.100000
+0:45              1.200000
+0:45              1.300000
+0:45            Constant:
+0:45              1.100000
+0:45              1.200000
+0:45              1.300000
 0:47      move second child to first child ( temp 4-component vector of float)
 0:47        Color: direct index for structure ( temp 4-component vector of float)
 0:47          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -320,15 +320,15 @@
 0:35            Construct combined texture-sampler ( temp sampler2D)
 0:35              'g_tTex2df4' ( uniform texture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35            Constant:
+0:35              1.100000
+0:35              1.200000
+0:35            Constant:
+0:35              1.100000
+0:35              1.200000
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of int)
 0:36          'txval21' ( temp 4-component vector of int)
@@ -336,15 +336,15 @@
 0:36            Construct combined texture-sampler ( temp isampler2D)
 0:36              'g_tTex2di4' ( uniform itexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:36            Constant:
+0:36              0.300000
+0:36              0.400000
+0:36            Constant:
+0:36              1.100000
+0:36              1.200000
+0:36            Constant:
+0:36              1.100000
+0:36              1.200000
 0:37      Sequence
 0:37        move second child to first child ( temp 4-component vector of uint)
 0:37          'txval22' ( temp 4-component vector of uint)
@@ -352,15 +352,15 @@
 0:37            Construct combined texture-sampler ( temp usampler2D)
 0:37              'g_tTex2du4' ( uniform utexture2D)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:37            Constant:
+0:37              0.500000
+0:37              0.600000
+0:37            Constant:
+0:37              1.100000
+0:37              1.200000
+0:37            Constant:
+0:37              1.100000
+0:37              1.200000
 0:39      Sequence
 0:39        move second child to first child ( temp 4-component vector of float)
 0:39          'txval30' ( temp 4-component vector of float)
@@ -368,18 +368,18 @@
 0:39            Construct combined texture-sampler ( temp sampler3D)
 0:39              'g_tTex3df4' ( uniform texture3D)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:39            Constant:
+0:39              0.100000
+0:39              0.200000
+0:39              0.300000
+0:39            Constant:
+0:39              1.100000
+0:39              1.200000
+0:39              1.300000
+0:39            Constant:
+0:39              1.100000
+0:39              1.200000
+0:39              1.300000
 0:40      Sequence
 0:40        move second child to first child ( temp 4-component vector of int)
 0:40          'txval31' ( temp 4-component vector of int)
@@ -387,18 +387,18 @@
 0:40            Construct combined texture-sampler ( temp isampler3D)
 0:40              'g_tTex3di4' ( uniform itexture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:40            Constant:
+0:40              0.400000
+0:40              0.500000
+0:40              0.600000
+0:40            Constant:
+0:40              1.100000
+0:40              1.200000
+0:40              1.300000
+0:40            Constant:
+0:40              1.100000
+0:40              1.200000
+0:40              1.300000
 0:41      Sequence
 0:41        move second child to first child ( temp 4-component vector of uint)
 0:41          'txval32' ( temp 4-component vector of uint)
@@ -406,18 +406,18 @@
 0:41            Construct combined texture-sampler ( temp usampler3D)
 0:41              'g_tTex3du4' ( uniform utexture3D)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:41            Constant:
+0:41              0.700000
+0:41              0.800000
+0:41              0.900000
+0:41            Constant:
+0:41              1.100000
+0:41              1.200000
+0:41              1.300000
+0:41            Constant:
+0:41              1.100000
+0:41              1.200000
+0:41              1.300000
 0:43      Sequence
 0:43        move second child to first child ( temp 4-component vector of float)
 0:43          'txval40' ( temp 4-component vector of float)
@@ -425,18 +425,18 @@
 0:43            Construct combined texture-sampler ( temp samplerCube)
 0:43              'g_tTexcdf4' ( uniform textureCube)
 0:43              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:43            Constant:
+0:43              0.100000
+0:43              0.200000
+0:43              0.300000
+0:43            Constant:
+0:43              1.100000
+0:43              1.200000
+0:43              1.300000
+0:43            Constant:
+0:43              1.100000
+0:43              1.200000
+0:43              1.300000
 0:44      Sequence
 0:44        move second child to first child ( temp 4-component vector of int)
 0:44          'txval41' ( temp 4-component vector of int)
@@ -444,18 +444,18 @@
 0:44            Construct combined texture-sampler ( temp isamplerCube)
 0:44              'g_tTexcdi4' ( uniform itextureCube)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:44            Constant:
+0:44              0.400000
+0:44              0.500000
+0:44              0.600000
+0:44            Constant:
+0:44              1.100000
+0:44              1.200000
+0:44              1.300000
+0:44            Constant:
+0:44              1.100000
+0:44              1.200000
+0:44              1.300000
 0:45      Sequence
 0:45        move second child to first child ( temp 4-component vector of uint)
 0:45          'txval42' ( temp 4-component vector of uint)
@@ -463,18 +463,18 @@
 0:45            Construct combined texture-sampler ( temp usamplerCube)
 0:45              'g_tTexcdu4' ( uniform utextureCube)
 0:45              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:45            Constant:
+0:45              0.700000
+0:45              0.800000
+0:45              0.900000
+0:45            Constant:
+0:45              1.100000
+0:45              1.200000
+0:45              1.300000
+0:45            Constant:
+0:45              1.100000
+0:45              1.200000
+0:45              1.300000
 0:47      move second child to first child ( temp 4-component vector of float)
 0:47        Color: direct index for structure ( temp 4-component vector of float)
 0:47          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
index 71da245..6982090 100644
--- a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
@@ -50,15 +50,15 @@
 0:34            Construct combined texture-sampler ( temp sampler2D)
 0:34              'g_tTex2df4' ( uniform texture2D)
 0:34              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:34            Constant:
+0:34              0.100000
+0:34              0.200000
+0:34            Constant:
+0:34              1.100000
+0:34              1.200000
+0:34            Constant:
+0:34              1.100000
+0:34              1.200000
 0:35      Sequence
 0:35        move second child to first child ( temp 4-component vector of int)
 0:35          'txval21' ( temp 4-component vector of int)
@@ -66,15 +66,15 @@
 0:35            Construct combined texture-sampler ( temp isampler2D)
 0:35              'g_tTex2di4' ( uniform itexture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:35            Constant:
+0:35              0.300000
+0:35              0.400000
+0:35            Constant:
+0:35              1.100000
+0:35              1.200000
+0:35            Constant:
+0:35              1.100000
+0:35              1.200000
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of uint)
 0:36          'txval22' ( temp 4-component vector of uint)
@@ -82,15 +82,15 @@
 0:36            Construct combined texture-sampler ( temp usampler2D)
 0:36              'g_tTex2du4' ( uniform utexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:36            Constant:
+0:36              0.500000
+0:36              0.600000
+0:36            Constant:
+0:36              1.100000
+0:36              1.200000
+0:36            Constant:
+0:36              1.100000
+0:36              1.200000
 0:38      Sequence
 0:38        move second child to first child ( temp 4-component vector of float)
 0:38          'txval30' ( temp 4-component vector of float)
@@ -98,18 +98,18 @@
 0:38            Construct combined texture-sampler ( temp sampler3D)
 0:38              'g_tTex3df4' ( uniform texture3D)
 0:38              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:38            Constant:
+0:38              0.100000
+0:38              0.200000
+0:38              0.300000
+0:38            Constant:
+0:38              1.100000
+0:38              1.200000
+0:38              1.300000
+0:38            Constant:
+0:38              1.100000
+0:38              1.200000
+0:38              1.300000
 0:39      Sequence
 0:39        move second child to first child ( temp 4-component vector of int)
 0:39          'txval31' ( temp 4-component vector of int)
@@ -117,18 +117,18 @@
 0:39            Construct combined texture-sampler ( temp isampler3D)
 0:39              'g_tTex3di4' ( uniform itexture3D)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:39            Constant:
+0:39              0.400000
+0:39              0.500000
+0:39              0.600000
+0:39            Constant:
+0:39              1.100000
+0:39              1.200000
+0:39              1.300000
+0:39            Constant:
+0:39              1.100000
+0:39              1.200000
+0:39              1.300000
 0:40      Sequence
 0:40        move second child to first child ( temp 4-component vector of uint)
 0:40          'txval32' ( temp 4-component vector of uint)
@@ -136,18 +136,18 @@
 0:40            Construct combined texture-sampler ( temp usampler3D)
 0:40              'g_tTex3du4' ( uniform utexture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:40            Constant:
+0:40              0.700000
+0:40              0.800000
+0:40              0.900000
+0:40            Constant:
+0:40              1.100000
+0:40              1.200000
+0:40              1.300000
+0:40            Constant:
+0:40              1.100000
+0:40              1.200000
+0:40              1.300000
 0:42      Sequence
 0:42        move second child to first child ( temp 4-component vector of float)
 0:42          'txval40' ( temp 4-component vector of float)
@@ -155,18 +155,18 @@
 0:42            Construct combined texture-sampler ( temp samplerCube)
 0:42              'g_tTexcdf4' ( uniform textureCube)
 0:42              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:42            Constant:
+0:42              0.100000
+0:42              0.200000
+0:42              0.300000
+0:42            Constant:
+0:42              1.100000
+0:42              1.200000
+0:42              1.300000
+0:42            Constant:
+0:42              1.100000
+0:42              1.200000
+0:42              1.300000
 0:43      Sequence
 0:43        move second child to first child ( temp 4-component vector of int)
 0:43          'txval41' ( temp 4-component vector of int)
@@ -174,18 +174,18 @@
 0:43            Construct combined texture-sampler ( temp isamplerCube)
 0:43              'g_tTexcdi4' ( uniform itextureCube)
 0:43              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:43            Constant:
+0:43              0.400000
+0:43              0.500000
+0:43              0.600000
+0:43            Constant:
+0:43              1.100000
+0:43              1.200000
+0:43              1.300000
+0:43            Constant:
+0:43              1.100000
+0:43              1.200000
+0:43              1.300000
 0:44      Sequence
 0:44        move second child to first child ( temp 4-component vector of uint)
 0:44          'txval42' ( temp 4-component vector of uint)
@@ -193,28 +193,28 @@
 0:44            Construct combined texture-sampler ( temp usamplerCube)
 0:44              'g_tTexcdu4' ( uniform utextureCube)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:44            Constant:
+0:44              0.700000
+0:44              0.800000
+0:44              0.900000
+0:44            Constant:
+0:44              1.100000
+0:44              1.200000
+0:44              1.300000
+0:44            Constant:
+0:44              1.100000
+0:44              1.200000
+0:44              1.300000
 0:46      move second child to first child ( temp 4-component vector of float)
 0:46        Pos: direct index for structure ( temp 4-component vector of float)
 0:46          'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:46          Constant:
 0:46            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:46        Constant:
+0:46          0.000000
+0:46          0.000000
+0:46          0.000000
+0:46          0.000000
 0:48      Branch: Return with expression
 0:48        'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:27  Function Definition: main( ( temp void)
@@ -299,15 +299,15 @@
 0:34            Construct combined texture-sampler ( temp sampler2D)
 0:34              'g_tTex2df4' ( uniform texture2D)
 0:34              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:34            Constant:
+0:34              0.100000
+0:34              0.200000
+0:34            Constant:
+0:34              1.100000
+0:34              1.200000
+0:34            Constant:
+0:34              1.100000
+0:34              1.200000
 0:35      Sequence
 0:35        move second child to first child ( temp 4-component vector of int)
 0:35          'txval21' ( temp 4-component vector of int)
@@ -315,15 +315,15 @@
 0:35            Construct combined texture-sampler ( temp isampler2D)
 0:35              'g_tTex2di4' ( uniform itexture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:35            Constant:
+0:35              0.300000
+0:35              0.400000
+0:35            Constant:
+0:35              1.100000
+0:35              1.200000
+0:35            Constant:
+0:35              1.100000
+0:35              1.200000
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of uint)
 0:36          'txval22' ( temp 4-component vector of uint)
@@ -331,15 +331,15 @@
 0:36            Construct combined texture-sampler ( temp usampler2D)
 0:36              'g_tTex2du4' ( uniform utexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
+0:36            Constant:
+0:36              0.500000
+0:36              0.600000
+0:36            Constant:
+0:36              1.100000
+0:36              1.200000
+0:36            Constant:
+0:36              1.100000
+0:36              1.200000
 0:38      Sequence
 0:38        move second child to first child ( temp 4-component vector of float)
 0:38          'txval30' ( temp 4-component vector of float)
@@ -347,18 +347,18 @@
 0:38            Construct combined texture-sampler ( temp sampler3D)
 0:38              'g_tTex3df4' ( uniform texture3D)
 0:38              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:38            Constant:
+0:38              0.100000
+0:38              0.200000
+0:38              0.300000
+0:38            Constant:
+0:38              1.100000
+0:38              1.200000
+0:38              1.300000
+0:38            Constant:
+0:38              1.100000
+0:38              1.200000
+0:38              1.300000
 0:39      Sequence
 0:39        move second child to first child ( temp 4-component vector of int)
 0:39          'txval31' ( temp 4-component vector of int)
@@ -366,18 +366,18 @@
 0:39            Construct combined texture-sampler ( temp isampler3D)
 0:39              'g_tTex3di4' ( uniform itexture3D)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:39            Constant:
+0:39              0.400000
+0:39              0.500000
+0:39              0.600000
+0:39            Constant:
+0:39              1.100000
+0:39              1.200000
+0:39              1.300000
+0:39            Constant:
+0:39              1.100000
+0:39              1.200000
+0:39              1.300000
 0:40      Sequence
 0:40        move second child to first child ( temp 4-component vector of uint)
 0:40          'txval32' ( temp 4-component vector of uint)
@@ -385,18 +385,18 @@
 0:40            Construct combined texture-sampler ( temp usampler3D)
 0:40              'g_tTex3du4' ( uniform utexture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:40            Constant:
+0:40              0.700000
+0:40              0.800000
+0:40              0.900000
+0:40            Constant:
+0:40              1.100000
+0:40              1.200000
+0:40              1.300000
+0:40            Constant:
+0:40              1.100000
+0:40              1.200000
+0:40              1.300000
 0:42      Sequence
 0:42        move second child to first child ( temp 4-component vector of float)
 0:42          'txval40' ( temp 4-component vector of float)
@@ -404,18 +404,18 @@
 0:42            Construct combined texture-sampler ( temp samplerCube)
 0:42              'g_tTexcdf4' ( uniform textureCube)
 0:42              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:42            Constant:
+0:42              0.100000
+0:42              0.200000
+0:42              0.300000
+0:42            Constant:
+0:42              1.100000
+0:42              1.200000
+0:42              1.300000
+0:42            Constant:
+0:42              1.100000
+0:42              1.200000
+0:42              1.300000
 0:43      Sequence
 0:43        move second child to first child ( temp 4-component vector of int)
 0:43          'txval41' ( temp 4-component vector of int)
@@ -423,18 +423,18 @@
 0:43            Construct combined texture-sampler ( temp isamplerCube)
 0:43              'g_tTexcdi4' ( uniform itextureCube)
 0:43              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:43            Constant:
+0:43              0.400000
+0:43              0.500000
+0:43              0.600000
+0:43            Constant:
+0:43              1.100000
+0:43              1.200000
+0:43              1.300000
+0:43            Constant:
+0:43              1.100000
+0:43              1.200000
+0:43              1.300000
 0:44      Sequence
 0:44        move second child to first child ( temp 4-component vector of uint)
 0:44          'txval42' ( temp 4-component vector of uint)
@@ -442,28 +442,28 @@
 0:44            Construct combined texture-sampler ( temp usamplerCube)
 0:44              'g_tTexcdu4' ( uniform utextureCube)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
+0:44            Constant:
+0:44              0.700000
+0:44              0.800000
+0:44              0.900000
+0:44            Constant:
+0:44              1.100000
+0:44              1.200000
+0:44              1.300000
+0:44            Constant:
+0:44              1.100000
+0:44              1.200000
+0:44              1.300000
 0:46      move second child to first child ( temp 4-component vector of float)
 0:46        Pos: direct index for structure ( temp 4-component vector of float)
 0:46          'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:46          Constant:
 0:46            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:46        Constant:
+0:46          0.000000
+0:46          0.000000
+0:46          0.000000
+0:46          0.000000
 0:48      Branch: Return with expression
 0:48        'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:27  Function Definition: main( ( temp void)
diff --git a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
index 63192df..5694f89 100644
--- a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
@@ -58,18 +58,18 @@
 0:35            Construct combined texture-sampler ( temp sampler2D)
 0:35              'g_tTex2df4' ( uniform texture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35            Constant:
+0:35              1.100000
+0:35              1.200000
+0:35            Constant:
+0:35              1 (const int)
+0:35              0 (const int)
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of int)
 0:36          'txval21' ( temp 4-component vector of int)
@@ -77,18 +77,18 @@
 0:36            Construct combined texture-sampler ( temp isampler2D)
 0:36              'g_tTex2di4' ( uniform itexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
+0:36            Constant:
+0:36              0.300000
+0:36              0.400000
+0:36            Constant:
+0:36              0.100000
+0:36              0.200000
+0:36            Constant:
+0:36              1.100000
+0:36              1.200000
+0:36            Constant:
+0:36              1 (const int)
+0:36              1 (const int)
 0:37      Sequence
 0:37        move second child to first child ( temp 4-component vector of uint)
 0:37          'txval22' ( temp 4-component vector of uint)
@@ -96,18 +96,18 @@
 0:37            Construct combined texture-sampler ( temp usampler2D)
 0:37              'g_tTex2du4' ( uniform utexture2D)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1 (const int)
-0:?               -1 (const int)
+0:37            Constant:
+0:37              0.500000
+0:37              0.600000
+0:37            Constant:
+0:37              0.100000
+0:37              0.200000
+0:37            Constant:
+0:37              1.100000
+0:37              1.200000
+0:37            Constant:
+0:37              1 (const int)
+0:37              -1 (const int)
 0:39      Sequence
 0:39        move second child to first child ( temp 4-component vector of float)
 0:39          'txval30' ( temp 4-component vector of float)
@@ -115,22 +115,22 @@
 0:39            Construct combined texture-sampler ( temp sampler3D)
 0:39              'g_tTex3df4' ( uniform texture3D)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
-0:?               1 (const int)
+0:39            Constant:
+0:39              0.100000
+0:39              0.200000
+0:39              0.300000
+0:39            Constant:
+0:39              1.100000
+0:39              1.200000
+0:39              1.300000
+0:39            Constant:
+0:39              1.100000
+0:39              1.200000
+0:39              1.300000
+0:39            Constant:
+0:39              1 (const int)
+0:39              0 (const int)
+0:39              1 (const int)
 0:40      Sequence
 0:40        move second child to first child ( temp 4-component vector of int)
 0:40          'txval31' ( temp 4-component vector of int)
@@ -138,22 +138,22 @@
 0:40            Construct combined texture-sampler ( temp isampler3D)
 0:40              'g_tTex3di4' ( uniform itexture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
-0:?               1 (const int)
+0:40            Constant:
+0:40              0.400000
+0:40              0.500000
+0:40              0.600000
+0:40            Constant:
+0:40              1.100000
+0:40              1.200000
+0:40              1.300000
+0:40            Constant:
+0:40              1.100000
+0:40              1.200000
+0:40              1.300000
+0:40            Constant:
+0:40              1 (const int)
+0:40              1 (const int)
+0:40              1 (const int)
 0:41      Sequence
 0:41        move second child to first child ( temp 4-component vector of uint)
 0:41          'txval32' ( temp 4-component vector of uint)
@@ -161,22 +161,22 @@
 0:41            Construct combined texture-sampler ( temp usampler3D)
 0:41              'g_tTex3du4' ( uniform utexture3D)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
-0:?               -1 (const int)
+0:41            Constant:
+0:41              0.700000
+0:41              0.800000
+0:41              0.900000
+0:41            Constant:
+0:41              1.100000
+0:41              1.200000
+0:41              1.300000
+0:41            Constant:
+0:41              1.100000
+0:41              1.200000
+0:41              1.300000
+0:41            Constant:
+0:41              1 (const int)
+0:41              0 (const int)
+0:41              -1 (const int)
 0:45      move second child to first child ( temp 4-component vector of float)
 0:45        Color: direct index for structure ( temp 4-component vector of float)
 0:45          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -296,18 +296,18 @@
 0:35            Construct combined texture-sampler ( temp sampler2D)
 0:35              'g_tTex2df4' ( uniform texture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35            Constant:
+0:35              1.100000
+0:35              1.200000
+0:35            Constant:
+0:35              1 (const int)
+0:35              0 (const int)
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of int)
 0:36          'txval21' ( temp 4-component vector of int)
@@ -315,18 +315,18 @@
 0:36            Construct combined texture-sampler ( temp isampler2D)
 0:36              'g_tTex2di4' ( uniform itexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
+0:36            Constant:
+0:36              0.300000
+0:36              0.400000
+0:36            Constant:
+0:36              0.100000
+0:36              0.200000
+0:36            Constant:
+0:36              1.100000
+0:36              1.200000
+0:36            Constant:
+0:36              1 (const int)
+0:36              1 (const int)
 0:37      Sequence
 0:37        move second child to first child ( temp 4-component vector of uint)
 0:37          'txval22' ( temp 4-component vector of uint)
@@ -334,18 +334,18 @@
 0:37            Construct combined texture-sampler ( temp usampler2D)
 0:37              'g_tTex2du4' ( uniform utexture2D)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1 (const int)
-0:?               -1 (const int)
+0:37            Constant:
+0:37              0.500000
+0:37              0.600000
+0:37            Constant:
+0:37              0.100000
+0:37              0.200000
+0:37            Constant:
+0:37              1.100000
+0:37              1.200000
+0:37            Constant:
+0:37              1 (const int)
+0:37              -1 (const int)
 0:39      Sequence
 0:39        move second child to first child ( temp 4-component vector of float)
 0:39          'txval30' ( temp 4-component vector of float)
@@ -353,22 +353,22 @@
 0:39            Construct combined texture-sampler ( temp sampler3D)
 0:39              'g_tTex3df4' ( uniform texture3D)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
-0:?               1 (const int)
+0:39            Constant:
+0:39              0.100000
+0:39              0.200000
+0:39              0.300000
+0:39            Constant:
+0:39              1.100000
+0:39              1.200000
+0:39              1.300000
+0:39            Constant:
+0:39              1.100000
+0:39              1.200000
+0:39              1.300000
+0:39            Constant:
+0:39              1 (const int)
+0:39              0 (const int)
+0:39              1 (const int)
 0:40      Sequence
 0:40        move second child to first child ( temp 4-component vector of int)
 0:40          'txval31' ( temp 4-component vector of int)
@@ -376,22 +376,22 @@
 0:40            Construct combined texture-sampler ( temp isampler3D)
 0:40              'g_tTex3di4' ( uniform itexture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
-0:?               1 (const int)
+0:40            Constant:
+0:40              0.400000
+0:40              0.500000
+0:40              0.600000
+0:40            Constant:
+0:40              1.100000
+0:40              1.200000
+0:40              1.300000
+0:40            Constant:
+0:40              1.100000
+0:40              1.200000
+0:40              1.300000
+0:40            Constant:
+0:40              1 (const int)
+0:40              1 (const int)
+0:40              1 (const int)
 0:41      Sequence
 0:41        move second child to first child ( temp 4-component vector of uint)
 0:41          'txval32' ( temp 4-component vector of uint)
@@ -399,22 +399,22 @@
 0:41            Construct combined texture-sampler ( temp usampler3D)
 0:41              'g_tTex3du4' ( uniform utexture3D)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?               1.300000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
-0:?               -1 (const int)
+0:41            Constant:
+0:41              0.700000
+0:41              0.800000
+0:41              0.900000
+0:41            Constant:
+0:41              1.100000
+0:41              1.200000
+0:41              1.300000
+0:41            Constant:
+0:41              1.100000
+0:41              1.200000
+0:41              1.300000
+0:41            Constant:
+0:41              1 (const int)
+0:41              0 (const int)
+0:41              -1 (const int)
 0:45      move second child to first child ( temp 4-component vector of float)
 0:45        Color: direct index for structure ( temp 4-component vector of float)
 0:45          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
index fb8513b..a3bc4c1 100644
--- a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
@@ -13,9 +13,9 @@
 0:27            Construct combined texture-sampler ( temp sampler1DArray)
 0:27              'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:27            Constant:
+0:27              0.100000
+0:27              0.200000
 0:27            Constant:
 0:27              1.100000
 0:27            Constant:
@@ -29,9 +29,9 @@
 0:28            Construct combined texture-sampler ( temp isampler1DArray)
 0:28              'g_tTex1di4' ( uniform itexture1DArray)
 0:28              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:28            Constant:
+0:28              0.100000
+0:28              0.200000
 0:28            Constant:
 0:28              1.100000
 0:28            Constant:
@@ -45,9 +45,9 @@
 0:29            Construct combined texture-sampler ( temp usampler1DArray)
 0:29              'g_tTex1du4' ( uniform utexture1DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:29            Constant:
+0:29              0.100000
+0:29              0.200000
 0:29            Constant:
 0:29              1.100000
 0:29            Constant:
@@ -61,19 +61,19 @@
 0:31            Construct combined texture-sampler ( temp sampler2DArray)
 0:31              'g_tTex2df4' ( uniform texture2DArray)
 0:31              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:31            Constant:
+0:31              0.100000
+0:31              0.200000
+0:31              0.300000
+0:31            Constant:
+0:31              1.100000
+0:31              1.200000
+0:31            Constant:
+0:31              1.100000
+0:31              1.200000
+0:31            Constant:
+0:31              1 (const int)
+0:31              0 (const int)
 0:32      Sequence
 0:32        move second child to first child ( temp 4-component vector of int)
 0:32          'txval21' ( temp 4-component vector of int)
@@ -81,19 +81,19 @@
 0:32            Construct combined texture-sampler ( temp isampler2DArray)
 0:32              'g_tTex2di4' ( uniform itexture2DArray)
 0:32              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:32            Constant:
+0:32              0.100000
+0:32              0.200000
+0:32              0.300000
+0:32            Constant:
+0:32              1.100000
+0:32              1.200000
+0:32            Constant:
+0:32              1.100000
+0:32              1.200000
+0:32            Constant:
+0:32              1 (const int)
+0:32              0 (const int)
 0:33      Sequence
 0:33        move second child to first child ( temp 4-component vector of uint)
 0:33          'txval22' ( temp 4-component vector of uint)
@@ -101,19 +101,19 @@
 0:33            Construct combined texture-sampler ( temp usampler2DArray)
 0:33              'g_tTex2du4' ( uniform utexture2DArray)
 0:33              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:33            Constant:
+0:33              0.100000
+0:33              0.200000
+0:33              0.300000
+0:33            Constant:
+0:33              1.100000
+0:33              1.200000
+0:33            Constant:
+0:33              1.100000
+0:33              1.200000
+0:33            Constant:
+0:33              1 (const int)
+0:33              0 (const int)
 0:35      move second child to first child ( temp 4-component vector of float)
 0:35        Color: direct index for structure ( temp 4-component vector of float)
 0:35          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -185,9 +185,9 @@
 0:27            Construct combined texture-sampler ( temp sampler1DArray)
 0:27              'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:27            Constant:
+0:27              0.100000
+0:27              0.200000
 0:27            Constant:
 0:27              1.100000
 0:27            Constant:
@@ -201,9 +201,9 @@
 0:28            Construct combined texture-sampler ( temp isampler1DArray)
 0:28              'g_tTex1di4' ( uniform itexture1DArray)
 0:28              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:28            Constant:
+0:28              0.100000
+0:28              0.200000
 0:28            Constant:
 0:28              1.100000
 0:28            Constant:
@@ -217,9 +217,9 @@
 0:29            Construct combined texture-sampler ( temp usampler1DArray)
 0:29              'g_tTex1du4' ( uniform utexture1DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:29            Constant:
+0:29              0.100000
+0:29              0.200000
 0:29            Constant:
 0:29              1.100000
 0:29            Constant:
@@ -233,19 +233,19 @@
 0:31            Construct combined texture-sampler ( temp sampler2DArray)
 0:31              'g_tTex2df4' ( uniform texture2DArray)
 0:31              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:31            Constant:
+0:31              0.100000
+0:31              0.200000
+0:31              0.300000
+0:31            Constant:
+0:31              1.100000
+0:31              1.200000
+0:31            Constant:
+0:31              1.100000
+0:31              1.200000
+0:31            Constant:
+0:31              1 (const int)
+0:31              0 (const int)
 0:32      Sequence
 0:32        move second child to first child ( temp 4-component vector of int)
 0:32          'txval21' ( temp 4-component vector of int)
@@ -253,19 +253,19 @@
 0:32            Construct combined texture-sampler ( temp isampler2DArray)
 0:32              'g_tTex2di4' ( uniform itexture2DArray)
 0:32              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:32            Constant:
+0:32              0.100000
+0:32              0.200000
+0:32              0.300000
+0:32            Constant:
+0:32              1.100000
+0:32              1.200000
+0:32            Constant:
+0:32              1.100000
+0:32              1.200000
+0:32            Constant:
+0:32              1 (const int)
+0:32              0 (const int)
 0:33      Sequence
 0:33        move second child to first child ( temp 4-component vector of uint)
 0:33          'txval22' ( temp 4-component vector of uint)
@@ -273,19 +273,19 @@
 0:33            Construct combined texture-sampler ( temp usampler2DArray)
 0:33              'g_tTex2du4' ( uniform utexture2DArray)
 0:33              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1.100000
-0:?               1.200000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:33            Constant:
+0:33              0.100000
+0:33              0.200000
+0:33              0.300000
+0:33            Constant:
+0:33              1.100000
+0:33              1.200000
+0:33            Constant:
+0:33              1.100000
+0:33              1.200000
+0:33            Constant:
+0:33              1 (const int)
+0:33              0 (const int)
 0:35      move second child to first child ( temp 4-component vector of float)
 0:35        Color: direct index for structure ( temp 4-component vector of float)
 0:35          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
index 95a1a54..68e0e87 100644
--- a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
@@ -13,9 +13,9 @@
 0:27            Construct combined texture-sampler ( temp sampler1DArray)
 0:27              'g_tTex1df4a' (layout( binding=1) uniform texture1DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:27            Constant:
+0:27              0.100000
+0:27              0.200000
 0:27            Constant:
 0:27              0.750000
 0:28      Sequence
@@ -25,9 +25,9 @@
 0:28            Construct combined texture-sampler ( temp isampler1DArray)
 0:28              'g_tTex1di4a' ( uniform itexture1DArray)
 0:28              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.200000
-0:?               0.300000
+0:28            Constant:
+0:28              0.200000
+0:28              0.300000
 0:28            Constant:
 0:28              0.750000
 0:29      Sequence
@@ -37,9 +37,9 @@
 0:29            Construct combined texture-sampler ( temp usampler1DArray)
 0:29              'g_tTex1du4a' ( uniform utexture1DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:29            Constant:
+0:29              0.300000
+0:29              0.400000
 0:29            Constant:
 0:29              0.750000
 0:31      Sequence
@@ -49,10 +49,10 @@
 0:31            Construct combined texture-sampler ( temp sampler2DArray)
 0:31              'g_tTex2df4a' ( uniform texture2DArray)
 0:31              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:31            Constant:
+0:31              0.100000
+0:31              0.200000
+0:31              0.300000
 0:31            Constant:
 0:31              0.750000
 0:32      Sequence
@@ -62,10 +62,10 @@
 0:32            Construct combined texture-sampler ( temp isampler2DArray)
 0:32              'g_tTex2di4a' ( uniform itexture2DArray)
 0:32              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.500000
+0:32            Constant:
+0:32              0.300000
+0:32              0.400000
+0:32              0.500000
 0:32            Constant:
 0:32              0.750000
 0:33      Sequence
@@ -75,10 +75,10 @@
 0:33            Construct combined texture-sampler ( temp usampler2DArray)
 0:33              'g_tTex2du4a' ( uniform utexture2DArray)
 0:33              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:33            Constant:
+0:33              0.500000
+0:33              0.600000
+0:33              0.700000
 0:33            Constant:
 0:33              0.750000
 0:35      Sequence
@@ -88,11 +88,11 @@
 0:35            Construct combined texture-sampler ( temp samplerCubeArray)
 0:35              'g_tTexcdf4a' ( uniform textureCubeArray)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?               0.400000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35              0.300000
+0:35              0.400000
 0:35            Constant:
 0:35              0.750000
 0:36      Sequence
@@ -102,11 +102,11 @@
 0:36            Construct combined texture-sampler ( temp isamplerCubeArray)
 0:36              'g_tTexcdi4a' ( uniform itextureCubeArray)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:36            Constant:
+0:36              0.400000
+0:36              0.500000
+0:36              0.600000
+0:36              0.700000
 0:36            Constant:
 0:36              0.750000
 0:37      Sequence
@@ -116,11 +116,11 @@
 0:37            Construct combined texture-sampler ( temp usamplerCubeArray)
 0:37              'g_tTexcdu4a' ( uniform utextureCubeArray)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?               1.000000
+0:37            Constant:
+0:37              0.700000
+0:37              0.800000
+0:37              0.900000
+0:37              1.000000
 0:37            Constant:
 0:37              0.750000
 0:39      move second child to first child ( temp 4-component vector of float)
@@ -194,9 +194,9 @@
 0:27            Construct combined texture-sampler ( temp sampler1DArray)
 0:27              'g_tTex1df4a' (layout( binding=1) uniform texture1DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:27            Constant:
+0:27              0.100000
+0:27              0.200000
 0:27            Constant:
 0:27              0.750000
 0:28      Sequence
@@ -206,9 +206,9 @@
 0:28            Construct combined texture-sampler ( temp isampler1DArray)
 0:28              'g_tTex1di4a' ( uniform itexture1DArray)
 0:28              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.200000
-0:?               0.300000
+0:28            Constant:
+0:28              0.200000
+0:28              0.300000
 0:28            Constant:
 0:28              0.750000
 0:29      Sequence
@@ -218,9 +218,9 @@
 0:29            Construct combined texture-sampler ( temp usampler1DArray)
 0:29              'g_tTex1du4a' ( uniform utexture1DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:29            Constant:
+0:29              0.300000
+0:29              0.400000
 0:29            Constant:
 0:29              0.750000
 0:31      Sequence
@@ -230,10 +230,10 @@
 0:31            Construct combined texture-sampler ( temp sampler2DArray)
 0:31              'g_tTex2df4a' ( uniform texture2DArray)
 0:31              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:31            Constant:
+0:31              0.100000
+0:31              0.200000
+0:31              0.300000
 0:31            Constant:
 0:31              0.750000
 0:32      Sequence
@@ -243,10 +243,10 @@
 0:32            Construct combined texture-sampler ( temp isampler2DArray)
 0:32              'g_tTex2di4a' ( uniform itexture2DArray)
 0:32              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.500000
+0:32            Constant:
+0:32              0.300000
+0:32              0.400000
+0:32              0.500000
 0:32            Constant:
 0:32              0.750000
 0:33      Sequence
@@ -256,10 +256,10 @@
 0:33            Construct combined texture-sampler ( temp usampler2DArray)
 0:33              'g_tTex2du4a' ( uniform utexture2DArray)
 0:33              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:33            Constant:
+0:33              0.500000
+0:33              0.600000
+0:33              0.700000
 0:33            Constant:
 0:33              0.750000
 0:35      Sequence
@@ -269,11 +269,11 @@
 0:35            Construct combined texture-sampler ( temp samplerCubeArray)
 0:35              'g_tTexcdf4a' ( uniform textureCubeArray)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
-0:?               0.400000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
+0:35              0.300000
+0:35              0.400000
 0:35            Constant:
 0:35              0.750000
 0:36      Sequence
@@ -283,11 +283,11 @@
 0:36            Construct combined texture-sampler ( temp isamplerCubeArray)
 0:36              'g_tTexcdi4a' ( uniform itextureCubeArray)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:36            Constant:
+0:36              0.400000
+0:36              0.500000
+0:36              0.600000
+0:36              0.700000
 0:36            Constant:
 0:36              0.750000
 0:37      Sequence
@@ -297,11 +297,11 @@
 0:37            Construct combined texture-sampler ( temp usamplerCubeArray)
 0:37              'g_tTexcdu4a' ( uniform utextureCubeArray)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
-0:?               1.000000
+0:37            Constant:
+0:37              0.700000
+0:37              0.800000
+0:37              0.900000
+0:37              1.000000
 0:37            Constant:
 0:37              0.750000
 0:39      move second child to first child ( temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
index 99e252c..ee3588d 100644
--- a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
@@ -46,9 +46,9 @@
 0:36            Construct combined texture-sampler ( temp sampler2D)
 0:36              'g_tTex2df4' ( uniform texture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:36            Constant:
+0:36              0.100000
+0:36              0.200000
 0:36            Constant:
 0:36              0.750000
 0:37      Sequence
@@ -58,9 +58,9 @@
 0:37            Construct combined texture-sampler ( temp isampler2D)
 0:37              'g_tTex2di4' ( uniform itexture2D)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:37            Constant:
+0:37              0.300000
+0:37              0.400000
 0:37            Constant:
 0:37              0.750000
 0:38      Sequence
@@ -70,9 +70,9 @@
 0:38            Construct combined texture-sampler ( temp usampler2D)
 0:38              'g_tTex2du4' ( uniform utexture2D)
 0:38              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
+0:38            Constant:
+0:38              0.500000
+0:38              0.600000
 0:38            Constant:
 0:38              0.750000
 0:40      Sequence
@@ -82,10 +82,10 @@
 0:40            Construct combined texture-sampler ( temp sampler3D)
 0:40              'g_tTex3df4' ( uniform texture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:40            Constant:
+0:40              0.100000
+0:40              0.200000
+0:40              0.300000
 0:40            Constant:
 0:40              0.750000
 0:41      Sequence
@@ -95,10 +95,10 @@
 0:41            Construct combined texture-sampler ( temp isampler3D)
 0:41              'g_tTex3di4' ( uniform itexture3D)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:41            Constant:
+0:41              0.400000
+0:41              0.500000
+0:41              0.600000
 0:41            Constant:
 0:41              0.750000
 0:42      Sequence
@@ -108,10 +108,10 @@
 0:42            Construct combined texture-sampler ( temp usampler3D)
 0:42              'g_tTex3du4' ( uniform utexture3D)
 0:42              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:42            Constant:
+0:42              0.700000
+0:42              0.800000
+0:42              0.900000
 0:42            Constant:
 0:42              0.750000
 0:44      Sequence
@@ -121,10 +121,10 @@
 0:44            Construct combined texture-sampler ( temp samplerCube)
 0:44              'g_tTexcdf4' ( uniform textureCube)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:44            Constant:
+0:44              0.100000
+0:44              0.200000
+0:44              0.300000
 0:44            Constant:
 0:44              0.750000
 0:45      Sequence
@@ -134,10 +134,10 @@
 0:45            Construct combined texture-sampler ( temp isamplerCube)
 0:45              'g_tTexcdi4' ( uniform itextureCube)
 0:45              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:45            Constant:
+0:45              0.400000
+0:45              0.500000
+0:45              0.600000
 0:45            Constant:
 0:45              0.750000
 0:46      Sequence
@@ -147,10 +147,10 @@
 0:46            Construct combined texture-sampler ( temp usamplerCube)
 0:46              'g_tTexcdu4' ( uniform utextureCube)
 0:46              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:46            Constant:
+0:46              0.700000
+0:46              0.800000
+0:46              0.900000
 0:46            Constant:
 0:46              0.750000
 0:48      move second child to first child ( temp 4-component vector of float)
@@ -261,9 +261,9 @@
 0:36            Construct combined texture-sampler ( temp sampler2D)
 0:36              'g_tTex2df4' ( uniform texture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:36            Constant:
+0:36              0.100000
+0:36              0.200000
 0:36            Constant:
 0:36              0.750000
 0:37      Sequence
@@ -273,9 +273,9 @@
 0:37            Construct combined texture-sampler ( temp isampler2D)
 0:37              'g_tTex2di4' ( uniform itexture2D)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:37            Constant:
+0:37              0.300000
+0:37              0.400000
 0:37            Constant:
 0:37              0.750000
 0:38      Sequence
@@ -285,9 +285,9 @@
 0:38            Construct combined texture-sampler ( temp usampler2D)
 0:38              'g_tTex2du4' ( uniform utexture2D)
 0:38              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
+0:38            Constant:
+0:38              0.500000
+0:38              0.600000
 0:38            Constant:
 0:38              0.750000
 0:40      Sequence
@@ -297,10 +297,10 @@
 0:40            Construct combined texture-sampler ( temp sampler3D)
 0:40              'g_tTex3df4' ( uniform texture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:40            Constant:
+0:40              0.100000
+0:40              0.200000
+0:40              0.300000
 0:40            Constant:
 0:40              0.750000
 0:41      Sequence
@@ -310,10 +310,10 @@
 0:41            Construct combined texture-sampler ( temp isampler3D)
 0:41              'g_tTex3di4' ( uniform itexture3D)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:41            Constant:
+0:41              0.400000
+0:41              0.500000
+0:41              0.600000
 0:41            Constant:
 0:41              0.750000
 0:42      Sequence
@@ -323,10 +323,10 @@
 0:42            Construct combined texture-sampler ( temp usampler3D)
 0:42              'g_tTex3du4' ( uniform utexture3D)
 0:42              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:42            Constant:
+0:42              0.700000
+0:42              0.800000
+0:42              0.900000
 0:42            Constant:
 0:42              0.750000
 0:44      Sequence
@@ -336,10 +336,10 @@
 0:44            Construct combined texture-sampler ( temp samplerCube)
 0:44              'g_tTexcdf4' ( uniform textureCube)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:44            Constant:
+0:44              0.100000
+0:44              0.200000
+0:44              0.300000
 0:44            Constant:
 0:44              0.750000
 0:45      Sequence
@@ -349,10 +349,10 @@
 0:45            Construct combined texture-sampler ( temp isamplerCube)
 0:45              'g_tTexcdi4' ( uniform itextureCube)
 0:45              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:45            Constant:
+0:45              0.400000
+0:45              0.500000
+0:45              0.600000
 0:45            Constant:
 0:45              0.750000
 0:46      Sequence
@@ -362,10 +362,10 @@
 0:46            Construct combined texture-sampler ( temp usamplerCube)
 0:46              'g_tTexcdu4' ( uniform utextureCube)
 0:46              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:46            Constant:
+0:46              0.700000
+0:46              0.800000
+0:46              0.900000
 0:46            Constant:
 0:46              0.750000
 0:48      move second child to first child ( temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
index d4d720b..a3ff9e6 100644
--- a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
@@ -44,9 +44,9 @@
 0:34            Construct combined texture-sampler ( temp sampler2D)
 0:34              'g_tTex2df4' ( uniform texture2D)
 0:34              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:34            Constant:
+0:34              0.100000
+0:34              0.200000
 0:34            Constant:
 0:34              0.750000
 0:35      Sequence
@@ -56,9 +56,9 @@
 0:35            Construct combined texture-sampler ( temp isampler2D)
 0:35              'g_tTex2di4' ( uniform itexture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:35            Constant:
+0:35              0.300000
+0:35              0.400000
 0:35            Constant:
 0:35              0.750000
 0:36      Sequence
@@ -68,9 +68,9 @@
 0:36            Construct combined texture-sampler ( temp usampler2D)
 0:36              'g_tTex2du4' ( uniform utexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
+0:36            Constant:
+0:36              0.500000
+0:36              0.600000
 0:36            Constant:
 0:36              0.750000
 0:38      Sequence
@@ -80,10 +80,10 @@
 0:38            Construct combined texture-sampler ( temp sampler3D)
 0:38              'g_tTex3df4' ( uniform texture3D)
 0:38              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:38            Constant:
+0:38              0.100000
+0:38              0.200000
+0:38              0.300000
 0:38            Constant:
 0:38              0.750000
 0:39      Sequence
@@ -93,10 +93,10 @@
 0:39            Construct combined texture-sampler ( temp isampler3D)
 0:39              'g_tTex3di4' ( uniform itexture3D)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:39            Constant:
+0:39              0.400000
+0:39              0.500000
+0:39              0.600000
 0:39            Constant:
 0:39              0.750000
 0:40      Sequence
@@ -106,10 +106,10 @@
 0:40            Construct combined texture-sampler ( temp usampler3D)
 0:40              'g_tTex3du4' ( uniform utexture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:40            Constant:
+0:40              0.700000
+0:40              0.800000
+0:40              0.900000
 0:40            Constant:
 0:40              0.750000
 0:42      Sequence
@@ -119,10 +119,10 @@
 0:42            Construct combined texture-sampler ( temp samplerCube)
 0:42              'g_tTexcdf4' ( uniform textureCube)
 0:42              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:42            Constant:
+0:42              0.100000
+0:42              0.200000
+0:42              0.300000
 0:42            Constant:
 0:42              0.750000
 0:43      Sequence
@@ -132,10 +132,10 @@
 0:43            Construct combined texture-sampler ( temp isamplerCube)
 0:43              'g_tTexcdi4' ( uniform itextureCube)
 0:43              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:43            Constant:
+0:43              0.400000
+0:43              0.500000
+0:43              0.600000
 0:43            Constant:
 0:43              0.750000
 0:44      Sequence
@@ -145,10 +145,10 @@
 0:44            Construct combined texture-sampler ( temp usamplerCube)
 0:44              'g_tTexcdu4' ( uniform utextureCube)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:44            Constant:
+0:44              0.700000
+0:44              0.800000
+0:44              0.900000
 0:44            Constant:
 0:44              0.750000
 0:46      move second child to first child ( temp 4-component vector of float)
@@ -156,11 +156,11 @@
 0:46          'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:46          Constant:
 0:46            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:46        Constant:
+0:46          0.000000
+0:46          0.000000
+0:46          0.000000
+0:46          0.000000
 0:48      Branch: Return with expression
 0:48        'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:27  Function Definition: main( ( temp void)
@@ -239,9 +239,9 @@
 0:34            Construct combined texture-sampler ( temp sampler2D)
 0:34              'g_tTex2df4' ( uniform texture2D)
 0:34              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:34            Constant:
+0:34              0.100000
+0:34              0.200000
 0:34            Constant:
 0:34              0.750000
 0:35      Sequence
@@ -251,9 +251,9 @@
 0:35            Construct combined texture-sampler ( temp isampler2D)
 0:35              'g_tTex2di4' ( uniform itexture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:35            Constant:
+0:35              0.300000
+0:35              0.400000
 0:35            Constant:
 0:35              0.750000
 0:36      Sequence
@@ -263,9 +263,9 @@
 0:36            Construct combined texture-sampler ( temp usampler2D)
 0:36              'g_tTex2du4' ( uniform utexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
+0:36            Constant:
+0:36              0.500000
+0:36              0.600000
 0:36            Constant:
 0:36              0.750000
 0:38      Sequence
@@ -275,10 +275,10 @@
 0:38            Construct combined texture-sampler ( temp sampler3D)
 0:38              'g_tTex3df4' ( uniform texture3D)
 0:38              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:38            Constant:
+0:38              0.100000
+0:38              0.200000
+0:38              0.300000
 0:38            Constant:
 0:38              0.750000
 0:39      Sequence
@@ -288,10 +288,10 @@
 0:39            Construct combined texture-sampler ( temp isampler3D)
 0:39              'g_tTex3di4' ( uniform itexture3D)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:39            Constant:
+0:39              0.400000
+0:39              0.500000
+0:39              0.600000
 0:39            Constant:
 0:39              0.750000
 0:40      Sequence
@@ -301,10 +301,10 @@
 0:40            Construct combined texture-sampler ( temp usampler3D)
 0:40              'g_tTex3du4' ( uniform utexture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:40            Constant:
+0:40              0.700000
+0:40              0.800000
+0:40              0.900000
 0:40            Constant:
 0:40              0.750000
 0:42      Sequence
@@ -314,10 +314,10 @@
 0:42            Construct combined texture-sampler ( temp samplerCube)
 0:42              'g_tTexcdf4' ( uniform textureCube)
 0:42              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:42            Constant:
+0:42              0.100000
+0:42              0.200000
+0:42              0.300000
 0:42            Constant:
 0:42              0.750000
 0:43      Sequence
@@ -327,10 +327,10 @@
 0:43            Construct combined texture-sampler ( temp isamplerCube)
 0:43              'g_tTexcdi4' ( uniform itextureCube)
 0:43              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:43            Constant:
+0:43              0.400000
+0:43              0.500000
+0:43              0.600000
 0:43            Constant:
 0:43              0.750000
 0:44      Sequence
@@ -340,10 +340,10 @@
 0:44            Construct combined texture-sampler ( temp usamplerCube)
 0:44              'g_tTexcdu4' ( uniform utextureCube)
 0:44              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:44            Constant:
+0:44              0.700000
+0:44              0.800000
+0:44              0.900000
 0:44            Constant:
 0:44              0.750000
 0:46      move second child to first child ( temp 4-component vector of float)
@@ -351,11 +351,11 @@
 0:46          'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:46          Constant:
 0:46            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:46        Constant:
+0:46          0.000000
+0:46          0.000000
+0:46          0.000000
+0:46          0.000000
 0:48      Branch: Return with expression
 0:48        'vsout' ( temp structure{ temp 4-component vector of float Pos})
 0:27  Function Definition: main( ( temp void)
diff --git a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
index dda4238..c9d431b 100644
--- a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
@@ -52,14 +52,14 @@
 0:35            Construct combined texture-sampler ( temp sampler2D)
 0:35              'g_tTex2df4' ( uniform texture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
 0:35            Constant:
 0:35              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:35            Constant:
+0:35              1 (const int)
+0:35              0 (const int)
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of int)
 0:36          'txval21' ( temp 4-component vector of int)
@@ -67,14 +67,14 @@
 0:36            Construct combined texture-sampler ( temp isampler2D)
 0:36              'g_tTex2di4' ( uniform itexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:36            Constant:
+0:36              0.300000
+0:36              0.400000
 0:36            Constant:
 0:36              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
+0:36            Constant:
+0:36              1 (const int)
+0:36              1 (const int)
 0:37      Sequence
 0:37        move second child to first child ( temp 4-component vector of uint)
 0:37          'txval22' ( temp 4-component vector of uint)
@@ -82,14 +82,14 @@
 0:37            Construct combined texture-sampler ( temp usampler2D)
 0:37              'g_tTex2du4' ( uniform utexture2D)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
+0:37            Constant:
+0:37              0.500000
+0:37              0.600000
 0:37            Constant:
 0:37              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               -1 (const int)
+0:37            Constant:
+0:37              1 (const int)
+0:37              -1 (const int)
 0:39      Sequence
 0:39        move second child to first child ( temp 4-component vector of float)
 0:39          'txval30' ( temp 4-component vector of float)
@@ -97,16 +97,16 @@
 0:39            Construct combined texture-sampler ( temp sampler3D)
 0:39              'g_tTex3df4' ( uniform texture3D)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:39            Constant:
+0:39              0.100000
+0:39              0.200000
+0:39              0.300000
 0:39            Constant:
 0:39              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
-0:?               1 (const int)
+0:39            Constant:
+0:39              1 (const int)
+0:39              0 (const int)
+0:39              1 (const int)
 0:40      Sequence
 0:40        move second child to first child ( temp 4-component vector of int)
 0:40          'txval31' ( temp 4-component vector of int)
@@ -114,16 +114,16 @@
 0:40            Construct combined texture-sampler ( temp isampler3D)
 0:40              'g_tTex3di4' ( uniform itexture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:40            Constant:
+0:40              0.400000
+0:40              0.500000
+0:40              0.600000
 0:40            Constant:
 0:40              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
-0:?               1 (const int)
+0:40            Constant:
+0:40              1 (const int)
+0:40              1 (const int)
+0:40              1 (const int)
 0:41      Sequence
 0:41        move second child to first child ( temp 4-component vector of uint)
 0:41          'txval32' ( temp 4-component vector of uint)
@@ -131,16 +131,16 @@
 0:41            Construct combined texture-sampler ( temp usampler3D)
 0:41              'g_tTex3du4' ( uniform utexture3D)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:41            Constant:
+0:41              0.700000
+0:41              0.800000
+0:41              0.900000
 0:41            Constant:
 0:41              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
-0:?               -1 (const int)
+0:41            Constant:
+0:41              1 (const int)
+0:41              0 (const int)
+0:41              -1 (const int)
 0:45      move second child to first child ( temp 4-component vector of float)
 0:45        Color: direct index for structure ( temp 4-component vector of float)
 0:45          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -254,14 +254,14 @@
 0:35            Construct combined texture-sampler ( temp sampler2D)
 0:35              'g_tTex2df4' ( uniform texture2D)
 0:35              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:35            Constant:
+0:35              0.100000
+0:35              0.200000
 0:35            Constant:
 0:35              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
+0:35            Constant:
+0:35              1 (const int)
+0:35              0 (const int)
 0:36      Sequence
 0:36        move second child to first child ( temp 4-component vector of int)
 0:36          'txval21' ( temp 4-component vector of int)
@@ -269,14 +269,14 @@
 0:36            Construct combined texture-sampler ( temp isampler2D)
 0:36              'g_tTex2di4' ( uniform itexture2D)
 0:36              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:36            Constant:
+0:36              0.300000
+0:36              0.400000
 0:36            Constant:
 0:36              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
+0:36            Constant:
+0:36              1 (const int)
+0:36              1 (const int)
 0:37      Sequence
 0:37        move second child to first child ( temp 4-component vector of uint)
 0:37          'txval22' ( temp 4-component vector of uint)
@@ -284,14 +284,14 @@
 0:37            Construct combined texture-sampler ( temp usampler2D)
 0:37              'g_tTex2du4' ( uniform utexture2D)
 0:37              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
+0:37            Constant:
+0:37              0.500000
+0:37              0.600000
 0:37            Constant:
 0:37              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               -1 (const int)
+0:37            Constant:
+0:37              1 (const int)
+0:37              -1 (const int)
 0:39      Sequence
 0:39        move second child to first child ( temp 4-component vector of float)
 0:39          'txval30' ( temp 4-component vector of float)
@@ -299,16 +299,16 @@
 0:39            Construct combined texture-sampler ( temp sampler3D)
 0:39              'g_tTex3df4' ( uniform texture3D)
 0:39              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:39            Constant:
+0:39              0.100000
+0:39              0.200000
+0:39              0.300000
 0:39            Constant:
 0:39              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
-0:?               1 (const int)
+0:39            Constant:
+0:39              1 (const int)
+0:39              0 (const int)
+0:39              1 (const int)
 0:40      Sequence
 0:40        move second child to first child ( temp 4-component vector of int)
 0:40          'txval31' ( temp 4-component vector of int)
@@ -316,16 +316,16 @@
 0:40            Construct combined texture-sampler ( temp isampler3D)
 0:40              'g_tTex3di4' ( uniform itexture3D)
 0:40              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.400000
-0:?               0.500000
-0:?               0.600000
+0:40            Constant:
+0:40              0.400000
+0:40              0.500000
+0:40              0.600000
 0:40            Constant:
 0:40              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               1 (const int)
-0:?               1 (const int)
+0:40            Constant:
+0:40              1 (const int)
+0:40              1 (const int)
+0:40              1 (const int)
 0:41      Sequence
 0:41        move second child to first child ( temp 4-component vector of uint)
 0:41          'txval32' ( temp 4-component vector of uint)
@@ -333,16 +333,16 @@
 0:41            Construct combined texture-sampler ( temp usampler3D)
 0:41              'g_tTex3du4' ( uniform utexture3D)
 0:41              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.700000
-0:?               0.800000
-0:?               0.900000
+0:41            Constant:
+0:41              0.700000
+0:41              0.800000
+0:41              0.900000
 0:41            Constant:
 0:41              0.750000
-0:?             Constant:
-0:?               1 (const int)
-0:?               0 (const int)
-0:?               -1 (const int)
+0:41            Constant:
+0:41              1 (const int)
+0:41              0 (const int)
+0:41              -1 (const int)
 0:45      move second child to first child ( temp 4-component vector of float)
 0:45        Color: direct index for structure ( temp 4-component vector of float)
 0:45          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
index c0c27e4..3f6ae55 100644
--- a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
@@ -13,9 +13,9 @@
 0:23            Construct combined texture-sampler ( temp sampler1DArray)
 0:23              'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
 0:23              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:23            Constant:
+0:23              0.100000
+0:23              0.200000
 0:23            Constant:
 0:23              0.750000
 0:23            Constant:
@@ -27,9 +27,9 @@
 0:24            Construct combined texture-sampler ( temp isampler1DArray)
 0:24              'g_tTex1di4' ( uniform itexture1DArray)
 0:24              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.200000
-0:?               0.300000
+0:24            Constant:
+0:24              0.200000
+0:24              0.300000
 0:24            Constant:
 0:24              0.750000
 0:24            Constant:
@@ -41,9 +41,9 @@
 0:25            Construct combined texture-sampler ( temp usampler1DArray)
 0:25              'g_tTex1du4' ( uniform utexture1DArray)
 0:25              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:25            Constant:
+0:25              0.300000
+0:25              0.400000
 0:25            Constant:
 0:25              0.750000
 0:25            Constant:
@@ -55,15 +55,15 @@
 0:27            Construct combined texture-sampler ( temp sampler2DArray)
 0:27              'g_tTex2df4' ( uniform texture2DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:27            Constant:
+0:27              0.100000
+0:27              0.200000
+0:27              0.300000
 0:27            Constant:
 0:27              0.750000
-0:?             Constant:
-0:?               0 (const int)
-0:?               0 (const int)
+0:27            Constant:
+0:27              0 (const int)
+0:27              0 (const int)
 0:28      Sequence
 0:28        move second child to first child ( temp 4-component vector of int)
 0:28          'txval21' ( temp 4-component vector of int)
@@ -71,15 +71,15 @@
 0:28            Construct combined texture-sampler ( temp isampler2DArray)
 0:28              'g_tTex2di4' ( uniform itexture2DArray)
 0:28              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.500000
+0:28            Constant:
+0:28              0.300000
+0:28              0.400000
+0:28              0.500000
 0:28            Constant:
 0:28              0.750000
-0:?             Constant:
-0:?               0 (const int)
-0:?               0 (const int)
+0:28            Constant:
+0:28              0 (const int)
+0:28              0 (const int)
 0:29      Sequence
 0:29        move second child to first child ( temp 4-component vector of uint)
 0:29          'txval22' ( temp 4-component vector of uint)
@@ -87,15 +87,15 @@
 0:29            Construct combined texture-sampler ( temp usampler2DArray)
 0:29              'g_tTex2du4' ( uniform utexture2DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:29            Constant:
+0:29              0.500000
+0:29              0.600000
+0:29              0.700000
 0:29            Constant:
 0:29              0.750000
-0:?             Constant:
-0:?               0 (const int)
-0:?               1 (const int)
+0:29            Constant:
+0:29              0 (const int)
+0:29              1 (const int)
 0:33      move second child to first child ( temp 4-component vector of float)
 0:33        Color: direct index for structure ( temp 4-component vector of float)
 0:33          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
@@ -164,9 +164,9 @@
 0:23            Construct combined texture-sampler ( temp sampler1DArray)
 0:23              'g_tTex1df4' (layout( binding=0) uniform texture1DArray)
 0:23              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
+0:23            Constant:
+0:23              0.100000
+0:23              0.200000
 0:23            Constant:
 0:23              0.750000
 0:23            Constant:
@@ -178,9 +178,9 @@
 0:24            Construct combined texture-sampler ( temp isampler1DArray)
 0:24              'g_tTex1di4' ( uniform itexture1DArray)
 0:24              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.200000
-0:?               0.300000
+0:24            Constant:
+0:24              0.200000
+0:24              0.300000
 0:24            Constant:
 0:24              0.750000
 0:24            Constant:
@@ -192,9 +192,9 @@
 0:25            Construct combined texture-sampler ( temp usampler1DArray)
 0:25              'g_tTex1du4' ( uniform utexture1DArray)
 0:25              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
+0:25            Constant:
+0:25              0.300000
+0:25              0.400000
 0:25            Constant:
 0:25              0.750000
 0:25            Constant:
@@ -206,15 +206,15 @@
 0:27            Construct combined texture-sampler ( temp sampler2DArray)
 0:27              'g_tTex2df4' ( uniform texture2DArray)
 0:27              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.100000
-0:?               0.200000
-0:?               0.300000
+0:27            Constant:
+0:27              0.100000
+0:27              0.200000
+0:27              0.300000
 0:27            Constant:
 0:27              0.750000
-0:?             Constant:
-0:?               0 (const int)
-0:?               0 (const int)
+0:27            Constant:
+0:27              0 (const int)
+0:27              0 (const int)
 0:28      Sequence
 0:28        move second child to first child ( temp 4-component vector of int)
 0:28          'txval21' ( temp 4-component vector of int)
@@ -222,15 +222,15 @@
 0:28            Construct combined texture-sampler ( temp isampler2DArray)
 0:28              'g_tTex2di4' ( uniform itexture2DArray)
 0:28              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.300000
-0:?               0.400000
-0:?               0.500000
+0:28            Constant:
+0:28              0.300000
+0:28              0.400000
+0:28              0.500000
 0:28            Constant:
 0:28              0.750000
-0:?             Constant:
-0:?               0 (const int)
-0:?               0 (const int)
+0:28            Constant:
+0:28              0 (const int)
+0:28              0 (const int)
 0:29      Sequence
 0:29        move second child to first child ( temp 4-component vector of uint)
 0:29          'txval22' ( temp 4-component vector of uint)
@@ -238,15 +238,15 @@
 0:29            Construct combined texture-sampler ( temp usampler2DArray)
 0:29              'g_tTex2du4' ( uniform utexture2DArray)
 0:29              'g_sSamp' (layout( binding=0) uniform sampler)
-0:?             Constant:
-0:?               0.500000
-0:?               0.600000
-0:?               0.700000
+0:29            Constant:
+0:29              0.500000
+0:29              0.600000
+0:29              0.700000
 0:29            Constant:
 0:29              0.750000
-0:?             Constant:
-0:?               0 (const int)
-0:?               1 (const int)
+0:29            Constant:
+0:29              0 (const int)
+0:29              1 (const int)
 0:33      move second child to first child ( temp 4-component vector of float)
 0:33        Color: direct index for structure ( temp 4-component vector of float)
 0:33          'psout' ( temp structure{ temp 4-component vector of float Color,  temp float Depth})
diff --git a/Test/baseResults/hlsl.scalar2matrix.frag.out b/Test/baseResults/hlsl.scalar2matrix.frag.out
index 8a1413f..62980dd 100644
--- a/Test/baseResults/hlsl.scalar2matrix.frag.out
+++ b/Test/baseResults/hlsl.scalar2matrix.frag.out
@@ -89,23 +89,23 @@
 0:16          0.750000
 0:17      move second child to first child ( temp 4X4 matrix of float)
 0:17        'mat4' ( temp 4X4 matrix of float)
-0:?         Constant:
-0:?           4.000000
-0:?           4.100000
-0:?           4.200000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:17        Constant:
+0:17          4.000000
+0:17          4.100000
+0:17          4.200000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
 0:18      move second child to first child ( temp 4X4 matrix of float)
 0:18        'mat4' ( temp 4X4 matrix of float)
 0:18        Constant:
@@ -278,23 +278,23 @@
 0:16          0.750000
 0:17      move second child to first child ( temp 4X4 matrix of float)
 0:17        'mat4' ( temp 4X4 matrix of float)
-0:?         Constant:
-0:?           4.000000
-0:?           4.100000
-0:?           4.200000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:17        Constant:
+0:17          4.000000
+0:17          4.100000
+0:17          4.200000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
+0:17          0.000000
 0:18      move second child to first child ( temp 4X4 matrix of float)
 0:18        'mat4' ( temp 4X4 matrix of float)
 0:18        Constant:
diff --git a/Test/baseResults/hlsl.semantic-1.vert.out b/Test/baseResults/hlsl.semantic-1.vert.out
index e0786f0..25fb582 100644
--- a/Test/baseResults/hlsl.semantic-1.vert.out
+++ b/Test/baseResults/hlsl.semantic-1.vert.out
@@ -16,7 +16,7 @@
 0:19          's' ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float UV0,  temp 2-component vector of float UV1,  temp 2-component vector of float UV2,  temp 2-component vector of float UV3})
 0:19          Constant:
 0:19            1 (const int)
-0:?         Construct vec2 ( temp 2-component vector of float)
+0:19        Construct vec2 ( temp 2-component vector of float)
 0:19          direct index ( temp float)
 0:19            'v' ( in 4-component vector of float)
 0:19            Constant:
@@ -30,7 +30,7 @@
 0:20          's' ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float UV0,  temp 2-component vector of float UV1,  temp 2-component vector of float UV2,  temp 2-component vector of float UV3})
 0:20          Constant:
 0:20            2 (const int)
-0:?         Construct vec2 ( temp 2-component vector of float)
+0:20        Construct vec2 ( temp 2-component vector of float)
 0:20          direct index ( temp float)
 0:20            'v' ( in 4-component vector of float)
 0:20            Constant:
@@ -44,7 +44,7 @@
 0:21          's' ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float UV0,  temp 2-component vector of float UV1,  temp 2-component vector of float UV2,  temp 2-component vector of float UV3})
 0:21          Constant:
 0:21            3 (const int)
-0:?         Construct vec2 ( temp 2-component vector of float)
+0:21        Construct vec2 ( temp 2-component vector of float)
 0:21          direct index ( temp float)
 0:21            'v' ( in 4-component vector of float)
 0:21            Constant:
@@ -58,7 +58,7 @@
 0:22          's' ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float UV0,  temp 2-component vector of float UV1,  temp 2-component vector of float UV2,  temp 2-component vector of float UV3})
 0:22          Constant:
 0:22            4 (const int)
-0:?         Construct vec2 ( temp 2-component vector of float)
+0:22        Construct vec2 ( temp 2-component vector of float)
 0:22          direct index ( temp float)
 0:22            'v' ( in 4-component vector of float)
 0:22            Constant:
@@ -139,7 +139,7 @@
 0:19          's' ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float UV0,  temp 2-component vector of float UV1,  temp 2-component vector of float UV2,  temp 2-component vector of float UV3})
 0:19          Constant:
 0:19            1 (const int)
-0:?         Construct vec2 ( temp 2-component vector of float)
+0:19        Construct vec2 ( temp 2-component vector of float)
 0:19          direct index ( temp float)
 0:19            'v' ( in 4-component vector of float)
 0:19            Constant:
@@ -153,7 +153,7 @@
 0:20          's' ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float UV0,  temp 2-component vector of float UV1,  temp 2-component vector of float UV2,  temp 2-component vector of float UV3})
 0:20          Constant:
 0:20            2 (const int)
-0:?         Construct vec2 ( temp 2-component vector of float)
+0:20        Construct vec2 ( temp 2-component vector of float)
 0:20          direct index ( temp float)
 0:20            'v' ( in 4-component vector of float)
 0:20            Constant:
@@ -167,7 +167,7 @@
 0:21          's' ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float UV0,  temp 2-component vector of float UV1,  temp 2-component vector of float UV2,  temp 2-component vector of float UV3})
 0:21          Constant:
 0:21            3 (const int)
-0:?         Construct vec2 ( temp 2-component vector of float)
+0:21        Construct vec2 ( temp 2-component vector of float)
 0:21          direct index ( temp float)
 0:21            'v' ( in 4-component vector of float)
 0:21            Constant:
@@ -181,7 +181,7 @@
 0:22          's' ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float UV0,  temp 2-component vector of float UV1,  temp 2-component vector of float UV2,  temp 2-component vector of float UV3})
 0:22          Constant:
 0:22            4 (const int)
-0:?         Construct vec2 ( temp 2-component vector of float)
+0:22        Construct vec2 ( temp 2-component vector of float)
 0:22          direct index ( temp float)
 0:22            'v' ( in 4-component vector of float)
 0:22            Constant:
diff --git a/Test/baseResults/hlsl.singleArgIntPromo.vert.out b/Test/baseResults/hlsl.singleArgIntPromo.vert.out
index 1da9d5b..a610594 100644
--- a/Test/baseResults/hlsl.singleArgIntPromo.vert.out
+++ b/Test/baseResults/hlsl.singleArgIntPromo.vert.out
@@ -12,7 +12,7 @@
 0:4      Sequence
 0:4        move second child to first child ( temp 2-component vector of int)
 0:4          'd2' ( temp 2-component vector of int)
-0:?           Construct ivec2 ( temp 2-component vector of int)
+0:4          Construct ivec2 ( temp 2-component vector of int)
 0:4            Constant:
 0:4              5 (const int)
 0:4            'd' ( temp int)
@@ -30,10 +30,10 @@
 0:7      Sequence
 0:7        move second child to first child ( temp 3-component vector of float)
 0:7          'f3' ( temp 3-component vector of float)
-0:?           Constant:
-0:?             1.945910
-0:?             0.693147
-0:?             1.098612
+0:7          Constant:
+0:7            1.945910
+0:7            0.693147
+0:7            1.098612
 0:8      Sequence
 0:8        move second child to first child ( temp 2-component vector of float)
 0:8          'f22' ( temp 2-component vector of float)
@@ -111,7 +111,7 @@
 0:4      Sequence
 0:4        move second child to first child ( temp 2-component vector of int)
 0:4          'd2' ( temp 2-component vector of int)
-0:?           Construct ivec2 ( temp 2-component vector of int)
+0:4          Construct ivec2 ( temp 2-component vector of int)
 0:4            Constant:
 0:4              5 (const int)
 0:4            'd' ( temp int)
@@ -129,10 +129,10 @@
 0:7      Sequence
 0:7        move second child to first child ( temp 3-component vector of float)
 0:7          'f3' ( temp 3-component vector of float)
-0:?           Constant:
-0:?             1.945910
-0:?             0.693147
-0:?             1.098612
+0:7          Constant:
+0:7            1.945910
+0:7            0.693147
+0:7            1.098612
 0:8      Sequence
 0:8        move second child to first child ( temp 2-component vector of float)
 0:8          'f22' ( temp 2-component vector of float)
diff --git a/Test/baseResults/hlsl.staticMemberFunction.frag.out b/Test/baseResults/hlsl.staticMemberFunction.frag.out
index 0d27dba..f0e5f9f 100644
--- a/Test/baseResults/hlsl.staticMemberFunction.frag.out
+++ b/Test/baseResults/hlsl.staticMemberFunction.frag.out
@@ -26,19 +26,19 @@
 0:18      Sequence
 0:18        move second child to first child ( temp 4-component vector of float)
 0:18          'f4' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             1.000000
-0:?             1.000000
-0:?             1.000000
-0:?             1.000000
+0:18          Constant:
+0:18            1.000000
+0:18            1.000000
+0:18            1.000000
+0:18            1.000000
 0:19      add second child into first child ( temp 4-component vector of float)
 0:19        'f4' ( temp 4-component vector of float)
 0:19        Function Call: Test::staticMemFun(vf4; ( global 4-component vector of float)
-0:?           Constant:
-0:?             5.000000
-0:?             5.000000
-0:?             5.000000
-0:?             5.000000
+0:19          Constant:
+0:19            5.000000
+0:19            5.000000
+0:19            5.000000
+0:19            5.000000
 0:20      add second child into first child ( temp 4-component vector of float)
 0:20        'f4' ( temp 4-component vector of float)
 0:20        Convert int to float ( temp float)
@@ -87,19 +87,19 @@
 0:18      Sequence
 0:18        move second child to first child ( temp 4-component vector of float)
 0:18          'f4' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             1.000000
-0:?             1.000000
-0:?             1.000000
-0:?             1.000000
+0:18          Constant:
+0:18            1.000000
+0:18            1.000000
+0:18            1.000000
+0:18            1.000000
 0:19      add second child into first child ( temp 4-component vector of float)
 0:19        'f4' ( temp 4-component vector of float)
 0:19        Function Call: Test::staticMemFun(vf4; ( global 4-component vector of float)
-0:?           Constant:
-0:?             5.000000
-0:?             5.000000
-0:?             5.000000
-0:?             5.000000
+0:19          Constant:
+0:19            5.000000
+0:19            5.000000
+0:19            5.000000
+0:19            5.000000
 0:20      add second child into first child ( temp 4-component vector of float)
 0:20        'f4' ( temp 4-component vector of float)
 0:20        Convert int to float ( temp float)
diff --git a/Test/baseResults/hlsl.stringtoken.frag.out b/Test/baseResults/hlsl.stringtoken.frag.out
index 18d32e0..f2ca742 100644
--- a/Test/baseResults/hlsl.stringtoken.frag.out
+++ b/Test/baseResults/hlsl.stringtoken.frag.out
@@ -10,11 +10,11 @@
 0:18          'psout' ( temp structure{ temp 4-component vector of float Color})
 0:18          Constant:
 0:18            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           1.000000
+0:18        Constant:
+0:18          0.000000
+0:18          0.000000
+0:18          0.000000
+0:18          1.000000
 0:19      Branch: Return with expression
 0:19        'psout' ( temp structure{ temp 4-component vector of float Color})
 0:16  Function Definition: main( ( temp void)
@@ -47,11 +47,11 @@
 0:18          'psout' ( temp structure{ temp 4-component vector of float Color})
 0:18          Constant:
 0:18            0 (const int)
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           1.000000
+0:18        Constant:
+0:18          0.000000
+0:18          0.000000
+0:18          0.000000
+0:18          1.000000
 0:19      Branch: Return with expression
 0:19        'psout' ( temp structure{ temp 4-component vector of float Color})
 0:16  Function Definition: main( ( temp void)
diff --git a/Test/baseResults/hlsl.struct.split.nested.geom.out b/Test/baseResults/hlsl.struct.split.nested.geom.out
index 642152b..1abe4c3 100644
--- a/Test/baseResults/hlsl.struct.split.nested.geom.out
+++ b/Test/baseResults/hlsl.struct.split.nested.geom.out
@@ -18,11 +18,11 @@
 0:27              0 (const int)
 0:27          Constant:
 0:27            0 (const int)
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:27        Constant:
+0:27          1.000000
+0:27          2.000000
+0:27          3.000000
+0:27          4.000000
 0:28      move second child to first child ( temp 2-component vector of float)
 0:28        tc: direct index for structure ( temp 2-component vector of float)
 0:28          psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
@@ -31,9 +31,9 @@
 0:28              0 (const int)
 0:28          Constant:
 0:28            1 (const int)
-0:?         Constant:
-0:?           5.000000
-0:?           6.000000
+0:28        Constant:
+0:28          5.000000
+0:28          6.000000
 0:29      move second child to first child ( temp float)
 0:29        direct index ( temp float)
 0:29          m0_array: direct index for structure ( temp 2-element array of float)
@@ -235,11 +235,11 @@
 0:27              0 (const int)
 0:27          Constant:
 0:27            0 (const int)
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:27        Constant:
+0:27          1.000000
+0:27          2.000000
+0:27          3.000000
+0:27          4.000000
 0:28      move second child to first child ( temp 2-component vector of float)
 0:28        tc: direct index for structure ( temp 2-component vector of float)
 0:28          psIn: direct index for structure ( temp structure{ temp 4-component vector of float pos,  temp 2-component vector of float tc})
@@ -248,9 +248,9 @@
 0:28              0 (const int)
 0:28          Constant:
 0:28            1 (const int)
-0:?         Constant:
-0:?           5.000000
-0:?           6.000000
+0:28        Constant:
+0:28          5.000000
+0:28          6.000000
 0:29      move second child to first child ( temp float)
 0:29        direct index ( temp float)
 0:29          m0_array: direct index for structure ( temp 2-element array of float)
diff --git a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
index 2ac904e..a4e540f 100644
--- a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
@@ -22,11 +22,11 @@
 0:9                0 (const int)
 0:9            Constant:
 0:9              1 (const uint)
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:9        Constant:
+0:9          1.000000
+0:9          2.000000
+0:9          3.000000
+0:9          4.000000
 0:10      Branch: Return with expression
 0:10        indirect index ( buffer 4-component vector of float)
 0:10          @data: direct index for structure ( buffer unsized 1-element array of 4-component vector of float)
@@ -99,11 +99,11 @@
 0:9                0 (const int)
 0:9            Constant:
 0:9              1 (const uint)
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:9        Constant:
+0:9          1.000000
+0:9          2.000000
+0:9          3.000000
+0:9          4.000000
 0:10      Branch: Return with expression
 0:10        indirect index ( buffer 4-component vector of float)
 0:10          @data: direct index for structure ( buffer unsized 1-element array of 4-component vector of float)
diff --git a/Test/baseResults/hlsl.structbuffer.append.frag.out b/Test/baseResults/hlsl.structbuffer.append.frag.out
index 5631624..518b67f 100644
--- a/Test/baseResults/hlsl.structbuffer.append.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.append.frag.out
@@ -19,11 +19,11 @@
 0:8                0 (const int)
 0:8            Constant:
 0:8              1 (const uint)
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:8        Constant:
+0:8          1.000000
+0:8          2.000000
+0:8          3.000000
+0:8          4.000000
 0:10      Branch: Return with expression
 0:10        indirect index (layout( row_major std430) buffer 4-component vector of float)
 0:10          @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of float)
@@ -83,11 +83,11 @@
 0:8                0 (const int)
 0:8            Constant:
 0:8              1 (const uint)
-0:?         Constant:
-0:?           1.000000
-0:?           2.000000
-0:?           3.000000
-0:?           4.000000
+0:8        Constant:
+0:8          1.000000
+0:8          2.000000
+0:8          3.000000
+0:8          4.000000
 0:10      Branch: Return with expression
 0:10        indirect index (layout( row_major std430) buffer 4-component vector of float)
 0:10          @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of 4-component vector of float)
diff --git a/Test/baseResults/hlsl.structbuffer.byte.frag.out b/Test/baseResults/hlsl.structbuffer.byte.frag.out
index 40e8d9e..b5252bc 100644
--- a/Test/baseResults/hlsl.structbuffer.byte.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.byte.frag.out
@@ -28,7 +28,7 @@
 0:9                    'pos' ( in uint)
 0:9                    Constant:
 0:9                      2 (const int)
-0:?               Construct vec4 ( temp 4-component vector of float)
+0:10              Construct vec4 ( temp 4-component vector of float)
 0:?                 Convert uint to float ( temp 2-component vector of float)
 0:?                   Sequence
 0:10                    move second child to first child ( temp int)
@@ -60,7 +60,7 @@
 0:10                  0.000000
 0:10                Constant:
 0:10                  0.000000
-0:?             Construct vec4 ( temp 4-component vector of float)
+0:11            Construct vec4 ( temp 4-component vector of float)
 0:?               Convert uint to float ( temp 3-component vector of float)
 0:?                 Sequence
 0:11                  move second child to first child ( temp int)
@@ -192,7 +192,7 @@
 0:9                    'pos' ( in uint)
 0:9                    Constant:
 0:9                      2 (const int)
-0:?               Construct vec4 ( temp 4-component vector of float)
+0:10              Construct vec4 ( temp 4-component vector of float)
 0:?                 Convert uint to float ( temp 2-component vector of float)
 0:?                   Sequence
 0:10                    move second child to first child ( temp int)
@@ -224,7 +224,7 @@
 0:10                  0.000000
 0:10                Constant:
 0:10                  0.000000
-0:?             Construct vec4 ( temp 4-component vector of float)
+0:11            Construct vec4 ( temp 4-component vector of float)
 0:?               Convert uint to float ( temp 3-component vector of float)
 0:?                 Sequence
 0:11                  move second child to first child ( temp int)
diff --git a/Test/baseResults/hlsl.structbuffer.coherent.frag.out b/Test/baseResults/hlsl.structbuffer.coherent.frag.out
index 95a9e67..3d97ee5 100644
--- a/Test/baseResults/hlsl.structbuffer.coherent.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.coherent.frag.out
@@ -43,7 +43,7 @@
 0:19            1 (const int)
 0:19        true case
 0:20        Branch: Return with expression
-0:?           Construct vec4 ( temp 4-component vector of float)
+0:20          Construct vec4 ( temp 4-component vector of float)
 0:20            add ( temp 3-component vector of float)
 0:20              color: direct index for structure ( temp 3-component vector of float)
 0:20                indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color,  temp bool test})
@@ -133,7 +133,7 @@
 0:19            1 (const int)
 0:19        true case
 0:20        Branch: Return with expression
-0:?           Construct vec4 ( temp 4-component vector of float)
+0:20          Construct vec4 ( temp 4-component vector of float)
 0:20            add ( temp 3-component vector of float)
 0:20              color: direct index for structure ( temp 3-component vector of float)
 0:20                indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color,  temp bool test})
diff --git a/Test/baseResults/hlsl.structbuffer.frag.out b/Test/baseResults/hlsl.structbuffer.frag.out
index 5979ff2..294a1c6 100644
--- a/Test/baseResults/hlsl.structbuffer.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.frag.out
@@ -40,7 +40,7 @@
 0:19            1 (const int)
 0:19        true case
 0:20        Branch: Return with expression
-0:?           Construct vec4 ( temp 4-component vector of float)
+0:20          Construct vec4 ( temp 4-component vector of float)
 0:20            add ( temp 3-component vector of float)
 0:20              color: direct index for structure ( temp 3-component vector of float)
 0:20                indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
@@ -136,7 +136,7 @@
 0:19            1 (const int)
 0:19        true case
 0:20        Branch: Return with expression
-0:?           Construct vec4 ( temp 4-component vector of float)
+0:20          Construct vec4 ( temp 4-component vector of float)
 0:20            add ( temp 3-component vector of float)
 0:20              color: direct index for structure ( temp 3-component vector of float)
 0:20                indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color,  temp bool test,  temp bool test2})
diff --git a/Test/baseResults/hlsl.structbuffer.incdec.frag.out b/Test/baseResults/hlsl.structbuffer.incdec.frag.out
index 8ae9767..2605777 100644
--- a/Test/baseResults/hlsl.structbuffer.incdec.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.incdec.frag.out
@@ -65,7 +65,7 @@
 0:16            Constant:
 0:16              -1 (const int)
 0:18      Branch: Return with expression
-0:?         Construct vec4 ( temp 4-component vector of float)
+0:18        Construct vec4 ( temp 4-component vector of float)
 0:18          Convert uint to float ( temp float)
 0:18            direct index ( temp uint)
 0:18              'result' ( temp 4-component vector of uint)
@@ -169,7 +169,7 @@
 0:16            Constant:
 0:16              -1 (const int)
 0:18      Branch: Return with expression
-0:?         Construct vec4 ( temp 4-component vector of float)
+0:18        Construct vec4 ( temp 4-component vector of float)
 0:18          Convert uint to float ( temp float)
 0:18            direct index ( temp uint)
 0:18              'result' ( temp 4-component vector of uint)
diff --git a/Test/baseResults/hlsl.structbuffer.rw.frag.out b/Test/baseResults/hlsl.structbuffer.rw.frag.out
index d6eb8f3..1eb98aa 100644
--- a/Test/baseResults/hlsl.structbuffer.rw.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.rw.frag.out
@@ -43,7 +43,7 @@
 0:19            1 (const int)
 0:19        true case
 0:20        Branch: Return with expression
-0:?           Construct vec4 ( temp 4-component vector of float)
+0:20          Construct vec4 ( temp 4-component vector of float)
 0:20            add ( temp 3-component vector of float)
 0:20              color: direct index for structure ( temp 3-component vector of float)
 0:20                indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color,  temp bool test})
@@ -133,7 +133,7 @@
 0:19            1 (const int)
 0:19        true case
 0:20        Branch: Return with expression
-0:?           Construct vec4 ( temp 4-component vector of float)
+0:20          Construct vec4 ( temp 4-component vector of float)
 0:20            add ( temp 3-component vector of float)
 0:20              color: direct index for structure ( temp 3-component vector of float)
 0:20                indirect index (layout( row_major std430) buffer structure{ temp 3-component vector of float color,  temp bool test})
diff --git a/Test/baseResults/hlsl.swizzle.frag.out b/Test/baseResults/hlsl.swizzle.frag.out
index 28f295d..88ea3cc 100644
--- a/Test/baseResults/hlsl.swizzle.frag.out
+++ b/Test/baseResults/hlsl.swizzle.frag.out
@@ -5,11 +5,11 @@
 0:1  Sequence
 0:1    move second child to first child ( temp 4-component vector of float)
 0:1      'AmbientColor' ( global 4-component vector of float)
-0:?       Constant:
-0:?         1.000000
-0:?         0.500000
-0:?         0.000000
-0:?         1.000000
+0:1      Constant:
+0:1        1.000000
+0:1        0.500000
+0:1        0.000000
+0:1        1.000000
 0:4  Function Definition: ShaderFunction(vf4; ( temp 4-component vector of float)
 0:4    Function Parameters: 
 0:4      'input' ( in 4-component vector of float)
@@ -46,11 +46,11 @@
 0:1  Sequence
 0:1    move second child to first child ( temp 4-component vector of float)
 0:1      'AmbientColor' ( global 4-component vector of float)
-0:?       Constant:
-0:?         1.000000
-0:?         0.500000
-0:?         0.000000
-0:?         1.000000
+0:1      Constant:
+0:1        1.000000
+0:1        0.500000
+0:1        0.000000
+0:1        1.000000
 0:4  Function Definition: ShaderFunction(vf4; ( temp 4-component vector of float)
 0:4    Function Parameters: 
 0:4      'input' ( in 4-component vector of float)
diff --git a/Test/baseResults/hlsl.synthesizeInput.frag.out b/Test/baseResults/hlsl.synthesizeInput.frag.out
index 2c1ef1d..316a352 100644
--- a/Test/baseResults/hlsl.synthesizeInput.frag.out
+++ b/Test/baseResults/hlsl.synthesizeInput.frag.out
@@ -7,7 +7,7 @@
 0:7      'input' ( in structure{ temp float interp,  temp uint no_interp})
 0:?     Sequence
 0:8      Branch: Return with expression
-0:?         Construct vec4 ( temp 4-component vector of float)
+0:8        Construct vec4 ( temp 4-component vector of float)
 0:8          Convert uint to float ( temp float)
 0:8            no_interp: direct index for structure ( temp uint)
 0:8              'input' ( in structure{ temp float interp,  temp uint no_interp})
@@ -58,7 +58,7 @@
 0:7      'input' ( in structure{ temp float interp,  temp uint no_interp})
 0:?     Sequence
 0:8      Branch: Return with expression
-0:?         Construct vec4 ( temp 4-component vector of float)
+0:8        Construct vec4 ( temp 4-component vector of float)
 0:8          Convert uint to float ( temp float)
 0:8            no_interp: direct index for structure ( temp uint)
 0:8              'input' ( in structure{ temp float interp,  temp uint no_interp})
diff --git a/Test/baseResults/hlsl.targetStruct1.frag.out b/Test/baseResults/hlsl.targetStruct1.frag.out
index 6db5eb4..095d15d 100644
--- a/Test/baseResults/hlsl.targetStruct1.frag.out
+++ b/Test/baseResults/hlsl.targetStruct1.frag.out
@@ -12,7 +12,7 @@
 0:14          'pso' ( temp structure{ temp 4-component vector of float o1,  temp 4-component vector of float o2})
 0:14          Constant:
 0:14            0 (const int)
-0:?         Construct vec4 ( temp 4-component vector of float)
+0:14        Construct vec4 ( temp 4-component vector of float)
 0:14          Convert uint to float ( temp float)
 0:14            no_interp: direct index for structure ( temp uint)
 0:14              'input' ( in structure{ temp float interp,  temp uint no_interp})
@@ -106,7 +106,7 @@
 0:14          'pso' ( temp structure{ temp 4-component vector of float o1,  temp 4-component vector of float o2})
 0:14          Constant:
 0:14            0 (const int)
-0:?         Construct vec4 ( temp 4-component vector of float)
+0:14        Construct vec4 ( temp 4-component vector of float)
 0:14          Convert uint to float ( temp float)
 0:14            no_interp: direct index for structure ( temp uint)
 0:14              'input' ( in structure{ temp float interp,  temp uint no_interp})
diff --git a/Test/baseResults/hlsl.targetStruct2.frag.out b/Test/baseResults/hlsl.targetStruct2.frag.out
index 051d267..c57ae00 100644
--- a/Test/baseResults/hlsl.targetStruct2.frag.out
+++ b/Test/baseResults/hlsl.targetStruct2.frag.out
@@ -12,7 +12,7 @@
 0:14          'pso' ( temp structure{ temp 4-component vector of float o1,  temp 4-component vector of float o2})
 0:14          Constant:
 0:14            0 (const int)
-0:?         Construct vec4 ( temp 4-component vector of float)
+0:14        Construct vec4 ( temp 4-component vector of float)
 0:14          Convert uint to float ( temp float)
 0:14            no_interp: direct index for structure ( temp uint)
 0:14              'input' ( in structure{ temp float interp,  temp uint no_interp})
@@ -106,7 +106,7 @@
 0:14          'pso' ( temp structure{ temp 4-component vector of float o1,  temp 4-component vector of float o2})
 0:14          Constant:
 0:14            0 (const int)
-0:?         Construct vec4 ( temp 4-component vector of float)
+0:14        Construct vec4 ( temp 4-component vector of float)
 0:14          Convert uint to float ( temp float)
 0:14            no_interp: direct index for structure ( temp uint)
 0:14              'input' ( in structure{ temp float interp,  temp uint no_interp})
diff --git a/Test/baseResults/hlsl.templatetypes.frag.out b/Test/baseResults/hlsl.templatetypes.frag.out
index 1ffb263..842ed0d 100644
--- a/Test/baseResults/hlsl.templatetypes.frag.out
+++ b/Test/baseResults/hlsl.templatetypes.frag.out
@@ -8,19 +8,19 @@
 0:4      Sequence
 0:4        move second child to first child ( temp 4-component vector of float)
 0:4          'r00' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
+0:4          Constant:
+0:4            1.000000
+0:4            2.000000
+0:4            3.000000
+0:4            4.000000
 0:5      Sequence
 0:5        move second child to first child ( temp 4-component vector of float)
 0:5          'r01' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
-0:?             5.000000
+0:5          Constant:
+0:5            2.000000
+0:5            3.000000
+0:5            4.000000
+0:5            5.000000
 0:7      Sequence
 0:7        move second child to first child ( temp 1-component vector of bool)
 0:7          'r12' ( temp 1-component vector of bool)
@@ -49,196 +49,196 @@
 0:13      Sequence
 0:13        move second child to first child ( temp 2-component vector of bool)
 0:13          'r20' ( temp 2-component vector of bool)
-0:?           Constant:
-0:?             false (const bool)
-0:?             true (const bool)
+0:13          Constant:
+0:13            false (const bool)
+0:13            true (const bool)
 0:14      Sequence
 0:14        move second child to first child ( temp 2-component vector of int)
 0:14          'r21' ( temp 2-component vector of int)
-0:?           Constant:
-0:?             1 (const int)
-0:?             2 (const int)
+0:14          Constant:
+0:14            1 (const int)
+0:14            2 (const int)
 0:15      Sequence
 0:15        move second child to first child ( temp 2-component vector of float)
 0:15          'r22' ( temp 2-component vector of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
+0:15          Constant:
+0:15            1.000000
+0:15            2.000000
 0:16      Sequence
 0:16        move second child to first child ( temp 2-component vector of double)
 0:16          'r23' ( temp 2-component vector of double)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
+0:16          Constant:
+0:16            1.000000
+0:16            2.000000
 0:17      Sequence
 0:17        move second child to first child ( temp 2-component vector of uint)
 0:17          'r24' ( temp 2-component vector of uint)
-0:?           Constant:
-0:?             1 (const uint)
-0:?             2 (const uint)
+0:17          Constant:
+0:17            1 (const uint)
+0:17            2 (const uint)
 0:19      Sequence
 0:19        move second child to first child ( temp 3-component vector of bool)
 0:19          'r30' ( temp 3-component vector of bool)
-0:?           Constant:
-0:?             false (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
+0:19          Constant:
+0:19            false (const bool)
+0:19            true (const bool)
+0:19            true (const bool)
 0:20      Sequence
 0:20        move second child to first child ( temp 3-component vector of int)
 0:20          'r31' ( temp 3-component vector of int)
-0:?           Constant:
-0:?             1 (const int)
-0:?             2 (const int)
-0:?             3 (const int)
+0:20          Constant:
+0:20            1 (const int)
+0:20            2 (const int)
+0:20            3 (const int)
 0:21      Sequence
 0:21        move second child to first child ( temp 3-component vector of float)
 0:21          'r32' ( temp 3-component vector of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
+0:21          Constant:
+0:21            1.000000
+0:21            2.000000
+0:21            3.000000
 0:22      Sequence
 0:22        move second child to first child ( temp 3-component vector of double)
 0:22          'r33' ( temp 3-component vector of double)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
+0:22          Constant:
+0:22            1.000000
+0:22            2.000000
+0:22            3.000000
 0:23      Sequence
 0:23        move second child to first child ( temp 3-component vector of uint)
 0:23          'r34' ( temp 3-component vector of uint)
-0:?           Constant:
-0:?             1 (const uint)
-0:?             2 (const uint)
-0:?             3 (const uint)
+0:23          Constant:
+0:23            1 (const uint)
+0:23            2 (const uint)
+0:23            3 (const uint)
 0:25      Sequence
 0:25        move second child to first child ( temp 4-component vector of bool)
 0:25          'r40' ( temp 4-component vector of bool)
-0:?           Constant:
-0:?             false (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
-0:?             false (const bool)
+0:25          Constant:
+0:25            false (const bool)
+0:25            true (const bool)
+0:25            true (const bool)
+0:25            false (const bool)
 0:26      Sequence
 0:26        move second child to first child ( temp 4-component vector of int)
 0:26          'r41' ( temp 4-component vector of int)
-0:?           Constant:
-0:?             1 (const int)
-0:?             2 (const int)
-0:?             3 (const int)
-0:?             4 (const int)
+0:26          Constant:
+0:26            1 (const int)
+0:26            2 (const int)
+0:26            3 (const int)
+0:26            4 (const int)
 0:27      Sequence
 0:27        move second child to first child ( temp 4-component vector of float)
 0:27          'r42' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
+0:27          Constant:
+0:27            1.000000
+0:27            2.000000
+0:27            3.000000
+0:27            4.000000
 0:28      Sequence
 0:28        move second child to first child ( temp 4-component vector of double)
 0:28          'r43' ( temp 4-component vector of double)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
+0:28          Constant:
+0:28            1.000000
+0:28            2.000000
+0:28            3.000000
+0:28            4.000000
 0:29      Sequence
 0:29        move second child to first child ( temp 4-component vector of uint)
 0:29          'r44' ( temp 4-component vector of uint)
-0:?           Constant:
-0:?             1 (const uint)
-0:?             2 (const uint)
-0:?             3 (const uint)
-0:?             4 (const uint)
+0:29          Constant:
+0:29            1 (const uint)
+0:29            2 (const uint)
+0:29            3 (const uint)
+0:29            4 (const uint)
 0:31      Sequence
 0:31        move second child to first child ( temp 4X4 matrix of float)
 0:31          'r50' ( temp 4X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
-0:?             5.000000
-0:?             6.000000
-0:?             7.000000
-0:?             8.000000
-0:?             9.000000
-0:?             10.000000
-0:?             11.000000
-0:?             12.000000
-0:?             13.000000
-0:?             14.000000
-0:?             15.000000
+0:31          Constant:
+0:31            0.000000
+0:31            1.000000
+0:31            2.000000
+0:31            3.000000
+0:31            4.000000
+0:31            5.000000
+0:31            6.000000
+0:31            7.000000
+0:31            8.000000
+0:31            9.000000
+0:31            10.000000
+0:31            11.000000
+0:31            12.000000
+0:31            13.000000
+0:31            14.000000
+0:31            15.000000
 0:32      Sequence
 0:32        move second child to first child ( temp 4X4 matrix of float)
 0:32          'r51' ( temp 4X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
-0:?             5.000000
-0:?             6.000000
-0:?             7.000000
-0:?             8.000000
-0:?             9.000000
-0:?             10.000000
-0:?             11.000000
-0:?             12.000000
-0:?             13.000000
-0:?             14.000000
-0:?             15.000000
+0:32          Constant:
+0:32            0.000000
+0:32            1.000000
+0:32            2.000000
+0:32            3.000000
+0:32            4.000000
+0:32            5.000000
+0:32            6.000000
+0:32            7.000000
+0:32            8.000000
+0:32            9.000000
+0:32            10.000000
+0:32            11.000000
+0:32            12.000000
+0:32            13.000000
+0:32            14.000000
+0:32            15.000000
 0:35      Sequence
 0:35        move second child to first child ( temp 2X3 matrix of float)
 0:35          'r61' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
-0:?             5.000000
-0:?             6.000000
+0:35          Constant:
+0:35            1.000000
+0:35            2.000000
+0:35            3.000000
+0:35            4.000000
+0:35            5.000000
+0:35            6.000000
 0:36      Sequence
 0:36        move second child to first child ( temp 3X2 matrix of float)
 0:36          'r62' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
-0:?             5.000000
-0:?             6.000000
+0:36          Constant:
+0:36            1.000000
+0:36            2.000000
+0:36            3.000000
+0:36            4.000000
+0:36            5.000000
+0:36            6.000000
 0:39      Sequence
 0:39        move second child to first child ( temp 4X2 matrix of float)
 0:39          'r65' ( temp 4X2 matrix of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
-0:?             5.000000
-0:?             6.000000
-0:?             7.000000
-0:?             8.000000
+0:39          Constant:
+0:39            1.000000
+0:39            2.000000
+0:39            3.000000
+0:39            4.000000
+0:39            5.000000
+0:39            6.000000
+0:39            7.000000
+0:39            8.000000
 0:40      Sequence
 0:40        move second child to first child ( temp 4X3 matrix of float)
 0:40          'r66' ( temp 4X3 matrix of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
-0:?             5.000000
-0:?             6.000000
-0:?             7.000000
-0:?             8.000000
-0:?             9.000000
-0:?             10.000000
-0:?             11.000000
-0:?             12.000000
+0:40          Constant:
+0:40            1.000000
+0:40            2.000000
+0:40            3.000000
+0:40            4.000000
+0:40            5.000000
+0:40            6.000000
+0:40            7.000000
+0:40            8.000000
+0:40            9.000000
+0:40            10.000000
+0:40            11.000000
+0:40            12.000000
 0:45      Branch: Return with expression
 0:45        Constant:
 0:45          0.000000
@@ -264,19 +264,19 @@
 0:4      Sequence
 0:4        move second child to first child ( temp 4-component vector of float)
 0:4          'r00' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
+0:4          Constant:
+0:4            1.000000
+0:4            2.000000
+0:4            3.000000
+0:4            4.000000
 0:5      Sequence
 0:5        move second child to first child ( temp 4-component vector of float)
 0:5          'r01' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
-0:?             5.000000
+0:5          Constant:
+0:5            2.000000
+0:5            3.000000
+0:5            4.000000
+0:5            5.000000
 0:7      Sequence
 0:7        move second child to first child ( temp 1-component vector of bool)
 0:7          'r12' ( temp 1-component vector of bool)
@@ -305,196 +305,196 @@
 0:13      Sequence
 0:13        move second child to first child ( temp 2-component vector of bool)
 0:13          'r20' ( temp 2-component vector of bool)
-0:?           Constant:
-0:?             false (const bool)
-0:?             true (const bool)
+0:13          Constant:
+0:13            false (const bool)
+0:13            true (const bool)
 0:14      Sequence
 0:14        move second child to first child ( temp 2-component vector of int)
 0:14          'r21' ( temp 2-component vector of int)
-0:?           Constant:
-0:?             1 (const int)
-0:?             2 (const int)
+0:14          Constant:
+0:14            1 (const int)
+0:14            2 (const int)
 0:15      Sequence
 0:15        move second child to first child ( temp 2-component vector of float)
 0:15          'r22' ( temp 2-component vector of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
+0:15          Constant:
+0:15            1.000000
+0:15            2.000000
 0:16      Sequence
 0:16        move second child to first child ( temp 2-component vector of double)
 0:16          'r23' ( temp 2-component vector of double)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
+0:16          Constant:
+0:16            1.000000
+0:16            2.000000
 0:17      Sequence
 0:17        move second child to first child ( temp 2-component vector of uint)
 0:17          'r24' ( temp 2-component vector of uint)
-0:?           Constant:
-0:?             1 (const uint)
-0:?             2 (const uint)
+0:17          Constant:
+0:17            1 (const uint)
+0:17            2 (const uint)
 0:19      Sequence
 0:19        move second child to first child ( temp 3-component vector of bool)
 0:19          'r30' ( temp 3-component vector of bool)
-0:?           Constant:
-0:?             false (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
+0:19          Constant:
+0:19            false (const bool)
+0:19            true (const bool)
+0:19            true (const bool)
 0:20      Sequence
 0:20        move second child to first child ( temp 3-component vector of int)
 0:20          'r31' ( temp 3-component vector of int)
-0:?           Constant:
-0:?             1 (const int)
-0:?             2 (const int)
-0:?             3 (const int)
+0:20          Constant:
+0:20            1 (const int)
+0:20            2 (const int)
+0:20            3 (const int)
 0:21      Sequence
 0:21        move second child to first child ( temp 3-component vector of float)
 0:21          'r32' ( temp 3-component vector of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
+0:21          Constant:
+0:21            1.000000
+0:21            2.000000
+0:21            3.000000
 0:22      Sequence
 0:22        move second child to first child ( temp 3-component vector of double)
 0:22          'r33' ( temp 3-component vector of double)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
+0:22          Constant:
+0:22            1.000000
+0:22            2.000000
+0:22            3.000000
 0:23      Sequence
 0:23        move second child to first child ( temp 3-component vector of uint)
 0:23          'r34' ( temp 3-component vector of uint)
-0:?           Constant:
-0:?             1 (const uint)
-0:?             2 (const uint)
-0:?             3 (const uint)
+0:23          Constant:
+0:23            1 (const uint)
+0:23            2 (const uint)
+0:23            3 (const uint)
 0:25      Sequence
 0:25        move second child to first child ( temp 4-component vector of bool)
 0:25          'r40' ( temp 4-component vector of bool)
-0:?           Constant:
-0:?             false (const bool)
-0:?             true (const bool)
-0:?             true (const bool)
-0:?             false (const bool)
+0:25          Constant:
+0:25            false (const bool)
+0:25            true (const bool)
+0:25            true (const bool)
+0:25            false (const bool)
 0:26      Sequence
 0:26        move second child to first child ( temp 4-component vector of int)
 0:26          'r41' ( temp 4-component vector of int)
-0:?           Constant:
-0:?             1 (const int)
-0:?             2 (const int)
-0:?             3 (const int)
-0:?             4 (const int)
+0:26          Constant:
+0:26            1 (const int)
+0:26            2 (const int)
+0:26            3 (const int)
+0:26            4 (const int)
 0:27      Sequence
 0:27        move second child to first child ( temp 4-component vector of float)
 0:27          'r42' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
+0:27          Constant:
+0:27            1.000000
+0:27            2.000000
+0:27            3.000000
+0:27            4.000000
 0:28      Sequence
 0:28        move second child to first child ( temp 4-component vector of double)
 0:28          'r43' ( temp 4-component vector of double)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
+0:28          Constant:
+0:28            1.000000
+0:28            2.000000
+0:28            3.000000
+0:28            4.000000
 0:29      Sequence
 0:29        move second child to first child ( temp 4-component vector of uint)
 0:29          'r44' ( temp 4-component vector of uint)
-0:?           Constant:
-0:?             1 (const uint)
-0:?             2 (const uint)
-0:?             3 (const uint)
-0:?             4 (const uint)
+0:29          Constant:
+0:29            1 (const uint)
+0:29            2 (const uint)
+0:29            3 (const uint)
+0:29            4 (const uint)
 0:31      Sequence
 0:31        move second child to first child ( temp 4X4 matrix of float)
 0:31          'r50' ( temp 4X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
-0:?             5.000000
-0:?             6.000000
-0:?             7.000000
-0:?             8.000000
-0:?             9.000000
-0:?             10.000000
-0:?             11.000000
-0:?             12.000000
-0:?             13.000000
-0:?             14.000000
-0:?             15.000000
+0:31          Constant:
+0:31            0.000000
+0:31            1.000000
+0:31            2.000000
+0:31            3.000000
+0:31            4.000000
+0:31            5.000000
+0:31            6.000000
+0:31            7.000000
+0:31            8.000000
+0:31            9.000000
+0:31            10.000000
+0:31            11.000000
+0:31            12.000000
+0:31            13.000000
+0:31            14.000000
+0:31            15.000000
 0:32      Sequence
 0:32        move second child to first child ( temp 4X4 matrix of float)
 0:32          'r51' ( temp 4X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
-0:?             5.000000
-0:?             6.000000
-0:?             7.000000
-0:?             8.000000
-0:?             9.000000
-0:?             10.000000
-0:?             11.000000
-0:?             12.000000
-0:?             13.000000
-0:?             14.000000
-0:?             15.000000
+0:32          Constant:
+0:32            0.000000
+0:32            1.000000
+0:32            2.000000
+0:32            3.000000
+0:32            4.000000
+0:32            5.000000
+0:32            6.000000
+0:32            7.000000
+0:32            8.000000
+0:32            9.000000
+0:32            10.000000
+0:32            11.000000
+0:32            12.000000
+0:32            13.000000
+0:32            14.000000
+0:32            15.000000
 0:35      Sequence
 0:35        move second child to first child ( temp 2X3 matrix of float)
 0:35          'r61' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
-0:?             5.000000
-0:?             6.000000
+0:35          Constant:
+0:35            1.000000
+0:35            2.000000
+0:35            3.000000
+0:35            4.000000
+0:35            5.000000
+0:35            6.000000
 0:36      Sequence
 0:36        move second child to first child ( temp 3X2 matrix of float)
 0:36          'r62' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
-0:?             5.000000
-0:?             6.000000
+0:36          Constant:
+0:36            1.000000
+0:36            2.000000
+0:36            3.000000
+0:36            4.000000
+0:36            5.000000
+0:36            6.000000
 0:39      Sequence
 0:39        move second child to first child ( temp 4X2 matrix of float)
 0:39          'r65' ( temp 4X2 matrix of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
-0:?             5.000000
-0:?             6.000000
-0:?             7.000000
-0:?             8.000000
+0:39          Constant:
+0:39            1.000000
+0:39            2.000000
+0:39            3.000000
+0:39            4.000000
+0:39            5.000000
+0:39            6.000000
+0:39            7.000000
+0:39            8.000000
 0:40      Sequence
 0:40        move second child to first child ( temp 4X3 matrix of float)
 0:40          'r66' ( temp 4X3 matrix of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
-0:?             5.000000
-0:?             6.000000
-0:?             7.000000
-0:?             8.000000
-0:?             9.000000
-0:?             10.000000
-0:?             11.000000
-0:?             12.000000
+0:40          Constant:
+0:40            1.000000
+0:40            2.000000
+0:40            3.000000
+0:40            4.000000
+0:40            5.000000
+0:40            6.000000
+0:40            7.000000
+0:40            8.000000
+0:40            9.000000
+0:40            10.000000
+0:40            11.000000
+0:40            12.000000
 0:45      Branch: Return with expression
 0:45        Constant:
 0:45          0.000000
diff --git a/Test/baseResults/hlsl.texture.struct.frag.out b/Test/baseResults/hlsl.texture.struct.frag.out
index 3d718de..bf9ab68 100644
--- a/Test/baseResults/hlsl.texture.struct.frag.out
+++ b/Test/baseResults/hlsl.texture.struct.frag.out
@@ -14,9 +14,9 @@
 0:38              Construct combined texture-sampler ( temp sampler2D)
 0:38                't1' ( in texture2D)
 0:38                'g_sSamp' ( uniform sampler)
-0:?               Constant:
-0:?                 0.600000
-0:?                 0.610000
+0:38              Constant:
+0:38                0.600000
+0:38                0.610000
 0:38          move second child to first child ( temp float)
 0:38            c0: direct index for structure ( temp float)
 0:38              '@sampleStructTemp' ( temp structure{ temp float c0,  temp 2-component vector of float c1,  temp float c2})
@@ -72,9 +72,9 @@
 0:39              Construct combined texture-sampler ( temp sampler2D)
 0:39                't2' ( in texture2D)
 0:39                'g_sSamp' ( uniform sampler)
-0:?               Constant:
-0:?                 0.600000
-0:?                 0.610000
+0:39              Constant:
+0:39                0.600000
+0:39                0.610000
 0:39          move second child to first child ( temp float)
 0:39            c0: direct index for structure ( temp float)
 0:39              '@sampleStructTemp' ( temp structure{ temp float c0,  temp 3-component vector of float c1})
@@ -134,9 +134,9 @@
 0:43                Construct combined texture-sampler ( temp sampler2D)
 0:43                  'g_tTex2s1' ( uniform texture2D)
 0:43                  'g_sSamp' ( uniform sampler)
-0:?                 Constant:
-0:?                   0.100000
-0:?                   0.110000
+0:43                Constant:
+0:43                  0.100000
+0:43                  0.110000
 0:43            move second child to first child ( temp float)
 0:43              c0: direct index for structure ( temp float)
 0:43                '@sampleStructTemp' ( temp structure{ temp float c0,  temp 2-component vector of float c1,  temp float c2})
@@ -190,9 +190,9 @@
 0:44                Construct combined texture-sampler ( temp sampler2D)
 0:44                  'g_tTex2s2' ( uniform texture2D)
 0:44                  'g_sSamp' ( uniform sampler)
-0:?                 Constant:
-0:?                   0.200000
-0:?                   0.210000
+0:44                Constant:
+0:44                  0.200000
+0:44                  0.210000
 0:44            move second child to first child ( temp float)
 0:44              c0: direct index for structure ( temp float)
 0:44                '@sampleStructTemp' ( temp structure{ temp float c0,  temp 3-component vector of float c1})
@@ -249,9 +249,9 @@
 0:45                Construct combined texture-sampler ( temp sampler2D)
 0:45                  'g_tTex2s3' ( uniform texture2D)
 0:45                  'g_sSamp' ( uniform sampler)
-0:?                 Constant:
-0:?                   0.300000
-0:?                   0.310000
+0:45                Constant:
+0:45                  0.300000
+0:45                  0.310000
 0:45            move second child to first child ( temp float)
 0:45              direct index ( temp float)
 0:45                c0: direct index for structure ( temp 2-component vector of float)
@@ -299,9 +299,9 @@
 0:46                Construct combined texture-sampler ( temp isampler2D)
 0:46                  'g_tTex2s4' ( uniform itexture2D)
 0:46                  'g_sSamp' ( uniform sampler)
-0:?                 Constant:
-0:?                   0.400000
-0:?                   0.410000
+0:46                Constant:
+0:46                  0.400000
+0:46                  0.410000
 0:46            move second child to first child ( temp int)
 0:46              c0: direct index for structure ( temp int)
 0:46                '@sampleStructTemp' ( temp structure{ temp int c0,  temp 2-component vector of int c1,  temp int c2})
@@ -357,9 +357,9 @@
 0:47                Construct combined texture-sampler ( temp usampler2D)
 0:47                  'g_tTex2s5' ( uniform utexture2D)
 0:47                  'g_sSamp' ( uniform sampler)
-0:?                 Constant:
-0:?                   0.500000
-0:?                   0.510000
+0:47                Constant:
+0:47                  0.500000
+0:47                  0.510000
 0:47            move second child to first child ( temp uint)
 0:47              c0: direct index for structure ( temp uint)
 0:47                '@sampleStructTemp' ( temp structure{ temp uint c0,  temp uint c1})
@@ -435,9 +435,9 @@
 0:38              Construct combined texture-sampler ( temp sampler2D)
 0:38                't1' ( in texture2D)
 0:38                'g_sSamp' ( uniform sampler)
-0:?               Constant:
-0:?                 0.600000
-0:?                 0.610000
+0:38              Constant:
+0:38                0.600000
+0:38                0.610000
 0:38          move second child to first child ( temp float)
 0:38            c0: direct index for structure ( temp float)
 0:38              '@sampleStructTemp' ( temp structure{ temp float c0,  temp 2-component vector of float c1,  temp float c2})
@@ -493,9 +493,9 @@
 0:39              Construct combined texture-sampler ( temp sampler2D)
 0:39                't2' ( in texture2D)
 0:39                'g_sSamp' ( uniform sampler)
-0:?               Constant:
-0:?                 0.600000
-0:?                 0.610000
+0:39              Constant:
+0:39                0.600000
+0:39                0.610000
 0:39          move second child to first child ( temp float)
 0:39            c0: direct index for structure ( temp float)
 0:39              '@sampleStructTemp' ( temp structure{ temp float c0,  temp 3-component vector of float c1})
@@ -555,9 +555,9 @@
 0:43                Construct combined texture-sampler ( temp sampler2D)
 0:43                  'g_tTex2s1' ( uniform texture2D)
 0:43                  'g_sSamp' ( uniform sampler)
-0:?                 Constant:
-0:?                   0.100000
-0:?                   0.110000
+0:43                Constant:
+0:43                  0.100000
+0:43                  0.110000
 0:43            move second child to first child ( temp float)
 0:43              c0: direct index for structure ( temp float)
 0:43                '@sampleStructTemp' ( temp structure{ temp float c0,  temp 2-component vector of float c1,  temp float c2})
@@ -611,9 +611,9 @@
 0:44                Construct combined texture-sampler ( temp sampler2D)
 0:44                  'g_tTex2s2' ( uniform texture2D)
 0:44                  'g_sSamp' ( uniform sampler)
-0:?                 Constant:
-0:?                   0.200000
-0:?                   0.210000
+0:44                Constant:
+0:44                  0.200000
+0:44                  0.210000
 0:44            move second child to first child ( temp float)
 0:44              c0: direct index for structure ( temp float)
 0:44                '@sampleStructTemp' ( temp structure{ temp float c0,  temp 3-component vector of float c1})
@@ -670,9 +670,9 @@
 0:45                Construct combined texture-sampler ( temp sampler2D)
 0:45                  'g_tTex2s3' ( uniform texture2D)
 0:45                  'g_sSamp' ( uniform sampler)
-0:?                 Constant:
-0:?                   0.300000
-0:?                   0.310000
+0:45                Constant:
+0:45                  0.300000
+0:45                  0.310000
 0:45            move second child to first child ( temp float)
 0:45              direct index ( temp float)
 0:45                c0: direct index for structure ( temp 2-component vector of float)
@@ -720,9 +720,9 @@
 0:46                Construct combined texture-sampler ( temp isampler2D)
 0:46                  'g_tTex2s4' ( uniform itexture2D)
 0:46                  'g_sSamp' ( uniform sampler)
-0:?                 Constant:
-0:?                   0.400000
-0:?                   0.410000
+0:46                Constant:
+0:46                  0.400000
+0:46                  0.410000
 0:46            move second child to first child ( temp int)
 0:46              c0: direct index for structure ( temp int)
 0:46                '@sampleStructTemp' ( temp structure{ temp int c0,  temp 2-component vector of int c1,  temp int c2})
@@ -778,9 +778,9 @@
 0:47                Construct combined texture-sampler ( temp usampler2D)
 0:47                  'g_tTex2s5' ( uniform utexture2D)
 0:47                  'g_sSamp' ( uniform sampler)
-0:?                 Constant:
-0:?                   0.500000
-0:?                   0.510000
+0:47                Constant:
+0:47                  0.500000
+0:47                  0.510000
 0:47            move second child to first child ( temp uint)
 0:47              c0: direct index for structure ( temp uint)
 0:47                '@sampleStructTemp' ( temp structure{ temp uint c0,  temp uint c1})
diff --git a/Test/baseResults/hlsl.texture.subvec4.frag.out b/Test/baseResults/hlsl.texture.subvec4.frag.out
index 8ba67cf..1a7816d 100644
--- a/Test/baseResults/hlsl.texture.subvec4.frag.out
+++ b/Test/baseResults/hlsl.texture.subvec4.frag.out
@@ -92,32 +92,32 @@
 0:29      Construct float ( temp float)
 0:?         textureFetch ( temp 4-component vector of float)
 0:29          'g_tTex2dmsf1' ( uniform texture2DMS)
-0:?           Constant:
-0:?             1 (const int)
-0:?             2 (const int)
+0:29          Constant:
+0:29            1 (const int)
+0:29            2 (const int)
 0:29          Constant:
 0:29            3 (const int)
 0:30      Construct vec2 ( temp 2-component vector of float)
 0:?         textureFetch ( temp 4-component vector of float)
 0:30          'g_tTex2dmsf2' ( uniform texture2DMS)
-0:?           Constant:
-0:?             1 (const int)
-0:?             2 (const int)
+0:30          Constant:
+0:30            1 (const int)
+0:30            2 (const int)
 0:30          Constant:
 0:30            3 (const int)
 0:31      Construct vec3 ( temp 3-component vector of float)
 0:?         textureFetch ( temp 4-component vector of float)
 0:31          'g_tTex2dmsf3' ( uniform texture2DMS)
-0:?           Constant:
-0:?             1 (const int)
-0:?             2 (const int)
+0:31          Constant:
+0:31            1 (const int)
+0:31            2 (const int)
 0:31          Constant:
 0:31            3 (const int)
 0:32      textureFetch ( temp 4-component vector of float)
 0:32        'g_tTex2dmsf4' ( uniform texture2DMS)
-0:?         Constant:
-0:?           1 (const int)
-0:?           2 (const int)
+0:32        Constant:
+0:32          1 (const int)
+0:32          2 (const int)
 0:32        Constant:
 0:32          3 (const int)
 0:34      Construct float ( temp float)
@@ -125,32 +125,32 @@
 0:34          Construct combined texture-sampler ( temp sampler2D)
 0:34            'g_tTex2df1' ( uniform texture2D)
 0:34            'g_sSamp' ( uniform sampler)
-0:?           Constant:
-0:?             0.100000
-0:?             0.200000
+0:34          Constant:
+0:34            0.100000
+0:34            0.200000
 0:35      Construct vec2 ( temp 2-component vector of float)
 0:?         texture ( temp 4-component vector of float)
 0:35          Construct combined texture-sampler ( temp sampler2D)
 0:35            'g_tTex2df2' ( uniform texture2D)
 0:35            'g_sSamp' ( uniform sampler)
-0:?           Constant:
-0:?             0.100000
-0:?             0.200000
+0:35          Constant:
+0:35            0.100000
+0:35            0.200000
 0:36      Construct vec3 ( temp 3-component vector of float)
 0:?         texture ( temp 4-component vector of float)
 0:36          Construct combined texture-sampler ( temp sampler2D)
 0:36            'g_tTex2df3' ( uniform texture2D)
 0:36            'g_sSamp' ( uniform sampler)
-0:?           Constant:
-0:?             0.100000
-0:?             0.200000
+0:36          Constant:
+0:36            0.100000
+0:36            0.200000
 0:37      texture ( temp 4-component vector of float)
 0:37        Construct combined texture-sampler ( temp sampler2D)
 0:37          'g_tTex2df4' ( uniform texture2D)
 0:37          'g_sSamp' ( uniform sampler)
-0:?         Constant:
-0:?           0.100000
-0:?           0.200000
+0:37        Constant:
+0:37          0.100000
+0:37          0.200000
 0:39      Branch: Return with expression
 0:39        Constant:
 0:39          0.000000
@@ -272,32 +272,32 @@
 0:29      Construct float ( temp float)
 0:?         textureFetch ( temp 4-component vector of float)
 0:29          'g_tTex2dmsf1' ( uniform texture2DMS)
-0:?           Constant:
-0:?             1 (const int)
-0:?             2 (const int)
+0:29          Constant:
+0:29            1 (const int)
+0:29            2 (const int)
 0:29          Constant:
 0:29            3 (const int)
 0:30      Construct vec2 ( temp 2-component vector of float)
 0:?         textureFetch ( temp 4-component vector of float)
 0:30          'g_tTex2dmsf2' ( uniform texture2DMS)
-0:?           Constant:
-0:?             1 (const int)
-0:?             2 (const int)
+0:30          Constant:
+0:30            1 (const int)
+0:30            2 (const int)
 0:30          Constant:
 0:30            3 (const int)
 0:31      Construct vec3 ( temp 3-component vector of float)
 0:?         textureFetch ( temp 4-component vector of float)
 0:31          'g_tTex2dmsf3' ( uniform texture2DMS)
-0:?           Constant:
-0:?             1 (const int)
-0:?             2 (const int)
+0:31          Constant:
+0:31            1 (const int)
+0:31            2 (const int)
 0:31          Constant:
 0:31            3 (const int)
 0:32      textureFetch ( temp 4-component vector of float)
 0:32        'g_tTex2dmsf4' ( uniform texture2DMS)
-0:?         Constant:
-0:?           1 (const int)
-0:?           2 (const int)
+0:32        Constant:
+0:32          1 (const int)
+0:32          2 (const int)
 0:32        Constant:
 0:32          3 (const int)
 0:34      Construct float ( temp float)
@@ -305,32 +305,32 @@
 0:34          Construct combined texture-sampler ( temp sampler2D)
 0:34            'g_tTex2df1' ( uniform texture2D)
 0:34            'g_sSamp' ( uniform sampler)
-0:?           Constant:
-0:?             0.100000
-0:?             0.200000
+0:34          Constant:
+0:34            0.100000
+0:34            0.200000
 0:35      Construct vec2 ( temp 2-component vector of float)
 0:?         texture ( temp 4-component vector of float)
 0:35          Construct combined texture-sampler ( temp sampler2D)
 0:35            'g_tTex2df2' ( uniform texture2D)
 0:35            'g_sSamp' ( uniform sampler)
-0:?           Constant:
-0:?             0.100000
-0:?             0.200000
+0:35          Constant:
+0:35            0.100000
+0:35            0.200000
 0:36      Construct vec3 ( temp 3-component vector of float)
 0:?         texture ( temp 4-component vector of float)
 0:36          Construct combined texture-sampler ( temp sampler2D)
 0:36            'g_tTex2df3' ( uniform texture2D)
 0:36            'g_sSamp' ( uniform sampler)
-0:?           Constant:
-0:?             0.100000
-0:?             0.200000
+0:36          Constant:
+0:36            0.100000
+0:36            0.200000
 0:37      texture ( temp 4-component vector of float)
 0:37        Construct combined texture-sampler ( temp sampler2D)
 0:37          'g_tTex2df4' ( uniform texture2D)
 0:37          'g_sSamp' ( uniform sampler)
-0:?         Constant:
-0:?           0.100000
-0:?           0.200000
+0:37        Constant:
+0:37          0.100000
+0:37          0.200000
 0:39      Branch: Return with expression
 0:39        Constant:
 0:39          0.000000
diff --git a/Test/baseResults/hlsl.this.frag.out b/Test/baseResults/hlsl.this.frag.out
index 47022ec..e6b54cf 100644
--- a/Test/baseResults/hlsl.this.frag.out
+++ b/Test/baseResults/hlsl.this.frag.out
@@ -5,9 +5,9 @@
 0:1  Sequence
 0:1    move second child to first child ( temp 2-component vector of float)
 0:1      'var' ( global 2-component vector of float)
-0:?       Constant:
-0:?         1.000000
-0:?         2.000000
+0:1      Constant:
+0:1        1.000000
+0:1        2.000000
 0:6  Function Definition: type1::memFun1(vi3; ( temp int)
 0:6    Function Parameters: 
 0:6      '@this' ( temp structure{ temp 2-component vector of float bar,  temp int var,  temp int var2})
@@ -36,10 +36,10 @@
 0:11      Sequence
 0:11        move second child to first child ( temp 3-component vector of int)
 0:11          'var' ( temp 3-component vector of int)
-0:?           Constant:
-0:?             1 (const int)
-0:?             2 (const int)
-0:?             3 (const int)
+0:11          Constant:
+0:11            1 (const int)
+0:11            2 (const int)
+0:11            3 (const int)
 0:12      Branch: Return with expression
 0:12        add ( temp int)
 0:12          add ( temp int)
@@ -87,10 +87,10 @@
 0:25          'i' ( temp int)
 0:25          Function Call: type1::memFun1(vi3; ( temp int)
 0:25            'T' ( temp structure{ temp 2-component vector of float bar,  temp int var,  temp int var2})
-0:?             Constant:
-0:?               10 (const int)
-0:?               11 (const int)
-0:?               12 (const int)
+0:25            Constant:
+0:25              10 (const int)
+0:25              11 (const int)
+0:25              12 (const int)
 0:26      add second child into first child ( temp int)
 0:26        'i' ( temp int)
 0:26        Function Call: type1::memFun2(i1; ( temp int)
@@ -98,7 +98,7 @@
 0:26          Constant:
 0:26            17 (const int)
 0:28      Branch: Return with expression
-0:?         Construct vec4 ( temp 4-component vector of float)
+0:28        Construct vec4 ( temp 4-component vector of float)
 0:28          Convert int to float ( temp float)
 0:28            'i' ( temp int)
 0:28          Convert int to float ( temp float)
@@ -127,9 +127,9 @@
 0:1  Sequence
 0:1    move second child to first child ( temp 2-component vector of float)
 0:1      'var' ( global 2-component vector of float)
-0:?       Constant:
-0:?         1.000000
-0:?         2.000000
+0:1      Constant:
+0:1        1.000000
+0:1        2.000000
 0:6  Function Definition: type1::memFun1(vi3; ( temp int)
 0:6    Function Parameters: 
 0:6      '@this' ( temp structure{ temp 2-component vector of float bar,  temp int var,  temp int var2})
@@ -158,10 +158,10 @@
 0:11      Sequence
 0:11        move second child to first child ( temp 3-component vector of int)
 0:11          'var' ( temp 3-component vector of int)
-0:?           Constant:
-0:?             1 (const int)
-0:?             2 (const int)
-0:?             3 (const int)
+0:11          Constant:
+0:11            1 (const int)
+0:11            2 (const int)
+0:11            3 (const int)
 0:12      Branch: Return with expression
 0:12        add ( temp int)
 0:12          add ( temp int)
@@ -209,10 +209,10 @@
 0:25          'i' ( temp int)
 0:25          Function Call: type1::memFun1(vi3; ( temp int)
 0:25            'T' ( temp structure{ temp 2-component vector of float bar,  temp int var,  temp int var2})
-0:?             Constant:
-0:?               10 (const int)
-0:?               11 (const int)
-0:?               12 (const int)
+0:25            Constant:
+0:25              10 (const int)
+0:25              11 (const int)
+0:25              12 (const int)
 0:26      add second child into first child ( temp int)
 0:26        'i' ( temp int)
 0:26        Function Call: type1::memFun2(i1; ( temp int)
@@ -220,7 +220,7 @@
 0:26          Constant:
 0:26            17 (const int)
 0:28      Branch: Return with expression
-0:?         Construct vec4 ( temp 4-component vector of float)
+0:28        Construct vec4 ( temp 4-component vector of float)
 0:28          Convert int to float ( temp float)
 0:28            'i' ( temp int)
 0:28          Convert int to float ( temp float)
diff --git a/Test/baseResults/hlsl.tx.overload.frag.out b/Test/baseResults/hlsl.tx.overload.frag.out
index de8b38b..7fb0640 100644
--- a/Test/baseResults/hlsl.tx.overload.frag.out
+++ b/Test/baseResults/hlsl.tx.overload.frag.out
@@ -14,11 +14,11 @@
 0:9      'DummyTex' ( in texture2D)
 0:?     Sequence
 0:9      Branch: Return with expression
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:9        Constant:
+0:9          0.000000
+0:9          0.000000
+0:9          0.000000
+0:9          0.000000
 0:11  Function Definition: Func(I211; ( temp float)
 0:11    Function Parameters: 
 0:11      'DummyTex' (layout( r32f) in image2D)
@@ -31,11 +31,11 @@
 0:12      'DummyTex' (layout( rgba32f) in image2D)
 0:?     Sequence
 0:12      Branch: Return with expression
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:12        Constant:
+0:12          0.000000
+0:12          0.000000
+0:12          0.000000
+0:12          0.000000
 0:15  Function Definition: @main( ( temp 4-component vector of float)
 0:15    Function Parameters: 
 0:?     Sequence
@@ -83,11 +83,11 @@
 0:9      'DummyTex' ( in texture2D)
 0:?     Sequence
 0:9      Branch: Return with expression
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:9        Constant:
+0:9          0.000000
+0:9          0.000000
+0:9          0.000000
+0:9          0.000000
 0:11  Function Definition: Func(I211; ( temp float)
 0:11    Function Parameters: 
 0:11      'DummyTex' (layout( r32f) in image2D)
@@ -100,11 +100,11 @@
 0:12      'DummyTex' (layout( rgba32f) in image2D)
 0:?     Sequence
 0:12      Branch: Return with expression
-0:?         Constant:
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
-0:?           0.000000
+0:12        Constant:
+0:12          0.000000
+0:12          0.000000
+0:12          0.000000
+0:12          0.000000
 0:15  Function Definition: @main( ( temp 4-component vector of float)
 0:15    Function Parameters: 
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.type.half.frag.out b/Test/baseResults/hlsl.type.half.frag.out
index ec7e46d..68f1b24 100644
--- a/Test/baseResults/hlsl.type.half.frag.out
+++ b/Test/baseResults/hlsl.type.half.frag.out
@@ -39,11 +39,11 @@
 0:15      Sequence
 0:15        move second child to first child ( temp 2X2 matrix of float)
 0:15          'h22' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
+0:15          Constant:
+0:15            1.000000
+0:15            2.000000
+0:15            3.000000
+0:15            4.000000
 0:16      Sequence
 0:16        move second child to first child ( temp 2X3 matrix of float)
 0:16          'h23' ( temp 2X3 matrix of float)
@@ -123,11 +123,11 @@
 0:15      Sequence
 0:15        move second child to first child ( temp 2X2 matrix of float)
 0:15          'h22' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             1.000000
-0:?             2.000000
-0:?             3.000000
-0:?             4.000000
+0:15          Constant:
+0:15            1.000000
+0:15            2.000000
+0:15            3.000000
+0:15            4.000000
 0:16      Sequence
 0:16        move second child to first child ( temp 2X3 matrix of float)
 0:16          'h23' ( temp 2X3 matrix of float)
diff --git a/Test/baseResults/hlsl.type.type.conversion.all.frag.out b/Test/baseResults/hlsl.type.type.conversion.all.frag.out
index 083c929..ae05dc2 100644
--- a/Test/baseResults/hlsl.type.type.conversion.all.frag.out
+++ b/Test/baseResults/hlsl.type.type.conversion.all.frag.out
@@ -122,9 +122,9 @@
 0:21      Sequence
 0:21        move second child to first child ( temp 2-component vector of float)
 0:21          'var14' ( temp 2-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
+0:21          Constant:
+0:21            0.000000
+0:21            0.000000
 0:22      Sequence
 0:22        move second child to first child ( temp 3-component vector of float)
 0:22          'var26' ( temp 3-component vector of float)
@@ -135,10 +135,10 @@
 0:23      Sequence
 0:23        move second child to first child ( temp 3-component vector of float)
 0:23          'var28' ( temp 3-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:23          Constant:
+0:23            0.000000
+0:23            0.000000
+0:23            0.000000
 0:24      Sequence
 0:24        move second child to first child ( temp 4-component vector of float)
 0:24          'var39' ( temp 4-component vector of float)
@@ -150,19 +150,19 @@
 0:25      Sequence
 0:25        move second child to first child ( temp 4-component vector of float)
 0:25          'var42' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:25          Constant:
+0:25            0.000000
+0:25            0.000000
+0:25            0.000000
+0:25            0.000000
 0:26      Sequence
 0:26        move second child to first child ( temp 4-component vector of float)
 0:26          'var43' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:26          Constant:
+0:26            0.000000
+0:26            0.000000
+0:26            0.000000
+0:26            0.000000
 0:27      Sequence
 0:27        move second child to first child ( temp 2X2 matrix of float)
 0:27          'var52' ( temp 2X2 matrix of float)
@@ -174,19 +174,19 @@
 0:28      Sequence
 0:28        move second child to first child ( temp 2X2 matrix of float)
 0:28          'var55' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:28          Constant:
+0:28            0.000000
+0:28            0.000000
+0:28            0.000000
+0:28            0.000000
 0:29      Sequence
 0:29        move second child to first child ( temp 2X2 matrix of float)
 0:29          'var56' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:29          Constant:
+0:29            0.000000
+0:29            0.000000
+0:29            0.000000
+0:29            0.000000
 0:30      Sequence
 0:30        move second child to first child ( temp 2X3 matrix of float)
 0:30          'var65' ( temp 2X3 matrix of float)
@@ -200,13 +200,13 @@
 0:31      Sequence
 0:31        move second child to first child ( temp 2X3 matrix of float)
 0:31          'var70' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:31          Constant:
+0:31            0.000000
+0:31            0.000000
+0:31            0.000000
+0:31            0.000000
+0:31            0.000000
+0:31            0.000000
 0:32      Sequence
 0:32        move second child to first child ( temp 2X4 matrix of float)
 0:32          'var78' ( temp 2X4 matrix of float)
@@ -222,15 +222,15 @@
 0:33      Sequence
 0:33        move second child to first child ( temp 2X4 matrix of float)
 0:33          'var84' ( temp 2X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:33          Constant:
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
 0:34      Sequence
 0:34        move second child to first child ( temp 3X2 matrix of float)
 0:34          'var91' ( temp 3X2 matrix of float)
@@ -244,13 +244,13 @@
 0:35      Sequence
 0:35        move second child to first child ( temp 3X2 matrix of float)
 0:35          'var98' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:35          Constant:
+0:35            0.000000
+0:35            0.000000
+0:35            0.000000
+0:35            0.000000
+0:35            0.000000
+0:35            0.000000
 0:36      Sequence
 0:36        move second child to first child ( temp 3X3 matrix of float)
 0:36          'var104' ( temp 3X3 matrix of float)
@@ -267,16 +267,16 @@
 0:37      Sequence
 0:37        move second child to first child ( temp 3X3 matrix of float)
 0:37          'var112' ( temp 3X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:37          Constant:
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
 0:38      Sequence
 0:38        move second child to first child ( temp 3X4 matrix of float)
 0:38          'var117' ( temp 3X4 matrix of float)
@@ -296,19 +296,19 @@
 0:39      Sequence
 0:39        move second child to first child ( temp 3X4 matrix of float)
 0:39          'var126' ( temp 3X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:39          Constant:
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
 0:40      Sequence
 0:40        move second child to first child ( temp 4X2 matrix of float)
 0:40          'var130' ( temp 4X2 matrix of float)
@@ -324,15 +324,15 @@
 0:41      Sequence
 0:41        move second child to first child ( temp 4X2 matrix of float)
 0:41          'var140' ( temp 4X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:41          Constant:
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
 0:42      Sequence
 0:42        move second child to first child ( temp 4X3 matrix of float)
 0:42          'var143' ( temp 4X3 matrix of float)
@@ -352,19 +352,19 @@
 0:43      Sequence
 0:43        move second child to first child ( temp 4X3 matrix of float)
 0:43          'var154' ( temp 4X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:43          Constant:
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
 0:44      Sequence
 0:44        move second child to first child ( temp 4X4 matrix of float)
 0:44          'var156' ( temp 4X4 matrix of float)
@@ -388,385 +388,385 @@
 0:45      Sequence
 0:45        move second child to first child ( temp 4X4 matrix of float)
 0:45          'var168' ( temp 4X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:45          Constant:
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
 0:46      Sequence
 0:46        move second child to first child ( temp float)
 0:46          'var1' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:46          Constant:
+0:46            0.000000
 0:47      Sequence
 0:47        move second child to first child ( temp float)
 0:47          'var2' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:47          Constant:
+0:47            0.000000
 0:48      Sequence
 0:48        move second child to first child ( temp float)
 0:48          'var3' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:48          Constant:
+0:48            0.000000
 0:49      Sequence
 0:49        move second child to first child ( temp float)
 0:49          'var4' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:49          Constant:
+0:49            0.000000
 0:50      Sequence
 0:50        move second child to first child ( temp float)
 0:50          'var5' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:50          Constant:
+0:50            0.000000
 0:51      Sequence
 0:51        move second child to first child ( temp float)
 0:51          'var6' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:51          Constant:
+0:51            0.000000
 0:52      Sequence
 0:52        move second child to first child ( temp float)
 0:52          'var7' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:52          Constant:
+0:52            0.000000
 0:53      Sequence
 0:53        move second child to first child ( temp float)
 0:53          'var8' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:53          Constant:
+0:53            0.000000
 0:54      Sequence
 0:54        move second child to first child ( temp float)
 0:54          'var9' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:54          Constant:
+0:54            0.000000
 0:55      Sequence
 0:55        move second child to first child ( temp float)
 0:55          'var10' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:55          Constant:
+0:55            0.000000
 0:56      Sequence
 0:56        move second child to first child ( temp float)
 0:56          'var11' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:56          Constant:
+0:56            0.000000
 0:57      Sequence
 0:57        move second child to first child ( temp float)
 0:57          'var12' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:57          Constant:
+0:57            0.000000
 0:58      Sequence
 0:58        move second child to first child ( temp 2-component vector of float)
 0:58          'var15' ( temp 2-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
+0:58          Constant:
+0:58            0.000000
+0:58            0.000000
 0:59      Sequence
 0:59        move second child to first child ( temp 2-component vector of float)
 0:59          'var16' ( temp 2-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
+0:59          Constant:
+0:59            0.000000
+0:59            0.000000
 0:60      Sequence
 0:60        move second child to first child ( temp 3-component vector of float)
 0:60          'var29' ( temp 3-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:60          Constant:
+0:60            0.000000
+0:60            0.000000
+0:60            0.000000
 0:61      Sequence
 0:61        move second child to first child ( temp 2X2 matrix of float)
 0:61          'var57' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:61          Constant:
+0:61            0.000000
+0:61            0.000000
+0:61            0.000000
+0:61            0.000000
 0:62      Sequence
 0:62        move second child to first child ( temp 2X2 matrix of float)
 0:62          'var58' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:62          Constant:
+0:62            0.000000
+0:62            0.000000
+0:62            0.000000
+0:62            0.000000
 0:63      Sequence
 0:63        move second child to first child ( temp 2X2 matrix of float)
 0:63          'var59' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+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 2X2 matrix of float)
 0:64          'var60' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:64          Constant:
+0:64            0.000000
+0:64            0.000000
+0:64            0.000000
+0:64            0.000000
 0:65      Sequence
 0:65        move second child to first child ( temp 2X2 matrix of float)
 0:65          'var61' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:65          Constant:
+0:65            0.000000
+0:65            0.000000
+0:65            0.000000
+0:65            0.000000
 0:66      Sequence
 0:66        move second child to first child ( temp 2X2 matrix of float)
 0:66          'var62' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:66          Constant:
+0:66            0.000000
+0:66            0.000000
+0:66            0.000000
+0:66            0.000000
 0:67      Sequence
 0:67        move second child to first child ( temp 2X2 matrix of float)
 0:67          'var63' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:67          Constant:
+0:67            0.000000
+0:67            0.000000
+0:67            0.000000
+0:67            0.000000
 0:68      Sequence
 0:68        move second child to first child ( temp 2X2 matrix of float)
 0:68          'var64' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:68          Constant:
+0:68            0.000000
+0:68            0.000000
+0:68            0.000000
+0:68            0.000000
 0:69      Sequence
 0:69        move second child to first child ( temp 2X3 matrix of float)
 0:69          'var71' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:69          Constant:
+0:69            0.000000
+0:69            0.000000
+0:69            0.000000
+0:69            0.000000
+0:69            0.000000
+0:69            0.000000
 0:70      Sequence
 0:70        move second child to first child ( temp 2X3 matrix of float)
 0:70          'var73' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:70          Constant:
+0:70            0.000000
+0:70            0.000000
+0:70            0.000000
+0:70            0.000000
+0:70            0.000000
+0:70            0.000000
 0:71      Sequence
 0:71        move second child to first child ( temp 2X3 matrix of float)
 0:71          'var74' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:71          Constant:
+0:71            0.000000
+0:71            0.000000
+0:71            0.000000
+0:71            0.000000
+0:71            0.000000
+0:71            0.000000
 0:72      Sequence
 0:72        move second child to first child ( temp 2X3 matrix of float)
 0:72          'var76' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:72          Constant:
+0:72            0.000000
+0:72            0.000000
+0:72            0.000000
+0:72            0.000000
+0:72            0.000000
+0:72            0.000000
 0:73      Sequence
 0:73        move second child to first child ( temp 2X3 matrix of float)
 0:73          'var77' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:73          Constant:
+0:73            0.000000
+0:73            0.000000
+0:73            0.000000
+0:73            0.000000
+0:73            0.000000
+0:73            0.000000
 0:74      Sequence
 0:74        move second child to first child ( temp 2X4 matrix of float)
 0:74          'var87' ( temp 2X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:74          Constant:
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
 0:75      Sequence
 0:75        move second child to first child ( temp 2X4 matrix of float)
 0:75          'var90' ( temp 2X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:75          Constant:
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
 0:76      Sequence
 0:76        move second child to first child ( temp 3X2 matrix of float)
 0:76          'var99' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:76          Constant:
+0:76            0.000000
+0:76            0.000000
+0:76            0.000000
+0:76            0.000000
+0:76            0.000000
+0:76            0.000000
 0:77      Sequence
 0:77        move second child to first child ( temp 3X2 matrix of float)
 0:77          'var100' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:77          Constant:
+0:77            0.000000
+0:77            0.000000
+0:77            0.000000
+0:77            0.000000
+0:77            0.000000
+0:77            0.000000
 0:78      Sequence
 0:78        move second child to first child ( temp 3X2 matrix of float)
 0:78          'var101' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:78          Constant:
+0:78            0.000000
+0:78            0.000000
+0:78            0.000000
+0:78            0.000000
+0:78            0.000000
+0:78            0.000000
 0:79      Sequence
 0:79        move second child to first child ( temp 3X2 matrix of float)
 0:79          'var102' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:79          Constant:
+0:79            0.000000
+0:79            0.000000
+0:79            0.000000
+0:79            0.000000
+0:79            0.000000
+0:79            0.000000
 0:80      Sequence
 0:80        move second child to first child ( temp 3X2 matrix of float)
 0:80          'var103' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:80          Constant:
+0:80            0.000000
+0:80            0.000000
+0:80            0.000000
+0:80            0.000000
+0:80            0.000000
+0:80            0.000000
 0:81      Sequence
 0:81        move second child to first child ( temp 3X3 matrix of float)
 0:81          'var113' ( temp 3X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:81          Constant:
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
 0:82      Sequence
 0:82        move second child to first child ( temp 3X3 matrix of float)
 0:82          'var115' ( temp 3X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:82          Constant:
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
 0:83      Sequence
 0:83        move second child to first child ( temp 3X3 matrix of float)
 0:83          'var116' ( temp 3X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:83          Constant:
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
 0:84      Sequence
 0:84        move second child to first child ( temp 3X4 matrix of float)
 0:84          'var129' ( temp 3X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:84          Constant:
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
 0:85      Sequence
 0:85        move second child to first child ( temp 4X2 matrix of float)
 0:85          'var141' ( temp 4X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:85          Constant:
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
 0:86      Sequence
 0:86        move second child to first child ( temp 4X2 matrix of float)
 0:86          'var142' ( temp 4X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:86          Constant:
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
 0:87      Sequence
 0:87        move second child to first child ( temp 4X3 matrix of float)
 0:87          'var155' ( temp 4X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:87          Constant:
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
 0:188      Branch: Return with expression
 0:188        Constant:
 0:188          0.000000
@@ -806,9 +806,9 @@
 0:21      Sequence
 0:21        move second child to first child ( temp 2-component vector of float)
 0:21          'var14' ( temp 2-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
+0:21          Constant:
+0:21            0.000000
+0:21            0.000000
 0:22      Sequence
 0:22        move second child to first child ( temp 3-component vector of float)
 0:22          'var26' ( temp 3-component vector of float)
@@ -819,10 +819,10 @@
 0:23      Sequence
 0:23        move second child to first child ( temp 3-component vector of float)
 0:23          'var28' ( temp 3-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:23          Constant:
+0:23            0.000000
+0:23            0.000000
+0:23            0.000000
 0:24      Sequence
 0:24        move second child to first child ( temp 4-component vector of float)
 0:24          'var39' ( temp 4-component vector of float)
@@ -834,19 +834,19 @@
 0:25      Sequence
 0:25        move second child to first child ( temp 4-component vector of float)
 0:25          'var42' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:25          Constant:
+0:25            0.000000
+0:25            0.000000
+0:25            0.000000
+0:25            0.000000
 0:26      Sequence
 0:26        move second child to first child ( temp 4-component vector of float)
 0:26          'var43' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:26          Constant:
+0:26            0.000000
+0:26            0.000000
+0:26            0.000000
+0:26            0.000000
 0:27      Sequence
 0:27        move second child to first child ( temp 2X2 matrix of float)
 0:27          'var52' ( temp 2X2 matrix of float)
@@ -858,19 +858,19 @@
 0:28      Sequence
 0:28        move second child to first child ( temp 2X2 matrix of float)
 0:28          'var55' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:28          Constant:
+0:28            0.000000
+0:28            0.000000
+0:28            0.000000
+0:28            0.000000
 0:29      Sequence
 0:29        move second child to first child ( temp 2X2 matrix of float)
 0:29          'var56' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:29          Constant:
+0:29            0.000000
+0:29            0.000000
+0:29            0.000000
+0:29            0.000000
 0:30      Sequence
 0:30        move second child to first child ( temp 2X3 matrix of float)
 0:30          'var65' ( temp 2X3 matrix of float)
@@ -884,13 +884,13 @@
 0:31      Sequence
 0:31        move second child to first child ( temp 2X3 matrix of float)
 0:31          'var70' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:31          Constant:
+0:31            0.000000
+0:31            0.000000
+0:31            0.000000
+0:31            0.000000
+0:31            0.000000
+0:31            0.000000
 0:32      Sequence
 0:32        move second child to first child ( temp 2X4 matrix of float)
 0:32          'var78' ( temp 2X4 matrix of float)
@@ -906,15 +906,15 @@
 0:33      Sequence
 0:33        move second child to first child ( temp 2X4 matrix of float)
 0:33          'var84' ( temp 2X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:33          Constant:
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
 0:34      Sequence
 0:34        move second child to first child ( temp 3X2 matrix of float)
 0:34          'var91' ( temp 3X2 matrix of float)
@@ -928,13 +928,13 @@
 0:35      Sequence
 0:35        move second child to first child ( temp 3X2 matrix of float)
 0:35          'var98' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:35          Constant:
+0:35            0.000000
+0:35            0.000000
+0:35            0.000000
+0:35            0.000000
+0:35            0.000000
+0:35            0.000000
 0:36      Sequence
 0:36        move second child to first child ( temp 3X3 matrix of float)
 0:36          'var104' ( temp 3X3 matrix of float)
@@ -951,16 +951,16 @@
 0:37      Sequence
 0:37        move second child to first child ( temp 3X3 matrix of float)
 0:37          'var112' ( temp 3X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:37          Constant:
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
 0:38      Sequence
 0:38        move second child to first child ( temp 3X4 matrix of float)
 0:38          'var117' ( temp 3X4 matrix of float)
@@ -980,19 +980,19 @@
 0:39      Sequence
 0:39        move second child to first child ( temp 3X4 matrix of float)
 0:39          'var126' ( temp 3X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:39          Constant:
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
 0:40      Sequence
 0:40        move second child to first child ( temp 4X2 matrix of float)
 0:40          'var130' ( temp 4X2 matrix of float)
@@ -1008,15 +1008,15 @@
 0:41      Sequence
 0:41        move second child to first child ( temp 4X2 matrix of float)
 0:41          'var140' ( temp 4X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:41          Constant:
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
 0:42      Sequence
 0:42        move second child to first child ( temp 4X3 matrix of float)
 0:42          'var143' ( temp 4X3 matrix of float)
@@ -1036,19 +1036,19 @@
 0:43      Sequence
 0:43        move second child to first child ( temp 4X3 matrix of float)
 0:43          'var154' ( temp 4X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:43          Constant:
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
 0:44      Sequence
 0:44        move second child to first child ( temp 4X4 matrix of float)
 0:44          'var156' ( temp 4X4 matrix of float)
@@ -1072,385 +1072,385 @@
 0:45      Sequence
 0:45        move second child to first child ( temp 4X4 matrix of float)
 0:45          'var168' ( temp 4X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:45          Constant:
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
 0:46      Sequence
 0:46        move second child to first child ( temp float)
 0:46          'var1' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:46          Constant:
+0:46            0.000000
 0:47      Sequence
 0:47        move second child to first child ( temp float)
 0:47          'var2' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:47          Constant:
+0:47            0.000000
 0:48      Sequence
 0:48        move second child to first child ( temp float)
 0:48          'var3' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:48          Constant:
+0:48            0.000000
 0:49      Sequence
 0:49        move second child to first child ( temp float)
 0:49          'var4' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:49          Constant:
+0:49            0.000000
 0:50      Sequence
 0:50        move second child to first child ( temp float)
 0:50          'var5' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:50          Constant:
+0:50            0.000000
 0:51      Sequence
 0:51        move second child to first child ( temp float)
 0:51          'var6' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:51          Constant:
+0:51            0.000000
 0:52      Sequence
 0:52        move second child to first child ( temp float)
 0:52          'var7' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:52          Constant:
+0:52            0.000000
 0:53      Sequence
 0:53        move second child to first child ( temp float)
 0:53          'var8' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:53          Constant:
+0:53            0.000000
 0:54      Sequence
 0:54        move second child to first child ( temp float)
 0:54          'var9' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:54          Constant:
+0:54            0.000000
 0:55      Sequence
 0:55        move second child to first child ( temp float)
 0:55          'var10' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:55          Constant:
+0:55            0.000000
 0:56      Sequence
 0:56        move second child to first child ( temp float)
 0:56          'var11' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:56          Constant:
+0:56            0.000000
 0:57      Sequence
 0:57        move second child to first child ( temp float)
 0:57          'var12' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:57          Constant:
+0:57            0.000000
 0:58      Sequence
 0:58        move second child to first child ( temp 2-component vector of float)
 0:58          'var15' ( temp 2-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
+0:58          Constant:
+0:58            0.000000
+0:58            0.000000
 0:59      Sequence
 0:59        move second child to first child ( temp 2-component vector of float)
 0:59          'var16' ( temp 2-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
+0:59          Constant:
+0:59            0.000000
+0:59            0.000000
 0:60      Sequence
 0:60        move second child to first child ( temp 3-component vector of float)
 0:60          'var29' ( temp 3-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:60          Constant:
+0:60            0.000000
+0:60            0.000000
+0:60            0.000000
 0:61      Sequence
 0:61        move second child to first child ( temp 2X2 matrix of float)
 0:61          'var57' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:61          Constant:
+0:61            0.000000
+0:61            0.000000
+0:61            0.000000
+0:61            0.000000
 0:62      Sequence
 0:62        move second child to first child ( temp 2X2 matrix of float)
 0:62          'var58' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:62          Constant:
+0:62            0.000000
+0:62            0.000000
+0:62            0.000000
+0:62            0.000000
 0:63      Sequence
 0:63        move second child to first child ( temp 2X2 matrix of float)
 0:63          'var59' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+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 2X2 matrix of float)
 0:64          'var60' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:64          Constant:
+0:64            0.000000
+0:64            0.000000
+0:64            0.000000
+0:64            0.000000
 0:65      Sequence
 0:65        move second child to first child ( temp 2X2 matrix of float)
 0:65          'var61' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:65          Constant:
+0:65            0.000000
+0:65            0.000000
+0:65            0.000000
+0:65            0.000000
 0:66      Sequence
 0:66        move second child to first child ( temp 2X2 matrix of float)
 0:66          'var62' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:66          Constant:
+0:66            0.000000
+0:66            0.000000
+0:66            0.000000
+0:66            0.000000
 0:67      Sequence
 0:67        move second child to first child ( temp 2X2 matrix of float)
 0:67          'var63' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:67          Constant:
+0:67            0.000000
+0:67            0.000000
+0:67            0.000000
+0:67            0.000000
 0:68      Sequence
 0:68        move second child to first child ( temp 2X2 matrix of float)
 0:68          'var64' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:68          Constant:
+0:68            0.000000
+0:68            0.000000
+0:68            0.000000
+0:68            0.000000
 0:69      Sequence
 0:69        move second child to first child ( temp 2X3 matrix of float)
 0:69          'var71' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:69          Constant:
+0:69            0.000000
+0:69            0.000000
+0:69            0.000000
+0:69            0.000000
+0:69            0.000000
+0:69            0.000000
 0:70      Sequence
 0:70        move second child to first child ( temp 2X3 matrix of float)
 0:70          'var73' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:70          Constant:
+0:70            0.000000
+0:70            0.000000
+0:70            0.000000
+0:70            0.000000
+0:70            0.000000
+0:70            0.000000
 0:71      Sequence
 0:71        move second child to first child ( temp 2X3 matrix of float)
 0:71          'var74' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:71          Constant:
+0:71            0.000000
+0:71            0.000000
+0:71            0.000000
+0:71            0.000000
+0:71            0.000000
+0:71            0.000000
 0:72      Sequence
 0:72        move second child to first child ( temp 2X3 matrix of float)
 0:72          'var76' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:72          Constant:
+0:72            0.000000
+0:72            0.000000
+0:72            0.000000
+0:72            0.000000
+0:72            0.000000
+0:72            0.000000
 0:73      Sequence
 0:73        move second child to first child ( temp 2X3 matrix of float)
 0:73          'var77' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:73          Constant:
+0:73            0.000000
+0:73            0.000000
+0:73            0.000000
+0:73            0.000000
+0:73            0.000000
+0:73            0.000000
 0:74      Sequence
 0:74        move second child to first child ( temp 2X4 matrix of float)
 0:74          'var87' ( temp 2X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:74          Constant:
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
 0:75      Sequence
 0:75        move second child to first child ( temp 2X4 matrix of float)
 0:75          'var90' ( temp 2X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:75          Constant:
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
 0:76      Sequence
 0:76        move second child to first child ( temp 3X2 matrix of float)
 0:76          'var99' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:76          Constant:
+0:76            0.000000
+0:76            0.000000
+0:76            0.000000
+0:76            0.000000
+0:76            0.000000
+0:76            0.000000
 0:77      Sequence
 0:77        move second child to first child ( temp 3X2 matrix of float)
 0:77          'var100' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:77          Constant:
+0:77            0.000000
+0:77            0.000000
+0:77            0.000000
+0:77            0.000000
+0:77            0.000000
+0:77            0.000000
 0:78      Sequence
 0:78        move second child to first child ( temp 3X2 matrix of float)
 0:78          'var101' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:78          Constant:
+0:78            0.000000
+0:78            0.000000
+0:78            0.000000
+0:78            0.000000
+0:78            0.000000
+0:78            0.000000
 0:79      Sequence
 0:79        move second child to first child ( temp 3X2 matrix of float)
 0:79          'var102' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:79          Constant:
+0:79            0.000000
+0:79            0.000000
+0:79            0.000000
+0:79            0.000000
+0:79            0.000000
+0:79            0.000000
 0:80      Sequence
 0:80        move second child to first child ( temp 3X2 matrix of float)
 0:80          'var103' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:80          Constant:
+0:80            0.000000
+0:80            0.000000
+0:80            0.000000
+0:80            0.000000
+0:80            0.000000
+0:80            0.000000
 0:81      Sequence
 0:81        move second child to first child ( temp 3X3 matrix of float)
 0:81          'var113' ( temp 3X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:81          Constant:
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
 0:82      Sequence
 0:82        move second child to first child ( temp 3X3 matrix of float)
 0:82          'var115' ( temp 3X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:82          Constant:
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
 0:83      Sequence
 0:83        move second child to first child ( temp 3X3 matrix of float)
 0:83          'var116' ( temp 3X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:83          Constant:
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
 0:84      Sequence
 0:84        move second child to first child ( temp 3X4 matrix of float)
 0:84          'var129' ( temp 3X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:84          Constant:
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
 0:85      Sequence
 0:85        move second child to first child ( temp 4X2 matrix of float)
 0:85          'var141' ( temp 4X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:85          Constant:
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
 0:86      Sequence
 0:86        move second child to first child ( temp 4X2 matrix of float)
 0:86          'var142' ( temp 4X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:86          Constant:
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
 0:87      Sequence
 0:87        move second child to first child ( temp 4X3 matrix of float)
 0:87          'var155' ( temp 4X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:87          Constant:
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
 0:188      Branch: Return with expression
 0:188        Constant:
 0:188          0.000000
diff --git a/Test/baseResults/hlsl.type.type.conversion.valid.frag.out b/Test/baseResults/hlsl.type.type.conversion.valid.frag.out
index 407caf3..7320074 100644
--- a/Test/baseResults/hlsl.type.type.conversion.valid.frag.out
+++ b/Test/baseResults/hlsl.type.type.conversion.valid.frag.out
@@ -19,9 +19,9 @@
 0:21      Sequence
 0:21        move second child to first child ( temp 2-component vector of float)
 0:21          'var14' ( temp 2-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
+0:21          Constant:
+0:21            0.000000
+0:21            0.000000
 0:22      Sequence
 0:22        move second child to first child ( temp 3-component vector of float)
 0:22          'var26' ( temp 3-component vector of float)
@@ -32,10 +32,10 @@
 0:23      Sequence
 0:23        move second child to first child ( temp 3-component vector of float)
 0:23          'var28' ( temp 3-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:23          Constant:
+0:23            0.000000
+0:23            0.000000
+0:23            0.000000
 0:24      Sequence
 0:24        move second child to first child ( temp 4-component vector of float)
 0:24          'var39' ( temp 4-component vector of float)
@@ -47,19 +47,19 @@
 0:25      Sequence
 0:25        move second child to first child ( temp 4-component vector of float)
 0:25          'var42' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:25          Constant:
+0:25            0.000000
+0:25            0.000000
+0:25            0.000000
+0:25            0.000000
 0:26      Sequence
 0:26        move second child to first child ( temp 4-component vector of float)
 0:26          'var43' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:26          Constant:
+0:26            0.000000
+0:26            0.000000
+0:26            0.000000
+0:26            0.000000
 0:27      Sequence
 0:27        move second child to first child ( temp 2X2 matrix of float)
 0:27          'var52' ( temp 2X2 matrix of float)
@@ -71,19 +71,19 @@
 0:28      Sequence
 0:28        move second child to first child ( temp 2X2 matrix of float)
 0:28          'var55' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:28          Constant:
+0:28            0.000000
+0:28            0.000000
+0:28            0.000000
+0:28            0.000000
 0:29      Sequence
 0:29        move second child to first child ( temp 2X2 matrix of float)
 0:29          'var56' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:29          Constant:
+0:29            0.000000
+0:29            0.000000
+0:29            0.000000
+0:29            0.000000
 0:30      Sequence
 0:30        move second child to first child ( temp 2X3 matrix of float)
 0:30          'var65' ( temp 2X3 matrix of float)
@@ -97,13 +97,13 @@
 0:31      Sequence
 0:31        move second child to first child ( temp 2X3 matrix of float)
 0:31          'var70' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:31          Constant:
+0:31            0.000000
+0:31            0.000000
+0:31            0.000000
+0:31            0.000000
+0:31            0.000000
+0:31            0.000000
 0:32      Sequence
 0:32        move second child to first child ( temp 2X4 matrix of float)
 0:32          'var78' ( temp 2X4 matrix of float)
@@ -119,15 +119,15 @@
 0:33      Sequence
 0:33        move second child to first child ( temp 2X4 matrix of float)
 0:33          'var84' ( temp 2X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:33          Constant:
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
 0:34      Sequence
 0:34        move second child to first child ( temp 3X2 matrix of float)
 0:34          'var91' ( temp 3X2 matrix of float)
@@ -141,13 +141,13 @@
 0:35      Sequence
 0:35        move second child to first child ( temp 3X2 matrix of float)
 0:35          'var98' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:35          Constant:
+0:35            0.000000
+0:35            0.000000
+0:35            0.000000
+0:35            0.000000
+0:35            0.000000
+0:35            0.000000
 0:36      Sequence
 0:36        move second child to first child ( temp 3X3 matrix of float)
 0:36          'var104' ( temp 3X3 matrix of float)
@@ -164,16 +164,16 @@
 0:37      Sequence
 0:37        move second child to first child ( temp 3X3 matrix of float)
 0:37          'var112' ( temp 3X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:37          Constant:
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
 0:38      Sequence
 0:38        move second child to first child ( temp 3X4 matrix of float)
 0:38          'var117' ( temp 3X4 matrix of float)
@@ -193,19 +193,19 @@
 0:39      Sequence
 0:39        move second child to first child ( temp 3X4 matrix of float)
 0:39          'var126' ( temp 3X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:39          Constant:
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
 0:40      Sequence
 0:40        move second child to first child ( temp 4X2 matrix of float)
 0:40          'var130' ( temp 4X2 matrix of float)
@@ -221,15 +221,15 @@
 0:41      Sequence
 0:41        move second child to first child ( temp 4X2 matrix of float)
 0:41          'var140' ( temp 4X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:41          Constant:
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
 0:42      Sequence
 0:42        move second child to first child ( temp 4X3 matrix of float)
 0:42          'var143' ( temp 4X3 matrix of float)
@@ -249,19 +249,19 @@
 0:43      Sequence
 0:43        move second child to first child ( temp 4X3 matrix of float)
 0:43          'var154' ( temp 4X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:43          Constant:
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
 0:44      Sequence
 0:44        move second child to first child ( temp 4X4 matrix of float)
 0:44          'var156' ( temp 4X4 matrix of float)
@@ -285,385 +285,385 @@
 0:45      Sequence
 0:45        move second child to first child ( temp 4X4 matrix of float)
 0:45          'var168' ( temp 4X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:45          Constant:
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
 0:46      Sequence
 0:46        move second child to first child ( temp float)
 0:46          'var1' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:46          Constant:
+0:46            0.000000
 0:47      Sequence
 0:47        move second child to first child ( temp float)
 0:47          'var2' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:47          Constant:
+0:47            0.000000
 0:48      Sequence
 0:48        move second child to first child ( temp float)
 0:48          'var3' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:48          Constant:
+0:48            0.000000
 0:49      Sequence
 0:49        move second child to first child ( temp float)
 0:49          'var4' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:49          Constant:
+0:49            0.000000
 0:50      Sequence
 0:50        move second child to first child ( temp float)
 0:50          'var5' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:50          Constant:
+0:50            0.000000
 0:51      Sequence
 0:51        move second child to first child ( temp float)
 0:51          'var6' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:51          Constant:
+0:51            0.000000
 0:52      Sequence
 0:52        move second child to first child ( temp float)
 0:52          'var7' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:52          Constant:
+0:52            0.000000
 0:53      Sequence
 0:53        move second child to first child ( temp float)
 0:53          'var8' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:53          Constant:
+0:53            0.000000
 0:54      Sequence
 0:54        move second child to first child ( temp float)
 0:54          'var9' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:54          Constant:
+0:54            0.000000
 0:55      Sequence
 0:55        move second child to first child ( temp float)
 0:55          'var10' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:55          Constant:
+0:55            0.000000
 0:56      Sequence
 0:56        move second child to first child ( temp float)
 0:56          'var11' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:56          Constant:
+0:56            0.000000
 0:57      Sequence
 0:57        move second child to first child ( temp float)
 0:57          'var12' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:57          Constant:
+0:57            0.000000
 0:58      Sequence
 0:58        move second child to first child ( temp 2-component vector of float)
 0:58          'var15' ( temp 2-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
+0:58          Constant:
+0:58            0.000000
+0:58            0.000000
 0:59      Sequence
 0:59        move second child to first child ( temp 2-component vector of float)
 0:59          'var16' ( temp 2-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
+0:59          Constant:
+0:59            0.000000
+0:59            0.000000
 0:60      Sequence
 0:60        move second child to first child ( temp 3-component vector of float)
 0:60          'var29' ( temp 3-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:60          Constant:
+0:60            0.000000
+0:60            0.000000
+0:60            0.000000
 0:61      Sequence
 0:61        move second child to first child ( temp 2X2 matrix of float)
 0:61          'var57' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:61          Constant:
+0:61            0.000000
+0:61            0.000000
+0:61            0.000000
+0:61            0.000000
 0:62      Sequence
 0:62        move second child to first child ( temp 2X2 matrix of float)
 0:62          'var58' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:62          Constant:
+0:62            0.000000
+0:62            0.000000
+0:62            0.000000
+0:62            0.000000
 0:63      Sequence
 0:63        move second child to first child ( temp 2X2 matrix of float)
 0:63          'var59' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+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 2X2 matrix of float)
 0:64          'var60' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:64          Constant:
+0:64            0.000000
+0:64            0.000000
+0:64            0.000000
+0:64            0.000000
 0:65      Sequence
 0:65        move second child to first child ( temp 2X2 matrix of float)
 0:65          'var61' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:65          Constant:
+0:65            0.000000
+0:65            0.000000
+0:65            0.000000
+0:65            0.000000
 0:66      Sequence
 0:66        move second child to first child ( temp 2X2 matrix of float)
 0:66          'var62' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:66          Constant:
+0:66            0.000000
+0:66            0.000000
+0:66            0.000000
+0:66            0.000000
 0:67      Sequence
 0:67        move second child to first child ( temp 2X2 matrix of float)
 0:67          'var63' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:67          Constant:
+0:67            0.000000
+0:67            0.000000
+0:67            0.000000
+0:67            0.000000
 0:68      Sequence
 0:68        move second child to first child ( temp 2X2 matrix of float)
 0:68          'var64' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:68          Constant:
+0:68            0.000000
+0:68            0.000000
+0:68            0.000000
+0:68            0.000000
 0:69      Sequence
 0:69        move second child to first child ( temp 2X3 matrix of float)
 0:69          'var71' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:69          Constant:
+0:69            0.000000
+0:69            0.000000
+0:69            0.000000
+0:69            0.000000
+0:69            0.000000
+0:69            0.000000
 0:70      Sequence
 0:70        move second child to first child ( temp 2X3 matrix of float)
 0:70          'var73' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:70          Constant:
+0:70            0.000000
+0:70            0.000000
+0:70            0.000000
+0:70            0.000000
+0:70            0.000000
+0:70            0.000000
 0:71      Sequence
 0:71        move second child to first child ( temp 2X3 matrix of float)
 0:71          'var74' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:71          Constant:
+0:71            0.000000
+0:71            0.000000
+0:71            0.000000
+0:71            0.000000
+0:71            0.000000
+0:71            0.000000
 0:72      Sequence
 0:72        move second child to first child ( temp 2X3 matrix of float)
 0:72          'var76' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:72          Constant:
+0:72            0.000000
+0:72            0.000000
+0:72            0.000000
+0:72            0.000000
+0:72            0.000000
+0:72            0.000000
 0:73      Sequence
 0:73        move second child to first child ( temp 2X3 matrix of float)
 0:73          'var77' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:73          Constant:
+0:73            0.000000
+0:73            0.000000
+0:73            0.000000
+0:73            0.000000
+0:73            0.000000
+0:73            0.000000
 0:74      Sequence
 0:74        move second child to first child ( temp 2X4 matrix of float)
 0:74          'var87' ( temp 2X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:74          Constant:
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
 0:75      Sequence
 0:75        move second child to first child ( temp 2X4 matrix of float)
 0:75          'var90' ( temp 2X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:75          Constant:
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
 0:76      Sequence
 0:76        move second child to first child ( temp 3X2 matrix of float)
 0:76          'var99' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:76          Constant:
+0:76            0.000000
+0:76            0.000000
+0:76            0.000000
+0:76            0.000000
+0:76            0.000000
+0:76            0.000000
 0:77      Sequence
 0:77        move second child to first child ( temp 3X2 matrix of float)
 0:77          'var100' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:77          Constant:
+0:77            0.000000
+0:77            0.000000
+0:77            0.000000
+0:77            0.000000
+0:77            0.000000
+0:77            0.000000
 0:78      Sequence
 0:78        move second child to first child ( temp 3X2 matrix of float)
 0:78          'var101' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:78          Constant:
+0:78            0.000000
+0:78            0.000000
+0:78            0.000000
+0:78            0.000000
+0:78            0.000000
+0:78            0.000000
 0:79      Sequence
 0:79        move second child to first child ( temp 3X2 matrix of float)
 0:79          'var102' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:79          Constant:
+0:79            0.000000
+0:79            0.000000
+0:79            0.000000
+0:79            0.000000
+0:79            0.000000
+0:79            0.000000
 0:80      Sequence
 0:80        move second child to first child ( temp 3X2 matrix of float)
 0:80          'var103' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:80          Constant:
+0:80            0.000000
+0:80            0.000000
+0:80            0.000000
+0:80            0.000000
+0:80            0.000000
+0:80            0.000000
 0:81      Sequence
 0:81        move second child to first child ( temp 3X3 matrix of float)
 0:81          'var113' ( temp 3X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:81          Constant:
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
 0:82      Sequence
 0:82        move second child to first child ( temp 3X3 matrix of float)
 0:82          'var115' ( temp 3X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:82          Constant:
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
 0:83      Sequence
 0:83        move second child to first child ( temp 3X3 matrix of float)
 0:83          'var116' ( temp 3X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:83          Constant:
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
 0:84      Sequence
 0:84        move second child to first child ( temp 3X4 matrix of float)
 0:84          'var129' ( temp 3X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:84          Constant:
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
 0:85      Sequence
 0:85        move second child to first child ( temp 4X2 matrix of float)
 0:85          'var141' ( temp 4X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:85          Constant:
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
 0:86      Sequence
 0:86        move second child to first child ( temp 4X2 matrix of float)
 0:86          'var142' ( temp 4X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:86          Constant:
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
 0:87      Sequence
 0:87        move second child to first child ( temp 4X3 matrix of float)
 0:87          'var155' ( temp 4X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:87          Constant:
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
 0:88      Branch: Return with expression
 0:88        Constant:
 0:88          0.000000
@@ -703,9 +703,9 @@
 0:21      Sequence
 0:21        move second child to first child ( temp 2-component vector of float)
 0:21          'var14' ( temp 2-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
+0:21          Constant:
+0:21            0.000000
+0:21            0.000000
 0:22      Sequence
 0:22        move second child to first child ( temp 3-component vector of float)
 0:22          'var26' ( temp 3-component vector of float)
@@ -716,10 +716,10 @@
 0:23      Sequence
 0:23        move second child to first child ( temp 3-component vector of float)
 0:23          'var28' ( temp 3-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:23          Constant:
+0:23            0.000000
+0:23            0.000000
+0:23            0.000000
 0:24      Sequence
 0:24        move second child to first child ( temp 4-component vector of float)
 0:24          'var39' ( temp 4-component vector of float)
@@ -731,19 +731,19 @@
 0:25      Sequence
 0:25        move second child to first child ( temp 4-component vector of float)
 0:25          'var42' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:25          Constant:
+0:25            0.000000
+0:25            0.000000
+0:25            0.000000
+0:25            0.000000
 0:26      Sequence
 0:26        move second child to first child ( temp 4-component vector of float)
 0:26          'var43' ( temp 4-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:26          Constant:
+0:26            0.000000
+0:26            0.000000
+0:26            0.000000
+0:26            0.000000
 0:27      Sequence
 0:27        move second child to first child ( temp 2X2 matrix of float)
 0:27          'var52' ( temp 2X2 matrix of float)
@@ -755,19 +755,19 @@
 0:28      Sequence
 0:28        move second child to first child ( temp 2X2 matrix of float)
 0:28          'var55' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:28          Constant:
+0:28            0.000000
+0:28            0.000000
+0:28            0.000000
+0:28            0.000000
 0:29      Sequence
 0:29        move second child to first child ( temp 2X2 matrix of float)
 0:29          'var56' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:29          Constant:
+0:29            0.000000
+0:29            0.000000
+0:29            0.000000
+0:29            0.000000
 0:30      Sequence
 0:30        move second child to first child ( temp 2X3 matrix of float)
 0:30          'var65' ( temp 2X3 matrix of float)
@@ -781,13 +781,13 @@
 0:31      Sequence
 0:31        move second child to first child ( temp 2X3 matrix of float)
 0:31          'var70' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:31          Constant:
+0:31            0.000000
+0:31            0.000000
+0:31            0.000000
+0:31            0.000000
+0:31            0.000000
+0:31            0.000000
 0:32      Sequence
 0:32        move second child to first child ( temp 2X4 matrix of float)
 0:32          'var78' ( temp 2X4 matrix of float)
@@ -803,15 +803,15 @@
 0:33      Sequence
 0:33        move second child to first child ( temp 2X4 matrix of float)
 0:33          'var84' ( temp 2X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:33          Constant:
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
+0:33            0.000000
 0:34      Sequence
 0:34        move second child to first child ( temp 3X2 matrix of float)
 0:34          'var91' ( temp 3X2 matrix of float)
@@ -825,13 +825,13 @@
 0:35      Sequence
 0:35        move second child to first child ( temp 3X2 matrix of float)
 0:35          'var98' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:35          Constant:
+0:35            0.000000
+0:35            0.000000
+0:35            0.000000
+0:35            0.000000
+0:35            0.000000
+0:35            0.000000
 0:36      Sequence
 0:36        move second child to first child ( temp 3X3 matrix of float)
 0:36          'var104' ( temp 3X3 matrix of float)
@@ -848,16 +848,16 @@
 0:37      Sequence
 0:37        move second child to first child ( temp 3X3 matrix of float)
 0:37          'var112' ( temp 3X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:37          Constant:
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
+0:37            0.000000
 0:38      Sequence
 0:38        move second child to first child ( temp 3X4 matrix of float)
 0:38          'var117' ( temp 3X4 matrix of float)
@@ -877,19 +877,19 @@
 0:39      Sequence
 0:39        move second child to first child ( temp 3X4 matrix of float)
 0:39          'var126' ( temp 3X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:39          Constant:
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
+0:39            0.000000
 0:40      Sequence
 0:40        move second child to first child ( temp 4X2 matrix of float)
 0:40          'var130' ( temp 4X2 matrix of float)
@@ -905,15 +905,15 @@
 0:41      Sequence
 0:41        move second child to first child ( temp 4X2 matrix of float)
 0:41          'var140' ( temp 4X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:41          Constant:
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
+0:41            0.000000
 0:42      Sequence
 0:42        move second child to first child ( temp 4X3 matrix of float)
 0:42          'var143' ( temp 4X3 matrix of float)
@@ -933,19 +933,19 @@
 0:43      Sequence
 0:43        move second child to first child ( temp 4X3 matrix of float)
 0:43          'var154' ( temp 4X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:43          Constant:
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
+0:43            0.000000
 0:44      Sequence
 0:44        move second child to first child ( temp 4X4 matrix of float)
 0:44          'var156' ( temp 4X4 matrix of float)
@@ -969,385 +969,385 @@
 0:45      Sequence
 0:45        move second child to first child ( temp 4X4 matrix of float)
 0:45          'var168' ( temp 4X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:45          Constant:
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
+0:45            0.000000
 0:46      Sequence
 0:46        move second child to first child ( temp float)
 0:46          'var1' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:46          Constant:
+0:46            0.000000
 0:47      Sequence
 0:47        move second child to first child ( temp float)
 0:47          'var2' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:47          Constant:
+0:47            0.000000
 0:48      Sequence
 0:48        move second child to first child ( temp float)
 0:48          'var3' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:48          Constant:
+0:48            0.000000
 0:49      Sequence
 0:49        move second child to first child ( temp float)
 0:49          'var4' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:49          Constant:
+0:49            0.000000
 0:50      Sequence
 0:50        move second child to first child ( temp float)
 0:50          'var5' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:50          Constant:
+0:50            0.000000
 0:51      Sequence
 0:51        move second child to first child ( temp float)
 0:51          'var6' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:51          Constant:
+0:51            0.000000
 0:52      Sequence
 0:52        move second child to first child ( temp float)
 0:52          'var7' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:52          Constant:
+0:52            0.000000
 0:53      Sequence
 0:53        move second child to first child ( temp float)
 0:53          'var8' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:53          Constant:
+0:53            0.000000
 0:54      Sequence
 0:54        move second child to first child ( temp float)
 0:54          'var9' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:54          Constant:
+0:54            0.000000
 0:55      Sequence
 0:55        move second child to first child ( temp float)
 0:55          'var10' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:55          Constant:
+0:55            0.000000
 0:56      Sequence
 0:56        move second child to first child ( temp float)
 0:56          'var11' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:56          Constant:
+0:56            0.000000
 0:57      Sequence
 0:57        move second child to first child ( temp float)
 0:57          'var12' ( temp float)
-0:?           Constant:
-0:?             0.000000
+0:57          Constant:
+0:57            0.000000
 0:58      Sequence
 0:58        move second child to first child ( temp 2-component vector of float)
 0:58          'var15' ( temp 2-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
+0:58          Constant:
+0:58            0.000000
+0:58            0.000000
 0:59      Sequence
 0:59        move second child to first child ( temp 2-component vector of float)
 0:59          'var16' ( temp 2-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
+0:59          Constant:
+0:59            0.000000
+0:59            0.000000
 0:60      Sequence
 0:60        move second child to first child ( temp 3-component vector of float)
 0:60          'var29' ( temp 3-component vector of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:60          Constant:
+0:60            0.000000
+0:60            0.000000
+0:60            0.000000
 0:61      Sequence
 0:61        move second child to first child ( temp 2X2 matrix of float)
 0:61          'var57' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:61          Constant:
+0:61            0.000000
+0:61            0.000000
+0:61            0.000000
+0:61            0.000000
 0:62      Sequence
 0:62        move second child to first child ( temp 2X2 matrix of float)
 0:62          'var58' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:62          Constant:
+0:62            0.000000
+0:62            0.000000
+0:62            0.000000
+0:62            0.000000
 0:63      Sequence
 0:63        move second child to first child ( temp 2X2 matrix of float)
 0:63          'var59' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+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 2X2 matrix of float)
 0:64          'var60' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:64          Constant:
+0:64            0.000000
+0:64            0.000000
+0:64            0.000000
+0:64            0.000000
 0:65      Sequence
 0:65        move second child to first child ( temp 2X2 matrix of float)
 0:65          'var61' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:65          Constant:
+0:65            0.000000
+0:65            0.000000
+0:65            0.000000
+0:65            0.000000
 0:66      Sequence
 0:66        move second child to first child ( temp 2X2 matrix of float)
 0:66          'var62' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:66          Constant:
+0:66            0.000000
+0:66            0.000000
+0:66            0.000000
+0:66            0.000000
 0:67      Sequence
 0:67        move second child to first child ( temp 2X2 matrix of float)
 0:67          'var63' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:67          Constant:
+0:67            0.000000
+0:67            0.000000
+0:67            0.000000
+0:67            0.000000
 0:68      Sequence
 0:68        move second child to first child ( temp 2X2 matrix of float)
 0:68          'var64' ( temp 2X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:68          Constant:
+0:68            0.000000
+0:68            0.000000
+0:68            0.000000
+0:68            0.000000
 0:69      Sequence
 0:69        move second child to first child ( temp 2X3 matrix of float)
 0:69          'var71' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:69          Constant:
+0:69            0.000000
+0:69            0.000000
+0:69            0.000000
+0:69            0.000000
+0:69            0.000000
+0:69            0.000000
 0:70      Sequence
 0:70        move second child to first child ( temp 2X3 matrix of float)
 0:70          'var73' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:70          Constant:
+0:70            0.000000
+0:70            0.000000
+0:70            0.000000
+0:70            0.000000
+0:70            0.000000
+0:70            0.000000
 0:71      Sequence
 0:71        move second child to first child ( temp 2X3 matrix of float)
 0:71          'var74' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:71          Constant:
+0:71            0.000000
+0:71            0.000000
+0:71            0.000000
+0:71            0.000000
+0:71            0.000000
+0:71            0.000000
 0:72      Sequence
 0:72        move second child to first child ( temp 2X3 matrix of float)
 0:72          'var76' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:72          Constant:
+0:72            0.000000
+0:72            0.000000
+0:72            0.000000
+0:72            0.000000
+0:72            0.000000
+0:72            0.000000
 0:73      Sequence
 0:73        move second child to first child ( temp 2X3 matrix of float)
 0:73          'var77' ( temp 2X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:73          Constant:
+0:73            0.000000
+0:73            0.000000
+0:73            0.000000
+0:73            0.000000
+0:73            0.000000
+0:73            0.000000
 0:74      Sequence
 0:74        move second child to first child ( temp 2X4 matrix of float)
 0:74          'var87' ( temp 2X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:74          Constant:
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
+0:74            0.000000
 0:75      Sequence
 0:75        move second child to first child ( temp 2X4 matrix of float)
 0:75          'var90' ( temp 2X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:75          Constant:
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
+0:75            0.000000
 0:76      Sequence
 0:76        move second child to first child ( temp 3X2 matrix of float)
 0:76          'var99' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:76          Constant:
+0:76            0.000000
+0:76            0.000000
+0:76            0.000000
+0:76            0.000000
+0:76            0.000000
+0:76            0.000000
 0:77      Sequence
 0:77        move second child to first child ( temp 3X2 matrix of float)
 0:77          'var100' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:77          Constant:
+0:77            0.000000
+0:77            0.000000
+0:77            0.000000
+0:77            0.000000
+0:77            0.000000
+0:77            0.000000
 0:78      Sequence
 0:78        move second child to first child ( temp 3X2 matrix of float)
 0:78          'var101' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:78          Constant:
+0:78            0.000000
+0:78            0.000000
+0:78            0.000000
+0:78            0.000000
+0:78            0.000000
+0:78            0.000000
 0:79      Sequence
 0:79        move second child to first child ( temp 3X2 matrix of float)
 0:79          'var102' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:79          Constant:
+0:79            0.000000
+0:79            0.000000
+0:79            0.000000
+0:79            0.000000
+0:79            0.000000
+0:79            0.000000
 0:80      Sequence
 0:80        move second child to first child ( temp 3X2 matrix of float)
 0:80          'var103' ( temp 3X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:80          Constant:
+0:80            0.000000
+0:80            0.000000
+0:80            0.000000
+0:80            0.000000
+0:80            0.000000
+0:80            0.000000
 0:81      Sequence
 0:81        move second child to first child ( temp 3X3 matrix of float)
 0:81          'var113' ( temp 3X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:81          Constant:
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
+0:81            0.000000
 0:82      Sequence
 0:82        move second child to first child ( temp 3X3 matrix of float)
 0:82          'var115' ( temp 3X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:82          Constant:
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
+0:82            0.000000
 0:83      Sequence
 0:83        move second child to first child ( temp 3X3 matrix of float)
 0:83          'var116' ( temp 3X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:83          Constant:
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
+0:83            0.000000
 0:84      Sequence
 0:84        move second child to first child ( temp 3X4 matrix of float)
 0:84          'var129' ( temp 3X4 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:84          Constant:
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
+0:84            0.000000
 0:85      Sequence
 0:85        move second child to first child ( temp 4X2 matrix of float)
 0:85          'var141' ( temp 4X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:85          Constant:
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
+0:85            0.000000
 0:86      Sequence
 0:86        move second child to first child ( temp 4X2 matrix of float)
 0:86          'var142' ( temp 4X2 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:86          Constant:
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
+0:86            0.000000
 0:87      Sequence
 0:87        move second child to first child ( temp 4X3 matrix of float)
 0:87          'var155' ( temp 4X3 matrix of float)
-0:?           Constant:
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
-0:?             0.000000
+0:87          Constant:
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
+0:87            0.000000
 0:88      Branch: Return with expression
 0:88        Constant:
 0:88          0.000000
diff --git a/Test/baseResults/hlsl.wavebroadcast.comp.out b/Test/baseResults/hlsl.wavebroadcast.comp.out
index 573195d..01bc953 100644
--- a/Test/baseResults/hlsl.wavebroadcast.comp.out
+++ b/Test/baseResults/hlsl.wavebroadcast.comp.out
@@ -2299,7 +2299,7 @@
 
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 359
+// Id's are bound by 393
 
                               Capability Shader
                               Capability Float64
@@ -2308,7 +2308,7 @@
                               Capability GroupNonUniformShuffle
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint GLCompute 4  "CSMain" 354
+                              EntryPoint GLCompute 4  "CSMain" 388
                               ExecutionMode 4 LocalSize 32 16 1
                               Source HLSL 500
                               Name 4  "CSMain"
@@ -2322,9 +2322,9 @@
                               Name 22  "data"
                               MemberName 22(data) 0  "@data"
                               Name 24  "data"
-                              Name 352  "dti"
-                              Name 354  "dti"
-                              Name 356  "param"
+                              Name 386  "dti"
+                              Name 388  "dti"
+                              Name 390  "param"
                               MemberDecorate 20(Types) 0 Offset 0
                               MemberDecorate 20(Types) 1 Offset 16
                               MemberDecorate 20(Types) 2 Offset 32
@@ -2334,7 +2334,7 @@
                               Decorate 22(data) BufferBlock
                               Decorate 24(data) DescriptorSet 0
                               Decorate 24(data) Binding 0
-                              Decorate 354(dti) BuiltIn GlobalInvocationId
+                              Decorate 388(dti) BuiltIn GlobalInvocationId
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -2361,32 +2361,34 @@
               36:      6(int) Constant 3
               43:             TypePointer Uniform 6(int)
               52:             TypeVector 6(int) 2
-              73:     14(int) Constant 1
-              76:             TypePointer Uniform 15(ivec4)
-              85:             TypePointer Uniform 14(int)
-              94:             TypeVector 14(int) 2
-             106:             TypeVector 14(int) 3
-             116:     14(int) Constant 2
-             119:             TypePointer Uniform 17(fvec4)
-             128:             TypePointer Uniform 16(float)
-             137:             TypeVector 16(float) 2
-             149:             TypeVector 16(float) 3
-             159:     14(int) Constant 3
-             162:             TypePointer Uniform 19(f64vec4)
-             171:             TypePointer Uniform 18(float64_t)
-             180:             TypeVector 18(float64_t) 2
-             192:             TypeVector 18(float64_t) 3
-             353:             TypePointer Input 7(ivec3)
-        354(dti):    353(ptr) Variable Input
+              59:      6(int) Constant 1
+              74:      6(int) Constant 2
+              79:     14(int) Constant 1
+              82:             TypePointer Uniform 15(ivec4)
+              91:             TypePointer Uniform 14(int)
+             100:             TypeVector 14(int) 2
+             113:             TypeVector 14(int) 3
+             126:     14(int) Constant 2
+             129:             TypePointer Uniform 17(fvec4)
+             138:             TypePointer Uniform 16(float)
+             147:             TypeVector 16(float) 2
+             160:             TypeVector 16(float) 3
+             173:     14(int) Constant 3
+             176:             TypePointer Uniform 19(f64vec4)
+             185:             TypePointer Uniform 18(float64_t)
+             194:             TypeVector 18(float64_t) 2
+             207:             TypeVector 18(float64_t) 3
+             387:             TypePointer Input 7(ivec3)
+        388(dti):    387(ptr) Variable Input
        4(CSMain):           2 Function None 3
                5:             Label
-        352(dti):      8(ptr) Variable Function
-      356(param):      8(ptr) Variable Function
-             355:    7(ivec3) Load 354(dti)
-                              Store 352(dti) 355
-             357:    7(ivec3) Load 352(dti)
-                              Store 356(param) 357
-             358:           2 FunctionCall 11(@CSMain(vu3;) 356(param)
+        386(dti):      8(ptr) Variable Function
+      390(param):      8(ptr) Variable Function
+             389:    7(ivec3) Load 388(dti)
+                              Store 386(dti) 389
+             391:    7(ivec3) Load 386(dti)
+                              Store 390(param) 391
+             392:           2 FunctionCall 11(@CSMain(vu3;) 390(param)
                               Return
                               FunctionEnd
 11(@CSMain(vu3;):           2 Function None 9
@@ -2418,315 +2420,371 @@
               54:   13(ivec4) Load 53
               55:   52(ivec2) VectorShuffle 54 54 0 1
               56:   52(ivec2) GroupNonUniformShuffle 36 55 35
-              57:     32(ptr) AccessChain 24(data) 25 49 25
-              58:   13(ivec4) Load 57
-              59:   13(ivec4) VectorShuffle 58 56 4 5 2 3
-                              Store 57 59
-              60:     27(ptr) AccessChain 10(dti) 26
-              61:      6(int) Load 60
+              57:     43(ptr) AccessChain 24(data) 25 49 25 26
+              58:      6(int) CompositeExtract 56 0
+                              Store 57 58
+              60:     43(ptr) AccessChain 24(data) 25 49 25 59
+              61:      6(int) CompositeExtract 56 1
+                              Store 60 61
               62:     27(ptr) AccessChain 10(dti) 26
               63:      6(int) Load 62
-              64:     32(ptr) AccessChain 24(data) 25 63 25
-              65:   13(ivec4) Load 64
-              66:    7(ivec3) VectorShuffle 65 65 0 1 2
-              67:    7(ivec3) GroupNonUniformShuffle 36 66 35
-              68:     32(ptr) AccessChain 24(data) 25 61 25
-              69:   13(ivec4) Load 68
-              70:   13(ivec4) VectorShuffle 69 67 4 5 6 3
-                              Store 68 70
-              71:     27(ptr) AccessChain 10(dti) 26
-              72:      6(int) Load 71
-              74:     27(ptr) AccessChain 10(dti) 26
-              75:      6(int) Load 74
-              77:     76(ptr) AccessChain 24(data) 25 75 73
-              78:   15(ivec4) Load 77
-              79:   15(ivec4) GroupNonUniformShuffle 36 78 35
-              80:     76(ptr) AccessChain 24(data) 25 72 73
-                              Store 80 79
-              81:     27(ptr) AccessChain 10(dti) 26
-              82:      6(int) Load 81
-              83:     27(ptr) AccessChain 10(dti) 26
-              84:      6(int) Load 83
-              86:     85(ptr) AccessChain 24(data) 25 84 73 26
-              87:     14(int) Load 86
-              88:     14(int) GroupNonUniformShuffle 36 87 35
-              89:     85(ptr) AccessChain 24(data) 25 82 73 26
-                              Store 89 88
-              90:     27(ptr) AccessChain 10(dti) 26
-              91:      6(int) Load 90
-              92:     27(ptr) AccessChain 10(dti) 26
-              93:      6(int) Load 92
-              95:     76(ptr) AccessChain 24(data) 25 93 73
-              96:   15(ivec4) Load 95
-              97:   94(ivec2) VectorShuffle 96 96 0 1
-              98:   94(ivec2) GroupNonUniformShuffle 36 97 35
-              99:     76(ptr) AccessChain 24(data) 25 91 73
-             100:   15(ivec4) Load 99
-             101:   15(ivec4) VectorShuffle 100 98 4 5 2 3
-                              Store 99 101
-             102:     27(ptr) AccessChain 10(dti) 26
-             103:      6(int) Load 102
-             104:     27(ptr) AccessChain 10(dti) 26
-             105:      6(int) Load 104
-             107:     76(ptr) AccessChain 24(data) 25 105 73
-             108:   15(ivec4) Load 107
-             109:  106(ivec3) VectorShuffle 108 108 0 1 2
-             110:  106(ivec3) GroupNonUniformShuffle 36 109 35
-             111:     76(ptr) AccessChain 24(data) 25 103 73
-             112:   15(ivec4) Load 111
-             113:   15(ivec4) VectorShuffle 112 110 4 5 6 3
-                              Store 111 113
-             114:     27(ptr) AccessChain 10(dti) 26
-             115:      6(int) Load 114
-             117:     27(ptr) AccessChain 10(dti) 26
-             118:      6(int) Load 117
-             120:    119(ptr) AccessChain 24(data) 25 118 116
-             121:   17(fvec4) Load 120
-             122:   17(fvec4) GroupNonUniformShuffle 36 121 35
-             123:    119(ptr) AccessChain 24(data) 25 115 116
-                              Store 123 122
+              64:     27(ptr) AccessChain 10(dti) 26
+              65:      6(int) Load 64
+              66:     32(ptr) AccessChain 24(data) 25 65 25
+              67:   13(ivec4) Load 66
+              68:    7(ivec3) VectorShuffle 67 67 0 1 2
+              69:    7(ivec3) GroupNonUniformShuffle 36 68 35
+              70:     43(ptr) AccessChain 24(data) 25 63 25 26
+              71:      6(int) CompositeExtract 69 0
+                              Store 70 71
+              72:     43(ptr) AccessChain 24(data) 25 63 25 59
+              73:      6(int) CompositeExtract 69 1
+                              Store 72 73
+              75:     43(ptr) AccessChain 24(data) 25 63 25 74
+              76:      6(int) CompositeExtract 69 2
+                              Store 75 76
+              77:     27(ptr) AccessChain 10(dti) 26
+              78:      6(int) Load 77
+              80:     27(ptr) AccessChain 10(dti) 26
+              81:      6(int) Load 80
+              83:     82(ptr) AccessChain 24(data) 25 81 79
+              84:   15(ivec4) Load 83
+              85:   15(ivec4) GroupNonUniformShuffle 36 84 35
+              86:     82(ptr) AccessChain 24(data) 25 78 79
+                              Store 86 85
+              87:     27(ptr) AccessChain 10(dti) 26
+              88:      6(int) Load 87
+              89:     27(ptr) AccessChain 10(dti) 26
+              90:      6(int) Load 89
+              92:     91(ptr) AccessChain 24(data) 25 90 79 26
+              93:     14(int) Load 92
+              94:     14(int) GroupNonUniformShuffle 36 93 35
+              95:     91(ptr) AccessChain 24(data) 25 88 79 26
+                              Store 95 94
+              96:     27(ptr) AccessChain 10(dti) 26
+              97:      6(int) Load 96
+              98:     27(ptr) AccessChain 10(dti) 26
+              99:      6(int) Load 98
+             101:     82(ptr) AccessChain 24(data) 25 99 79
+             102:   15(ivec4) Load 101
+             103:  100(ivec2) VectorShuffle 102 102 0 1
+             104:  100(ivec2) GroupNonUniformShuffle 36 103 35
+             105:     91(ptr) AccessChain 24(data) 25 97 79 26
+             106:     14(int) CompositeExtract 104 0
+                              Store 105 106
+             107:     91(ptr) AccessChain 24(data) 25 97 79 59
+             108:     14(int) CompositeExtract 104 1
+                              Store 107 108
+             109:     27(ptr) AccessChain 10(dti) 26
+             110:      6(int) Load 109
+             111:     27(ptr) AccessChain 10(dti) 26
+             112:      6(int) Load 111
+             114:     82(ptr) AccessChain 24(data) 25 112 79
+             115:   15(ivec4) Load 114
+             116:  113(ivec3) VectorShuffle 115 115 0 1 2
+             117:  113(ivec3) GroupNonUniformShuffle 36 116 35
+             118:     91(ptr) AccessChain 24(data) 25 110 79 26
+             119:     14(int) CompositeExtract 117 0
+                              Store 118 119
+             120:     91(ptr) AccessChain 24(data) 25 110 79 59
+             121:     14(int) CompositeExtract 117 1
+                              Store 120 121
+             122:     91(ptr) AccessChain 24(data) 25 110 79 74
+             123:     14(int) CompositeExtract 117 2
+                              Store 122 123
              124:     27(ptr) AccessChain 10(dti) 26
              125:      6(int) Load 124
-             126:     27(ptr) AccessChain 10(dti) 26
-             127:      6(int) Load 126
-             129:    128(ptr) AccessChain 24(data) 25 127 116 26
-             130:   16(float) Load 129
-             131:   16(float) GroupNonUniformShuffle 36 130 35
-             132:    128(ptr) AccessChain 24(data) 25 125 116 26
-                              Store 132 131
-             133:     27(ptr) AccessChain 10(dti) 26
-             134:      6(int) Load 133
-             135:     27(ptr) AccessChain 10(dti) 26
-             136:      6(int) Load 135
-             138:    119(ptr) AccessChain 24(data) 25 136 116
-             139:   17(fvec4) Load 138
-             140:  137(fvec2) VectorShuffle 139 139 0 1
-             141:  137(fvec2) GroupNonUniformShuffle 36 140 35
-             142:    119(ptr) AccessChain 24(data) 25 134 116
-             143:   17(fvec4) Load 142
-             144:   17(fvec4) VectorShuffle 143 141 4 5 2 3
-                              Store 142 144
+             127:     27(ptr) AccessChain 10(dti) 26
+             128:      6(int) Load 127
+             130:    129(ptr) AccessChain 24(data) 25 128 126
+             131:   17(fvec4) Load 130
+             132:   17(fvec4) GroupNonUniformShuffle 36 131 35
+             133:    129(ptr) AccessChain 24(data) 25 125 126
+                              Store 133 132
+             134:     27(ptr) AccessChain 10(dti) 26
+             135:      6(int) Load 134
+             136:     27(ptr) AccessChain 10(dti) 26
+             137:      6(int) Load 136
+             139:    138(ptr) AccessChain 24(data) 25 137 126 26
+             140:   16(float) Load 139
+             141:   16(float) GroupNonUniformShuffle 36 140 35
+             142:    138(ptr) AccessChain 24(data) 25 135 126 26
+                              Store 142 141
+             143:     27(ptr) AccessChain 10(dti) 26
+             144:      6(int) Load 143
              145:     27(ptr) AccessChain 10(dti) 26
              146:      6(int) Load 145
-             147:     27(ptr) AccessChain 10(dti) 26
-             148:      6(int) Load 147
-             150:    119(ptr) AccessChain 24(data) 25 148 116
-             151:   17(fvec4) Load 150
-             152:  149(fvec3) VectorShuffle 151 151 0 1 2
-             153:  149(fvec3) GroupNonUniformShuffle 36 152 35
-             154:    119(ptr) AccessChain 24(data) 25 146 116
-             155:   17(fvec4) Load 154
-             156:   17(fvec4) VectorShuffle 155 153 4 5 6 3
-                              Store 154 156
-             157:     27(ptr) AccessChain 10(dti) 26
-             158:      6(int) Load 157
-             160:     27(ptr) AccessChain 10(dti) 26
-             161:      6(int) Load 160
-             163:    162(ptr) AccessChain 24(data) 25 161 159
-             164: 19(f64vec4) Load 163
-             165: 19(f64vec4) GroupNonUniformBroadcastFirst 36 164
-             166:    162(ptr) AccessChain 24(data) 25 158 159
-                              Store 166 165
-             167:     27(ptr) AccessChain 10(dti) 26
-             168:      6(int) Load 167
-             169:     27(ptr) AccessChain 10(dti) 26
-             170:      6(int) Load 169
-             172:    171(ptr) AccessChain 24(data) 25 170 159 26
-             173:18(float64_t) Load 172
-             174:18(float64_t) GroupNonUniformBroadcastFirst 36 173
-             175:    171(ptr) AccessChain 24(data) 25 168 159 26
-                              Store 175 174
-             176:     27(ptr) AccessChain 10(dti) 26
-             177:      6(int) Load 176
-             178:     27(ptr) AccessChain 10(dti) 26
-             179:      6(int) Load 178
-             181:    162(ptr) AccessChain 24(data) 25 179 159
-             182: 19(f64vec4) Load 181
-             183:180(f64vec2) VectorShuffle 182 182 0 1
-             184:180(f64vec2) GroupNonUniformBroadcastFirst 36 183
-             185:    162(ptr) AccessChain 24(data) 25 177 159
-             186: 19(f64vec4) Load 185
-             187: 19(f64vec4) VectorShuffle 186 184 4 5 2 3
-                              Store 185 187
-             188:     27(ptr) AccessChain 10(dti) 26
-             189:      6(int) Load 188
+             148:    129(ptr) AccessChain 24(data) 25 146 126
+             149:   17(fvec4) Load 148
+             150:  147(fvec2) VectorShuffle 149 149 0 1
+             151:  147(fvec2) GroupNonUniformShuffle 36 150 35
+             152:    138(ptr) AccessChain 24(data) 25 144 126 26
+             153:   16(float) CompositeExtract 151 0
+                              Store 152 153
+             154:    138(ptr) AccessChain 24(data) 25 144 126 59
+             155:   16(float) CompositeExtract 151 1
+                              Store 154 155
+             156:     27(ptr) AccessChain 10(dti) 26
+             157:      6(int) Load 156
+             158:     27(ptr) AccessChain 10(dti) 26
+             159:      6(int) Load 158
+             161:    129(ptr) AccessChain 24(data) 25 159 126
+             162:   17(fvec4) Load 161
+             163:  160(fvec3) VectorShuffle 162 162 0 1 2
+             164:  160(fvec3) GroupNonUniformShuffle 36 163 35
+             165:    138(ptr) AccessChain 24(data) 25 157 126 26
+             166:   16(float) CompositeExtract 164 0
+                              Store 165 166
+             167:    138(ptr) AccessChain 24(data) 25 157 126 59
+             168:   16(float) CompositeExtract 164 1
+                              Store 167 168
+             169:    138(ptr) AccessChain 24(data) 25 157 126 74
+             170:   16(float) CompositeExtract 164 2
+                              Store 169 170
+             171:     27(ptr) AccessChain 10(dti) 26
+             172:      6(int) Load 171
+             174:     27(ptr) AccessChain 10(dti) 26
+             175:      6(int) Load 174
+             177:    176(ptr) AccessChain 24(data) 25 175 173
+             178: 19(f64vec4) Load 177
+             179: 19(f64vec4) GroupNonUniformBroadcastFirst 36 178
+             180:    176(ptr) AccessChain 24(data) 25 172 173
+                              Store 180 179
+             181:     27(ptr) AccessChain 10(dti) 26
+             182:      6(int) Load 181
+             183:     27(ptr) AccessChain 10(dti) 26
+             184:      6(int) Load 183
+             186:    185(ptr) AccessChain 24(data) 25 184 173 26
+             187:18(float64_t) Load 186
+             188:18(float64_t) GroupNonUniformBroadcastFirst 36 187
+             189:    185(ptr) AccessChain 24(data) 25 182 173 26
+                              Store 189 188
              190:     27(ptr) AccessChain 10(dti) 26
              191:      6(int) Load 190
-             193:    162(ptr) AccessChain 24(data) 25 191 159
-             194: 19(f64vec4) Load 193
-             195:192(f64vec3) VectorShuffle 194 194 0 1 2
-             196:192(f64vec3) GroupNonUniformBroadcastFirst 36 195
-             197:    162(ptr) AccessChain 24(data) 25 189 159
-             198: 19(f64vec4) Load 197
-             199: 19(f64vec4) VectorShuffle 198 196 4 5 6 3
-                              Store 197 199
-             200:     27(ptr) AccessChain 10(dti) 26
-             201:      6(int) Load 200
-             202:     27(ptr) AccessChain 10(dti) 26
-             203:      6(int) Load 202
-             204:     32(ptr) AccessChain 24(data) 25 203 25
-             205:   13(ivec4) Load 204
-             206:   13(ivec4) GroupNonUniformBroadcastFirst 36 205
-             207:     32(ptr) AccessChain 24(data) 25 201 25
-                              Store 207 206
-             208:     27(ptr) AccessChain 10(dti) 26
-             209:      6(int) Load 208
-             210:     27(ptr) AccessChain 10(dti) 26
-             211:      6(int) Load 210
-             212:     43(ptr) AccessChain 24(data) 25 211 25 26
-             213:      6(int) Load 212
-             214:      6(int) GroupNonUniformBroadcastFirst 36 213
-             215:     43(ptr) AccessChain 24(data) 25 209 25 26
-                              Store 215 214
-             216:     27(ptr) AccessChain 10(dti) 26
-             217:      6(int) Load 216
+             192:     27(ptr) AccessChain 10(dti) 26
+             193:      6(int) Load 192
+             195:    176(ptr) AccessChain 24(data) 25 193 173
+             196: 19(f64vec4) Load 195
+             197:194(f64vec2) VectorShuffle 196 196 0 1
+             198:194(f64vec2) GroupNonUniformBroadcastFirst 36 197
+             199:    185(ptr) AccessChain 24(data) 25 191 173 26
+             200:18(float64_t) CompositeExtract 198 0
+                              Store 199 200
+             201:    185(ptr) AccessChain 24(data) 25 191 173 59
+             202:18(float64_t) CompositeExtract 198 1
+                              Store 201 202
+             203:     27(ptr) AccessChain 10(dti) 26
+             204:      6(int) Load 203
+             205:     27(ptr) AccessChain 10(dti) 26
+             206:      6(int) Load 205
+             208:    176(ptr) AccessChain 24(data) 25 206 173
+             209: 19(f64vec4) Load 208
+             210:207(f64vec3) VectorShuffle 209 209 0 1 2
+             211:207(f64vec3) GroupNonUniformBroadcastFirst 36 210
+             212:    185(ptr) AccessChain 24(data) 25 204 173 26
+             213:18(float64_t) CompositeExtract 211 0
+                              Store 212 213
+             214:    185(ptr) AccessChain 24(data) 25 204 173 59
+             215:18(float64_t) CompositeExtract 211 1
+                              Store 214 215
+             216:    185(ptr) AccessChain 24(data) 25 204 173 74
+             217:18(float64_t) CompositeExtract 211 2
+                              Store 216 217
              218:     27(ptr) AccessChain 10(dti) 26
              219:      6(int) Load 218
-             220:     32(ptr) AccessChain 24(data) 25 219 25
-             221:   13(ivec4) Load 220
-             222:   52(ivec2) VectorShuffle 221 221 0 1
-             223:   52(ivec2) GroupNonUniformBroadcastFirst 36 222
-             224:     32(ptr) AccessChain 24(data) 25 217 25
-             225:   13(ivec4) Load 224
-             226:   13(ivec4) VectorShuffle 225 223 4 5 2 3
-                              Store 224 226
-             227:     27(ptr) AccessChain 10(dti) 26
-             228:      6(int) Load 227
-             229:     27(ptr) AccessChain 10(dti) 26
-             230:      6(int) Load 229
-             231:     32(ptr) AccessChain 24(data) 25 230 25
-             232:   13(ivec4) Load 231
-             233:    7(ivec3) VectorShuffle 232 232 0 1 2
-             234:    7(ivec3) GroupNonUniformBroadcastFirst 36 233
-             235:     32(ptr) AccessChain 24(data) 25 228 25
-             236:   13(ivec4) Load 235
-             237:   13(ivec4) VectorShuffle 236 234 4 5 6 3
-                              Store 235 237
-             238:     27(ptr) AccessChain 10(dti) 26
-             239:      6(int) Load 238
-             240:     27(ptr) AccessChain 10(dti) 26
-             241:      6(int) Load 240
-             242:     76(ptr) AccessChain 24(data) 25 241 73
-             243:   15(ivec4) Load 242
-             244:   15(ivec4) GroupNonUniformBroadcastFirst 36 243
-             245:     76(ptr) AccessChain 24(data) 25 239 73
-                              Store 245 244
+             220:     27(ptr) AccessChain 10(dti) 26
+             221:      6(int) Load 220
+             222:     32(ptr) AccessChain 24(data) 25 221 25
+             223:   13(ivec4) Load 222
+             224:   13(ivec4) GroupNonUniformBroadcastFirst 36 223
+             225:     32(ptr) AccessChain 24(data) 25 219 25
+                              Store 225 224
+             226:     27(ptr) AccessChain 10(dti) 26
+             227:      6(int) Load 226
+             228:     27(ptr) AccessChain 10(dti) 26
+             229:      6(int) Load 228
+             230:     43(ptr) AccessChain 24(data) 25 229 25 26
+             231:      6(int) Load 230
+             232:      6(int) GroupNonUniformBroadcastFirst 36 231
+             233:     43(ptr) AccessChain 24(data) 25 227 25 26
+                              Store 233 232
+             234:     27(ptr) AccessChain 10(dti) 26
+             235:      6(int) Load 234
+             236:     27(ptr) AccessChain 10(dti) 26
+             237:      6(int) Load 236
+             238:     32(ptr) AccessChain 24(data) 25 237 25
+             239:   13(ivec4) Load 238
+             240:   52(ivec2) VectorShuffle 239 239 0 1
+             241:   52(ivec2) GroupNonUniformBroadcastFirst 36 240
+             242:     43(ptr) AccessChain 24(data) 25 235 25 26
+             243:      6(int) CompositeExtract 241 0
+                              Store 242 243
+             244:     43(ptr) AccessChain 24(data) 25 235 25 59
+             245:      6(int) CompositeExtract 241 1
+                              Store 244 245
              246:     27(ptr) AccessChain 10(dti) 26
              247:      6(int) Load 246
              248:     27(ptr) AccessChain 10(dti) 26
              249:      6(int) Load 248
-             250:     85(ptr) AccessChain 24(data) 25 249 73 26
-             251:     14(int) Load 250
-             252:     14(int) GroupNonUniformBroadcastFirst 36 251
-             253:     85(ptr) AccessChain 24(data) 25 247 73 26
-                              Store 253 252
-             254:     27(ptr) AccessChain 10(dti) 26
-             255:      6(int) Load 254
-             256:     27(ptr) AccessChain 10(dti) 26
-             257:      6(int) Load 256
-             258:     76(ptr) AccessChain 24(data) 25 257 73
-             259:   15(ivec4) Load 258
-             260:   94(ivec2) VectorShuffle 259 259 0 1
-             261:   94(ivec2) GroupNonUniformBroadcastFirst 36 260
-             262:     76(ptr) AccessChain 24(data) 25 255 73
-             263:   15(ivec4) Load 262
-             264:   15(ivec4) VectorShuffle 263 261 4 5 2 3
-                              Store 262 264
-             265:     27(ptr) AccessChain 10(dti) 26
-             266:      6(int) Load 265
-             267:     27(ptr) AccessChain 10(dti) 26
-             268:      6(int) Load 267
-             269:     76(ptr) AccessChain 24(data) 25 268 73
-             270:   15(ivec4) Load 269
-             271:  106(ivec3) VectorShuffle 270 270 0 1 2
-             272:  106(ivec3) GroupNonUniformBroadcastFirst 36 271
-             273:     76(ptr) AccessChain 24(data) 25 266 73
-             274:   15(ivec4) Load 273
-             275:   15(ivec4) VectorShuffle 274 272 4 5 6 3
-                              Store 273 275
+             250:     32(ptr) AccessChain 24(data) 25 249 25
+             251:   13(ivec4) Load 250
+             252:    7(ivec3) VectorShuffle 251 251 0 1 2
+             253:    7(ivec3) GroupNonUniformBroadcastFirst 36 252
+             254:     43(ptr) AccessChain 24(data) 25 247 25 26
+             255:      6(int) CompositeExtract 253 0
+                              Store 254 255
+             256:     43(ptr) AccessChain 24(data) 25 247 25 59
+             257:      6(int) CompositeExtract 253 1
+                              Store 256 257
+             258:     43(ptr) AccessChain 24(data) 25 247 25 74
+             259:      6(int) CompositeExtract 253 2
+                              Store 258 259
+             260:     27(ptr) AccessChain 10(dti) 26
+             261:      6(int) Load 260
+             262:     27(ptr) AccessChain 10(dti) 26
+             263:      6(int) Load 262
+             264:     82(ptr) AccessChain 24(data) 25 263 79
+             265:   15(ivec4) Load 264
+             266:   15(ivec4) GroupNonUniformBroadcastFirst 36 265
+             267:     82(ptr) AccessChain 24(data) 25 261 79
+                              Store 267 266
+             268:     27(ptr) AccessChain 10(dti) 26
+             269:      6(int) Load 268
+             270:     27(ptr) AccessChain 10(dti) 26
+             271:      6(int) Load 270
+             272:     91(ptr) AccessChain 24(data) 25 271 79 26
+             273:     14(int) Load 272
+             274:     14(int) GroupNonUniformBroadcastFirst 36 273
+             275:     91(ptr) AccessChain 24(data) 25 269 79 26
+                              Store 275 274
              276:     27(ptr) AccessChain 10(dti) 26
              277:      6(int) Load 276
              278:     27(ptr) AccessChain 10(dti) 26
              279:      6(int) Load 278
-             280:    119(ptr) AccessChain 24(data) 25 279 116
-             281:   17(fvec4) Load 280
-             282:   17(fvec4) GroupNonUniformBroadcastFirst 36 281
-             283:    119(ptr) AccessChain 24(data) 25 277 116
-                              Store 283 282
-             284:     27(ptr) AccessChain 10(dti) 26
-             285:      6(int) Load 284
-             286:     27(ptr) AccessChain 10(dti) 26
-             287:      6(int) Load 286
-             288:    128(ptr) AccessChain 24(data) 25 287 116 26
-             289:   16(float) Load 288
-             290:   16(float) GroupNonUniformBroadcastFirst 36 289
-             291:    128(ptr) AccessChain 24(data) 25 285 116 26
-                              Store 291 290
-             292:     27(ptr) AccessChain 10(dti) 26
-             293:      6(int) Load 292
-             294:     27(ptr) AccessChain 10(dti) 26
-             295:      6(int) Load 294
-             296:    119(ptr) AccessChain 24(data) 25 295 116
-             297:   17(fvec4) Load 296
-             298:  137(fvec2) VectorShuffle 297 297 0 1
-             299:  137(fvec2) GroupNonUniformBroadcastFirst 36 298
-             300:    119(ptr) AccessChain 24(data) 25 293 116
-             301:   17(fvec4) Load 300
-             302:   17(fvec4) VectorShuffle 301 299 4 5 2 3
-                              Store 300 302
-             303:     27(ptr) AccessChain 10(dti) 26
-             304:      6(int) Load 303
-             305:     27(ptr) AccessChain 10(dti) 26
-             306:      6(int) Load 305
-             307:    119(ptr) AccessChain 24(data) 25 306 116
-             308:   17(fvec4) Load 307
-             309:  149(fvec3) VectorShuffle 308 308 0 1 2
-             310:  149(fvec3) GroupNonUniformBroadcastFirst 36 309
-             311:    119(ptr) AccessChain 24(data) 25 304 116
-             312:   17(fvec4) Load 311
-             313:   17(fvec4) VectorShuffle 312 310 4 5 6 3
-                              Store 311 313
-             314:     27(ptr) AccessChain 10(dti) 26
-             315:      6(int) Load 314
-             316:     27(ptr) AccessChain 10(dti) 26
-             317:      6(int) Load 316
-             318:    162(ptr) AccessChain 24(data) 25 317 159
-             319: 19(f64vec4) Load 318
-             320: 19(f64vec4) GroupNonUniformBroadcastFirst 36 319
-             321:    162(ptr) AccessChain 24(data) 25 315 159
-                              Store 321 320
-             322:     27(ptr) AccessChain 10(dti) 26
-             323:      6(int) Load 322
-             324:     27(ptr) AccessChain 10(dti) 26
-             325:      6(int) Load 324
-             326:    171(ptr) AccessChain 24(data) 25 325 159 26
-             327:18(float64_t) Load 326
-             328:18(float64_t) GroupNonUniformBroadcastFirst 36 327
-             329:    171(ptr) AccessChain 24(data) 25 323 159 26
-                              Store 329 328
+             280:     82(ptr) AccessChain 24(data) 25 279 79
+             281:   15(ivec4) Load 280
+             282:  100(ivec2) VectorShuffle 281 281 0 1
+             283:  100(ivec2) GroupNonUniformBroadcastFirst 36 282
+             284:     91(ptr) AccessChain 24(data) 25 277 79 26
+             285:     14(int) CompositeExtract 283 0
+                              Store 284 285
+             286:     91(ptr) AccessChain 24(data) 25 277 79 59
+             287:     14(int) CompositeExtract 283 1
+                              Store 286 287
+             288:     27(ptr) AccessChain 10(dti) 26
+             289:      6(int) Load 288
+             290:     27(ptr) AccessChain 10(dti) 26
+             291:      6(int) Load 290
+             292:     82(ptr) AccessChain 24(data) 25 291 79
+             293:   15(ivec4) Load 292
+             294:  113(ivec3) VectorShuffle 293 293 0 1 2
+             295:  113(ivec3) GroupNonUniformBroadcastFirst 36 294
+             296:     91(ptr) AccessChain 24(data) 25 289 79 26
+             297:     14(int) CompositeExtract 295 0
+                              Store 296 297
+             298:     91(ptr) AccessChain 24(data) 25 289 79 59
+             299:     14(int) CompositeExtract 295 1
+                              Store 298 299
+             300:     91(ptr) AccessChain 24(data) 25 289 79 74
+             301:     14(int) CompositeExtract 295 2
+                              Store 300 301
+             302:     27(ptr) AccessChain 10(dti) 26
+             303:      6(int) Load 302
+             304:     27(ptr) AccessChain 10(dti) 26
+             305:      6(int) Load 304
+             306:    129(ptr) AccessChain 24(data) 25 305 126
+             307:   17(fvec4) Load 306
+             308:   17(fvec4) GroupNonUniformBroadcastFirst 36 307
+             309:    129(ptr) AccessChain 24(data) 25 303 126
+                              Store 309 308
+             310:     27(ptr) AccessChain 10(dti) 26
+             311:      6(int) Load 310
+             312:     27(ptr) AccessChain 10(dti) 26
+             313:      6(int) Load 312
+             314:    138(ptr) AccessChain 24(data) 25 313 126 26
+             315:   16(float) Load 314
+             316:   16(float) GroupNonUniformBroadcastFirst 36 315
+             317:    138(ptr) AccessChain 24(data) 25 311 126 26
+                              Store 317 316
+             318:     27(ptr) AccessChain 10(dti) 26
+             319:      6(int) Load 318
+             320:     27(ptr) AccessChain 10(dti) 26
+             321:      6(int) Load 320
+             322:    129(ptr) AccessChain 24(data) 25 321 126
+             323:   17(fvec4) Load 322
+             324:  147(fvec2) VectorShuffle 323 323 0 1
+             325:  147(fvec2) GroupNonUniformBroadcastFirst 36 324
+             326:    138(ptr) AccessChain 24(data) 25 319 126 26
+             327:   16(float) CompositeExtract 325 0
+                              Store 326 327
+             328:    138(ptr) AccessChain 24(data) 25 319 126 59
+             329:   16(float) CompositeExtract 325 1
+                              Store 328 329
              330:     27(ptr) AccessChain 10(dti) 26
              331:      6(int) Load 330
              332:     27(ptr) AccessChain 10(dti) 26
              333:      6(int) Load 332
-             334:    162(ptr) AccessChain 24(data) 25 333 159
-             335: 19(f64vec4) Load 334
-             336:180(f64vec2) VectorShuffle 335 335 0 1
-             337:180(f64vec2) GroupNonUniformBroadcastFirst 36 336
-             338:    162(ptr) AccessChain 24(data) 25 331 159
-             339: 19(f64vec4) Load 338
-             340: 19(f64vec4) VectorShuffle 339 337 4 5 2 3
-                              Store 338 340
-             341:     27(ptr) AccessChain 10(dti) 26
-             342:      6(int) Load 341
-             343:     27(ptr) AccessChain 10(dti) 26
-             344:      6(int) Load 343
-             345:    162(ptr) AccessChain 24(data) 25 344 159
-             346: 19(f64vec4) Load 345
-             347:192(f64vec3) VectorShuffle 346 346 0 1 2
-             348:192(f64vec3) GroupNonUniformBroadcastFirst 36 347
-             349:    162(ptr) AccessChain 24(data) 25 342 159
-             350: 19(f64vec4) Load 349
-             351: 19(f64vec4) VectorShuffle 350 348 4 5 6 3
-                              Store 349 351
+             334:    129(ptr) AccessChain 24(data) 25 333 126
+             335:   17(fvec4) Load 334
+             336:  160(fvec3) VectorShuffle 335 335 0 1 2
+             337:  160(fvec3) GroupNonUniformBroadcastFirst 36 336
+             338:    138(ptr) AccessChain 24(data) 25 331 126 26
+             339:   16(float) CompositeExtract 337 0
+                              Store 338 339
+             340:    138(ptr) AccessChain 24(data) 25 331 126 59
+             341:   16(float) CompositeExtract 337 1
+                              Store 340 341
+             342:    138(ptr) AccessChain 24(data) 25 331 126 74
+             343:   16(float) CompositeExtract 337 2
+                              Store 342 343
+             344:     27(ptr) AccessChain 10(dti) 26
+             345:      6(int) Load 344
+             346:     27(ptr) AccessChain 10(dti) 26
+             347:      6(int) Load 346
+             348:    176(ptr) AccessChain 24(data) 25 347 173
+             349: 19(f64vec4) Load 348
+             350: 19(f64vec4) GroupNonUniformBroadcastFirst 36 349
+             351:    176(ptr) AccessChain 24(data) 25 345 173
+                              Store 351 350
+             352:     27(ptr) AccessChain 10(dti) 26
+             353:      6(int) Load 352
+             354:     27(ptr) AccessChain 10(dti) 26
+             355:      6(int) Load 354
+             356:    185(ptr) AccessChain 24(data) 25 355 173 26
+             357:18(float64_t) Load 356
+             358:18(float64_t) GroupNonUniformBroadcastFirst 36 357
+             359:    185(ptr) AccessChain 24(data) 25 353 173 26
+                              Store 359 358
+             360:     27(ptr) AccessChain 10(dti) 26
+             361:      6(int) Load 360
+             362:     27(ptr) AccessChain 10(dti) 26
+             363:      6(int) Load 362
+             364:    176(ptr) AccessChain 24(data) 25 363 173
+             365: 19(f64vec4) Load 364
+             366:194(f64vec2) VectorShuffle 365 365 0 1
+             367:194(f64vec2) GroupNonUniformBroadcastFirst 36 366
+             368:    185(ptr) AccessChain 24(data) 25 361 173 26
+             369:18(float64_t) CompositeExtract 367 0
+                              Store 368 369
+             370:    185(ptr) AccessChain 24(data) 25 361 173 59
+             371:18(float64_t) CompositeExtract 367 1
+                              Store 370 371
+             372:     27(ptr) AccessChain 10(dti) 26
+             373:      6(int) Load 372
+             374:     27(ptr) AccessChain 10(dti) 26
+             375:      6(int) Load 374
+             376:    176(ptr) AccessChain 24(data) 25 375 173
+             377: 19(f64vec4) Load 376
+             378:207(f64vec3) VectorShuffle 377 377 0 1 2
+             379:207(f64vec3) GroupNonUniformBroadcastFirst 36 378
+             380:    185(ptr) AccessChain 24(data) 25 373 173 26
+             381:18(float64_t) CompositeExtract 379 0
+                              Store 380 381
+             382:    185(ptr) AccessChain 24(data) 25 373 173 59
+             383:18(float64_t) CompositeExtract 379 1
+                              Store 382 383
+             384:    185(ptr) AccessChain 24(data) 25 373 173 74
+             385:18(float64_t) CompositeExtract 379 2
+                              Store 384 385
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.waveprefix.comp.out b/Test/baseResults/hlsl.waveprefix.comp.out
index 1d79f17..cc4737e 100644
--- a/Test/baseResults/hlsl.waveprefix.comp.out
+++ b/Test/baseResults/hlsl.waveprefix.comp.out
@@ -2323,7 +2323,7 @@
 
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 369
+// Id's are bound by 403
 
                               Capability Shader
                               Capability Float64
@@ -2332,7 +2332,7 @@
                               Capability GroupNonUniformBallot
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint GLCompute 4  "CSMain" 364
+                              EntryPoint GLCompute 4  "CSMain" 398
                               ExecutionMode 4 LocalSize 32 16 1
                               Source HLSL 500
                               Name 4  "CSMain"
@@ -2346,9 +2346,9 @@
                               Name 22  "data"
                               MemberName 22(data) 0  "@data"
                               Name 24  "data"
-                              Name 362  "dti"
-                              Name 364  "dti"
-                              Name 366  "param"
+                              Name 396  "dti"
+                              Name 398  "dti"
+                              Name 400  "param"
                               MemberDecorate 20(Types) 0 Offset 0
                               MemberDecorate 20(Types) 1 Offset 16
                               MemberDecorate 20(Types) 2 Offset 32
@@ -2358,7 +2358,7 @@
                               Decorate 22(data) BufferBlock
                               Decorate 24(data) DescriptorSet 0
                               Decorate 24(data) Binding 0
-                              Decorate 364(dti) BuiltIn GlobalInvocationId
+                              Decorate 398(dti) BuiltIn GlobalInvocationId
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -2384,33 +2384,35 @@
               35:      6(int) Constant 3
               42:             TypePointer Uniform 6(int)
               51:             TypeVector 6(int) 2
-              72:     14(int) Constant 1
-              75:             TypePointer Uniform 15(ivec4)
-              84:             TypePointer Uniform 14(int)
-              93:             TypeVector 14(int) 2
-             105:             TypeVector 14(int) 3
-             115:     14(int) Constant 2
-             118:             TypePointer Uniform 17(fvec4)
-             127:             TypePointer Uniform 16(float)
-             136:             TypeVector 16(float) 2
-             148:             TypeVector 16(float) 3
-             158:     14(int) Constant 3
-             161:             TypePointer Uniform 19(f64vec4)
-             170:             TypePointer Uniform 18(float64_t)
-             179:             TypeVector 18(float64_t) 2
-             191:             TypeVector 18(float64_t) 3
-             357:             TypeBool
-             363:             TypePointer Input 7(ivec3)
-        364(dti):    363(ptr) Variable Input
+              58:      6(int) Constant 1
+              73:      6(int) Constant 2
+              78:     14(int) Constant 1
+              81:             TypePointer Uniform 15(ivec4)
+              90:             TypePointer Uniform 14(int)
+              99:             TypeVector 14(int) 2
+             112:             TypeVector 14(int) 3
+             125:     14(int) Constant 2
+             128:             TypePointer Uniform 17(fvec4)
+             137:             TypePointer Uniform 16(float)
+             146:             TypeVector 16(float) 2
+             159:             TypeVector 16(float) 3
+             172:     14(int) Constant 3
+             175:             TypePointer Uniform 19(f64vec4)
+             184:             TypePointer Uniform 18(float64_t)
+             193:             TypeVector 18(float64_t) 2
+             206:             TypeVector 18(float64_t) 3
+             391:             TypeBool
+             397:             TypePointer Input 7(ivec3)
+        398(dti):    397(ptr) Variable Input
        4(CSMain):           2 Function None 3
                5:             Label
-        362(dti):      8(ptr) Variable Function
-      366(param):      8(ptr) Variable Function
-             365:    7(ivec3) Load 364(dti)
-                              Store 362(dti) 365
-             367:    7(ivec3) Load 362(dti)
-                              Store 366(param) 367
-             368:           2 FunctionCall 11(@CSMain(vu3;) 366(param)
+        396(dti):      8(ptr) Variable Function
+      400(param):      8(ptr) Variable Function
+             399:    7(ivec3) Load 398(dti)
+                              Store 396(dti) 399
+             401:    7(ivec3) Load 396(dti)
+                              Store 400(param) 401
+             402:           2 FunctionCall 11(@CSMain(vu3;) 400(param)
                               Return
                               FunctionEnd
 11(@CSMain(vu3;):           2 Function None 9
@@ -2442,326 +2444,382 @@
               53:   13(ivec4) Load 52
               54:   51(ivec2) VectorShuffle 53 53 0 1
               55:   51(ivec2) GroupNonUniformIAdd 35 InclusiveScan 54
-              56:     32(ptr) AccessChain 24(data) 25 48 25
-              57:   13(ivec4) Load 56
-              58:   13(ivec4) VectorShuffle 57 55 4 5 2 3
-                              Store 56 58
-              59:     27(ptr) AccessChain 10(dti) 26
-              60:      6(int) Load 59
+              56:     42(ptr) AccessChain 24(data) 25 48 25 26
+              57:      6(int) CompositeExtract 55 0
+                              Store 56 57
+              59:     42(ptr) AccessChain 24(data) 25 48 25 58
+              60:      6(int) CompositeExtract 55 1
+                              Store 59 60
               61:     27(ptr) AccessChain 10(dti) 26
               62:      6(int) Load 61
-              63:     32(ptr) AccessChain 24(data) 25 62 25
-              64:   13(ivec4) Load 63
-              65:    7(ivec3) VectorShuffle 64 64 0 1 2
-              66:    7(ivec3) GroupNonUniformIAdd 35 InclusiveScan 65
-              67:     32(ptr) AccessChain 24(data) 25 60 25
-              68:   13(ivec4) Load 67
-              69:   13(ivec4) VectorShuffle 68 66 4 5 6 3
-                              Store 67 69
-              70:     27(ptr) AccessChain 10(dti) 26
-              71:      6(int) Load 70
-              73:     27(ptr) AccessChain 10(dti) 26
-              74:      6(int) Load 73
-              76:     75(ptr) AccessChain 24(data) 25 74 72
-              77:   15(ivec4) Load 76
-              78:   15(ivec4) GroupNonUniformIAdd 35 InclusiveScan 77
-              79:     75(ptr) AccessChain 24(data) 25 71 72
-                              Store 79 78
-              80:     27(ptr) AccessChain 10(dti) 26
-              81:      6(int) Load 80
-              82:     27(ptr) AccessChain 10(dti) 26
-              83:      6(int) Load 82
-              85:     84(ptr) AccessChain 24(data) 25 83 72 26
-              86:     14(int) Load 85
-              87:     14(int) GroupNonUniformIAdd 35 InclusiveScan 86
-              88:     84(ptr) AccessChain 24(data) 25 81 72 26
-                              Store 88 87
-              89:     27(ptr) AccessChain 10(dti) 26
-              90:      6(int) Load 89
-              91:     27(ptr) AccessChain 10(dti) 26
-              92:      6(int) Load 91
-              94:     75(ptr) AccessChain 24(data) 25 92 72
-              95:   15(ivec4) Load 94
-              96:   93(ivec2) VectorShuffle 95 95 0 1
-              97:   93(ivec2) GroupNonUniformIAdd 35 InclusiveScan 96
-              98:     75(ptr) AccessChain 24(data) 25 90 72
-              99:   15(ivec4) Load 98
-             100:   15(ivec4) VectorShuffle 99 97 4 5 2 3
-                              Store 98 100
-             101:     27(ptr) AccessChain 10(dti) 26
-             102:      6(int) Load 101
-             103:     27(ptr) AccessChain 10(dti) 26
-             104:      6(int) Load 103
-             106:     75(ptr) AccessChain 24(data) 25 104 72
-             107:   15(ivec4) Load 106
-             108:  105(ivec3) VectorShuffle 107 107 0 1 2
-             109:  105(ivec3) GroupNonUniformIAdd 35 InclusiveScan 108
-             110:     75(ptr) AccessChain 24(data) 25 102 72
-             111:   15(ivec4) Load 110
-             112:   15(ivec4) VectorShuffle 111 109 4 5 6 3
-                              Store 110 112
-             113:     27(ptr) AccessChain 10(dti) 26
-             114:      6(int) Load 113
-             116:     27(ptr) AccessChain 10(dti) 26
-             117:      6(int) Load 116
-             119:    118(ptr) AccessChain 24(data) 25 117 115
-             120:   17(fvec4) Load 119
-             121:   17(fvec4) GroupNonUniformFAdd 35 InclusiveScan 120
-             122:    118(ptr) AccessChain 24(data) 25 114 115
-                              Store 122 121
+              63:     27(ptr) AccessChain 10(dti) 26
+              64:      6(int) Load 63
+              65:     32(ptr) AccessChain 24(data) 25 64 25
+              66:   13(ivec4) Load 65
+              67:    7(ivec3) VectorShuffle 66 66 0 1 2
+              68:    7(ivec3) GroupNonUniformIAdd 35 InclusiveScan 67
+              69:     42(ptr) AccessChain 24(data) 25 62 25 26
+              70:      6(int) CompositeExtract 68 0
+                              Store 69 70
+              71:     42(ptr) AccessChain 24(data) 25 62 25 58
+              72:      6(int) CompositeExtract 68 1
+                              Store 71 72
+              74:     42(ptr) AccessChain 24(data) 25 62 25 73
+              75:      6(int) CompositeExtract 68 2
+                              Store 74 75
+              76:     27(ptr) AccessChain 10(dti) 26
+              77:      6(int) Load 76
+              79:     27(ptr) AccessChain 10(dti) 26
+              80:      6(int) Load 79
+              82:     81(ptr) AccessChain 24(data) 25 80 78
+              83:   15(ivec4) Load 82
+              84:   15(ivec4) GroupNonUniformIAdd 35 InclusiveScan 83
+              85:     81(ptr) AccessChain 24(data) 25 77 78
+                              Store 85 84
+              86:     27(ptr) AccessChain 10(dti) 26
+              87:      6(int) Load 86
+              88:     27(ptr) AccessChain 10(dti) 26
+              89:      6(int) Load 88
+              91:     90(ptr) AccessChain 24(data) 25 89 78 26
+              92:     14(int) Load 91
+              93:     14(int) GroupNonUniformIAdd 35 InclusiveScan 92
+              94:     90(ptr) AccessChain 24(data) 25 87 78 26
+                              Store 94 93
+              95:     27(ptr) AccessChain 10(dti) 26
+              96:      6(int) Load 95
+              97:     27(ptr) AccessChain 10(dti) 26
+              98:      6(int) Load 97
+             100:     81(ptr) AccessChain 24(data) 25 98 78
+             101:   15(ivec4) Load 100
+             102:   99(ivec2) VectorShuffle 101 101 0 1
+             103:   99(ivec2) GroupNonUniformIAdd 35 InclusiveScan 102
+             104:     90(ptr) AccessChain 24(data) 25 96 78 26
+             105:     14(int) CompositeExtract 103 0
+                              Store 104 105
+             106:     90(ptr) AccessChain 24(data) 25 96 78 58
+             107:     14(int) CompositeExtract 103 1
+                              Store 106 107
+             108:     27(ptr) AccessChain 10(dti) 26
+             109:      6(int) Load 108
+             110:     27(ptr) AccessChain 10(dti) 26
+             111:      6(int) Load 110
+             113:     81(ptr) AccessChain 24(data) 25 111 78
+             114:   15(ivec4) Load 113
+             115:  112(ivec3) VectorShuffle 114 114 0 1 2
+             116:  112(ivec3) GroupNonUniformIAdd 35 InclusiveScan 115
+             117:     90(ptr) AccessChain 24(data) 25 109 78 26
+             118:     14(int) CompositeExtract 116 0
+                              Store 117 118
+             119:     90(ptr) AccessChain 24(data) 25 109 78 58
+             120:     14(int) CompositeExtract 116 1
+                              Store 119 120
+             121:     90(ptr) AccessChain 24(data) 25 109 78 73
+             122:     14(int) CompositeExtract 116 2
+                              Store 121 122
              123:     27(ptr) AccessChain 10(dti) 26
              124:      6(int) Load 123
-             125:     27(ptr) AccessChain 10(dti) 26
-             126:      6(int) Load 125
-             128:    127(ptr) AccessChain 24(data) 25 126 115 26
-             129:   16(float) Load 128
-             130:   16(float) GroupNonUniformFAdd 35 InclusiveScan 129
-             131:    127(ptr) AccessChain 24(data) 25 124 115 26
-                              Store 131 130
-             132:     27(ptr) AccessChain 10(dti) 26
-             133:      6(int) Load 132
-             134:     27(ptr) AccessChain 10(dti) 26
-             135:      6(int) Load 134
-             137:    118(ptr) AccessChain 24(data) 25 135 115
-             138:   17(fvec4) Load 137
-             139:  136(fvec2) VectorShuffle 138 138 0 1
-             140:  136(fvec2) GroupNonUniformFAdd 35 InclusiveScan 139
-             141:    118(ptr) AccessChain 24(data) 25 133 115
-             142:   17(fvec4) Load 141
-             143:   17(fvec4) VectorShuffle 142 140 4 5 2 3
-                              Store 141 143
+             126:     27(ptr) AccessChain 10(dti) 26
+             127:      6(int) Load 126
+             129:    128(ptr) AccessChain 24(data) 25 127 125
+             130:   17(fvec4) Load 129
+             131:   17(fvec4) GroupNonUniformFAdd 35 InclusiveScan 130
+             132:    128(ptr) AccessChain 24(data) 25 124 125
+                              Store 132 131
+             133:     27(ptr) AccessChain 10(dti) 26
+             134:      6(int) Load 133
+             135:     27(ptr) AccessChain 10(dti) 26
+             136:      6(int) Load 135
+             138:    137(ptr) AccessChain 24(data) 25 136 125 26
+             139:   16(float) Load 138
+             140:   16(float) GroupNonUniformFAdd 35 InclusiveScan 139
+             141:    137(ptr) AccessChain 24(data) 25 134 125 26
+                              Store 141 140
+             142:     27(ptr) AccessChain 10(dti) 26
+             143:      6(int) Load 142
              144:     27(ptr) AccessChain 10(dti) 26
              145:      6(int) Load 144
-             146:     27(ptr) AccessChain 10(dti) 26
-             147:      6(int) Load 146
-             149:    118(ptr) AccessChain 24(data) 25 147 115
-             150:   17(fvec4) Load 149
-             151:  148(fvec3) VectorShuffle 150 150 0 1 2
-             152:  148(fvec3) GroupNonUniformFAdd 35 InclusiveScan 151
-             153:    118(ptr) AccessChain 24(data) 25 145 115
-             154:   17(fvec4) Load 153
-             155:   17(fvec4) VectorShuffle 154 152 4 5 6 3
-                              Store 153 155
-             156:     27(ptr) AccessChain 10(dti) 26
-             157:      6(int) Load 156
-             159:     27(ptr) AccessChain 10(dti) 26
-             160:      6(int) Load 159
-             162:    161(ptr) AccessChain 24(data) 25 160 158
-             163: 19(f64vec4) Load 162
-             164: 19(f64vec4) GroupNonUniformFAdd 35 InclusiveScan 163
-             165:    161(ptr) AccessChain 24(data) 25 157 158
-                              Store 165 164
-             166:     27(ptr) AccessChain 10(dti) 26
-             167:      6(int) Load 166
-             168:     27(ptr) AccessChain 10(dti) 26
-             169:      6(int) Load 168
-             171:    170(ptr) AccessChain 24(data) 25 169 158 26
-             172:18(float64_t) Load 171
-             173:18(float64_t) GroupNonUniformFAdd 35 InclusiveScan 172
-             174:    170(ptr) AccessChain 24(data) 25 167 158 26
-                              Store 174 173
-             175:     27(ptr) AccessChain 10(dti) 26
-             176:      6(int) Load 175
-             177:     27(ptr) AccessChain 10(dti) 26
-             178:      6(int) Load 177
-             180:    161(ptr) AccessChain 24(data) 25 178 158
-             181: 19(f64vec4) Load 180
-             182:179(f64vec2) VectorShuffle 181 181 0 1
-             183:179(f64vec2) GroupNonUniformFAdd 35 InclusiveScan 182
-             184:    161(ptr) AccessChain 24(data) 25 176 158
-             185: 19(f64vec4) Load 184
-             186: 19(f64vec4) VectorShuffle 185 183 4 5 2 3
-                              Store 184 186
-             187:     27(ptr) AccessChain 10(dti) 26
-             188:      6(int) Load 187
+             147:    128(ptr) AccessChain 24(data) 25 145 125
+             148:   17(fvec4) Load 147
+             149:  146(fvec2) VectorShuffle 148 148 0 1
+             150:  146(fvec2) GroupNonUniformFAdd 35 InclusiveScan 149
+             151:    137(ptr) AccessChain 24(data) 25 143 125 26
+             152:   16(float) CompositeExtract 150 0
+                              Store 151 152
+             153:    137(ptr) AccessChain 24(data) 25 143 125 58
+             154:   16(float) CompositeExtract 150 1
+                              Store 153 154
+             155:     27(ptr) AccessChain 10(dti) 26
+             156:      6(int) Load 155
+             157:     27(ptr) AccessChain 10(dti) 26
+             158:      6(int) Load 157
+             160:    128(ptr) AccessChain 24(data) 25 158 125
+             161:   17(fvec4) Load 160
+             162:  159(fvec3) VectorShuffle 161 161 0 1 2
+             163:  159(fvec3) GroupNonUniformFAdd 35 InclusiveScan 162
+             164:    137(ptr) AccessChain 24(data) 25 156 125 26
+             165:   16(float) CompositeExtract 163 0
+                              Store 164 165
+             166:    137(ptr) AccessChain 24(data) 25 156 125 58
+             167:   16(float) CompositeExtract 163 1
+                              Store 166 167
+             168:    137(ptr) AccessChain 24(data) 25 156 125 73
+             169:   16(float) CompositeExtract 163 2
+                              Store 168 169
+             170:     27(ptr) AccessChain 10(dti) 26
+             171:      6(int) Load 170
+             173:     27(ptr) AccessChain 10(dti) 26
+             174:      6(int) Load 173
+             176:    175(ptr) AccessChain 24(data) 25 174 172
+             177: 19(f64vec4) Load 176
+             178: 19(f64vec4) GroupNonUniformFAdd 35 InclusiveScan 177
+             179:    175(ptr) AccessChain 24(data) 25 171 172
+                              Store 179 178
+             180:     27(ptr) AccessChain 10(dti) 26
+             181:      6(int) Load 180
+             182:     27(ptr) AccessChain 10(dti) 26
+             183:      6(int) Load 182
+             185:    184(ptr) AccessChain 24(data) 25 183 172 26
+             186:18(float64_t) Load 185
+             187:18(float64_t) GroupNonUniformFAdd 35 InclusiveScan 186
+             188:    184(ptr) AccessChain 24(data) 25 181 172 26
+                              Store 188 187
              189:     27(ptr) AccessChain 10(dti) 26
              190:      6(int) Load 189
-             192:    161(ptr) AccessChain 24(data) 25 190 158
-             193: 19(f64vec4) Load 192
-             194:191(f64vec3) VectorShuffle 193 193 0 1 2
-             195:191(f64vec3) GroupNonUniformFAdd 35 InclusiveScan 194
-             196:    161(ptr) AccessChain 24(data) 25 188 158
-             197: 19(f64vec4) Load 196
-             198: 19(f64vec4) VectorShuffle 197 195 4 5 6 3
-                              Store 196 198
-             199:     27(ptr) AccessChain 10(dti) 26
-             200:      6(int) Load 199
-             201:     27(ptr) AccessChain 10(dti) 26
-             202:      6(int) Load 201
-             203:     32(ptr) AccessChain 24(data) 25 202 25
-             204:   13(ivec4) Load 203
-             205:   13(ivec4) GroupNonUniformIMul 35 InclusiveScan 204
-             206:     32(ptr) AccessChain 24(data) 25 200 25
-                              Store 206 205
-             207:     27(ptr) AccessChain 10(dti) 26
-             208:      6(int) Load 207
-             209:     27(ptr) AccessChain 10(dti) 26
-             210:      6(int) Load 209
-             211:     42(ptr) AccessChain 24(data) 25 210 25 26
-             212:      6(int) Load 211
-             213:      6(int) GroupNonUniformIMul 35 InclusiveScan 212
-             214:     42(ptr) AccessChain 24(data) 25 208 25 26
-                              Store 214 213
-             215:     27(ptr) AccessChain 10(dti) 26
-             216:      6(int) Load 215
+             191:     27(ptr) AccessChain 10(dti) 26
+             192:      6(int) Load 191
+             194:    175(ptr) AccessChain 24(data) 25 192 172
+             195: 19(f64vec4) Load 194
+             196:193(f64vec2) VectorShuffle 195 195 0 1
+             197:193(f64vec2) GroupNonUniformFAdd 35 InclusiveScan 196
+             198:    184(ptr) AccessChain 24(data) 25 190 172 26
+             199:18(float64_t) CompositeExtract 197 0
+                              Store 198 199
+             200:    184(ptr) AccessChain 24(data) 25 190 172 58
+             201:18(float64_t) CompositeExtract 197 1
+                              Store 200 201
+             202:     27(ptr) AccessChain 10(dti) 26
+             203:      6(int) Load 202
+             204:     27(ptr) AccessChain 10(dti) 26
+             205:      6(int) Load 204
+             207:    175(ptr) AccessChain 24(data) 25 205 172
+             208: 19(f64vec4) Load 207
+             209:206(f64vec3) VectorShuffle 208 208 0 1 2
+             210:206(f64vec3) GroupNonUniformFAdd 35 InclusiveScan 209
+             211:    184(ptr) AccessChain 24(data) 25 203 172 26
+             212:18(float64_t) CompositeExtract 210 0
+                              Store 211 212
+             213:    184(ptr) AccessChain 24(data) 25 203 172 58
+             214:18(float64_t) CompositeExtract 210 1
+                              Store 213 214
+             215:    184(ptr) AccessChain 24(data) 25 203 172 73
+             216:18(float64_t) CompositeExtract 210 2
+                              Store 215 216
              217:     27(ptr) AccessChain 10(dti) 26
              218:      6(int) Load 217
-             219:     32(ptr) AccessChain 24(data) 25 218 25
-             220:   13(ivec4) Load 219
-             221:   51(ivec2) VectorShuffle 220 220 0 1
-             222:   51(ivec2) GroupNonUniformIMul 35 InclusiveScan 221
-             223:     32(ptr) AccessChain 24(data) 25 216 25
-             224:   13(ivec4) Load 223
-             225:   13(ivec4) VectorShuffle 224 222 4 5 2 3
-                              Store 223 225
-             226:     27(ptr) AccessChain 10(dti) 26
-             227:      6(int) Load 226
-             228:     27(ptr) AccessChain 10(dti) 26
-             229:      6(int) Load 228
-             230:     32(ptr) AccessChain 24(data) 25 229 25
-             231:   13(ivec4) Load 230
-             232:    7(ivec3) VectorShuffle 231 231 0 1 2
-             233:    7(ivec3) GroupNonUniformIMul 35 InclusiveScan 232
-             234:     32(ptr) AccessChain 24(data) 25 227 25
-             235:   13(ivec4) Load 234
-             236:   13(ivec4) VectorShuffle 235 233 4 5 6 3
-                              Store 234 236
-             237:     27(ptr) AccessChain 10(dti) 26
-             238:      6(int) Load 237
-             239:     27(ptr) AccessChain 10(dti) 26
-             240:      6(int) Load 239
-             241:     75(ptr) AccessChain 24(data) 25 240 72
-             242:   15(ivec4) Load 241
-             243:   15(ivec4) GroupNonUniformIMul 35 InclusiveScan 242
-             244:     75(ptr) AccessChain 24(data) 25 238 72
-                              Store 244 243
+             219:     27(ptr) AccessChain 10(dti) 26
+             220:      6(int) Load 219
+             221:     32(ptr) AccessChain 24(data) 25 220 25
+             222:   13(ivec4) Load 221
+             223:   13(ivec4) GroupNonUniformIMul 35 InclusiveScan 222
+             224:     32(ptr) AccessChain 24(data) 25 218 25
+                              Store 224 223
+             225:     27(ptr) AccessChain 10(dti) 26
+             226:      6(int) Load 225
+             227:     27(ptr) AccessChain 10(dti) 26
+             228:      6(int) Load 227
+             229:     42(ptr) AccessChain 24(data) 25 228 25 26
+             230:      6(int) Load 229
+             231:      6(int) GroupNonUniformIMul 35 InclusiveScan 230
+             232:     42(ptr) AccessChain 24(data) 25 226 25 26
+                              Store 232 231
+             233:     27(ptr) AccessChain 10(dti) 26
+             234:      6(int) Load 233
+             235:     27(ptr) AccessChain 10(dti) 26
+             236:      6(int) Load 235
+             237:     32(ptr) AccessChain 24(data) 25 236 25
+             238:   13(ivec4) Load 237
+             239:   51(ivec2) VectorShuffle 238 238 0 1
+             240:   51(ivec2) GroupNonUniformIMul 35 InclusiveScan 239
+             241:     42(ptr) AccessChain 24(data) 25 234 25 26
+             242:      6(int) CompositeExtract 240 0
+                              Store 241 242
+             243:     42(ptr) AccessChain 24(data) 25 234 25 58
+             244:      6(int) CompositeExtract 240 1
+                              Store 243 244
              245:     27(ptr) AccessChain 10(dti) 26
              246:      6(int) Load 245
              247:     27(ptr) AccessChain 10(dti) 26
              248:      6(int) Load 247
-             249:     84(ptr) AccessChain 24(data) 25 248 72 26
-             250:     14(int) Load 249
-             251:     14(int) GroupNonUniformIMul 35 InclusiveScan 250
-             252:     84(ptr) AccessChain 24(data) 25 246 72 26
-                              Store 252 251
-             253:     27(ptr) AccessChain 10(dti) 26
-             254:      6(int) Load 253
-             255:     27(ptr) AccessChain 10(dti) 26
-             256:      6(int) Load 255
-             257:     75(ptr) AccessChain 24(data) 25 256 72
-             258:   15(ivec4) Load 257
-             259:   93(ivec2) VectorShuffle 258 258 0 1
-             260:   93(ivec2) GroupNonUniformIMul 35 InclusiveScan 259
-             261:     75(ptr) AccessChain 24(data) 25 254 72
-             262:   15(ivec4) Load 261
-             263:   15(ivec4) VectorShuffle 262 260 4 5 2 3
-                              Store 261 263
-             264:     27(ptr) AccessChain 10(dti) 26
-             265:      6(int) Load 264
-             266:     27(ptr) AccessChain 10(dti) 26
-             267:      6(int) Load 266
-             268:     75(ptr) AccessChain 24(data) 25 267 72
-             269:   15(ivec4) Load 268
-             270:  105(ivec3) VectorShuffle 269 269 0 1 2
-             271:  105(ivec3) GroupNonUniformIMul 35 InclusiveScan 270
-             272:     75(ptr) AccessChain 24(data) 25 265 72
-             273:   15(ivec4) Load 272
-             274:   15(ivec4) VectorShuffle 273 271 4 5 6 3
-                              Store 272 274
+             249:     32(ptr) AccessChain 24(data) 25 248 25
+             250:   13(ivec4) Load 249
+             251:    7(ivec3) VectorShuffle 250 250 0 1 2
+             252:    7(ivec3) GroupNonUniformIMul 35 InclusiveScan 251
+             253:     42(ptr) AccessChain 24(data) 25 246 25 26
+             254:      6(int) CompositeExtract 252 0
+                              Store 253 254
+             255:     42(ptr) AccessChain 24(data) 25 246 25 58
+             256:      6(int) CompositeExtract 252 1
+                              Store 255 256
+             257:     42(ptr) AccessChain 24(data) 25 246 25 73
+             258:      6(int) CompositeExtract 252 2
+                              Store 257 258
+             259:     27(ptr) AccessChain 10(dti) 26
+             260:      6(int) Load 259
+             261:     27(ptr) AccessChain 10(dti) 26
+             262:      6(int) Load 261
+             263:     81(ptr) AccessChain 24(data) 25 262 78
+             264:   15(ivec4) Load 263
+             265:   15(ivec4) GroupNonUniformIMul 35 InclusiveScan 264
+             266:     81(ptr) AccessChain 24(data) 25 260 78
+                              Store 266 265
+             267:     27(ptr) AccessChain 10(dti) 26
+             268:      6(int) Load 267
+             269:     27(ptr) AccessChain 10(dti) 26
+             270:      6(int) Load 269
+             271:     90(ptr) AccessChain 24(data) 25 270 78 26
+             272:     14(int) Load 271
+             273:     14(int) GroupNonUniformIMul 35 InclusiveScan 272
+             274:     90(ptr) AccessChain 24(data) 25 268 78 26
+                              Store 274 273
              275:     27(ptr) AccessChain 10(dti) 26
              276:      6(int) Load 275
              277:     27(ptr) AccessChain 10(dti) 26
              278:      6(int) Load 277
-             279:    118(ptr) AccessChain 24(data) 25 278 115
-             280:   17(fvec4) Load 279
-             281:   17(fvec4) GroupNonUniformFMul 35 InclusiveScan 280
-             282:    118(ptr) AccessChain 24(data) 25 276 115
-                              Store 282 281
-             283:     27(ptr) AccessChain 10(dti) 26
-             284:      6(int) Load 283
-             285:     27(ptr) AccessChain 10(dti) 26
-             286:      6(int) Load 285
-             287:    127(ptr) AccessChain 24(data) 25 286 115 26
-             288:   16(float) Load 287
-             289:   16(float) GroupNonUniformFMul 35 InclusiveScan 288
-             290:    127(ptr) AccessChain 24(data) 25 284 115 26
-                              Store 290 289
-             291:     27(ptr) AccessChain 10(dti) 26
-             292:      6(int) Load 291
-             293:     27(ptr) AccessChain 10(dti) 26
-             294:      6(int) Load 293
-             295:    118(ptr) AccessChain 24(data) 25 294 115
-             296:   17(fvec4) Load 295
-             297:  136(fvec2) VectorShuffle 296 296 0 1
-             298:  136(fvec2) GroupNonUniformFMul 35 InclusiveScan 297
-             299:    118(ptr) AccessChain 24(data) 25 292 115
-             300:   17(fvec4) Load 299
-             301:   17(fvec4) VectorShuffle 300 298 4 5 2 3
-                              Store 299 301
-             302:     27(ptr) AccessChain 10(dti) 26
-             303:      6(int) Load 302
-             304:     27(ptr) AccessChain 10(dti) 26
-             305:      6(int) Load 304
-             306:    118(ptr) AccessChain 24(data) 25 305 115
-             307:   17(fvec4) Load 306
-             308:  148(fvec3) VectorShuffle 307 307 0 1 2
-             309:  148(fvec3) GroupNonUniformFMul 35 InclusiveScan 308
-             310:    118(ptr) AccessChain 24(data) 25 303 115
-             311:   17(fvec4) Load 310
-             312:   17(fvec4) VectorShuffle 311 309 4 5 6 3
-                              Store 310 312
-             313:     27(ptr) AccessChain 10(dti) 26
-             314:      6(int) Load 313
-             315:     27(ptr) AccessChain 10(dti) 26
-             316:      6(int) Load 315
-             317:    161(ptr) AccessChain 24(data) 25 316 158
-             318: 19(f64vec4) Load 317
-             319: 19(f64vec4) GroupNonUniformFMul 35 InclusiveScan 318
-             320:    161(ptr) AccessChain 24(data) 25 314 158
-                              Store 320 319
-             321:     27(ptr) AccessChain 10(dti) 26
-             322:      6(int) Load 321
-             323:     27(ptr) AccessChain 10(dti) 26
-             324:      6(int) Load 323
-             325:    170(ptr) AccessChain 24(data) 25 324 158 26
-             326:18(float64_t) Load 325
-             327:18(float64_t) GroupNonUniformFMul 35 InclusiveScan 326
-             328:    170(ptr) AccessChain 24(data) 25 322 158 26
-                              Store 328 327
+             279:     81(ptr) AccessChain 24(data) 25 278 78
+             280:   15(ivec4) Load 279
+             281:   99(ivec2) VectorShuffle 280 280 0 1
+             282:   99(ivec2) GroupNonUniformIMul 35 InclusiveScan 281
+             283:     90(ptr) AccessChain 24(data) 25 276 78 26
+             284:     14(int) CompositeExtract 282 0
+                              Store 283 284
+             285:     90(ptr) AccessChain 24(data) 25 276 78 58
+             286:     14(int) CompositeExtract 282 1
+                              Store 285 286
+             287:     27(ptr) AccessChain 10(dti) 26
+             288:      6(int) Load 287
+             289:     27(ptr) AccessChain 10(dti) 26
+             290:      6(int) Load 289
+             291:     81(ptr) AccessChain 24(data) 25 290 78
+             292:   15(ivec4) Load 291
+             293:  112(ivec3) VectorShuffle 292 292 0 1 2
+             294:  112(ivec3) GroupNonUniformIMul 35 InclusiveScan 293
+             295:     90(ptr) AccessChain 24(data) 25 288 78 26
+             296:     14(int) CompositeExtract 294 0
+                              Store 295 296
+             297:     90(ptr) AccessChain 24(data) 25 288 78 58
+             298:     14(int) CompositeExtract 294 1
+                              Store 297 298
+             299:     90(ptr) AccessChain 24(data) 25 288 78 73
+             300:     14(int) CompositeExtract 294 2
+                              Store 299 300
+             301:     27(ptr) AccessChain 10(dti) 26
+             302:      6(int) Load 301
+             303:     27(ptr) AccessChain 10(dti) 26
+             304:      6(int) Load 303
+             305:    128(ptr) AccessChain 24(data) 25 304 125
+             306:   17(fvec4) Load 305
+             307:   17(fvec4) GroupNonUniformFMul 35 InclusiveScan 306
+             308:    128(ptr) AccessChain 24(data) 25 302 125
+                              Store 308 307
+             309:     27(ptr) AccessChain 10(dti) 26
+             310:      6(int) Load 309
+             311:     27(ptr) AccessChain 10(dti) 26
+             312:      6(int) Load 311
+             313:    137(ptr) AccessChain 24(data) 25 312 125 26
+             314:   16(float) Load 313
+             315:   16(float) GroupNonUniformFMul 35 InclusiveScan 314
+             316:    137(ptr) AccessChain 24(data) 25 310 125 26
+                              Store 316 315
+             317:     27(ptr) AccessChain 10(dti) 26
+             318:      6(int) Load 317
+             319:     27(ptr) AccessChain 10(dti) 26
+             320:      6(int) Load 319
+             321:    128(ptr) AccessChain 24(data) 25 320 125
+             322:   17(fvec4) Load 321
+             323:  146(fvec2) VectorShuffle 322 322 0 1
+             324:  146(fvec2) GroupNonUniformFMul 35 InclusiveScan 323
+             325:    137(ptr) AccessChain 24(data) 25 318 125 26
+             326:   16(float) CompositeExtract 324 0
+                              Store 325 326
+             327:    137(ptr) AccessChain 24(data) 25 318 125 58
+             328:   16(float) CompositeExtract 324 1
+                              Store 327 328
              329:     27(ptr) AccessChain 10(dti) 26
              330:      6(int) Load 329
              331:     27(ptr) AccessChain 10(dti) 26
              332:      6(int) Load 331
-             333:    161(ptr) AccessChain 24(data) 25 332 158
-             334: 19(f64vec4) Load 333
-             335:179(f64vec2) VectorShuffle 334 334 0 1
-             336:179(f64vec2) GroupNonUniformFMul 35 InclusiveScan 335
-             337:    161(ptr) AccessChain 24(data) 25 330 158
-             338: 19(f64vec4) Load 337
-             339: 19(f64vec4) VectorShuffle 338 336 4 5 2 3
-                              Store 337 339
-             340:     27(ptr) AccessChain 10(dti) 26
-             341:      6(int) Load 340
-             342:     27(ptr) AccessChain 10(dti) 26
-             343:      6(int) Load 342
-             344:    161(ptr) AccessChain 24(data) 25 343 158
-             345: 19(f64vec4) Load 344
-             346:191(f64vec3) VectorShuffle 345 345 0 1 2
-             347:191(f64vec3) GroupNonUniformFMul 35 InclusiveScan 346
-             348:    161(ptr) AccessChain 24(data) 25 341 158
-             349: 19(f64vec4) Load 348
-             350: 19(f64vec4) VectorShuffle 349 347 4 5 6 3
-                              Store 348 350
+             333:    128(ptr) AccessChain 24(data) 25 332 125
+             334:   17(fvec4) Load 333
+             335:  159(fvec3) VectorShuffle 334 334 0 1 2
+             336:  159(fvec3) GroupNonUniformFMul 35 InclusiveScan 335
+             337:    137(ptr) AccessChain 24(data) 25 330 125 26
+             338:   16(float) CompositeExtract 336 0
+                              Store 337 338
+             339:    137(ptr) AccessChain 24(data) 25 330 125 58
+             340:   16(float) CompositeExtract 336 1
+                              Store 339 340
+             341:    137(ptr) AccessChain 24(data) 25 330 125 73
+             342:   16(float) CompositeExtract 336 2
+                              Store 341 342
+             343:     27(ptr) AccessChain 10(dti) 26
+             344:      6(int) Load 343
+             345:     27(ptr) AccessChain 10(dti) 26
+             346:      6(int) Load 345
+             347:    175(ptr) AccessChain 24(data) 25 346 172
+             348: 19(f64vec4) Load 347
+             349: 19(f64vec4) GroupNonUniformFMul 35 InclusiveScan 348
+             350:    175(ptr) AccessChain 24(data) 25 344 172
+                              Store 350 349
              351:     27(ptr) AccessChain 10(dti) 26
              352:      6(int) Load 351
              353:     27(ptr) AccessChain 10(dti) 26
              354:      6(int) Load 353
-             355:     42(ptr) AccessChain 24(data) 25 354 25 26
-             356:      6(int) Load 355
-             358:   357(bool) IEqual 356 26
-             359:   13(ivec4) GroupNonUniformBallot 35 358
-             360:      6(int) GroupNonUniformBallotBitCount 35 InclusiveScan 359
-             361:     42(ptr) AccessChain 24(data) 25 352 25 26
-                              Store 361 360
+             355:    184(ptr) AccessChain 24(data) 25 354 172 26
+             356:18(float64_t) Load 355
+             357:18(float64_t) GroupNonUniformFMul 35 InclusiveScan 356
+             358:    184(ptr) AccessChain 24(data) 25 352 172 26
+                              Store 358 357
+             359:     27(ptr) AccessChain 10(dti) 26
+             360:      6(int) Load 359
+             361:     27(ptr) AccessChain 10(dti) 26
+             362:      6(int) Load 361
+             363:    175(ptr) AccessChain 24(data) 25 362 172
+             364: 19(f64vec4) Load 363
+             365:193(f64vec2) VectorShuffle 364 364 0 1
+             366:193(f64vec2) GroupNonUniformFMul 35 InclusiveScan 365
+             367:    184(ptr) AccessChain 24(data) 25 360 172 26
+             368:18(float64_t) CompositeExtract 366 0
+                              Store 367 368
+             369:    184(ptr) AccessChain 24(data) 25 360 172 58
+             370:18(float64_t) CompositeExtract 366 1
+                              Store 369 370
+             371:     27(ptr) AccessChain 10(dti) 26
+             372:      6(int) Load 371
+             373:     27(ptr) AccessChain 10(dti) 26
+             374:      6(int) Load 373
+             375:    175(ptr) AccessChain 24(data) 25 374 172
+             376: 19(f64vec4) Load 375
+             377:206(f64vec3) VectorShuffle 376 376 0 1 2
+             378:206(f64vec3) GroupNonUniformFMul 35 InclusiveScan 377
+             379:    184(ptr) AccessChain 24(data) 25 372 172 26
+             380:18(float64_t) CompositeExtract 378 0
+                              Store 379 380
+             381:    184(ptr) AccessChain 24(data) 25 372 172 58
+             382:18(float64_t) CompositeExtract 378 1
+                              Store 381 382
+             383:    184(ptr) AccessChain 24(data) 25 372 172 73
+             384:18(float64_t) CompositeExtract 378 2
+                              Store 383 384
+             385:     27(ptr) AccessChain 10(dti) 26
+             386:      6(int) Load 385
+             387:     27(ptr) AccessChain 10(dti) 26
+             388:      6(int) Load 387
+             389:     42(ptr) AccessChain 24(data) 25 388 25 26
+             390:      6(int) Load 389
+             392:   391(bool) IEqual 390 26
+             393:   13(ivec4) GroupNonUniformBallot 35 392
+             394:      6(int) GroupNonUniformBallotBitCount 35 InclusiveScan 393
+             395:     42(ptr) AccessChain 24(data) 25 386 25 26
+                              Store 395 394
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.wavequad.comp.out b/Test/baseResults/hlsl.wavequad.comp.out
index 1647c7d..e4311c7 100644
--- a/Test/baseResults/hlsl.wavequad.comp.out
+++ b/Test/baseResults/hlsl.wavequad.comp.out
@@ -8027,7 +8027,7 @@
 
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 1120
+// Id's are bound by 1232
 
                               Capability Shader
                               Capability Float64
@@ -8035,7 +8035,7 @@
                               Capability GroupNonUniformQuad
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint GLCompute 4  "CSMain" 1115
+                              EntryPoint GLCompute 4  "CSMain" 1227
                               ExecutionMode 4 LocalSize 32 16 1
                               Source HLSL 500
                               Name 4  "CSMain"
@@ -8049,9 +8049,9 @@
                               Name 22  "data"
                               MemberName 22(data) 0  "@data"
                               Name 24  "data"
-                              Name 1113  "dti"
-                              Name 1115  "dti"
-                              Name 1117  "param"
+                              Name 1225  "dti"
+                              Name 1227  "dti"
+                              Name 1229  "param"
                               MemberDecorate 20(Types) 0 Offset 0
                               MemberDecorate 20(Types) 1 Offset 16
                               MemberDecorate 20(Types) 2 Offset 32
@@ -8061,7 +8061,7 @@
                               Decorate 22(data) BufferBlock
                               Decorate 24(data) DescriptorSet 0
                               Decorate 24(data) Binding 0
-                              Decorate 1115(dti) BuiltIn GlobalInvocationId
+                              Decorate 1227(dti) BuiltIn GlobalInvocationId
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -8087,34 +8087,34 @@
               35:      6(int) Constant 3
               42:             TypePointer Uniform 6(int)
               51:             TypeVector 6(int) 2
-              72:     14(int) Constant 1
-              75:             TypePointer Uniform 15(ivec4)
-              84:             TypePointer Uniform 14(int)
-              93:             TypeVector 14(int) 2
-             105:             TypeVector 14(int) 3
-             115:     14(int) Constant 2
-             118:             TypePointer Uniform 17(fvec4)
-             127:             TypePointer Uniform 16(float)
-             136:             TypeVector 16(float) 2
-             148:             TypeVector 16(float) 3
-             158:     14(int) Constant 3
-             161:             TypePointer Uniform 19(f64vec4)
-             170:             TypePointer Uniform 18(float64_t)
-             179:             TypeVector 18(float64_t) 2
-             191:             TypeVector 18(float64_t) 3
-             205:      6(int) Constant 1
-             358:      6(int) Constant 2
-            1114:             TypePointer Input 7(ivec3)
-       1115(dti):   1114(ptr) Variable Input
+              58:      6(int) Constant 1
+              73:      6(int) Constant 2
+              78:     14(int) Constant 1
+              81:             TypePointer Uniform 15(ivec4)
+              90:             TypePointer Uniform 14(int)
+              99:             TypeVector 14(int) 2
+             112:             TypeVector 14(int) 3
+             125:     14(int) Constant 2
+             128:             TypePointer Uniform 17(fvec4)
+             137:             TypePointer Uniform 16(float)
+             146:             TypeVector 16(float) 2
+             159:             TypeVector 16(float) 3
+             172:     14(int) Constant 3
+             175:             TypePointer Uniform 19(f64vec4)
+             184:             TypePointer Uniform 18(float64_t)
+             193:             TypeVector 18(float64_t) 2
+             206:             TypeVector 18(float64_t) 3
+            1226:             TypePointer Input 7(ivec3)
+       1227(dti):   1226(ptr) Variable Input
        4(CSMain):           2 Function None 3
                5:             Label
-       1113(dti):      8(ptr) Variable Function
-     1117(param):      8(ptr) Variable Function
-            1116:    7(ivec3) Load 1115(dti)
-                              Store 1113(dti) 1116
-            1118:    7(ivec3) Load 1113(dti)
-                              Store 1117(param) 1118
-            1119:           2 FunctionCall 11(@CSMain(vu3;) 1117(param)
+       1225(dti):      8(ptr) Variable Function
+     1229(param):      8(ptr) Variable Function
+            1228:    7(ivec3) Load 1227(dti)
+                              Store 1225(dti) 1228
+            1230:    7(ivec3) Load 1225(dti)
+                              Store 1229(param) 1230
+            1231:           2 FunctionCall 11(@CSMain(vu3;) 1229(param)
                               Return
                               FunctionEnd
 11(@CSMain(vu3;):           2 Function None 9
@@ -8146,1155 +8146,1351 @@
               53:   13(ivec4) Load 52
               54:   51(ivec2) VectorShuffle 53 53 0 1
               55:   51(ivec2) GroupNonUniformQuadBroadcast 35 54 26
-              56:     32(ptr) AccessChain 24(data) 25 48 25
-              57:   13(ivec4) Load 56
-              58:   13(ivec4) VectorShuffle 57 55 4 5 2 3
-                              Store 56 58
-              59:     27(ptr) AccessChain 10(dti) 26
-              60:      6(int) Load 59
+              56:     42(ptr) AccessChain 24(data) 25 48 25 26
+              57:      6(int) CompositeExtract 55 0
+                              Store 56 57
+              59:     42(ptr) AccessChain 24(data) 25 48 25 58
+              60:      6(int) CompositeExtract 55 1
+                              Store 59 60
               61:     27(ptr) AccessChain 10(dti) 26
               62:      6(int) Load 61
-              63:     32(ptr) AccessChain 24(data) 25 62 25
-              64:   13(ivec4) Load 63
-              65:    7(ivec3) VectorShuffle 64 64 0 1 2
-              66:    7(ivec3) GroupNonUniformQuadBroadcast 35 65 26
-              67:     32(ptr) AccessChain 24(data) 25 60 25
-              68:   13(ivec4) Load 67
-              69:   13(ivec4) VectorShuffle 68 66 4 5 6 3
-                              Store 67 69
-              70:     27(ptr) AccessChain 10(dti) 26
-              71:      6(int) Load 70
-              73:     27(ptr) AccessChain 10(dti) 26
-              74:      6(int) Load 73
-              76:     75(ptr) AccessChain 24(data) 25 74 72
-              77:   15(ivec4) Load 76
-              78:   15(ivec4) GroupNonUniformQuadBroadcast 35 77 26
-              79:     75(ptr) AccessChain 24(data) 25 71 72
-                              Store 79 78
-              80:     27(ptr) AccessChain 10(dti) 26
-              81:      6(int) Load 80
-              82:     27(ptr) AccessChain 10(dti) 26
-              83:      6(int) Load 82
-              85:     84(ptr) AccessChain 24(data) 25 83 72 26
-              86:     14(int) Load 85
-              87:     14(int) GroupNonUniformQuadBroadcast 35 86 26
-              88:     84(ptr) AccessChain 24(data) 25 81 72 26
-                              Store 88 87
-              89:     27(ptr) AccessChain 10(dti) 26
-              90:      6(int) Load 89
-              91:     27(ptr) AccessChain 10(dti) 26
-              92:      6(int) Load 91
-              94:     75(ptr) AccessChain 24(data) 25 92 72
-              95:   15(ivec4) Load 94
-              96:   93(ivec2) VectorShuffle 95 95 0 1
-              97:   93(ivec2) GroupNonUniformQuadBroadcast 35 96 26
-              98:     75(ptr) AccessChain 24(data) 25 90 72
-              99:   15(ivec4) Load 98
-             100:   15(ivec4) VectorShuffle 99 97 4 5 2 3
-                              Store 98 100
-             101:     27(ptr) AccessChain 10(dti) 26
-             102:      6(int) Load 101
-             103:     27(ptr) AccessChain 10(dti) 26
-             104:      6(int) Load 103
-             106:     75(ptr) AccessChain 24(data) 25 104 72
-             107:   15(ivec4) Load 106
-             108:  105(ivec3) VectorShuffle 107 107 0 1 2
-             109:  105(ivec3) GroupNonUniformQuadBroadcast 35 108 26
-             110:     75(ptr) AccessChain 24(data) 25 102 72
-             111:   15(ivec4) Load 110
-             112:   15(ivec4) VectorShuffle 111 109 4 5 6 3
-                              Store 110 112
-             113:     27(ptr) AccessChain 10(dti) 26
-             114:      6(int) Load 113
-             116:     27(ptr) AccessChain 10(dti) 26
-             117:      6(int) Load 116
-             119:    118(ptr) AccessChain 24(data) 25 117 115
-             120:   17(fvec4) Load 119
-             121:   17(fvec4) GroupNonUniformQuadBroadcast 35 120 26
-             122:    118(ptr) AccessChain 24(data) 25 114 115
-                              Store 122 121
+              63:     27(ptr) AccessChain 10(dti) 26
+              64:      6(int) Load 63
+              65:     32(ptr) AccessChain 24(data) 25 64 25
+              66:   13(ivec4) Load 65
+              67:    7(ivec3) VectorShuffle 66 66 0 1 2
+              68:    7(ivec3) GroupNonUniformQuadBroadcast 35 67 26
+              69:     42(ptr) AccessChain 24(data) 25 62 25 26
+              70:      6(int) CompositeExtract 68 0
+                              Store 69 70
+              71:     42(ptr) AccessChain 24(data) 25 62 25 58
+              72:      6(int) CompositeExtract 68 1
+                              Store 71 72
+              74:     42(ptr) AccessChain 24(data) 25 62 25 73
+              75:      6(int) CompositeExtract 68 2
+                              Store 74 75
+              76:     27(ptr) AccessChain 10(dti) 26
+              77:      6(int) Load 76
+              79:     27(ptr) AccessChain 10(dti) 26
+              80:      6(int) Load 79
+              82:     81(ptr) AccessChain 24(data) 25 80 78
+              83:   15(ivec4) Load 82
+              84:   15(ivec4) GroupNonUniformQuadBroadcast 35 83 26
+              85:     81(ptr) AccessChain 24(data) 25 77 78
+                              Store 85 84
+              86:     27(ptr) AccessChain 10(dti) 26
+              87:      6(int) Load 86
+              88:     27(ptr) AccessChain 10(dti) 26
+              89:      6(int) Load 88
+              91:     90(ptr) AccessChain 24(data) 25 89 78 26
+              92:     14(int) Load 91
+              93:     14(int) GroupNonUniformQuadBroadcast 35 92 26
+              94:     90(ptr) AccessChain 24(data) 25 87 78 26
+                              Store 94 93
+              95:     27(ptr) AccessChain 10(dti) 26
+              96:      6(int) Load 95
+              97:     27(ptr) AccessChain 10(dti) 26
+              98:      6(int) Load 97
+             100:     81(ptr) AccessChain 24(data) 25 98 78
+             101:   15(ivec4) Load 100
+             102:   99(ivec2) VectorShuffle 101 101 0 1
+             103:   99(ivec2) GroupNonUniformQuadBroadcast 35 102 26
+             104:     90(ptr) AccessChain 24(data) 25 96 78 26
+             105:     14(int) CompositeExtract 103 0
+                              Store 104 105
+             106:     90(ptr) AccessChain 24(data) 25 96 78 58
+             107:     14(int) CompositeExtract 103 1
+                              Store 106 107
+             108:     27(ptr) AccessChain 10(dti) 26
+             109:      6(int) Load 108
+             110:     27(ptr) AccessChain 10(dti) 26
+             111:      6(int) Load 110
+             113:     81(ptr) AccessChain 24(data) 25 111 78
+             114:   15(ivec4) Load 113
+             115:  112(ivec3) VectorShuffle 114 114 0 1 2
+             116:  112(ivec3) GroupNonUniformQuadBroadcast 35 115 26
+             117:     90(ptr) AccessChain 24(data) 25 109 78 26
+             118:     14(int) CompositeExtract 116 0
+                              Store 117 118
+             119:     90(ptr) AccessChain 24(data) 25 109 78 58
+             120:     14(int) CompositeExtract 116 1
+                              Store 119 120
+             121:     90(ptr) AccessChain 24(data) 25 109 78 73
+             122:     14(int) CompositeExtract 116 2
+                              Store 121 122
              123:     27(ptr) AccessChain 10(dti) 26
              124:      6(int) Load 123
-             125:     27(ptr) AccessChain 10(dti) 26
-             126:      6(int) Load 125
-             128:    127(ptr) AccessChain 24(data) 25 126 115 26
-             129:   16(float) Load 128
-             130:   16(float) GroupNonUniformQuadBroadcast 35 129 26
-             131:    127(ptr) AccessChain 24(data) 25 124 115 26
-                              Store 131 130
-             132:     27(ptr) AccessChain 10(dti) 26
-             133:      6(int) Load 132
-             134:     27(ptr) AccessChain 10(dti) 26
-             135:      6(int) Load 134
-             137:    118(ptr) AccessChain 24(data) 25 135 115
-             138:   17(fvec4) Load 137
-             139:  136(fvec2) VectorShuffle 138 138 0 1
-             140:  136(fvec2) GroupNonUniformQuadBroadcast 35 139 26
-             141:    118(ptr) AccessChain 24(data) 25 133 115
-             142:   17(fvec4) Load 141
-             143:   17(fvec4) VectorShuffle 142 140 4 5 2 3
-                              Store 141 143
+             126:     27(ptr) AccessChain 10(dti) 26
+             127:      6(int) Load 126
+             129:    128(ptr) AccessChain 24(data) 25 127 125
+             130:   17(fvec4) Load 129
+             131:   17(fvec4) GroupNonUniformQuadBroadcast 35 130 26
+             132:    128(ptr) AccessChain 24(data) 25 124 125
+                              Store 132 131
+             133:     27(ptr) AccessChain 10(dti) 26
+             134:      6(int) Load 133
+             135:     27(ptr) AccessChain 10(dti) 26
+             136:      6(int) Load 135
+             138:    137(ptr) AccessChain 24(data) 25 136 125 26
+             139:   16(float) Load 138
+             140:   16(float) GroupNonUniformQuadBroadcast 35 139 26
+             141:    137(ptr) AccessChain 24(data) 25 134 125 26
+                              Store 141 140
+             142:     27(ptr) AccessChain 10(dti) 26
+             143:      6(int) Load 142
              144:     27(ptr) AccessChain 10(dti) 26
              145:      6(int) Load 144
-             146:     27(ptr) AccessChain 10(dti) 26
-             147:      6(int) Load 146
-             149:    118(ptr) AccessChain 24(data) 25 147 115
-             150:   17(fvec4) Load 149
-             151:  148(fvec3) VectorShuffle 150 150 0 1 2
-             152:  148(fvec3) GroupNonUniformQuadBroadcast 35 151 26
-             153:    118(ptr) AccessChain 24(data) 25 145 115
-             154:   17(fvec4) Load 153
-             155:   17(fvec4) VectorShuffle 154 152 4 5 6 3
-                              Store 153 155
-             156:     27(ptr) AccessChain 10(dti) 26
-             157:      6(int) Load 156
-             159:     27(ptr) AccessChain 10(dti) 26
-             160:      6(int) Load 159
-             162:    161(ptr) AccessChain 24(data) 25 160 158
-             163: 19(f64vec4) Load 162
-             164: 19(f64vec4) GroupNonUniformQuadBroadcast 35 163 26
-             165:    161(ptr) AccessChain 24(data) 25 157 158
-                              Store 165 164
-             166:     27(ptr) AccessChain 10(dti) 26
-             167:      6(int) Load 166
-             168:     27(ptr) AccessChain 10(dti) 26
-             169:      6(int) Load 168
-             171:    170(ptr) AccessChain 24(data) 25 169 158 26
-             172:18(float64_t) Load 171
-             173:18(float64_t) GroupNonUniformQuadBroadcast 35 172 26
-             174:    170(ptr) AccessChain 24(data) 25 167 158 26
-                              Store 174 173
-             175:     27(ptr) AccessChain 10(dti) 26
-             176:      6(int) Load 175
-             177:     27(ptr) AccessChain 10(dti) 26
-             178:      6(int) Load 177
-             180:    161(ptr) AccessChain 24(data) 25 178 158
-             181: 19(f64vec4) Load 180
-             182:179(f64vec2) VectorShuffle 181 181 0 1
-             183:179(f64vec2) GroupNonUniformQuadBroadcast 35 182 26
-             184:    161(ptr) AccessChain 24(data) 25 176 158
-             185: 19(f64vec4) Load 184
-             186: 19(f64vec4) VectorShuffle 185 183 4 5 2 3
-                              Store 184 186
-             187:     27(ptr) AccessChain 10(dti) 26
-             188:      6(int) Load 187
+             147:    128(ptr) AccessChain 24(data) 25 145 125
+             148:   17(fvec4) Load 147
+             149:  146(fvec2) VectorShuffle 148 148 0 1
+             150:  146(fvec2) GroupNonUniformQuadBroadcast 35 149 26
+             151:    137(ptr) AccessChain 24(data) 25 143 125 26
+             152:   16(float) CompositeExtract 150 0
+                              Store 151 152
+             153:    137(ptr) AccessChain 24(data) 25 143 125 58
+             154:   16(float) CompositeExtract 150 1
+                              Store 153 154
+             155:     27(ptr) AccessChain 10(dti) 26
+             156:      6(int) Load 155
+             157:     27(ptr) AccessChain 10(dti) 26
+             158:      6(int) Load 157
+             160:    128(ptr) AccessChain 24(data) 25 158 125
+             161:   17(fvec4) Load 160
+             162:  159(fvec3) VectorShuffle 161 161 0 1 2
+             163:  159(fvec3) GroupNonUniformQuadBroadcast 35 162 26
+             164:    137(ptr) AccessChain 24(data) 25 156 125 26
+             165:   16(float) CompositeExtract 163 0
+                              Store 164 165
+             166:    137(ptr) AccessChain 24(data) 25 156 125 58
+             167:   16(float) CompositeExtract 163 1
+                              Store 166 167
+             168:    137(ptr) AccessChain 24(data) 25 156 125 73
+             169:   16(float) CompositeExtract 163 2
+                              Store 168 169
+             170:     27(ptr) AccessChain 10(dti) 26
+             171:      6(int) Load 170
+             173:     27(ptr) AccessChain 10(dti) 26
+             174:      6(int) Load 173
+             176:    175(ptr) AccessChain 24(data) 25 174 172
+             177: 19(f64vec4) Load 176
+             178: 19(f64vec4) GroupNonUniformQuadBroadcast 35 177 26
+             179:    175(ptr) AccessChain 24(data) 25 171 172
+                              Store 179 178
+             180:     27(ptr) AccessChain 10(dti) 26
+             181:      6(int) Load 180
+             182:     27(ptr) AccessChain 10(dti) 26
+             183:      6(int) Load 182
+             185:    184(ptr) AccessChain 24(data) 25 183 172 26
+             186:18(float64_t) Load 185
+             187:18(float64_t) GroupNonUniformQuadBroadcast 35 186 26
+             188:    184(ptr) AccessChain 24(data) 25 181 172 26
+                              Store 188 187
              189:     27(ptr) AccessChain 10(dti) 26
              190:      6(int) Load 189
-             192:    161(ptr) AccessChain 24(data) 25 190 158
-             193: 19(f64vec4) Load 192
-             194:191(f64vec3) VectorShuffle 193 193 0 1 2
-             195:191(f64vec3) GroupNonUniformQuadBroadcast 35 194 26
-             196:    161(ptr) AccessChain 24(data) 25 188 158
-             197: 19(f64vec4) Load 196
-             198: 19(f64vec4) VectorShuffle 197 195 4 5 6 3
-                              Store 196 198
-             199:     27(ptr) AccessChain 10(dti) 26
-             200:      6(int) Load 199
-             201:     27(ptr) AccessChain 10(dti) 26
-             202:      6(int) Load 201
-             203:     32(ptr) AccessChain 24(data) 25 202 25
-             204:   13(ivec4) Load 203
-             206:   13(ivec4) GroupNonUniformQuadBroadcast 35 204 205
-             207:     32(ptr) AccessChain 24(data) 25 200 25
-                              Store 207 206
-             208:     27(ptr) AccessChain 10(dti) 26
-             209:      6(int) Load 208
-             210:     27(ptr) AccessChain 10(dti) 26
-             211:      6(int) Load 210
-             212:     42(ptr) AccessChain 24(data) 25 211 25 26
-             213:      6(int) Load 212
-             214:      6(int) GroupNonUniformQuadBroadcast 35 213 205
-             215:     42(ptr) AccessChain 24(data) 25 209 25 26
-                              Store 215 214
-             216:     27(ptr) AccessChain 10(dti) 26
-             217:      6(int) Load 216
-             218:     27(ptr) AccessChain 10(dti) 26
-             219:      6(int) Load 218
-             220:     32(ptr) AccessChain 24(data) 25 219 25
-             221:   13(ivec4) Load 220
-             222:   51(ivec2) VectorShuffle 221 221 0 1
-             223:   51(ivec2) GroupNonUniformQuadBroadcast 35 222 205
-             224:     32(ptr) AccessChain 24(data) 25 217 25
-             225:   13(ivec4) Load 224
-             226:   13(ivec4) VectorShuffle 225 223 4 5 2 3
-                              Store 224 226
+             191:     27(ptr) AccessChain 10(dti) 26
+             192:      6(int) Load 191
+             194:    175(ptr) AccessChain 24(data) 25 192 172
+             195: 19(f64vec4) Load 194
+             196:193(f64vec2) VectorShuffle 195 195 0 1
+             197:193(f64vec2) GroupNonUniformQuadBroadcast 35 196 26
+             198:    184(ptr) AccessChain 24(data) 25 190 172 26
+             199:18(float64_t) CompositeExtract 197 0
+                              Store 198 199
+             200:    184(ptr) AccessChain 24(data) 25 190 172 58
+             201:18(float64_t) CompositeExtract 197 1
+                              Store 200 201
+             202:     27(ptr) AccessChain 10(dti) 26
+             203:      6(int) Load 202
+             204:     27(ptr) AccessChain 10(dti) 26
+             205:      6(int) Load 204
+             207:    175(ptr) AccessChain 24(data) 25 205 172
+             208: 19(f64vec4) Load 207
+             209:206(f64vec3) VectorShuffle 208 208 0 1 2
+             210:206(f64vec3) GroupNonUniformQuadBroadcast 35 209 26
+             211:    184(ptr) AccessChain 24(data) 25 203 172 26
+             212:18(float64_t) CompositeExtract 210 0
+                              Store 211 212
+             213:    184(ptr) AccessChain 24(data) 25 203 172 58
+             214:18(float64_t) CompositeExtract 210 1
+                              Store 213 214
+             215:    184(ptr) AccessChain 24(data) 25 203 172 73
+             216:18(float64_t) CompositeExtract 210 2
+                              Store 215 216
+             217:     27(ptr) AccessChain 10(dti) 26
+             218:      6(int) Load 217
+             219:     27(ptr) AccessChain 10(dti) 26
+             220:      6(int) Load 219
+             221:     32(ptr) AccessChain 24(data) 25 220 25
+             222:   13(ivec4) Load 221
+             223:   13(ivec4) GroupNonUniformQuadBroadcast 35 222 58
+             224:     32(ptr) AccessChain 24(data) 25 218 25
+                              Store 224 223
+             225:     27(ptr) AccessChain 10(dti) 26
+             226:      6(int) Load 225
              227:     27(ptr) AccessChain 10(dti) 26
              228:      6(int) Load 227
-             229:     27(ptr) AccessChain 10(dti) 26
+             229:     42(ptr) AccessChain 24(data) 25 228 25 26
              230:      6(int) Load 229
-             231:     32(ptr) AccessChain 24(data) 25 230 25
-             232:   13(ivec4) Load 231
-             233:    7(ivec3) VectorShuffle 232 232 0 1 2
-             234:    7(ivec3) GroupNonUniformQuadBroadcast 35 233 205
-             235:     32(ptr) AccessChain 24(data) 25 228 25
-             236:   13(ivec4) Load 235
-             237:   13(ivec4) VectorShuffle 236 234 4 5 6 3
-                              Store 235 237
-             238:     27(ptr) AccessChain 10(dti) 26
-             239:      6(int) Load 238
-             240:     27(ptr) AccessChain 10(dti) 26
-             241:      6(int) Load 240
-             242:     75(ptr) AccessChain 24(data) 25 241 72
-             243:   15(ivec4) Load 242
-             244:   15(ivec4) GroupNonUniformQuadBroadcast 35 243 205
-             245:     75(ptr) AccessChain 24(data) 25 239 72
-                              Store 245 244
-             246:     27(ptr) AccessChain 10(dti) 26
-             247:      6(int) Load 246
-             248:     27(ptr) AccessChain 10(dti) 26
-             249:      6(int) Load 248
-             250:     84(ptr) AccessChain 24(data) 25 249 72 26
-             251:     14(int) Load 250
-             252:     14(int) GroupNonUniformQuadBroadcast 35 251 205
-             253:     84(ptr) AccessChain 24(data) 25 247 72 26
-                              Store 253 252
-             254:     27(ptr) AccessChain 10(dti) 26
-             255:      6(int) Load 254
-             256:     27(ptr) AccessChain 10(dti) 26
-             257:      6(int) Load 256
-             258:     75(ptr) AccessChain 24(data) 25 257 72
-             259:   15(ivec4) Load 258
-             260:   93(ivec2) VectorShuffle 259 259 0 1
-             261:   93(ivec2) GroupNonUniformQuadBroadcast 35 260 205
-             262:     75(ptr) AccessChain 24(data) 25 255 72
-             263:   15(ivec4) Load 262
-             264:   15(ivec4) VectorShuffle 263 261 4 5 2 3
-                              Store 262 264
-             265:     27(ptr) AccessChain 10(dti) 26
-             266:      6(int) Load 265
+             231:      6(int) GroupNonUniformQuadBroadcast 35 230 58
+             232:     42(ptr) AccessChain 24(data) 25 226 25 26
+                              Store 232 231
+             233:     27(ptr) AccessChain 10(dti) 26
+             234:      6(int) Load 233
+             235:     27(ptr) AccessChain 10(dti) 26
+             236:      6(int) Load 235
+             237:     32(ptr) AccessChain 24(data) 25 236 25
+             238:   13(ivec4) Load 237
+             239:   51(ivec2) VectorShuffle 238 238 0 1
+             240:   51(ivec2) GroupNonUniformQuadBroadcast 35 239 58
+             241:     42(ptr) AccessChain 24(data) 25 234 25 26
+             242:      6(int) CompositeExtract 240 0
+                              Store 241 242
+             243:     42(ptr) AccessChain 24(data) 25 234 25 58
+             244:      6(int) CompositeExtract 240 1
+                              Store 243 244
+             245:     27(ptr) AccessChain 10(dti) 26
+             246:      6(int) Load 245
+             247:     27(ptr) AccessChain 10(dti) 26
+             248:      6(int) Load 247
+             249:     32(ptr) AccessChain 24(data) 25 248 25
+             250:   13(ivec4) Load 249
+             251:    7(ivec3) VectorShuffle 250 250 0 1 2
+             252:    7(ivec3) GroupNonUniformQuadBroadcast 35 251 58
+             253:     42(ptr) AccessChain 24(data) 25 246 25 26
+             254:      6(int) CompositeExtract 252 0
+                              Store 253 254
+             255:     42(ptr) AccessChain 24(data) 25 246 25 58
+             256:      6(int) CompositeExtract 252 1
+                              Store 255 256
+             257:     42(ptr) AccessChain 24(data) 25 246 25 73
+             258:      6(int) CompositeExtract 252 2
+                              Store 257 258
+             259:     27(ptr) AccessChain 10(dti) 26
+             260:      6(int) Load 259
+             261:     27(ptr) AccessChain 10(dti) 26
+             262:      6(int) Load 261
+             263:     81(ptr) AccessChain 24(data) 25 262 78
+             264:   15(ivec4) Load 263
+             265:   15(ivec4) GroupNonUniformQuadBroadcast 35 264 58
+             266:     81(ptr) AccessChain 24(data) 25 260 78
+                              Store 266 265
              267:     27(ptr) AccessChain 10(dti) 26
              268:      6(int) Load 267
-             269:     75(ptr) AccessChain 24(data) 25 268 72
-             270:   15(ivec4) Load 269
-             271:  105(ivec3) VectorShuffle 270 270 0 1 2
-             272:  105(ivec3) GroupNonUniformQuadBroadcast 35 271 205
-             273:     75(ptr) AccessChain 24(data) 25 266 72
-             274:   15(ivec4) Load 273
-             275:   15(ivec4) VectorShuffle 274 272 4 5 6 3
-                              Store 273 275
-             276:     27(ptr) AccessChain 10(dti) 26
-             277:      6(int) Load 276
-             278:     27(ptr) AccessChain 10(dti) 26
-             279:      6(int) Load 278
-             280:    118(ptr) AccessChain 24(data) 25 279 115
-             281:   17(fvec4) Load 280
-             282:   17(fvec4) GroupNonUniformQuadBroadcast 35 281 205
-             283:    118(ptr) AccessChain 24(data) 25 277 115
-                              Store 283 282
-             284:     27(ptr) AccessChain 10(dti) 26
-             285:      6(int) Load 284
-             286:     27(ptr) AccessChain 10(dti) 26
-             287:      6(int) Load 286
-             288:    127(ptr) AccessChain 24(data) 25 287 115 26
-             289:   16(float) Load 288
-             290:   16(float) GroupNonUniformQuadBroadcast 35 289 205
-             291:    127(ptr) AccessChain 24(data) 25 285 115 26
-                              Store 291 290
-             292:     27(ptr) AccessChain 10(dti) 26
-             293:      6(int) Load 292
-             294:     27(ptr) AccessChain 10(dti) 26
-             295:      6(int) Load 294
-             296:    118(ptr) AccessChain 24(data) 25 295 115
-             297:   17(fvec4) Load 296
-             298:  136(fvec2) VectorShuffle 297 297 0 1
-             299:  136(fvec2) GroupNonUniformQuadBroadcast 35 298 205
-             300:    118(ptr) AccessChain 24(data) 25 293 115
-             301:   17(fvec4) Load 300
-             302:   17(fvec4) VectorShuffle 301 299 4 5 2 3
-                              Store 300 302
+             269:     27(ptr) AccessChain 10(dti) 26
+             270:      6(int) Load 269
+             271:     90(ptr) AccessChain 24(data) 25 270 78 26
+             272:     14(int) Load 271
+             273:     14(int) GroupNonUniformQuadBroadcast 35 272 58
+             274:     90(ptr) AccessChain 24(data) 25 268 78 26
+                              Store 274 273
+             275:     27(ptr) AccessChain 10(dti) 26
+             276:      6(int) Load 275
+             277:     27(ptr) AccessChain 10(dti) 26
+             278:      6(int) Load 277
+             279:     81(ptr) AccessChain 24(data) 25 278 78
+             280:   15(ivec4) Load 279
+             281:   99(ivec2) VectorShuffle 280 280 0 1
+             282:   99(ivec2) GroupNonUniformQuadBroadcast 35 281 58
+             283:     90(ptr) AccessChain 24(data) 25 276 78 26
+             284:     14(int) CompositeExtract 282 0
+                              Store 283 284
+             285:     90(ptr) AccessChain 24(data) 25 276 78 58
+             286:     14(int) CompositeExtract 282 1
+                              Store 285 286
+             287:     27(ptr) AccessChain 10(dti) 26
+             288:      6(int) Load 287
+             289:     27(ptr) AccessChain 10(dti) 26
+             290:      6(int) Load 289
+             291:     81(ptr) AccessChain 24(data) 25 290 78
+             292:   15(ivec4) Load 291
+             293:  112(ivec3) VectorShuffle 292 292 0 1 2
+             294:  112(ivec3) GroupNonUniformQuadBroadcast 35 293 58
+             295:     90(ptr) AccessChain 24(data) 25 288 78 26
+             296:     14(int) CompositeExtract 294 0
+                              Store 295 296
+             297:     90(ptr) AccessChain 24(data) 25 288 78 58
+             298:     14(int) CompositeExtract 294 1
+                              Store 297 298
+             299:     90(ptr) AccessChain 24(data) 25 288 78 73
+             300:     14(int) CompositeExtract 294 2
+                              Store 299 300
+             301:     27(ptr) AccessChain 10(dti) 26
+             302:      6(int) Load 301
              303:     27(ptr) AccessChain 10(dti) 26
              304:      6(int) Load 303
-             305:     27(ptr) AccessChain 10(dti) 26
-             306:      6(int) Load 305
-             307:    118(ptr) AccessChain 24(data) 25 306 115
-             308:   17(fvec4) Load 307
-             309:  148(fvec3) VectorShuffle 308 308 0 1 2
-             310:  148(fvec3) GroupNonUniformQuadBroadcast 35 309 205
-             311:    118(ptr) AccessChain 24(data) 25 304 115
-             312:   17(fvec4) Load 311
-             313:   17(fvec4) VectorShuffle 312 310 4 5 6 3
-                              Store 311 313
-             314:     27(ptr) AccessChain 10(dti) 26
-             315:      6(int) Load 314
-             316:     27(ptr) AccessChain 10(dti) 26
-             317:      6(int) Load 316
-             318:    161(ptr) AccessChain 24(data) 25 317 158
-             319: 19(f64vec4) Load 318
-             320: 19(f64vec4) GroupNonUniformQuadBroadcast 35 319 205
-             321:    161(ptr) AccessChain 24(data) 25 315 158
-                              Store 321 320
-             322:     27(ptr) AccessChain 10(dti) 26
-             323:      6(int) Load 322
-             324:     27(ptr) AccessChain 10(dti) 26
-             325:      6(int) Load 324
-             326:    170(ptr) AccessChain 24(data) 25 325 158 26
-             327:18(float64_t) Load 326
-             328:18(float64_t) GroupNonUniformQuadBroadcast 35 327 205
-             329:    170(ptr) AccessChain 24(data) 25 323 158 26
-                              Store 329 328
-             330:     27(ptr) AccessChain 10(dti) 26
-             331:      6(int) Load 330
-             332:     27(ptr) AccessChain 10(dti) 26
-             333:      6(int) Load 332
-             334:    161(ptr) AccessChain 24(data) 25 333 158
-             335: 19(f64vec4) Load 334
-             336:179(f64vec2) VectorShuffle 335 335 0 1
-             337:179(f64vec2) GroupNonUniformQuadBroadcast 35 336 205
-             338:    161(ptr) AccessChain 24(data) 25 331 158
-             339: 19(f64vec4) Load 338
-             340: 19(f64vec4) VectorShuffle 339 337 4 5 2 3
-                              Store 338 340
-             341:     27(ptr) AccessChain 10(dti) 26
-             342:      6(int) Load 341
+             305:    128(ptr) AccessChain 24(data) 25 304 125
+             306:   17(fvec4) Load 305
+             307:   17(fvec4) GroupNonUniformQuadBroadcast 35 306 58
+             308:    128(ptr) AccessChain 24(data) 25 302 125
+                              Store 308 307
+             309:     27(ptr) AccessChain 10(dti) 26
+             310:      6(int) Load 309
+             311:     27(ptr) AccessChain 10(dti) 26
+             312:      6(int) Load 311
+             313:    137(ptr) AccessChain 24(data) 25 312 125 26
+             314:   16(float) Load 313
+             315:   16(float) GroupNonUniformQuadBroadcast 35 314 58
+             316:    137(ptr) AccessChain 24(data) 25 310 125 26
+                              Store 316 315
+             317:     27(ptr) AccessChain 10(dti) 26
+             318:      6(int) Load 317
+             319:     27(ptr) AccessChain 10(dti) 26
+             320:      6(int) Load 319
+             321:    128(ptr) AccessChain 24(data) 25 320 125
+             322:   17(fvec4) Load 321
+             323:  146(fvec2) VectorShuffle 322 322 0 1
+             324:  146(fvec2) GroupNonUniformQuadBroadcast 35 323 58
+             325:    137(ptr) AccessChain 24(data) 25 318 125 26
+             326:   16(float) CompositeExtract 324 0
+                              Store 325 326
+             327:    137(ptr) AccessChain 24(data) 25 318 125 58
+             328:   16(float) CompositeExtract 324 1
+                              Store 327 328
+             329:     27(ptr) AccessChain 10(dti) 26
+             330:      6(int) Load 329
+             331:     27(ptr) AccessChain 10(dti) 26
+             332:      6(int) Load 331
+             333:    128(ptr) AccessChain 24(data) 25 332 125
+             334:   17(fvec4) Load 333
+             335:  159(fvec3) VectorShuffle 334 334 0 1 2
+             336:  159(fvec3) GroupNonUniformQuadBroadcast 35 335 58
+             337:    137(ptr) AccessChain 24(data) 25 330 125 26
+             338:   16(float) CompositeExtract 336 0
+                              Store 337 338
+             339:    137(ptr) AccessChain 24(data) 25 330 125 58
+             340:   16(float) CompositeExtract 336 1
+                              Store 339 340
+             341:    137(ptr) AccessChain 24(data) 25 330 125 73
+             342:   16(float) CompositeExtract 336 2
+                              Store 341 342
              343:     27(ptr) AccessChain 10(dti) 26
              344:      6(int) Load 343
-             345:    161(ptr) AccessChain 24(data) 25 344 158
-             346: 19(f64vec4) Load 345
-             347:191(f64vec3) VectorShuffle 346 346 0 1 2
-             348:191(f64vec3) GroupNonUniformQuadBroadcast 35 347 205
-             349:    161(ptr) AccessChain 24(data) 25 342 158
-             350: 19(f64vec4) Load 349
-             351: 19(f64vec4) VectorShuffle 350 348 4 5 6 3
-                              Store 349 351
-             352:     27(ptr) AccessChain 10(dti) 26
-             353:      6(int) Load 352
-             354:     27(ptr) AccessChain 10(dti) 26
-             355:      6(int) Load 354
-             356:     32(ptr) AccessChain 24(data) 25 355 25
-             357:   13(ivec4) Load 356
-             359:   13(ivec4) GroupNonUniformQuadBroadcast 35 357 358
-             360:     32(ptr) AccessChain 24(data) 25 353 25
-                              Store 360 359
+             345:     27(ptr) AccessChain 10(dti) 26
+             346:      6(int) Load 345
+             347:    175(ptr) AccessChain 24(data) 25 346 172
+             348: 19(f64vec4) Load 347
+             349: 19(f64vec4) GroupNonUniformQuadBroadcast 35 348 58
+             350:    175(ptr) AccessChain 24(data) 25 344 172
+                              Store 350 349
+             351:     27(ptr) AccessChain 10(dti) 26
+             352:      6(int) Load 351
+             353:     27(ptr) AccessChain 10(dti) 26
+             354:      6(int) Load 353
+             355:    184(ptr) AccessChain 24(data) 25 354 172 26
+             356:18(float64_t) Load 355
+             357:18(float64_t) GroupNonUniformQuadBroadcast 35 356 58
+             358:    184(ptr) AccessChain 24(data) 25 352 172 26
+                              Store 358 357
+             359:     27(ptr) AccessChain 10(dti) 26
+             360:      6(int) Load 359
              361:     27(ptr) AccessChain 10(dti) 26
              362:      6(int) Load 361
-             363:     27(ptr) AccessChain 10(dti) 26
-             364:      6(int) Load 363
-             365:     42(ptr) AccessChain 24(data) 25 364 25 26
-             366:      6(int) Load 365
-             367:      6(int) GroupNonUniformQuadBroadcast 35 366 358
-             368:     42(ptr) AccessChain 24(data) 25 362 25 26
-                              Store 368 367
-             369:     27(ptr) AccessChain 10(dti) 26
-             370:      6(int) Load 369
+             363:    175(ptr) AccessChain 24(data) 25 362 172
+             364: 19(f64vec4) Load 363
+             365:193(f64vec2) VectorShuffle 364 364 0 1
+             366:193(f64vec2) GroupNonUniformQuadBroadcast 35 365 58
+             367:    184(ptr) AccessChain 24(data) 25 360 172 26
+             368:18(float64_t) CompositeExtract 366 0
+                              Store 367 368
+             369:    184(ptr) AccessChain 24(data) 25 360 172 58
+             370:18(float64_t) CompositeExtract 366 1
+                              Store 369 370
              371:     27(ptr) AccessChain 10(dti) 26
              372:      6(int) Load 371
-             373:     32(ptr) AccessChain 24(data) 25 372 25
-             374:   13(ivec4) Load 373
-             375:   51(ivec2) VectorShuffle 374 374 0 1
-             376:   51(ivec2) GroupNonUniformQuadBroadcast 35 375 358
-             377:     32(ptr) AccessChain 24(data) 25 370 25
-             378:   13(ivec4) Load 377
-             379:   13(ivec4) VectorShuffle 378 376 4 5 2 3
-                              Store 377 379
-             380:     27(ptr) AccessChain 10(dti) 26
-             381:      6(int) Load 380
-             382:     27(ptr) AccessChain 10(dti) 26
-             383:      6(int) Load 382
-             384:     32(ptr) AccessChain 24(data) 25 383 25
-             385:   13(ivec4) Load 384
-             386:    7(ivec3) VectorShuffle 385 385 0 1 2
-             387:    7(ivec3) GroupNonUniformQuadBroadcast 35 386 358
-             388:     32(ptr) AccessChain 24(data) 25 381 25
-             389:   13(ivec4) Load 388
-             390:   13(ivec4) VectorShuffle 389 387 4 5 6 3
-                              Store 388 390
-             391:     27(ptr) AccessChain 10(dti) 26
-             392:      6(int) Load 391
+             373:     27(ptr) AccessChain 10(dti) 26
+             374:      6(int) Load 373
+             375:    175(ptr) AccessChain 24(data) 25 374 172
+             376: 19(f64vec4) Load 375
+             377:206(f64vec3) VectorShuffle 376 376 0 1 2
+             378:206(f64vec3) GroupNonUniformQuadBroadcast 35 377 58
+             379:    184(ptr) AccessChain 24(data) 25 372 172 26
+             380:18(float64_t) CompositeExtract 378 0
+                              Store 379 380
+             381:    184(ptr) AccessChain 24(data) 25 372 172 58
+             382:18(float64_t) CompositeExtract 378 1
+                              Store 381 382
+             383:    184(ptr) AccessChain 24(data) 25 372 172 73
+             384:18(float64_t) CompositeExtract 378 2
+                              Store 383 384
+             385:     27(ptr) AccessChain 10(dti) 26
+             386:      6(int) Load 385
+             387:     27(ptr) AccessChain 10(dti) 26
+             388:      6(int) Load 387
+             389:     32(ptr) AccessChain 24(data) 25 388 25
+             390:   13(ivec4) Load 389
+             391:   13(ivec4) GroupNonUniformQuadBroadcast 35 390 73
+             392:     32(ptr) AccessChain 24(data) 25 386 25
+                              Store 392 391
              393:     27(ptr) AccessChain 10(dti) 26
              394:      6(int) Load 393
-             395:     75(ptr) AccessChain 24(data) 25 394 72
-             396:   15(ivec4) Load 395
-             397:   15(ivec4) GroupNonUniformQuadBroadcast 35 396 358
-             398:     75(ptr) AccessChain 24(data) 25 392 72
-                              Store 398 397
-             399:     27(ptr) AccessChain 10(dti) 26
-             400:      6(int) Load 399
+             395:     27(ptr) AccessChain 10(dti) 26
+             396:      6(int) Load 395
+             397:     42(ptr) AccessChain 24(data) 25 396 25 26
+             398:      6(int) Load 397
+             399:      6(int) GroupNonUniformQuadBroadcast 35 398 73
+             400:     42(ptr) AccessChain 24(data) 25 394 25 26
+                              Store 400 399
              401:     27(ptr) AccessChain 10(dti) 26
              402:      6(int) Load 401
-             403:     84(ptr) AccessChain 24(data) 25 402 72 26
-             404:     14(int) Load 403
-             405:     14(int) GroupNonUniformQuadBroadcast 35 404 358
-             406:     84(ptr) AccessChain 24(data) 25 400 72 26
-                              Store 406 405
-             407:     27(ptr) AccessChain 10(dti) 26
-             408:      6(int) Load 407
-             409:     27(ptr) AccessChain 10(dti) 26
-             410:      6(int) Load 409
-             411:     75(ptr) AccessChain 24(data) 25 410 72
-             412:   15(ivec4) Load 411
-             413:   93(ivec2) VectorShuffle 412 412 0 1
-             414:   93(ivec2) GroupNonUniformQuadBroadcast 35 413 358
-             415:     75(ptr) AccessChain 24(data) 25 408 72
-             416:   15(ivec4) Load 415
-             417:   15(ivec4) VectorShuffle 416 414 4 5 2 3
-                              Store 415 417
-             418:     27(ptr) AccessChain 10(dti) 26
-             419:      6(int) Load 418
-             420:     27(ptr) AccessChain 10(dti) 26
-             421:      6(int) Load 420
-             422:     75(ptr) AccessChain 24(data) 25 421 72
-             423:   15(ivec4) Load 422
-             424:  105(ivec3) VectorShuffle 423 423 0 1 2
-             425:  105(ivec3) GroupNonUniformQuadBroadcast 35 424 358
-             426:     75(ptr) AccessChain 24(data) 25 419 72
-             427:   15(ivec4) Load 426
-             428:   15(ivec4) VectorShuffle 427 425 4 5 6 3
-                              Store 426 428
+             403:     27(ptr) AccessChain 10(dti) 26
+             404:      6(int) Load 403
+             405:     32(ptr) AccessChain 24(data) 25 404 25
+             406:   13(ivec4) Load 405
+             407:   51(ivec2) VectorShuffle 406 406 0 1
+             408:   51(ivec2) GroupNonUniformQuadBroadcast 35 407 73
+             409:     42(ptr) AccessChain 24(data) 25 402 25 26
+             410:      6(int) CompositeExtract 408 0
+                              Store 409 410
+             411:     42(ptr) AccessChain 24(data) 25 402 25 58
+             412:      6(int) CompositeExtract 408 1
+                              Store 411 412
+             413:     27(ptr) AccessChain 10(dti) 26
+             414:      6(int) Load 413
+             415:     27(ptr) AccessChain 10(dti) 26
+             416:      6(int) Load 415
+             417:     32(ptr) AccessChain 24(data) 25 416 25
+             418:   13(ivec4) Load 417
+             419:    7(ivec3) VectorShuffle 418 418 0 1 2
+             420:    7(ivec3) GroupNonUniformQuadBroadcast 35 419 73
+             421:     42(ptr) AccessChain 24(data) 25 414 25 26
+             422:      6(int) CompositeExtract 420 0
+                              Store 421 422
+             423:     42(ptr) AccessChain 24(data) 25 414 25 58
+             424:      6(int) CompositeExtract 420 1
+                              Store 423 424
+             425:     42(ptr) AccessChain 24(data) 25 414 25 73
+             426:      6(int) CompositeExtract 420 2
+                              Store 425 426
+             427:     27(ptr) AccessChain 10(dti) 26
+             428:      6(int) Load 427
              429:     27(ptr) AccessChain 10(dti) 26
              430:      6(int) Load 429
-             431:     27(ptr) AccessChain 10(dti) 26
-             432:      6(int) Load 431
-             433:    118(ptr) AccessChain 24(data) 25 432 115
-             434:   17(fvec4) Load 433
-             435:   17(fvec4) GroupNonUniformQuadBroadcast 35 434 358
-             436:    118(ptr) AccessChain 24(data) 25 430 115
-                              Store 436 435
+             431:     81(ptr) AccessChain 24(data) 25 430 78
+             432:   15(ivec4) Load 431
+             433:   15(ivec4) GroupNonUniformQuadBroadcast 35 432 73
+             434:     81(ptr) AccessChain 24(data) 25 428 78
+                              Store 434 433
+             435:     27(ptr) AccessChain 10(dti) 26
+             436:      6(int) Load 435
              437:     27(ptr) AccessChain 10(dti) 26
              438:      6(int) Load 437
-             439:     27(ptr) AccessChain 10(dti) 26
-             440:      6(int) Load 439
-             441:    127(ptr) AccessChain 24(data) 25 440 115 26
-             442:   16(float) Load 441
-             443:   16(float) GroupNonUniformQuadBroadcast 35 442 358
-             444:    127(ptr) AccessChain 24(data) 25 438 115 26
-                              Store 444 443
+             439:     90(ptr) AccessChain 24(data) 25 438 78 26
+             440:     14(int) Load 439
+             441:     14(int) GroupNonUniformQuadBroadcast 35 440 73
+             442:     90(ptr) AccessChain 24(data) 25 436 78 26
+                              Store 442 441
+             443:     27(ptr) AccessChain 10(dti) 26
+             444:      6(int) Load 443
              445:     27(ptr) AccessChain 10(dti) 26
              446:      6(int) Load 445
-             447:     27(ptr) AccessChain 10(dti) 26
-             448:      6(int) Load 447
-             449:    118(ptr) AccessChain 24(data) 25 448 115
-             450:   17(fvec4) Load 449
-             451:  136(fvec2) VectorShuffle 450 450 0 1
-             452:  136(fvec2) GroupNonUniformQuadBroadcast 35 451 358
-             453:    118(ptr) AccessChain 24(data) 25 446 115
-             454:   17(fvec4) Load 453
-             455:   17(fvec4) VectorShuffle 454 452 4 5 2 3
-                              Store 453 455
-             456:     27(ptr) AccessChain 10(dti) 26
-             457:      6(int) Load 456
-             458:     27(ptr) AccessChain 10(dti) 26
-             459:      6(int) Load 458
-             460:    118(ptr) AccessChain 24(data) 25 459 115
-             461:   17(fvec4) Load 460
-             462:  148(fvec3) VectorShuffle 461 461 0 1 2
-             463:  148(fvec3) GroupNonUniformQuadBroadcast 35 462 358
-             464:    118(ptr) AccessChain 24(data) 25 457 115
-             465:   17(fvec4) Load 464
-             466:   17(fvec4) VectorShuffle 465 463 4 5 6 3
-                              Store 464 466
-             467:     27(ptr) AccessChain 10(dti) 26
-             468:      6(int) Load 467
+             447:     81(ptr) AccessChain 24(data) 25 446 78
+             448:   15(ivec4) Load 447
+             449:   99(ivec2) VectorShuffle 448 448 0 1
+             450:   99(ivec2) GroupNonUniformQuadBroadcast 35 449 73
+             451:     90(ptr) AccessChain 24(data) 25 444 78 26
+             452:     14(int) CompositeExtract 450 0
+                              Store 451 452
+             453:     90(ptr) AccessChain 24(data) 25 444 78 58
+             454:     14(int) CompositeExtract 450 1
+                              Store 453 454
+             455:     27(ptr) AccessChain 10(dti) 26
+             456:      6(int) Load 455
+             457:     27(ptr) AccessChain 10(dti) 26
+             458:      6(int) Load 457
+             459:     81(ptr) AccessChain 24(data) 25 458 78
+             460:   15(ivec4) Load 459
+             461:  112(ivec3) VectorShuffle 460 460 0 1 2
+             462:  112(ivec3) GroupNonUniformQuadBroadcast 35 461 73
+             463:     90(ptr) AccessChain 24(data) 25 456 78 26
+             464:     14(int) CompositeExtract 462 0
+                              Store 463 464
+             465:     90(ptr) AccessChain 24(data) 25 456 78 58
+             466:     14(int) CompositeExtract 462 1
+                              Store 465 466
+             467:     90(ptr) AccessChain 24(data) 25 456 78 73
+             468:     14(int) CompositeExtract 462 2
+                              Store 467 468
              469:     27(ptr) AccessChain 10(dti) 26
              470:      6(int) Load 469
-             471:    161(ptr) AccessChain 24(data) 25 470 158
-             472: 19(f64vec4) Load 471
-             473: 19(f64vec4) GroupNonUniformQuadBroadcast 35 472 358
-             474:    161(ptr) AccessChain 24(data) 25 468 158
-                              Store 474 473
-             475:     27(ptr) AccessChain 10(dti) 26
-             476:      6(int) Load 475
+             471:     27(ptr) AccessChain 10(dti) 26
+             472:      6(int) Load 471
+             473:    128(ptr) AccessChain 24(data) 25 472 125
+             474:   17(fvec4) Load 473
+             475:   17(fvec4) GroupNonUniformQuadBroadcast 35 474 73
+             476:    128(ptr) AccessChain 24(data) 25 470 125
+                              Store 476 475
              477:     27(ptr) AccessChain 10(dti) 26
              478:      6(int) Load 477
-             479:    170(ptr) AccessChain 24(data) 25 478 158 26
-             480:18(float64_t) Load 479
-             481:18(float64_t) GroupNonUniformQuadBroadcast 35 480 358
-             482:    170(ptr) AccessChain 24(data) 25 476 158 26
-                              Store 482 481
-             483:     27(ptr) AccessChain 10(dti) 26
-             484:      6(int) Load 483
+             479:     27(ptr) AccessChain 10(dti) 26
+             480:      6(int) Load 479
+             481:    137(ptr) AccessChain 24(data) 25 480 125 26
+             482:   16(float) Load 481
+             483:   16(float) GroupNonUniformQuadBroadcast 35 482 73
+             484:    137(ptr) AccessChain 24(data) 25 478 125 26
+                              Store 484 483
              485:     27(ptr) AccessChain 10(dti) 26
              486:      6(int) Load 485
-             487:    161(ptr) AccessChain 24(data) 25 486 158
-             488: 19(f64vec4) Load 487
-             489:179(f64vec2) VectorShuffle 488 488 0 1
-             490:179(f64vec2) GroupNonUniformQuadBroadcast 35 489 358
-             491:    161(ptr) AccessChain 24(data) 25 484 158
-             492: 19(f64vec4) Load 491
-             493: 19(f64vec4) VectorShuffle 492 490 4 5 2 3
-                              Store 491 493
-             494:     27(ptr) AccessChain 10(dti) 26
-             495:      6(int) Load 494
-             496:     27(ptr) AccessChain 10(dti) 26
-             497:      6(int) Load 496
-             498:    161(ptr) AccessChain 24(data) 25 497 158
-             499: 19(f64vec4) Load 498
-             500:191(f64vec3) VectorShuffle 499 499 0 1 2
-             501:191(f64vec3) GroupNonUniformQuadBroadcast 35 500 358
-             502:    161(ptr) AccessChain 24(data) 25 495 158
-             503: 19(f64vec4) Load 502
-             504: 19(f64vec4) VectorShuffle 503 501 4 5 6 3
-                              Store 502 504
-             505:     27(ptr) AccessChain 10(dti) 26
-             506:      6(int) Load 505
-             507:     27(ptr) AccessChain 10(dti) 26
-             508:      6(int) Load 507
-             509:     32(ptr) AccessChain 24(data) 25 508 25
-             510:   13(ivec4) Load 509
-             511:   13(ivec4) GroupNonUniformQuadBroadcast 35 510 35
-             512:     32(ptr) AccessChain 24(data) 25 506 25
-                              Store 512 511
+             487:     27(ptr) AccessChain 10(dti) 26
+             488:      6(int) Load 487
+             489:    128(ptr) AccessChain 24(data) 25 488 125
+             490:   17(fvec4) Load 489
+             491:  146(fvec2) VectorShuffle 490 490 0 1
+             492:  146(fvec2) GroupNonUniformQuadBroadcast 35 491 73
+             493:    137(ptr) AccessChain 24(data) 25 486 125 26
+             494:   16(float) CompositeExtract 492 0
+                              Store 493 494
+             495:    137(ptr) AccessChain 24(data) 25 486 125 58
+             496:   16(float) CompositeExtract 492 1
+                              Store 495 496
+             497:     27(ptr) AccessChain 10(dti) 26
+             498:      6(int) Load 497
+             499:     27(ptr) AccessChain 10(dti) 26
+             500:      6(int) Load 499
+             501:    128(ptr) AccessChain 24(data) 25 500 125
+             502:   17(fvec4) Load 501
+             503:  159(fvec3) VectorShuffle 502 502 0 1 2
+             504:  159(fvec3) GroupNonUniformQuadBroadcast 35 503 73
+             505:    137(ptr) AccessChain 24(data) 25 498 125 26
+             506:   16(float) CompositeExtract 504 0
+                              Store 505 506
+             507:    137(ptr) AccessChain 24(data) 25 498 125 58
+             508:   16(float) CompositeExtract 504 1
+                              Store 507 508
+             509:    137(ptr) AccessChain 24(data) 25 498 125 73
+             510:   16(float) CompositeExtract 504 2
+                              Store 509 510
+             511:     27(ptr) AccessChain 10(dti) 26
+             512:      6(int) Load 511
              513:     27(ptr) AccessChain 10(dti) 26
              514:      6(int) Load 513
-             515:     27(ptr) AccessChain 10(dti) 26
-             516:      6(int) Load 515
-             517:     42(ptr) AccessChain 24(data) 25 516 25 26
-             518:      6(int) Load 517
-             519:      6(int) GroupNonUniformQuadBroadcast 35 518 35
-             520:     42(ptr) AccessChain 24(data) 25 514 25 26
-                              Store 520 519
+             515:    175(ptr) AccessChain 24(data) 25 514 172
+             516: 19(f64vec4) Load 515
+             517: 19(f64vec4) GroupNonUniformQuadBroadcast 35 516 73
+             518:    175(ptr) AccessChain 24(data) 25 512 172
+                              Store 518 517
+             519:     27(ptr) AccessChain 10(dti) 26
+             520:      6(int) Load 519
              521:     27(ptr) AccessChain 10(dti) 26
              522:      6(int) Load 521
-             523:     27(ptr) AccessChain 10(dti) 26
-             524:      6(int) Load 523
-             525:     32(ptr) AccessChain 24(data) 25 524 25
-             526:   13(ivec4) Load 525
-             527:   51(ivec2) VectorShuffle 526 526 0 1
-             528:   51(ivec2) GroupNonUniformQuadBroadcast 35 527 35
-             529:     32(ptr) AccessChain 24(data) 25 522 25
-             530:   13(ivec4) Load 529
-             531:   13(ivec4) VectorShuffle 530 528 4 5 2 3
-                              Store 529 531
-             532:     27(ptr) AccessChain 10(dti) 26
-             533:      6(int) Load 532
-             534:     27(ptr) AccessChain 10(dti) 26
-             535:      6(int) Load 534
-             536:     32(ptr) AccessChain 24(data) 25 535 25
-             537:   13(ivec4) Load 536
-             538:    7(ivec3) VectorShuffle 537 537 0 1 2
-             539:    7(ivec3) GroupNonUniformQuadBroadcast 35 538 35
-             540:     32(ptr) AccessChain 24(data) 25 533 25
-             541:   13(ivec4) Load 540
-             542:   13(ivec4) VectorShuffle 541 539 4 5 6 3
-                              Store 540 542
-             543:     27(ptr) AccessChain 10(dti) 26
-             544:      6(int) Load 543
-             545:     27(ptr) AccessChain 10(dti) 26
-             546:      6(int) Load 545
-             547:     75(ptr) AccessChain 24(data) 25 546 72
-             548:   15(ivec4) Load 547
-             549:   15(ivec4) GroupNonUniformQuadBroadcast 35 548 35
-             550:     75(ptr) AccessChain 24(data) 25 544 72
-                              Store 550 549
-             551:     27(ptr) AccessChain 10(dti) 26
-             552:      6(int) Load 551
+             523:    184(ptr) AccessChain 24(data) 25 522 172 26
+             524:18(float64_t) Load 523
+             525:18(float64_t) GroupNonUniformQuadBroadcast 35 524 73
+             526:    184(ptr) AccessChain 24(data) 25 520 172 26
+                              Store 526 525
+             527:     27(ptr) AccessChain 10(dti) 26
+             528:      6(int) Load 527
+             529:     27(ptr) AccessChain 10(dti) 26
+             530:      6(int) Load 529
+             531:    175(ptr) AccessChain 24(data) 25 530 172
+             532: 19(f64vec4) Load 531
+             533:193(f64vec2) VectorShuffle 532 532 0 1
+             534:193(f64vec2) GroupNonUniformQuadBroadcast 35 533 73
+             535:    184(ptr) AccessChain 24(data) 25 528 172 26
+             536:18(float64_t) CompositeExtract 534 0
+                              Store 535 536
+             537:    184(ptr) AccessChain 24(data) 25 528 172 58
+             538:18(float64_t) CompositeExtract 534 1
+                              Store 537 538
+             539:     27(ptr) AccessChain 10(dti) 26
+             540:      6(int) Load 539
+             541:     27(ptr) AccessChain 10(dti) 26
+             542:      6(int) Load 541
+             543:    175(ptr) AccessChain 24(data) 25 542 172
+             544: 19(f64vec4) Load 543
+             545:206(f64vec3) VectorShuffle 544 544 0 1 2
+             546:206(f64vec3) GroupNonUniformQuadBroadcast 35 545 73
+             547:    184(ptr) AccessChain 24(data) 25 540 172 26
+             548:18(float64_t) CompositeExtract 546 0
+                              Store 547 548
+             549:    184(ptr) AccessChain 24(data) 25 540 172 58
+             550:18(float64_t) CompositeExtract 546 1
+                              Store 549 550
+             551:    184(ptr) AccessChain 24(data) 25 540 172 73
+             552:18(float64_t) CompositeExtract 546 2
+                              Store 551 552
              553:     27(ptr) AccessChain 10(dti) 26
              554:      6(int) Load 553
-             555:     84(ptr) AccessChain 24(data) 25 554 72 26
-             556:     14(int) Load 555
-             557:     14(int) GroupNonUniformQuadBroadcast 35 556 35
-             558:     84(ptr) AccessChain 24(data) 25 552 72 26
-                              Store 558 557
-             559:     27(ptr) AccessChain 10(dti) 26
-             560:      6(int) Load 559
+             555:     27(ptr) AccessChain 10(dti) 26
+             556:      6(int) Load 555
+             557:     32(ptr) AccessChain 24(data) 25 556 25
+             558:   13(ivec4) Load 557
+             559:   13(ivec4) GroupNonUniformQuadBroadcast 35 558 35
+             560:     32(ptr) AccessChain 24(data) 25 554 25
+                              Store 560 559
              561:     27(ptr) AccessChain 10(dti) 26
              562:      6(int) Load 561
-             563:     75(ptr) AccessChain 24(data) 25 562 72
-             564:   15(ivec4) Load 563
-             565:   93(ivec2) VectorShuffle 564 564 0 1
-             566:   93(ivec2) GroupNonUniformQuadBroadcast 35 565 35
-             567:     75(ptr) AccessChain 24(data) 25 560 72
-             568:   15(ivec4) Load 567
-             569:   15(ivec4) VectorShuffle 568 566 4 5 2 3
-                              Store 567 569
-             570:     27(ptr) AccessChain 10(dti) 26
-             571:      6(int) Load 570
-             572:     27(ptr) AccessChain 10(dti) 26
-             573:      6(int) Load 572
-             574:     75(ptr) AccessChain 24(data) 25 573 72
-             575:   15(ivec4) Load 574
-             576:  105(ivec3) VectorShuffle 575 575 0 1 2
-             577:  105(ivec3) GroupNonUniformQuadBroadcast 35 576 35
-             578:     75(ptr) AccessChain 24(data) 25 571 72
-             579:   15(ivec4) Load 578
-             580:   15(ivec4) VectorShuffle 579 577 4 5 6 3
-                              Store 578 580
+             563:     27(ptr) AccessChain 10(dti) 26
+             564:      6(int) Load 563
+             565:     42(ptr) AccessChain 24(data) 25 564 25 26
+             566:      6(int) Load 565
+             567:      6(int) GroupNonUniformQuadBroadcast 35 566 35
+             568:     42(ptr) AccessChain 24(data) 25 562 25 26
+                              Store 568 567
+             569:     27(ptr) AccessChain 10(dti) 26
+             570:      6(int) Load 569
+             571:     27(ptr) AccessChain 10(dti) 26
+             572:      6(int) Load 571
+             573:     32(ptr) AccessChain 24(data) 25 572 25
+             574:   13(ivec4) Load 573
+             575:   51(ivec2) VectorShuffle 574 574 0 1
+             576:   51(ivec2) GroupNonUniformQuadBroadcast 35 575 35
+             577:     42(ptr) AccessChain 24(data) 25 570 25 26
+             578:      6(int) CompositeExtract 576 0
+                              Store 577 578
+             579:     42(ptr) AccessChain 24(data) 25 570 25 58
+             580:      6(int) CompositeExtract 576 1
+                              Store 579 580
              581:     27(ptr) AccessChain 10(dti) 26
              582:      6(int) Load 581
              583:     27(ptr) AccessChain 10(dti) 26
              584:      6(int) Load 583
-             585:    118(ptr) AccessChain 24(data) 25 584 115
-             586:   17(fvec4) Load 585
-             587:   17(fvec4) GroupNonUniformQuadBroadcast 35 586 35
-             588:    118(ptr) AccessChain 24(data) 25 582 115
-                              Store 588 587
-             589:     27(ptr) AccessChain 10(dti) 26
-             590:      6(int) Load 589
-             591:     27(ptr) AccessChain 10(dti) 26
-             592:      6(int) Load 591
-             593:    127(ptr) AccessChain 24(data) 25 592 115 26
-             594:   16(float) Load 593
-             595:   16(float) GroupNonUniformQuadBroadcast 35 594 35
-             596:    127(ptr) AccessChain 24(data) 25 590 115 26
-                              Store 596 595
+             585:     32(ptr) AccessChain 24(data) 25 584 25
+             586:   13(ivec4) Load 585
+             587:    7(ivec3) VectorShuffle 586 586 0 1 2
+             588:    7(ivec3) GroupNonUniformQuadBroadcast 35 587 35
+             589:     42(ptr) AccessChain 24(data) 25 582 25 26
+             590:      6(int) CompositeExtract 588 0
+                              Store 589 590
+             591:     42(ptr) AccessChain 24(data) 25 582 25 58
+             592:      6(int) CompositeExtract 588 1
+                              Store 591 592
+             593:     42(ptr) AccessChain 24(data) 25 582 25 73
+             594:      6(int) CompositeExtract 588 2
+                              Store 593 594
+             595:     27(ptr) AccessChain 10(dti) 26
+             596:      6(int) Load 595
              597:     27(ptr) AccessChain 10(dti) 26
              598:      6(int) Load 597
-             599:     27(ptr) AccessChain 10(dti) 26
-             600:      6(int) Load 599
-             601:    118(ptr) AccessChain 24(data) 25 600 115
-             602:   17(fvec4) Load 601
-             603:  136(fvec2) VectorShuffle 602 602 0 1
-             604:  136(fvec2) GroupNonUniformQuadBroadcast 35 603 35
-             605:    118(ptr) AccessChain 24(data) 25 598 115
-             606:   17(fvec4) Load 605
-             607:   17(fvec4) VectorShuffle 606 604 4 5 2 3
-                              Store 605 607
-             608:     27(ptr) AccessChain 10(dti) 26
-             609:      6(int) Load 608
-             610:     27(ptr) AccessChain 10(dti) 26
-             611:      6(int) Load 610
-             612:    118(ptr) AccessChain 24(data) 25 611 115
-             613:   17(fvec4) Load 612
-             614:  148(fvec3) VectorShuffle 613 613 0 1 2
-             615:  148(fvec3) GroupNonUniformQuadBroadcast 35 614 35
-             616:    118(ptr) AccessChain 24(data) 25 609 115
-             617:   17(fvec4) Load 616
-             618:   17(fvec4) VectorShuffle 617 615 4 5 6 3
-                              Store 616 618
-             619:     27(ptr) AccessChain 10(dti) 26
-             620:      6(int) Load 619
-             621:     27(ptr) AccessChain 10(dti) 26
-             622:      6(int) Load 621
-             623:    161(ptr) AccessChain 24(data) 25 622 158
-             624: 19(f64vec4) Load 623
-             625: 19(f64vec4) GroupNonUniformQuadBroadcast 35 624 35
-             626:    161(ptr) AccessChain 24(data) 25 620 158
-                              Store 626 625
-             627:     27(ptr) AccessChain 10(dti) 26
-             628:      6(int) Load 627
-             629:     27(ptr) AccessChain 10(dti) 26
-             630:      6(int) Load 629
-             631:    170(ptr) AccessChain 24(data) 25 630 158 26
-             632:18(float64_t) Load 631
-             633:18(float64_t) GroupNonUniformQuadBroadcast 35 632 35
-             634:    170(ptr) AccessChain 24(data) 25 628 158 26
-                              Store 634 633
-             635:     27(ptr) AccessChain 10(dti) 26
-             636:      6(int) Load 635
+             599:     81(ptr) AccessChain 24(data) 25 598 78
+             600:   15(ivec4) Load 599
+             601:   15(ivec4) GroupNonUniformQuadBroadcast 35 600 35
+             602:     81(ptr) AccessChain 24(data) 25 596 78
+                              Store 602 601
+             603:     27(ptr) AccessChain 10(dti) 26
+             604:      6(int) Load 603
+             605:     27(ptr) AccessChain 10(dti) 26
+             606:      6(int) Load 605
+             607:     90(ptr) AccessChain 24(data) 25 606 78 26
+             608:     14(int) Load 607
+             609:     14(int) GroupNonUniformQuadBroadcast 35 608 35
+             610:     90(ptr) AccessChain 24(data) 25 604 78 26
+                              Store 610 609
+             611:     27(ptr) AccessChain 10(dti) 26
+             612:      6(int) Load 611
+             613:     27(ptr) AccessChain 10(dti) 26
+             614:      6(int) Load 613
+             615:     81(ptr) AccessChain 24(data) 25 614 78
+             616:   15(ivec4) Load 615
+             617:   99(ivec2) VectorShuffle 616 616 0 1
+             618:   99(ivec2) GroupNonUniformQuadBroadcast 35 617 35
+             619:     90(ptr) AccessChain 24(data) 25 612 78 26
+             620:     14(int) CompositeExtract 618 0
+                              Store 619 620
+             621:     90(ptr) AccessChain 24(data) 25 612 78 58
+             622:     14(int) CompositeExtract 618 1
+                              Store 621 622
+             623:     27(ptr) AccessChain 10(dti) 26
+             624:      6(int) Load 623
+             625:     27(ptr) AccessChain 10(dti) 26
+             626:      6(int) Load 625
+             627:     81(ptr) AccessChain 24(data) 25 626 78
+             628:   15(ivec4) Load 627
+             629:  112(ivec3) VectorShuffle 628 628 0 1 2
+             630:  112(ivec3) GroupNonUniformQuadBroadcast 35 629 35
+             631:     90(ptr) AccessChain 24(data) 25 624 78 26
+             632:     14(int) CompositeExtract 630 0
+                              Store 631 632
+             633:     90(ptr) AccessChain 24(data) 25 624 78 58
+             634:     14(int) CompositeExtract 630 1
+                              Store 633 634
+             635:     90(ptr) AccessChain 24(data) 25 624 78 73
+             636:     14(int) CompositeExtract 630 2
+                              Store 635 636
              637:     27(ptr) AccessChain 10(dti) 26
              638:      6(int) Load 637
-             639:    161(ptr) AccessChain 24(data) 25 638 158
-             640: 19(f64vec4) Load 639
-             641:179(f64vec2) VectorShuffle 640 640 0 1
-             642:179(f64vec2) GroupNonUniformQuadBroadcast 35 641 35
-             643:    161(ptr) AccessChain 24(data) 25 636 158
-             644: 19(f64vec4) Load 643
-             645: 19(f64vec4) VectorShuffle 644 642 4 5 2 3
-                              Store 643 645
-             646:     27(ptr) AccessChain 10(dti) 26
-             647:      6(int) Load 646
-             648:     27(ptr) AccessChain 10(dti) 26
-             649:      6(int) Load 648
-             650:    161(ptr) AccessChain 24(data) 25 649 158
-             651: 19(f64vec4) Load 650
-             652:191(f64vec3) VectorShuffle 651 651 0 1 2
-             653:191(f64vec3) GroupNonUniformQuadBroadcast 35 652 35
-             654:    161(ptr) AccessChain 24(data) 25 647 158
-             655: 19(f64vec4) Load 654
-             656: 19(f64vec4) VectorShuffle 655 653 4 5 6 3
-                              Store 654 656
-             657:     27(ptr) AccessChain 10(dti) 26
-             658:      6(int) Load 657
-             659:     27(ptr) AccessChain 10(dti) 26
-             660:      6(int) Load 659
-             661:     32(ptr) AccessChain 24(data) 25 660 25
-             662:   13(ivec4) Load 661
-             663:   13(ivec4) GroupNonUniformQuadSwap 35 662 26
-             664:     32(ptr) AccessChain 24(data) 25 658 25
-                              Store 664 663
+             639:     27(ptr) AccessChain 10(dti) 26
+             640:      6(int) Load 639
+             641:    128(ptr) AccessChain 24(data) 25 640 125
+             642:   17(fvec4) Load 641
+             643:   17(fvec4) GroupNonUniformQuadBroadcast 35 642 35
+             644:    128(ptr) AccessChain 24(data) 25 638 125
+                              Store 644 643
+             645:     27(ptr) AccessChain 10(dti) 26
+             646:      6(int) Load 645
+             647:     27(ptr) AccessChain 10(dti) 26
+             648:      6(int) Load 647
+             649:    137(ptr) AccessChain 24(data) 25 648 125 26
+             650:   16(float) Load 649
+             651:   16(float) GroupNonUniformQuadBroadcast 35 650 35
+             652:    137(ptr) AccessChain 24(data) 25 646 125 26
+                              Store 652 651
+             653:     27(ptr) AccessChain 10(dti) 26
+             654:      6(int) Load 653
+             655:     27(ptr) AccessChain 10(dti) 26
+             656:      6(int) Load 655
+             657:    128(ptr) AccessChain 24(data) 25 656 125
+             658:   17(fvec4) Load 657
+             659:  146(fvec2) VectorShuffle 658 658 0 1
+             660:  146(fvec2) GroupNonUniformQuadBroadcast 35 659 35
+             661:    137(ptr) AccessChain 24(data) 25 654 125 26
+             662:   16(float) CompositeExtract 660 0
+                              Store 661 662
+             663:    137(ptr) AccessChain 24(data) 25 654 125 58
+             664:   16(float) CompositeExtract 660 1
+                              Store 663 664
              665:     27(ptr) AccessChain 10(dti) 26
              666:      6(int) Load 665
              667:     27(ptr) AccessChain 10(dti) 26
              668:      6(int) Load 667
-             669:     42(ptr) AccessChain 24(data) 25 668 25 26
-             670:      6(int) Load 669
-             671:      6(int) GroupNonUniformQuadSwap 35 670 26
-             672:     42(ptr) AccessChain 24(data) 25 666 25 26
-                              Store 672 671
-             673:     27(ptr) AccessChain 10(dti) 26
-             674:      6(int) Load 673
-             675:     27(ptr) AccessChain 10(dti) 26
-             676:      6(int) Load 675
-             677:     32(ptr) AccessChain 24(data) 25 676 25
-             678:   13(ivec4) Load 677
-             679:   51(ivec2) VectorShuffle 678 678 0 1
-             680:   51(ivec2) GroupNonUniformQuadSwap 35 679 26
-             681:     32(ptr) AccessChain 24(data) 25 674 25
-             682:   13(ivec4) Load 681
-             683:   13(ivec4) VectorShuffle 682 680 4 5 2 3
-                              Store 681 683
-             684:     27(ptr) AccessChain 10(dti) 26
-             685:      6(int) Load 684
-             686:     27(ptr) AccessChain 10(dti) 26
-             687:      6(int) Load 686
-             688:     32(ptr) AccessChain 24(data) 25 687 25
-             689:   13(ivec4) Load 688
-             690:    7(ivec3) VectorShuffle 689 689 0 1 2
-             691:    7(ivec3) GroupNonUniformQuadSwap 35 690 26
-             692:     32(ptr) AccessChain 24(data) 25 685 25
-             693:   13(ivec4) Load 692
-             694:   13(ivec4) VectorShuffle 693 691 4 5 6 3
-                              Store 692 694
+             669:    128(ptr) AccessChain 24(data) 25 668 125
+             670:   17(fvec4) Load 669
+             671:  159(fvec3) VectorShuffle 670 670 0 1 2
+             672:  159(fvec3) GroupNonUniformQuadBroadcast 35 671 35
+             673:    137(ptr) AccessChain 24(data) 25 666 125 26
+             674:   16(float) CompositeExtract 672 0
+                              Store 673 674
+             675:    137(ptr) AccessChain 24(data) 25 666 125 58
+             676:   16(float) CompositeExtract 672 1
+                              Store 675 676
+             677:    137(ptr) AccessChain 24(data) 25 666 125 73
+             678:   16(float) CompositeExtract 672 2
+                              Store 677 678
+             679:     27(ptr) AccessChain 10(dti) 26
+             680:      6(int) Load 679
+             681:     27(ptr) AccessChain 10(dti) 26
+             682:      6(int) Load 681
+             683:    175(ptr) AccessChain 24(data) 25 682 172
+             684: 19(f64vec4) Load 683
+             685: 19(f64vec4) GroupNonUniformQuadBroadcast 35 684 35
+             686:    175(ptr) AccessChain 24(data) 25 680 172
+                              Store 686 685
+             687:     27(ptr) AccessChain 10(dti) 26
+             688:      6(int) Load 687
+             689:     27(ptr) AccessChain 10(dti) 26
+             690:      6(int) Load 689
+             691:    184(ptr) AccessChain 24(data) 25 690 172 26
+             692:18(float64_t) Load 691
+             693:18(float64_t) GroupNonUniformQuadBroadcast 35 692 35
+             694:    184(ptr) AccessChain 24(data) 25 688 172 26
+                              Store 694 693
              695:     27(ptr) AccessChain 10(dti) 26
              696:      6(int) Load 695
              697:     27(ptr) AccessChain 10(dti) 26
              698:      6(int) Load 697
-             699:     75(ptr) AccessChain 24(data) 25 698 72
-             700:   15(ivec4) Load 699
-             701:   15(ivec4) GroupNonUniformQuadSwap 35 700 26
-             702:     75(ptr) AccessChain 24(data) 25 696 72
-                              Store 702 701
-             703:     27(ptr) AccessChain 10(dti) 26
-             704:      6(int) Load 703
-             705:     27(ptr) AccessChain 10(dti) 26
-             706:      6(int) Load 705
-             707:     84(ptr) AccessChain 24(data) 25 706 72 26
-             708:     14(int) Load 707
-             709:     14(int) GroupNonUniformQuadSwap 35 708 26
-             710:     84(ptr) AccessChain 24(data) 25 704 72 26
-                              Store 710 709
-             711:     27(ptr) AccessChain 10(dti) 26
-             712:      6(int) Load 711
-             713:     27(ptr) AccessChain 10(dti) 26
-             714:      6(int) Load 713
-             715:     75(ptr) AccessChain 24(data) 25 714 72
-             716:   15(ivec4) Load 715
-             717:   93(ivec2) VectorShuffle 716 716 0 1
-             718:   93(ivec2) GroupNonUniformQuadSwap 35 717 26
-             719:     75(ptr) AccessChain 24(data) 25 712 72
-             720:   15(ivec4) Load 719
-             721:   15(ivec4) VectorShuffle 720 718 4 5 2 3
-                              Store 719 721
-             722:     27(ptr) AccessChain 10(dti) 26
-             723:      6(int) Load 722
-             724:     27(ptr) AccessChain 10(dti) 26
-             725:      6(int) Load 724
-             726:     75(ptr) AccessChain 24(data) 25 725 72
-             727:   15(ivec4) Load 726
-             728:  105(ivec3) VectorShuffle 727 727 0 1 2
-             729:  105(ivec3) GroupNonUniformQuadSwap 35 728 26
-             730:     75(ptr) AccessChain 24(data) 25 723 72
-             731:   15(ivec4) Load 730
-             732:   15(ivec4) VectorShuffle 731 729 4 5 6 3
-                              Store 730 732
-             733:     27(ptr) AccessChain 10(dti) 26
+             699:    175(ptr) AccessChain 24(data) 25 698 172
+             700: 19(f64vec4) Load 699
+             701:193(f64vec2) VectorShuffle 700 700 0 1
+             702:193(f64vec2) GroupNonUniformQuadBroadcast 35 701 35
+             703:    184(ptr) AccessChain 24(data) 25 696 172 26
+             704:18(float64_t) CompositeExtract 702 0
+                              Store 703 704
+             705:    184(ptr) AccessChain 24(data) 25 696 172 58
+             706:18(float64_t) CompositeExtract 702 1
+                              Store 705 706
+             707:     27(ptr) AccessChain 10(dti) 26
+             708:      6(int) Load 707
+             709:     27(ptr) AccessChain 10(dti) 26
+             710:      6(int) Load 709
+             711:    175(ptr) AccessChain 24(data) 25 710 172
+             712: 19(f64vec4) Load 711
+             713:206(f64vec3) VectorShuffle 712 712 0 1 2
+             714:206(f64vec3) GroupNonUniformQuadBroadcast 35 713 35
+             715:    184(ptr) AccessChain 24(data) 25 708 172 26
+             716:18(float64_t) CompositeExtract 714 0
+                              Store 715 716
+             717:    184(ptr) AccessChain 24(data) 25 708 172 58
+             718:18(float64_t) CompositeExtract 714 1
+                              Store 717 718
+             719:    184(ptr) AccessChain 24(data) 25 708 172 73
+             720:18(float64_t) CompositeExtract 714 2
+                              Store 719 720
+             721:     27(ptr) AccessChain 10(dti) 26
+             722:      6(int) Load 721
+             723:     27(ptr) AccessChain 10(dti) 26
+             724:      6(int) Load 723
+             725:     32(ptr) AccessChain 24(data) 25 724 25
+             726:   13(ivec4) Load 725
+             727:   13(ivec4) GroupNonUniformQuadSwap 35 726 26
+             728:     32(ptr) AccessChain 24(data) 25 722 25
+                              Store 728 727
+             729:     27(ptr) AccessChain 10(dti) 26
+             730:      6(int) Load 729
+             731:     27(ptr) AccessChain 10(dti) 26
+             732:      6(int) Load 731
+             733:     42(ptr) AccessChain 24(data) 25 732 25 26
              734:      6(int) Load 733
-             735:     27(ptr) AccessChain 10(dti) 26
-             736:      6(int) Load 735
-             737:    118(ptr) AccessChain 24(data) 25 736 115
-             738:   17(fvec4) Load 737
-             739:   17(fvec4) GroupNonUniformQuadSwap 35 738 26
-             740:    118(ptr) AccessChain 24(data) 25 734 115
-                              Store 740 739
-             741:     27(ptr) AccessChain 10(dti) 26
-             742:      6(int) Load 741
-             743:     27(ptr) AccessChain 10(dti) 26
-             744:      6(int) Load 743
-             745:    127(ptr) AccessChain 24(data) 25 744 115 26
-             746:   16(float) Load 745
-             747:   16(float) GroupNonUniformQuadSwap 35 746 26
-             748:    127(ptr) AccessChain 24(data) 25 742 115 26
-                              Store 748 747
+             735:      6(int) GroupNonUniformQuadSwap 35 734 26
+             736:     42(ptr) AccessChain 24(data) 25 730 25 26
+                              Store 736 735
+             737:     27(ptr) AccessChain 10(dti) 26
+             738:      6(int) Load 737
+             739:     27(ptr) AccessChain 10(dti) 26
+             740:      6(int) Load 739
+             741:     32(ptr) AccessChain 24(data) 25 740 25
+             742:   13(ivec4) Load 741
+             743:   51(ivec2) VectorShuffle 742 742 0 1
+             744:   51(ivec2) GroupNonUniformQuadSwap 35 743 26
+             745:     42(ptr) AccessChain 24(data) 25 738 25 26
+             746:      6(int) CompositeExtract 744 0
+                              Store 745 746
+             747:     42(ptr) AccessChain 24(data) 25 738 25 58
+             748:      6(int) CompositeExtract 744 1
+                              Store 747 748
              749:     27(ptr) AccessChain 10(dti) 26
              750:      6(int) Load 749
              751:     27(ptr) AccessChain 10(dti) 26
              752:      6(int) Load 751
-             753:    118(ptr) AccessChain 24(data) 25 752 115
-             754:   17(fvec4) Load 753
-             755:  136(fvec2) VectorShuffle 754 754 0 1
-             756:  136(fvec2) GroupNonUniformQuadSwap 35 755 26
-             757:    118(ptr) AccessChain 24(data) 25 750 115
-             758:   17(fvec4) Load 757
-             759:   17(fvec4) VectorShuffle 758 756 4 5 2 3
-                              Store 757 759
-             760:     27(ptr) AccessChain 10(dti) 26
-             761:      6(int) Load 760
-             762:     27(ptr) AccessChain 10(dti) 26
-             763:      6(int) Load 762
-             764:    118(ptr) AccessChain 24(data) 25 763 115
-             765:   17(fvec4) Load 764
-             766:  148(fvec3) VectorShuffle 765 765 0 1 2
-             767:  148(fvec3) GroupNonUniformQuadSwap 35 766 26
-             768:    118(ptr) AccessChain 24(data) 25 761 115
-             769:   17(fvec4) Load 768
-             770:   17(fvec4) VectorShuffle 769 767 4 5 6 3
-                              Store 768 770
+             753:     32(ptr) AccessChain 24(data) 25 752 25
+             754:   13(ivec4) Load 753
+             755:    7(ivec3) VectorShuffle 754 754 0 1 2
+             756:    7(ivec3) GroupNonUniformQuadSwap 35 755 26
+             757:     42(ptr) AccessChain 24(data) 25 750 25 26
+             758:      6(int) CompositeExtract 756 0
+                              Store 757 758
+             759:     42(ptr) AccessChain 24(data) 25 750 25 58
+             760:      6(int) CompositeExtract 756 1
+                              Store 759 760
+             761:     42(ptr) AccessChain 24(data) 25 750 25 73
+             762:      6(int) CompositeExtract 756 2
+                              Store 761 762
+             763:     27(ptr) AccessChain 10(dti) 26
+             764:      6(int) Load 763
+             765:     27(ptr) AccessChain 10(dti) 26
+             766:      6(int) Load 765
+             767:     81(ptr) AccessChain 24(data) 25 766 78
+             768:   15(ivec4) Load 767
+             769:   15(ivec4) GroupNonUniformQuadSwap 35 768 26
+             770:     81(ptr) AccessChain 24(data) 25 764 78
+                              Store 770 769
              771:     27(ptr) AccessChain 10(dti) 26
              772:      6(int) Load 771
              773:     27(ptr) AccessChain 10(dti) 26
              774:      6(int) Load 773
-             775:    161(ptr) AccessChain 24(data) 25 774 158
-             776: 19(f64vec4) Load 775
-             777: 19(f64vec4) GroupNonUniformQuadSwap 35 776 26
-             778:    161(ptr) AccessChain 24(data) 25 772 158
+             775:     90(ptr) AccessChain 24(data) 25 774 78 26
+             776:     14(int) Load 775
+             777:     14(int) GroupNonUniformQuadSwap 35 776 26
+             778:     90(ptr) AccessChain 24(data) 25 772 78 26
                               Store 778 777
              779:     27(ptr) AccessChain 10(dti) 26
              780:      6(int) Load 779
              781:     27(ptr) AccessChain 10(dti) 26
              782:      6(int) Load 781
-             783:    170(ptr) AccessChain 24(data) 25 782 158 26
-             784:18(float64_t) Load 783
-             785:18(float64_t) GroupNonUniformQuadSwap 35 784 26
-             786:    170(ptr) AccessChain 24(data) 25 780 158 26
-                              Store 786 785
-             787:     27(ptr) AccessChain 10(dti) 26
-             788:      6(int) Load 787
-             789:     27(ptr) AccessChain 10(dti) 26
-             790:      6(int) Load 789
-             791:    161(ptr) AccessChain 24(data) 25 790 158
-             792: 19(f64vec4) Load 791
-             793:179(f64vec2) VectorShuffle 792 792 0 1
-             794:179(f64vec2) GroupNonUniformQuadSwap 35 793 26
-             795:    161(ptr) AccessChain 24(data) 25 788 158
-             796: 19(f64vec4) Load 795
-             797: 19(f64vec4) VectorShuffle 796 794 4 5 2 3
-                              Store 795 797
-             798:     27(ptr) AccessChain 10(dti) 26
-             799:      6(int) Load 798
-             800:     27(ptr) AccessChain 10(dti) 26
-             801:      6(int) Load 800
-             802:    161(ptr) AccessChain 24(data) 25 801 158
-             803: 19(f64vec4) Load 802
-             804:191(f64vec3) VectorShuffle 803 803 0 1 2
-             805:191(f64vec3) GroupNonUniformQuadSwap 35 804 26
-             806:    161(ptr) AccessChain 24(data) 25 799 158
-             807: 19(f64vec4) Load 806
-             808: 19(f64vec4) VectorShuffle 807 805 4 5 6 3
-                              Store 806 808
-             809:     27(ptr) AccessChain 10(dti) 26
-             810:      6(int) Load 809
-             811:     27(ptr) AccessChain 10(dti) 26
-             812:      6(int) Load 811
-             813:     32(ptr) AccessChain 24(data) 25 812 25
-             814:   13(ivec4) Load 813
-             815:   13(ivec4) GroupNonUniformQuadSwap 35 814 205
-             816:     32(ptr) AccessChain 24(data) 25 810 25
-                              Store 816 815
-             817:     27(ptr) AccessChain 10(dti) 26
-             818:      6(int) Load 817
-             819:     27(ptr) AccessChain 10(dti) 26
-             820:      6(int) Load 819
-             821:     42(ptr) AccessChain 24(data) 25 820 25 26
+             783:     81(ptr) AccessChain 24(data) 25 782 78
+             784:   15(ivec4) Load 783
+             785:   99(ivec2) VectorShuffle 784 784 0 1
+             786:   99(ivec2) GroupNonUniformQuadSwap 35 785 26
+             787:     90(ptr) AccessChain 24(data) 25 780 78 26
+             788:     14(int) CompositeExtract 786 0
+                              Store 787 788
+             789:     90(ptr) AccessChain 24(data) 25 780 78 58
+             790:     14(int) CompositeExtract 786 1
+                              Store 789 790
+             791:     27(ptr) AccessChain 10(dti) 26
+             792:      6(int) Load 791
+             793:     27(ptr) AccessChain 10(dti) 26
+             794:      6(int) Load 793
+             795:     81(ptr) AccessChain 24(data) 25 794 78
+             796:   15(ivec4) Load 795
+             797:  112(ivec3) VectorShuffle 796 796 0 1 2
+             798:  112(ivec3) GroupNonUniformQuadSwap 35 797 26
+             799:     90(ptr) AccessChain 24(data) 25 792 78 26
+             800:     14(int) CompositeExtract 798 0
+                              Store 799 800
+             801:     90(ptr) AccessChain 24(data) 25 792 78 58
+             802:     14(int) CompositeExtract 798 1
+                              Store 801 802
+             803:     90(ptr) AccessChain 24(data) 25 792 78 73
+             804:     14(int) CompositeExtract 798 2
+                              Store 803 804
+             805:     27(ptr) AccessChain 10(dti) 26
+             806:      6(int) Load 805
+             807:     27(ptr) AccessChain 10(dti) 26
+             808:      6(int) Load 807
+             809:    128(ptr) AccessChain 24(data) 25 808 125
+             810:   17(fvec4) Load 809
+             811:   17(fvec4) GroupNonUniformQuadSwap 35 810 26
+             812:    128(ptr) AccessChain 24(data) 25 806 125
+                              Store 812 811
+             813:     27(ptr) AccessChain 10(dti) 26
+             814:      6(int) Load 813
+             815:     27(ptr) AccessChain 10(dti) 26
+             816:      6(int) Load 815
+             817:    137(ptr) AccessChain 24(data) 25 816 125 26
+             818:   16(float) Load 817
+             819:   16(float) GroupNonUniformQuadSwap 35 818 26
+             820:    137(ptr) AccessChain 24(data) 25 814 125 26
+                              Store 820 819
+             821:     27(ptr) AccessChain 10(dti) 26
              822:      6(int) Load 821
-             823:      6(int) GroupNonUniformQuadSwap 35 822 205
-             824:     42(ptr) AccessChain 24(data) 25 818 25 26
-                              Store 824 823
-             825:     27(ptr) AccessChain 10(dti) 26
-             826:      6(int) Load 825
-             827:     27(ptr) AccessChain 10(dti) 26
-             828:      6(int) Load 827
-             829:     32(ptr) AccessChain 24(data) 25 828 25
-             830:   13(ivec4) Load 829
-             831:   51(ivec2) VectorShuffle 830 830 0 1
-             832:   51(ivec2) GroupNonUniformQuadSwap 35 831 205
-             833:     32(ptr) AccessChain 24(data) 25 826 25
-             834:   13(ivec4) Load 833
-             835:   13(ivec4) VectorShuffle 834 832 4 5 2 3
-                              Store 833 835
-             836:     27(ptr) AccessChain 10(dti) 26
-             837:      6(int) Load 836
-             838:     27(ptr) AccessChain 10(dti) 26
-             839:      6(int) Load 838
-             840:     32(ptr) AccessChain 24(data) 25 839 25
-             841:   13(ivec4) Load 840
-             842:    7(ivec3) VectorShuffle 841 841 0 1 2
-             843:    7(ivec3) GroupNonUniformQuadSwap 35 842 205
-             844:     32(ptr) AccessChain 24(data) 25 837 25
-             845:   13(ivec4) Load 844
-             846:   13(ivec4) VectorShuffle 845 843 4 5 6 3
-                              Store 844 846
+             823:     27(ptr) AccessChain 10(dti) 26
+             824:      6(int) Load 823
+             825:    128(ptr) AccessChain 24(data) 25 824 125
+             826:   17(fvec4) Load 825
+             827:  146(fvec2) VectorShuffle 826 826 0 1
+             828:  146(fvec2) GroupNonUniformQuadSwap 35 827 26
+             829:    137(ptr) AccessChain 24(data) 25 822 125 26
+             830:   16(float) CompositeExtract 828 0
+                              Store 829 830
+             831:    137(ptr) AccessChain 24(data) 25 822 125 58
+             832:   16(float) CompositeExtract 828 1
+                              Store 831 832
+             833:     27(ptr) AccessChain 10(dti) 26
+             834:      6(int) Load 833
+             835:     27(ptr) AccessChain 10(dti) 26
+             836:      6(int) Load 835
+             837:    128(ptr) AccessChain 24(data) 25 836 125
+             838:   17(fvec4) Load 837
+             839:  159(fvec3) VectorShuffle 838 838 0 1 2
+             840:  159(fvec3) GroupNonUniformQuadSwap 35 839 26
+             841:    137(ptr) AccessChain 24(data) 25 834 125 26
+             842:   16(float) CompositeExtract 840 0
+                              Store 841 842
+             843:    137(ptr) AccessChain 24(data) 25 834 125 58
+             844:   16(float) CompositeExtract 840 1
+                              Store 843 844
+             845:    137(ptr) AccessChain 24(data) 25 834 125 73
+             846:   16(float) CompositeExtract 840 2
+                              Store 845 846
              847:     27(ptr) AccessChain 10(dti) 26
              848:      6(int) Load 847
              849:     27(ptr) AccessChain 10(dti) 26
              850:      6(int) Load 849
-             851:     75(ptr) AccessChain 24(data) 25 850 72
-             852:   15(ivec4) Load 851
-             853:   15(ivec4) GroupNonUniformQuadSwap 35 852 205
-             854:     75(ptr) AccessChain 24(data) 25 848 72
+             851:    175(ptr) AccessChain 24(data) 25 850 172
+             852: 19(f64vec4) Load 851
+             853: 19(f64vec4) GroupNonUniformQuadSwap 35 852 26
+             854:    175(ptr) AccessChain 24(data) 25 848 172
                               Store 854 853
              855:     27(ptr) AccessChain 10(dti) 26
              856:      6(int) Load 855
              857:     27(ptr) AccessChain 10(dti) 26
              858:      6(int) Load 857
-             859:     84(ptr) AccessChain 24(data) 25 858 72 26
-             860:     14(int) Load 859
-             861:     14(int) GroupNonUniformQuadSwap 35 860 205
-             862:     84(ptr) AccessChain 24(data) 25 856 72 26
+             859:    184(ptr) AccessChain 24(data) 25 858 172 26
+             860:18(float64_t) Load 859
+             861:18(float64_t) GroupNonUniformQuadSwap 35 860 26
+             862:    184(ptr) AccessChain 24(data) 25 856 172 26
                               Store 862 861
              863:     27(ptr) AccessChain 10(dti) 26
              864:      6(int) Load 863
              865:     27(ptr) AccessChain 10(dti) 26
              866:      6(int) Load 865
-             867:     75(ptr) AccessChain 24(data) 25 866 72
-             868:   15(ivec4) Load 867
-             869:   93(ivec2) VectorShuffle 868 868 0 1
-             870:   93(ivec2) GroupNonUniformQuadSwap 35 869 205
-             871:     75(ptr) AccessChain 24(data) 25 864 72
-             872:   15(ivec4) Load 871
-             873:   15(ivec4) VectorShuffle 872 870 4 5 2 3
-                              Store 871 873
-             874:     27(ptr) AccessChain 10(dti) 26
-             875:      6(int) Load 874
-             876:     27(ptr) AccessChain 10(dti) 26
-             877:      6(int) Load 876
-             878:     75(ptr) AccessChain 24(data) 25 877 72
-             879:   15(ivec4) Load 878
-             880:  105(ivec3) VectorShuffle 879 879 0 1 2
-             881:  105(ivec3) GroupNonUniformQuadSwap 35 880 205
-             882:     75(ptr) AccessChain 24(data) 25 875 72
-             883:   15(ivec4) Load 882
-             884:   15(ivec4) VectorShuffle 883 881 4 5 6 3
-                              Store 882 884
-             885:     27(ptr) AccessChain 10(dti) 26
-             886:      6(int) Load 885
-             887:     27(ptr) AccessChain 10(dti) 26
-             888:      6(int) Load 887
-             889:    118(ptr) AccessChain 24(data) 25 888 115
-             890:   17(fvec4) Load 889
-             891:   17(fvec4) GroupNonUniformQuadSwap 35 890 205
-             892:    118(ptr) AccessChain 24(data) 25 886 115
-                              Store 892 891
-             893:     27(ptr) AccessChain 10(dti) 26
-             894:      6(int) Load 893
-             895:     27(ptr) AccessChain 10(dti) 26
-             896:      6(int) Load 895
-             897:    127(ptr) AccessChain 24(data) 25 896 115 26
-             898:   16(float) Load 897
-             899:   16(float) GroupNonUniformQuadSwap 35 898 205
-             900:    127(ptr) AccessChain 24(data) 25 894 115 26
-                              Store 900 899
-             901:     27(ptr) AccessChain 10(dti) 26
+             867:    175(ptr) AccessChain 24(data) 25 866 172
+             868: 19(f64vec4) Load 867
+             869:193(f64vec2) VectorShuffle 868 868 0 1
+             870:193(f64vec2) GroupNonUniformQuadSwap 35 869 26
+             871:    184(ptr) AccessChain 24(data) 25 864 172 26
+             872:18(float64_t) CompositeExtract 870 0
+                              Store 871 872
+             873:    184(ptr) AccessChain 24(data) 25 864 172 58
+             874:18(float64_t) CompositeExtract 870 1
+                              Store 873 874
+             875:     27(ptr) AccessChain 10(dti) 26
+             876:      6(int) Load 875
+             877:     27(ptr) AccessChain 10(dti) 26
+             878:      6(int) Load 877
+             879:    175(ptr) AccessChain 24(data) 25 878 172
+             880: 19(f64vec4) Load 879
+             881:206(f64vec3) VectorShuffle 880 880 0 1 2
+             882:206(f64vec3) GroupNonUniformQuadSwap 35 881 26
+             883:    184(ptr) AccessChain 24(data) 25 876 172 26
+             884:18(float64_t) CompositeExtract 882 0
+                              Store 883 884
+             885:    184(ptr) AccessChain 24(data) 25 876 172 58
+             886:18(float64_t) CompositeExtract 882 1
+                              Store 885 886
+             887:    184(ptr) AccessChain 24(data) 25 876 172 73
+             888:18(float64_t) CompositeExtract 882 2
+                              Store 887 888
+             889:     27(ptr) AccessChain 10(dti) 26
+             890:      6(int) Load 889
+             891:     27(ptr) AccessChain 10(dti) 26
+             892:      6(int) Load 891
+             893:     32(ptr) AccessChain 24(data) 25 892 25
+             894:   13(ivec4) Load 893
+             895:   13(ivec4) GroupNonUniformQuadSwap 35 894 58
+             896:     32(ptr) AccessChain 24(data) 25 890 25
+                              Store 896 895
+             897:     27(ptr) AccessChain 10(dti) 26
+             898:      6(int) Load 897
+             899:     27(ptr) AccessChain 10(dti) 26
+             900:      6(int) Load 899
+             901:     42(ptr) AccessChain 24(data) 25 900 25 26
              902:      6(int) Load 901
-             903:     27(ptr) AccessChain 10(dti) 26
-             904:      6(int) Load 903
-             905:    118(ptr) AccessChain 24(data) 25 904 115
-             906:   17(fvec4) Load 905
-             907:  136(fvec2) VectorShuffle 906 906 0 1
-             908:  136(fvec2) GroupNonUniformQuadSwap 35 907 205
-             909:    118(ptr) AccessChain 24(data) 25 902 115
-             910:   17(fvec4) Load 909
-             911:   17(fvec4) VectorShuffle 910 908 4 5 2 3
-                              Store 909 911
-             912:     27(ptr) AccessChain 10(dti) 26
-             913:      6(int) Load 912
-             914:     27(ptr) AccessChain 10(dti) 26
-             915:      6(int) Load 914
-             916:    118(ptr) AccessChain 24(data) 25 915 115
-             917:   17(fvec4) Load 916
-             918:  148(fvec3) VectorShuffle 917 917 0 1 2
-             919:  148(fvec3) GroupNonUniformQuadSwap 35 918 205
-             920:    118(ptr) AccessChain 24(data) 25 913 115
-             921:   17(fvec4) Load 920
-             922:   17(fvec4) VectorShuffle 921 919 4 5 6 3
-                              Store 920 922
-             923:     27(ptr) AccessChain 10(dti) 26
-             924:      6(int) Load 923
-             925:     27(ptr) AccessChain 10(dti) 26
-             926:      6(int) Load 925
-             927:    161(ptr) AccessChain 24(data) 25 926 158
-             928: 19(f64vec4) Load 927
-             929: 19(f64vec4) GroupNonUniformQuadSwap 35 928 205
-             930:    161(ptr) AccessChain 24(data) 25 924 158
-                              Store 930 929
+             903:      6(int) GroupNonUniformQuadSwap 35 902 58
+             904:     42(ptr) AccessChain 24(data) 25 898 25 26
+                              Store 904 903
+             905:     27(ptr) AccessChain 10(dti) 26
+             906:      6(int) Load 905
+             907:     27(ptr) AccessChain 10(dti) 26
+             908:      6(int) Load 907
+             909:     32(ptr) AccessChain 24(data) 25 908 25
+             910:   13(ivec4) Load 909
+             911:   51(ivec2) VectorShuffle 910 910 0 1
+             912:   51(ivec2) GroupNonUniformQuadSwap 35 911 58
+             913:     42(ptr) AccessChain 24(data) 25 906 25 26
+             914:      6(int) CompositeExtract 912 0
+                              Store 913 914
+             915:     42(ptr) AccessChain 24(data) 25 906 25 58
+             916:      6(int) CompositeExtract 912 1
+                              Store 915 916
+             917:     27(ptr) AccessChain 10(dti) 26
+             918:      6(int) Load 917
+             919:     27(ptr) AccessChain 10(dti) 26
+             920:      6(int) Load 919
+             921:     32(ptr) AccessChain 24(data) 25 920 25
+             922:   13(ivec4) Load 921
+             923:    7(ivec3) VectorShuffle 922 922 0 1 2
+             924:    7(ivec3) GroupNonUniformQuadSwap 35 923 58
+             925:     42(ptr) AccessChain 24(data) 25 918 25 26
+             926:      6(int) CompositeExtract 924 0
+                              Store 925 926
+             927:     42(ptr) AccessChain 24(data) 25 918 25 58
+             928:      6(int) CompositeExtract 924 1
+                              Store 927 928
+             929:     42(ptr) AccessChain 24(data) 25 918 25 73
+             930:      6(int) CompositeExtract 924 2
+                              Store 929 930
              931:     27(ptr) AccessChain 10(dti) 26
              932:      6(int) Load 931
              933:     27(ptr) AccessChain 10(dti) 26
              934:      6(int) Load 933
-             935:    170(ptr) AccessChain 24(data) 25 934 158 26
-             936:18(float64_t) Load 935
-             937:18(float64_t) GroupNonUniformQuadSwap 35 936 205
-             938:    170(ptr) AccessChain 24(data) 25 932 158 26
+             935:     81(ptr) AccessChain 24(data) 25 934 78
+             936:   15(ivec4) Load 935
+             937:   15(ivec4) GroupNonUniformQuadSwap 35 936 58
+             938:     81(ptr) AccessChain 24(data) 25 932 78
                               Store 938 937
              939:     27(ptr) AccessChain 10(dti) 26
              940:      6(int) Load 939
              941:     27(ptr) AccessChain 10(dti) 26
              942:      6(int) Load 941
-             943:    161(ptr) AccessChain 24(data) 25 942 158
-             944: 19(f64vec4) Load 943
-             945:179(f64vec2) VectorShuffle 944 944 0 1
-             946:179(f64vec2) GroupNonUniformQuadSwap 35 945 205
-             947:    161(ptr) AccessChain 24(data) 25 940 158
-             948: 19(f64vec4) Load 947
-             949: 19(f64vec4) VectorShuffle 948 946 4 5 2 3
-                              Store 947 949
-             950:     27(ptr) AccessChain 10(dti) 26
-             951:      6(int) Load 950
-             952:     27(ptr) AccessChain 10(dti) 26
-             953:      6(int) Load 952
-             954:    161(ptr) AccessChain 24(data) 25 953 158
-             955: 19(f64vec4) Load 954
-             956:191(f64vec3) VectorShuffle 955 955 0 1 2
-             957:191(f64vec3) GroupNonUniformQuadSwap 35 956 205
-             958:    161(ptr) AccessChain 24(data) 25 951 158
-             959: 19(f64vec4) Load 958
-             960: 19(f64vec4) VectorShuffle 959 957 4 5 6 3
-                              Store 958 960
+             943:     90(ptr) AccessChain 24(data) 25 942 78 26
+             944:     14(int) Load 943
+             945:     14(int) GroupNonUniformQuadSwap 35 944 58
+             946:     90(ptr) AccessChain 24(data) 25 940 78 26
+                              Store 946 945
+             947:     27(ptr) AccessChain 10(dti) 26
+             948:      6(int) Load 947
+             949:     27(ptr) AccessChain 10(dti) 26
+             950:      6(int) Load 949
+             951:     81(ptr) AccessChain 24(data) 25 950 78
+             952:   15(ivec4) Load 951
+             953:   99(ivec2) VectorShuffle 952 952 0 1
+             954:   99(ivec2) GroupNonUniformQuadSwap 35 953 58
+             955:     90(ptr) AccessChain 24(data) 25 948 78 26
+             956:     14(int) CompositeExtract 954 0
+                              Store 955 956
+             957:     90(ptr) AccessChain 24(data) 25 948 78 58
+             958:     14(int) CompositeExtract 954 1
+                              Store 957 958
+             959:     27(ptr) AccessChain 10(dti) 26
+             960:      6(int) Load 959
              961:     27(ptr) AccessChain 10(dti) 26
              962:      6(int) Load 961
-             963:     27(ptr) AccessChain 10(dti) 26
-             964:      6(int) Load 963
-             965:     32(ptr) AccessChain 24(data) 25 964 25
-             966:   13(ivec4) Load 965
-             967:   13(ivec4) GroupNonUniformQuadSwap 35 966 358
-             968:     32(ptr) AccessChain 24(data) 25 962 25
-                              Store 968 967
-             969:     27(ptr) AccessChain 10(dti) 26
-             970:      6(int) Load 969
-             971:     27(ptr) AccessChain 10(dti) 26
-             972:      6(int) Load 971
-             973:     42(ptr) AccessChain 24(data) 25 972 25 26
+             963:     81(ptr) AccessChain 24(data) 25 962 78
+             964:   15(ivec4) Load 963
+             965:  112(ivec3) VectorShuffle 964 964 0 1 2
+             966:  112(ivec3) GroupNonUniformQuadSwap 35 965 58
+             967:     90(ptr) AccessChain 24(data) 25 960 78 26
+             968:     14(int) CompositeExtract 966 0
+                              Store 967 968
+             969:     90(ptr) AccessChain 24(data) 25 960 78 58
+             970:     14(int) CompositeExtract 966 1
+                              Store 969 970
+             971:     90(ptr) AccessChain 24(data) 25 960 78 73
+             972:     14(int) CompositeExtract 966 2
+                              Store 971 972
+             973:     27(ptr) AccessChain 10(dti) 26
              974:      6(int) Load 973
-             975:      6(int) GroupNonUniformQuadSwap 35 974 358
-             976:     42(ptr) AccessChain 24(data) 25 970 25 26
-                              Store 976 975
-             977:     27(ptr) AccessChain 10(dti) 26
-             978:      6(int) Load 977
-             979:     27(ptr) AccessChain 10(dti) 26
-             980:      6(int) Load 979
-             981:     32(ptr) AccessChain 24(data) 25 980 25
-             982:   13(ivec4) Load 981
-             983:   51(ivec2) VectorShuffle 982 982 0 1
-             984:   51(ivec2) GroupNonUniformQuadSwap 35 983 358
-             985:     32(ptr) AccessChain 24(data) 25 978 25
-             986:   13(ivec4) Load 985
-             987:   13(ivec4) VectorShuffle 986 984 4 5 2 3
-                              Store 985 987
-             988:     27(ptr) AccessChain 10(dti) 26
-             989:      6(int) Load 988
-             990:     27(ptr) AccessChain 10(dti) 26
-             991:      6(int) Load 990
-             992:     32(ptr) AccessChain 24(data) 25 991 25
-             993:   13(ivec4) Load 992
-             994:    7(ivec3) VectorShuffle 993 993 0 1 2
-             995:    7(ivec3) GroupNonUniformQuadSwap 35 994 358
-             996:     32(ptr) AccessChain 24(data) 25 989 25
-             997:   13(ivec4) Load 996
-             998:   13(ivec4) VectorShuffle 997 995 4 5 6 3
-                              Store 996 998
-             999:     27(ptr) AccessChain 10(dti) 26
-            1000:      6(int) Load 999
+             975:     27(ptr) AccessChain 10(dti) 26
+             976:      6(int) Load 975
+             977:    128(ptr) AccessChain 24(data) 25 976 125
+             978:   17(fvec4) Load 977
+             979:   17(fvec4) GroupNonUniformQuadSwap 35 978 58
+             980:    128(ptr) AccessChain 24(data) 25 974 125
+                              Store 980 979
+             981:     27(ptr) AccessChain 10(dti) 26
+             982:      6(int) Load 981
+             983:     27(ptr) AccessChain 10(dti) 26
+             984:      6(int) Load 983
+             985:    137(ptr) AccessChain 24(data) 25 984 125 26
+             986:   16(float) Load 985
+             987:   16(float) GroupNonUniformQuadSwap 35 986 58
+             988:    137(ptr) AccessChain 24(data) 25 982 125 26
+                              Store 988 987
+             989:     27(ptr) AccessChain 10(dti) 26
+             990:      6(int) Load 989
+             991:     27(ptr) AccessChain 10(dti) 26
+             992:      6(int) Load 991
+             993:    128(ptr) AccessChain 24(data) 25 992 125
+             994:   17(fvec4) Load 993
+             995:  146(fvec2) VectorShuffle 994 994 0 1
+             996:  146(fvec2) GroupNonUniformQuadSwap 35 995 58
+             997:    137(ptr) AccessChain 24(data) 25 990 125 26
+             998:   16(float) CompositeExtract 996 0
+                              Store 997 998
+             999:    137(ptr) AccessChain 24(data) 25 990 125 58
+            1000:   16(float) CompositeExtract 996 1
+                              Store 999 1000
             1001:     27(ptr) AccessChain 10(dti) 26
             1002:      6(int) Load 1001
-            1003:     75(ptr) AccessChain 24(data) 25 1002 72
-            1004:   15(ivec4) Load 1003
-            1005:   15(ivec4) GroupNonUniformQuadSwap 35 1004 358
-            1006:     75(ptr) AccessChain 24(data) 25 1000 72
-                              Store 1006 1005
-            1007:     27(ptr) AccessChain 10(dti) 26
-            1008:      6(int) Load 1007
-            1009:     27(ptr) AccessChain 10(dti) 26
-            1010:      6(int) Load 1009
-            1011:     84(ptr) AccessChain 24(data) 25 1010 72 26
-            1012:     14(int) Load 1011
-            1013:     14(int) GroupNonUniformQuadSwap 35 1012 358
-            1014:     84(ptr) AccessChain 24(data) 25 1008 72 26
-                              Store 1014 1013
+            1003:     27(ptr) AccessChain 10(dti) 26
+            1004:      6(int) Load 1003
+            1005:    128(ptr) AccessChain 24(data) 25 1004 125
+            1006:   17(fvec4) Load 1005
+            1007:  159(fvec3) VectorShuffle 1006 1006 0 1 2
+            1008:  159(fvec3) GroupNonUniformQuadSwap 35 1007 58
+            1009:    137(ptr) AccessChain 24(data) 25 1002 125 26
+            1010:   16(float) CompositeExtract 1008 0
+                              Store 1009 1010
+            1011:    137(ptr) AccessChain 24(data) 25 1002 125 58
+            1012:   16(float) CompositeExtract 1008 1
+                              Store 1011 1012
+            1013:    137(ptr) AccessChain 24(data) 25 1002 125 73
+            1014:   16(float) CompositeExtract 1008 2
+                              Store 1013 1014
             1015:     27(ptr) AccessChain 10(dti) 26
             1016:      6(int) Load 1015
             1017:     27(ptr) AccessChain 10(dti) 26
             1018:      6(int) Load 1017
-            1019:     75(ptr) AccessChain 24(data) 25 1018 72
-            1020:   15(ivec4) Load 1019
-            1021:   93(ivec2) VectorShuffle 1020 1020 0 1
-            1022:   93(ivec2) GroupNonUniformQuadSwap 35 1021 358
-            1023:     75(ptr) AccessChain 24(data) 25 1016 72
-            1024:   15(ivec4) Load 1023
-            1025:   15(ivec4) VectorShuffle 1024 1022 4 5 2 3
-                              Store 1023 1025
-            1026:     27(ptr) AccessChain 10(dti) 26
-            1027:      6(int) Load 1026
-            1028:     27(ptr) AccessChain 10(dti) 26
-            1029:      6(int) Load 1028
-            1030:     75(ptr) AccessChain 24(data) 25 1029 72
-            1031:   15(ivec4) Load 1030
-            1032:  105(ivec3) VectorShuffle 1031 1031 0 1 2
-            1033:  105(ivec3) GroupNonUniformQuadSwap 35 1032 358
-            1034:     75(ptr) AccessChain 24(data) 25 1027 72
-            1035:   15(ivec4) Load 1034
-            1036:   15(ivec4) VectorShuffle 1035 1033 4 5 6 3
-                              Store 1034 1036
-            1037:     27(ptr) AccessChain 10(dti) 26
-            1038:      6(int) Load 1037
-            1039:     27(ptr) AccessChain 10(dti) 26
-            1040:      6(int) Load 1039
-            1041:    118(ptr) AccessChain 24(data) 25 1040 115
-            1042:   17(fvec4) Load 1041
-            1043:   17(fvec4) GroupNonUniformQuadSwap 35 1042 358
-            1044:    118(ptr) AccessChain 24(data) 25 1038 115
-                              Store 1044 1043
+            1019:    175(ptr) AccessChain 24(data) 25 1018 172
+            1020: 19(f64vec4) Load 1019
+            1021: 19(f64vec4) GroupNonUniformQuadSwap 35 1020 58
+            1022:    175(ptr) AccessChain 24(data) 25 1016 172
+                              Store 1022 1021
+            1023:     27(ptr) AccessChain 10(dti) 26
+            1024:      6(int) Load 1023
+            1025:     27(ptr) AccessChain 10(dti) 26
+            1026:      6(int) Load 1025
+            1027:    184(ptr) AccessChain 24(data) 25 1026 172 26
+            1028:18(float64_t) Load 1027
+            1029:18(float64_t) GroupNonUniformQuadSwap 35 1028 58
+            1030:    184(ptr) AccessChain 24(data) 25 1024 172 26
+                              Store 1030 1029
+            1031:     27(ptr) AccessChain 10(dti) 26
+            1032:      6(int) Load 1031
+            1033:     27(ptr) AccessChain 10(dti) 26
+            1034:      6(int) Load 1033
+            1035:    175(ptr) AccessChain 24(data) 25 1034 172
+            1036: 19(f64vec4) Load 1035
+            1037:193(f64vec2) VectorShuffle 1036 1036 0 1
+            1038:193(f64vec2) GroupNonUniformQuadSwap 35 1037 58
+            1039:    184(ptr) AccessChain 24(data) 25 1032 172 26
+            1040:18(float64_t) CompositeExtract 1038 0
+                              Store 1039 1040
+            1041:    184(ptr) AccessChain 24(data) 25 1032 172 58
+            1042:18(float64_t) CompositeExtract 1038 1
+                              Store 1041 1042
+            1043:     27(ptr) AccessChain 10(dti) 26
+            1044:      6(int) Load 1043
             1045:     27(ptr) AccessChain 10(dti) 26
             1046:      6(int) Load 1045
-            1047:     27(ptr) AccessChain 10(dti) 26
-            1048:      6(int) Load 1047
-            1049:    127(ptr) AccessChain 24(data) 25 1048 115 26
-            1050:   16(float) Load 1049
-            1051:   16(float) GroupNonUniformQuadSwap 35 1050 358
-            1052:    127(ptr) AccessChain 24(data) 25 1046 115 26
-                              Store 1052 1051
-            1053:     27(ptr) AccessChain 10(dti) 26
-            1054:      6(int) Load 1053
-            1055:     27(ptr) AccessChain 10(dti) 26
-            1056:      6(int) Load 1055
-            1057:    118(ptr) AccessChain 24(data) 25 1056 115
-            1058:   17(fvec4) Load 1057
-            1059:  136(fvec2) VectorShuffle 1058 1058 0 1
-            1060:  136(fvec2) GroupNonUniformQuadSwap 35 1059 358
-            1061:    118(ptr) AccessChain 24(data) 25 1054 115
-            1062:   17(fvec4) Load 1061
-            1063:   17(fvec4) VectorShuffle 1062 1060 4 5 2 3
-                              Store 1061 1063
-            1064:     27(ptr) AccessChain 10(dti) 26
-            1065:      6(int) Load 1064
-            1066:     27(ptr) AccessChain 10(dti) 26
-            1067:      6(int) Load 1066
-            1068:    118(ptr) AccessChain 24(data) 25 1067 115
-            1069:   17(fvec4) Load 1068
-            1070:  148(fvec3) VectorShuffle 1069 1069 0 1 2
-            1071:  148(fvec3) GroupNonUniformQuadSwap 35 1070 358
-            1072:    118(ptr) AccessChain 24(data) 25 1065 115
-            1073:   17(fvec4) Load 1072
-            1074:   17(fvec4) VectorShuffle 1073 1071 4 5 6 3
-                              Store 1072 1074
+            1047:    175(ptr) AccessChain 24(data) 25 1046 172
+            1048: 19(f64vec4) Load 1047
+            1049:206(f64vec3) VectorShuffle 1048 1048 0 1 2
+            1050:206(f64vec3) GroupNonUniformQuadSwap 35 1049 58
+            1051:    184(ptr) AccessChain 24(data) 25 1044 172 26
+            1052:18(float64_t) CompositeExtract 1050 0
+                              Store 1051 1052
+            1053:    184(ptr) AccessChain 24(data) 25 1044 172 58
+            1054:18(float64_t) CompositeExtract 1050 1
+                              Store 1053 1054
+            1055:    184(ptr) AccessChain 24(data) 25 1044 172 73
+            1056:18(float64_t) CompositeExtract 1050 2
+                              Store 1055 1056
+            1057:     27(ptr) AccessChain 10(dti) 26
+            1058:      6(int) Load 1057
+            1059:     27(ptr) AccessChain 10(dti) 26
+            1060:      6(int) Load 1059
+            1061:     32(ptr) AccessChain 24(data) 25 1060 25
+            1062:   13(ivec4) Load 1061
+            1063:   13(ivec4) GroupNonUniformQuadSwap 35 1062 73
+            1064:     32(ptr) AccessChain 24(data) 25 1058 25
+                              Store 1064 1063
+            1065:     27(ptr) AccessChain 10(dti) 26
+            1066:      6(int) Load 1065
+            1067:     27(ptr) AccessChain 10(dti) 26
+            1068:      6(int) Load 1067
+            1069:     42(ptr) AccessChain 24(data) 25 1068 25 26
+            1070:      6(int) Load 1069
+            1071:      6(int) GroupNonUniformQuadSwap 35 1070 73
+            1072:     42(ptr) AccessChain 24(data) 25 1066 25 26
+                              Store 1072 1071
+            1073:     27(ptr) AccessChain 10(dti) 26
+            1074:      6(int) Load 1073
             1075:     27(ptr) AccessChain 10(dti) 26
             1076:      6(int) Load 1075
-            1077:     27(ptr) AccessChain 10(dti) 26
-            1078:      6(int) Load 1077
-            1079:    161(ptr) AccessChain 24(data) 25 1078 158
-            1080: 19(f64vec4) Load 1079
-            1081: 19(f64vec4) GroupNonUniformQuadSwap 35 1080 358
-            1082:    161(ptr) AccessChain 24(data) 25 1076 158
-                              Store 1082 1081
-            1083:     27(ptr) AccessChain 10(dti) 26
-            1084:      6(int) Load 1083
+            1077:     32(ptr) AccessChain 24(data) 25 1076 25
+            1078:   13(ivec4) Load 1077
+            1079:   51(ivec2) VectorShuffle 1078 1078 0 1
+            1080:   51(ivec2) GroupNonUniformQuadSwap 35 1079 73
+            1081:     42(ptr) AccessChain 24(data) 25 1074 25 26
+            1082:      6(int) CompositeExtract 1080 0
+                              Store 1081 1082
+            1083:     42(ptr) AccessChain 24(data) 25 1074 25 58
+            1084:      6(int) CompositeExtract 1080 1
+                              Store 1083 1084
             1085:     27(ptr) AccessChain 10(dti) 26
             1086:      6(int) Load 1085
-            1087:    170(ptr) AccessChain 24(data) 25 1086 158 26
-            1088:18(float64_t) Load 1087
-            1089:18(float64_t) GroupNonUniformQuadSwap 35 1088 358
-            1090:    170(ptr) AccessChain 24(data) 25 1084 158 26
-                              Store 1090 1089
-            1091:     27(ptr) AccessChain 10(dti) 26
-            1092:      6(int) Load 1091
-            1093:     27(ptr) AccessChain 10(dti) 26
-            1094:      6(int) Load 1093
-            1095:    161(ptr) AccessChain 24(data) 25 1094 158
-            1096: 19(f64vec4) Load 1095
-            1097:179(f64vec2) VectorShuffle 1096 1096 0 1
-            1098:179(f64vec2) GroupNonUniformQuadSwap 35 1097 358
-            1099:    161(ptr) AccessChain 24(data) 25 1092 158
-            1100: 19(f64vec4) Load 1099
-            1101: 19(f64vec4) VectorShuffle 1100 1098 4 5 2 3
-                              Store 1099 1101
-            1102:     27(ptr) AccessChain 10(dti) 26
-            1103:      6(int) Load 1102
-            1104:     27(ptr) AccessChain 10(dti) 26
-            1105:      6(int) Load 1104
-            1106:    161(ptr) AccessChain 24(data) 25 1105 158
-            1107: 19(f64vec4) Load 1106
-            1108:191(f64vec3) VectorShuffle 1107 1107 0 1 2
-            1109:191(f64vec3) GroupNonUniformQuadSwap 35 1108 358
-            1110:    161(ptr) AccessChain 24(data) 25 1103 158
-            1111: 19(f64vec4) Load 1110
-            1112: 19(f64vec4) VectorShuffle 1111 1109 4 5 6 3
-                              Store 1110 1112
+            1087:     27(ptr) AccessChain 10(dti) 26
+            1088:      6(int) Load 1087
+            1089:     32(ptr) AccessChain 24(data) 25 1088 25
+            1090:   13(ivec4) Load 1089
+            1091:    7(ivec3) VectorShuffle 1090 1090 0 1 2
+            1092:    7(ivec3) GroupNonUniformQuadSwap 35 1091 73
+            1093:     42(ptr) AccessChain 24(data) 25 1086 25 26
+            1094:      6(int) CompositeExtract 1092 0
+                              Store 1093 1094
+            1095:     42(ptr) AccessChain 24(data) 25 1086 25 58
+            1096:      6(int) CompositeExtract 1092 1
+                              Store 1095 1096
+            1097:     42(ptr) AccessChain 24(data) 25 1086 25 73
+            1098:      6(int) CompositeExtract 1092 2
+                              Store 1097 1098
+            1099:     27(ptr) AccessChain 10(dti) 26
+            1100:      6(int) Load 1099
+            1101:     27(ptr) AccessChain 10(dti) 26
+            1102:      6(int) Load 1101
+            1103:     81(ptr) AccessChain 24(data) 25 1102 78
+            1104:   15(ivec4) Load 1103
+            1105:   15(ivec4) GroupNonUniformQuadSwap 35 1104 73
+            1106:     81(ptr) AccessChain 24(data) 25 1100 78
+                              Store 1106 1105
+            1107:     27(ptr) AccessChain 10(dti) 26
+            1108:      6(int) Load 1107
+            1109:     27(ptr) AccessChain 10(dti) 26
+            1110:      6(int) Load 1109
+            1111:     90(ptr) AccessChain 24(data) 25 1110 78 26
+            1112:     14(int) Load 1111
+            1113:     14(int) GroupNonUniformQuadSwap 35 1112 73
+            1114:     90(ptr) AccessChain 24(data) 25 1108 78 26
+                              Store 1114 1113
+            1115:     27(ptr) AccessChain 10(dti) 26
+            1116:      6(int) Load 1115
+            1117:     27(ptr) AccessChain 10(dti) 26
+            1118:      6(int) Load 1117
+            1119:     81(ptr) AccessChain 24(data) 25 1118 78
+            1120:   15(ivec4) Load 1119
+            1121:   99(ivec2) VectorShuffle 1120 1120 0 1
+            1122:   99(ivec2) GroupNonUniformQuadSwap 35 1121 73
+            1123:     90(ptr) AccessChain 24(data) 25 1116 78 26
+            1124:     14(int) CompositeExtract 1122 0
+                              Store 1123 1124
+            1125:     90(ptr) AccessChain 24(data) 25 1116 78 58
+            1126:     14(int) CompositeExtract 1122 1
+                              Store 1125 1126
+            1127:     27(ptr) AccessChain 10(dti) 26
+            1128:      6(int) Load 1127
+            1129:     27(ptr) AccessChain 10(dti) 26
+            1130:      6(int) Load 1129
+            1131:     81(ptr) AccessChain 24(data) 25 1130 78
+            1132:   15(ivec4) Load 1131
+            1133:  112(ivec3) VectorShuffle 1132 1132 0 1 2
+            1134:  112(ivec3) GroupNonUniformQuadSwap 35 1133 73
+            1135:     90(ptr) AccessChain 24(data) 25 1128 78 26
+            1136:     14(int) CompositeExtract 1134 0
+                              Store 1135 1136
+            1137:     90(ptr) AccessChain 24(data) 25 1128 78 58
+            1138:     14(int) CompositeExtract 1134 1
+                              Store 1137 1138
+            1139:     90(ptr) AccessChain 24(data) 25 1128 78 73
+            1140:     14(int) CompositeExtract 1134 2
+                              Store 1139 1140
+            1141:     27(ptr) AccessChain 10(dti) 26
+            1142:      6(int) Load 1141
+            1143:     27(ptr) AccessChain 10(dti) 26
+            1144:      6(int) Load 1143
+            1145:    128(ptr) AccessChain 24(data) 25 1144 125
+            1146:   17(fvec4) Load 1145
+            1147:   17(fvec4) GroupNonUniformQuadSwap 35 1146 73
+            1148:    128(ptr) AccessChain 24(data) 25 1142 125
+                              Store 1148 1147
+            1149:     27(ptr) AccessChain 10(dti) 26
+            1150:      6(int) Load 1149
+            1151:     27(ptr) AccessChain 10(dti) 26
+            1152:      6(int) Load 1151
+            1153:    137(ptr) AccessChain 24(data) 25 1152 125 26
+            1154:   16(float) Load 1153
+            1155:   16(float) GroupNonUniformQuadSwap 35 1154 73
+            1156:    137(ptr) AccessChain 24(data) 25 1150 125 26
+                              Store 1156 1155
+            1157:     27(ptr) AccessChain 10(dti) 26
+            1158:      6(int) Load 1157
+            1159:     27(ptr) AccessChain 10(dti) 26
+            1160:      6(int) Load 1159
+            1161:    128(ptr) AccessChain 24(data) 25 1160 125
+            1162:   17(fvec4) Load 1161
+            1163:  146(fvec2) VectorShuffle 1162 1162 0 1
+            1164:  146(fvec2) GroupNonUniformQuadSwap 35 1163 73
+            1165:    137(ptr) AccessChain 24(data) 25 1158 125 26
+            1166:   16(float) CompositeExtract 1164 0
+                              Store 1165 1166
+            1167:    137(ptr) AccessChain 24(data) 25 1158 125 58
+            1168:   16(float) CompositeExtract 1164 1
+                              Store 1167 1168
+            1169:     27(ptr) AccessChain 10(dti) 26
+            1170:      6(int) Load 1169
+            1171:     27(ptr) AccessChain 10(dti) 26
+            1172:      6(int) Load 1171
+            1173:    128(ptr) AccessChain 24(data) 25 1172 125
+            1174:   17(fvec4) Load 1173
+            1175:  159(fvec3) VectorShuffle 1174 1174 0 1 2
+            1176:  159(fvec3) GroupNonUniformQuadSwap 35 1175 73
+            1177:    137(ptr) AccessChain 24(data) 25 1170 125 26
+            1178:   16(float) CompositeExtract 1176 0
+                              Store 1177 1178
+            1179:    137(ptr) AccessChain 24(data) 25 1170 125 58
+            1180:   16(float) CompositeExtract 1176 1
+                              Store 1179 1180
+            1181:    137(ptr) AccessChain 24(data) 25 1170 125 73
+            1182:   16(float) CompositeExtract 1176 2
+                              Store 1181 1182
+            1183:     27(ptr) AccessChain 10(dti) 26
+            1184:      6(int) Load 1183
+            1185:     27(ptr) AccessChain 10(dti) 26
+            1186:      6(int) Load 1185
+            1187:    175(ptr) AccessChain 24(data) 25 1186 172
+            1188: 19(f64vec4) Load 1187
+            1189: 19(f64vec4) GroupNonUniformQuadSwap 35 1188 73
+            1190:    175(ptr) AccessChain 24(data) 25 1184 172
+                              Store 1190 1189
+            1191:     27(ptr) AccessChain 10(dti) 26
+            1192:      6(int) Load 1191
+            1193:     27(ptr) AccessChain 10(dti) 26
+            1194:      6(int) Load 1193
+            1195:    184(ptr) AccessChain 24(data) 25 1194 172 26
+            1196:18(float64_t) Load 1195
+            1197:18(float64_t) GroupNonUniformQuadSwap 35 1196 73
+            1198:    184(ptr) AccessChain 24(data) 25 1192 172 26
+                              Store 1198 1197
+            1199:     27(ptr) AccessChain 10(dti) 26
+            1200:      6(int) Load 1199
+            1201:     27(ptr) AccessChain 10(dti) 26
+            1202:      6(int) Load 1201
+            1203:    175(ptr) AccessChain 24(data) 25 1202 172
+            1204: 19(f64vec4) Load 1203
+            1205:193(f64vec2) VectorShuffle 1204 1204 0 1
+            1206:193(f64vec2) GroupNonUniformQuadSwap 35 1205 73
+            1207:    184(ptr) AccessChain 24(data) 25 1200 172 26
+            1208:18(float64_t) CompositeExtract 1206 0
+                              Store 1207 1208
+            1209:    184(ptr) AccessChain 24(data) 25 1200 172 58
+            1210:18(float64_t) CompositeExtract 1206 1
+                              Store 1209 1210
+            1211:     27(ptr) AccessChain 10(dti) 26
+            1212:      6(int) Load 1211
+            1213:     27(ptr) AccessChain 10(dti) 26
+            1214:      6(int) Load 1213
+            1215:    175(ptr) AccessChain 24(data) 25 1214 172
+            1216: 19(f64vec4) Load 1215
+            1217:206(f64vec3) VectorShuffle 1216 1216 0 1 2
+            1218:206(f64vec3) GroupNonUniformQuadSwap 35 1217 73
+            1219:    184(ptr) AccessChain 24(data) 25 1212 172 26
+            1220:18(float64_t) CompositeExtract 1218 0
+                              Store 1219 1220
+            1221:    184(ptr) AccessChain 24(data) 25 1212 172 58
+            1222:18(float64_t) CompositeExtract 1218 1
+                              Store 1221 1222
+            1223:    184(ptr) AccessChain 24(data) 25 1212 172 73
+            1224:18(float64_t) CompositeExtract 1218 2
+                              Store 1223 1224
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.wavequery.frag.out b/Test/baseResults/hlsl.wavequery.frag.out
index 59f3050..df1b596 100644
--- a/Test/baseResults/hlsl.wavequery.frag.out
+++ b/Test/baseResults/hlsl.wavequery.frag.out
@@ -11,19 +11,19 @@
 0:3        true case
 0:?         Sequence
 0:5          Branch: Return with expression
-0:?             Constant:
-0:?               1.000000
-0:?               2.000000
-0:?               3.000000
-0:?               4.000000
+0:5            Constant:
+0:5              1.000000
+0:5              2.000000
+0:5              3.000000
+0:5              4.000000
 0:3        false case
 0:?         Sequence
 0:9          Branch: Return with expression
-0:?             Constant:
-0:?               4.000000
-0:?               3.000000
-0:?               2.000000
-0:?               1.000000
+0:9            Constant:
+0:9              4.000000
+0:9              3.000000
+0:9              2.000000
+0:9              1.000000
 0:2  Function Definition: PixelShaderFunction( ( temp void)
 0:2    Function Parameters: 
 0:?     Sequence
@@ -49,19 +49,19 @@
 0:3        true case
 0:?         Sequence
 0:5          Branch: Return with expression
-0:?             Constant:
-0:?               1.000000
-0:?               2.000000
-0:?               3.000000
-0:?               4.000000
+0:5            Constant:
+0:5              1.000000
+0:5              2.000000
+0:5              3.000000
+0:5              4.000000
 0:3        false case
 0:?         Sequence
 0:9          Branch: Return with expression
-0:?             Constant:
-0:?               4.000000
-0:?               3.000000
-0:?               2.000000
-0:?               1.000000
+0:9            Constant:
+0:9              4.000000
+0:9              3.000000
+0:9              2.000000
+0:9              1.000000
 0:2  Function Definition: PixelShaderFunction( ( temp void)
 0:2    Function Parameters: 
 0:?     Sequence
diff --git a/Test/baseResults/hlsl.wavereduction.comp.out b/Test/baseResults/hlsl.wavereduction.comp.out
index a898612..64a4e7c 100644
--- a/Test/baseResults/hlsl.wavereduction.comp.out
+++ b/Test/baseResults/hlsl.wavereduction.comp.out
@@ -6187,7 +6187,7 @@
 
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 901
+// Id's are bound by 991
 
                               Capability Shader
                               Capability Float64
@@ -6196,7 +6196,7 @@
                               Capability GroupNonUniformBallot
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint GLCompute 4  "CSMain" 896
+                              EntryPoint GLCompute 4  "CSMain" 986
                               ExecutionMode 4 LocalSize 32 16 1
                               Source HLSL 500
                               Name 4  "CSMain"
@@ -6210,9 +6210,9 @@
                               Name 22  "data"
                               MemberName 22(data) 0  "@data"
                               Name 24  "data"
-                              Name 894  "dti"
-                              Name 896  "dti"
-                              Name 898  "param"
+                              Name 984  "dti"
+                              Name 986  "dti"
+                              Name 988  "param"
                               MemberDecorate 20(Types) 0 Offset 0
                               MemberDecorate 20(Types) 1 Offset 16
                               MemberDecorate 20(Types) 2 Offset 32
@@ -6222,7 +6222,7 @@
                               Decorate 22(data) BufferBlock
                               Decorate 24(data) DescriptorSet 0
                               Decorate 24(data) Binding 0
-                              Decorate 896(dti) BuiltIn GlobalInvocationId
+                              Decorate 986(dti) BuiltIn GlobalInvocationId
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -6248,33 +6248,35 @@
               35:      6(int) Constant 3
               42:             TypePointer Uniform 6(int)
               51:             TypeVector 6(int) 2
-              72:     14(int) Constant 1
-              75:             TypePointer Uniform 15(ivec4)
-              84:             TypePointer Uniform 14(int)
-              93:             TypeVector 14(int) 2
-             105:             TypeVector 14(int) 3
-             115:     14(int) Constant 2
-             118:             TypePointer Uniform 17(fvec4)
-             127:             TypePointer Uniform 16(float)
-             136:             TypeVector 16(float) 2
-             148:             TypeVector 16(float) 3
-             158:     14(int) Constant 3
-             161:             TypePointer Uniform 19(f64vec4)
-             170:             TypePointer Uniform 18(float64_t)
-             179:             TypeVector 18(float64_t) 2
-             191:             TypeVector 18(float64_t) 3
-             889:             TypeBool
-             895:             TypePointer Input 7(ivec3)
-        896(dti):    895(ptr) Variable Input
+              58:      6(int) Constant 1
+              73:      6(int) Constant 2
+              78:     14(int) Constant 1
+              81:             TypePointer Uniform 15(ivec4)
+              90:             TypePointer Uniform 14(int)
+              99:             TypeVector 14(int) 2
+             112:             TypeVector 14(int) 3
+             125:     14(int) Constant 2
+             128:             TypePointer Uniform 17(fvec4)
+             137:             TypePointer Uniform 16(float)
+             146:             TypeVector 16(float) 2
+             159:             TypeVector 16(float) 3
+             172:     14(int) Constant 3
+             175:             TypePointer Uniform 19(f64vec4)
+             184:             TypePointer Uniform 18(float64_t)
+             193:             TypeVector 18(float64_t) 2
+             206:             TypeVector 18(float64_t) 3
+             979:             TypeBool
+             985:             TypePointer Input 7(ivec3)
+        986(dti):    985(ptr) Variable Input
        4(CSMain):           2 Function None 3
                5:             Label
-        894(dti):      8(ptr) Variable Function
-      898(param):      8(ptr) Variable Function
-             897:    7(ivec3) Load 896(dti)
-                              Store 894(dti) 897
-             899:    7(ivec3) Load 894(dti)
-                              Store 898(param) 899
-             900:           2 FunctionCall 11(@CSMain(vu3;) 898(param)
+        984(dti):      8(ptr) Variable Function
+      988(param):      8(ptr) Variable Function
+             987:    7(ivec3) Load 986(dti)
+                              Store 984(dti) 987
+             989:    7(ivec3) Load 984(dti)
+                              Store 988(param) 989
+             990:           2 FunctionCall 11(@CSMain(vu3;) 988(param)
                               Return
                               FunctionEnd
 11(@CSMain(vu3;):           2 Function None 9
@@ -6306,914 +6308,1068 @@
               53:   13(ivec4) Load 52
               54:   51(ivec2) VectorShuffle 53 53 0 1
               55:   51(ivec2) GroupNonUniformIAdd 35 Reduce 54
-              56:     32(ptr) AccessChain 24(data) 25 48 25
-              57:   13(ivec4) Load 56
-              58:   13(ivec4) VectorShuffle 57 55 4 5 2 3
-                              Store 56 58
-              59:     27(ptr) AccessChain 10(dti) 26
-              60:      6(int) Load 59
+              56:     42(ptr) AccessChain 24(data) 25 48 25 26
+              57:      6(int) CompositeExtract 55 0
+                              Store 56 57
+              59:     42(ptr) AccessChain 24(data) 25 48 25 58
+              60:      6(int) CompositeExtract 55 1
+                              Store 59 60
               61:     27(ptr) AccessChain 10(dti) 26
               62:      6(int) Load 61
-              63:     32(ptr) AccessChain 24(data) 25 62 25
-              64:   13(ivec4) Load 63
-              65:    7(ivec3) VectorShuffle 64 64 0 1 2
-              66:    7(ivec3) GroupNonUniformIAdd 35 Reduce 65
-              67:     32(ptr) AccessChain 24(data) 25 60 25
-              68:   13(ivec4) Load 67
-              69:   13(ivec4) VectorShuffle 68 66 4 5 6 3
-                              Store 67 69
-              70:     27(ptr) AccessChain 10(dti) 26
-              71:      6(int) Load 70
-              73:     27(ptr) AccessChain 10(dti) 26
-              74:      6(int) Load 73
-              76:     75(ptr) AccessChain 24(data) 25 74 72
-              77:   15(ivec4) Load 76
-              78:   15(ivec4) GroupNonUniformIAdd 35 Reduce 77
-              79:     75(ptr) AccessChain 24(data) 25 71 72
-                              Store 79 78
-              80:     27(ptr) AccessChain 10(dti) 26
-              81:      6(int) Load 80
-              82:     27(ptr) AccessChain 10(dti) 26
-              83:      6(int) Load 82
-              85:     84(ptr) AccessChain 24(data) 25 83 72 26
-              86:     14(int) Load 85
-              87:     14(int) GroupNonUniformIAdd 35 Reduce 86
-              88:     84(ptr) AccessChain 24(data) 25 81 72 26
-                              Store 88 87
-              89:     27(ptr) AccessChain 10(dti) 26
-              90:      6(int) Load 89
-              91:     27(ptr) AccessChain 10(dti) 26
-              92:      6(int) Load 91
-              94:     75(ptr) AccessChain 24(data) 25 92 72
-              95:   15(ivec4) Load 94
-              96:   93(ivec2) VectorShuffle 95 95 0 1
-              97:   93(ivec2) GroupNonUniformIAdd 35 Reduce 96
-              98:     75(ptr) AccessChain 24(data) 25 90 72
-              99:   15(ivec4) Load 98
-             100:   15(ivec4) VectorShuffle 99 97 4 5 2 3
-                              Store 98 100
-             101:     27(ptr) AccessChain 10(dti) 26
-             102:      6(int) Load 101
-             103:     27(ptr) AccessChain 10(dti) 26
-             104:      6(int) Load 103
-             106:     75(ptr) AccessChain 24(data) 25 104 72
-             107:   15(ivec4) Load 106
-             108:  105(ivec3) VectorShuffle 107 107 0 1 2
-             109:  105(ivec3) GroupNonUniformIAdd 35 Reduce 108
-             110:     75(ptr) AccessChain 24(data) 25 102 72
-             111:   15(ivec4) Load 110
-             112:   15(ivec4) VectorShuffle 111 109 4 5 6 3
-                              Store 110 112
-             113:     27(ptr) AccessChain 10(dti) 26
-             114:      6(int) Load 113
-             116:     27(ptr) AccessChain 10(dti) 26
-             117:      6(int) Load 116
-             119:    118(ptr) AccessChain 24(data) 25 117 115
-             120:   17(fvec4) Load 119
-             121:   17(fvec4) GroupNonUniformFAdd 35 Reduce 120
-             122:    118(ptr) AccessChain 24(data) 25 114 115
-                              Store 122 121
+              63:     27(ptr) AccessChain 10(dti) 26
+              64:      6(int) Load 63
+              65:     32(ptr) AccessChain 24(data) 25 64 25
+              66:   13(ivec4) Load 65
+              67:    7(ivec3) VectorShuffle 66 66 0 1 2
+              68:    7(ivec3) GroupNonUniformIAdd 35 Reduce 67
+              69:     42(ptr) AccessChain 24(data) 25 62 25 26
+              70:      6(int) CompositeExtract 68 0
+                              Store 69 70
+              71:     42(ptr) AccessChain 24(data) 25 62 25 58
+              72:      6(int) CompositeExtract 68 1
+                              Store 71 72
+              74:     42(ptr) AccessChain 24(data) 25 62 25 73
+              75:      6(int) CompositeExtract 68 2
+                              Store 74 75
+              76:     27(ptr) AccessChain 10(dti) 26
+              77:      6(int) Load 76
+              79:     27(ptr) AccessChain 10(dti) 26
+              80:      6(int) Load 79
+              82:     81(ptr) AccessChain 24(data) 25 80 78
+              83:   15(ivec4) Load 82
+              84:   15(ivec4) GroupNonUniformIAdd 35 Reduce 83
+              85:     81(ptr) AccessChain 24(data) 25 77 78
+                              Store 85 84
+              86:     27(ptr) AccessChain 10(dti) 26
+              87:      6(int) Load 86
+              88:     27(ptr) AccessChain 10(dti) 26
+              89:      6(int) Load 88
+              91:     90(ptr) AccessChain 24(data) 25 89 78 26
+              92:     14(int) Load 91
+              93:     14(int) GroupNonUniformIAdd 35 Reduce 92
+              94:     90(ptr) AccessChain 24(data) 25 87 78 26
+                              Store 94 93
+              95:     27(ptr) AccessChain 10(dti) 26
+              96:      6(int) Load 95
+              97:     27(ptr) AccessChain 10(dti) 26
+              98:      6(int) Load 97
+             100:     81(ptr) AccessChain 24(data) 25 98 78
+             101:   15(ivec4) Load 100
+             102:   99(ivec2) VectorShuffle 101 101 0 1
+             103:   99(ivec2) GroupNonUniformIAdd 35 Reduce 102
+             104:     90(ptr) AccessChain 24(data) 25 96 78 26
+             105:     14(int) CompositeExtract 103 0
+                              Store 104 105
+             106:     90(ptr) AccessChain 24(data) 25 96 78 58
+             107:     14(int) CompositeExtract 103 1
+                              Store 106 107
+             108:     27(ptr) AccessChain 10(dti) 26
+             109:      6(int) Load 108
+             110:     27(ptr) AccessChain 10(dti) 26
+             111:      6(int) Load 110
+             113:     81(ptr) AccessChain 24(data) 25 111 78
+             114:   15(ivec4) Load 113
+             115:  112(ivec3) VectorShuffle 114 114 0 1 2
+             116:  112(ivec3) GroupNonUniformIAdd 35 Reduce 115
+             117:     90(ptr) AccessChain 24(data) 25 109 78 26
+             118:     14(int) CompositeExtract 116 0
+                              Store 117 118
+             119:     90(ptr) AccessChain 24(data) 25 109 78 58
+             120:     14(int) CompositeExtract 116 1
+                              Store 119 120
+             121:     90(ptr) AccessChain 24(data) 25 109 78 73
+             122:     14(int) CompositeExtract 116 2
+                              Store 121 122
              123:     27(ptr) AccessChain 10(dti) 26
              124:      6(int) Load 123
-             125:     27(ptr) AccessChain 10(dti) 26
-             126:      6(int) Load 125
-             128:    127(ptr) AccessChain 24(data) 25 126 115 26
-             129:   16(float) Load 128
-             130:   16(float) GroupNonUniformFAdd 35 Reduce 129
-             131:    127(ptr) AccessChain 24(data) 25 124 115 26
-                              Store 131 130
-             132:     27(ptr) AccessChain 10(dti) 26
-             133:      6(int) Load 132
-             134:     27(ptr) AccessChain 10(dti) 26
-             135:      6(int) Load 134
-             137:    118(ptr) AccessChain 24(data) 25 135 115
-             138:   17(fvec4) Load 137
-             139:  136(fvec2) VectorShuffle 138 138 0 1
-             140:  136(fvec2) GroupNonUniformFAdd 35 Reduce 139
-             141:    118(ptr) AccessChain 24(data) 25 133 115
-             142:   17(fvec4) Load 141
-             143:   17(fvec4) VectorShuffle 142 140 4 5 2 3
-                              Store 141 143
+             126:     27(ptr) AccessChain 10(dti) 26
+             127:      6(int) Load 126
+             129:    128(ptr) AccessChain 24(data) 25 127 125
+             130:   17(fvec4) Load 129
+             131:   17(fvec4) GroupNonUniformFAdd 35 Reduce 130
+             132:    128(ptr) AccessChain 24(data) 25 124 125
+                              Store 132 131
+             133:     27(ptr) AccessChain 10(dti) 26
+             134:      6(int) Load 133
+             135:     27(ptr) AccessChain 10(dti) 26
+             136:      6(int) Load 135
+             138:    137(ptr) AccessChain 24(data) 25 136 125 26
+             139:   16(float) Load 138
+             140:   16(float) GroupNonUniformFAdd 35 Reduce 139
+             141:    137(ptr) AccessChain 24(data) 25 134 125 26
+                              Store 141 140
+             142:     27(ptr) AccessChain 10(dti) 26
+             143:      6(int) Load 142
              144:     27(ptr) AccessChain 10(dti) 26
              145:      6(int) Load 144
-             146:     27(ptr) AccessChain 10(dti) 26
-             147:      6(int) Load 146
-             149:    118(ptr) AccessChain 24(data) 25 147 115
-             150:   17(fvec4) Load 149
-             151:  148(fvec3) VectorShuffle 150 150 0 1 2
-             152:  148(fvec3) GroupNonUniformFAdd 35 Reduce 151
-             153:    118(ptr) AccessChain 24(data) 25 145 115
-             154:   17(fvec4) Load 153
-             155:   17(fvec4) VectorShuffle 154 152 4 5 6 3
-                              Store 153 155
-             156:     27(ptr) AccessChain 10(dti) 26
-             157:      6(int) Load 156
-             159:     27(ptr) AccessChain 10(dti) 26
-             160:      6(int) Load 159
-             162:    161(ptr) AccessChain 24(data) 25 160 158
-             163: 19(f64vec4) Load 162
-             164: 19(f64vec4) GroupNonUniformFAdd 35 Reduce 163
-             165:    161(ptr) AccessChain 24(data) 25 157 158
-                              Store 165 164
-             166:     27(ptr) AccessChain 10(dti) 26
-             167:      6(int) Load 166
-             168:     27(ptr) AccessChain 10(dti) 26
-             169:      6(int) Load 168
-             171:    170(ptr) AccessChain 24(data) 25 169 158 26
-             172:18(float64_t) Load 171
-             173:18(float64_t) GroupNonUniformFAdd 35 Reduce 172
-             174:    170(ptr) AccessChain 24(data) 25 167 158 26
-                              Store 174 173
-             175:     27(ptr) AccessChain 10(dti) 26
-             176:      6(int) Load 175
-             177:     27(ptr) AccessChain 10(dti) 26
-             178:      6(int) Load 177
-             180:    161(ptr) AccessChain 24(data) 25 178 158
-             181: 19(f64vec4) Load 180
-             182:179(f64vec2) VectorShuffle 181 181 0 1
-             183:179(f64vec2) GroupNonUniformFAdd 35 Reduce 182
-             184:    161(ptr) AccessChain 24(data) 25 176 158
-             185: 19(f64vec4) Load 184
-             186: 19(f64vec4) VectorShuffle 185 183 4 5 2 3
-                              Store 184 186
-             187:     27(ptr) AccessChain 10(dti) 26
-             188:      6(int) Load 187
+             147:    128(ptr) AccessChain 24(data) 25 145 125
+             148:   17(fvec4) Load 147
+             149:  146(fvec2) VectorShuffle 148 148 0 1
+             150:  146(fvec2) GroupNonUniformFAdd 35 Reduce 149
+             151:    137(ptr) AccessChain 24(data) 25 143 125 26
+             152:   16(float) CompositeExtract 150 0
+                              Store 151 152
+             153:    137(ptr) AccessChain 24(data) 25 143 125 58
+             154:   16(float) CompositeExtract 150 1
+                              Store 153 154
+             155:     27(ptr) AccessChain 10(dti) 26
+             156:      6(int) Load 155
+             157:     27(ptr) AccessChain 10(dti) 26
+             158:      6(int) Load 157
+             160:    128(ptr) AccessChain 24(data) 25 158 125
+             161:   17(fvec4) Load 160
+             162:  159(fvec3) VectorShuffle 161 161 0 1 2
+             163:  159(fvec3) GroupNonUniformFAdd 35 Reduce 162
+             164:    137(ptr) AccessChain 24(data) 25 156 125 26
+             165:   16(float) CompositeExtract 163 0
+                              Store 164 165
+             166:    137(ptr) AccessChain 24(data) 25 156 125 58
+             167:   16(float) CompositeExtract 163 1
+                              Store 166 167
+             168:    137(ptr) AccessChain 24(data) 25 156 125 73
+             169:   16(float) CompositeExtract 163 2
+                              Store 168 169
+             170:     27(ptr) AccessChain 10(dti) 26
+             171:      6(int) Load 170
+             173:     27(ptr) AccessChain 10(dti) 26
+             174:      6(int) Load 173
+             176:    175(ptr) AccessChain 24(data) 25 174 172
+             177: 19(f64vec4) Load 176
+             178: 19(f64vec4) GroupNonUniformFAdd 35 Reduce 177
+             179:    175(ptr) AccessChain 24(data) 25 171 172
+                              Store 179 178
+             180:     27(ptr) AccessChain 10(dti) 26
+             181:      6(int) Load 180
+             182:     27(ptr) AccessChain 10(dti) 26
+             183:      6(int) Load 182
+             185:    184(ptr) AccessChain 24(data) 25 183 172 26
+             186:18(float64_t) Load 185
+             187:18(float64_t) GroupNonUniformFAdd 35 Reduce 186
+             188:    184(ptr) AccessChain 24(data) 25 181 172 26
+                              Store 188 187
              189:     27(ptr) AccessChain 10(dti) 26
              190:      6(int) Load 189
-             192:    161(ptr) AccessChain 24(data) 25 190 158
-             193: 19(f64vec4) Load 192
-             194:191(f64vec3) VectorShuffle 193 193 0 1 2
-             195:191(f64vec3) GroupNonUniformFAdd 35 Reduce 194
-             196:    161(ptr) AccessChain 24(data) 25 188 158
-             197: 19(f64vec4) Load 196
-             198: 19(f64vec4) VectorShuffle 197 195 4 5 6 3
-                              Store 196 198
-             199:     27(ptr) AccessChain 10(dti) 26
-             200:      6(int) Load 199
-             201:     27(ptr) AccessChain 10(dti) 26
-             202:      6(int) Load 201
-             203:     32(ptr) AccessChain 24(data) 25 202 25
-             204:   13(ivec4) Load 203
-             205:   13(ivec4) GroupNonUniformIMul 35 Reduce 204
-             206:     32(ptr) AccessChain 24(data) 25 200 25
-                              Store 206 205
-             207:     27(ptr) AccessChain 10(dti) 26
-             208:      6(int) Load 207
-             209:     27(ptr) AccessChain 10(dti) 26
-             210:      6(int) Load 209
-             211:     42(ptr) AccessChain 24(data) 25 210 25 26
-             212:      6(int) Load 211
-             213:      6(int) GroupNonUniformIMul 35 Reduce 212
-             214:     42(ptr) AccessChain 24(data) 25 208 25 26
-                              Store 214 213
-             215:     27(ptr) AccessChain 10(dti) 26
-             216:      6(int) Load 215
+             191:     27(ptr) AccessChain 10(dti) 26
+             192:      6(int) Load 191
+             194:    175(ptr) AccessChain 24(data) 25 192 172
+             195: 19(f64vec4) Load 194
+             196:193(f64vec2) VectorShuffle 195 195 0 1
+             197:193(f64vec2) GroupNonUniformFAdd 35 Reduce 196
+             198:    184(ptr) AccessChain 24(data) 25 190 172 26
+             199:18(float64_t) CompositeExtract 197 0
+                              Store 198 199
+             200:    184(ptr) AccessChain 24(data) 25 190 172 58
+             201:18(float64_t) CompositeExtract 197 1
+                              Store 200 201
+             202:     27(ptr) AccessChain 10(dti) 26
+             203:      6(int) Load 202
+             204:     27(ptr) AccessChain 10(dti) 26
+             205:      6(int) Load 204
+             207:    175(ptr) AccessChain 24(data) 25 205 172
+             208: 19(f64vec4) Load 207
+             209:206(f64vec3) VectorShuffle 208 208 0 1 2
+             210:206(f64vec3) GroupNonUniformFAdd 35 Reduce 209
+             211:    184(ptr) AccessChain 24(data) 25 203 172 26
+             212:18(float64_t) CompositeExtract 210 0
+                              Store 211 212
+             213:    184(ptr) AccessChain 24(data) 25 203 172 58
+             214:18(float64_t) CompositeExtract 210 1
+                              Store 213 214
+             215:    184(ptr) AccessChain 24(data) 25 203 172 73
+             216:18(float64_t) CompositeExtract 210 2
+                              Store 215 216
              217:     27(ptr) AccessChain 10(dti) 26
              218:      6(int) Load 217
-             219:     32(ptr) AccessChain 24(data) 25 218 25
-             220:   13(ivec4) Load 219
-             221:   51(ivec2) VectorShuffle 220 220 0 1
-             222:   51(ivec2) GroupNonUniformIMul 35 Reduce 221
-             223:     32(ptr) AccessChain 24(data) 25 216 25
-             224:   13(ivec4) Load 223
-             225:   13(ivec4) VectorShuffle 224 222 4 5 2 3
-                              Store 223 225
-             226:     27(ptr) AccessChain 10(dti) 26
-             227:      6(int) Load 226
-             228:     27(ptr) AccessChain 10(dti) 26
-             229:      6(int) Load 228
-             230:     32(ptr) AccessChain 24(data) 25 229 25
-             231:   13(ivec4) Load 230
-             232:    7(ivec3) VectorShuffle 231 231 0 1 2
-             233:    7(ivec3) GroupNonUniformIMul 35 Reduce 232
-             234:     32(ptr) AccessChain 24(data) 25 227 25
-             235:   13(ivec4) Load 234
-             236:   13(ivec4) VectorShuffle 235 233 4 5 6 3
-                              Store 234 236
-             237:     27(ptr) AccessChain 10(dti) 26
-             238:      6(int) Load 237
-             239:     27(ptr) AccessChain 10(dti) 26
-             240:      6(int) Load 239
-             241:     75(ptr) AccessChain 24(data) 25 240 72
-             242:   15(ivec4) Load 241
-             243:   15(ivec4) GroupNonUniformIMul 35 Reduce 242
-             244:     75(ptr) AccessChain 24(data) 25 238 72
-                              Store 244 243
+             219:     27(ptr) AccessChain 10(dti) 26
+             220:      6(int) Load 219
+             221:     32(ptr) AccessChain 24(data) 25 220 25
+             222:   13(ivec4) Load 221
+             223:   13(ivec4) GroupNonUniformIMul 35 Reduce 222
+             224:     32(ptr) AccessChain 24(data) 25 218 25
+                              Store 224 223
+             225:     27(ptr) AccessChain 10(dti) 26
+             226:      6(int) Load 225
+             227:     27(ptr) AccessChain 10(dti) 26
+             228:      6(int) Load 227
+             229:     42(ptr) AccessChain 24(data) 25 228 25 26
+             230:      6(int) Load 229
+             231:      6(int) GroupNonUniformIMul 35 Reduce 230
+             232:     42(ptr) AccessChain 24(data) 25 226 25 26
+                              Store 232 231
+             233:     27(ptr) AccessChain 10(dti) 26
+             234:      6(int) Load 233
+             235:     27(ptr) AccessChain 10(dti) 26
+             236:      6(int) Load 235
+             237:     32(ptr) AccessChain 24(data) 25 236 25
+             238:   13(ivec4) Load 237
+             239:   51(ivec2) VectorShuffle 238 238 0 1
+             240:   51(ivec2) GroupNonUniformIMul 35 Reduce 239
+             241:     42(ptr) AccessChain 24(data) 25 234 25 26
+             242:      6(int) CompositeExtract 240 0
+                              Store 241 242
+             243:     42(ptr) AccessChain 24(data) 25 234 25 58
+             244:      6(int) CompositeExtract 240 1
+                              Store 243 244
              245:     27(ptr) AccessChain 10(dti) 26
              246:      6(int) Load 245
              247:     27(ptr) AccessChain 10(dti) 26
              248:      6(int) Load 247
-             249:     84(ptr) AccessChain 24(data) 25 248 72 26
-             250:     14(int) Load 249
-             251:     14(int) GroupNonUniformIMul 35 Reduce 250
-             252:     84(ptr) AccessChain 24(data) 25 246 72 26
-                              Store 252 251
-             253:     27(ptr) AccessChain 10(dti) 26
-             254:      6(int) Load 253
-             255:     27(ptr) AccessChain 10(dti) 26
-             256:      6(int) Load 255
-             257:     75(ptr) AccessChain 24(data) 25 256 72
-             258:   15(ivec4) Load 257
-             259:   93(ivec2) VectorShuffle 258 258 0 1
-             260:   93(ivec2) GroupNonUniformIMul 35 Reduce 259
-             261:     75(ptr) AccessChain 24(data) 25 254 72
-             262:   15(ivec4) Load 261
-             263:   15(ivec4) VectorShuffle 262 260 4 5 2 3
-                              Store 261 263
-             264:     27(ptr) AccessChain 10(dti) 26
-             265:      6(int) Load 264
-             266:     27(ptr) AccessChain 10(dti) 26
-             267:      6(int) Load 266
-             268:     75(ptr) AccessChain 24(data) 25 267 72
-             269:   15(ivec4) Load 268
-             270:  105(ivec3) VectorShuffle 269 269 0 1 2
-             271:  105(ivec3) GroupNonUniformIMul 35 Reduce 270
-             272:     75(ptr) AccessChain 24(data) 25 265 72
-             273:   15(ivec4) Load 272
-             274:   15(ivec4) VectorShuffle 273 271 4 5 6 3
-                              Store 272 274
+             249:     32(ptr) AccessChain 24(data) 25 248 25
+             250:   13(ivec4) Load 249
+             251:    7(ivec3) VectorShuffle 250 250 0 1 2
+             252:    7(ivec3) GroupNonUniformIMul 35 Reduce 251
+             253:     42(ptr) AccessChain 24(data) 25 246 25 26
+             254:      6(int) CompositeExtract 252 0
+                              Store 253 254
+             255:     42(ptr) AccessChain 24(data) 25 246 25 58
+             256:      6(int) CompositeExtract 252 1
+                              Store 255 256
+             257:     42(ptr) AccessChain 24(data) 25 246 25 73
+             258:      6(int) CompositeExtract 252 2
+                              Store 257 258
+             259:     27(ptr) AccessChain 10(dti) 26
+             260:      6(int) Load 259
+             261:     27(ptr) AccessChain 10(dti) 26
+             262:      6(int) Load 261
+             263:     81(ptr) AccessChain 24(data) 25 262 78
+             264:   15(ivec4) Load 263
+             265:   15(ivec4) GroupNonUniformIMul 35 Reduce 264
+             266:     81(ptr) AccessChain 24(data) 25 260 78
+                              Store 266 265
+             267:     27(ptr) AccessChain 10(dti) 26
+             268:      6(int) Load 267
+             269:     27(ptr) AccessChain 10(dti) 26
+             270:      6(int) Load 269
+             271:     90(ptr) AccessChain 24(data) 25 270 78 26
+             272:     14(int) Load 271
+             273:     14(int) GroupNonUniformIMul 35 Reduce 272
+             274:     90(ptr) AccessChain 24(data) 25 268 78 26
+                              Store 274 273
              275:     27(ptr) AccessChain 10(dti) 26
              276:      6(int) Load 275
              277:     27(ptr) AccessChain 10(dti) 26
              278:      6(int) Load 277
-             279:    118(ptr) AccessChain 24(data) 25 278 115
-             280:   17(fvec4) Load 279
-             281:   17(fvec4) GroupNonUniformFMul 35 Reduce 280
-             282:    118(ptr) AccessChain 24(data) 25 276 115
-                              Store 282 281
-             283:     27(ptr) AccessChain 10(dti) 26
-             284:      6(int) Load 283
-             285:     27(ptr) AccessChain 10(dti) 26
-             286:      6(int) Load 285
-             287:    127(ptr) AccessChain 24(data) 25 286 115 26
-             288:   16(float) Load 287
-             289:   16(float) GroupNonUniformFMul 35 Reduce 288
-             290:    127(ptr) AccessChain 24(data) 25 284 115 26
-                              Store 290 289
-             291:     27(ptr) AccessChain 10(dti) 26
-             292:      6(int) Load 291
-             293:     27(ptr) AccessChain 10(dti) 26
-             294:      6(int) Load 293
-             295:    118(ptr) AccessChain 24(data) 25 294 115
-             296:   17(fvec4) Load 295
-             297:  136(fvec2) VectorShuffle 296 296 0 1
-             298:  136(fvec2) GroupNonUniformFMul 35 Reduce 297
-             299:    118(ptr) AccessChain 24(data) 25 292 115
-             300:   17(fvec4) Load 299
-             301:   17(fvec4) VectorShuffle 300 298 4 5 2 3
-                              Store 299 301
-             302:     27(ptr) AccessChain 10(dti) 26
-             303:      6(int) Load 302
-             304:     27(ptr) AccessChain 10(dti) 26
-             305:      6(int) Load 304
-             306:    118(ptr) AccessChain 24(data) 25 305 115
-             307:   17(fvec4) Load 306
-             308:  148(fvec3) VectorShuffle 307 307 0 1 2
-             309:  148(fvec3) GroupNonUniformFMul 35 Reduce 308
-             310:    118(ptr) AccessChain 24(data) 25 303 115
-             311:   17(fvec4) Load 310
-             312:   17(fvec4) VectorShuffle 311 309 4 5 6 3
-                              Store 310 312
-             313:     27(ptr) AccessChain 10(dti) 26
-             314:      6(int) Load 313
-             315:     27(ptr) AccessChain 10(dti) 26
-             316:      6(int) Load 315
-             317:    161(ptr) AccessChain 24(data) 25 316 158
-             318: 19(f64vec4) Load 317
-             319: 19(f64vec4) GroupNonUniformFMul 35 Reduce 318
-             320:    161(ptr) AccessChain 24(data) 25 314 158
-                              Store 320 319
-             321:     27(ptr) AccessChain 10(dti) 26
-             322:      6(int) Load 321
-             323:     27(ptr) AccessChain 10(dti) 26
-             324:      6(int) Load 323
-             325:    170(ptr) AccessChain 24(data) 25 324 158 26
-             326:18(float64_t) Load 325
-             327:18(float64_t) GroupNonUniformFMul 35 Reduce 326
-             328:    170(ptr) AccessChain 24(data) 25 322 158 26
-                              Store 328 327
+             279:     81(ptr) AccessChain 24(data) 25 278 78
+             280:   15(ivec4) Load 279
+             281:   99(ivec2) VectorShuffle 280 280 0 1
+             282:   99(ivec2) GroupNonUniformIMul 35 Reduce 281
+             283:     90(ptr) AccessChain 24(data) 25 276 78 26
+             284:     14(int) CompositeExtract 282 0
+                              Store 283 284
+             285:     90(ptr) AccessChain 24(data) 25 276 78 58
+             286:     14(int) CompositeExtract 282 1
+                              Store 285 286
+             287:     27(ptr) AccessChain 10(dti) 26
+             288:      6(int) Load 287
+             289:     27(ptr) AccessChain 10(dti) 26
+             290:      6(int) Load 289
+             291:     81(ptr) AccessChain 24(data) 25 290 78
+             292:   15(ivec4) Load 291
+             293:  112(ivec3) VectorShuffle 292 292 0 1 2
+             294:  112(ivec3) GroupNonUniformIMul 35 Reduce 293
+             295:     90(ptr) AccessChain 24(data) 25 288 78 26
+             296:     14(int) CompositeExtract 294 0
+                              Store 295 296
+             297:     90(ptr) AccessChain 24(data) 25 288 78 58
+             298:     14(int) CompositeExtract 294 1
+                              Store 297 298
+             299:     90(ptr) AccessChain 24(data) 25 288 78 73
+             300:     14(int) CompositeExtract 294 2
+                              Store 299 300
+             301:     27(ptr) AccessChain 10(dti) 26
+             302:      6(int) Load 301
+             303:     27(ptr) AccessChain 10(dti) 26
+             304:      6(int) Load 303
+             305:    128(ptr) AccessChain 24(data) 25 304 125
+             306:   17(fvec4) Load 305
+             307:   17(fvec4) GroupNonUniformFMul 35 Reduce 306
+             308:    128(ptr) AccessChain 24(data) 25 302 125
+                              Store 308 307
+             309:     27(ptr) AccessChain 10(dti) 26
+             310:      6(int) Load 309
+             311:     27(ptr) AccessChain 10(dti) 26
+             312:      6(int) Load 311
+             313:    137(ptr) AccessChain 24(data) 25 312 125 26
+             314:   16(float) Load 313
+             315:   16(float) GroupNonUniformFMul 35 Reduce 314
+             316:    137(ptr) AccessChain 24(data) 25 310 125 26
+                              Store 316 315
+             317:     27(ptr) AccessChain 10(dti) 26
+             318:      6(int) Load 317
+             319:     27(ptr) AccessChain 10(dti) 26
+             320:      6(int) Load 319
+             321:    128(ptr) AccessChain 24(data) 25 320 125
+             322:   17(fvec4) Load 321
+             323:  146(fvec2) VectorShuffle 322 322 0 1
+             324:  146(fvec2) GroupNonUniformFMul 35 Reduce 323
+             325:    137(ptr) AccessChain 24(data) 25 318 125 26
+             326:   16(float) CompositeExtract 324 0
+                              Store 325 326
+             327:    137(ptr) AccessChain 24(data) 25 318 125 58
+             328:   16(float) CompositeExtract 324 1
+                              Store 327 328
              329:     27(ptr) AccessChain 10(dti) 26
              330:      6(int) Load 329
              331:     27(ptr) AccessChain 10(dti) 26
              332:      6(int) Load 331
-             333:    161(ptr) AccessChain 24(data) 25 332 158
-             334: 19(f64vec4) Load 333
-             335:179(f64vec2) VectorShuffle 334 334 0 1
-             336:179(f64vec2) GroupNonUniformFMul 35 Reduce 335
-             337:    161(ptr) AccessChain 24(data) 25 330 158
-             338: 19(f64vec4) Load 337
-             339: 19(f64vec4) VectorShuffle 338 336 4 5 2 3
-                              Store 337 339
-             340:     27(ptr) AccessChain 10(dti) 26
-             341:      6(int) Load 340
-             342:     27(ptr) AccessChain 10(dti) 26
-             343:      6(int) Load 342
-             344:    161(ptr) AccessChain 24(data) 25 343 158
-             345: 19(f64vec4) Load 344
-             346:191(f64vec3) VectorShuffle 345 345 0 1 2
-             347:191(f64vec3) GroupNonUniformFMul 35 Reduce 346
-             348:    161(ptr) AccessChain 24(data) 25 341 158
-             349: 19(f64vec4) Load 348
-             350: 19(f64vec4) VectorShuffle 349 347 4 5 6 3
-                              Store 348 350
+             333:    128(ptr) AccessChain 24(data) 25 332 125
+             334:   17(fvec4) Load 333
+             335:  159(fvec3) VectorShuffle 334 334 0 1 2
+             336:  159(fvec3) GroupNonUniformFMul 35 Reduce 335
+             337:    137(ptr) AccessChain 24(data) 25 330 125 26
+             338:   16(float) CompositeExtract 336 0
+                              Store 337 338
+             339:    137(ptr) AccessChain 24(data) 25 330 125 58
+             340:   16(float) CompositeExtract 336 1
+                              Store 339 340
+             341:    137(ptr) AccessChain 24(data) 25 330 125 73
+             342:   16(float) CompositeExtract 336 2
+                              Store 341 342
+             343:     27(ptr) AccessChain 10(dti) 26
+             344:      6(int) Load 343
+             345:     27(ptr) AccessChain 10(dti) 26
+             346:      6(int) Load 345
+             347:    175(ptr) AccessChain 24(data) 25 346 172
+             348: 19(f64vec4) Load 347
+             349: 19(f64vec4) GroupNonUniformFMul 35 Reduce 348
+             350:    175(ptr) AccessChain 24(data) 25 344 172
+                              Store 350 349
              351:     27(ptr) AccessChain 10(dti) 26
              352:      6(int) Load 351
              353:     27(ptr) AccessChain 10(dti) 26
              354:      6(int) Load 353
-             355:     32(ptr) AccessChain 24(data) 25 354 25
-             356:   13(ivec4) Load 355
-             357:   13(ivec4) GroupNonUniformUMin 35 Reduce 356
-             358:     32(ptr) AccessChain 24(data) 25 352 25
+             355:    184(ptr) AccessChain 24(data) 25 354 172 26
+             356:18(float64_t) Load 355
+             357:18(float64_t) GroupNonUniformFMul 35 Reduce 356
+             358:    184(ptr) AccessChain 24(data) 25 352 172 26
                               Store 358 357
              359:     27(ptr) AccessChain 10(dti) 26
              360:      6(int) Load 359
              361:     27(ptr) AccessChain 10(dti) 26
              362:      6(int) Load 361
-             363:     42(ptr) AccessChain 24(data) 25 362 25 26
-             364:      6(int) Load 363
-             365:      6(int) GroupNonUniformUMin 35 Reduce 364
-             366:     42(ptr) AccessChain 24(data) 25 360 25 26
-                              Store 366 365
-             367:     27(ptr) AccessChain 10(dti) 26
-             368:      6(int) Load 367
-             369:     27(ptr) AccessChain 10(dti) 26
-             370:      6(int) Load 369
-             371:     32(ptr) AccessChain 24(data) 25 370 25
-             372:   13(ivec4) Load 371
-             373:   51(ivec2) VectorShuffle 372 372 0 1
-             374:   51(ivec2) GroupNonUniformUMin 35 Reduce 373
-             375:     32(ptr) AccessChain 24(data) 25 368 25
-             376:   13(ivec4) Load 375
-             377:   13(ivec4) VectorShuffle 376 374 4 5 2 3
-                              Store 375 377
-             378:     27(ptr) AccessChain 10(dti) 26
-             379:      6(int) Load 378
-             380:     27(ptr) AccessChain 10(dti) 26
-             381:      6(int) Load 380
-             382:     32(ptr) AccessChain 24(data) 25 381 25
-             383:   13(ivec4) Load 382
-             384:    7(ivec3) VectorShuffle 383 383 0 1 2
-             385:    7(ivec3) GroupNonUniformUMin 35 Reduce 384
-             386:     32(ptr) AccessChain 24(data) 25 379 25
-             387:   13(ivec4) Load 386
-             388:   13(ivec4) VectorShuffle 387 385 4 5 6 3
-                              Store 386 388
-             389:     27(ptr) AccessChain 10(dti) 26
-             390:      6(int) Load 389
-             391:     27(ptr) AccessChain 10(dti) 26
-             392:      6(int) Load 391
-             393:     75(ptr) AccessChain 24(data) 25 392 72
-             394:   15(ivec4) Load 393
-             395:   15(ivec4) GroupNonUniformSMin 35 Reduce 394
-             396:     75(ptr) AccessChain 24(data) 25 390 72
-                              Store 396 395
-             397:     27(ptr) AccessChain 10(dti) 26
+             363:    175(ptr) AccessChain 24(data) 25 362 172
+             364: 19(f64vec4) Load 363
+             365:193(f64vec2) VectorShuffle 364 364 0 1
+             366:193(f64vec2) GroupNonUniformFMul 35 Reduce 365
+             367:    184(ptr) AccessChain 24(data) 25 360 172 26
+             368:18(float64_t) CompositeExtract 366 0
+                              Store 367 368
+             369:    184(ptr) AccessChain 24(data) 25 360 172 58
+             370:18(float64_t) CompositeExtract 366 1
+                              Store 369 370
+             371:     27(ptr) AccessChain 10(dti) 26
+             372:      6(int) Load 371
+             373:     27(ptr) AccessChain 10(dti) 26
+             374:      6(int) Load 373
+             375:    175(ptr) AccessChain 24(data) 25 374 172
+             376: 19(f64vec4) Load 375
+             377:206(f64vec3) VectorShuffle 376 376 0 1 2
+             378:206(f64vec3) GroupNonUniformFMul 35 Reduce 377
+             379:    184(ptr) AccessChain 24(data) 25 372 172 26
+             380:18(float64_t) CompositeExtract 378 0
+                              Store 379 380
+             381:    184(ptr) AccessChain 24(data) 25 372 172 58
+             382:18(float64_t) CompositeExtract 378 1
+                              Store 381 382
+             383:    184(ptr) AccessChain 24(data) 25 372 172 73
+             384:18(float64_t) CompositeExtract 378 2
+                              Store 383 384
+             385:     27(ptr) AccessChain 10(dti) 26
+             386:      6(int) Load 385
+             387:     27(ptr) AccessChain 10(dti) 26
+             388:      6(int) Load 387
+             389:     32(ptr) AccessChain 24(data) 25 388 25
+             390:   13(ivec4) Load 389
+             391:   13(ivec4) GroupNonUniformUMin 35 Reduce 390
+             392:     32(ptr) AccessChain 24(data) 25 386 25
+                              Store 392 391
+             393:     27(ptr) AccessChain 10(dti) 26
+             394:      6(int) Load 393
+             395:     27(ptr) AccessChain 10(dti) 26
+             396:      6(int) Load 395
+             397:     42(ptr) AccessChain 24(data) 25 396 25 26
              398:      6(int) Load 397
-             399:     27(ptr) AccessChain 10(dti) 26
-             400:      6(int) Load 399
-             401:     84(ptr) AccessChain 24(data) 25 400 72 26
-             402:     14(int) Load 401
-             403:     14(int) GroupNonUniformSMin 35 Reduce 402
-             404:     84(ptr) AccessChain 24(data) 25 398 72 26
-                              Store 404 403
-             405:     27(ptr) AccessChain 10(dti) 26
-             406:      6(int) Load 405
-             407:     27(ptr) AccessChain 10(dti) 26
-             408:      6(int) Load 407
-             409:     75(ptr) AccessChain 24(data) 25 408 72
-             410:   15(ivec4) Load 409
-             411:   93(ivec2) VectorShuffle 410 410 0 1
-             412:   93(ivec2) GroupNonUniformSMin 35 Reduce 411
-             413:     75(ptr) AccessChain 24(data) 25 406 72
-             414:   15(ivec4) Load 413
-             415:   15(ivec4) VectorShuffle 414 412 4 5 2 3
-                              Store 413 415
-             416:     27(ptr) AccessChain 10(dti) 26
-             417:      6(int) Load 416
-             418:     27(ptr) AccessChain 10(dti) 26
-             419:      6(int) Load 418
-             420:     75(ptr) AccessChain 24(data) 25 419 72
-             421:   15(ivec4) Load 420
-             422:  105(ivec3) VectorShuffle 421 421 0 1 2
-             423:  105(ivec3) GroupNonUniformSMin 35 Reduce 422
-             424:     75(ptr) AccessChain 24(data) 25 417 72
-             425:   15(ivec4) Load 424
-             426:   15(ivec4) VectorShuffle 425 423 4 5 6 3
-                              Store 424 426
+             399:      6(int) GroupNonUniformUMin 35 Reduce 398
+             400:     42(ptr) AccessChain 24(data) 25 394 25 26
+                              Store 400 399
+             401:     27(ptr) AccessChain 10(dti) 26
+             402:      6(int) Load 401
+             403:     27(ptr) AccessChain 10(dti) 26
+             404:      6(int) Load 403
+             405:     32(ptr) AccessChain 24(data) 25 404 25
+             406:   13(ivec4) Load 405
+             407:   51(ivec2) VectorShuffle 406 406 0 1
+             408:   51(ivec2) GroupNonUniformUMin 35 Reduce 407
+             409:     42(ptr) AccessChain 24(data) 25 402 25 26
+             410:      6(int) CompositeExtract 408 0
+                              Store 409 410
+             411:     42(ptr) AccessChain 24(data) 25 402 25 58
+             412:      6(int) CompositeExtract 408 1
+                              Store 411 412
+             413:     27(ptr) AccessChain 10(dti) 26
+             414:      6(int) Load 413
+             415:     27(ptr) AccessChain 10(dti) 26
+             416:      6(int) Load 415
+             417:     32(ptr) AccessChain 24(data) 25 416 25
+             418:   13(ivec4) Load 417
+             419:    7(ivec3) VectorShuffle 418 418 0 1 2
+             420:    7(ivec3) GroupNonUniformUMin 35 Reduce 419
+             421:     42(ptr) AccessChain 24(data) 25 414 25 26
+             422:      6(int) CompositeExtract 420 0
+                              Store 421 422
+             423:     42(ptr) AccessChain 24(data) 25 414 25 58
+             424:      6(int) CompositeExtract 420 1
+                              Store 423 424
+             425:     42(ptr) AccessChain 24(data) 25 414 25 73
+             426:      6(int) CompositeExtract 420 2
+                              Store 425 426
              427:     27(ptr) AccessChain 10(dti) 26
              428:      6(int) Load 427
              429:     27(ptr) AccessChain 10(dti) 26
              430:      6(int) Load 429
-             431:    118(ptr) AccessChain 24(data) 25 430 115
-             432:   17(fvec4) Load 431
-             433:   17(fvec4) GroupNonUniformFMin 35 Reduce 432
-             434:    118(ptr) AccessChain 24(data) 25 428 115
+             431:     81(ptr) AccessChain 24(data) 25 430 78
+             432:   15(ivec4) Load 431
+             433:   15(ivec4) GroupNonUniformSMin 35 Reduce 432
+             434:     81(ptr) AccessChain 24(data) 25 428 78
                               Store 434 433
              435:     27(ptr) AccessChain 10(dti) 26
              436:      6(int) Load 435
              437:     27(ptr) AccessChain 10(dti) 26
              438:      6(int) Load 437
-             439:    127(ptr) AccessChain 24(data) 25 438 115 26
-             440:   16(float) Load 439
-             441:   16(float) GroupNonUniformFMin 35 Reduce 440
-             442:    127(ptr) AccessChain 24(data) 25 436 115 26
+             439:     90(ptr) AccessChain 24(data) 25 438 78 26
+             440:     14(int) Load 439
+             441:     14(int) GroupNonUniformSMin 35 Reduce 440
+             442:     90(ptr) AccessChain 24(data) 25 436 78 26
                               Store 442 441
              443:     27(ptr) AccessChain 10(dti) 26
              444:      6(int) Load 443
              445:     27(ptr) AccessChain 10(dti) 26
              446:      6(int) Load 445
-             447:    118(ptr) AccessChain 24(data) 25 446 115
-             448:   17(fvec4) Load 447
-             449:  136(fvec2) VectorShuffle 448 448 0 1
-             450:  136(fvec2) GroupNonUniformFMin 35 Reduce 449
-             451:    118(ptr) AccessChain 24(data) 25 444 115
-             452:   17(fvec4) Load 451
-             453:   17(fvec4) VectorShuffle 452 450 4 5 2 3
-                              Store 451 453
-             454:     27(ptr) AccessChain 10(dti) 26
-             455:      6(int) Load 454
-             456:     27(ptr) AccessChain 10(dti) 26
-             457:      6(int) Load 456
-             458:    118(ptr) AccessChain 24(data) 25 457 115
-             459:   17(fvec4) Load 458
-             460:  148(fvec3) VectorShuffle 459 459 0 1 2
-             461:  148(fvec3) GroupNonUniformFMin 35 Reduce 460
-             462:    118(ptr) AccessChain 24(data) 25 455 115
-             463:   17(fvec4) Load 462
-             464:   17(fvec4) VectorShuffle 463 461 4 5 6 3
-                              Store 462 464
-             465:     27(ptr) AccessChain 10(dti) 26
-             466:      6(int) Load 465
-             467:     27(ptr) AccessChain 10(dti) 26
-             468:      6(int) Load 467
-             469:    161(ptr) AccessChain 24(data) 25 468 158
-             470: 19(f64vec4) Load 469
-             471: 19(f64vec4) GroupNonUniformFMin 35 Reduce 470
-             472:    161(ptr) AccessChain 24(data) 25 466 158
-                              Store 472 471
-             473:     27(ptr) AccessChain 10(dti) 26
-             474:      6(int) Load 473
-             475:     27(ptr) AccessChain 10(dti) 26
-             476:      6(int) Load 475
-             477:    170(ptr) AccessChain 24(data) 25 476 158 26
-             478:18(float64_t) Load 477
-             479:18(float64_t) GroupNonUniformFMin 35 Reduce 478
-             480:    170(ptr) AccessChain 24(data) 25 474 158 26
-                              Store 480 479
-             481:     27(ptr) AccessChain 10(dti) 26
-             482:      6(int) Load 481
-             483:     27(ptr) AccessChain 10(dti) 26
-             484:      6(int) Load 483
-             485:    161(ptr) AccessChain 24(data) 25 484 158
-             486: 19(f64vec4) Load 485
-             487:179(f64vec2) VectorShuffle 486 486 0 1
-             488:179(f64vec2) GroupNonUniformFMin 35 Reduce 487
-             489:    161(ptr) AccessChain 24(data) 25 482 158
-             490: 19(f64vec4) Load 489
-             491: 19(f64vec4) VectorShuffle 490 488 4 5 2 3
-                              Store 489 491
-             492:     27(ptr) AccessChain 10(dti) 26
-             493:      6(int) Load 492
-             494:     27(ptr) AccessChain 10(dti) 26
-             495:      6(int) Load 494
-             496:    161(ptr) AccessChain 24(data) 25 495 158
-             497: 19(f64vec4) Load 496
-             498:191(f64vec3) VectorShuffle 497 497 0 1 2
-             499:191(f64vec3) GroupNonUniformFMin 35 Reduce 498
-             500:    161(ptr) AccessChain 24(data) 25 493 158
-             501: 19(f64vec4) Load 500
-             502: 19(f64vec4) VectorShuffle 501 499 4 5 6 3
-                              Store 500 502
-             503:     27(ptr) AccessChain 10(dti) 26
-             504:      6(int) Load 503
-             505:     27(ptr) AccessChain 10(dti) 26
-             506:      6(int) Load 505
-             507:     32(ptr) AccessChain 24(data) 25 506 25
-             508:   13(ivec4) Load 507
-             509:   13(ivec4) GroupNonUniformUMax 35 Reduce 508
-             510:     32(ptr) AccessChain 24(data) 25 504 25
-                              Store 510 509
+             447:     81(ptr) AccessChain 24(data) 25 446 78
+             448:   15(ivec4) Load 447
+             449:   99(ivec2) VectorShuffle 448 448 0 1
+             450:   99(ivec2) GroupNonUniformSMin 35 Reduce 449
+             451:     90(ptr) AccessChain 24(data) 25 444 78 26
+             452:     14(int) CompositeExtract 450 0
+                              Store 451 452
+             453:     90(ptr) AccessChain 24(data) 25 444 78 58
+             454:     14(int) CompositeExtract 450 1
+                              Store 453 454
+             455:     27(ptr) AccessChain 10(dti) 26
+             456:      6(int) Load 455
+             457:     27(ptr) AccessChain 10(dti) 26
+             458:      6(int) Load 457
+             459:     81(ptr) AccessChain 24(data) 25 458 78
+             460:   15(ivec4) Load 459
+             461:  112(ivec3) VectorShuffle 460 460 0 1 2
+             462:  112(ivec3) GroupNonUniformSMin 35 Reduce 461
+             463:     90(ptr) AccessChain 24(data) 25 456 78 26
+             464:     14(int) CompositeExtract 462 0
+                              Store 463 464
+             465:     90(ptr) AccessChain 24(data) 25 456 78 58
+             466:     14(int) CompositeExtract 462 1
+                              Store 465 466
+             467:     90(ptr) AccessChain 24(data) 25 456 78 73
+             468:     14(int) CompositeExtract 462 2
+                              Store 467 468
+             469:     27(ptr) AccessChain 10(dti) 26
+             470:      6(int) Load 469
+             471:     27(ptr) AccessChain 10(dti) 26
+             472:      6(int) Load 471
+             473:    128(ptr) AccessChain 24(data) 25 472 125
+             474:   17(fvec4) Load 473
+             475:   17(fvec4) GroupNonUniformFMin 35 Reduce 474
+             476:    128(ptr) AccessChain 24(data) 25 470 125
+                              Store 476 475
+             477:     27(ptr) AccessChain 10(dti) 26
+             478:      6(int) Load 477
+             479:     27(ptr) AccessChain 10(dti) 26
+             480:      6(int) Load 479
+             481:    137(ptr) AccessChain 24(data) 25 480 125 26
+             482:   16(float) Load 481
+             483:   16(float) GroupNonUniformFMin 35 Reduce 482
+             484:    137(ptr) AccessChain 24(data) 25 478 125 26
+                              Store 484 483
+             485:     27(ptr) AccessChain 10(dti) 26
+             486:      6(int) Load 485
+             487:     27(ptr) AccessChain 10(dti) 26
+             488:      6(int) Load 487
+             489:    128(ptr) AccessChain 24(data) 25 488 125
+             490:   17(fvec4) Load 489
+             491:  146(fvec2) VectorShuffle 490 490 0 1
+             492:  146(fvec2) GroupNonUniformFMin 35 Reduce 491
+             493:    137(ptr) AccessChain 24(data) 25 486 125 26
+             494:   16(float) CompositeExtract 492 0
+                              Store 493 494
+             495:    137(ptr) AccessChain 24(data) 25 486 125 58
+             496:   16(float) CompositeExtract 492 1
+                              Store 495 496
+             497:     27(ptr) AccessChain 10(dti) 26
+             498:      6(int) Load 497
+             499:     27(ptr) AccessChain 10(dti) 26
+             500:      6(int) Load 499
+             501:    128(ptr) AccessChain 24(data) 25 500 125
+             502:   17(fvec4) Load 501
+             503:  159(fvec3) VectorShuffle 502 502 0 1 2
+             504:  159(fvec3) GroupNonUniformFMin 35 Reduce 503
+             505:    137(ptr) AccessChain 24(data) 25 498 125 26
+             506:   16(float) CompositeExtract 504 0
+                              Store 505 506
+             507:    137(ptr) AccessChain 24(data) 25 498 125 58
+             508:   16(float) CompositeExtract 504 1
+                              Store 507 508
+             509:    137(ptr) AccessChain 24(data) 25 498 125 73
+             510:   16(float) CompositeExtract 504 2
+                              Store 509 510
              511:     27(ptr) AccessChain 10(dti) 26
              512:      6(int) Load 511
              513:     27(ptr) AccessChain 10(dti) 26
              514:      6(int) Load 513
-             515:     42(ptr) AccessChain 24(data) 25 514 25 26
-             516:      6(int) Load 515
-             517:      6(int) GroupNonUniformUMax 35 Reduce 516
-             518:     42(ptr) AccessChain 24(data) 25 512 25 26
+             515:    175(ptr) AccessChain 24(data) 25 514 172
+             516: 19(f64vec4) Load 515
+             517: 19(f64vec4) GroupNonUniformFMin 35 Reduce 516
+             518:    175(ptr) AccessChain 24(data) 25 512 172
                               Store 518 517
              519:     27(ptr) AccessChain 10(dti) 26
              520:      6(int) Load 519
              521:     27(ptr) AccessChain 10(dti) 26
              522:      6(int) Load 521
-             523:     32(ptr) AccessChain 24(data) 25 522 25
-             524:   13(ivec4) Load 523
-             525:   51(ivec2) VectorShuffle 524 524 0 1
-             526:   51(ivec2) GroupNonUniformUMax 35 Reduce 525
-             527:     32(ptr) AccessChain 24(data) 25 520 25
-             528:   13(ivec4) Load 527
-             529:   13(ivec4) VectorShuffle 528 526 4 5 2 3
-                              Store 527 529
-             530:     27(ptr) AccessChain 10(dti) 26
-             531:      6(int) Load 530
-             532:     27(ptr) AccessChain 10(dti) 26
-             533:      6(int) Load 532
-             534:     32(ptr) AccessChain 24(data) 25 533 25
-             535:   13(ivec4) Load 534
-             536:    7(ivec3) VectorShuffle 535 535 0 1 2
-             537:    7(ivec3) GroupNonUniformUMax 35 Reduce 536
-             538:     32(ptr) AccessChain 24(data) 25 531 25
-             539:   13(ivec4) Load 538
-             540:   13(ivec4) VectorShuffle 539 537 4 5 6 3
-                              Store 538 540
+             523:    184(ptr) AccessChain 24(data) 25 522 172 26
+             524:18(float64_t) Load 523
+             525:18(float64_t) GroupNonUniformFMin 35 Reduce 524
+             526:    184(ptr) AccessChain 24(data) 25 520 172 26
+                              Store 526 525
+             527:     27(ptr) AccessChain 10(dti) 26
+             528:      6(int) Load 527
+             529:     27(ptr) AccessChain 10(dti) 26
+             530:      6(int) Load 529
+             531:    175(ptr) AccessChain 24(data) 25 530 172
+             532: 19(f64vec4) Load 531
+             533:193(f64vec2) VectorShuffle 532 532 0 1
+             534:193(f64vec2) GroupNonUniformFMin 35 Reduce 533
+             535:    184(ptr) AccessChain 24(data) 25 528 172 26
+             536:18(float64_t) CompositeExtract 534 0
+                              Store 535 536
+             537:    184(ptr) AccessChain 24(data) 25 528 172 58
+             538:18(float64_t) CompositeExtract 534 1
+                              Store 537 538
+             539:     27(ptr) AccessChain 10(dti) 26
+             540:      6(int) Load 539
              541:     27(ptr) AccessChain 10(dti) 26
              542:      6(int) Load 541
-             543:     27(ptr) AccessChain 10(dti) 26
-             544:      6(int) Load 543
-             545:     75(ptr) AccessChain 24(data) 25 544 72
-             546:   15(ivec4) Load 545
-             547:   15(ivec4) GroupNonUniformSMax 35 Reduce 546
-             548:     75(ptr) AccessChain 24(data) 25 542 72
-                              Store 548 547
-             549:     27(ptr) AccessChain 10(dti) 26
-             550:      6(int) Load 549
-             551:     27(ptr) AccessChain 10(dti) 26
-             552:      6(int) Load 551
-             553:     84(ptr) AccessChain 24(data) 25 552 72 26
-             554:     14(int) Load 553
-             555:     14(int) GroupNonUniformSMax 35 Reduce 554
-             556:     84(ptr) AccessChain 24(data) 25 550 72 26
-                              Store 556 555
-             557:     27(ptr) AccessChain 10(dti) 26
-             558:      6(int) Load 557
-             559:     27(ptr) AccessChain 10(dti) 26
-             560:      6(int) Load 559
-             561:     75(ptr) AccessChain 24(data) 25 560 72
-             562:   15(ivec4) Load 561
-             563:   93(ivec2) VectorShuffle 562 562 0 1
-             564:   93(ivec2) GroupNonUniformSMax 35 Reduce 563
-             565:     75(ptr) AccessChain 24(data) 25 558 72
-             566:   15(ivec4) Load 565
-             567:   15(ivec4) VectorShuffle 566 564 4 5 2 3
-                              Store 565 567
-             568:     27(ptr) AccessChain 10(dti) 26
-             569:      6(int) Load 568
-             570:     27(ptr) AccessChain 10(dti) 26
-             571:      6(int) Load 570
-             572:     75(ptr) AccessChain 24(data) 25 571 72
-             573:   15(ivec4) Load 572
-             574:  105(ivec3) VectorShuffle 573 573 0 1 2
-             575:  105(ivec3) GroupNonUniformSMax 35 Reduce 574
-             576:     75(ptr) AccessChain 24(data) 25 569 72
-             577:   15(ivec4) Load 576
-             578:   15(ivec4) VectorShuffle 577 575 4 5 6 3
-                              Store 576 578
-             579:     27(ptr) AccessChain 10(dti) 26
-             580:      6(int) Load 579
+             543:    175(ptr) AccessChain 24(data) 25 542 172
+             544: 19(f64vec4) Load 543
+             545:206(f64vec3) VectorShuffle 544 544 0 1 2
+             546:206(f64vec3) GroupNonUniformFMin 35 Reduce 545
+             547:    184(ptr) AccessChain 24(data) 25 540 172 26
+             548:18(float64_t) CompositeExtract 546 0
+                              Store 547 548
+             549:    184(ptr) AccessChain 24(data) 25 540 172 58
+             550:18(float64_t) CompositeExtract 546 1
+                              Store 549 550
+             551:    184(ptr) AccessChain 24(data) 25 540 172 73
+             552:18(float64_t) CompositeExtract 546 2
+                              Store 551 552
+             553:     27(ptr) AccessChain 10(dti) 26
+             554:      6(int) Load 553
+             555:     27(ptr) AccessChain 10(dti) 26
+             556:      6(int) Load 555
+             557:     32(ptr) AccessChain 24(data) 25 556 25
+             558:   13(ivec4) Load 557
+             559:   13(ivec4) GroupNonUniformUMax 35 Reduce 558
+             560:     32(ptr) AccessChain 24(data) 25 554 25
+                              Store 560 559
+             561:     27(ptr) AccessChain 10(dti) 26
+             562:      6(int) Load 561
+             563:     27(ptr) AccessChain 10(dti) 26
+             564:      6(int) Load 563
+             565:     42(ptr) AccessChain 24(data) 25 564 25 26
+             566:      6(int) Load 565
+             567:      6(int) GroupNonUniformUMax 35 Reduce 566
+             568:     42(ptr) AccessChain 24(data) 25 562 25 26
+                              Store 568 567
+             569:     27(ptr) AccessChain 10(dti) 26
+             570:      6(int) Load 569
+             571:     27(ptr) AccessChain 10(dti) 26
+             572:      6(int) Load 571
+             573:     32(ptr) AccessChain 24(data) 25 572 25
+             574:   13(ivec4) Load 573
+             575:   51(ivec2) VectorShuffle 574 574 0 1
+             576:   51(ivec2) GroupNonUniformUMax 35 Reduce 575
+             577:     42(ptr) AccessChain 24(data) 25 570 25 26
+             578:      6(int) CompositeExtract 576 0
+                              Store 577 578
+             579:     42(ptr) AccessChain 24(data) 25 570 25 58
+             580:      6(int) CompositeExtract 576 1
+                              Store 579 580
              581:     27(ptr) AccessChain 10(dti) 26
              582:      6(int) Load 581
-             583:    118(ptr) AccessChain 24(data) 25 582 115
-             584:   17(fvec4) Load 583
-             585:   17(fvec4) GroupNonUniformFMax 35 Reduce 584
-             586:    118(ptr) AccessChain 24(data) 25 580 115
-                              Store 586 585
-             587:     27(ptr) AccessChain 10(dti) 26
-             588:      6(int) Load 587
-             589:     27(ptr) AccessChain 10(dti) 26
-             590:      6(int) Load 589
-             591:    127(ptr) AccessChain 24(data) 25 590 115 26
-             592:   16(float) Load 591
-             593:   16(float) GroupNonUniformFMax 35 Reduce 592
-             594:    127(ptr) AccessChain 24(data) 25 588 115 26
-                              Store 594 593
+             583:     27(ptr) AccessChain 10(dti) 26
+             584:      6(int) Load 583
+             585:     32(ptr) AccessChain 24(data) 25 584 25
+             586:   13(ivec4) Load 585
+             587:    7(ivec3) VectorShuffle 586 586 0 1 2
+             588:    7(ivec3) GroupNonUniformUMax 35 Reduce 587
+             589:     42(ptr) AccessChain 24(data) 25 582 25 26
+             590:      6(int) CompositeExtract 588 0
+                              Store 589 590
+             591:     42(ptr) AccessChain 24(data) 25 582 25 58
+             592:      6(int) CompositeExtract 588 1
+                              Store 591 592
+             593:     42(ptr) AccessChain 24(data) 25 582 25 73
+             594:      6(int) CompositeExtract 588 2
+                              Store 593 594
              595:     27(ptr) AccessChain 10(dti) 26
              596:      6(int) Load 595
              597:     27(ptr) AccessChain 10(dti) 26
              598:      6(int) Load 597
-             599:    118(ptr) AccessChain 24(data) 25 598 115
-             600:   17(fvec4) Load 599
-             601:  136(fvec2) VectorShuffle 600 600 0 1
-             602:  136(fvec2) GroupNonUniformFMax 35 Reduce 601
-             603:    118(ptr) AccessChain 24(data) 25 596 115
-             604:   17(fvec4) Load 603
-             605:   17(fvec4) VectorShuffle 604 602 4 5 2 3
-                              Store 603 605
-             606:     27(ptr) AccessChain 10(dti) 26
-             607:      6(int) Load 606
-             608:     27(ptr) AccessChain 10(dti) 26
-             609:      6(int) Load 608
-             610:    118(ptr) AccessChain 24(data) 25 609 115
-             611:   17(fvec4) Load 610
-             612:  148(fvec3) VectorShuffle 611 611 0 1 2
-             613:  148(fvec3) GroupNonUniformFMax 35 Reduce 612
-             614:    118(ptr) AccessChain 24(data) 25 607 115
-             615:   17(fvec4) Load 614
-             616:   17(fvec4) VectorShuffle 615 613 4 5 6 3
-                              Store 614 616
-             617:     27(ptr) AccessChain 10(dti) 26
-             618:      6(int) Load 617
-             619:     27(ptr) AccessChain 10(dti) 26
-             620:      6(int) Load 619
-             621:    161(ptr) AccessChain 24(data) 25 620 158
-             622: 19(f64vec4) Load 621
-             623: 19(f64vec4) GroupNonUniformFMax 35 Reduce 622
-             624:    161(ptr) AccessChain 24(data) 25 618 158
-                              Store 624 623
+             599:     81(ptr) AccessChain 24(data) 25 598 78
+             600:   15(ivec4) Load 599
+             601:   15(ivec4) GroupNonUniformSMax 35 Reduce 600
+             602:     81(ptr) AccessChain 24(data) 25 596 78
+                              Store 602 601
+             603:     27(ptr) AccessChain 10(dti) 26
+             604:      6(int) Load 603
+             605:     27(ptr) AccessChain 10(dti) 26
+             606:      6(int) Load 605
+             607:     90(ptr) AccessChain 24(data) 25 606 78 26
+             608:     14(int) Load 607
+             609:     14(int) GroupNonUniformSMax 35 Reduce 608
+             610:     90(ptr) AccessChain 24(data) 25 604 78 26
+                              Store 610 609
+             611:     27(ptr) AccessChain 10(dti) 26
+             612:      6(int) Load 611
+             613:     27(ptr) AccessChain 10(dti) 26
+             614:      6(int) Load 613
+             615:     81(ptr) AccessChain 24(data) 25 614 78
+             616:   15(ivec4) Load 615
+             617:   99(ivec2) VectorShuffle 616 616 0 1
+             618:   99(ivec2) GroupNonUniformSMax 35 Reduce 617
+             619:     90(ptr) AccessChain 24(data) 25 612 78 26
+             620:     14(int) CompositeExtract 618 0
+                              Store 619 620
+             621:     90(ptr) AccessChain 24(data) 25 612 78 58
+             622:     14(int) CompositeExtract 618 1
+                              Store 621 622
+             623:     27(ptr) AccessChain 10(dti) 26
+             624:      6(int) Load 623
              625:     27(ptr) AccessChain 10(dti) 26
              626:      6(int) Load 625
-             627:     27(ptr) AccessChain 10(dti) 26
-             628:      6(int) Load 627
-             629:    170(ptr) AccessChain 24(data) 25 628 158 26
-             630:18(float64_t) Load 629
-             631:18(float64_t) GroupNonUniformFMax 35 Reduce 630
-             632:    170(ptr) AccessChain 24(data) 25 626 158 26
-                              Store 632 631
-             633:     27(ptr) AccessChain 10(dti) 26
-             634:      6(int) Load 633
-             635:     27(ptr) AccessChain 10(dti) 26
-             636:      6(int) Load 635
-             637:    161(ptr) AccessChain 24(data) 25 636 158
-             638: 19(f64vec4) Load 637
-             639:179(f64vec2) VectorShuffle 638 638 0 1
-             640:179(f64vec2) GroupNonUniformFMax 35 Reduce 639
-             641:    161(ptr) AccessChain 24(data) 25 634 158
-             642: 19(f64vec4) Load 641
-             643: 19(f64vec4) VectorShuffle 642 640 4 5 2 3
-                              Store 641 643
-             644:     27(ptr) AccessChain 10(dti) 26
-             645:      6(int) Load 644
-             646:     27(ptr) AccessChain 10(dti) 26
-             647:      6(int) Load 646
-             648:    161(ptr) AccessChain 24(data) 25 647 158
-             649: 19(f64vec4) Load 648
-             650:191(f64vec3) VectorShuffle 649 649 0 1 2
-             651:191(f64vec3) GroupNonUniformFMax 35 Reduce 650
-             652:    161(ptr) AccessChain 24(data) 25 645 158
-             653: 19(f64vec4) Load 652
-             654: 19(f64vec4) VectorShuffle 653 651 4 5 6 3
-                              Store 652 654
+             627:     81(ptr) AccessChain 24(data) 25 626 78
+             628:   15(ivec4) Load 627
+             629:  112(ivec3) VectorShuffle 628 628 0 1 2
+             630:  112(ivec3) GroupNonUniformSMax 35 Reduce 629
+             631:     90(ptr) AccessChain 24(data) 25 624 78 26
+             632:     14(int) CompositeExtract 630 0
+                              Store 631 632
+             633:     90(ptr) AccessChain 24(data) 25 624 78 58
+             634:     14(int) CompositeExtract 630 1
+                              Store 633 634
+             635:     90(ptr) AccessChain 24(data) 25 624 78 73
+             636:     14(int) CompositeExtract 630 2
+                              Store 635 636
+             637:     27(ptr) AccessChain 10(dti) 26
+             638:      6(int) Load 637
+             639:     27(ptr) AccessChain 10(dti) 26
+             640:      6(int) Load 639
+             641:    128(ptr) AccessChain 24(data) 25 640 125
+             642:   17(fvec4) Load 641
+             643:   17(fvec4) GroupNonUniformFMax 35 Reduce 642
+             644:    128(ptr) AccessChain 24(data) 25 638 125
+                              Store 644 643
+             645:     27(ptr) AccessChain 10(dti) 26
+             646:      6(int) Load 645
+             647:     27(ptr) AccessChain 10(dti) 26
+             648:      6(int) Load 647
+             649:    137(ptr) AccessChain 24(data) 25 648 125 26
+             650:   16(float) Load 649
+             651:   16(float) GroupNonUniformFMax 35 Reduce 650
+             652:    137(ptr) AccessChain 24(data) 25 646 125 26
+                              Store 652 651
+             653:     27(ptr) AccessChain 10(dti) 26
+             654:      6(int) Load 653
              655:     27(ptr) AccessChain 10(dti) 26
              656:      6(int) Load 655
-             657:     27(ptr) AccessChain 10(dti) 26
-             658:      6(int) Load 657
-             659:     32(ptr) AccessChain 24(data) 25 658 25
-             660:   13(ivec4) Load 659
-             661:   13(ivec4) GroupNonUniformBitwiseAnd 35 Reduce 660
-             662:     32(ptr) AccessChain 24(data) 25 656 25
-                              Store 662 661
-             663:     27(ptr) AccessChain 10(dti) 26
-             664:      6(int) Load 663
+             657:    128(ptr) AccessChain 24(data) 25 656 125
+             658:   17(fvec4) Load 657
+             659:  146(fvec2) VectorShuffle 658 658 0 1
+             660:  146(fvec2) GroupNonUniformFMax 35 Reduce 659
+             661:    137(ptr) AccessChain 24(data) 25 654 125 26
+             662:   16(float) CompositeExtract 660 0
+                              Store 661 662
+             663:    137(ptr) AccessChain 24(data) 25 654 125 58
+             664:   16(float) CompositeExtract 660 1
+                              Store 663 664
              665:     27(ptr) AccessChain 10(dti) 26
              666:      6(int) Load 665
-             667:     42(ptr) AccessChain 24(data) 25 666 25 26
+             667:     27(ptr) AccessChain 10(dti) 26
              668:      6(int) Load 667
-             669:      6(int) GroupNonUniformBitwiseAnd 35 Reduce 668
-             670:     42(ptr) AccessChain 24(data) 25 664 25 26
-                              Store 670 669
-             671:     27(ptr) AccessChain 10(dti) 26
-             672:      6(int) Load 671
-             673:     27(ptr) AccessChain 10(dti) 26
-             674:      6(int) Load 673
-             675:     32(ptr) AccessChain 24(data) 25 674 25
-             676:   13(ivec4) Load 675
-             677:   51(ivec2) VectorShuffle 676 676 0 1
-             678:   51(ivec2) GroupNonUniformBitwiseAnd 35 Reduce 677
-             679:     32(ptr) AccessChain 24(data) 25 672 25
-             680:   13(ivec4) Load 679
-             681:   13(ivec4) VectorShuffle 680 678 4 5 2 3
-                              Store 679 681
-             682:     27(ptr) AccessChain 10(dti) 26
-             683:      6(int) Load 682
-             684:     27(ptr) AccessChain 10(dti) 26
-             685:      6(int) Load 684
-             686:     32(ptr) AccessChain 24(data) 25 685 25
-             687:   13(ivec4) Load 686
-             688:    7(ivec3) VectorShuffle 687 687 0 1 2
-             689:    7(ivec3) GroupNonUniformBitwiseAnd 35 Reduce 688
-             690:     32(ptr) AccessChain 24(data) 25 683 25
-             691:   13(ivec4) Load 690
-             692:   13(ivec4) VectorShuffle 691 689 4 5 6 3
-                              Store 690 692
-             693:     27(ptr) AccessChain 10(dti) 26
-             694:      6(int) Load 693
+             669:    128(ptr) AccessChain 24(data) 25 668 125
+             670:   17(fvec4) Load 669
+             671:  159(fvec3) VectorShuffle 670 670 0 1 2
+             672:  159(fvec3) GroupNonUniformFMax 35 Reduce 671
+             673:    137(ptr) AccessChain 24(data) 25 666 125 26
+             674:   16(float) CompositeExtract 672 0
+                              Store 673 674
+             675:    137(ptr) AccessChain 24(data) 25 666 125 58
+             676:   16(float) CompositeExtract 672 1
+                              Store 675 676
+             677:    137(ptr) AccessChain 24(data) 25 666 125 73
+             678:   16(float) CompositeExtract 672 2
+                              Store 677 678
+             679:     27(ptr) AccessChain 10(dti) 26
+             680:      6(int) Load 679
+             681:     27(ptr) AccessChain 10(dti) 26
+             682:      6(int) Load 681
+             683:    175(ptr) AccessChain 24(data) 25 682 172
+             684: 19(f64vec4) Load 683
+             685: 19(f64vec4) GroupNonUniformFMax 35 Reduce 684
+             686:    175(ptr) AccessChain 24(data) 25 680 172
+                              Store 686 685
+             687:     27(ptr) AccessChain 10(dti) 26
+             688:      6(int) Load 687
+             689:     27(ptr) AccessChain 10(dti) 26
+             690:      6(int) Load 689
+             691:    184(ptr) AccessChain 24(data) 25 690 172 26
+             692:18(float64_t) Load 691
+             693:18(float64_t) GroupNonUniformFMax 35 Reduce 692
+             694:    184(ptr) AccessChain 24(data) 25 688 172 26
+                              Store 694 693
              695:     27(ptr) AccessChain 10(dti) 26
              696:      6(int) Load 695
-             697:     75(ptr) AccessChain 24(data) 25 696 72
-             698:   15(ivec4) Load 697
-             699:   15(ivec4) GroupNonUniformBitwiseAnd 35 Reduce 698
-             700:     75(ptr) AccessChain 24(data) 25 694 72
-                              Store 700 699
-             701:     27(ptr) AccessChain 10(dti) 26
-             702:      6(int) Load 701
-             703:     27(ptr) AccessChain 10(dti) 26
-             704:      6(int) Load 703
-             705:     84(ptr) AccessChain 24(data) 25 704 72 26
-             706:     14(int) Load 705
-             707:     14(int) GroupNonUniformBitwiseAnd 35 Reduce 706
-             708:     84(ptr) AccessChain 24(data) 25 702 72 26
-                              Store 708 707
+             697:     27(ptr) AccessChain 10(dti) 26
+             698:      6(int) Load 697
+             699:    175(ptr) AccessChain 24(data) 25 698 172
+             700: 19(f64vec4) Load 699
+             701:193(f64vec2) VectorShuffle 700 700 0 1
+             702:193(f64vec2) GroupNonUniformFMax 35 Reduce 701
+             703:    184(ptr) AccessChain 24(data) 25 696 172 26
+             704:18(float64_t) CompositeExtract 702 0
+                              Store 703 704
+             705:    184(ptr) AccessChain 24(data) 25 696 172 58
+             706:18(float64_t) CompositeExtract 702 1
+                              Store 705 706
+             707:     27(ptr) AccessChain 10(dti) 26
+             708:      6(int) Load 707
              709:     27(ptr) AccessChain 10(dti) 26
              710:      6(int) Load 709
-             711:     27(ptr) AccessChain 10(dti) 26
-             712:      6(int) Load 711
-             713:     75(ptr) AccessChain 24(data) 25 712 72
-             714:   15(ivec4) Load 713
-             715:   93(ivec2) VectorShuffle 714 714 0 1
-             716:   93(ivec2) GroupNonUniformBitwiseAnd 35 Reduce 715
-             717:     75(ptr) AccessChain 24(data) 25 710 72
-             718:   15(ivec4) Load 717
-             719:   15(ivec4) VectorShuffle 718 716 4 5 2 3
-                              Store 717 719
-             720:     27(ptr) AccessChain 10(dti) 26
-             721:      6(int) Load 720
-             722:     27(ptr) AccessChain 10(dti) 26
-             723:      6(int) Load 722
-             724:     75(ptr) AccessChain 24(data) 25 723 72
-             725:   15(ivec4) Load 724
-             726:  105(ivec3) VectorShuffle 725 725 0 1 2
-             727:  105(ivec3) GroupNonUniformBitwiseAnd 35 Reduce 726
-             728:     75(ptr) AccessChain 24(data) 25 721 72
-             729:   15(ivec4) Load 728
-             730:   15(ivec4) VectorShuffle 729 727 4 5 6 3
-                              Store 728 730
+             711:    175(ptr) AccessChain 24(data) 25 710 172
+             712: 19(f64vec4) Load 711
+             713:206(f64vec3) VectorShuffle 712 712 0 1 2
+             714:206(f64vec3) GroupNonUniformFMax 35 Reduce 713
+             715:    184(ptr) AccessChain 24(data) 25 708 172 26
+             716:18(float64_t) CompositeExtract 714 0
+                              Store 715 716
+             717:    184(ptr) AccessChain 24(data) 25 708 172 58
+             718:18(float64_t) CompositeExtract 714 1
+                              Store 717 718
+             719:    184(ptr) AccessChain 24(data) 25 708 172 73
+             720:18(float64_t) CompositeExtract 714 2
+                              Store 719 720
+             721:     27(ptr) AccessChain 10(dti) 26
+             722:      6(int) Load 721
+             723:     27(ptr) AccessChain 10(dti) 26
+             724:      6(int) Load 723
+             725:     32(ptr) AccessChain 24(data) 25 724 25
+             726:   13(ivec4) Load 725
+             727:   13(ivec4) GroupNonUniformBitwiseAnd 35 Reduce 726
+             728:     32(ptr) AccessChain 24(data) 25 722 25
+                              Store 728 727
+             729:     27(ptr) AccessChain 10(dti) 26
+             730:      6(int) Load 729
              731:     27(ptr) AccessChain 10(dti) 26
              732:      6(int) Load 731
-             733:     27(ptr) AccessChain 10(dti) 26
+             733:     42(ptr) AccessChain 24(data) 25 732 25 26
              734:      6(int) Load 733
-             735:     32(ptr) AccessChain 24(data) 25 734 25
-             736:   13(ivec4) Load 735
-             737:   13(ivec4) GroupNonUniformBitwiseOr 35 Reduce 736
-             738:     32(ptr) AccessChain 24(data) 25 732 25
-                              Store 738 737
+             735:      6(int) GroupNonUniformBitwiseAnd 35 Reduce 734
+             736:     42(ptr) AccessChain 24(data) 25 730 25 26
+                              Store 736 735
+             737:     27(ptr) AccessChain 10(dti) 26
+             738:      6(int) Load 737
              739:     27(ptr) AccessChain 10(dti) 26
              740:      6(int) Load 739
-             741:     27(ptr) AccessChain 10(dti) 26
-             742:      6(int) Load 741
-             743:     42(ptr) AccessChain 24(data) 25 742 25 26
-             744:      6(int) Load 743
-             745:      6(int) GroupNonUniformBitwiseOr 35 Reduce 744
-             746:     42(ptr) AccessChain 24(data) 25 740 25 26
-                              Store 746 745
-             747:     27(ptr) AccessChain 10(dti) 26
-             748:      6(int) Load 747
+             741:     32(ptr) AccessChain 24(data) 25 740 25
+             742:   13(ivec4) Load 741
+             743:   51(ivec2) VectorShuffle 742 742 0 1
+             744:   51(ivec2) GroupNonUniformBitwiseAnd 35 Reduce 743
+             745:     42(ptr) AccessChain 24(data) 25 738 25 26
+             746:      6(int) CompositeExtract 744 0
+                              Store 745 746
+             747:     42(ptr) AccessChain 24(data) 25 738 25 58
+             748:      6(int) CompositeExtract 744 1
+                              Store 747 748
              749:     27(ptr) AccessChain 10(dti) 26
              750:      6(int) Load 749
-             751:     32(ptr) AccessChain 24(data) 25 750 25
-             752:   13(ivec4) Load 751
-             753:   51(ivec2) VectorShuffle 752 752 0 1
-             754:   51(ivec2) GroupNonUniformBitwiseOr 35 Reduce 753
-             755:     32(ptr) AccessChain 24(data) 25 748 25
-             756:   13(ivec4) Load 755
-             757:   13(ivec4) VectorShuffle 756 754 4 5 2 3
-                              Store 755 757
-             758:     27(ptr) AccessChain 10(dti) 26
-             759:      6(int) Load 758
-             760:     27(ptr) AccessChain 10(dti) 26
-             761:      6(int) Load 760
-             762:     32(ptr) AccessChain 24(data) 25 761 25
-             763:   13(ivec4) Load 762
-             764:    7(ivec3) VectorShuffle 763 763 0 1 2
-             765:    7(ivec3) GroupNonUniformBitwiseOr 35 Reduce 764
-             766:     32(ptr) AccessChain 24(data) 25 759 25
-             767:   13(ivec4) Load 766
-             768:   13(ivec4) VectorShuffle 767 765 4 5 6 3
-                              Store 766 768
-             769:     27(ptr) AccessChain 10(dti) 26
-             770:      6(int) Load 769
+             751:     27(ptr) AccessChain 10(dti) 26
+             752:      6(int) Load 751
+             753:     32(ptr) AccessChain 24(data) 25 752 25
+             754:   13(ivec4) Load 753
+             755:    7(ivec3) VectorShuffle 754 754 0 1 2
+             756:    7(ivec3) GroupNonUniformBitwiseAnd 35 Reduce 755
+             757:     42(ptr) AccessChain 24(data) 25 750 25 26
+             758:      6(int) CompositeExtract 756 0
+                              Store 757 758
+             759:     42(ptr) AccessChain 24(data) 25 750 25 58
+             760:      6(int) CompositeExtract 756 1
+                              Store 759 760
+             761:     42(ptr) AccessChain 24(data) 25 750 25 73
+             762:      6(int) CompositeExtract 756 2
+                              Store 761 762
+             763:     27(ptr) AccessChain 10(dti) 26
+             764:      6(int) Load 763
+             765:     27(ptr) AccessChain 10(dti) 26
+             766:      6(int) Load 765
+             767:     81(ptr) AccessChain 24(data) 25 766 78
+             768:   15(ivec4) Load 767
+             769:   15(ivec4) GroupNonUniformBitwiseAnd 35 Reduce 768
+             770:     81(ptr) AccessChain 24(data) 25 764 78
+                              Store 770 769
              771:     27(ptr) AccessChain 10(dti) 26
              772:      6(int) Load 771
-             773:     75(ptr) AccessChain 24(data) 25 772 72
-             774:   15(ivec4) Load 773
-             775:   15(ivec4) GroupNonUniformBitwiseOr 35 Reduce 774
-             776:     75(ptr) AccessChain 24(data) 25 770 72
-                              Store 776 775
-             777:     27(ptr) AccessChain 10(dti) 26
-             778:      6(int) Load 777
+             773:     27(ptr) AccessChain 10(dti) 26
+             774:      6(int) Load 773
+             775:     90(ptr) AccessChain 24(data) 25 774 78 26
+             776:     14(int) Load 775
+             777:     14(int) GroupNonUniformBitwiseAnd 35 Reduce 776
+             778:     90(ptr) AccessChain 24(data) 25 772 78 26
+                              Store 778 777
              779:     27(ptr) AccessChain 10(dti) 26
              780:      6(int) Load 779
-             781:     84(ptr) AccessChain 24(data) 25 780 72 26
-             782:     14(int) Load 781
-             783:     14(int) GroupNonUniformBitwiseOr 35 Reduce 782
-             784:     84(ptr) AccessChain 24(data) 25 778 72 26
-                              Store 784 783
-             785:     27(ptr) AccessChain 10(dti) 26
-             786:      6(int) Load 785
-             787:     27(ptr) AccessChain 10(dti) 26
-             788:      6(int) Load 787
-             789:     75(ptr) AccessChain 24(data) 25 788 72
-             790:   15(ivec4) Load 789
-             791:   93(ivec2) VectorShuffle 790 790 0 1
-             792:   93(ivec2) GroupNonUniformBitwiseOr 35 Reduce 791
-             793:     75(ptr) AccessChain 24(data) 25 786 72
-             794:   15(ivec4) Load 793
-             795:   15(ivec4) VectorShuffle 794 792 4 5 2 3
-                              Store 793 795
-             796:     27(ptr) AccessChain 10(dti) 26
-             797:      6(int) Load 796
-             798:     27(ptr) AccessChain 10(dti) 26
-             799:      6(int) Load 798
-             800:     75(ptr) AccessChain 24(data) 25 799 72
-             801:   15(ivec4) Load 800
-             802:  105(ivec3) VectorShuffle 801 801 0 1 2
-             803:  105(ivec3) GroupNonUniformBitwiseOr 35 Reduce 802
-             804:     75(ptr) AccessChain 24(data) 25 797 72
-             805:   15(ivec4) Load 804
-             806:   15(ivec4) VectorShuffle 805 803 4 5 6 3
-                              Store 804 806
+             781:     27(ptr) AccessChain 10(dti) 26
+             782:      6(int) Load 781
+             783:     81(ptr) AccessChain 24(data) 25 782 78
+             784:   15(ivec4) Load 783
+             785:   99(ivec2) VectorShuffle 784 784 0 1
+             786:   99(ivec2) GroupNonUniformBitwiseAnd 35 Reduce 785
+             787:     90(ptr) AccessChain 24(data) 25 780 78 26
+             788:     14(int) CompositeExtract 786 0
+                              Store 787 788
+             789:     90(ptr) AccessChain 24(data) 25 780 78 58
+             790:     14(int) CompositeExtract 786 1
+                              Store 789 790
+             791:     27(ptr) AccessChain 10(dti) 26
+             792:      6(int) Load 791
+             793:     27(ptr) AccessChain 10(dti) 26
+             794:      6(int) Load 793
+             795:     81(ptr) AccessChain 24(data) 25 794 78
+             796:   15(ivec4) Load 795
+             797:  112(ivec3) VectorShuffle 796 796 0 1 2
+             798:  112(ivec3) GroupNonUniformBitwiseAnd 35 Reduce 797
+             799:     90(ptr) AccessChain 24(data) 25 792 78 26
+             800:     14(int) CompositeExtract 798 0
+                              Store 799 800
+             801:     90(ptr) AccessChain 24(data) 25 792 78 58
+             802:     14(int) CompositeExtract 798 1
+                              Store 801 802
+             803:     90(ptr) AccessChain 24(data) 25 792 78 73
+             804:     14(int) CompositeExtract 798 2
+                              Store 803 804
+             805:     27(ptr) AccessChain 10(dti) 26
+             806:      6(int) Load 805
              807:     27(ptr) AccessChain 10(dti) 26
              808:      6(int) Load 807
-             809:     27(ptr) AccessChain 10(dti) 26
-             810:      6(int) Load 809
-             811:     32(ptr) AccessChain 24(data) 25 810 25
-             812:   13(ivec4) Load 811
-             813:   13(ivec4) GroupNonUniformBitwiseXor 35 Reduce 812
-             814:     32(ptr) AccessChain 24(data) 25 808 25
-                              Store 814 813
+             809:     32(ptr) AccessChain 24(data) 25 808 25
+             810:   13(ivec4) Load 809
+             811:   13(ivec4) GroupNonUniformBitwiseOr 35 Reduce 810
+             812:     32(ptr) AccessChain 24(data) 25 806 25
+                              Store 812 811
+             813:     27(ptr) AccessChain 10(dti) 26
+             814:      6(int) Load 813
              815:     27(ptr) AccessChain 10(dti) 26
              816:      6(int) Load 815
-             817:     27(ptr) AccessChain 10(dti) 26
+             817:     42(ptr) AccessChain 24(data) 25 816 25 26
              818:      6(int) Load 817
-             819:     42(ptr) AccessChain 24(data) 25 818 25 26
-             820:      6(int) Load 819
-             821:      6(int) GroupNonUniformBitwiseXor 35 Reduce 820
-             822:     42(ptr) AccessChain 24(data) 25 816 25 26
-                              Store 822 821
+             819:      6(int) GroupNonUniformBitwiseOr 35 Reduce 818
+             820:     42(ptr) AccessChain 24(data) 25 814 25 26
+                              Store 820 819
+             821:     27(ptr) AccessChain 10(dti) 26
+             822:      6(int) Load 821
              823:     27(ptr) AccessChain 10(dti) 26
              824:      6(int) Load 823
-             825:     27(ptr) AccessChain 10(dti) 26
-             826:      6(int) Load 825
-             827:     32(ptr) AccessChain 24(data) 25 826 25
-             828:   13(ivec4) Load 827
-             829:   51(ivec2) VectorShuffle 828 828 0 1
-             830:   51(ivec2) GroupNonUniformBitwiseXor 35 Reduce 829
-             831:     32(ptr) AccessChain 24(data) 25 824 25
-             832:   13(ivec4) Load 831
-             833:   13(ivec4) VectorShuffle 832 830 4 5 2 3
-                              Store 831 833
-             834:     27(ptr) AccessChain 10(dti) 26
-             835:      6(int) Load 834
-             836:     27(ptr) AccessChain 10(dti) 26
-             837:      6(int) Load 836
-             838:     32(ptr) AccessChain 24(data) 25 837 25
-             839:   13(ivec4) Load 838
-             840:    7(ivec3) VectorShuffle 839 839 0 1 2
-             841:    7(ivec3) GroupNonUniformBitwiseXor 35 Reduce 840
-             842:     32(ptr) AccessChain 24(data) 25 835 25
-             843:   13(ivec4) Load 842
-             844:   13(ivec4) VectorShuffle 843 841 4 5 6 3
-                              Store 842 844
-             845:     27(ptr) AccessChain 10(dti) 26
-             846:      6(int) Load 845
+             825:     32(ptr) AccessChain 24(data) 25 824 25
+             826:   13(ivec4) Load 825
+             827:   51(ivec2) VectorShuffle 826 826 0 1
+             828:   51(ivec2) GroupNonUniformBitwiseOr 35 Reduce 827
+             829:     42(ptr) AccessChain 24(data) 25 822 25 26
+             830:      6(int) CompositeExtract 828 0
+                              Store 829 830
+             831:     42(ptr) AccessChain 24(data) 25 822 25 58
+             832:      6(int) CompositeExtract 828 1
+                              Store 831 832
+             833:     27(ptr) AccessChain 10(dti) 26
+             834:      6(int) Load 833
+             835:     27(ptr) AccessChain 10(dti) 26
+             836:      6(int) Load 835
+             837:     32(ptr) AccessChain 24(data) 25 836 25
+             838:   13(ivec4) Load 837
+             839:    7(ivec3) VectorShuffle 838 838 0 1 2
+             840:    7(ivec3) GroupNonUniformBitwiseOr 35 Reduce 839
+             841:     42(ptr) AccessChain 24(data) 25 834 25 26
+             842:      6(int) CompositeExtract 840 0
+                              Store 841 842
+             843:     42(ptr) AccessChain 24(data) 25 834 25 58
+             844:      6(int) CompositeExtract 840 1
+                              Store 843 844
+             845:     42(ptr) AccessChain 24(data) 25 834 25 73
+             846:      6(int) CompositeExtract 840 2
+                              Store 845 846
              847:     27(ptr) AccessChain 10(dti) 26
              848:      6(int) Load 847
-             849:     75(ptr) AccessChain 24(data) 25 848 72
-             850:   15(ivec4) Load 849
-             851:   15(ivec4) GroupNonUniformBitwiseXor 35 Reduce 850
-             852:     75(ptr) AccessChain 24(data) 25 846 72
-                              Store 852 851
-             853:     27(ptr) AccessChain 10(dti) 26
-             854:      6(int) Load 853
+             849:     27(ptr) AccessChain 10(dti) 26
+             850:      6(int) Load 849
+             851:     81(ptr) AccessChain 24(data) 25 850 78
+             852:   15(ivec4) Load 851
+             853:   15(ivec4) GroupNonUniformBitwiseOr 35 Reduce 852
+             854:     81(ptr) AccessChain 24(data) 25 848 78
+                              Store 854 853
              855:     27(ptr) AccessChain 10(dti) 26
              856:      6(int) Load 855
-             857:     84(ptr) AccessChain 24(data) 25 856 72 26
-             858:     14(int) Load 857
-             859:     14(int) GroupNonUniformBitwiseXor 35 Reduce 858
-             860:     84(ptr) AccessChain 24(data) 25 854 72 26
-                              Store 860 859
-             861:     27(ptr) AccessChain 10(dti) 26
-             862:      6(int) Load 861
+             857:     27(ptr) AccessChain 10(dti) 26
+             858:      6(int) Load 857
+             859:     90(ptr) AccessChain 24(data) 25 858 78 26
+             860:     14(int) Load 859
+             861:     14(int) GroupNonUniformBitwiseOr 35 Reduce 860
+             862:     90(ptr) AccessChain 24(data) 25 856 78 26
+                              Store 862 861
              863:     27(ptr) AccessChain 10(dti) 26
              864:      6(int) Load 863
-             865:     75(ptr) AccessChain 24(data) 25 864 72
-             866:   15(ivec4) Load 865
-             867:   93(ivec2) VectorShuffle 866 866 0 1
-             868:   93(ivec2) GroupNonUniformBitwiseXor 35 Reduce 867
-             869:     75(ptr) AccessChain 24(data) 25 862 72
-             870:   15(ivec4) Load 869
-             871:   15(ivec4) VectorShuffle 870 868 4 5 2 3
-                              Store 869 871
-             872:     27(ptr) AccessChain 10(dti) 26
-             873:      6(int) Load 872
-             874:     27(ptr) AccessChain 10(dti) 26
-             875:      6(int) Load 874
-             876:     75(ptr) AccessChain 24(data) 25 875 72
-             877:   15(ivec4) Load 876
-             878:  105(ivec3) VectorShuffle 877 877 0 1 2
-             879:  105(ivec3) GroupNonUniformBitwiseXor 35 Reduce 878
-             880:     75(ptr) AccessChain 24(data) 25 873 72
-             881:   15(ivec4) Load 880
-             882:   15(ivec4) VectorShuffle 881 879 4 5 6 3
-                              Store 880 882
-             883:     27(ptr) AccessChain 10(dti) 26
-             884:      6(int) Load 883
-             885:     27(ptr) AccessChain 10(dti) 26
-             886:      6(int) Load 885
-             887:     42(ptr) AccessChain 24(data) 25 886 25 26
-             888:      6(int) Load 887
-             890:   889(bool) IEqual 888 26
-             891:   13(ivec4) GroupNonUniformBallot 35 890
-             892:      6(int) GroupNonUniformBallotBitCount 35 Reduce 891
-             893:     42(ptr) AccessChain 24(data) 25 884 25 26
-                              Store 893 892
+             865:     27(ptr) AccessChain 10(dti) 26
+             866:      6(int) Load 865
+             867:     81(ptr) AccessChain 24(data) 25 866 78
+             868:   15(ivec4) Load 867
+             869:   99(ivec2) VectorShuffle 868 868 0 1
+             870:   99(ivec2) GroupNonUniformBitwiseOr 35 Reduce 869
+             871:     90(ptr) AccessChain 24(data) 25 864 78 26
+             872:     14(int) CompositeExtract 870 0
+                              Store 871 872
+             873:     90(ptr) AccessChain 24(data) 25 864 78 58
+             874:     14(int) CompositeExtract 870 1
+                              Store 873 874
+             875:     27(ptr) AccessChain 10(dti) 26
+             876:      6(int) Load 875
+             877:     27(ptr) AccessChain 10(dti) 26
+             878:      6(int) Load 877
+             879:     81(ptr) AccessChain 24(data) 25 878 78
+             880:   15(ivec4) Load 879
+             881:  112(ivec3) VectorShuffle 880 880 0 1 2
+             882:  112(ivec3) GroupNonUniformBitwiseOr 35 Reduce 881
+             883:     90(ptr) AccessChain 24(data) 25 876 78 26
+             884:     14(int) CompositeExtract 882 0
+                              Store 883 884
+             885:     90(ptr) AccessChain 24(data) 25 876 78 58
+             886:     14(int) CompositeExtract 882 1
+                              Store 885 886
+             887:     90(ptr) AccessChain 24(data) 25 876 78 73
+             888:     14(int) CompositeExtract 882 2
+                              Store 887 888
+             889:     27(ptr) AccessChain 10(dti) 26
+             890:      6(int) Load 889
+             891:     27(ptr) AccessChain 10(dti) 26
+             892:      6(int) Load 891
+             893:     32(ptr) AccessChain 24(data) 25 892 25
+             894:   13(ivec4) Load 893
+             895:   13(ivec4) GroupNonUniformBitwiseXor 35 Reduce 894
+             896:     32(ptr) AccessChain 24(data) 25 890 25
+                              Store 896 895
+             897:     27(ptr) AccessChain 10(dti) 26
+             898:      6(int) Load 897
+             899:     27(ptr) AccessChain 10(dti) 26
+             900:      6(int) Load 899
+             901:     42(ptr) AccessChain 24(data) 25 900 25 26
+             902:      6(int) Load 901
+             903:      6(int) GroupNonUniformBitwiseXor 35 Reduce 902
+             904:     42(ptr) AccessChain 24(data) 25 898 25 26
+                              Store 904 903
+             905:     27(ptr) AccessChain 10(dti) 26
+             906:      6(int) Load 905
+             907:     27(ptr) AccessChain 10(dti) 26
+             908:      6(int) Load 907
+             909:     32(ptr) AccessChain 24(data) 25 908 25
+             910:   13(ivec4) Load 909
+             911:   51(ivec2) VectorShuffle 910 910 0 1
+             912:   51(ivec2) GroupNonUniformBitwiseXor 35 Reduce 911
+             913:     42(ptr) AccessChain 24(data) 25 906 25 26
+             914:      6(int) CompositeExtract 912 0
+                              Store 913 914
+             915:     42(ptr) AccessChain 24(data) 25 906 25 58
+             916:      6(int) CompositeExtract 912 1
+                              Store 915 916
+             917:     27(ptr) AccessChain 10(dti) 26
+             918:      6(int) Load 917
+             919:     27(ptr) AccessChain 10(dti) 26
+             920:      6(int) Load 919
+             921:     32(ptr) AccessChain 24(data) 25 920 25
+             922:   13(ivec4) Load 921
+             923:    7(ivec3) VectorShuffle 922 922 0 1 2
+             924:    7(ivec3) GroupNonUniformBitwiseXor 35 Reduce 923
+             925:     42(ptr) AccessChain 24(data) 25 918 25 26
+             926:      6(int) CompositeExtract 924 0
+                              Store 925 926
+             927:     42(ptr) AccessChain 24(data) 25 918 25 58
+             928:      6(int) CompositeExtract 924 1
+                              Store 927 928
+             929:     42(ptr) AccessChain 24(data) 25 918 25 73
+             930:      6(int) CompositeExtract 924 2
+                              Store 929 930
+             931:     27(ptr) AccessChain 10(dti) 26
+             932:      6(int) Load 931
+             933:     27(ptr) AccessChain 10(dti) 26
+             934:      6(int) Load 933
+             935:     81(ptr) AccessChain 24(data) 25 934 78
+             936:   15(ivec4) Load 935
+             937:   15(ivec4) GroupNonUniformBitwiseXor 35 Reduce 936
+             938:     81(ptr) AccessChain 24(data) 25 932 78
+                              Store 938 937
+             939:     27(ptr) AccessChain 10(dti) 26
+             940:      6(int) Load 939
+             941:     27(ptr) AccessChain 10(dti) 26
+             942:      6(int) Load 941
+             943:     90(ptr) AccessChain 24(data) 25 942 78 26
+             944:     14(int) Load 943
+             945:     14(int) GroupNonUniformBitwiseXor 35 Reduce 944
+             946:     90(ptr) AccessChain 24(data) 25 940 78 26
+                              Store 946 945
+             947:     27(ptr) AccessChain 10(dti) 26
+             948:      6(int) Load 947
+             949:     27(ptr) AccessChain 10(dti) 26
+             950:      6(int) Load 949
+             951:     81(ptr) AccessChain 24(data) 25 950 78
+             952:   15(ivec4) Load 951
+             953:   99(ivec2) VectorShuffle 952 952 0 1
+             954:   99(ivec2) GroupNonUniformBitwiseXor 35 Reduce 953
+             955:     90(ptr) AccessChain 24(data) 25 948 78 26
+             956:     14(int) CompositeExtract 954 0
+                              Store 955 956
+             957:     90(ptr) AccessChain 24(data) 25 948 78 58
+             958:     14(int) CompositeExtract 954 1
+                              Store 957 958
+             959:     27(ptr) AccessChain 10(dti) 26
+             960:      6(int) Load 959
+             961:     27(ptr) AccessChain 10(dti) 26
+             962:      6(int) Load 961
+             963:     81(ptr) AccessChain 24(data) 25 962 78
+             964:   15(ivec4) Load 963
+             965:  112(ivec3) VectorShuffle 964 964 0 1 2
+             966:  112(ivec3) GroupNonUniformBitwiseXor 35 Reduce 965
+             967:     90(ptr) AccessChain 24(data) 25 960 78 26
+             968:     14(int) CompositeExtract 966 0
+                              Store 967 968
+             969:     90(ptr) AccessChain 24(data) 25 960 78 58
+             970:     14(int) CompositeExtract 966 1
+                              Store 969 970
+             971:     90(ptr) AccessChain 24(data) 25 960 78 73
+             972:     14(int) CompositeExtract 966 2
+                              Store 971 972
+             973:     27(ptr) AccessChain 10(dti) 26
+             974:      6(int) Load 973
+             975:     27(ptr) AccessChain 10(dti) 26
+             976:      6(int) Load 975
+             977:     42(ptr) AccessChain 24(data) 25 976 25 26
+             978:      6(int) Load 977
+             980:   979(bool) IEqual 978 26
+             981:   13(ivec4) GroupNonUniformBallot 35 980
+             982:      6(int) GroupNonUniformBallotBitCount 35 Reduce 981
+             983:     42(ptr) AccessChain 24(data) 25 974 25 26
+                              Store 983 982
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out b/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out
index b8ba789..404ae84 100644
--- a/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out
+++ b/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out
@@ -29,7 +29,7 @@
 0:49            0 (const uint)
 0:51      move second child to first child ( temp 4-component vector of float)
 0:51        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
-0:51          'anon@4' ( 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:51          'anon@4' ( 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})
 0:51          Constant:
 0:51            0 (const uint)
 0:51        matrix-times-vector ( temp 4-component vector of float)
@@ -44,7 +44,7 @@
 0:?     'anon@2' ( out block{ out 4-component vector of float v1})
 0:?     'myName' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float m})
 0:?     'oColor' ( smooth out 4-component vector of float)
-0:?     'anon@4' ( 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:?     'anon@4' ( 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})
 0:?     'gl_VertexID' ( gl_VertexId int VertexId)
 0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
 
@@ -126,7 +126,7 @@
 0:49            0 (const uint)
 0:51      move second child to first child ( temp 4-component vector of float)
 0:51        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
-0:51          'anon@4' ( 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:51          'anon@4' ( 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})
 0:51          Constant:
 0:51            0 (const uint)
 0:51        matrix-times-vector ( temp 4-component vector of float)
@@ -169,7 +169,7 @@
 0:?     'anon@2' ( out block{ out 4-component vector of float v1})
 0:?     'myName' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float m})
 0:?     'oColor' ( smooth out 4-component vector of float)
-0:?     'anon@4' ( 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:?     'anon@4' ( 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})
 0:?     'gl_VertexID' ( gl_VertexId int VertexId)
 0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
 0:?     'anon@0' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2})
diff --git a/Test/baseResults/link.multiAnonBlocksValid.0.0.vert.out b/Test/baseResults/link.multiAnonBlocksValid.0.0.vert.out
index 87c31b1..1c8b9c4 100644
--- a/Test/baseResults/link.multiAnonBlocksValid.0.0.vert.out
+++ b/Test/baseResults/link.multiAnonBlocksValid.0.0.vert.out
@@ -23,7 +23,7 @@
 0:35            0 (const uint)
 0:37      move second child to first child ( temp 4-component vector of float)
 0:37        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
-0:37          'anon@3' ( 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:37          'anon@3' ( 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})
 0:37          Constant:
 0:37            0 (const uint)
 0:37        matrix-times-vector ( temp 4-component vector of float)
@@ -37,7 +37,7 @@
 0:?     'anon@1' ( out block{ out 4-component vector of float v1,  out 4-component vector of float v2})
 0:?     'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
 0:?     'oColor' ( smooth out 4-component vector of float)
-0:?     'anon@3' ( 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:?     'anon@3' ( 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})
 0:?     'gl_VertexID' ( gl_VertexId int VertexId)
 0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
 
@@ -108,7 +108,7 @@
 0:35            0 (const uint)
 0:37      move second child to first child ( temp 4-component vector of float)
 0:37        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
-0:37          'anon@3' ( 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:37          'anon@3' ( 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})
 0:37          Constant:
 0:37            0 (const uint)
 0:37        matrix-times-vector ( temp 4-component vector of float)
@@ -150,7 +150,7 @@
 0:?     'anon@1' ( out block{ out 4-component vector of float v1,  out 4-component vector of float v2})
 0:?     'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
 0:?     'oColor' ( smooth out 4-component vector of float)
-0:?     'anon@3' ( 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:?     'anon@3' ( 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})
 0:?     'gl_VertexID' ( gl_VertexId int VertexId)
 0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
 0:?     'P' ( in 4-component vector of float)
diff --git a/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out b/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out
index 12b5c43..ad609e8 100644
--- a/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out
+++ b/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out
@@ -28,7 +28,7 @@
 0:37              0 (const int)
 0:39      move second child to first child ( temp 4-component vector of float)
 0:39        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
-0:39          '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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:39          '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})
 0:39          Constant:
 0:39            0 (const uint)
 0:39        matrix-times-vector ( temp 4-component vector of float)
@@ -43,7 +43,7 @@
 0:?     'uC' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1})
 0:?     'uBufC' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float color1})
 0:?     'oColor' ( smooth out 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+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})
 0:?     'gl_VertexID' ( gl_VertexId int VertexId)
 0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
 
@@ -132,7 +132,7 @@
 0:37              0 (const int)
 0:39      move second child to first child ( temp 4-component vector of float)
 0:39        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
-0:39          '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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:39          '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})
 0:39          Constant:
 0:39            0 (const uint)
 0:39        matrix-times-vector ( temp 4-component vector of float)
@@ -175,7 +175,7 @@
 0:?     'uC' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1})
 0:?     'uBufC' (layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float color1})
 0:?     'oColor' ( smooth out 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+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})
 0:?     'gl_VertexID' ( gl_VertexId int VertexId)
 0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
 0:?     'P' ( in 4-component vector of float)
diff --git a/Test/baseResults/link.multiBlocksValid.1.0.vert.out b/Test/baseResults/link.multiBlocksValid.1.0.vert.out
index 2f32abd..0015cab 100644
--- a/Test/baseResults/link.multiBlocksValid.1.0.vert.out
+++ b/Test/baseResults/link.multiBlocksValid.1.0.vert.out
@@ -23,7 +23,7 @@
 0:29            0 (const int)
 0:31      move second child to first child ( temp 4-component vector of float)
 0:31        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
-0:31          '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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:31          '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})
 0:31          Constant:
 0:31            0 (const uint)
 0:31        matrix-times-vector ( temp 4-component vector of float)
@@ -37,7 +37,7 @@
 0:?     'b' ( out block{ out 4-component vector of float v1,  out 4-component vector of float v2})
 0:?     'c' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
 0:?     'oColor' ( smooth out 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+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})
 0:?     'gl_VertexID' ( gl_VertexId int VertexId)
 0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
 
@@ -114,7 +114,7 @@
 0:29            0 (const int)
 0:31      move second child to first child ( temp 4-component vector of float)
 0:31        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
-0:31          '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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:31          '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})
 0:31          Constant:
 0:31            0 (const uint)
 0:31        matrix-times-vector ( temp 4-component vector of float)
@@ -156,7 +156,7 @@
 0:?     'b' ( out block{ out 4-component vector of float v1,  out 4-component vector of float v2})
 0:?     'c' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2})
 0:?     'oColor' ( smooth out 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+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})
 0:?     'gl_VertexID' ( gl_VertexId int VertexId)
 0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
 0:?     'P' ( in 4-component vector of float)
diff --git a/Test/baseResults/link.redeclareBuiltin.vert.out b/Test/baseResults/link.redeclareBuiltin.vert.out
new file mode 100644
index 0000000..2cd42b9
--- /dev/null
+++ b/Test/baseResults/link.redeclareBuiltin.vert.out
@@ -0,0 +1,154 @@
+link.redeclareBuiltin.vert
+Shader version: 410
+0:? Sequence
+0:8  Function Definition: main( ( global void)
+0:8    Function Parameters: 
+0:10    Sequence
+0:10      move second child to first child ( temp 4-component vector of float)
+0:10        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:10          'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position})
+0:10          Constant:
+0:10            0 (const uint)
+0:10        Constant:
+0:10          1.000000
+0:10          1.000000
+0:10          1.000000
+0:10          1.000000
+0:?   Linker Objects
+0:?     'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position})
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+link.redeclareBuiltin.geom
+Shader version: 410
+invocations = -1
+max_vertices = 3
+input primitive = triangles
+output primitive = triangle_strip
+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 4-component vector of float)
+0:13        gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:13          '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})
+0:13          Constant:
+0:13            0 (const uint)
+0:13        gl_Position: direct index for structure ( in 4-component vector of float Position)
+0:13          direct index ( temp block{ in 4-component vector of float Position gl_Position})
+0:13            'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position})
+0:13            Constant:
+0:13              0 (const int)
+0:13          Constant:
+0:13            0 (const int)
+0:14      EmitVertex ( global void)
+0:16      move second child to first child ( temp 4-component vector of float)
+0:16        gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:16          '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})
+0:16          Constant:
+0:16            0 (const uint)
+0:16        gl_Position: direct index for structure ( in 4-component vector of float Position)
+0:16          direct index ( temp block{ in 4-component vector of float Position gl_Position})
+0:16            'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position})
+0:16            Constant:
+0:16              1 (const int)
+0:16          Constant:
+0:16            0 (const int)
+0:17      EmitVertex ( global void)
+0:19      move second child to first child ( temp 4-component vector of float)
+0:19        gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:19          '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})
+0:19          Constant:
+0:19            0 (const uint)
+0:19        gl_Position: direct index for structure ( in 4-component vector of float Position)
+0:19          direct index ( temp block{ in 4-component vector of float Position gl_Position})
+0:19            'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position})
+0:19            Constant:
+0:19              2 (const int)
+0:19          Constant:
+0:19            0 (const int)
+0:20      EmitVertex ( global void)
+0:22      EndPrimitive ( global void)
+0:?   Linker Objects
+0:?     'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position})
+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})
+
+
+Linked vertex stage:
+
+
+Linked geometry stage:
+
+
+Shader version: 410
+0:? Sequence
+0:8  Function Definition: main( ( global void)
+0:8    Function Parameters: 
+0:10    Sequence
+0:10      move second child to first child ( temp 4-component vector of float)
+0:10        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:10          'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position})
+0:10          Constant:
+0:10            0 (const uint)
+0:10        Constant:
+0:10          1.000000
+0:10          1.000000
+0:10          1.000000
+0:10          1.000000
+0:?   Linker Objects
+0:?     'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position})
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+Shader version: 410
+invocations = 1
+max_vertices = 3
+input primitive = triangles
+output primitive = triangle_strip
+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 4-component vector of float)
+0:13        gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:13          '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})
+0:13          Constant:
+0:13            0 (const uint)
+0:13        gl_Position: direct index for structure ( in 4-component vector of float Position)
+0:13          direct index ( temp block{ in 4-component vector of float Position gl_Position})
+0:13            'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position})
+0:13            Constant:
+0:13              0 (const int)
+0:13          Constant:
+0:13            0 (const int)
+0:14      EmitVertex ( global void)
+0:16      move second child to first child ( temp 4-component vector of float)
+0:16        gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:16          '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})
+0:16          Constant:
+0:16            0 (const uint)
+0:16        gl_Position: direct index for structure ( in 4-component vector of float Position)
+0:16          direct index ( temp block{ in 4-component vector of float Position gl_Position})
+0:16            'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position})
+0:16            Constant:
+0:16              1 (const int)
+0:16          Constant:
+0:16            0 (const int)
+0:17      EmitVertex ( global void)
+0:19      move second child to first child ( temp 4-component vector of float)
+0:19        gl_Position: direct index for structure (layout( stream=0) gl_Position 4-component vector of float Position)
+0:19          '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})
+0:19          Constant:
+0:19            0 (const uint)
+0:19        gl_Position: direct index for structure ( in 4-component vector of float Position)
+0:19          direct index ( temp block{ in 4-component vector of float Position gl_Position})
+0:19            'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position})
+0:19            Constant:
+0:19              2 (const int)
+0:19          Constant:
+0:19            0 (const int)
+0:20      EmitVertex ( global void)
+0:22      EndPrimitive ( global void)
+0:?   Linker Objects
+0:?     'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position})
+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})
+
diff --git a/Test/baseResults/link.tesselation.tese.out b/Test/baseResults/link.tesselation.tese.out
new file mode 100644
index 0000000..056459f
--- /dev/null
+++ b/Test/baseResults/link.tesselation.tese.out
@@ -0,0 +1,254 @@
+link.tesselation.tese
+Shader version: 440
+input primitive = triangles
+vertex spacing = fractional_odd_spacing
+triangle order = cw
+0:? Sequence
+0:15  Function Definition: main( ( global void)
+0:15    Function Parameters: 
+0:17    Sequence
+0:17      Sequence
+0:17        move second child to first child ( temp float)
+0:17          'u' ( temp float)
+0:17          direct index ( temp float)
+0:17            'gl_TessCoord' ( in 3-component vector of float TessCoord)
+0:17            Constant:
+0:17              0 (const int)
+0:18      Sequence
+0:18        move second child to first child ( temp float)
+0:18          'v' ( temp float)
+0:18          direct index ( temp float)
+0:18            'gl_TessCoord' ( in 3-component vector of float TessCoord)
+0:18            Constant:
+0:18              1 (const int)
+0:19      Sequence
+0:19        move second child to first child ( temp float)
+0:19          'w' ( temp float)
+0:19          direct index ( temp float)
+0:19            'gl_TessCoord' ( in 3-component vector of float TessCoord)
+0:19            Constant:
+0:19              2 (const int)
+0:21      Sequence
+0:21        move second child to first child ( temp 2-component vector of float)
+0:21          'newUv' ( temp 2-component vector of float)
+0:21          Construct vec2 ( temp 2-component vector of float)
+0:21            add ( temp 2-component vector of float)
+0:21              add ( temp 2-component vector of float)
+0:21                vector-scale ( temp 2-component vector of float)
+0:21                  'u' ( temp float)
+0:21                  texCoord: direct index for structure ( in 2-component vector of float)
+0:21                    direct index (layout( location=0) temp block{ in 2-component vector of float texCoord})
+0:21                      'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord})
+0:21                      Constant:
+0:21                        0 (const int)
+0:21                    Constant:
+0:21                      0 (const int)
+0:21                vector-scale ( temp 2-component vector of float)
+0:21                  'v' ( temp float)
+0:21                  texCoord: direct index for structure ( in 2-component vector of float)
+0:21                    direct index (layout( location=0) temp block{ in 2-component vector of float texCoord})
+0:21                      'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord})
+0:21                      Constant:
+0:21                        1 (const int)
+0:21                    Constant:
+0:21                      0 (const int)
+0:21              vector-scale ( temp 2-component vector of float)
+0:21                'w' ( temp float)
+0:21                texCoord: direct index for structure ( in 2-component vector of float)
+0:21                  direct index (layout( location=0) temp block{ in 2-component vector of float texCoord})
+0:21                    'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord})
+0:21                    Constant:
+0:21                      2 (const int)
+0:21                  Constant:
+0:21                    0 (const int)
+0:22      move second child to first child ( temp 2-component vector of float)
+0:22        texCoord: direct index for structure ( out 2-component vector of float)
+0:22          'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord})
+0:22          Constant:
+0:22            0 (const int)
+0:22        'newUv' ( temp 2-component vector of float)
+0:23      move second child to first child ( temp 4-component vector of float)
+0:23        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:23          '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})
+0:23          Constant:
+0:23            0 (const uint)
+0:23        gl_Position: direct index for structure ( in 4-component vector of float Position)
+0:23          indirect 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})
+0:23            'gl_in' ( in 32-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})
+0:23            'gl_PatchVerticesIn' ( in int PatchVertices)
+0:23          Constant:
+0:23            0 (const int)
+0:?   Linker Objects
+0:?     'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord})
+0:?     'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord})
+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})
+
+link.tesselation.tesc
+Shader version: 440
+vertices = 3
+0:? Sequence
+0:14  Function Definition: main( ( global void)
+0:14    Function Parameters: 
+0:16    Sequence
+0:16      move second child to first child ( temp 2-component vector of float)
+0:16        texCoord: direct index for structure ( out 2-component vector of float)
+0:16          indirect index (layout( location=0) temp block{ out 2-component vector of float texCoord})
+0:16            'OUT' (layout( location=0) out 3-element array of block{ out 2-component vector of float texCoord})
+0:16            'gl_InvocationID' ( in int InvocationID)
+0:16          Constant:
+0:16            0 (const int)
+0:16        texCoord: direct index for structure ( in 2-component vector of float)
+0:16          indirect index (layout( location=0) temp block{ in 2-component vector of float texCoord})
+0:16            'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord})
+0:16            'gl_InvocationID' ( in int InvocationID)
+0:16          Constant:
+0:16            0 (const int)
+0:18      Sequence
+0:18        move second child to first child ( temp float)
+0:18          'tessLevel' ( temp float)
+0:18          Constant:
+0:18            10.000000
+0:19      move second child to first child ( temp float)
+0:19        indirect index ( patch temp float TessLevelOuter)
+0:19          'gl_TessLevelOuter' ( patch out 4-element array of float TessLevelOuter)
+0:19          'gl_InvocationID' ( in int InvocationID)
+0:19        'tessLevel' ( temp float)
+0:20      move second child to first child ( temp float)
+0:20        direct index ( patch temp float TessLevelInner)
+0:20          'gl_TessLevelInner' ( patch out 2-element array of float TessLevelInner)
+0:20          Constant:
+0:20            0 (const int)
+0:20        'tessLevel' ( temp float)
+0:?   Linker Objects
+0:?     'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord})
+0:?     'OUT' (layout( location=0) out 3-element array of block{ out 2-component vector of float texCoord})
+
+
+Linked tessellation control stage:
+
+
+Linked tessellation evaluation stage:
+
+
+Shader version: 440
+vertices = 3
+0:? Sequence
+0:14  Function Definition: main( ( global void)
+0:14    Function Parameters: 
+0:16    Sequence
+0:16      move second child to first child ( temp 2-component vector of float)
+0:16        texCoord: direct index for structure ( out 2-component vector of float)
+0:16          indirect index (layout( location=0) temp block{ out 2-component vector of float texCoord})
+0:16            'OUT' (layout( location=0) out 3-element array of block{ out 2-component vector of float texCoord})
+0:16            'gl_InvocationID' ( in int InvocationID)
+0:16          Constant:
+0:16            0 (const int)
+0:16        texCoord: direct index for structure ( in 2-component vector of float)
+0:16          indirect index (layout( location=0) temp block{ in 2-component vector of float texCoord})
+0:16            'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord})
+0:16            'gl_InvocationID' ( in int InvocationID)
+0:16          Constant:
+0:16            0 (const int)
+0:18      Sequence
+0:18        move second child to first child ( temp float)
+0:18          'tessLevel' ( temp float)
+0:18          Constant:
+0:18            10.000000
+0:19      move second child to first child ( temp float)
+0:19        indirect index ( patch temp float TessLevelOuter)
+0:19          'gl_TessLevelOuter' ( patch out 4-element array of float TessLevelOuter)
+0:19          'gl_InvocationID' ( in int InvocationID)
+0:19        'tessLevel' ( temp float)
+0:20      move second child to first child ( temp float)
+0:20        direct index ( patch temp float TessLevelInner)
+0:20          'gl_TessLevelInner' ( patch out 2-element array of float TessLevelInner)
+0:20          Constant:
+0:20            0 (const int)
+0:20        'tessLevel' ( temp float)
+0:?   Linker Objects
+0:?     'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord})
+0:?     'OUT' (layout( location=0) out 3-element array of block{ out 2-component vector of float texCoord})
+Shader version: 440
+input primitive = triangles
+vertex spacing = fractional_odd_spacing
+triangle order = cw
+0:? Sequence
+0:15  Function Definition: main( ( global void)
+0:15    Function Parameters: 
+0:17    Sequence
+0:17      Sequence
+0:17        move second child to first child ( temp float)
+0:17          'u' ( temp float)
+0:17          direct index ( temp float)
+0:17            'gl_TessCoord' ( in 3-component vector of float TessCoord)
+0:17            Constant:
+0:17              0 (const int)
+0:18      Sequence
+0:18        move second child to first child ( temp float)
+0:18          'v' ( temp float)
+0:18          direct index ( temp float)
+0:18            'gl_TessCoord' ( in 3-component vector of float TessCoord)
+0:18            Constant:
+0:18              1 (const int)
+0:19      Sequence
+0:19        move second child to first child ( temp float)
+0:19          'w' ( temp float)
+0:19          direct index ( temp float)
+0:19            'gl_TessCoord' ( in 3-component vector of float TessCoord)
+0:19            Constant:
+0:19              2 (const int)
+0:21      Sequence
+0:21        move second child to first child ( temp 2-component vector of float)
+0:21          'newUv' ( temp 2-component vector of float)
+0:21          Construct vec2 ( temp 2-component vector of float)
+0:21            add ( temp 2-component vector of float)
+0:21              add ( temp 2-component vector of float)
+0:21                vector-scale ( temp 2-component vector of float)
+0:21                  'u' ( temp float)
+0:21                  texCoord: direct index for structure ( in 2-component vector of float)
+0:21                    direct index (layout( location=0) temp block{ in 2-component vector of float texCoord})
+0:21                      'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord})
+0:21                      Constant:
+0:21                        0 (const int)
+0:21                    Constant:
+0:21                      0 (const int)
+0:21                vector-scale ( temp 2-component vector of float)
+0:21                  'v' ( temp float)
+0:21                  texCoord: direct index for structure ( in 2-component vector of float)
+0:21                    direct index (layout( location=0) temp block{ in 2-component vector of float texCoord})
+0:21                      'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord})
+0:21                      Constant:
+0:21                        1 (const int)
+0:21                    Constant:
+0:21                      0 (const int)
+0:21              vector-scale ( temp 2-component vector of float)
+0:21                'w' ( temp float)
+0:21                texCoord: direct index for structure ( in 2-component vector of float)
+0:21                  direct index (layout( location=0) temp block{ in 2-component vector of float texCoord})
+0:21                    'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord})
+0:21                    Constant:
+0:21                      2 (const int)
+0:21                  Constant:
+0:21                    0 (const int)
+0:22      move second child to first child ( temp 2-component vector of float)
+0:22        texCoord: direct index for structure ( out 2-component vector of float)
+0:22          'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord})
+0:22          Constant:
+0:22            0 (const int)
+0:22        'newUv' ( temp 2-component vector of float)
+0:23      move second child to first child ( temp 4-component vector of float)
+0:23        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:23          '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})
+0:23          Constant:
+0:23            0 (const uint)
+0:23        gl_Position: direct index for structure ( in 4-component vector of float Position)
+0:23          indirect 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})
+0:23            'gl_in' ( in 32-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})
+0:23            'gl_PatchVerticesIn' ( in int PatchVertices)
+0:23          Constant:
+0:23            0 (const int)
+0:?   Linker Objects
+0:?     'IN' (layout( location=0) in 32-element array of block{ in 2-component vector of float texCoord})
+0:?     'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord})
+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})
+
diff --git a/Test/baseResults/link.tesselation.vert.out b/Test/baseResults/link.tesselation.vert.out
new file mode 100644
index 0000000..d56c340
--- /dev/null
+++ b/Test/baseResults/link.tesselation.vert.out
@@ -0,0 +1,94 @@
+link.tesselation.vert
+Shader version: 440
+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 4-component vector of float)
+0:13        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:13          '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})
+0:13          Constant:
+0:13            0 (const uint)
+0:13        'i_Pos' (layout( location=0) in 4-component vector of float)
+0:14      move second child to first child ( temp 2-component vector of float)
+0:14        texCoord: direct index for structure ( out 2-component vector of float)
+0:14          'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord})
+0:14          Constant:
+0:14            0 (const int)
+0:14        'i_Tex' (layout( location=1) in 2-component vector of float)
+0:?   Linker Objects
+0:?     'i_Pos' (layout( location=0) in 4-component vector of float)
+0:?     'i_Tex' (layout( location=1) in 2-component vector of float)
+0:?     'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord})
+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})
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+
+link.tesselation.frag
+Shader version: 440
+0:? Sequence
+0:12  Function Definition: main( ( global void)
+0:12    Function Parameters: 
+0:14    Sequence
+0:14      move second child to first child ( temp 4-component vector of float)
+0:14        'oColor' (layout( location=0) out 4-component vector of float)
+0:14        texture ( global 4-component vector of float)
+0:14          'mytex' (layout( binding=0) uniform sampler2D)
+0:14          texCoord: direct index for structure ( in 2-component vector of float)
+0:14            'IN' (layout( location=0) in block{ in 2-component vector of float texCoord})
+0:14            Constant:
+0:14              0 (const int)
+0:?   Linker Objects
+0:?     'IN' (layout( location=0) in block{ in 2-component vector of float texCoord})
+0:?     'oColor' (layout( location=0) out 4-component vector of float)
+0:?     'mytex' (layout( binding=0) uniform sampler2D)
+
+
+Linked vertex stage:
+
+
+Linked fragment stage:
+
+
+Shader version: 440
+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 4-component vector of float)
+0:13        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
+0:13          '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})
+0:13          Constant:
+0:13            0 (const uint)
+0:13        'i_Pos' (layout( location=0) in 4-component vector of float)
+0:14      move second child to first child ( temp 2-component vector of float)
+0:14        texCoord: direct index for structure ( out 2-component vector of float)
+0:14          'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord})
+0:14          Constant:
+0:14            0 (const int)
+0:14        'i_Tex' (layout( location=1) in 2-component vector of float)
+0:?   Linker Objects
+0:?     'i_Pos' (layout( location=0) in 4-component vector of float)
+0:?     'i_Tex' (layout( location=1) in 2-component vector of float)
+0:?     'OUT' (layout( location=0) out block{ out 2-component vector of float texCoord})
+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})
+0:?     'gl_VertexID' ( gl_VertexId int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
+Shader version: 440
+0:? Sequence
+0:12  Function Definition: main( ( global void)
+0:12    Function Parameters: 
+0:14    Sequence
+0:14      move second child to first child ( temp 4-component vector of float)
+0:14        'oColor' (layout( location=0) out 4-component vector of float)
+0:14        texture ( global 4-component vector of float)
+0:14          'mytex' (layout( binding=0) uniform sampler2D)
+0:14          texCoord: direct index for structure ( in 2-component vector of float)
+0:14            'IN' (layout( location=0) in block{ in 2-component vector of float texCoord})
+0:14            Constant:
+0:14              0 (const int)
+0:?   Linker Objects
+0:?     'IN' (layout( location=0) in block{ in 2-component vector of float texCoord})
+0:?     'oColor' (layout( location=0) out 4-component vector of float)
+0:?     'mytex' (layout( binding=0) uniform sampler2D)
+
diff --git a/Test/baseResults/matrix.frag.out b/Test/baseResults/matrix.frag.out
index f3bea4b..5fd4eb6 100644
--- a/Test/baseResults/matrix.frag.out
+++ b/Test/baseResults/matrix.frag.out
@@ -242,6 +242,36 @@
 0:54              'un34' ( uniform 4X4 matrix of float)
 0:54              'um43' ( uniform 4X4 matrix of float)
 0:54            'v' ( smooth in 4-component vector of float)
+0:56      Sequence
+0:56        move second child to first child ( temp 4X2 matrix of float)
+0:56          'm42' ( temp 4X2 matrix of float)
+0:56          Constant:
+0:56            42.000000
+0:56            0.000000
+0:56            0.000000
+0:56            42.000000
+0:56            0.000000
+0:56            0.000000
+0:56            0.000000
+0:56            0.000000
+0:57      Test condition and select ( temp void)
+0:57        Condition
+0:57        Compare Equal ( temp bool)
+0:57          'm42' ( temp 4X2 matrix of float)
+0:57          Constant:
+0:57            42.000000
+0:57            0.000000
+0:57            0.000000
+0:57            42.000000
+0:57            0.000000
+0:57            0.000000
+0:57            0.000000
+0:57            0.000000
+0:57        true case
+0:58        Sequence
+0:58          add second child into first child ( temp 4-component vector of float)
+0:58            'gl_FragColor' ( fragColor 4-component vector of float FragColor)
+0:58            'v' ( smooth in 4-component vector of float)
 0:?   Linker Objects
 0:?     'colorTransform' ( uniform 3X3 matrix of float)
 0:?     'Color' ( smooth in 3-component vector of float)
@@ -495,6 +525,36 @@
 0:54              'un34' ( uniform 4X4 matrix of float)
 0:54              'um43' ( uniform 4X4 matrix of float)
 0:54            'v' ( smooth in 4-component vector of float)
+0:56      Sequence
+0:56        move second child to first child ( temp 4X2 matrix of float)
+0:56          'm42' ( temp 4X2 matrix of float)
+0:56          Constant:
+0:56            42.000000
+0:56            0.000000
+0:56            0.000000
+0:56            42.000000
+0:56            0.000000
+0:56            0.000000
+0:56            0.000000
+0:56            0.000000
+0:57      Test condition and select ( temp void)
+0:57        Condition
+0:57        Compare Equal ( temp bool)
+0:57          'm42' ( temp 4X2 matrix of float)
+0:57          Constant:
+0:57            42.000000
+0:57            0.000000
+0:57            0.000000
+0:57            42.000000
+0:57            0.000000
+0:57            0.000000
+0:57            0.000000
+0:57            0.000000
+0:57        true case
+0:58        Sequence
+0:58          add second child into first child ( temp 4-component vector of float)
+0:58            'gl_FragColor' ( fragColor 4-component vector of float FragColor)
+0:58            'v' ( smooth in 4-component vector of float)
 0:?   Linker Objects
 0:?     'colorTransform' ( uniform 3X3 matrix of float)
 0:?     'Color' ( smooth in 3-component vector of float)
diff --git a/Test/baseResults/rayQuery.rgen.out b/Test/baseResults/rayQuery.rgen.out
index 80e9916..06a1a5a 100644
--- a/Test/baseResults/rayQuery.rgen.out
+++ b/Test/baseResults/rayQuery.rgen.out
@@ -28,8 +28,6 @@
                               MemberDecorate 26(block) 0 Offset 0
                               MemberDecorate 26(block) 1 Offset 16
                               Decorate 26(block) BufferBlock
-                              Decorate 28 DescriptorSet 0
-                              Decorate 28 Binding 1
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
diff --git a/Test/baseResults/remap.uniformarray.everything.frag.out b/Test/baseResults/remap.uniformarray.everything.frag.out
index bebff93..ee1daa7 100644
--- a/Test/baseResults/remap.uniformarray.everything.frag.out
+++ b/Test/baseResults/remap.uniformarray.everything.frag.out
@@ -28,14 +28,17 @@
               24:             TypeVector 13(float) 3
              661:             TypePointer Input 24(fvec3)
             4957:    661(ptr) Variable Input
+            2570:     11(int) Constant 0
+             650:             TypePointer Function 13(float)
+            2573:     11(int) Constant 1
+            2576:     11(int) Constant 2
             2618:     11(int) Constant 16
-             669:             TypeArray 13(float) 2618
-            1306:             TypePointer Input 669
-            4339:   1306(ptr) Variable Input
+             709:             TypeArray 13(float) 2618
+            1346:             TypePointer Input 709
+            4339:   1346(ptr) Variable Input
             2607:     12(int) Constant 12
-             650:             TypePointer Input 13(float)
+             651:             TypePointer Input 13(float)
             2579:     11(int) Constant 3
-             651:             TypePointer Function 13(float)
              668:             TypePointer Output 29(fvec4)
             5139:    668(ptr) Variable Output
             5663:           8 Function None 1282
@@ -49,17 +52,23 @@
                               Store 4902 23084
            21218:   24(fvec3) Load 4957
            13695:   29(fvec4) Load 4902
-           23883:   24(fvec3) VectorShuffle 13695 13695 0 1 2
-           15591:   24(fvec3) FAdd 23883 21218
-           17086:   29(fvec4) Load 4902
-            7051:   29(fvec4) VectorShuffle 17086 15591 4 5 6 3
-                              Store 4902 7051
-           18282:    650(ptr) AccessChain 4339 2607
-            7372:   13(float) Load 18282
-           21371:    651(ptr) AccessChain 4902 2579
+           23959:   24(fvec3) VectorShuffle 13695 13695 0 1 2
+           14937:   24(fvec3) FAdd 23959 21218
+           15653:    650(ptr) AccessChain 4902 2570
+           21354:   13(float) CompositeExtract 14937 0
+                              Store 15653 21354
+           16378:    650(ptr) AccessChain 4902 2573
+           15746:   13(float) CompositeExtract 14937 1
+                              Store 16378 15746
+           16379:    650(ptr) AccessChain 4902 2576
+           15747:   13(float) CompositeExtract 14937 2
+                              Store 16379 15747
+           19895:    651(ptr) AccessChain 4339 2607
+            7372:   13(float) Load 19895
+           21371:    650(ptr) AccessChain 4902 2579
            11412:   13(float) Load 21371
            22584:   13(float) FAdd 11412 7372
-           17318:    651(ptr) AccessChain 4902 2579
+           17318:    650(ptr) AccessChain 4902 2579
                               Store 17318 22584
            17934:   29(fvec4) Load 4902
                               Store 5139 17934
diff --git a/Test/baseResults/remap.uniformarray.none.frag.out b/Test/baseResults/remap.uniformarray.none.frag.out
index 6bd58d2..00e1f57 100644
--- a/Test/baseResults/remap.uniformarray.none.frag.out
+++ b/Test/baseResults/remap.uniformarray.none.frag.out
@@ -1,27 +1,27 @@
 remap.uniformarray.none.frag
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 53
+// Id's are bound by 60
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 14 25 35 47
+                              EntryPoint Fragment 4  "main" 14 25 43 54
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 140
                               Name 4  "main"
                               Name 9  "texColor"
                               Name 14  "color"
                               Name 25  "inColor"
-                              Name 35  "alpha"
-                              Name 47  "gl_FragColor"
-                              Name 52  "texSampler2D"
+                              Name 43  "alpha"
+                              Name 54  "gl_FragColor"
+                              Name 59  "texSampler2D"
                               Decorate 14(color) Location 1
                               Decorate 25(inColor) Location 0
-                              Decorate 35(alpha) Location 7
-                              Decorate 47(gl_FragColor) Location 0
-                              Decorate 52(texSampler2D) DescriptorSet 0
-                              Decorate 52(texSampler2D) Binding 0
+                              Decorate 43(alpha) Location 7
+                              Decorate 54(gl_FragColor) Location 0
+                              Decorate 59(texSampler2D) DescriptorSet 0
+                              Decorate 59(texSampler2D) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -38,20 +38,23 @@
               23:             TypeVector 6(float) 3
               24:             TypePointer Input 23(fvec3)
      25(inColor):     24(ptr) Variable Input
-              32:     10(int) Constant 16
-              33:             TypeArray 6(float) 32
-              34:             TypePointer Input 33
-       35(alpha):     34(ptr) Variable Input
-              36:     15(int) Constant 12
-              37:             TypePointer Input 6(float)
-              40:     10(int) Constant 3
-              41:             TypePointer Function 6(float)
-              46:             TypePointer Output 7(fvec4)
-47(gl_FragColor):     46(ptr) Variable Output
-              49:             TypeImage 6(float) 2D sampled format:Unknown
-              50:             TypeSampledImage 49
-              51:             TypePointer UniformConstant 50
-52(texSampler2D):     51(ptr) Variable UniformConstant
+              30:     10(int) Constant 0
+              31:             TypePointer Function 6(float)
+              34:     10(int) Constant 1
+              37:     10(int) Constant 2
+              40:     10(int) Constant 16
+              41:             TypeArray 6(float) 40
+              42:             TypePointer Input 41
+       43(alpha):     42(ptr) Variable Input
+              44:     15(int) Constant 12
+              45:             TypePointer Input 6(float)
+              48:     10(int) Constant 3
+              53:             TypePointer Output 7(fvec4)
+54(gl_FragColor):     53(ptr) Variable Output
+              56:             TypeImage 6(float) 2D sampled format:Unknown
+              57:             TypeSampledImage 56
+              58:             TypePointer UniformConstant 57
+59(texSampler2D):     58(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
      9(texColor):      8(ptr) Variable Function
@@ -65,17 +68,23 @@
               27:    7(fvec4) Load 9(texColor)
               28:   23(fvec3) VectorShuffle 27 27 0 1 2
               29:   23(fvec3) FAdd 28 26
-              30:    7(fvec4) Load 9(texColor)
-              31:    7(fvec4) VectorShuffle 30 29 4 5 6 3
-                              Store 9(texColor) 31
-              38:     37(ptr) AccessChain 35(alpha) 36
-              39:    6(float) Load 38
-              42:     41(ptr) AccessChain 9(texColor) 40
-              43:    6(float) Load 42
-              44:    6(float) FAdd 43 39
-              45:     41(ptr) AccessChain 9(texColor) 40
-                              Store 45 44
-              48:    7(fvec4) Load 9(texColor)
-                              Store 47(gl_FragColor) 48
+              32:     31(ptr) AccessChain 9(texColor) 30
+              33:    6(float) CompositeExtract 29 0
+                              Store 32 33
+              35:     31(ptr) AccessChain 9(texColor) 34
+              36:    6(float) CompositeExtract 29 1
+                              Store 35 36
+              38:     31(ptr) AccessChain 9(texColor) 37
+              39:    6(float) CompositeExtract 29 2
+                              Store 38 39
+              46:     45(ptr) AccessChain 43(alpha) 44
+              47:    6(float) Load 46
+              49:     31(ptr) AccessChain 9(texColor) 48
+              50:    6(float) Load 49
+              51:    6(float) FAdd 50 47
+              52:     31(ptr) AccessChain 9(texColor) 48
+                              Store 52 51
+              55:    7(fvec4) Load 9(texColor)
+                              Store 54(gl_FragColor) 55
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/specExamples.frag.out b/Test/baseResults/specExamples.frag.out
index 5eec3cb..5fb5bd7 100644
--- a/Test/baseResults/specExamples.frag.out
+++ b/Test/baseResults/specExamples.frag.out
@@ -16,6 +16,7 @@
 ERROR: 0:112: 'redeclaration' : all redeclarations must use the same depth layout on gl_FragDepth
 ERROR: 0:118: 'redeclaration' : all redeclarations must use the same depth layout on gl_FragDepth
 ERROR: 0:121: 'redeclaration' : all redeclarations must use the same depth layout on gl_FragDepth
+ERROR: 0:123: 'gl_Color' : identifiers starting with "gl_" are reserved 
 ERROR: 0:172: 'x' : undeclared identifier 
 ERROR: 0:172: '[]' : scalar integer expression required 
 ERROR: 0:175: 'x' : undeclared identifier 
@@ -37,7 +38,7 @@
 ERROR: 0:227: 'in' : not allowed in nested scope 
 ERROR: 0:228: 'in' : not allowed in nested scope 
 ERROR: 0:232: 'out' : not allowed in nested scope 
-ERROR: 38 compilation errors.  No code generated.
+ERROR: 39 compilation errors.  No code generated.
 
 
 Shader version: 430
@@ -320,7 +321,7 @@
 0:?     'factor' (layout( location=3 index=1) out 4-component vector of float)
 0:?     'colors' (layout( location=2) out 3-element array of 4-component vector of float)
 0:?     'gl_FragDepth' ( gl_FragDepth float FragDepth)
-0:?     'anon@2' ( in block{ in float FogFragCoord gl_FogFragCoord,  in unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  flat in 4-component vector of float Color gl_Color,  in 4-component vector of float SecondaryColor gl_SecondaryColor})
+0:?     'gl_Color' ( flat in 4-component vector of float)
 
 
 Linked fragment stage:
@@ -595,5 +596,5 @@
 0:?     'factor' (layout( location=3 index=1) out 4-component vector of float)
 0:?     'colors' (layout( location=2) out 3-element array of 4-component vector of float)
 0:?     'gl_FragDepth' ( gl_FragDepth float FragDepth)
-0:?     'anon@2' ( in block{ in float FogFragCoord gl_FogFragCoord,  in 1-element array of 4-component vector of float TexCoord gl_TexCoord,  flat in 4-component vector of float Color gl_Color,  in 4-component vector of float SecondaryColor gl_SecondaryColor})
+0:?     'gl_Color' ( flat in 4-component vector of float)
 
diff --git a/Test/baseResults/specExamples.vert.out b/Test/baseResults/specExamples.vert.out
index 1dbf9a2..caddb5c 100644
--- a/Test/baseResults/specExamples.vert.out
+++ b/Test/baseResults/specExamples.vert.out
@@ -24,7 +24,8 @@
 ERROR: 0:96: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings 
 ERROR: 0:97: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings 
 ERROR: 0:106: '' : vertex input cannot be further qualified 
-ERROR: 0:106: 'redeclaration' : cannot change storage, memory, or auxiliary qualification of gl_FrontColor
+ERROR: 0:106: 'gl_FrontColor' : identifiers starting with "gl_" are reserved 
+ERROR: 0:107: 'redeclaration' : cannot change storage, memory, or auxiliary qualification of gl_FrontColor
 ERROR: 0:112: 'ColorIvn' : identifier not previously declared 
 ERROR: 0:132: 'shared' : not supported in this stage: vertex
 ERROR: 0:134: '' : function does not return a value: funcA
@@ -33,7 +34,7 @@
 ERROR: 0:169: 'format' : image formats must match 
 ERROR: 0:170: 'coherent' : argument cannot drop memory qualifier when passed to formal parameter 
 ERROR: 0:170: 'format' : image formats must match 
-ERROR: 34 compilation errors.  No code generated.
+ERROR: 35 compilation errors.  No code generated.
 
 
 Shader version: 430
@@ -297,7 +298,7 @@
 0:?     'b2' (layout( binding=2) uniform atomic_uint)
 0:?     'c2' (layout( binding=3) uniform atomic_uint)
 0:?     'd2' (layout( binding=2) uniform atomic_uint)
-0:?     'anon@5' ( out block{ invariant 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  flat out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:?     'gl_FrontColor' ( flat in 4-component vector of float)
 0:?     'ColorInv' ( smooth out 3-component vector of float)
 0:?     'Color4' ( invariant centroid smooth out 3-component vector of float)
 0:?     'position' ( noContraction smooth out 4-component vector of float)
@@ -580,7 +581,7 @@
 0:?     'b2' (layout( binding=2) uniform atomic_uint)
 0:?     'c2' (layout( binding=3) uniform atomic_uint)
 0:?     'd2' (layout( binding=2) uniform atomic_uint)
-0:?     'anon@5' ( out block{ invariant 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  flat out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:?     'gl_FrontColor' ( flat in 4-component vector of float)
 0:?     'ColorInv' ( smooth out 3-component vector of float)
 0:?     'Color4' ( invariant centroid smooth out 3-component vector of float)
 0:?     'position' ( noContraction smooth out 4-component vector of float)
diff --git a/Test/baseResults/specExamplesConf.vert.out b/Test/baseResults/specExamplesConf.vert.out
index 94f48a5..7d5fbb9 100644
--- a/Test/baseResults/specExamplesConf.vert.out
+++ b/Test/baseResults/specExamplesConf.vert.out
@@ -25,7 +25,8 @@
 ERROR: 0:96: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings 
 ERROR: 0:97: 'binding' : atomic_uint binding is too large; see gl_MaxAtomicCounterBindings 
 ERROR: 0:106: '' : vertex input cannot be further qualified 
-ERROR: 0:106: 'redeclaration' : cannot change storage, memory, or auxiliary qualification of gl_FrontColor
+ERROR: 0:106: 'gl_FrontColor' : identifiers starting with "gl_" are reserved 
+ERROR: 0:107: 'redeclaration' : cannot change storage, memory, or auxiliary qualification of gl_FrontColor
 ERROR: 0:112: 'ColorIvn' : identifier not previously declared 
 ERROR: 0:132: 'shared' : not supported in this stage: vertex
 ERROR: 0:134: '' : function does not return a value: funcA
@@ -34,7 +35,7 @@
 ERROR: 0:169: 'format' : image formats must match 
 ERROR: 0:170: 'coherent' : argument cannot drop memory qualifier when passed to formal parameter 
 ERROR: 0:170: 'format' : image formats must match 
-ERROR: 35 compilation errors.  No code generated.
+ERROR: 36 compilation errors.  No code generated.
 
 
 Shader version: 430
@@ -298,7 +299,7 @@
 0:?     'b2' (layout( binding=2) uniform atomic_uint)
 0:?     'c2' (layout( binding=3) uniform atomic_uint)
 0:?     'd2' (layout( binding=2) uniform atomic_uint)
-0:?     'anon@5' ( out block{ invariant 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  flat out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:?     'gl_FrontColor' ( flat in 4-component vector of float)
 0:?     'ColorInv' ( smooth out 3-component vector of float)
 0:?     'Color4' ( invariant centroid smooth out 3-component vector of float)
 0:?     'position' ( noContraction smooth out 4-component vector of float)
@@ -581,7 +582,7 @@
 0:?     'b2' (layout( binding=2) uniform atomic_uint)
 0:?     'c2' (layout( binding=3) uniform atomic_uint)
 0:?     'd2' (layout( binding=2) uniform atomic_uint)
-0:?     'anon@5' ( out block{ invariant 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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  flat out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:?     'gl_FrontColor' ( flat in 4-component vector of float)
 0:?     'ColorInv' ( smooth out 3-component vector of float)
 0:?     'Color4' ( invariant centroid smooth out 3-component vector of float)
 0:?     'position' ( noContraction smooth out 4-component vector of float)
diff --git a/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out b/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out
index 68f7e52..a2458ba 100644
--- a/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out
+++ b/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out
@@ -1,12 +1,12 @@
 spv.1.4.OpCopyLogical.funcall.frag
 // Module Version 10400
 // Generated by (magic number): 8000a
-// Id's are bound by 60
+// Id's are bound by 59
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 25 37
+                              EntryPoint Fragment 4  "main" 25 36
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 450
                               Name 4  "main"
@@ -23,14 +23,12 @@
                               Name 23  "blockName"
                               MemberName 23(blockName) 0  "s1"
                               Name 25  ""
-                              Name 31  "S"
-                              MemberName 31(S) 0  "m"
-                              Name 32  "arg"
-                              Name 37  "s2"
-                              Name 40  "param"
-                              Name 45  "param"
-                              Name 48  "param"
-                              Name 56  "param"
+                              Name 31  "arg"
+                              Name 36  "s2"
+                              Name 39  "param"
+                              Name 44  "param"
+                              Name 47  "param"
+                              Name 55  "param"
                               MemberDecorate 22(S) 0 ColMajor
                               MemberDecorate 22(S) 0 Offset 0
                               MemberDecorate 22(S) 0 MatrixStride 16
@@ -38,7 +36,6 @@
                               Decorate 23(blockName) Block
                               Decorate 25 DescriptorSet 0
                               Decorate 25 Binding 0
-                              MemberDecorate 31(S) 0 ColMajor
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -55,46 +52,45 @@
               26:             TypeInt 32 1
               27:     26(int) Constant 0
               28:             TypePointer StorageBuffer 22(S)
-           31(S):             TypeStruct 8
-              36:             TypePointer Private 9(S)
-          37(s2):     36(ptr) Variable Private
+              35:             TypePointer Private 9(S)
+          36(s2):     35(ptr) Variable Private
          4(main):           2 Function None 3
                5:             Label
-         32(arg):     14(ptr) Variable Function
-       40(param):     14(ptr) Variable Function
-       45(param):     14(ptr) Variable Function
-       48(param):     14(ptr) Variable Function
-       56(param):     14(ptr) Variable Function
+         31(arg):     14(ptr) Variable Function
+       39(param):     14(ptr) Variable Function
+       44(param):     14(ptr) Variable Function
+       47(param):     14(ptr) Variable Function
+       55(param):     14(ptr) Variable Function
               29:     28(ptr) AccessChain 25 27
               30:       22(S) Load 29
-              33:        9(S) CopyLogical 30
-                              Store 32(arg) 33
-              34:        9(S) Load 32(arg)
-              35:           2 FunctionCall 12(fooConst(struct-S-mf441;) 34
-              38:        9(S) Load 37(s2)
-              39:           2 FunctionCall 12(fooConst(struct-S-mf441;) 38
-              41:     28(ptr) AccessChain 25 27
-              42:       22(S) Load 41
-              43:        9(S) CopyLogical 42
-                              Store 40(param) 43
-              44:           2 FunctionCall 17(foo(struct-S-mf441;) 40(param)
-              46:        9(S) Load 37(s2)
-                              Store 45(param) 46
-              47:           2 FunctionCall 17(foo(struct-S-mf441;) 45(param)
-              49:     28(ptr) AccessChain 25 27
-              50:       22(S) Load 49
-              51:        9(S) CopyLogical 50
-                              Store 48(param) 51
-              52:           2 FunctionCall 20(fooOut(struct-S-mf441;) 48(param)
-              53:        9(S) Load 48(param)
-              54:     28(ptr) AccessChain 25 27
-              55:       22(S) CopyLogical 53
-                              Store 54 55
-              57:        9(S) Load 37(s2)
-                              Store 56(param) 57
-              58:           2 FunctionCall 20(fooOut(struct-S-mf441;) 56(param)
-              59:        9(S) Load 56(param)
-                              Store 37(s2) 59
+              32:        9(S) CopyLogical 30
+                              Store 31(arg) 32
+              33:        9(S) Load 31(arg)
+              34:           2 FunctionCall 12(fooConst(struct-S-mf441;) 33
+              37:        9(S) Load 36(s2)
+              38:           2 FunctionCall 12(fooConst(struct-S-mf441;) 37
+              40:     28(ptr) AccessChain 25 27
+              41:       22(S) Load 40
+              42:        9(S) CopyLogical 41
+                              Store 39(param) 42
+              43:           2 FunctionCall 17(foo(struct-S-mf441;) 39(param)
+              45:        9(S) Load 36(s2)
+                              Store 44(param) 45
+              46:           2 FunctionCall 17(foo(struct-S-mf441;) 44(param)
+              48:     28(ptr) AccessChain 25 27
+              49:       22(S) Load 48
+              50:        9(S) CopyLogical 49
+                              Store 47(param) 50
+              51:           2 FunctionCall 20(fooOut(struct-S-mf441;) 47(param)
+              52:        9(S) Load 47(param)
+              53:     28(ptr) AccessChain 25 27
+              54:       22(S) CopyLogical 52
+                              Store 53 54
+              56:        9(S) Load 36(s2)
+                              Store 55(param) 56
+              57:           2 FunctionCall 20(fooOut(struct-S-mf441;) 55(param)
+              58:        9(S) Load 55(param)
+                              Store 36(s2) 58
                               Return
                               FunctionEnd
 12(fooConst(struct-S-mf441;):           2 Function None 10
diff --git a/Test/baseResults/spv.1.4.OpEntryPoint.frag.out b/Test/baseResults/spv.1.4.OpEntryPoint.frag.out
index cf5d98a..e43e954 100644
--- a/Test/baseResults/spv.1.4.OpEntryPoint.frag.out
+++ b/Test/baseResults/spv.1.4.OpEntryPoint.frag.out
@@ -31,7 +31,6 @@
                               Decorate 25(uniformv) Binding 0
                               MemberDecorate 31(pushB) 0 Offset 0
                               Decorate 31(pushB) Block
-                              Decorate 33(pushv) Binding 2
                               MemberDecorate 39(bbt) 0 Offset 0
                               Decorate 39(bbt) Block
                               Decorate 41(bufferv) DescriptorSet 0
diff --git a/Test/baseResults/spv.1.4.funcall.array.frag.out b/Test/baseResults/spv.1.4.funcall.array.frag.out
new file mode 100644
index 0000000..d976bb1
--- /dev/null
+++ b/Test/baseResults/spv.1.4.funcall.array.frag.out
@@ -0,0 +1,74 @@
+spv.1.4.funcall.array.frag
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 42
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 27 31
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 16  "f(vf4[9];i1;"
+                              Name 14  "a"
+                              Name 15  "ix"
+                              Name 20  "indexable"
+                              Name 27  "color"
+                              Name 29  "ub"
+                              MemberName 29(ub) 0  "u"
+                              Name 31  ""
+                              Name 37  "arg"
+                              Name 40  "param"
+                              Decorate 27(color) Location 0
+                              Decorate 28 ArrayStride 16
+                              MemberDecorate 29(ub) 0 Offset 0
+                              Decorate 29(ub) Block
+                              Decorate 31 DescriptorSet 0
+                              Decorate 31 Binding 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypeInt 32 0
+               9:      8(int) Constant 9
+              10:             TypeArray 7(fvec4) 9
+              11:             TypeInt 32 1
+              12:             TypePointer Function 11(int)
+              13:             TypeFunction 7(fvec4) 10 12(ptr)
+              19:             TypePointer Function 10
+              21:             TypePointer Function 7(fvec4)
+              26:             TypePointer Output 7(fvec4)
+       27(color):     26(ptr) Variable Output
+              28:             TypeArray 7(fvec4) 9
+          29(ub):             TypeStruct 28
+              30:             TypePointer Uniform 29(ub)
+              31:     30(ptr) Variable Uniform
+              32:     11(int) Constant 0
+              33:             TypePointer Uniform 28
+              36:     11(int) Constant 2
+         4(main):           2 Function None 3
+               5:             Label
+         37(arg):     19(ptr) Variable Function
+       40(param):     12(ptr) Variable Function
+              34:     33(ptr) AccessChain 31 32
+              35:          28 Load 34
+              38:          10 CopyLogical 35
+                              Store 37(arg) 38
+              39:          10 Load 37(arg)
+                              Store 40(param) 36
+              41:    7(fvec4) FunctionCall 16(f(vf4[9];i1;) 39 40(param)
+                              Store 27(color) 41
+                              Return
+                              FunctionEnd
+16(f(vf4[9];i1;):    7(fvec4) Function None 13
+           14(a):          10 FunctionParameter
+          15(ix):     12(ptr) FunctionParameter
+              17:             Label
+   20(indexable):     19(ptr) Variable Function
+              18:     11(int) Load 15(ix)
+                              Store 20(indexable) 14(a)
+              22:     21(ptr) AccessChain 20(indexable) 18
+              23:    7(fvec4) Load 22
+                              ReturnValue 23
+                              FunctionEnd
diff --git a/Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out b/Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out
new file mode 100644
index 0000000..9f698db
--- /dev/null
+++ b/Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out
@@ -0,0 +1,104 @@
+spv.1.4.load.bool.array.interface.block.frag
+Validation failed
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 64
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 13 20 61
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 11  "ssbo"
+                              MemberName 11(ssbo) 0  "bo"
+                              Name 13  ""
+                              Name 18  "ub"
+                              MemberName 18(ub) 0  "bi"
+                              Name 20  ""
+                              Name 61  "color"
+                              Decorate 8 ArrayStride 4
+                              Decorate 10 ArrayStride 12
+                              MemberDecorate 11(ssbo) 0 Offset 0
+                              Decorate 11(ssbo) Block
+                              Decorate 13 DescriptorSet 0
+                              Decorate 13 Binding 1
+                              Decorate 16 ArrayStride 16
+                              Decorate 17 ArrayStride 48
+                              MemberDecorate 18(ub) 0 Offset 0
+                              Decorate 18(ub) Block
+                              Decorate 20 DescriptorSet 0
+                              Decorate 20 Binding 0
+                              Decorate 61(color) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:      6(int) Constant 3
+               8:             TypeArray 6(int) 7
+               9:      6(int) Constant 2
+              10:             TypeArray 8 9
+        11(ssbo):             TypeStruct 10
+              12:             TypePointer StorageBuffer 11(ssbo)
+              13:     12(ptr) Variable StorageBuffer
+              14:             TypeInt 32 1
+              15:     14(int) Constant 0
+              16:             TypeArray 6(int) 7
+              17:             TypeArray 16 9
+          18(ub):             TypeStruct 17
+              19:             TypePointer Uniform 18(ub)
+              20:     19(ptr) Variable Uniform
+              21:             TypePointer Uniform 17
+              24:             TypeBool
+              25:             TypeArray 24(bool) 7
+              26:             TypeArray 25 9
+              28:             TypePointer StorageBuffer 10
+              31:             TypePointer StorageBuffer 8
+              34:      6(int) Constant 1
+              35:      6(int) Constant 0
+              37:             TypePointer StorageBuffer 6(int)
+              40:     14(int) Constant 1
+              44:     14(int) Constant 2
+              58:             TypeFloat 32
+              59:             TypeVector 58(float) 4
+              60:             TypePointer Output 59(fvec4)
+       61(color):     60(ptr) Variable Output
+              62:   58(float) Constant 0
+              63:   59(fvec4) ConstantComposite 62 62 62 62
+         4(main):           2 Function None 3
+               5:             Label
+              22:     21(ptr) AccessChain 20 15
+              23:          17 Load 22
+              27:          26 CopyLogical 23
+              29:     28(ptr) AccessChain 13 15
+              30:          25 CompositeExtract 27 0
+              32:     31(ptr) AccessChain 29 15
+              33:    24(bool) CompositeExtract 30 0
+              36:      6(int) Select 33 34 35
+              38:     37(ptr) AccessChain 32 15
+                              Store 38 36
+              39:    24(bool) CompositeExtract 30 1
+              41:      6(int) Select 39 34 35
+              42:     37(ptr) AccessChain 32 40
+                              Store 42 41
+              43:    24(bool) CompositeExtract 30 2
+              45:      6(int) Select 43 34 35
+              46:     37(ptr) AccessChain 32 44
+                              Store 46 45
+              47:          25 CompositeExtract 27 1
+              48:     31(ptr) AccessChain 29 40
+              49:    24(bool) CompositeExtract 47 0
+              50:      6(int) Select 49 34 35
+              51:     37(ptr) AccessChain 48 15
+                              Store 51 50
+              52:    24(bool) CompositeExtract 47 1
+              53:      6(int) Select 52 34 35
+              54:     37(ptr) AccessChain 48 40
+                              Store 54 53
+              55:    24(bool) CompositeExtract 47 2
+              56:      6(int) Select 55 34 35
+              57:     37(ptr) AccessChain 48 44
+                              Store 57 56
+                              Store 61(color) 63
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.310.bitcast.frag.out b/Test/baseResults/spv.310.bitcast.frag.out
index b7f823d..f4322ab 100644
--- a/Test/baseResults/spv.310.bitcast.frag.out
+++ b/Test/baseResults/spv.310.bitcast.frag.out
@@ -1,71 +1,71 @@
 spv.310.bitcast.frag
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 153
+// Id's are bound by 179
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 14 26 37 48 89 98 107 116 122 130 139 148
+                              EntryPoint Fragment 4  "main" 14 26 40 56 103 112 123 136 142 150 161 174
                               ExecutionMode 4 OriginUpperLeft
                               Source ESSL 310
                               Name 4  "main"
                               Name 9  "idata"
                               Name 14  "f1"
                               Name 26  "f2"
-                              Name 37  "f3"
-                              Name 48  "f4"
-                              Name 55  "udata"
-                              Name 85  "fdata"
-                              Name 89  "i1"
-                              Name 98  "i2"
-                              Name 107  "i3"
-                              Name 116  "i4"
-                              Name 122  "u1"
-                              Name 130  "u2"
-                              Name 139  "u3"
-                              Name 148  "u4"
+                              Name 40  "f3"
+                              Name 56  "f4"
+                              Name 63  "udata"
+                              Name 99  "fdata"
+                              Name 103  "i1"
+                              Name 112  "i2"
+                              Name 123  "i3"
+                              Name 136  "i4"
+                              Name 142  "u1"
+                              Name 150  "u2"
+                              Name 161  "u3"
+                              Name 174  "u4"
                               Decorate 14(f1) RelaxedPrecision
                               Decorate 14(f1) Location 8
                               Decorate 15 RelaxedPrecision
                               Decorate 26(f2) RelaxedPrecision
                               Decorate 26(f2) Location 9
                               Decorate 27 RelaxedPrecision
-                              Decorate 37(f3) RelaxedPrecision
-                              Decorate 37(f3) Location 10
-                              Decorate 38 RelaxedPrecision
-                              Decorate 48(f4) Location 11
-                              Decorate 57 RelaxedPrecision
-                              Decorate 64 RelaxedPrecision
+                              Decorate 40(f3) RelaxedPrecision
+                              Decorate 40(f3) Location 10
+                              Decorate 41 RelaxedPrecision
+                              Decorate 56(f4) Location 11
+                              Decorate 65 RelaxedPrecision
                               Decorate 72 RelaxedPrecision
-                              Decorate 89(i1) RelaxedPrecision
-                              Decorate 89(i1) Flat
-                              Decorate 89(i1) Location 0
-                              Decorate 90 RelaxedPrecision
-                              Decorate 98(i2) RelaxedPrecision
-                              Decorate 98(i2) Flat
-                              Decorate 98(i2) Location 1
-                              Decorate 99 RelaxedPrecision
-                              Decorate 107(i3) RelaxedPrecision
-                              Decorate 107(i3) Flat
-                              Decorate 107(i3) Location 2
-                              Decorate 108 RelaxedPrecision
-                              Decorate 116(i4) Flat
-                              Decorate 116(i4) Location 3
-                              Decorate 122(u1) RelaxedPrecision
-                              Decorate 122(u1) Flat
-                              Decorate 122(u1) Location 4
-                              Decorate 123 RelaxedPrecision
-                              Decorate 130(u2) RelaxedPrecision
-                              Decorate 130(u2) Flat
-                              Decorate 130(u2) Location 5
-                              Decorate 131 RelaxedPrecision
-                              Decorate 139(u3) RelaxedPrecision
-                              Decorate 139(u3) Flat
-                              Decorate 139(u3) Location 6
-                              Decorate 140 RelaxedPrecision
-                              Decorate 148(u4) Flat
-                              Decorate 148(u4) Location 7
+                              Decorate 82 RelaxedPrecision
+                              Decorate 103(i1) RelaxedPrecision
+                              Decorate 103(i1) Flat
+                              Decorate 103(i1) Location 0
+                              Decorate 104 RelaxedPrecision
+                              Decorate 112(i2) RelaxedPrecision
+                              Decorate 112(i2) Flat
+                              Decorate 112(i2) Location 1
+                              Decorate 113 RelaxedPrecision
+                              Decorate 123(i3) RelaxedPrecision
+                              Decorate 123(i3) Flat
+                              Decorate 123(i3) Location 2
+                              Decorate 124 RelaxedPrecision
+                              Decorate 136(i4) Flat
+                              Decorate 136(i4) Location 3
+                              Decorate 142(u1) RelaxedPrecision
+                              Decorate 142(u1) Flat
+                              Decorate 142(u1) Location 4
+                              Decorate 143 RelaxedPrecision
+                              Decorate 150(u2) RelaxedPrecision
+                              Decorate 150(u2) Flat
+                              Decorate 150(u2) Location 5
+                              Decorate 151 RelaxedPrecision
+                              Decorate 161(u3) RelaxedPrecision
+                              Decorate 161(u3) Flat
+                              Decorate 161(u3) Location 6
+                              Decorate 162 RelaxedPrecision
+                              Decorate 174(u4) Flat
+                              Decorate 174(u4) Location 7
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
@@ -83,44 +83,46 @@
               25:             TypePointer Input 24(fvec2)
           26(f2):     25(ptr) Variable Input
               28:             TypeVector 6(int) 2
-              35:             TypeVector 12(float) 3
-              36:             TypePointer Input 35(fvec3)
-          37(f3):     36(ptr) Variable Input
-              39:             TypeVector 6(int) 3
-              46:             TypeVector 12(float) 4
-              47:             TypePointer Input 46(fvec4)
-          48(f4):     47(ptr) Variable Input
-              53:             TypeVector 17(int) 4
-              54:             TypePointer Function 53(ivec4)
-              56:   53(ivec4) ConstantComposite 18 18 18 18
-              59:             TypePointer Function 17(int)
-              65:             TypeVector 17(int) 2
-              73:             TypeVector 17(int) 3
-              84:             TypePointer Function 46(fvec4)
-              86:   12(float) Constant 0
-              87:   46(fvec4) ConstantComposite 86 86 86 86
-              88:             TypePointer Input 6(int)
-          89(i1):     88(ptr) Variable Input
-              92:             TypePointer Function 12(float)
-              97:             TypePointer Input 28(ivec2)
-          98(i2):     97(ptr) Variable Input
-             106:             TypePointer Input 39(ivec3)
-         107(i3):    106(ptr) Variable Input
-             115:             TypePointer Input 7(ivec4)
-         116(i4):    115(ptr) Variable Input
-             121:             TypePointer Input 17(int)
-         122(u1):    121(ptr) Variable Input
-             129:             TypePointer Input 65(ivec2)
-         130(u2):    129(ptr) Variable Input
-             138:             TypePointer Input 73(ivec3)
-         139(u3):    138(ptr) Variable Input
-             147:             TypePointer Input 53(ivec4)
-         148(u4):    147(ptr) Variable Input
+              35:     17(int) Constant 1
+              38:             TypeVector 12(float) 3
+              39:             TypePointer Input 38(fvec3)
+          40(f3):     39(ptr) Variable Input
+              42:             TypeVector 6(int) 3
+              51:     17(int) Constant 2
+              54:             TypeVector 12(float) 4
+              55:             TypePointer Input 54(fvec4)
+          56(f4):     55(ptr) Variable Input
+              61:             TypeVector 17(int) 4
+              62:             TypePointer Function 61(ivec4)
+              64:   61(ivec4) ConstantComposite 18 18 18 18
+              67:             TypePointer Function 17(int)
+              73:             TypeVector 17(int) 2
+              83:             TypeVector 17(int) 3
+              98:             TypePointer Function 54(fvec4)
+             100:   12(float) Constant 0
+             101:   54(fvec4) ConstantComposite 100 100 100 100
+             102:             TypePointer Input 6(int)
+         103(i1):    102(ptr) Variable Input
+             106:             TypePointer Function 12(float)
+             111:             TypePointer Input 28(ivec2)
+         112(i2):    111(ptr) Variable Input
+             122:             TypePointer Input 42(ivec3)
+         123(i3):    122(ptr) Variable Input
+             135:             TypePointer Input 7(ivec4)
+         136(i4):    135(ptr) Variable Input
+             141:             TypePointer Input 17(int)
+         142(u1):    141(ptr) Variable Input
+             149:             TypePointer Input 73(ivec2)
+         150(u2):    149(ptr) Variable Input
+             160:             TypePointer Input 83(ivec3)
+         161(u3):    160(ptr) Variable Input
+             173:             TypePointer Input 61(ivec4)
+         174(u4):    173(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
         9(idata):      8(ptr) Variable Function
-       55(udata):     54(ptr) Variable Function
-       85(fdata):     84(ptr) Variable Function
+       63(udata):     62(ptr) Variable Function
+       99(fdata):     98(ptr) Variable Function
                               Store 9(idata) 11
               15:   12(float) Load 14(f1)
               16:      6(int) Bitcast 15
@@ -134,107 +136,143 @@
               30:    7(ivec4) Load 9(idata)
               31:   28(ivec2) VectorShuffle 30 30 0 1
               32:   28(ivec2) IAdd 31 29
-              33:    7(ivec4) Load 9(idata)
-              34:    7(ivec4) VectorShuffle 33 32 4 5 2 3
-                              Store 9(idata) 34
-              38:   35(fvec3) Load 37(f3)
-              40:   39(ivec3) Bitcast 38
-              41:    7(ivec4) Load 9(idata)
-              42:   39(ivec3) VectorShuffle 41 41 0 1 2
-              43:   39(ivec3) IAdd 42 40
+              33:     19(ptr) AccessChain 9(idata) 18
+              34:      6(int) CompositeExtract 32 0
+                              Store 33 34
+              36:     19(ptr) AccessChain 9(idata) 35
+              37:      6(int) CompositeExtract 32 1
+                              Store 36 37
+              41:   38(fvec3) Load 40(f3)
+              43:   42(ivec3) Bitcast 41
               44:    7(ivec4) Load 9(idata)
-              45:    7(ivec4) VectorShuffle 44 43 4 5 6 3
-                              Store 9(idata) 45
-              49:   46(fvec4) Load 48(f4)
-              50:    7(ivec4) Bitcast 49
-              51:    7(ivec4) Load 9(idata)
-              52:    7(ivec4) IAdd 51 50
-                              Store 9(idata) 52
-                              Store 55(udata) 56
-              57:   12(float) Load 14(f1)
-              58:     17(int) Bitcast 57
-              60:     59(ptr) AccessChain 55(udata) 18
-              61:     17(int) Load 60
-              62:     17(int) IAdd 61 58
-              63:     59(ptr) AccessChain 55(udata) 18
-                              Store 63 62
-              64:   24(fvec2) Load 26(f2)
-              66:   65(ivec2) Bitcast 64
-              67:   53(ivec4) Load 55(udata)
-              68:   65(ivec2) VectorShuffle 67 67 0 1
-              69:   65(ivec2) IAdd 68 66
-              70:   53(ivec4) Load 55(udata)
-              71:   53(ivec4) VectorShuffle 70 69 4 5 2 3
-                              Store 55(udata) 71
-              72:   35(fvec3) Load 37(f3)
-              74:   73(ivec3) Bitcast 72
-              75:   53(ivec4) Load 55(udata)
-              76:   73(ivec3) VectorShuffle 75 75 0 1 2
-              77:   73(ivec3) IAdd 76 74
-              78:   53(ivec4) Load 55(udata)
-              79:   53(ivec4) VectorShuffle 78 77 4 5 6 3
-                              Store 55(udata) 79
-              80:   46(fvec4) Load 48(f4)
-              81:   53(ivec4) Bitcast 80
-              82:   53(ivec4) Load 55(udata)
-              83:   53(ivec4) IAdd 82 81
-                              Store 55(udata) 83
-                              Store 85(fdata) 87
-              90:      6(int) Load 89(i1)
-              91:   12(float) Bitcast 90
-              93:     92(ptr) AccessChain 85(fdata) 18
-              94:   12(float) Load 93
-              95:   12(float) FAdd 94 91
-              96:     92(ptr) AccessChain 85(fdata) 18
-                              Store 96 95
-              99:   28(ivec2) Load 98(i2)
-             100:   24(fvec2) Bitcast 99
-             101:   46(fvec4) Load 85(fdata)
-             102:   24(fvec2) VectorShuffle 101 101 0 1
-             103:   24(fvec2) FAdd 102 100
-             104:   46(fvec4) Load 85(fdata)
-             105:   46(fvec4) VectorShuffle 104 103 4 5 2 3
-                              Store 85(fdata) 105
-             108:   39(ivec3) Load 107(i3)
-             109:   35(fvec3) Bitcast 108
-             110:   46(fvec4) Load 85(fdata)
-             111:   35(fvec3) VectorShuffle 110 110 0 1 2
-             112:   35(fvec3) FAdd 111 109
-             113:   46(fvec4) Load 85(fdata)
-             114:   46(fvec4) VectorShuffle 113 112 4 5 6 3
-                              Store 85(fdata) 114
-             117:    7(ivec4) Load 116(i4)
-             118:   46(fvec4) Bitcast 117
-             119:   46(fvec4) Load 85(fdata)
-             120:   46(fvec4) FAdd 119 118
-                              Store 85(fdata) 120
-             123:     17(int) Load 122(u1)
-             124:   12(float) Bitcast 123
-             125:     92(ptr) AccessChain 85(fdata) 18
-             126:   12(float) Load 125
-             127:   12(float) FAdd 126 124
-             128:     92(ptr) AccessChain 85(fdata) 18
-                              Store 128 127
-             131:   65(ivec2) Load 130(u2)
-             132:   24(fvec2) Bitcast 131
-             133:   46(fvec4) Load 85(fdata)
-             134:   24(fvec2) VectorShuffle 133 133 0 1
-             135:   24(fvec2) FAdd 134 132
-             136:   46(fvec4) Load 85(fdata)
-             137:   46(fvec4) VectorShuffle 136 135 4 5 2 3
-                              Store 85(fdata) 137
-             140:   73(ivec3) Load 139(u3)
-             141:   35(fvec3) Bitcast 140
-             142:   46(fvec4) Load 85(fdata)
-             143:   35(fvec3) VectorShuffle 142 142 0 1 2
-             144:   35(fvec3) FAdd 143 141
-             145:   46(fvec4) Load 85(fdata)
-             146:   46(fvec4) VectorShuffle 145 144 4 5 6 3
-                              Store 85(fdata) 146
-             149:   53(ivec4) Load 148(u4)
-             150:   46(fvec4) Bitcast 149
-             151:   46(fvec4) Load 85(fdata)
-             152:   46(fvec4) FAdd 151 150
-                              Store 85(fdata) 152
+              45:   42(ivec3) VectorShuffle 44 44 0 1 2
+              46:   42(ivec3) IAdd 45 43
+              47:     19(ptr) AccessChain 9(idata) 18
+              48:      6(int) CompositeExtract 46 0
+                              Store 47 48
+              49:     19(ptr) AccessChain 9(idata) 35
+              50:      6(int) CompositeExtract 46 1
+                              Store 49 50
+              52:     19(ptr) AccessChain 9(idata) 51
+              53:      6(int) CompositeExtract 46 2
+                              Store 52 53
+              57:   54(fvec4) Load 56(f4)
+              58:    7(ivec4) Bitcast 57
+              59:    7(ivec4) Load 9(idata)
+              60:    7(ivec4) IAdd 59 58
+                              Store 9(idata) 60
+                              Store 63(udata) 64
+              65:   12(float) Load 14(f1)
+              66:     17(int) Bitcast 65
+              68:     67(ptr) AccessChain 63(udata) 18
+              69:     17(int) Load 68
+              70:     17(int) IAdd 69 66
+              71:     67(ptr) AccessChain 63(udata) 18
+                              Store 71 70
+              72:   24(fvec2) Load 26(f2)
+              74:   73(ivec2) Bitcast 72
+              75:   61(ivec4) Load 63(udata)
+              76:   73(ivec2) VectorShuffle 75 75 0 1
+              77:   73(ivec2) IAdd 76 74
+              78:     67(ptr) AccessChain 63(udata) 18
+              79:     17(int) CompositeExtract 77 0
+                              Store 78 79
+              80:     67(ptr) AccessChain 63(udata) 35
+              81:     17(int) CompositeExtract 77 1
+                              Store 80 81
+              82:   38(fvec3) Load 40(f3)
+              84:   83(ivec3) Bitcast 82
+              85:   61(ivec4) Load 63(udata)
+              86:   83(ivec3) VectorShuffle 85 85 0 1 2
+              87:   83(ivec3) IAdd 86 84
+              88:     67(ptr) AccessChain 63(udata) 18
+              89:     17(int) CompositeExtract 87 0
+                              Store 88 89
+              90:     67(ptr) AccessChain 63(udata) 35
+              91:     17(int) CompositeExtract 87 1
+                              Store 90 91
+              92:     67(ptr) AccessChain 63(udata) 51
+              93:     17(int) CompositeExtract 87 2
+                              Store 92 93
+              94:   54(fvec4) Load 56(f4)
+              95:   61(ivec4) Bitcast 94
+              96:   61(ivec4) Load 63(udata)
+              97:   61(ivec4) IAdd 96 95
+                              Store 63(udata) 97
+                              Store 99(fdata) 101
+             104:      6(int) Load 103(i1)
+             105:   12(float) Bitcast 104
+             107:    106(ptr) AccessChain 99(fdata) 18
+             108:   12(float) Load 107
+             109:   12(float) FAdd 108 105
+             110:    106(ptr) AccessChain 99(fdata) 18
+                              Store 110 109
+             113:   28(ivec2) Load 112(i2)
+             114:   24(fvec2) Bitcast 113
+             115:   54(fvec4) Load 99(fdata)
+             116:   24(fvec2) VectorShuffle 115 115 0 1
+             117:   24(fvec2) FAdd 116 114
+             118:    106(ptr) AccessChain 99(fdata) 18
+             119:   12(float) CompositeExtract 117 0
+                              Store 118 119
+             120:    106(ptr) AccessChain 99(fdata) 35
+             121:   12(float) CompositeExtract 117 1
+                              Store 120 121
+             124:   42(ivec3) Load 123(i3)
+             125:   38(fvec3) Bitcast 124
+             126:   54(fvec4) Load 99(fdata)
+             127:   38(fvec3) VectorShuffle 126 126 0 1 2
+             128:   38(fvec3) FAdd 127 125
+             129:    106(ptr) AccessChain 99(fdata) 18
+             130:   12(float) CompositeExtract 128 0
+                              Store 129 130
+             131:    106(ptr) AccessChain 99(fdata) 35
+             132:   12(float) CompositeExtract 128 1
+                              Store 131 132
+             133:    106(ptr) AccessChain 99(fdata) 51
+             134:   12(float) CompositeExtract 128 2
+                              Store 133 134
+             137:    7(ivec4) Load 136(i4)
+             138:   54(fvec4) Bitcast 137
+             139:   54(fvec4) Load 99(fdata)
+             140:   54(fvec4) FAdd 139 138
+                              Store 99(fdata) 140
+             143:     17(int) Load 142(u1)
+             144:   12(float) Bitcast 143
+             145:    106(ptr) AccessChain 99(fdata) 18
+             146:   12(float) Load 145
+             147:   12(float) FAdd 146 144
+             148:    106(ptr) AccessChain 99(fdata) 18
+                              Store 148 147
+             151:   73(ivec2) Load 150(u2)
+             152:   24(fvec2) Bitcast 151
+             153:   54(fvec4) Load 99(fdata)
+             154:   24(fvec2) VectorShuffle 153 153 0 1
+             155:   24(fvec2) FAdd 154 152
+             156:    106(ptr) AccessChain 99(fdata) 18
+             157:   12(float) CompositeExtract 155 0
+                              Store 156 157
+             158:    106(ptr) AccessChain 99(fdata) 35
+             159:   12(float) CompositeExtract 155 1
+                              Store 158 159
+             162:   83(ivec3) Load 161(u3)
+             163:   38(fvec3) Bitcast 162
+             164:   54(fvec4) Load 99(fdata)
+             165:   38(fvec3) VectorShuffle 164 164 0 1 2
+             166:   38(fvec3) FAdd 165 163
+             167:    106(ptr) AccessChain 99(fdata) 18
+             168:   12(float) CompositeExtract 166 0
+                              Store 167 168
+             169:    106(ptr) AccessChain 99(fdata) 35
+             170:   12(float) CompositeExtract 166 1
+                              Store 169 170
+             171:    106(ptr) AccessChain 99(fdata) 51
+             172:   12(float) CompositeExtract 166 2
+                              Store 171 172
+             175:   61(ivec4) Load 174(u4)
+             176:   54(fvec4) Bitcast 175
+             177:   54(fvec4) Load 99(fdata)
+             178:   54(fvec4) FAdd 177 176
+                              Store 99(fdata) 178
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out
index 9bc86d0..a4d8413 100644
--- a/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out
+++ b/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out
@@ -1,13 +1,13 @@
 spv.320.meshShaderUserDefined.mesh
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 140
+// Id's are bound by 143
 
                               Capability MeshShadingNV
                               Extension  "SPV_NV_mesh_shader"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint MeshNV 4  "main" 12 19 37 103
+                              EntryPoint MeshNV 4  "main" 12 19 37 106
                               ExecutionMode 4 LocalSize 32 1 1
                               ExecutionMode 4 OutputVertices 81
                               ExecutionMode 4 OutputPrimitivesNV 32
@@ -27,11 +27,11 @@
                               MemberName 33(myblock) 4  "m"
                               MemberName 33(myblock) 5  "mArr"
                               Name 37  "blk"
-                              Name 99  "myblock2"
-                              MemberName 99(myblock2) 0  "f"
-                              MemberName 99(myblock2) 1  "pos"
-                              MemberName 99(myblock2) 2  "m"
-                              Name 103  "blk2"
+                              Name 102  "myblock2"
+                              MemberName 102(myblock2) 0  "f"
+                              MemberName 102(myblock2) 1  "pos"
+                              MemberName 102(myblock2) 2  "m"
+                              Name 106  "blk2"
                               Decorate 12(gl_LocalInvocationID) BuiltIn LocalInvocationId
                               Decorate 19(gl_WorkGroupID) BuiltIn WorkgroupId
                               MemberDecorate 33(myblock) 0 PerPrimitiveNV
@@ -42,9 +42,9 @@
                               MemberDecorate 33(myblock) 5 PerPrimitiveNV
                               Decorate 33(myblock) Block
                               Decorate 37(blk) Location 0
-                              Decorate 99(myblock2) Block
-                              Decorate 103(blk2) Location 20
-                              Decorate 139 BuiltIn WorkgroupSize
+                              Decorate 102(myblock2) Block
+                              Decorate 106(blk2) Location 20
+                              Decorate 142 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
@@ -82,31 +82,31 @@
               57:   26(fvec3) ConstantComposite 54 55 56
               58:             TypePointer Output 26(fvec3)
               64:      6(int) Constant 3
-              69:             TypePointer Output 27(fvec4)
-              74:      6(int) Constant 4
-              76:   23(float) Constant 1098907648
-              77:   27(fvec4) ConstantComposite 56 54 55 76
-              82:      6(int) Constant 5
-              85:      9(int) Constant 3
-              88:      9(int) Constant 1
-              93:   23(float) Constant 1099431936
-              94:   23(float) Constant 1099956224
-              95:   23(float) Constant 1100480512
-              96:   26(fvec3) ConstantComposite 93 94 95
-              98:      9(int) Constant 264
-    99(myblock2):             TypeStruct 23(float) 27(fvec4) 29
-             100:      9(int) Constant 81
-             101:             TypeArray 99(myblock2) 100
-             102:             TypePointer Output 101
-       103(blk2):    102(ptr) Variable Output
-             109:   23(float) Constant 1101004800
-             113:   23(float) Constant 1101529088
-             114:   23(float) Constant 1102053376
-             115:   23(float) Constant 1102577664
-             116:   23(float) Constant 1103101952
-             117:   27(fvec4) ConstantComposite 113 114 115 116
-             129:   23(float) Constant 1105723392
-             139:   10(ivec3) ConstantComposite 34 88 88
+              69:      9(int) Constant 1
+              74:      9(int) Constant 3
+              78:      6(int) Constant 4
+              80:   23(float) Constant 1098907648
+              81:   27(fvec4) ConstantComposite 56 54 55 80
+              82:             TypePointer Output 27(fvec4)
+              87:      6(int) Constant 5
+              96:   23(float) Constant 1099431936
+              97:   23(float) Constant 1099956224
+              98:   23(float) Constant 1100480512
+              99:   26(fvec3) ConstantComposite 96 97 98
+             101:      9(int) Constant 264
+   102(myblock2):             TypeStruct 23(float) 27(fvec4) 29
+             103:      9(int) Constant 81
+             104:             TypeArray 102(myblock2) 103
+             105:             TypePointer Output 104
+       106(blk2):    105(ptr) Variable Output
+             112:   23(float) Constant 1101004800
+             116:   23(float) Constant 1101529088
+             117:   23(float) Constant 1102053376
+             118:   23(float) Constant 1102577664
+             119:   23(float) Constant 1103101952
+             120:   27(fvec4) ConstantComposite 116 117 118 119
+             132:   23(float) Constant 1105723392
+             142:   10(ivec3) ConstantComposite 34 69 69
          4(main):           2 Function None 3
                5:             Label
           8(iid):      7(ptr) Variable Function
@@ -142,64 +142,69 @@
               66:      6(int) SDiv 65 52
               67:     58(ptr) AccessChain 37(blk) 66 52
               68:   26(fvec3) Load 67
-              70:     69(ptr) AccessChain 37(blk) 63 64 44
-              71:   27(fvec4) Load 70
-              72:   27(fvec4) VectorShuffle 71 68 0 4 5 6
-                              Store 70 72
-              73:      6(int) Load 8(iid)
-              75:      6(int) SDiv 73 74
-              78:     69(ptr) AccessChain 37(blk) 75 74 52
-              79:   27(fvec4) Load 78
-              80:   27(fvec4) VectorShuffle 79 77 7 6 5 4
-                              Store 78 80
-              81:      6(int) Load 8(iid)
-              83:      6(int) Load 8(iid)
-              84:      6(int) SDiv 83 74
-              86:     41(ptr) AccessChain 37(blk) 84 74 52 85
-              87:   23(float) Load 86
-              89:     41(ptr) AccessChain 37(blk) 81 82 39 44 88
-                              Store 89 87
-              90:      6(int) Load 8(iid)
-              91:      6(int) IMul 90 74
-              92:      6(int) Load 18(gid)
-              97:     58(ptr) AccessChain 37(blk) 91 82 44 92
-                              Store 97 96
-                              MemoryBarrier 88 98
-                              ControlBarrier 31 31 98
-             104:      6(int) Load 8(iid)
-             105:      6(int) Load 8(iid)
-             106:      6(int) ISub 105 44
-             107:     41(ptr) AccessChain 103(blk2) 106 39
-             108:   23(float) Load 107
-             110:   23(float) FAdd 108 109
-             111:     41(ptr) AccessChain 103(blk2) 104 39
-                              Store 111 110
-             112:      6(int) Load 8(iid)
-             118:     69(ptr) AccessChain 103(blk2) 112 44
-                              Store 118 117
-             119:      6(int) Load 8(iid)
-             120:      6(int) IAdd 119 44
-             121:      6(int) Load 18(gid)
+              70:     41(ptr) AccessChain 37(blk) 63 64 44 69
+              71:   23(float) CompositeExtract 68 0
+                              Store 70 71
+              72:     41(ptr) AccessChain 37(blk) 63 64 44 31
+              73:   23(float) CompositeExtract 68 1
+                              Store 72 73
+              75:     41(ptr) AccessChain 37(blk) 63 64 44 74
+              76:   23(float) CompositeExtract 68 2
+                              Store 75 76
+              77:      6(int) Load 8(iid)
+              79:      6(int) SDiv 77 78
+              83:     82(ptr) AccessChain 37(blk) 79 78 52
+              84:   27(fvec4) Load 83
+              85:   27(fvec4) VectorShuffle 84 81 7 6 5 4
+                              Store 83 85
+              86:      6(int) Load 8(iid)
+              88:      6(int) Load 8(iid)
+              89:      6(int) SDiv 88 78
+              90:     41(ptr) AccessChain 37(blk) 89 78 52 74
+              91:   23(float) Load 90
+              92:     41(ptr) AccessChain 37(blk) 86 87 39 44 69
+                              Store 92 91
+              93:      6(int) Load 8(iid)
+              94:      6(int) IMul 93 78
+              95:      6(int) Load 18(gid)
+             100:     58(ptr) AccessChain 37(blk) 94 87 44 95
+                              Store 100 99
+                              MemoryBarrier 69 101
+                              ControlBarrier 31 31 101
+             107:      6(int) Load 8(iid)
+             108:      6(int) Load 8(iid)
+             109:      6(int) ISub 108 44
+             110:     41(ptr) AccessChain 106(blk2) 109 39
+             111:   23(float) Load 110
+             113:   23(float) FAdd 111 112
+             114:     41(ptr) AccessChain 106(blk2) 107 39
+                              Store 114 113
+             115:      6(int) Load 8(iid)
+             121:     82(ptr) AccessChain 106(blk2) 115 44
+                              Store 121 120
              122:      6(int) Load 8(iid)
-             123:     69(ptr) AccessChain 103(blk2) 122 44
-             124:   27(fvec4) Load 123
-             125:     69(ptr) AccessChain 103(blk2) 120 52 121
-                              Store 125 124
-             126:      6(int) Load 8(iid)
-             127:      6(int) IAdd 126 44
-             128:      6(int) Load 18(gid)
-             130:     41(ptr) AccessChain 103(blk2) 127 52 128 31
-                              Store 130 129
-             131:      6(int) Load 8(iid)
-             132:      6(int) IAdd 131 52
-             133:      6(int) Load 8(iid)
-             134:      6(int) IAdd 133 44
-             135:      6(int) Load 18(gid)
-             136:     69(ptr) AccessChain 103(blk2) 134 52 135
-             137:   27(fvec4) Load 136
-             138:     69(ptr) AccessChain 103(blk2) 132 52 64
-                              Store 138 137
-                              MemoryBarrier 88 98
-                              ControlBarrier 31 31 98
+             123:      6(int) IAdd 122 44
+             124:      6(int) Load 18(gid)
+             125:      6(int) Load 8(iid)
+             126:     82(ptr) AccessChain 106(blk2) 125 44
+             127:   27(fvec4) Load 126
+             128:     82(ptr) AccessChain 106(blk2) 123 52 124
+                              Store 128 127
+             129:      6(int) Load 8(iid)
+             130:      6(int) IAdd 129 44
+             131:      6(int) Load 18(gid)
+             133:     41(ptr) AccessChain 106(blk2) 130 52 131 31
+                              Store 133 132
+             134:      6(int) Load 8(iid)
+             135:      6(int) IAdd 134 52
+             136:      6(int) Load 8(iid)
+             137:      6(int) IAdd 136 44
+             138:      6(int) Load 18(gid)
+             139:     82(ptr) AccessChain 106(blk2) 137 52 138
+             140:   27(fvec4) Load 139
+             141:     82(ptr) AccessChain 106(blk2) 135 52 64
+                              Store 141 140
+                              MemoryBarrier 69 101
+                              ControlBarrier 31 31 101
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.400.frag.nanclamp.out b/Test/baseResults/spv.400.frag.nanclamp.out
index 57f4365..cf1ffb0 100644
--- a/Test/baseResults/spv.400.frag.nanclamp.out
+++ b/Test/baseResults/spv.400.frag.nanclamp.out
@@ -1,7 +1,7 @@
 spv.400.frag
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 1118
+// Id's are bound by 1122
 
                               Capability Shader
                               Capability Geometry
@@ -11,7 +11,7 @@
                               Capability SampledRect
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 13 1027 1033 1038 1050 1076 1097 1099 1105 1107 1116
+                              EntryPoint Fragment 4  "main" 13 1027 1033 1038 1054 1080 1101 1103 1109 1111 1120
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 400
                               SourceExtension  "GL_ARB_separate_shader_objects"
@@ -42,16 +42,16 @@
                               Name 1027  "i"
                               Name 1033  "c2D"
                               Name 1038  "gl_ClipDistance"
-                              Name 1050  "uoutp"
-                              Name 1054  "samp2dr"
-                              Name 1076  "ioutp"
-                              Name 1080  "isamp2DA"
-                              Name 1097  "gl_FragCoord"
-                              Name 1099  "vl2"
-                              Name 1105  "uo"
-                              Name 1107  "u"
-                              Name 1115  "id"
-                              Name 1116  "gl_PrimitiveID"
+                              Name 1054  "uoutp"
+                              Name 1058  "samp2dr"
+                              Name 1080  "ioutp"
+                              Name 1084  "isamp2DA"
+                              Name 1101  "gl_FragCoord"
+                              Name 1103  "vl2"
+                              Name 1109  "uo"
+                              Name 1111  "u"
+                              Name 1119  "id"
+                              Name 1120  "gl_PrimitiveID"
                               Decorate 13(outp) Location 1
                               Decorate 17(u2drs) DescriptorSet 0
                               Decorate 17(u2drs) Binding 3
@@ -61,19 +61,19 @@
                               Decorate 1027(i) Location 1
                               Decorate 1033(c2D) Location 0
                               Decorate 1038(gl_ClipDistance) BuiltIn ClipDistance
-                              Decorate 1050(uoutp) Location 3
-                              Decorate 1054(samp2dr) DescriptorSet 0
-                              Decorate 1054(samp2dr) Binding 1
-                              Decorate 1076(ioutp) Location 2
-                              Decorate 1080(isamp2DA) DescriptorSet 0
-                              Decorate 1080(isamp2DA) Binding 2
-                              Decorate 1097(gl_FragCoord) BuiltIn FragCoord
-                              Decorate 1099(vl2) Location 6
-                              Decorate 1105(uo) Location 0
-                              Decorate 1107(u) Flat
-                              Decorate 1107(u) Location 2
-                              Decorate 1116(gl_PrimitiveID) Flat
-                              Decorate 1116(gl_PrimitiveID) BuiltIn PrimitiveId
+                              Decorate 1054(uoutp) Location 3
+                              Decorate 1058(samp2dr) DescriptorSet 0
+                              Decorate 1058(samp2dr) Binding 1
+                              Decorate 1080(ioutp) Location 2
+                              Decorate 1084(isamp2DA) DescriptorSet 0
+                              Decorate 1084(isamp2DA) Binding 2
+                              Decorate 1101(gl_FragCoord) BuiltIn FragCoord
+                              Decorate 1103(vl2) Location 6
+                              Decorate 1109(uo) Location 0
+                              Decorate 1111(u) Flat
+                              Decorate 1111(u) Location 2
+                              Decorate 1120(gl_PrimitiveID) Flat
+                              Decorate 1120(gl_PrimitiveID) BuiltIn PrimitiveId
                2:             TypeVoid
                3:             TypeFunction 2
               10:             TypeFloat 32
@@ -161,46 +161,46 @@
 1038(gl_ClipDistance):   1037(ptr) Variable Input
             1039:             TypePointer Input 10(float)
             1043:             TypeVector 10(float) 3
-            1048:             TypeVector 32(int) 4
-            1049:             TypePointer Output 1048(ivec4)
-     1050(uoutp):   1049(ptr) Variable Output
-            1051:             TypeImage 32(int) Rect sampled format:Unknown
-            1052:             TypeSampledImage 1051
-            1053:             TypePointer UniformConstant 1052
-   1054(samp2dr):   1053(ptr) Variable UniformConstant
-            1057:     32(int) Constant 4
-            1058:             TypeArray 24(ivec2) 1057
-            1059:   24(ivec2) ConstantComposite 966 970
-            1060:     23(int) Constant 15
-            1061:     23(int) Constant 16
-            1062:   24(ivec2) ConstantComposite 1060 1061
-            1063:     23(int) Constant 4294967294
-            1064:     23(int) Constant 0
-            1065:   24(ivec2) ConstantComposite 1063 1064
-            1066:        1058 ConstantComposite 1059 27 1062 1065
-            1074:             TypeVector 23(int) 4
-            1075:             TypePointer Output 1074(ivec4)
-     1076(ioutp):   1075(ptr) Variable Output
-            1077:             TypeImage 23(int) 2D array sampled format:Unknown
-            1078:             TypeSampledImage 1077
-            1079:             TypePointer UniformConstant 1078
-  1080(isamp2DA):   1079(ptr) Variable UniformConstant
-            1082:   10(float) Constant 1036831949
-            1083: 1043(fvec3) ConstantComposite 1082 1082 1082
-            1084:   24(ivec2) ConstantComposite 966 966
-            1096:             TypePointer Input 11(fvec4)
-1097(gl_FragCoord):   1096(ptr) Variable Input
-       1099(vl2):   1096(ptr) Variable Input
-            1104:             TypePointer Output 32(int)
-        1105(uo):   1104(ptr) Variable Output
-            1106:             TypePointer Input 32(int)
-         1107(u):   1106(ptr) Variable Input
-            1114:             TypePointer Function 23(int)
-1116(gl_PrimitiveID):   1026(ptr) Variable Input
+            1052:             TypeVector 32(int) 4
+            1053:             TypePointer Output 1052(ivec4)
+     1054(uoutp):   1053(ptr) Variable Output
+            1055:             TypeImage 32(int) Rect sampled format:Unknown
+            1056:             TypeSampledImage 1055
+            1057:             TypePointer UniformConstant 1056
+   1058(samp2dr):   1057(ptr) Variable UniformConstant
+            1061:     32(int) Constant 4
+            1062:             TypeArray 24(ivec2) 1061
+            1063:   24(ivec2) ConstantComposite 966 970
+            1064:     23(int) Constant 15
+            1065:     23(int) Constant 16
+            1066:   24(ivec2) ConstantComposite 1064 1065
+            1067:     23(int) Constant 4294967294
+            1068:     23(int) Constant 0
+            1069:   24(ivec2) ConstantComposite 1067 1068
+            1070:        1062 ConstantComposite 1063 27 1066 1069
+            1078:             TypeVector 23(int) 4
+            1079:             TypePointer Output 1078(ivec4)
+     1080(ioutp):   1079(ptr) Variable Output
+            1081:             TypeImage 23(int) 2D array sampled format:Unknown
+            1082:             TypeSampledImage 1081
+            1083:             TypePointer UniformConstant 1082
+  1084(isamp2DA):   1083(ptr) Variable UniformConstant
+            1086:   10(float) Constant 1036831949
+            1087: 1043(fvec3) ConstantComposite 1086 1086 1086
+            1088:   24(ivec2) ConstantComposite 966 966
+            1100:             TypePointer Input 11(fvec4)
+1101(gl_FragCoord):   1100(ptr) Variable Input
+       1103(vl2):   1100(ptr) Variable Input
+            1108:             TypePointer Output 32(int)
+        1109(uo):   1108(ptr) Variable Output
+            1110:             TypePointer Input 32(int)
+         1111(u):   1110(ptr) Variable Input
+            1118:             TypePointer Function 23(int)
+1120(gl_PrimitiveID):   1026(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
          1019(v):   1018(ptr) Variable Function
-        1115(id):   1114(ptr) Variable Function
+        1119(id):   1118(ptr) Variable Function
             1028:     23(int) Load 1027(i)
             1030:   1029(ptr) AccessChain 1025(arrayedSampler) 1028
             1031:        1021 Load 1030
@@ -213,50 +213,56 @@
                               Store 1042 1041
             1044:   11(fvec4) Load 1019(v)
             1045: 1043(fvec3) VectorShuffle 1044 1044 1 2 3
-            1046:   11(fvec4) Load 13(outp)
-            1047:   11(fvec4) VectorShuffle 1046 1045 0 4 5 6
-                              Store 13(outp) 1047
-            1055:        1052 Load 1054(samp2dr)
-            1056:   20(fvec2) Load 1033(c2D)
-            1067: 1048(ivec4) ImageGather 1055 1056 970 ConstOffsets 1066
-                              Store 1050(uoutp) 1067
-            1068:   1029(ptr) AccessChain 1025(arrayedSampler) 1064
-            1069:        1021 Load 1068
-            1070:   20(fvec2) Load 1033(c2D)
-            1071:   11(fvec4) ImageGather 1069 1070 1064
-            1072:   11(fvec4) Load 13(outp)
-            1073:   11(fvec4) FAdd 1072 1071
-                              Store 13(outp) 1073
-            1081:        1078 Load 1080(isamp2DA)
-            1085: 1074(ivec4) ImageGather 1081 1083 25 ConstOffset 1084
-                              Store 1076(ioutp) 1085
-            1086:        1078 Load 1080(isamp2DA)
-            1087: 1074(ivec4) ImageGather 1086 1083 25 ConstOffset 1084
-            1088: 1074(ivec4) Load 1076(ioutp)
-            1089: 1074(ivec4) IAdd 1088 1087
-                              Store 1076(ioutp) 1089
-            1090:        1078 Load 1080(isamp2DA)
-            1091:     23(int) Load 1027(i)
-            1092:   24(ivec2) CompositeConstruct 1091 1091
-            1093: 1074(ivec4) ImageGather 1090 1083 1064 Offset 1092
-            1094: 1074(ivec4) Load 1076(ioutp)
-            1095: 1074(ivec4) IAdd 1094 1093
-                              Store 1076(ioutp) 1095
-            1098:   11(fvec4) Load 1097(gl_FragCoord)
-            1100:   11(fvec4) Load 1099(vl2)
-            1101:   11(fvec4) FAdd 1098 1100
-            1102:   11(fvec4) Load 13(outp)
-            1103:   11(fvec4) FAdd 1102 1101
-                              Store 13(outp) 1103
-            1108:     32(int) Load 1107(u)
-            1109:     23(int) Load 1027(i)
-            1110:     32(int) Bitcast 1109
-            1111:     32(int) UMod 1108 1110
-                              Store 1105(uo) 1111
-            1112:           2 FunctionCall 6(foo23()
-            1113:           2 FunctionCall 8(doubles()
-            1117:     23(int) Load 1116(gl_PrimitiveID)
-                              Store 1115(id) 1117
+            1046:     34(ptr) AccessChain 13(outp) 954
+            1047:   10(float) CompositeExtract 1045 0
+                              Store 1046 1047
+            1048:     34(ptr) AccessChain 13(outp) 958
+            1049:   10(float) CompositeExtract 1045 1
+                              Store 1048 1049
+            1050:     34(ptr) AccessChain 13(outp) 962
+            1051:   10(float) CompositeExtract 1045 2
+                              Store 1050 1051
+            1059:        1056 Load 1058(samp2dr)
+            1060:   20(fvec2) Load 1033(c2D)
+            1071: 1052(ivec4) ImageGather 1059 1060 970 ConstOffsets 1070
+                              Store 1054(uoutp) 1071
+            1072:   1029(ptr) AccessChain 1025(arrayedSampler) 1068
+            1073:        1021 Load 1072
+            1074:   20(fvec2) Load 1033(c2D)
+            1075:   11(fvec4) ImageGather 1073 1074 1068
+            1076:   11(fvec4) Load 13(outp)
+            1077:   11(fvec4) FAdd 1076 1075
+                              Store 13(outp) 1077
+            1085:        1082 Load 1084(isamp2DA)
+            1089: 1078(ivec4) ImageGather 1085 1087 25 ConstOffset 1088
+                              Store 1080(ioutp) 1089
+            1090:        1082 Load 1084(isamp2DA)
+            1091: 1078(ivec4) ImageGather 1090 1087 25 ConstOffset 1088
+            1092: 1078(ivec4) Load 1080(ioutp)
+            1093: 1078(ivec4) IAdd 1092 1091
+                              Store 1080(ioutp) 1093
+            1094:        1082 Load 1084(isamp2DA)
+            1095:     23(int) Load 1027(i)
+            1096:   24(ivec2) CompositeConstruct 1095 1095
+            1097: 1078(ivec4) ImageGather 1094 1087 1068 Offset 1096
+            1098: 1078(ivec4) Load 1080(ioutp)
+            1099: 1078(ivec4) IAdd 1098 1097
+                              Store 1080(ioutp) 1099
+            1102:   11(fvec4) Load 1101(gl_FragCoord)
+            1104:   11(fvec4) Load 1103(vl2)
+            1105:   11(fvec4) FAdd 1102 1104
+            1106:   11(fvec4) Load 13(outp)
+            1107:   11(fvec4) FAdd 1106 1105
+                              Store 13(outp) 1107
+            1112:     32(int) Load 1111(u)
+            1113:     23(int) Load 1027(i)
+            1114:     32(int) Bitcast 1113
+            1115:     32(int) UMod 1112 1114
+                              Store 1109(uo) 1115
+            1116:           2 FunctionCall 6(foo23()
+            1117:           2 FunctionCall 8(doubles()
+            1121:     23(int) Load 1120(gl_PrimitiveID)
+                              Store 1119(id) 1121
                               Return
                               FunctionEnd
        6(foo23():           2 Function None 3
diff --git a/Test/baseResults/spv.400.frag.out b/Test/baseResults/spv.400.frag.out
index 2e7b2f5..6786885 100644
--- a/Test/baseResults/spv.400.frag.out
+++ b/Test/baseResults/spv.400.frag.out
@@ -2,7 +2,7 @@
 Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 1118
+// Id's are bound by 1122
 
                               Capability Shader
                               Capability Geometry
@@ -12,7 +12,7 @@
                               Capability SampledRect
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 13 1027 1033 1038 1050 1076 1097 1099 1105 1107 1116
+                              EntryPoint Fragment 4  "main" 13 1027 1033 1038 1054 1080 1101 1103 1109 1111 1120
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 400
                               SourceExtension  "GL_ARB_separate_shader_objects"
@@ -43,16 +43,16 @@
                               Name 1027  "i"
                               Name 1033  "c2D"
                               Name 1038  "gl_ClipDistance"
-                              Name 1050  "uoutp"
-                              Name 1054  "samp2dr"
-                              Name 1076  "ioutp"
-                              Name 1080  "isamp2DA"
-                              Name 1097  "gl_FragCoord"
-                              Name 1099  "vl2"
-                              Name 1105  "uo"
-                              Name 1107  "u"
-                              Name 1115  "id"
-                              Name 1116  "gl_PrimitiveID"
+                              Name 1054  "uoutp"
+                              Name 1058  "samp2dr"
+                              Name 1080  "ioutp"
+                              Name 1084  "isamp2DA"
+                              Name 1101  "gl_FragCoord"
+                              Name 1103  "vl2"
+                              Name 1109  "uo"
+                              Name 1111  "u"
+                              Name 1119  "id"
+                              Name 1120  "gl_PrimitiveID"
                               Decorate 13(outp) Location 1
                               Decorate 17(u2drs) DescriptorSet 0
                               Decorate 17(u2drs) Binding 3
@@ -62,19 +62,19 @@
                               Decorate 1027(i) Location 1
                               Decorate 1033(c2D) Location 0
                               Decorate 1038(gl_ClipDistance) BuiltIn ClipDistance
-                              Decorate 1050(uoutp) Location 3
-                              Decorate 1054(samp2dr) DescriptorSet 0
-                              Decorate 1054(samp2dr) Binding 1
-                              Decorate 1076(ioutp) Location 2
-                              Decorate 1080(isamp2DA) DescriptorSet 0
-                              Decorate 1080(isamp2DA) Binding 2
-                              Decorate 1097(gl_FragCoord) BuiltIn FragCoord
-                              Decorate 1099(vl2) Location 6
-                              Decorate 1105(uo) Location 0
-                              Decorate 1107(u) Flat
-                              Decorate 1107(u) Location 2
-                              Decorate 1116(gl_PrimitiveID) Flat
-                              Decorate 1116(gl_PrimitiveID) BuiltIn PrimitiveId
+                              Decorate 1054(uoutp) Location 3
+                              Decorate 1058(samp2dr) DescriptorSet 0
+                              Decorate 1058(samp2dr) Binding 1
+                              Decorate 1080(ioutp) Location 2
+                              Decorate 1084(isamp2DA) DescriptorSet 0
+                              Decorate 1084(isamp2DA) Binding 2
+                              Decorate 1101(gl_FragCoord) BuiltIn FragCoord
+                              Decorate 1103(vl2) Location 6
+                              Decorate 1109(uo) Location 0
+                              Decorate 1111(u) Flat
+                              Decorate 1111(u) Location 2
+                              Decorate 1120(gl_PrimitiveID) Flat
+                              Decorate 1120(gl_PrimitiveID) BuiltIn PrimitiveId
                2:             TypeVoid
                3:             TypeFunction 2
               10:             TypeFloat 32
@@ -162,46 +162,46 @@
 1038(gl_ClipDistance):   1037(ptr) Variable Input
             1039:             TypePointer Input 10(float)
             1043:             TypeVector 10(float) 3
-            1048:             TypeVector 32(int) 4
-            1049:             TypePointer Output 1048(ivec4)
-     1050(uoutp):   1049(ptr) Variable Output
-            1051:             TypeImage 32(int) Rect sampled format:Unknown
-            1052:             TypeSampledImage 1051
-            1053:             TypePointer UniformConstant 1052
-   1054(samp2dr):   1053(ptr) Variable UniformConstant
-            1057:     32(int) Constant 4
-            1058:             TypeArray 24(ivec2) 1057
-            1059:   24(ivec2) ConstantComposite 966 970
-            1060:     23(int) Constant 15
-            1061:     23(int) Constant 16
-            1062:   24(ivec2) ConstantComposite 1060 1061
-            1063:     23(int) Constant 4294967294
-            1064:     23(int) Constant 0
-            1065:   24(ivec2) ConstantComposite 1063 1064
-            1066:        1058 ConstantComposite 1059 27 1062 1065
-            1074:             TypeVector 23(int) 4
-            1075:             TypePointer Output 1074(ivec4)
-     1076(ioutp):   1075(ptr) Variable Output
-            1077:             TypeImage 23(int) 2D array sampled format:Unknown
-            1078:             TypeSampledImage 1077
-            1079:             TypePointer UniformConstant 1078
-  1080(isamp2DA):   1079(ptr) Variable UniformConstant
-            1082:   10(float) Constant 1036831949
-            1083: 1043(fvec3) ConstantComposite 1082 1082 1082
-            1084:   24(ivec2) ConstantComposite 966 966
-            1096:             TypePointer Input 11(fvec4)
-1097(gl_FragCoord):   1096(ptr) Variable Input
-       1099(vl2):   1096(ptr) Variable Input
-            1104:             TypePointer Output 32(int)
-        1105(uo):   1104(ptr) Variable Output
-            1106:             TypePointer Input 32(int)
-         1107(u):   1106(ptr) Variable Input
-            1114:             TypePointer Function 23(int)
-1116(gl_PrimitiveID):   1026(ptr) Variable Input
+            1052:             TypeVector 32(int) 4
+            1053:             TypePointer Output 1052(ivec4)
+     1054(uoutp):   1053(ptr) Variable Output
+            1055:             TypeImage 32(int) Rect sampled format:Unknown
+            1056:             TypeSampledImage 1055
+            1057:             TypePointer UniformConstant 1056
+   1058(samp2dr):   1057(ptr) Variable UniformConstant
+            1061:     32(int) Constant 4
+            1062:             TypeArray 24(ivec2) 1061
+            1063:   24(ivec2) ConstantComposite 966 970
+            1064:     23(int) Constant 15
+            1065:     23(int) Constant 16
+            1066:   24(ivec2) ConstantComposite 1064 1065
+            1067:     23(int) Constant 4294967294
+            1068:     23(int) Constant 0
+            1069:   24(ivec2) ConstantComposite 1067 1068
+            1070:        1062 ConstantComposite 1063 27 1066 1069
+            1078:             TypeVector 23(int) 4
+            1079:             TypePointer Output 1078(ivec4)
+     1080(ioutp):   1079(ptr) Variable Output
+            1081:             TypeImage 23(int) 2D array sampled format:Unknown
+            1082:             TypeSampledImage 1081
+            1083:             TypePointer UniformConstant 1082
+  1084(isamp2DA):   1083(ptr) Variable UniformConstant
+            1086:   10(float) Constant 1036831949
+            1087: 1043(fvec3) ConstantComposite 1086 1086 1086
+            1088:   24(ivec2) ConstantComposite 966 966
+            1100:             TypePointer Input 11(fvec4)
+1101(gl_FragCoord):   1100(ptr) Variable Input
+       1103(vl2):   1100(ptr) Variable Input
+            1108:             TypePointer Output 32(int)
+        1109(uo):   1108(ptr) Variable Output
+            1110:             TypePointer Input 32(int)
+         1111(u):   1110(ptr) Variable Input
+            1118:             TypePointer Function 23(int)
+1120(gl_PrimitiveID):   1026(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
          1019(v):   1018(ptr) Variable Function
-        1115(id):   1114(ptr) Variable Function
+        1119(id):   1118(ptr) Variable Function
             1028:     23(int) Load 1027(i)
             1030:   1029(ptr) AccessChain 1025(arrayedSampler) 1028
             1031:        1021 Load 1030
@@ -214,50 +214,56 @@
                               Store 1042 1041
             1044:   11(fvec4) Load 1019(v)
             1045: 1043(fvec3) VectorShuffle 1044 1044 1 2 3
-            1046:   11(fvec4) Load 13(outp)
-            1047:   11(fvec4) VectorShuffle 1046 1045 0 4 5 6
-                              Store 13(outp) 1047
-            1055:        1052 Load 1054(samp2dr)
-            1056:   20(fvec2) Load 1033(c2D)
-            1067: 1048(ivec4) ImageGather 1055 1056 970 ConstOffsets 1066
-                              Store 1050(uoutp) 1067
-            1068:   1029(ptr) AccessChain 1025(arrayedSampler) 1064
-            1069:        1021 Load 1068
-            1070:   20(fvec2) Load 1033(c2D)
-            1071:   11(fvec4) ImageGather 1069 1070 1064
-            1072:   11(fvec4) Load 13(outp)
-            1073:   11(fvec4) FAdd 1072 1071
-                              Store 13(outp) 1073
-            1081:        1078 Load 1080(isamp2DA)
-            1085: 1074(ivec4) ImageGather 1081 1083 25 ConstOffset 1084
-                              Store 1076(ioutp) 1085
-            1086:        1078 Load 1080(isamp2DA)
-            1087: 1074(ivec4) ImageGather 1086 1083 25 ConstOffset 1084
-            1088: 1074(ivec4) Load 1076(ioutp)
-            1089: 1074(ivec4) IAdd 1088 1087
-                              Store 1076(ioutp) 1089
-            1090:        1078 Load 1080(isamp2DA)
-            1091:     23(int) Load 1027(i)
-            1092:   24(ivec2) CompositeConstruct 1091 1091
-            1093: 1074(ivec4) ImageGather 1090 1083 1064 Offset 1092
-            1094: 1074(ivec4) Load 1076(ioutp)
-            1095: 1074(ivec4) IAdd 1094 1093
-                              Store 1076(ioutp) 1095
-            1098:   11(fvec4) Load 1097(gl_FragCoord)
-            1100:   11(fvec4) Load 1099(vl2)
-            1101:   11(fvec4) FAdd 1098 1100
-            1102:   11(fvec4) Load 13(outp)
-            1103:   11(fvec4) FAdd 1102 1101
-                              Store 13(outp) 1103
-            1108:     32(int) Load 1107(u)
-            1109:     23(int) Load 1027(i)
-            1110:     32(int) Bitcast 1109
-            1111:     32(int) UMod 1108 1110
-                              Store 1105(uo) 1111
-            1112:           2 FunctionCall 6(foo23()
-            1113:           2 FunctionCall 8(doubles()
-            1117:     23(int) Load 1116(gl_PrimitiveID)
-                              Store 1115(id) 1117
+            1046:     34(ptr) AccessChain 13(outp) 954
+            1047:   10(float) CompositeExtract 1045 0
+                              Store 1046 1047
+            1048:     34(ptr) AccessChain 13(outp) 958
+            1049:   10(float) CompositeExtract 1045 1
+                              Store 1048 1049
+            1050:     34(ptr) AccessChain 13(outp) 962
+            1051:   10(float) CompositeExtract 1045 2
+                              Store 1050 1051
+            1059:        1056 Load 1058(samp2dr)
+            1060:   20(fvec2) Load 1033(c2D)
+            1071: 1052(ivec4) ImageGather 1059 1060 970 ConstOffsets 1070
+                              Store 1054(uoutp) 1071
+            1072:   1029(ptr) AccessChain 1025(arrayedSampler) 1068
+            1073:        1021 Load 1072
+            1074:   20(fvec2) Load 1033(c2D)
+            1075:   11(fvec4) ImageGather 1073 1074 1068
+            1076:   11(fvec4) Load 13(outp)
+            1077:   11(fvec4) FAdd 1076 1075
+                              Store 13(outp) 1077
+            1085:        1082 Load 1084(isamp2DA)
+            1089: 1078(ivec4) ImageGather 1085 1087 25 ConstOffset 1088
+                              Store 1080(ioutp) 1089
+            1090:        1082 Load 1084(isamp2DA)
+            1091: 1078(ivec4) ImageGather 1090 1087 25 ConstOffset 1088
+            1092: 1078(ivec4) Load 1080(ioutp)
+            1093: 1078(ivec4) IAdd 1092 1091
+                              Store 1080(ioutp) 1093
+            1094:        1082 Load 1084(isamp2DA)
+            1095:     23(int) Load 1027(i)
+            1096:   24(ivec2) CompositeConstruct 1095 1095
+            1097: 1078(ivec4) ImageGather 1094 1087 1068 Offset 1096
+            1098: 1078(ivec4) Load 1080(ioutp)
+            1099: 1078(ivec4) IAdd 1098 1097
+                              Store 1080(ioutp) 1099
+            1102:   11(fvec4) Load 1101(gl_FragCoord)
+            1104:   11(fvec4) Load 1103(vl2)
+            1105:   11(fvec4) FAdd 1102 1104
+            1106:   11(fvec4) Load 13(outp)
+            1107:   11(fvec4) FAdd 1106 1105
+                              Store 13(outp) 1107
+            1112:     32(int) Load 1111(u)
+            1113:     23(int) Load 1027(i)
+            1114:     32(int) Bitcast 1113
+            1115:     32(int) UMod 1112 1114
+                              Store 1109(uo) 1115
+            1116:           2 FunctionCall 6(foo23()
+            1117:           2 FunctionCall 8(doubles()
+            1121:     23(int) Load 1120(gl_PrimitiveID)
+                              Store 1119(id) 1121
                               Return
                               FunctionEnd
        6(foo23():           2 Function None 3
diff --git a/Test/baseResults/spv.AnyHitShaderMotion.rahit.out b/Test/baseResults/spv.AnyHitShaderMotion.rahit.out
new file mode 100644
index 0000000..f9e1e1b
--- /dev/null
+++ b/Test/baseResults/spv.AnyHitShaderMotion.rahit.out
@@ -0,0 +1,33 @@
+spv.AnyHitShaderMotion.rahit
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 14
+
+                              Capability RayTracingKHR
+                              Capability RayTracingMotionBlurNV
+                              Extension  "SPV_KHR_ray_tracing"
+                              Extension  "SPV_NV_ray_tracing_motion_blur"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint AnyHitKHR 4  "main" 10
+                              Source GLSL 460
+                              SourceExtension  "GL_NV_ray_tracing_motion_blur"
+                              Name 4  "main"
+                              Name 8  "time"
+                              Name 10  "gl_CurrentRayTimeNV"
+                              Decorate 10(gl_CurrentRayTimeNV) BuiltIn CurrentRayTimeNV
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypePointer Function 6(float)
+               9:             TypePointer Input 6(float)
+10(gl_CurrentRayTimeNV):      9(ptr) Variable Input
+              12:    6(float) Constant 1056964608
+         4(main):           2 Function None 3
+               5:             Label
+         8(time):      7(ptr) Variable Function
+              11:    6(float) Load 10(gl_CurrentRayTimeNV)
+              13:    6(float) FAdd 11 12
+                              Store 8(time) 13
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out b/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out
new file mode 100644
index 0000000..e89abb4
--- /dev/null
+++ b/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out
@@ -0,0 +1,59 @@
+spv.ClosestHitShaderMotion.rchit
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 33
+
+                              Capability RayTracingKHR
+                              Capability RayTracingMotionBlurNV
+                              Extension  "SPV_KHR_ray_tracing"
+                              Extension  "SPV_NV_ray_tracing_motion_blur"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint ClosestHitKHR 4  "main" 10 16 32
+                              Source GLSL 460
+                              SourceExtension  "GL_EXT_ray_tracing"
+                              SourceExtension  "GL_NV_ray_tracing_motion_blur"
+                              Name 4  "main"
+                              Name 8  "time"
+                              Name 10  "gl_CurrentRayTimeNV"
+                              Name 16  "accEXT"
+                              Name 32  "incomingPayloadEXT"
+                              Decorate 10(gl_CurrentRayTimeNV) BuiltIn CurrentRayTimeNV
+                              Decorate 16(accEXT) DescriptorSet 0
+                              Decorate 16(accEXT) Binding 0
+                              Decorate 32(incomingPayloadEXT) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypePointer Function 6(float)
+               9:             TypePointer Input 6(float)
+10(gl_CurrentRayTimeNV):      9(ptr) Variable Input
+              12:    6(float) Constant 1056964608
+              14:             TypeAccelerationStructureKHR
+              15:             TypePointer UniformConstant 14
+      16(accEXT):     15(ptr) Variable UniformConstant
+              18:             TypeInt 32 0
+              19:     18(int) Constant 0
+              20:     18(int) Constant 1
+              21:     18(int) Constant 2
+              22:     18(int) Constant 3
+              23:             TypeVector 6(float) 3
+              24:   23(fvec3) ConstantComposite 12 12 12
+              25:    6(float) Constant 1065353216
+              26:   23(fvec3) ConstantComposite 25 25 25
+              27:    6(float) Constant 1061158912
+              28:             TypeInt 32 1
+              29:     28(int) Constant 0
+              30:             TypeVector 6(float) 4
+              31:             TypePointer IncomingRayPayloadKHR 30(fvec4)
+32(incomingPayloadEXT):     31(ptr) Variable IncomingRayPayloadKHR
+         4(main):           2 Function None 3
+               5:             Label
+         8(time):      7(ptr) Variable Function
+              11:    6(float) Load 10(gl_CurrentRayTimeNV)
+              13:    6(float) FAdd 11 12
+                              Store 8(time) 13
+              17:          14 Load 16(accEXT)
+                              TraceRayMotionNV 17 19 20 21 22 19 24 12 26 27 25 32(incomingPayloadEXT)
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.IntersectShaderMotion.rint.out b/Test/baseResults/spv.IntersectShaderMotion.rint.out
new file mode 100644
index 0000000..f77c9a8
--- /dev/null
+++ b/Test/baseResults/spv.IntersectShaderMotion.rint.out
@@ -0,0 +1,33 @@
+spv.IntersectShaderMotion.rint
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 14
+
+                              Capability RayTracingKHR
+                              Capability RayTracingMotionBlurNV
+                              Extension  "SPV_KHR_ray_tracing"
+                              Extension  "SPV_NV_ray_tracing_motion_blur"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint IntersectionKHR 4  "main" 10
+                              Source GLSL 460
+                              SourceExtension  "GL_NV_ray_tracing_motion_blur"
+                              Name 4  "main"
+                              Name 8  "time"
+                              Name 10  "gl_CurrentRayTimeNV"
+                              Decorate 10(gl_CurrentRayTimeNV) BuiltIn CurrentRayTimeNV
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypePointer Function 6(float)
+               9:             TypePointer Input 6(float)
+10(gl_CurrentRayTimeNV):      9(ptr) Variable Input
+              12:    6(float) Constant 1056964608
+         4(main):           2 Function None 3
+               5:             Label
+         8(time):      7(ptr) Variable Function
+              11:    6(float) Load 10(gl_CurrentRayTimeNV)
+              13:    6(float) FAdd 11 12
+                              Store 8(time) 13
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.MissShaderMotion.rmiss.out b/Test/baseResults/spv.MissShaderMotion.rmiss.out
new file mode 100644
index 0000000..2f18338
--- /dev/null
+++ b/Test/baseResults/spv.MissShaderMotion.rmiss.out
@@ -0,0 +1,59 @@
+spv.MissShaderMotion.rmiss
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 33
+
+                              Capability RayTracingKHR
+                              Capability RayTracingMotionBlurNV
+                              Extension  "SPV_KHR_ray_tracing"
+                              Extension  "SPV_NV_ray_tracing_motion_blur"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint MissKHR 4  "main" 10 16 32
+                              Source GLSL 460
+                              SourceExtension  "GL_EXT_ray_tracing"
+                              SourceExtension  "GL_NV_ray_tracing_motion_blur"
+                              Name 4  "main"
+                              Name 8  "time"
+                              Name 10  "gl_CurrentRayTimeNV"
+                              Name 16  "accEXT"
+                              Name 32  "localPayloadEXT"
+                              Decorate 10(gl_CurrentRayTimeNV) BuiltIn CurrentRayTimeNV
+                              Decorate 16(accEXT) DescriptorSet 0
+                              Decorate 16(accEXT) Binding 0
+                              Decorate 32(localPayloadEXT) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypePointer Function 6(float)
+               9:             TypePointer Input 6(float)
+10(gl_CurrentRayTimeNV):      9(ptr) Variable Input
+              12:    6(float) Constant 1056964608
+              14:             TypeAccelerationStructureKHR
+              15:             TypePointer UniformConstant 14
+      16(accEXT):     15(ptr) Variable UniformConstant
+              18:             TypeInt 32 0
+              19:     18(int) Constant 0
+              20:     18(int) Constant 1
+              21:     18(int) Constant 2
+              22:     18(int) Constant 3
+              23:             TypeVector 6(float) 3
+              24:   23(fvec3) ConstantComposite 12 12 12
+              25:    6(float) Constant 1065353216
+              26:   23(fvec3) ConstantComposite 25 25 25
+              27:    6(float) Constant 1061158912
+              28:             TypeInt 32 1
+              29:     28(int) Constant 0
+              30:             TypeVector 6(float) 4
+              31:             TypePointer RayPayloadKHR 30(fvec4)
+32(localPayloadEXT):     31(ptr) Variable RayPayloadKHR
+         4(main):           2 Function None 3
+               5:             Label
+         8(time):      7(ptr) Variable Function
+              11:    6(float) Load 10(gl_CurrentRayTimeNV)
+              13:    6(float) FAdd 11 12
+                              Store 8(time) 13
+              17:          14 Load 16(accEXT)
+                              TraceRayMotionNV 17 19 20 21 22 19 24 12 26 27 25 32(localPayloadEXT)
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.Operations.frag.out b/Test/baseResults/spv.Operations.frag.out
index a856e6e..fc8e241 100644
--- a/Test/baseResults/spv.Operations.frag.out
+++ b/Test/baseResults/spv.Operations.frag.out
@@ -1,12 +1,12 @@
 spv.Operations.frag
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 583
+// Id's are bound by 591
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 11 22 220 296 314 539 580
+                              EntryPoint Fragment 4  "main" 11 22 220 296 314 547 588
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 450
                               Name 4  "main"
@@ -26,13 +26,13 @@
                               Name 324  "lsb"
                               Name 325  "swizzleTemp"
                               Name 326  "ResType"
-                              Name 359  "b"
-                              Name 396  "ub42"
-                              Name 539  "FragColor"
-                              Name 557  "m1"
-                              Name 564  "m2"
-                              Name 580  "uiv4"
-                              Name 582  "ub"
+                              Name 367  "b"
+                              Name 404  "ub42"
+                              Name 547  "FragColor"
+                              Name 565  "m1"
+                              Name 572  "m2"
+                              Name 588  "uiv4"
+                              Name 590  "ub"
                               Decorate 11(uv4) Location 1
                               Decorate 22(ui) Flat
                               Decorate 22(ui) Location 3
@@ -41,9 +41,9 @@
                               Decorate 296(uui) Location 5
                               Decorate 314(uuv4) Flat
                               Decorate 314(uuv4) Location 4
-                              Decorate 539(FragColor) Location 0
-                              Decorate 580(uiv4) Flat
-                              Decorate 580(uiv4) Location 0
+                              Decorate 547(FragColor) Location 0
+                              Decorate 588(uiv4) Flat
+                              Decorate 588(uiv4) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -74,34 +74,34 @@
              320:             TypePointer Function 312(ivec4)
              322:             TypePointer Function 315(ivec3)
     326(ResType):             TypeStruct 315(ivec3) 315(ivec3)
-             338:    141(int) Constant 1
-             342:    141(int) Constant 2
-             358:             TypePointer Function 186(bool)
-       396(ub42):    188(ptr) Variable Private
-             452:     18(int) Constant 2
-             459:     18(int) Constant 1
-             489:             TypeVector 6(float) 3
-             508:    6(float) Constant 1073741824
-             515:    6(float) Constant 1065353216
-             520:     18(int) Constant 66
-             526:     18(int) Constant 17
-             538:             TypePointer Output 7(fvec4)
-  539(FragColor):    538(ptr) Variable Output
-             555:             TypeMatrix 7(fvec4) 4
-             556:             TypePointer Function 555
-             558:    6(float) Constant 0
-             559:    7(fvec4) ConstantComposite 515 558 558 558
-             560:    7(fvec4) ConstantComposite 558 515 558 558
-             561:    7(fvec4) ConstantComposite 558 558 515 558
-             562:    7(fvec4) ConstantComposite 558 558 558 515
-             563:         555 ConstantComposite 559 560 561 562
-             565:    7(fvec4) ConstantComposite 558 558 558 558
-             566:         555 ConstantComposite 565 565 565 565
-             578:             TypeVector 18(int) 4
-             579:             TypePointer Input 578(ivec4)
-       580(uiv4):    579(ptr) Variable Input
-             581:             TypePointer Private 186(bool)
-         582(ub):    581(ptr) Variable Private
+             333:    141(int) Constant 1
+             336:    141(int) Constant 2
+             366:             TypePointer Function 186(bool)
+       404(ub42):    188(ptr) Variable Private
+             460:     18(int) Constant 2
+             467:     18(int) Constant 1
+             497:             TypeVector 6(float) 3
+             516:    6(float) Constant 1073741824
+             523:    6(float) Constant 1065353216
+             528:     18(int) Constant 66
+             534:     18(int) Constant 17
+             546:             TypePointer Output 7(fvec4)
+  547(FragColor):    546(ptr) Variable Output
+             563:             TypeMatrix 7(fvec4) 4
+             564:             TypePointer Function 563
+             566:    6(float) Constant 0
+             567:    7(fvec4) ConstantComposite 523 566 566 566
+             568:    7(fvec4) ConstantComposite 566 523 566 566
+             569:    7(fvec4) ConstantComposite 566 566 523 566
+             570:    7(fvec4) ConstantComposite 566 566 566 523
+             571:         563 ConstantComposite 567 568 569 570
+             573:    7(fvec4) ConstantComposite 566 566 566 566
+             574:         563 ConstantComposite 573 573 573 573
+             586:             TypeVector 18(int) 4
+             587:             TypePointer Input 586(ivec4)
+       588(uiv4):    587(ptr) Variable Input
+             589:             TypePointer Private 186(bool)
+         590(ub):    589(ptr) Variable Private
          4(main):           2 Function None 3
                5:             Label
             9(v):      8(ptr) Variable Function
@@ -113,11 +113,11 @@
 323(swizzleTemp):    322(ptr) Variable Function
         324(lsb):    320(ptr) Variable Function
 325(swizzleTemp):    322(ptr) Variable Function
-          359(b):    358(ptr) Variable Function
-             541:      8(ptr) Variable Function
-         557(m1):    556(ptr) Variable Function
-         564(m2):    556(ptr) Variable Function
-             568:    556(ptr) Variable Function
+          367(b):    366(ptr) Variable Function
+             549:      8(ptr) Variable Function
+         565(m1):    564(ptr) Variable Function
+         572(m2):    564(ptr) Variable Function
+             576:    564(ptr) Variable Function
               12:    7(fvec4) Load 11(uv4)
               13:    7(fvec4) ExtInst 1(GLSL.std.450) 11(Radians) 12
                               Store 9(v) 13
@@ -469,306 +469,318 @@
              329:  315(ivec3) CompositeExtract 327 1
                               Store 323(swizzleTemp) 329
              330:  315(ivec3) Load 323(swizzleTemp)
-             331:  312(ivec4) Load 321(msb)
-             332:  312(ivec4) VectorShuffle 331 330 4 5 6 3
-                              Store 321(msb) 332
-             333:  315(ivec3) Load 325(swizzleTemp)
-             334:  312(ivec4) Load 324(lsb)
-             335:  312(ivec4) VectorShuffle 334 333 4 5 6 3
-                              Store 324(lsb) 335
-             336:    292(ptr) AccessChain 321(msb) 142
-             337:    141(int) Load 336
-             339:    292(ptr) AccessChain 321(msb) 338
-             340:    141(int) Load 339
-             341:    141(int) IAdd 337 340
-             343:    292(ptr) AccessChain 321(msb) 342
-             344:    141(int) Load 343
-             345:    141(int) IAdd 341 344
-             346:    141(int) Load 293(u)
-             347:    141(int) IAdd 346 345
-                              Store 293(u) 347
-             348:    292(ptr) AccessChain 324(lsb) 142
+             331:    292(ptr) AccessChain 321(msb) 142
+             332:    141(int) CompositeExtract 330 0
+                              Store 331 332
+             334:    292(ptr) AccessChain 321(msb) 333
+             335:    141(int) CompositeExtract 330 1
+                              Store 334 335
+             337:    292(ptr) AccessChain 321(msb) 336
+             338:    141(int) CompositeExtract 330 2
+                              Store 337 338
+             339:  315(ivec3) Load 325(swizzleTemp)
+             340:    292(ptr) AccessChain 324(lsb) 142
+             341:    141(int) CompositeExtract 339 0
+                              Store 340 341
+             342:    292(ptr) AccessChain 324(lsb) 333
+             343:    141(int) CompositeExtract 339 1
+                              Store 342 343
+             344:    292(ptr) AccessChain 324(lsb) 336
+             345:    141(int) CompositeExtract 339 2
+                              Store 344 345
+             346:    292(ptr) AccessChain 321(msb) 142
+             347:    141(int) Load 346
+             348:    292(ptr) AccessChain 321(msb) 333
              349:    141(int) Load 348
-             350:    292(ptr) AccessChain 324(lsb) 338
-             351:    141(int) Load 350
-             352:    141(int) IAdd 349 351
-             353:    292(ptr) AccessChain 324(lsb) 342
-             354:    141(int) Load 353
-             355:    141(int) IAdd 352 354
-             356:    141(int) Load 293(u)
-             357:    141(int) IAdd 356 355
-                              Store 293(u) 357
-             360:    6(float) Load 220(uf)
-             361:   186(bool) IsNan 360
-                              Store 359(b) 361
-             362:    6(float) Load 196(f)
-             363:   186(bool) IsInf 362
-                              Store 359(b) 363
-             364:    7(fvec4) Load 9(v)
-             365:    7(fvec4) Load 11(uv4)
-             366:  187(bvec4) FOrdLessThan 364 365
-             367:   186(bool) Any 366
-                              Store 359(b) 367
-             368:   186(bool) Load 359(b)
-                              SelectionMerge 370 None
-                              BranchConditional 368 369 370
-             369:               Label
-             371:    7(fvec4)   Load 9(v)
-             372:    7(fvec4)   Load 11(uv4)
-             373:  187(bvec4)   FOrdLessThanEqual 371 372
-             374:   186(bool)   Any 373
-                                Branch 370
-             370:             Label
-             375:   186(bool) Phi 368 5 374 369
-                              Store 359(b) 375
-             376:   186(bool) Load 359(b)
+             350:    141(int) IAdd 347 349
+             351:    292(ptr) AccessChain 321(msb) 336
+             352:    141(int) Load 351
+             353:    141(int) IAdd 350 352
+             354:    141(int) Load 293(u)
+             355:    141(int) IAdd 354 353
+                              Store 293(u) 355
+             356:    292(ptr) AccessChain 324(lsb) 142
+             357:    141(int) Load 356
+             358:    292(ptr) AccessChain 324(lsb) 333
+             359:    141(int) Load 358
+             360:    141(int) IAdd 357 359
+             361:    292(ptr) AccessChain 324(lsb) 336
+             362:    141(int) Load 361
+             363:    141(int) IAdd 360 362
+             364:    141(int) Load 293(u)
+             365:    141(int) IAdd 364 363
+                              Store 293(u) 365
+             368:    6(float) Load 220(uf)
+             369:   186(bool) IsNan 368
+                              Store 367(b) 369
+             370:    6(float) Load 196(f)
+             371:   186(bool) IsInf 370
+                              Store 367(b) 371
+             372:    7(fvec4) Load 9(v)
+             373:    7(fvec4) Load 11(uv4)
+             374:  187(bvec4) FOrdLessThan 372 373
+             375:   186(bool) Any 374
+                              Store 367(b) 375
+             376:   186(bool) Load 367(b)
                               SelectionMerge 378 None
                               BranchConditional 376 377 378
              377:               Label
              379:    7(fvec4)   Load 9(v)
              380:    7(fvec4)   Load 11(uv4)
-             381:  187(bvec4)   FOrdGreaterThan 379 380
+             381:  187(bvec4)   FOrdLessThanEqual 379 380
              382:   186(bool)   Any 381
                                 Branch 378
              378:             Label
-             383:   186(bool) Phi 376 370 382 377
-                              Store 359(b) 383
-             384:   186(bool) Load 359(b)
+             383:   186(bool) Phi 376 5 382 377
+                              Store 367(b) 383
+             384:   186(bool) Load 367(b)
                               SelectionMerge 386 None
                               BranchConditional 384 385 386
              385:               Label
              387:    7(fvec4)   Load 9(v)
              388:    7(fvec4)   Load 11(uv4)
-             389:  187(bvec4)   FOrdGreaterThanEqual 387 388
+             389:  187(bvec4)   FOrdGreaterThan 387 388
              390:   186(bool)   Any 389
                                 Branch 386
              386:             Label
              391:   186(bool) Phi 384 378 390 385
-                              Store 359(b) 391
-             392:   186(bool) Load 359(b)
+                              Store 367(b) 391
+             392:   186(bool) Load 367(b)
                               SelectionMerge 394 None
                               BranchConditional 392 393 394
              393:               Label
-             395:  187(bvec4)   Load 189(ub41)
-             397:  187(bvec4)   Load 396(ub42)
-             398:  187(bvec4)   LogicalEqual 395 397
-             399:   186(bool)   Any 398
+             395:    7(fvec4)   Load 9(v)
+             396:    7(fvec4)   Load 11(uv4)
+             397:  187(bvec4)   FOrdGreaterThanEqual 395 396
+             398:   186(bool)   Any 397
                                 Branch 394
              394:             Label
-             400:   186(bool) Phi 392 386 399 393
-                              Store 359(b) 400
-             401:   186(bool) Load 359(b)
-                              SelectionMerge 403 None
-                              BranchConditional 401 402 403
-             402:               Label
-             404:  187(bvec4)   Load 189(ub41)
-             405:  187(bvec4)   Load 396(ub42)
-             406:  187(bvec4)   LogicalNotEqual 404 405
+             399:   186(bool) Phi 392 386 398 393
+                              Store 367(b) 399
+             400:   186(bool) Load 367(b)
+                              SelectionMerge 402 None
+                              BranchConditional 400 401 402
+             401:               Label
+             403:  187(bvec4)   Load 189(ub41)
+             405:  187(bvec4)   Load 404(ub42)
+             406:  187(bvec4)   LogicalEqual 403 405
              407:   186(bool)   Any 406
-                                Branch 403
-             403:             Label
-             408:   186(bool) Phi 401 394 407 402
-                              Store 359(b) 408
-             409:   186(bool) Load 359(b)
-             410:  187(bvec4) Load 189(ub41)
-             411:   186(bool) Any 410
-             412:   186(bool) LogicalAnd 409 411
-                              Store 359(b) 412
-             413:   186(bool) Load 359(b)
-             414:  187(bvec4) Load 189(ub41)
-             415:   186(bool) All 414
-             416:   186(bool) LogicalAnd 413 415
-                              Store 359(b) 416
-             417:   186(bool) Load 359(b)
-                              SelectionMerge 419 None
-                              BranchConditional 417 418 419
-             418:               Label
-             420:  187(bvec4)   Load 189(ub41)
-             421:  187(bvec4)   LogicalNot 420
-             422:   186(bool)   Any 421
-                                Branch 419
-             419:             Label
-             423:   186(bool) Phi 417 403 422 418
-                              Store 359(b) 423
-             424:     18(int) Load 20(i)
-             425:     18(int) Load 22(ui)
-             426:     18(int) IAdd 424 425
-             427:     18(int) Load 20(i)
-             428:     18(int) IMul 426 427
-             429:     18(int) Load 22(ui)
-             430:     18(int) ISub 428 429
-             431:     18(int) Load 20(i)
-             432:     18(int) SDiv 430 431
-                              Store 20(i) 432
-             433:     18(int) Load 20(i)
-             434:     18(int) Load 22(ui)
-             435:     18(int) SMod 433 434
-                              Store 20(i) 435
-             436:     18(int) Load 20(i)
+                                Branch 402
+             402:             Label
+             408:   186(bool) Phi 400 394 407 401
+                              Store 367(b) 408
+             409:   186(bool) Load 367(b)
+                              SelectionMerge 411 None
+                              BranchConditional 409 410 411
+             410:               Label
+             412:  187(bvec4)   Load 189(ub41)
+             413:  187(bvec4)   Load 404(ub42)
+             414:  187(bvec4)   LogicalNotEqual 412 413
+             415:   186(bool)   Any 414
+                                Branch 411
+             411:             Label
+             416:   186(bool) Phi 409 402 415 410
+                              Store 367(b) 416
+             417:   186(bool) Load 367(b)
+             418:  187(bvec4) Load 189(ub41)
+             419:   186(bool) Any 418
+             420:   186(bool) LogicalAnd 417 419
+                              Store 367(b) 420
+             421:   186(bool) Load 367(b)
+             422:  187(bvec4) Load 189(ub41)
+             423:   186(bool) All 422
+             424:   186(bool) LogicalAnd 421 423
+                              Store 367(b) 424
+             425:   186(bool) Load 367(b)
+                              SelectionMerge 427 None
+                              BranchConditional 425 426 427
+             426:               Label
+             428:  187(bvec4)   Load 189(ub41)
+             429:  187(bvec4)   LogicalNot 428
+             430:   186(bool)   Any 429
+                                Branch 427
+             427:             Label
+             431:   186(bool) Phi 425 411 430 426
+                              Store 367(b) 431
+             432:     18(int) Load 20(i)
+             433:     18(int) Load 22(ui)
+             434:     18(int) IAdd 432 433
+             435:     18(int) Load 20(i)
+             436:     18(int) IMul 434 435
              437:     18(int) Load 22(ui)
-             438:   186(bool) IEqual 436 437
-             439:   186(bool) LogicalNot 438
-                              SelectionMerge 441 None
-                              BranchConditional 439 440 441
-             440:               Label
-             442:     18(int)   Load 20(i)
-             443:     18(int)   Load 22(ui)
-             444:   186(bool)   INotEqual 442 443
-                                SelectionMerge 446 None
-                                BranchConditional 444 445 446
-             445:                 Label
-             447:     18(int)     Load 20(i)
-             448:     18(int)     Load 22(ui)
-             449:   186(bool)     IEqual 447 448
-                                  Branch 446
-             446:               Label
-             450:   186(bool)   Phi 444 440 449 445
-             451:     18(int)   Load 20(i)
-             453:   186(bool)   INotEqual 451 452
-             454:   186(bool)   LogicalNotEqual 450 453
-                                Branch 441
-             441:             Label
-             455:   186(bool) Phi 438 419 454 446
-                              SelectionMerge 457 None
-                              BranchConditional 455 456 457
-             456:               Label
-             458:     18(int)   Load 20(i)
-             460:     18(int)   IAdd 458 459
-                                Store 20(i) 460
-                                Branch 457
-             457:             Label
-             461:    6(float) Load 220(uf)
-             462:    6(float) Load 220(uf)
-             463:    6(float) FAdd 461 462
-             464:    6(float) Load 220(uf)
-             465:    6(float) FMul 463 464
-             466:    6(float) Load 220(uf)
-             467:    6(float) FSub 465 466
-             468:    6(float) Load 220(uf)
-             469:    6(float) FDiv 467 468
-                              Store 196(f) 469
-             470:    7(fvec4) Load 9(v)
-             471:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 470
-             472:    6(float) Load 196(f)
-             473:    6(float) FAdd 472 471
-                              Store 196(f) 473
-             474:    7(fvec4) Load 9(v)
-             475:    7(fvec4) Load 9(v)
-             476:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 474 475
-             477:    6(float) Load 196(f)
-             478:    6(float) FAdd 477 476
-                              Store 196(f) 478
-             479:    7(fvec4) Load 9(v)
-             480:    7(fvec4) Load 9(v)
-             481:    6(float) Dot 479 480
-             482:    6(float) Load 196(f)
-             483:    6(float) FAdd 482 481
-                              Store 196(f) 483
-             484:    6(float) Load 196(f)
-             485:    6(float) Load 220(uf)
-             486:    6(float) FMul 484 485
-             487:    6(float) Load 196(f)
-             488:    6(float) FAdd 487 486
-                              Store 196(f) 488
-             490:    7(fvec4) Load 9(v)
-             491:  489(fvec3) VectorShuffle 490 490 0 1 2
-             492:    7(fvec4) Load 9(v)
-             493:  489(fvec3) VectorShuffle 492 492 0 1 2
-             494:  489(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 491 493
-             495:    6(float) CompositeExtract 494 0
-             496:    6(float) Load 196(f)
-             497:    6(float) FAdd 496 495
-                              Store 196(f) 497
-             498:    6(float) Load 196(f)
-             499:    6(float) Load 220(uf)
-             500:   186(bool) FOrdEqual 498 499
-             501:   186(bool) LogicalNot 500
-                              SelectionMerge 503 None
-                              BranchConditional 501 502 503
-             502:               Label
-             504:    6(float)   Load 196(f)
-             505:    6(float)   Load 220(uf)
-             506:   186(bool)   FUnordNotEqual 504 505
-             507:    6(float)   Load 196(f)
-             509:   186(bool)   FUnordNotEqual 507 508
-             510:   186(bool)   LogicalAnd 506 509
-                                Branch 503
-             503:             Label
-             511:   186(bool) Phi 500 457 510 502
-                              SelectionMerge 513 None
-                              BranchConditional 511 512 513
-             512:               Label
-             514:    6(float)   Load 196(f)
-             516:    6(float)   FAdd 514 515
-                                Store 196(f) 516
-                                Branch 513
-             513:             Label
-             517:     18(int) Load 22(ui)
-             518:     18(int) Load 20(i)
-             519:     18(int) BitwiseAnd 518 517
-                              Store 20(i) 519
-             521:     18(int) Load 20(i)
-             522:     18(int) BitwiseOr 521 520
-                              Store 20(i) 522
-             523:     18(int) Load 22(ui)
-             524:     18(int) Load 20(i)
-             525:     18(int) BitwiseXor 524 523
-                              Store 20(i) 525
-             527:     18(int) Load 20(i)
-             528:     18(int) SMod 527 526
-                              Store 20(i) 528
+             438:     18(int) ISub 436 437
+             439:     18(int) Load 20(i)
+             440:     18(int) SDiv 438 439
+                              Store 20(i) 440
+             441:     18(int) Load 20(i)
+             442:     18(int) Load 22(ui)
+             443:     18(int) SMod 441 442
+                              Store 20(i) 443
+             444:     18(int) Load 20(i)
+             445:     18(int) Load 22(ui)
+             446:   186(bool) IEqual 444 445
+             447:   186(bool) LogicalNot 446
+                              SelectionMerge 449 None
+                              BranchConditional 447 448 449
+             448:               Label
+             450:     18(int)   Load 20(i)
+             451:     18(int)   Load 22(ui)
+             452:   186(bool)   INotEqual 450 451
+                                SelectionMerge 454 None
+                                BranchConditional 452 453 454
+             453:                 Label
+             455:     18(int)     Load 20(i)
+             456:     18(int)     Load 22(ui)
+             457:   186(bool)     IEqual 455 456
+                                  Branch 454
+             454:               Label
+             458:   186(bool)   Phi 452 448 457 453
+             459:     18(int)   Load 20(i)
+             461:   186(bool)   INotEqual 459 460
+             462:   186(bool)   LogicalNotEqual 458 461
+                                Branch 449
+             449:             Label
+             463:   186(bool) Phi 446 427 462 454
+                              SelectionMerge 465 None
+                              BranchConditional 463 464 465
+             464:               Label
+             466:     18(int)   Load 20(i)
+             468:     18(int)   IAdd 466 467
+                                Store 20(i) 468
+                                Branch 465
+             465:             Label
+             469:    6(float) Load 220(uf)
+             470:    6(float) Load 220(uf)
+             471:    6(float) FAdd 469 470
+             472:    6(float) Load 220(uf)
+             473:    6(float) FMul 471 472
+             474:    6(float) Load 220(uf)
+             475:    6(float) FSub 473 474
+             476:    6(float) Load 220(uf)
+             477:    6(float) FDiv 475 476
+                              Store 196(f) 477
+             478:    7(fvec4) Load 9(v)
+             479:    6(float) ExtInst 1(GLSL.std.450) 66(Length) 478
+             480:    6(float) Load 196(f)
+             481:    6(float) FAdd 480 479
+                              Store 196(f) 481
+             482:    7(fvec4) Load 9(v)
+             483:    7(fvec4) Load 9(v)
+             484:    6(float) ExtInst 1(GLSL.std.450) 67(Distance) 482 483
+             485:    6(float) Load 196(f)
+             486:    6(float) FAdd 485 484
+                              Store 196(f) 486
+             487:    7(fvec4) Load 9(v)
+             488:    7(fvec4) Load 9(v)
+             489:    6(float) Dot 487 488
+             490:    6(float) Load 196(f)
+             491:    6(float) FAdd 490 489
+                              Store 196(f) 491
+             492:    6(float) Load 196(f)
+             493:    6(float) Load 220(uf)
+             494:    6(float) FMul 492 493
+             495:    6(float) Load 196(f)
+             496:    6(float) FAdd 495 494
+                              Store 196(f) 496
+             498:    7(fvec4) Load 9(v)
+             499:  497(fvec3) VectorShuffle 498 498 0 1 2
+             500:    7(fvec4) Load 9(v)
+             501:  497(fvec3) VectorShuffle 500 500 0 1 2
+             502:  497(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 499 501
+             503:    6(float) CompositeExtract 502 0
+             504:    6(float) Load 196(f)
+             505:    6(float) FAdd 504 503
+                              Store 196(f) 505
+             506:    6(float) Load 196(f)
+             507:    6(float) Load 220(uf)
+             508:   186(bool) FOrdEqual 506 507
+             509:   186(bool) LogicalNot 508
+                              SelectionMerge 511 None
+                              BranchConditional 509 510 511
+             510:               Label
+             512:    6(float)   Load 196(f)
+             513:    6(float)   Load 220(uf)
+             514:   186(bool)   FUnordNotEqual 512 513
+             515:    6(float)   Load 196(f)
+             517:   186(bool)   FUnordNotEqual 515 516
+             518:   186(bool)   LogicalAnd 514 517
+                                Branch 511
+             511:             Label
+             519:   186(bool) Phi 508 465 518 510
+                              SelectionMerge 521 None
+                              BranchConditional 519 520 521
+             520:               Label
+             522:    6(float)   Load 196(f)
+             524:    6(float)   FAdd 522 523
+                                Store 196(f) 524
+                                Branch 521
+             521:             Label
+             525:     18(int) Load 22(ui)
+             526:     18(int) Load 20(i)
+             527:     18(int) BitwiseAnd 526 525
+                              Store 20(i) 527
              529:     18(int) Load 20(i)
-             530:     18(int) ShiftRightArithmetic 529 452
+             530:     18(int) BitwiseOr 529 528
                               Store 20(i) 530
              531:     18(int) Load 22(ui)
              532:     18(int) Load 20(i)
-             533:     18(int) ShiftLeftLogical 532 531
+             533:     18(int) BitwiseXor 532 531
                               Store 20(i) 533
-             534:     18(int) Load 20(i)
-             535:     18(int) Not 534
-                              Store 20(i) 535
-             536:   186(bool) Load 359(b)
-             537:   186(bool) LogicalNot 536
-                              Store 359(b) 537
-             540:   186(bool) Load 359(b)
-                              SelectionMerge 543 None
-                              BranchConditional 540 542 552
-             542:               Label
-             544:     18(int)   Load 20(i)
-             545:    6(float)   ConvertSToF 544
-             546:    7(fvec4)   CompositeConstruct 545 545 545 545
-             547:    6(float)   Load 196(f)
-             548:    7(fvec4)   CompositeConstruct 547 547 547 547
-             549:    7(fvec4)   FAdd 546 548
-             550:    7(fvec4)   Load 9(v)
-             551:    7(fvec4)   FAdd 549 550
-                                Store 541 551
-                                Branch 543
-             552:               Label
-             553:    7(fvec4)   Load 9(v)
-                                Store 541 553
-                                Branch 543
-             543:             Label
-             554:    7(fvec4) Load 541
-                              Store 539(FragColor) 554
-                              Store 557(m1) 563
-                              Store 564(m2) 566
-             567:   186(bool) Load 359(b)
-                              SelectionMerge 570 None
-                              BranchConditional 567 569 572
-             569:               Label
-             571:         555   Load 557(m1)
-                                Store 568 571
-                                Branch 570
-             572:               Label
-             573:         555   Load 564(m2)
-                                Store 568 573
-                                Branch 570
-             570:             Label
-             574:      8(ptr) AccessChain 568 459
-             575:    7(fvec4) Load 574
-             576:    7(fvec4) Load 539(FragColor)
-             577:    7(fvec4) FAdd 576 575
-                              Store 539(FragColor) 577
+             535:     18(int) Load 20(i)
+             536:     18(int) SMod 535 534
+                              Store 20(i) 536
+             537:     18(int) Load 20(i)
+             538:     18(int) ShiftRightArithmetic 537 460
+                              Store 20(i) 538
+             539:     18(int) Load 22(ui)
+             540:     18(int) Load 20(i)
+             541:     18(int) ShiftLeftLogical 540 539
+                              Store 20(i) 541
+             542:     18(int) Load 20(i)
+             543:     18(int) Not 542
+                              Store 20(i) 543
+             544:   186(bool) Load 367(b)
+             545:   186(bool) LogicalNot 544
+                              Store 367(b) 545
+             548:   186(bool) Load 367(b)
+                              SelectionMerge 551 None
+                              BranchConditional 548 550 560
+             550:               Label
+             552:     18(int)   Load 20(i)
+             553:    6(float)   ConvertSToF 552
+             554:    7(fvec4)   CompositeConstruct 553 553 553 553
+             555:    6(float)   Load 196(f)
+             556:    7(fvec4)   CompositeConstruct 555 555 555 555
+             557:    7(fvec4)   FAdd 554 556
+             558:    7(fvec4)   Load 9(v)
+             559:    7(fvec4)   FAdd 557 558
+                                Store 549 559
+                                Branch 551
+             560:               Label
+             561:    7(fvec4)   Load 9(v)
+                                Store 549 561
+                                Branch 551
+             551:             Label
+             562:    7(fvec4) Load 549
+                              Store 547(FragColor) 562
+                              Store 565(m1) 571
+                              Store 572(m2) 574
+             575:   186(bool) Load 367(b)
+                              SelectionMerge 578 None
+                              BranchConditional 575 577 580
+             577:               Label
+             579:         563   Load 565(m1)
+                                Store 576 579
+                                Branch 578
+             580:               Label
+             581:         563   Load 572(m2)
+                                Store 576 581
+                                Branch 578
+             578:             Label
+             582:      8(ptr) AccessChain 576 467
+             583:    7(fvec4) Load 582
+             584:    7(fvec4) Load 547(FragColor)
+             585:    7(fvec4) FAdd 584 583
+                              Store 547(FragColor) 585
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.RayGenShader.rgen.out b/Test/baseResults/spv.RayGenShader.rgen.out
index f8f3fd6..b708537 100644
--- a/Test/baseResults/spv.RayGenShader.rgen.out
+++ b/Test/baseResults/spv.RayGenShader.rgen.out
@@ -31,8 +31,6 @@
                               MemberDecorate 37(block) 0 Offset 0
                               MemberDecorate 37(block) 1 Offset 16
                               Decorate 37(block) BufferBlock
-                              Decorate 39 DescriptorSet 0
-                              Decorate 39 Binding 2
                               Decorate 50(accNV1) DescriptorSet 0
                               Decorate 50(accNV1) Binding 1
                               Decorate 53(payload) Location 0
diff --git a/Test/baseResults/spv.RayGenShader11.rgen.out b/Test/baseResults/spv.RayGenShader11.rgen.out
index f6b79c5..48509b0 100644
--- a/Test/baseResults/spv.RayGenShader11.rgen.out
+++ b/Test/baseResults/spv.RayGenShader11.rgen.out
@@ -30,8 +30,6 @@
                               MemberDecorate 37(block) 0 Offset 0
                               MemberDecorate 37(block) 1 Offset 16
                               Decorate 37(block) Block
-                              Decorate 39 DescriptorSet 0
-                              Decorate 39 Binding 1
                               Decorate 52(payload) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.RayGenShaderArray.rgen.out b/Test/baseResults/spv.RayGenShaderArray.rgen.out
index 63a04b3..8ddfca9 100644
--- a/Test/baseResults/spv.RayGenShaderArray.rgen.out
+++ b/Test/baseResults/spv.RayGenShaderArray.rgen.out
@@ -37,8 +37,6 @@
                               MemberDecorate 34(block) 1 Offset 16
                               MemberDecorate 34(block) 2 Offset 28
                               Decorate 34(block) BufferBlock
-                              Decorate 36 DescriptorSet 0
-                              Decorate 36 Binding 2
                               Decorate 60(accNV1) DescriptorSet 0
                               Decorate 60(accNV1) Binding 1
                               Decorate 75 DecorationNonUniformEXT
diff --git a/Test/baseResults/spv.RayGenShaderMotion.rgen.out b/Test/baseResults/spv.RayGenShaderMotion.rgen.out
new file mode 100644
index 0000000..f9b9fa5
--- /dev/null
+++ b/Test/baseResults/spv.RayGenShaderMotion.rgen.out
@@ -0,0 +1,81 @@
+spv.RayGenShaderMotion.rgen
+// Module Version 10400
+// Generated by (magic number): 8000a
+// Id's are bound by 47
+
+                              Capability RayTracingKHR
+                              Capability RayTracingMotionBlurNV
+                              Extension  "SPV_KHR_ray_tracing"
+                              Extension  "SPV_NV_ray_tracing_motion_blur"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint RayGenerationKHR 4  "main" 11 21 29 46
+                              Source GLSL 460
+                              SourceExtension  "GL_EXT_ray_tracing"
+                              SourceExtension  "GL_NV_ray_tracing_motion_blur"
+                              Name 4  "main"
+                              Name 8  "lx"
+                              Name 11  "gl_LaunchIDEXT"
+                              Name 16  "ly"
+                              Name 20  "sx"
+                              Name 21  "gl_LaunchSizeEXT"
+                              Name 24  "sy"
+                              Name 29  "accEXT"
+                              Name 46  "payloadEXT"
+                              Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR
+                              Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR
+                              Decorate 29(accEXT) DescriptorSet 0
+                              Decorate 29(accEXT) Binding 0
+                              Decorate 46(payloadEXT) Location 0
+               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:             TypeAccelerationStructureKHR
+              28:             TypePointer UniformConstant 27
+      29(accEXT):     28(ptr) Variable UniformConstant
+              35:             TypeFloat 32
+              36:             TypeVector 35(float) 3
+              37:   35(float) Constant 1056964608
+              38:   36(fvec3) ConstantComposite 37 37 37
+              39:   35(float) Constant 1065353216
+              40:   36(fvec3) ConstantComposite 39 39 39
+              41:   35(float) Constant 1061158912
+              42:             TypeInt 32 1
+              43:     42(int) Constant 0
+              44:             TypeVector 35(float) 4
+              45:             TypePointer RayPayloadKHR 44(fvec4)
+  46(payloadEXT):     45(ptr) Variable RayPayloadKHR
+         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
+              30:          27 Load 29(accEXT)
+              31:      6(int) Load 8(lx)
+              32:      6(int) Load 16(ly)
+              33:      6(int) Load 20(sx)
+              34:      6(int) Load 24(sy)
+                              TraceRayMotionNV 30 31 32 33 34 12 38 37 40 41 37 46(payloadEXT)
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.accessChain.frag.out b/Test/baseResults/spv.accessChain.frag.out
index 753688f..379131b 100644
--- a/Test/baseResults/spv.accessChain.frag.out
+++ b/Test/baseResults/spv.accessChain.frag.out
@@ -1,12 +1,12 @@
 spv.accessChain.frag
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 222
+// Id's are bound by 228
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 69 170
+                              EntryPoint Fragment 4  "main" 69 176
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 420
                               Name 4  "main"
@@ -54,24 +54,24 @@
                               Name 64  "i"
                               Name 65  "comp"
                               Name 69  "OutColor"
-                              Name 165  "s"
-                              Name 170  "u"
-                              Name 171  "param"
-                              Name 175  "param"
-                              Name 179  "param"
-                              Name 183  "param"
-                              Name 187  "param"
-                              Name 191  "param"
-                              Name 195  "param"
-                              Name 199  "param"
-                              Name 203  "param"
-                              Name 207  "param"
-                              Name 211  "param"
-                              Name 215  "param"
-                              Name 219  "param"
+                              Name 171  "s"
+                              Name 176  "u"
+                              Name 177  "param"
+                              Name 181  "param"
+                              Name 185  "param"
+                              Name 189  "param"
+                              Name 193  "param"
+                              Name 197  "param"
+                              Name 201  "param"
+                              Name 205  "param"
+                              Name 209  "param"
+                              Name 213  "param"
+                              Name 217  "param"
+                              Name 221  "param"
+                              Name 225  "param"
                               Decorate 69(OutColor) Location 0
-                              Decorate 170(u) Flat
-                              Decorate 170(u) Location 0
+                              Decorate 176(u) Flat
+                              Decorate 176(u) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -87,89 +87,89 @@
               71:             TypeInt 32 0
               72:     71(int) Constant 0
               99:             TypeVector 6(float) 2
-             113:     71(int) Constant 2
-             140:             TypePointer Output 6(float)
-             147:     71(int) Constant 1
-             148:             TypeVector 71(int) 2
-             149:  148(ivec2) ConstantComposite 113 147
-             158:             TypeVector 71(int) 3
-             159:  158(ivec3) ConstantComposite 113 147 72
-             162:    6(float) Constant 0
-             163:    7(fvec3) ConstantComposite 162 162 162
-             164:             TypePointer Function 8(S)
-             169:             TypePointer Input 13(int)
-          170(u):    169(ptr) Variable Input
+             111:             TypePointer Output 6(float)
+             114:     71(int) Constant 1
+             117:     71(int) Constant 2
+             154:             TypeVector 71(int) 2
+             155:  154(ivec2) ConstantComposite 117 114
+             164:             TypeVector 71(int) 3
+             165:  164(ivec3) ConstantComposite 117 114 72
+             168:    6(float) Constant 0
+             169:    7(fvec3) ConstantComposite 168 168 168
+             170:             TypePointer Function 8(S)
+             175:             TypePointer Input 13(int)
+          176(u):    175(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
-          165(s):    164(ptr) Variable Function
-      171(param):     14(ptr) Variable Function
-      175(param):     14(ptr) Variable Function
-      179(param):     14(ptr) Variable Function
-      183(param):     14(ptr) Variable Function
-      187(param):     14(ptr) Variable Function
-      191(param):     14(ptr) Variable Function
-      195(param):     14(ptr) Variable Function
-      199(param):     14(ptr) Variable Function
-      203(param):     14(ptr) Variable Function
-      207(param):     14(ptr) Variable Function
-      211(param):     14(ptr) Variable Function
-      215(param):     14(ptr) Variable Function
-      219(param):     14(ptr) Variable Function
-                              Store 69(OutColor) 163
-             166:        8(S) Load 165(s)
-             167:           2 FunctionCall 11(GetColor1(struct-S-vf31;) 166
-             168:        8(S) Load 165(s)
-             172:     13(int) Load 170(u)
-                              Store 171(param) 172
-             173:           2 FunctionCall 18(GetColor2(struct-S-vf31;i1;) 168 171(param)
-             174:        8(S) Load 165(s)
-             176:     13(int) Load 170(u)
-                              Store 175(param) 176
-             177:           2 FunctionCall 22(GetColor3(struct-S-vf31;i1;) 174 175(param)
-             178:        8(S) Load 165(s)
-             180:     13(int) Load 170(u)
-                              Store 179(param) 180
-             181:           2 FunctionCall 26(GetColor4(struct-S-vf31;i1;) 178 179(param)
-             182:        8(S) Load 165(s)
-             184:     13(int) Load 170(u)
-                              Store 183(param) 184
-             185:           2 FunctionCall 30(GetColor5(struct-S-vf31;i1;) 182 183(param)
-             186:        8(S) Load 165(s)
-             188:     13(int) Load 170(u)
-                              Store 187(param) 188
-             189:           2 FunctionCall 34(GetColor6(struct-S-vf31;i1;) 186 187(param)
-             190:        8(S) Load 165(s)
-             192:     13(int) Load 170(u)
-                              Store 191(param) 192
-             193:           2 FunctionCall 38(GetColor7(struct-S-vf31;i1;) 190 191(param)
-             194:        8(S) Load 165(s)
-             196:     13(int) Load 170(u)
-                              Store 195(param) 196
-             197:           2 FunctionCall 42(GetColor8(struct-S-vf31;i1;) 194 195(param)
-             198:        8(S) Load 165(s)
-             200:     13(int) Load 170(u)
-                              Store 199(param) 200
-             201:           2 FunctionCall 46(GetColor9(struct-S-vf31;i1;) 198 199(param)
-             202:        8(S) Load 165(s)
-             204:     13(int) Load 170(u)
-                              Store 203(param) 204
-             205:           2 FunctionCall 50(GetColor10(struct-S-vf31;i1;) 202 203(param)
-             206:        8(S) Load 165(s)
-             208:     13(int) Load 170(u)
-                              Store 207(param) 208
-             209:           2 FunctionCall 54(GetColor11(struct-S-vf31;i1;) 206 207(param)
-             210:        8(S) Load 165(s)
-             212:     13(int) Load 170(u)
-                              Store 211(param) 212
-             213:           2 FunctionCall 58(GetColor12(struct-S-vf31;i1;) 210 211(param)
-             214:        8(S) Load 165(s)
-             216:     13(int) Load 170(u)
-                              Store 215(param) 216
-             217:           2 FunctionCall 62(GetColor13(struct-S-vf31;i1;) 214 215(param)
-             218:        8(S) Load 165(s)
-             220:     13(int) Load 170(u)
-                              Store 219(param) 220
-             221:           2 FunctionCall 66(GetColor14(struct-S-vf31;i1;) 218 219(param)
+          171(s):    170(ptr) Variable Function
+      177(param):     14(ptr) Variable Function
+      181(param):     14(ptr) Variable Function
+      185(param):     14(ptr) Variable Function
+      189(param):     14(ptr) Variable Function
+      193(param):     14(ptr) Variable Function
+      197(param):     14(ptr) Variable Function
+      201(param):     14(ptr) Variable Function
+      205(param):     14(ptr) Variable Function
+      209(param):     14(ptr) Variable Function
+      213(param):     14(ptr) Variable Function
+      217(param):     14(ptr) Variable Function
+      221(param):     14(ptr) Variable Function
+      225(param):     14(ptr) Variable Function
+                              Store 69(OutColor) 169
+             172:        8(S) Load 171(s)
+             173:           2 FunctionCall 11(GetColor1(struct-S-vf31;) 172
+             174:        8(S) Load 171(s)
+             178:     13(int) Load 176(u)
+                              Store 177(param) 178
+             179:           2 FunctionCall 18(GetColor2(struct-S-vf31;i1;) 174 177(param)
+             180:        8(S) Load 171(s)
+             182:     13(int) Load 176(u)
+                              Store 181(param) 182
+             183:           2 FunctionCall 22(GetColor3(struct-S-vf31;i1;) 180 181(param)
+             184:        8(S) Load 171(s)
+             186:     13(int) Load 176(u)
+                              Store 185(param) 186
+             187:           2 FunctionCall 26(GetColor4(struct-S-vf31;i1;) 184 185(param)
+             188:        8(S) Load 171(s)
+             190:     13(int) Load 176(u)
+                              Store 189(param) 190
+             191:           2 FunctionCall 30(GetColor5(struct-S-vf31;i1;) 188 189(param)
+             192:        8(S) Load 171(s)
+             194:     13(int) Load 176(u)
+                              Store 193(param) 194
+             195:           2 FunctionCall 34(GetColor6(struct-S-vf31;i1;) 192 193(param)
+             196:        8(S) Load 171(s)
+             198:     13(int) Load 176(u)
+                              Store 197(param) 198
+             199:           2 FunctionCall 38(GetColor7(struct-S-vf31;i1;) 196 197(param)
+             200:        8(S) Load 171(s)
+             202:     13(int) Load 176(u)
+                              Store 201(param) 202
+             203:           2 FunctionCall 42(GetColor8(struct-S-vf31;i1;) 200 201(param)
+             204:        8(S) Load 171(s)
+             206:     13(int) Load 176(u)
+                              Store 205(param) 206
+             207:           2 FunctionCall 46(GetColor9(struct-S-vf31;i1;) 204 205(param)
+             208:        8(S) Load 171(s)
+             210:     13(int) Load 176(u)
+                              Store 209(param) 210
+             211:           2 FunctionCall 50(GetColor10(struct-S-vf31;i1;) 208 209(param)
+             212:        8(S) Load 171(s)
+             214:     13(int) Load 176(u)
+                              Store 213(param) 214
+             215:           2 FunctionCall 54(GetColor11(struct-S-vf31;i1;) 212 213(param)
+             216:        8(S) Load 171(s)
+             218:     13(int) Load 176(u)
+                              Store 217(param) 218
+             219:           2 FunctionCall 58(GetColor12(struct-S-vf31;i1;) 216 217(param)
+             220:        8(S) Load 171(s)
+             222:     13(int) Load 176(u)
+                              Store 221(param) 222
+             223:           2 FunctionCall 62(GetColor13(struct-S-vf31;i1;) 220 221(param)
+             224:        8(S) Load 171(s)
+             226:     13(int) Load 176(u)
+                              Store 225(param) 226
+             227:           2 FunctionCall 66(GetColor14(struct-S-vf31;i1;) 224 225(param)
                               Return
                               FunctionEnd
 11(GetColor1(struct-S-vf31;):           2 Function None 9
@@ -254,99 +254,108 @@
              108:    7(fvec3) Load 69(OutColor)
              109:   99(fvec2) VectorShuffle 108 108 0 1
              110:   99(fvec2) FAdd 109 107
-             111:    7(fvec3) Load 69(OutColor)
-             112:    7(fvec3) VectorShuffle 111 110 3 4 2
-                              Store 69(OutColor) 112
+             112:    111(ptr) AccessChain 69(OutColor) 72
+             113:    6(float) CompositeExtract 110 0
+                              Store 112 113
+             115:    111(ptr) AccessChain 69(OutColor) 114
+             116:    6(float) CompositeExtract 110 1
+                              Store 115 116
                               Return
                               FunctionEnd
 42(GetColor8(struct-S-vf31;i1;):           2 Function None 15
            40(i):        8(S) FunctionParameter
         41(comp):     14(ptr) FunctionParameter
               43:             Label
-             114:    6(float) CompositeExtract 40(i) 0 2
-             115:    7(fvec3) Load 69(OutColor)
-             116:    7(fvec3) CompositeConstruct 114 114 114
-             117:    7(fvec3) FAdd 115 116
-                              Store 69(OutColor) 117
+             118:    6(float) CompositeExtract 40(i) 0 2
+             119:    7(fvec3) Load 69(OutColor)
+             120:    7(fvec3) CompositeConstruct 118 118 118
+             121:    7(fvec3) FAdd 119 120
+                              Store 69(OutColor) 121
                               Return
                               FunctionEnd
 46(GetColor9(struct-S-vf31;i1;):           2 Function None 15
            44(i):        8(S) FunctionParameter
         45(comp):     14(ptr) FunctionParameter
               47:             Label
-             118:    7(fvec3) CompositeExtract 44(i) 0
-             119:    7(fvec3) Load 69(OutColor)
-             120:    7(fvec3) VectorShuffle 119 119 2 0 1
-             121:    7(fvec3) FAdd 120 118
-             122:    7(fvec3) Load 69(OutColor)
-             123:    7(fvec3) VectorShuffle 122 121 4 5 3
-                              Store 69(OutColor) 123
+             122:    7(fvec3) CompositeExtract 44(i) 0
+             123:    7(fvec3) Load 69(OutColor)
+             124:    7(fvec3) VectorShuffle 123 123 2 0 1
+             125:    7(fvec3) FAdd 124 122
+             126:    7(fvec3) Load 69(OutColor)
+             127:    7(fvec3) VectorShuffle 126 125 4 5 3
+                              Store 69(OutColor) 127
                               Return
                               FunctionEnd
 50(GetColor10(struct-S-vf31;i1;):           2 Function None 15
            48(i):        8(S) FunctionParameter
         49(comp):     14(ptr) FunctionParameter
               51:             Label
-             124:    7(fvec3) CompositeExtract 48(i) 0
-             125:   99(fvec2) VectorShuffle 124 124 0 1
-             126:    7(fvec3) Load 69(OutColor)
-             127:   99(fvec2) VectorShuffle 126 126 2 1
-             128:   99(fvec2) FAdd 127 125
-             129:    7(fvec3) Load 69(OutColor)
-             130:    7(fvec3) VectorShuffle 129 128 0 4 3
-                              Store 69(OutColor) 130
+             128:    7(fvec3) CompositeExtract 48(i) 0
+             129:   99(fvec2) VectorShuffle 128 128 0 1
+             130:    7(fvec3) Load 69(OutColor)
+             131:   99(fvec2) VectorShuffle 130 130 2 1
+             132:   99(fvec2) FAdd 131 129
+             133:    111(ptr) AccessChain 69(OutColor) 117
+             134:    6(float) CompositeExtract 132 0
+                              Store 133 134
+             135:    111(ptr) AccessChain 69(OutColor) 114
+             136:    6(float) CompositeExtract 132 1
+                              Store 135 136
                               Return
                               FunctionEnd
 54(GetColor11(struct-S-vf31;i1;):           2 Function None 15
            52(i):        8(S) FunctionParameter
         53(comp):     14(ptr) FunctionParameter
               55:             Label
-             131:    7(fvec3) CompositeExtract 52(i) 0
-             132:   99(fvec2) VectorShuffle 131 131 0 1
-             133:    7(fvec3) Load 69(OutColor)
-             134:   99(fvec2) VectorShuffle 133 133 0 2
-             135:   99(fvec2) FAdd 134 132
-             136:    7(fvec3) Load 69(OutColor)
-             137:    7(fvec3) VectorShuffle 136 135 3 1 4
-                              Store 69(OutColor) 137
+             137:    7(fvec3) CompositeExtract 52(i) 0
+             138:   99(fvec2) VectorShuffle 137 137 0 1
+             139:    7(fvec3) Load 69(OutColor)
+             140:   99(fvec2) VectorShuffle 139 139 0 2
+             141:   99(fvec2) FAdd 140 138
+             142:    111(ptr) AccessChain 69(OutColor) 72
+             143:    6(float) CompositeExtract 141 0
+                              Store 142 143
+             144:    111(ptr) AccessChain 69(OutColor) 117
+             145:    6(float) CompositeExtract 141 1
+                              Store 144 145
                               Return
                               FunctionEnd
 58(GetColor12(struct-S-vf31;i1;):           2 Function None 15
            56(i):        8(S) FunctionParameter
         57(comp):     14(ptr) FunctionParameter
               59:             Label
-             138:     13(int) Load 57(comp)
-             139:    6(float) CompositeExtract 56(i) 0 0
-             141:    140(ptr) AccessChain 69(OutColor) 138
-             142:    6(float) Load 141
-             143:    6(float) FAdd 142 139
-             144:    140(ptr) AccessChain 69(OutColor) 138
-                              Store 144 143
+             146:     13(int) Load 57(comp)
+             147:    6(float) CompositeExtract 56(i) 0 0
+             148:    111(ptr) AccessChain 69(OutColor) 146
+             149:    6(float) Load 148
+             150:    6(float) FAdd 149 147
+             151:    111(ptr) AccessChain 69(OutColor) 146
+                              Store 151 150
                               Return
                               FunctionEnd
 62(GetColor13(struct-S-vf31;i1;):           2 Function None 15
            60(i):        8(S) FunctionParameter
         61(comp):     14(ptr) FunctionParameter
               63:             Label
-             145:     13(int) Load 61(comp)
-             146:    6(float) CompositeExtract 60(i) 0 0
-             150:     71(int) VectorExtractDynamic 149 145
-             151:    140(ptr) AccessChain 69(OutColor) 150
-             152:    6(float) Load 151
-             153:    6(float) FAdd 152 146
-             154:     71(int) VectorExtractDynamic 149 145
-             155:    140(ptr) AccessChain 69(OutColor) 154
-                              Store 155 153
+             152:     13(int) Load 61(comp)
+             153:    6(float) CompositeExtract 60(i) 0 0
+             156:     71(int) VectorExtractDynamic 155 152
+             157:    111(ptr) AccessChain 69(OutColor) 156
+             158:    6(float) Load 157
+             159:    6(float) FAdd 158 153
+             160:     71(int) VectorExtractDynamic 155 152
+             161:    111(ptr) AccessChain 69(OutColor) 160
+                              Store 161 159
                               Return
                               FunctionEnd
 66(GetColor14(struct-S-vf31;i1;):           2 Function None 15
            64(i):        8(S) FunctionParameter
         65(comp):     14(ptr) FunctionParameter
               67:             Label
-             156:     13(int) Load 65(comp)
-             157:    6(float) CompositeExtract 64(i) 0 0
-             160:     71(int) VectorExtractDynamic 159 156
-             161:    140(ptr) AccessChain 69(OutColor) 160
-                              Store 161 157
+             162:     13(int) Load 65(comp)
+             163:    6(float) CompositeExtract 64(i) 0 0
+             166:     71(int) VectorExtractDynamic 165 162
+             167:    111(ptr) AccessChain 69(OutColor) 166
+                              Store 167 163
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.atomicAdd.bufferReference.comp.out b/Test/baseResults/spv.atomicAdd.bufferReference.comp.out
new file mode 100644
index 0000000..9ecc742
--- /dev/null
+++ b/Test/baseResults/spv.atomicAdd.bufferReference.comp.out
@@ -0,0 +1,304 @@
+spv.atomicAdd.bufferReference.comp
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 188
+
+                              Capability Shader
+                              Capability VulkanMemoryModelKHR
+                              Capability VulkanMemoryModelDeviceScopeKHR
+                              Capability PhysicalStorageBufferAddressesEXT
+                              Extension  "SPV_KHR_physical_storage_buffer"
+                              Extension  "SPV_KHR_storage_buffer_storage_class"
+                              Extension  "SPV_KHR_vulkan_memory_model"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel PhysicalStorageBuffer64EXT VulkanKHR
+                              EntryPoint GLCompute 4  "main" 37 81 133
+                              ExecutionMode 4 LocalSize 1 1 1
+                              Source GLSL 450
+                              SourceExtension  "GL_ARB_gpu_shader_int64"
+                              SourceExtension  "GL_EXT_buffer_reference"
+                              SourceExtension  "GL_KHR_memory_scope_semantics"
+                              SourceExtension  "GL_KHR_shader_subgroup_ballot"
+                              SourceExtension  "GL_KHR_shader_subgroup_basic"
+                              SourceExtension  "GL_KHR_shader_subgroup_shuffle"
+                              Name 4  "main"
+                              Name 8  "pass"
+                              Name 10  "skip"
+                              Name 13  "sharedSkip"
+                              Name 18  "PayloadRef"
+                              MemberName 18(PayloadRef) 0  "x"
+                              Name 20  "payload"
+                              Name 22  "PC"
+                              MemberName 22(PC) 0  "payloadref"
+                              MemberName 22(PC) 1  "guard"
+                              Name 24  "GuardRef"
+                              MemberName 24(GuardRef) 0  "x"
+                              Name 26  ""
+                              Name 34  "globalId"
+                              Name 37  "gl_GlobalInvocationID"
+                              Name 42  "partnerGlobalId"
+                              Name 43  "DIM"
+                              Name 44  "NUM_WORKGROUP_EACH_DIM"
+                              Name 54  "bufferCoord"
+                              Name 66  "partnerBufferCoord"
+                              Name 75  "imageCoord"
+                              Name 77  "partnerImageCoord"
+                              Name 79  "globalId00"
+                              Name 81  "gl_WorkGroupID"
+                              Name 86  "partnerGlobalId00"
+                              Name 95  "bufferCoord00"
+                              Name 104  "partnerBufferCoord00"
+                              Name 113  "imageCoord00"
+                              Name 115  "partnerImageCoord00"
+                              Name 133  "gl_LocalInvocationID"
+                              Name 163  "r"
+                              Name 179  "Fail"
+                              MemberName 179(Fail) 0  "x"
+                              Name 181  "fail"
+                              Decorate 17 ArrayStride 4
+                              MemberDecorate 18(PayloadRef) 0 Offset 0
+                              Decorate 18(PayloadRef) Block
+                              Decorate 20(payload) DecorationAliasedPointerEXT
+                              MemberDecorate 22(PC) 0 Offset 0
+                              MemberDecorate 22(PC) 1 Offset 8
+                              Decorate 22(PC) Block
+                              Decorate 23 ArrayStride 4
+                              MemberDecorate 24(GuardRef) 0 Offset 0
+                              Decorate 24(GuardRef) Block
+                              Decorate 37(gl_GlobalInvocationID) BuiltIn GlobalInvocationId
+                              Decorate 43(DIM) SpecId 0
+                              Decorate 44(NUM_WORKGROUP_EACH_DIM) SpecId 1
+                              Decorate 81(gl_WorkGroupID) BuiltIn WorkgroupId
+                              Decorate 133(gl_LocalInvocationID) BuiltIn LocalInvocationId
+                              Decorate 178 ArrayStride 4
+                              MemberDecorate 179(Fail) 0 Offset 0
+                              Decorate 179(Fail) Block
+                              Decorate 181(fail) DescriptorSet 0
+                              Decorate 181(fail) Binding 2
+                              Decorate 185 SpecId 0
+                              Decorate 186 SpecId 0
+                              Decorate 187 BuiltIn WorkgroupSize
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeBool
+               7:             TypePointer Function 6(bool)
+               9:     6(bool) ConstantTrue
+              11:     6(bool) ConstantFalse
+              12:             TypePointer Workgroup 6(bool)
+  13(sharedSkip):     12(ptr) Variable Workgroup
+              14:             TypeInt 32 0
+              15:     14(int) Constant 2
+                              TypeForwardPointer 16 PhysicalStorageBufferEXT
+              17:             TypeRuntimeArray 14(int)
+  18(PayloadRef):             TypeStruct 17
+              16:             TypePointer PhysicalStorageBufferEXT 18(PayloadRef)
+              19:             TypePointer Function 16(ptr)
+                              TypeForwardPointer 21 PhysicalStorageBufferEXT
+          22(PC):             TypeStruct 16(ptr) 21
+              23:             TypeRuntimeArray 14(int)
+    24(GuardRef):             TypeStruct 23
+              21:             TypePointer PhysicalStorageBufferEXT 24(GuardRef)
+              25:             TypePointer PushConstant 22(PC)
+              26:     25(ptr) Variable PushConstant
+              27:             TypeInt 32 1
+              28:     27(int) Constant 0
+              29:             TypePointer PushConstant 16(ptr)
+              32:             TypeVector 27(int) 2
+              33:             TypePointer Function 32(ivec2)
+              35:             TypeVector 14(int) 3
+              36:             TypePointer Input 35(ivec3)
+37(gl_GlobalInvocationID):     36(ptr) Variable Input
+              38:             TypeVector 14(int) 2
+         43(DIM):     27(int) SpecConstant 1
+44(NUM_WORKGROUP_EACH_DIM):     27(int) SpecConstant 1
+              45:     27(int) SpecConstantOp 132 43(DIM) 44(NUM_WORKGROUP_EACH_DIM)
+              46:     27(int) Constant 1
+              47:     27(int) SpecConstantOp 130 45 46
+              48:   32(ivec2) SpecConstantComposite 47 47
+              53:             TypePointer Function 14(int)
+              55:     14(int) Constant 1
+              56:             TypePointer Function 27(int)
+              61:     14(int) Constant 0
+              80:   32(ivec2) SpecConstantComposite 43(DIM) 43(DIM)
+81(gl_WorkGroupID):     36(ptr) Variable Input
+              87:   32(ivec2) SpecConstantComposite 43(DIM) 43(DIM)
+              88:     27(int) SpecConstantOp 130 44(NUM_WORKGROUP_EACH_DIM) 46
+              89:   32(ivec2) SpecConstantComposite 88 88
+             122:             TypePointer PhysicalStorageBufferEXT 14(int)
+             125:     27(int) Constant 31
+             129:     27(int) Constant 2
+             130:     27(int) Constant 320
+             131:     27(int) Constant 8200
+             132:     14(int) Constant 8520
+133(gl_LocalInvocationID):     36(ptr) Variable Input
+             136:   38(ivec2) ConstantComposite 61 61
+             137:             TypeVector 6(bool) 2
+             142:             TypePointer PushConstant 21(ptr)
+             147:     27(int) Constant 64
+             148:     27(int) Constant 8196
+             149:     14(int) Constant 5
+             150:     14(int) Constant 8260
+             155:     27(int) Constant 16386
+             156:     14(int) Constant 16450
+             160:     27(int) Constant 16392
+             161:     14(int) Constant 16712
+             178:             TypeRuntimeArray 14(int)
+       179(Fail):             TypeStruct 178
+             180:             TypePointer StorageBuffer 179(Fail)
+       181(fail):    180(ptr) Variable StorageBuffer
+             183:             TypePointer StorageBuffer 14(int)
+             185:     14(int) SpecConstant 1
+             186:     14(int) SpecConstant 1
+             187:   35(ivec3) SpecConstantComposite 185 186 55
+         4(main):           2 Function None 3
+               5:             Label
+         8(pass):      7(ptr) Variable Function
+        10(skip):      7(ptr) Variable Function
+     20(payload):     19(ptr) Variable Function
+    34(globalId):     33(ptr) Variable Function
+42(partnerGlobalId):     33(ptr) Variable Function
+ 54(bufferCoord):     53(ptr) Variable Function
+66(partnerBufferCoord):     53(ptr) Variable Function
+  75(imageCoord):     33(ptr) Variable Function
+77(partnerImageCoord):     33(ptr) Variable Function
+  79(globalId00):     33(ptr) Variable Function
+86(partnerGlobalId00):     33(ptr) Variable Function
+95(bufferCoord00):     53(ptr) Variable Function
+104(partnerBufferCoord00):     53(ptr) Variable Function
+113(imageCoord00):     33(ptr) Variable Function
+115(partnerImageCoord00):     33(ptr) Variable Function
+          163(r):     53(ptr) Variable Function
+                              Store 8(pass) 9
+                              Store 10(skip) 11
+                              Store 13(sharedSkip) 11 MakePointerAvailableKHR NonPrivatePointerKHR 15
+              30:     29(ptr) AccessChain 26 28
+              31:     16(ptr) Load 30
+                              Store 20(payload) 31
+              39:   35(ivec3) Load 37(gl_GlobalInvocationID)
+              40:   38(ivec2) VectorShuffle 39 39 0 1
+              41:   32(ivec2) Bitcast 40
+                              Store 34(globalId) 41
+              49:   35(ivec3) Load 37(gl_GlobalInvocationID)
+              50:   38(ivec2) VectorShuffle 49 49 0 1
+              51:   32(ivec2) Bitcast 50
+              52:   32(ivec2) ISub 48 51
+                              Store 42(partnerGlobalId) 52
+              57:     56(ptr) AccessChain 34(globalId) 55
+              58:     27(int) Load 57
+              59:     27(int) IMul 58 43(DIM)
+              60:     27(int) IMul 59 44(NUM_WORKGROUP_EACH_DIM)
+              62:     56(ptr) AccessChain 34(globalId) 61
+              63:     27(int) Load 62
+              64:     27(int) IAdd 60 63
+              65:     14(int) Bitcast 64
+                              Store 54(bufferCoord) 65
+              67:     56(ptr) AccessChain 42(partnerGlobalId) 55
+              68:     27(int) Load 67
+              69:     27(int) IMul 68 43(DIM)
+              70:     27(int) IMul 69 44(NUM_WORKGROUP_EACH_DIM)
+              71:     56(ptr) AccessChain 42(partnerGlobalId) 61
+              72:     27(int) Load 71
+              73:     27(int) IAdd 70 72
+              74:     14(int) Bitcast 73
+                              Store 66(partnerBufferCoord) 74
+              76:   32(ivec2) Load 34(globalId)
+                              Store 75(imageCoord) 76
+              78:   32(ivec2) Load 42(partnerGlobalId)
+                              Store 77(partnerImageCoord) 78
+              82:   35(ivec3) Load 81(gl_WorkGroupID)
+              83:   38(ivec2) VectorShuffle 82 82 0 1
+              84:   32(ivec2) Bitcast 83
+              85:   32(ivec2) IMul 80 84
+                              Store 79(globalId00) 85
+              90:   35(ivec3) Load 81(gl_WorkGroupID)
+              91:   38(ivec2) VectorShuffle 90 90 0 1
+              92:   32(ivec2) Bitcast 91
+              93:   32(ivec2) ISub 89 92
+              94:   32(ivec2) IMul 87 93
+                              Store 86(partnerGlobalId00) 94
+              96:     56(ptr) AccessChain 79(globalId00) 55
+              97:     27(int) Load 96
+              98:     27(int) IMul 97 43(DIM)
+              99:     27(int) IMul 98 44(NUM_WORKGROUP_EACH_DIM)
+             100:     56(ptr) AccessChain 79(globalId00) 61
+             101:     27(int) Load 100
+             102:     27(int) IAdd 99 101
+             103:     14(int) Bitcast 102
+                              Store 95(bufferCoord00) 103
+             105:     56(ptr) AccessChain 86(partnerGlobalId00) 55
+             106:     27(int) Load 105
+             107:     27(int) IMul 106 43(DIM)
+             108:     27(int) IMul 107 44(NUM_WORKGROUP_EACH_DIM)
+             109:     56(ptr) AccessChain 86(partnerGlobalId00) 61
+             110:     27(int) Load 109
+             111:     27(int) IAdd 108 110
+             112:     14(int) Bitcast 111
+                              Store 104(partnerBufferCoord00) 112
+             114:   32(ivec2) Load 79(globalId00)
+                              Store 113(imageCoord00) 114
+             116:   32(ivec2) Load 86(partnerGlobalId00)
+                              Store 115(partnerImageCoord00) 116
+             117:     16(ptr) Load 20(payload)
+             118:     14(int) Load 54(bufferCoord)
+             119:     14(int) Load 54(bufferCoord)
+             120:     16(ptr) Load 20(payload)
+             121:     14(int) Load 66(partnerBufferCoord)
+             123:    122(ptr) AccessChain 120 28 121
+             124:     14(int) Load 123 Aligned NonPrivatePointerKHR 4
+             126:     14(int) ShiftRightLogical 124 125
+             127:     14(int) IAdd 119 126
+             128:    122(ptr) AccessChain 117 28 118
+                              Store 128 127 Aligned NonPrivatePointerKHR 4
+                              ControlBarrier 15 15 132
+             134:   35(ivec3) Load 133(gl_LocalInvocationID)
+             135:   38(ivec2) VectorShuffle 134 134 0 1
+             138:  137(bvec2) IEqual 135 136
+             139:     6(bool) All 138
+                              SelectionMerge 141 None
+                              BranchConditional 139 140 141
+             140:               Label
+             143:    142(ptr)   AccessChain 26 46
+             144:     21(ptr)   Load 143
+             145:     14(int)   Load 54(bufferCoord)
+             146:    122(ptr)   AccessChain 144 28 145
+                                AtomicStore 146 46 150 55
+             151:    142(ptr)   AccessChain 26 46
+             152:     21(ptr)   Load 151
+             153:     14(int)   Load 104(partnerBufferCoord00)
+             154:    122(ptr)   AccessChain 152 28 153
+             157:     14(int)   AtomicLoad 154 46 156
+             158:     6(bool)   IEqual 157 61
+                                Store 10(skip) 158
+             159:     6(bool)   Load 10(skip)
+                                Store 13(sharedSkip) 159 MakePointerAvailableKHR NonPrivatePointerKHR 15
+                                Branch 141
+             141:             Label
+                              ControlBarrier 15 15 161
+             162:     6(bool) Load 13(sharedSkip) MakePointerVisibleKHR NonPrivatePointerKHR 15
+                              Store 10(skip) 162
+             164:     16(ptr) Load 20(payload)
+             165:     14(int) Load 66(partnerBufferCoord)
+             166:    122(ptr) AccessChain 164 28 165
+             167:     14(int) Load 166 Aligned NonPrivatePointerKHR 4
+                              Store 163(r) 167
+             168:     6(bool) Load 10(skip)
+             169:     6(bool) LogicalNot 168
+                              SelectionMerge 171 None
+                              BranchConditional 169 170 171
+             170:               Label
+             172:     14(int)   Load 163(r)
+             173:     14(int)   Load 66(partnerBufferCoord)
+             174:     6(bool)   INotEqual 172 173
+                                Branch 171
+             171:             Label
+             175:     6(bool) Phi 169 141 174 170
+                              SelectionMerge 177 None
+                              BranchConditional 175 176 177
+             176:               Label
+             182:     14(int)   Load 54(bufferCoord)
+             184:    183(ptr)   AccessChain 181(fail) 28 182
+                                Store 184 55
+                                Branch 177
+             177:             Label
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.bitCast.frag.out b/Test/baseResults/spv.bitCast.frag.out
index daf7b1d..88b2a09 100644
--- a/Test/baseResults/spv.bitCast.frag.out
+++ b/Test/baseResults/spv.bitCast.frag.out
@@ -1,52 +1,52 @@
 spv.bitCast.frag
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 172
+// Id's are bound by 198
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 14 26 37 48 89 98 107 116 122 130 139 148 154
+                              EntryPoint Fragment 4  "main" 14 26 40 56 103 112 123 136 142 150 161 174 180
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 450
                               Name 4  "main"
                               Name 9  "idata"
                               Name 14  "f1"
                               Name 26  "f2"
-                              Name 37  "f3"
-                              Name 48  "f4"
-                              Name 55  "udata"
-                              Name 85  "fdata"
-                              Name 89  "i1"
-                              Name 98  "i2"
-                              Name 107  "i3"
-                              Name 116  "i4"
-                              Name 122  "u1"
-                              Name 130  "u2"
-                              Name 139  "u3"
-                              Name 148  "u4"
-                              Name 154  "fragColor"
+                              Name 40  "f3"
+                              Name 56  "f4"
+                              Name 63  "udata"
+                              Name 99  "fdata"
+                              Name 103  "i1"
+                              Name 112  "i2"
+                              Name 123  "i3"
+                              Name 136  "i4"
+                              Name 142  "u1"
+                              Name 150  "u2"
+                              Name 161  "u3"
+                              Name 174  "u4"
+                              Name 180  "fragColor"
                               Decorate 14(f1) Location 8
                               Decorate 26(f2) Location 9
-                              Decorate 37(f3) Location 10
-                              Decorate 48(f4) Location 11
-                              Decorate 89(i1) Flat
-                              Decorate 89(i1) Location 0
-                              Decorate 98(i2) Flat
-                              Decorate 98(i2) Location 1
-                              Decorate 107(i3) Flat
-                              Decorate 107(i3) Location 2
-                              Decorate 116(i4) Flat
-                              Decorate 116(i4) Location 3
-                              Decorate 122(u1) Flat
-                              Decorate 122(u1) Location 4
-                              Decorate 130(u2) Flat
-                              Decorate 130(u2) Location 5
-                              Decorate 139(u3) Flat
-                              Decorate 139(u3) Location 6
-                              Decorate 148(u4) Flat
-                              Decorate 148(u4) Location 7
-                              Decorate 154(fragColor) Location 0
+                              Decorate 40(f3) Location 10
+                              Decorate 56(f4) Location 11
+                              Decorate 103(i1) Flat
+                              Decorate 103(i1) Location 0
+                              Decorate 112(i2) Flat
+                              Decorate 112(i2) Location 1
+                              Decorate 123(i3) Flat
+                              Decorate 123(i3) Location 2
+                              Decorate 136(i4) Flat
+                              Decorate 136(i4) Location 3
+                              Decorate 142(u1) Flat
+                              Decorate 142(u1) Location 4
+                              Decorate 150(u2) Flat
+                              Decorate 150(u2) Location 5
+                              Decorate 161(u3) Flat
+                              Decorate 161(u3) Location 6
+                              Decorate 174(u4) Flat
+                              Decorate 174(u4) Location 7
+                              Decorate 180(fragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
@@ -64,51 +64,53 @@
               25:             TypePointer Input 24(fvec2)
           26(f2):     25(ptr) Variable Input
               28:             TypeVector 6(int) 2
-              35:             TypeVector 12(float) 3
-              36:             TypePointer Input 35(fvec3)
-          37(f3):     36(ptr) Variable Input
-              39:             TypeVector 6(int) 3
-              46:             TypeVector 12(float) 4
-              47:             TypePointer Input 46(fvec4)
-          48(f4):     47(ptr) Variable Input
-              53:             TypeVector 17(int) 4
-              54:             TypePointer Function 53(ivec4)
-              56:   53(ivec4) ConstantComposite 18 18 18 18
-              59:             TypePointer Function 17(int)
-              65:             TypeVector 17(int) 2
-              73:             TypeVector 17(int) 3
-              84:             TypePointer Function 46(fvec4)
-              86:   12(float) Constant 0
-              87:   46(fvec4) ConstantComposite 86 86 86 86
-              88:             TypePointer Input 6(int)
-          89(i1):     88(ptr) Variable Input
-              92:             TypePointer Function 12(float)
-              97:             TypePointer Input 28(ivec2)
-          98(i2):     97(ptr) Variable Input
-             106:             TypePointer Input 39(ivec3)
-         107(i3):    106(ptr) Variable Input
-             115:             TypePointer Input 7(ivec4)
-         116(i4):    115(ptr) Variable Input
-             121:             TypePointer Input 17(int)
-         122(u1):    121(ptr) Variable Input
-             129:             TypePointer Input 65(ivec2)
-         130(u2):    129(ptr) Variable Input
-             138:             TypePointer Input 73(ivec3)
-         139(u3):    138(ptr) Variable Input
-             147:             TypePointer Input 53(ivec4)
-         148(u4):    147(ptr) Variable Input
-             153:             TypePointer Output 46(fvec4)
-  154(fragColor):    153(ptr) Variable Output
-             158:             TypeBool
-             159:             TypeVector 158(bool) 4
-             168:   12(float) Constant 1045220557
-             169:   46(fvec4) ConstantComposite 168 168 168 168
+              35:     17(int) Constant 1
+              38:             TypeVector 12(float) 3
+              39:             TypePointer Input 38(fvec3)
+          40(f3):     39(ptr) Variable Input
+              42:             TypeVector 6(int) 3
+              51:     17(int) Constant 2
+              54:             TypeVector 12(float) 4
+              55:             TypePointer Input 54(fvec4)
+          56(f4):     55(ptr) Variable Input
+              61:             TypeVector 17(int) 4
+              62:             TypePointer Function 61(ivec4)
+              64:   61(ivec4) ConstantComposite 18 18 18 18
+              67:             TypePointer Function 17(int)
+              73:             TypeVector 17(int) 2
+              83:             TypeVector 17(int) 3
+              98:             TypePointer Function 54(fvec4)
+             100:   12(float) Constant 0
+             101:   54(fvec4) ConstantComposite 100 100 100 100
+             102:             TypePointer Input 6(int)
+         103(i1):    102(ptr) Variable Input
+             106:             TypePointer Function 12(float)
+             111:             TypePointer Input 28(ivec2)
+         112(i2):    111(ptr) Variable Input
+             122:             TypePointer Input 42(ivec3)
+         123(i3):    122(ptr) Variable Input
+             135:             TypePointer Input 7(ivec4)
+         136(i4):    135(ptr) Variable Input
+             141:             TypePointer Input 17(int)
+         142(u1):    141(ptr) Variable Input
+             149:             TypePointer Input 73(ivec2)
+         150(u2):    149(ptr) Variable Input
+             160:             TypePointer Input 83(ivec3)
+         161(u3):    160(ptr) Variable Input
+             173:             TypePointer Input 61(ivec4)
+         174(u4):    173(ptr) Variable Input
+             179:             TypePointer Output 54(fvec4)
+  180(fragColor):    179(ptr) Variable Output
+             184:             TypeBool
+             185:             TypeVector 184(bool) 4
+             194:   12(float) Constant 1045220557
+             195:   54(fvec4) ConstantComposite 194 194 194 194
          4(main):           2 Function None 3
                5:             Label
         9(idata):      8(ptr) Variable Function
-       55(udata):     54(ptr) Variable Function
-       85(fdata):     84(ptr) Variable Function
-             162:     84(ptr) Variable Function
+       63(udata):     62(ptr) Variable Function
+       99(fdata):     98(ptr) Variable Function
+             188:     98(ptr) Variable Function
                               Store 9(idata) 11
               15:   12(float) Load 14(f1)
               16:      6(int) Bitcast 15
@@ -122,126 +124,162 @@
               30:    7(ivec4) Load 9(idata)
               31:   28(ivec2) VectorShuffle 30 30 0 1
               32:   28(ivec2) IAdd 31 29
-              33:    7(ivec4) Load 9(idata)
-              34:    7(ivec4) VectorShuffle 33 32 4 5 2 3
-                              Store 9(idata) 34
-              38:   35(fvec3) Load 37(f3)
-              40:   39(ivec3) Bitcast 38
-              41:    7(ivec4) Load 9(idata)
-              42:   39(ivec3) VectorShuffle 41 41 0 1 2
-              43:   39(ivec3) IAdd 42 40
+              33:     19(ptr) AccessChain 9(idata) 18
+              34:      6(int) CompositeExtract 32 0
+                              Store 33 34
+              36:     19(ptr) AccessChain 9(idata) 35
+              37:      6(int) CompositeExtract 32 1
+                              Store 36 37
+              41:   38(fvec3) Load 40(f3)
+              43:   42(ivec3) Bitcast 41
               44:    7(ivec4) Load 9(idata)
-              45:    7(ivec4) VectorShuffle 44 43 4 5 6 3
-                              Store 9(idata) 45
-              49:   46(fvec4) Load 48(f4)
-              50:    7(ivec4) Bitcast 49
-              51:    7(ivec4) Load 9(idata)
-              52:    7(ivec4) IAdd 51 50
-                              Store 9(idata) 52
-                              Store 55(udata) 56
-              57:   12(float) Load 14(f1)
-              58:     17(int) Bitcast 57
-              60:     59(ptr) AccessChain 55(udata) 18
-              61:     17(int) Load 60
-              62:     17(int) IAdd 61 58
-              63:     59(ptr) AccessChain 55(udata) 18
-                              Store 63 62
-              64:   24(fvec2) Load 26(f2)
-              66:   65(ivec2) Bitcast 64
-              67:   53(ivec4) Load 55(udata)
-              68:   65(ivec2) VectorShuffle 67 67 0 1
-              69:   65(ivec2) IAdd 68 66
-              70:   53(ivec4) Load 55(udata)
-              71:   53(ivec4) VectorShuffle 70 69 4 5 2 3
-                              Store 55(udata) 71
-              72:   35(fvec3) Load 37(f3)
-              74:   73(ivec3) Bitcast 72
-              75:   53(ivec4) Load 55(udata)
-              76:   73(ivec3) VectorShuffle 75 75 0 1 2
-              77:   73(ivec3) IAdd 76 74
-              78:   53(ivec4) Load 55(udata)
-              79:   53(ivec4) VectorShuffle 78 77 4 5 6 3
-                              Store 55(udata) 79
-              80:   46(fvec4) Load 48(f4)
-              81:   53(ivec4) Bitcast 80
-              82:   53(ivec4) Load 55(udata)
-              83:   53(ivec4) IAdd 82 81
-                              Store 55(udata) 83
-                              Store 85(fdata) 87
-              90:      6(int) Load 89(i1)
-              91:   12(float) Bitcast 90
-              93:     92(ptr) AccessChain 85(fdata) 18
-              94:   12(float) Load 93
-              95:   12(float) FAdd 94 91
-              96:     92(ptr) AccessChain 85(fdata) 18
-                              Store 96 95
-              99:   28(ivec2) Load 98(i2)
-             100:   24(fvec2) Bitcast 99
-             101:   46(fvec4) Load 85(fdata)
-             102:   24(fvec2) VectorShuffle 101 101 0 1
-             103:   24(fvec2) FAdd 102 100
-             104:   46(fvec4) Load 85(fdata)
-             105:   46(fvec4) VectorShuffle 104 103 4 5 2 3
-                              Store 85(fdata) 105
-             108:   39(ivec3) Load 107(i3)
-             109:   35(fvec3) Bitcast 108
-             110:   46(fvec4) Load 85(fdata)
-             111:   35(fvec3) VectorShuffle 110 110 0 1 2
-             112:   35(fvec3) FAdd 111 109
-             113:   46(fvec4) Load 85(fdata)
-             114:   46(fvec4) VectorShuffle 113 112 4 5 6 3
-                              Store 85(fdata) 114
-             117:    7(ivec4) Load 116(i4)
-             118:   46(fvec4) Bitcast 117
-             119:   46(fvec4) Load 85(fdata)
-             120:   46(fvec4) FAdd 119 118
-                              Store 85(fdata) 120
-             123:     17(int) Load 122(u1)
-             124:   12(float) Bitcast 123
-             125:     92(ptr) AccessChain 85(fdata) 18
-             126:   12(float) Load 125
-             127:   12(float) FAdd 126 124
-             128:     92(ptr) AccessChain 85(fdata) 18
-                              Store 128 127
-             131:   65(ivec2) Load 130(u2)
-             132:   24(fvec2) Bitcast 131
-             133:   46(fvec4) Load 85(fdata)
-             134:   24(fvec2) VectorShuffle 133 133 0 1
-             135:   24(fvec2) FAdd 134 132
-             136:   46(fvec4) Load 85(fdata)
-             137:   46(fvec4) VectorShuffle 136 135 4 5 2 3
-                              Store 85(fdata) 137
-             140:   73(ivec3) Load 139(u3)
-             141:   35(fvec3) Bitcast 140
-             142:   46(fvec4) Load 85(fdata)
-             143:   35(fvec3) VectorShuffle 142 142 0 1 2
-             144:   35(fvec3) FAdd 143 141
-             145:   46(fvec4) Load 85(fdata)
-             146:   46(fvec4) VectorShuffle 145 144 4 5 6 3
-                              Store 85(fdata) 146
-             149:   53(ivec4) Load 148(u4)
-             150:   46(fvec4) Bitcast 149
-             151:   46(fvec4) Load 85(fdata)
-             152:   46(fvec4) FAdd 151 150
-                              Store 85(fdata) 152
-             155:    7(ivec4) Load 9(idata)
-             156:   53(ivec4) Bitcast 155
-             157:   53(ivec4) Load 55(udata)
-             160:  159(bvec4) IEqual 156 157
-             161:   158(bool) All 160
-                              SelectionMerge 164 None
-                              BranchConditional 161 163 166
-             163:               Label
-             165:   46(fvec4)   Load 85(fdata)
-                                Store 162 165
-                                Branch 164
-             166:               Label
-             167:   46(fvec4)   Load 85(fdata)
-             170:   46(fvec4)   FAdd 167 169
-                                Store 162 170
-                                Branch 164
-             164:             Label
-             171:   46(fvec4) Load 162
-                              Store 154(fragColor) 171
+              45:   42(ivec3) VectorShuffle 44 44 0 1 2
+              46:   42(ivec3) IAdd 45 43
+              47:     19(ptr) AccessChain 9(idata) 18
+              48:      6(int) CompositeExtract 46 0
+                              Store 47 48
+              49:     19(ptr) AccessChain 9(idata) 35
+              50:      6(int) CompositeExtract 46 1
+                              Store 49 50
+              52:     19(ptr) AccessChain 9(idata) 51
+              53:      6(int) CompositeExtract 46 2
+                              Store 52 53
+              57:   54(fvec4) Load 56(f4)
+              58:    7(ivec4) Bitcast 57
+              59:    7(ivec4) Load 9(idata)
+              60:    7(ivec4) IAdd 59 58
+                              Store 9(idata) 60
+                              Store 63(udata) 64
+              65:   12(float) Load 14(f1)
+              66:     17(int) Bitcast 65
+              68:     67(ptr) AccessChain 63(udata) 18
+              69:     17(int) Load 68
+              70:     17(int) IAdd 69 66
+              71:     67(ptr) AccessChain 63(udata) 18
+                              Store 71 70
+              72:   24(fvec2) Load 26(f2)
+              74:   73(ivec2) Bitcast 72
+              75:   61(ivec4) Load 63(udata)
+              76:   73(ivec2) VectorShuffle 75 75 0 1
+              77:   73(ivec2) IAdd 76 74
+              78:     67(ptr) AccessChain 63(udata) 18
+              79:     17(int) CompositeExtract 77 0
+                              Store 78 79
+              80:     67(ptr) AccessChain 63(udata) 35
+              81:     17(int) CompositeExtract 77 1
+                              Store 80 81
+              82:   38(fvec3) Load 40(f3)
+              84:   83(ivec3) Bitcast 82
+              85:   61(ivec4) Load 63(udata)
+              86:   83(ivec3) VectorShuffle 85 85 0 1 2
+              87:   83(ivec3) IAdd 86 84
+              88:     67(ptr) AccessChain 63(udata) 18
+              89:     17(int) CompositeExtract 87 0
+                              Store 88 89
+              90:     67(ptr) AccessChain 63(udata) 35
+              91:     17(int) CompositeExtract 87 1
+                              Store 90 91
+              92:     67(ptr) AccessChain 63(udata) 51
+              93:     17(int) CompositeExtract 87 2
+                              Store 92 93
+              94:   54(fvec4) Load 56(f4)
+              95:   61(ivec4) Bitcast 94
+              96:   61(ivec4) Load 63(udata)
+              97:   61(ivec4) IAdd 96 95
+                              Store 63(udata) 97
+                              Store 99(fdata) 101
+             104:      6(int) Load 103(i1)
+             105:   12(float) Bitcast 104
+             107:    106(ptr) AccessChain 99(fdata) 18
+             108:   12(float) Load 107
+             109:   12(float) FAdd 108 105
+             110:    106(ptr) AccessChain 99(fdata) 18
+                              Store 110 109
+             113:   28(ivec2) Load 112(i2)
+             114:   24(fvec2) Bitcast 113
+             115:   54(fvec4) Load 99(fdata)
+             116:   24(fvec2) VectorShuffle 115 115 0 1
+             117:   24(fvec2) FAdd 116 114
+             118:    106(ptr) AccessChain 99(fdata) 18
+             119:   12(float) CompositeExtract 117 0
+                              Store 118 119
+             120:    106(ptr) AccessChain 99(fdata) 35
+             121:   12(float) CompositeExtract 117 1
+                              Store 120 121
+             124:   42(ivec3) Load 123(i3)
+             125:   38(fvec3) Bitcast 124
+             126:   54(fvec4) Load 99(fdata)
+             127:   38(fvec3) VectorShuffle 126 126 0 1 2
+             128:   38(fvec3) FAdd 127 125
+             129:    106(ptr) AccessChain 99(fdata) 18
+             130:   12(float) CompositeExtract 128 0
+                              Store 129 130
+             131:    106(ptr) AccessChain 99(fdata) 35
+             132:   12(float) CompositeExtract 128 1
+                              Store 131 132
+             133:    106(ptr) AccessChain 99(fdata) 51
+             134:   12(float) CompositeExtract 128 2
+                              Store 133 134
+             137:    7(ivec4) Load 136(i4)
+             138:   54(fvec4) Bitcast 137
+             139:   54(fvec4) Load 99(fdata)
+             140:   54(fvec4) FAdd 139 138
+                              Store 99(fdata) 140
+             143:     17(int) Load 142(u1)
+             144:   12(float) Bitcast 143
+             145:    106(ptr) AccessChain 99(fdata) 18
+             146:   12(float) Load 145
+             147:   12(float) FAdd 146 144
+             148:    106(ptr) AccessChain 99(fdata) 18
+                              Store 148 147
+             151:   73(ivec2) Load 150(u2)
+             152:   24(fvec2) Bitcast 151
+             153:   54(fvec4) Load 99(fdata)
+             154:   24(fvec2) VectorShuffle 153 153 0 1
+             155:   24(fvec2) FAdd 154 152
+             156:    106(ptr) AccessChain 99(fdata) 18
+             157:   12(float) CompositeExtract 155 0
+                              Store 156 157
+             158:    106(ptr) AccessChain 99(fdata) 35
+             159:   12(float) CompositeExtract 155 1
+                              Store 158 159
+             162:   83(ivec3) Load 161(u3)
+             163:   38(fvec3) Bitcast 162
+             164:   54(fvec4) Load 99(fdata)
+             165:   38(fvec3) VectorShuffle 164 164 0 1 2
+             166:   38(fvec3) FAdd 165 163
+             167:    106(ptr) AccessChain 99(fdata) 18
+             168:   12(float) CompositeExtract 166 0
+                              Store 167 168
+             169:    106(ptr) AccessChain 99(fdata) 35
+             170:   12(float) CompositeExtract 166 1
+                              Store 169 170
+             171:    106(ptr) AccessChain 99(fdata) 51
+             172:   12(float) CompositeExtract 166 2
+                              Store 171 172
+             175:   61(ivec4) Load 174(u4)
+             176:   54(fvec4) Bitcast 175
+             177:   54(fvec4) Load 99(fdata)
+             178:   54(fvec4) FAdd 177 176
+                              Store 99(fdata) 178
+             181:    7(ivec4) Load 9(idata)
+             182:   61(ivec4) Bitcast 181
+             183:   61(ivec4) Load 63(udata)
+             186:  185(bvec4) IEqual 182 183
+             187:   184(bool) All 186
+                              SelectionMerge 190 None
+                              BranchConditional 187 189 192
+             189:               Label
+             191:   54(fvec4)   Load 99(fdata)
+                                Store 188 191
+                                Branch 190
+             192:               Label
+             193:   54(fvec4)   Load 99(fdata)
+             196:   54(fvec4)   FAdd 193 195
+                                Store 188 196
+                                Branch 190
+             190:             Label
+             197:   54(fvec4) Load 188
+                              Store 180(fragColor) 197
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.ext.AnyHitShader.rahit.out b/Test/baseResults/spv.ext.AnyHitShader.rahit.out
index 7bcf812..880be33 100644
--- a/Test/baseResults/spv.ext.AnyHitShader.rahit.out
+++ b/Test/baseResults/spv.ext.AnyHitShader.rahit.out
@@ -73,6 +73,7 @@
                               Decorate 98(gl_SubgroupSize) RelaxedPrecision
                               Decorate 98(gl_SubgroupSize) BuiltIn SubgroupSize
                               Decorate 99 RelaxedPrecision
+                              Decorate 100 RelaxedPrecision
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
diff --git a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out
index 14ec09b..7f5af89 100644
--- a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out
+++ b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out
@@ -38,10 +38,21 @@
                               Decorate 28(gl_SubgroupInvocationID) RelaxedPrecision
                               Decorate 28(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
                               Decorate 29 RelaxedPrecision
+                              Decorate 30 RelaxedPrecision
                               Decorate 34(gl_SubGroupGeMaskARB) BuiltIn SubgroupGeMaskKHR
+                              Decorate 41 RelaxedPrecision
+                              Decorate 42 RelaxedPrecision
                               Decorate 43(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR
+                              Decorate 46 RelaxedPrecision
+                              Decorate 46 RelaxedPrecision
+                              Decorate 47 RelaxedPrecision
                               Decorate 48(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR
+                              Decorate 51 RelaxedPrecision
+                              Decorate 51 RelaxedPrecision
+                              Decorate 52 RelaxedPrecision
                               Decorate 53(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR
+                              Decorate 59 RelaxedPrecision
+                              Decorate 60 RelaxedPrecision
                               Decorate 61(gl_SMIDNV) BuiltIn SMIDNV
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out
index 60b5e93..95d9213 100644
--- a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out
@@ -49,8 +49,6 @@
                               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
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out
index cc175f7..f5e32c1 100644
--- a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out
@@ -49,8 +49,6 @@
                               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
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out
index afcfa9c..d952adf 100644
--- a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out
@@ -49,8 +49,6 @@
                               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
diff --git a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out
index eac481a..c6d6530 100644
--- a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out
@@ -50,8 +50,6 @@
                               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
diff --git a/Test/baseResults/spv.ext.RayGenShader.rgen.out b/Test/baseResults/spv.ext.RayGenShader.rgen.out
index da516f3..bfaf64b 100644
--- a/Test/baseResults/spv.ext.RayGenShader.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShader.rgen.out
@@ -34,8 +34,6 @@
                               MemberDecorate 38(block) 0 Offset 0
                               MemberDecorate 38(block) 1 Offset 16
                               Decorate 38(block) Block
-                              Decorate 40 DescriptorSet 0
-                              Decorate 40 Binding 3
                               Decorate 53(payload) Location 1
                               Decorate 54(accEXT1) DescriptorSet 0
                               Decorate 54(accEXT1) Binding 1
diff --git a/Test/baseResults/spv.ext.RayGenShader11.rgen.out b/Test/baseResults/spv.ext.RayGenShader11.rgen.out
index 00262ac..048b02b 100644
--- a/Test/baseResults/spv.ext.RayGenShader11.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShader11.rgen.out
@@ -30,8 +30,6 @@
                               MemberDecorate 37(block) 0 Offset 0
                               MemberDecorate 37(block) 1 Offset 16
                               Decorate 37(block) Block
-                              Decorate 39 DescriptorSet 0
-                              Decorate 39 Binding 1
                               Decorate 52(payload) Location 1
                2:             TypeVoid
                3:             TypeFunction 2
diff --git a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
index 473937d..ee39e35 100644
--- a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
+++ b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out
@@ -43,8 +43,6 @@
                               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
diff --git a/Test/baseResults/spv.float16.frag.out b/Test/baseResults/spv.float16.frag.out
index dd677b4..8c33a66 100644
--- a/Test/baseResults/spv.float16.frag.out
+++ b/Test/baseResults/spv.float16.frag.out
@@ -2,7 +2,7 @@
 Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 534
+// Id's are bound by 542
 
                               Capability Shader
                               Capability Float16
@@ -80,87 +80,87 @@
                               Name 445  "f16v2"
                               Name 463  "f16v"
                               Name 465  "if16v"
-                              Name 514  "S"
-                              MemberName 514(S) 0  "x"
-                              MemberName 514(S) 1  "y"
-                              MemberName 514(S) 2  "z"
-                              Name 516  "B1"
-                              MemberName 516(B1) 0  "a"
-                              MemberName 516(B1) 1  "b"
-                              MemberName 516(B1) 2  "c"
-                              MemberName 516(B1) 3  "d"
-                              MemberName 516(B1) 4  "e"
-                              MemberName 516(B1) 5  "f"
-                              MemberName 516(B1) 6  "g"
-                              MemberName 516(B1) 7  "h"
-                              Name 518  ""
-                              Name 521  "S"
-                              MemberName 521(S) 0  "x"
-                              MemberName 521(S) 1  "y"
-                              MemberName 521(S) 2  "z"
-                              Name 523  "B2"
-                              MemberName 523(B2) 0  "o"
-                              MemberName 523(B2) 1  "p"
-                              MemberName 523(B2) 2  "q"
-                              MemberName 523(B2) 3  "r"
-                              MemberName 523(B2) 4  "s"
-                              MemberName 523(B2) 5  "t"
-                              MemberName 523(B2) 6  "u"
-                              MemberName 523(B2) 7  "v"
-                              Name 525  ""
-                              Name 526  "sf16"
-                              Name 527  "sf"
-                              Name 528  "sd"
-                              Name 529  "f16_to_f"
-                              Name 531  "f16_to_d"
-                              Name 532  "f_to_f16"
-                              Name 533  "d_to_f16"
+                              Name 522  "S"
+                              MemberName 522(S) 0  "x"
+                              MemberName 522(S) 1  "y"
+                              MemberName 522(S) 2  "z"
+                              Name 524  "B1"
+                              MemberName 524(B1) 0  "a"
+                              MemberName 524(B1) 1  "b"
+                              MemberName 524(B1) 2  "c"
+                              MemberName 524(B1) 3  "d"
+                              MemberName 524(B1) 4  "e"
+                              MemberName 524(B1) 5  "f"
+                              MemberName 524(B1) 6  "g"
+                              MemberName 524(B1) 7  "h"
+                              Name 526  ""
+                              Name 529  "S"
+                              MemberName 529(S) 0  "x"
+                              MemberName 529(S) 1  "y"
+                              MemberName 529(S) 2  "z"
+                              Name 531  "B2"
+                              MemberName 531(B2) 0  "o"
+                              MemberName 531(B2) 1  "p"
+                              MemberName 531(B2) 2  "q"
+                              MemberName 531(B2) 3  "r"
+                              MemberName 531(B2) 4  "s"
+                              MemberName 531(B2) 5  "t"
+                              MemberName 531(B2) 6  "u"
+                              MemberName 531(B2) 7  "v"
+                              Name 533  ""
+                              Name 534  "sf16"
+                              Name 535  "sf"
+                              Name 536  "sd"
+                              Name 537  "f16_to_f"
+                              Name 539  "f16_to_d"
+                              Name 540  "f_to_f16"
+                              Name 541  "d_to_f16"
                               Decorate 465(if16v) Location 0
-                              Decorate 512 ArrayStride 16
-                              Decorate 513 ArrayStride 32
-                              MemberDecorate 514(S) 0 Offset 0
-                              MemberDecorate 514(S) 1 Offset 4
-                              MemberDecorate 514(S) 2 Offset 8
-                              Decorate 515 ArrayStride 16
-                              MemberDecorate 516(B1) 0 Offset 0
-                              MemberDecorate 516(B1) 1 Offset 4
-                              MemberDecorate 516(B1) 2 Offset 8
-                              MemberDecorate 516(B1) 3 Offset 16
-                              MemberDecorate 516(B1) 4 ColMajor
-                              MemberDecorate 516(B1) 4 Offset 48
-                              MemberDecorate 516(B1) 4 MatrixStride 16
-                              MemberDecorate 516(B1) 5 ColMajor
-                              MemberDecorate 516(B1) 5 Offset 80
-                              MemberDecorate 516(B1) 5 MatrixStride 16
-                              MemberDecorate 516(B1) 6 Offset 144
-                              MemberDecorate 516(B1) 7 Offset 160
-                              Decorate 516(B1) Block
-                              Decorate 518 DescriptorSet 0
-                              Decorate 518 Binding 0
-                              Decorate 519 ArrayStride 2
-                              Decorate 520 ArrayStride 12
-                              MemberDecorate 521(S) 0 Offset 0
-                              MemberDecorate 521(S) 1 Offset 4
-                              MemberDecorate 521(S) 2 Offset 8
-                              Decorate 522 ArrayStride 16
-                              MemberDecorate 523(B2) 0 Offset 0
-                              MemberDecorate 523(B2) 1 Offset 4
-                              MemberDecorate 523(B2) 2 Offset 8
-                              MemberDecorate 523(B2) 3 Offset 14
-                              MemberDecorate 523(B2) 4 RowMajor
-                              MemberDecorate 523(B2) 4 Offset 20
-                              MemberDecorate 523(B2) 4 MatrixStride 4
-                              MemberDecorate 523(B2) 5 RowMajor
-                              MemberDecorate 523(B2) 5 Offset 32
-                              MemberDecorate 523(B2) 5 MatrixStride 4
-                              MemberDecorate 523(B2) 6 Offset 56
-                              MemberDecorate 523(B2) 7 Offset 72
-                              Decorate 523(B2) BufferBlock
-                              Decorate 525 DescriptorSet 0
-                              Decorate 525 Binding 0
-                              Decorate 526(sf16) SpecId 100
-                              Decorate 527(sf) SpecId 101
-                              Decorate 528(sd) SpecId 102
+                              Decorate 520 ArrayStride 16
+                              Decorate 521 ArrayStride 32
+                              MemberDecorate 522(S) 0 Offset 0
+                              MemberDecorate 522(S) 1 Offset 4
+                              MemberDecorate 522(S) 2 Offset 8
+                              Decorate 523 ArrayStride 16
+                              MemberDecorate 524(B1) 0 Offset 0
+                              MemberDecorate 524(B1) 1 Offset 4
+                              MemberDecorate 524(B1) 2 Offset 8
+                              MemberDecorate 524(B1) 3 Offset 16
+                              MemberDecorate 524(B1) 4 ColMajor
+                              MemberDecorate 524(B1) 4 Offset 48
+                              MemberDecorate 524(B1) 4 MatrixStride 16
+                              MemberDecorate 524(B1) 5 ColMajor
+                              MemberDecorate 524(B1) 5 Offset 80
+                              MemberDecorate 524(B1) 5 MatrixStride 16
+                              MemberDecorate 524(B1) 6 Offset 144
+                              MemberDecorate 524(B1) 7 Offset 160
+                              Decorate 524(B1) Block
+                              Decorate 526 DescriptorSet 0
+                              Decorate 526 Binding 0
+                              Decorate 527 ArrayStride 2
+                              Decorate 528 ArrayStride 12
+                              MemberDecorate 529(S) 0 Offset 0
+                              MemberDecorate 529(S) 1 Offset 4
+                              MemberDecorate 529(S) 2 Offset 8
+                              Decorate 530 ArrayStride 16
+                              MemberDecorate 531(B2) 0 Offset 0
+                              MemberDecorate 531(B2) 1 Offset 4
+                              MemberDecorate 531(B2) 2 Offset 8
+                              MemberDecorate 531(B2) 3 Offset 14
+                              MemberDecorate 531(B2) 4 RowMajor
+                              MemberDecorate 531(B2) 4 Offset 20
+                              MemberDecorate 531(B2) 4 MatrixStride 4
+                              MemberDecorate 531(B2) 5 RowMajor
+                              MemberDecorate 531(B2) 5 Offset 32
+                              MemberDecorate 531(B2) 5 MatrixStride 4
+                              MemberDecorate 531(B2) 6 Offset 56
+                              MemberDecorate 531(B2) 7 Offset 72
+                              Decorate 531(B2) BufferBlock
+                              Decorate 533 DescriptorSet 0
+                              Decorate 533 Binding 0
+                              Decorate 534(sf16) SpecId 100
+                              Decorate 535(sf) SpecId 101
+                              Decorate 536(sd) SpecId 102
                2:             TypeVoid
                3:             TypeFunction 2
               28:             TypeFloat 16
@@ -218,32 +218,32 @@
              464:             TypePointer Input 151(f16vec3)
       465(if16v):    464(ptr) Variable Input
              466:             TypePointer Input 28(float16_t)
-             503:    183(int) Constant 1
-             508:28(float16_t) Constant 14336
-             509: 29(f16vec2) ConstantComposite 508 508
-             511:     33(int) Constant 2
-             512:             TypeArray 28(float16_t) 511
-             513:             TypeArray 406 511
-          514(S):             TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3)
-             515:             TypeArray 514(S) 511
-         516(B1):             TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 512 406 513 514(S) 515
-             517:             TypePointer Uniform 516(B1)
-             518:    517(ptr) Variable Uniform
-             519:             TypeArray 28(float16_t) 511
-             520:             TypeArray 406 511
-          521(S):             TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3)
-             522:             TypeArray 521(S) 511
-         523(B2):             TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 519 406 520 521(S) 522
-             524:             TypePointer Uniform 523(B2)
-             525:    524(ptr) Variable Uniform
-       526(sf16):28(float16_t) SpecConstant 12288
-         527(sf):  164(float) SpecConstant 1048576000
-         528(sd):172(float64_t) SpecConstant 0 1071644672
-   529(f16_to_f):  164(float) SpecConstantOp 115 526(sf16)
-             530:  164(float) SpecConstantOp 115 526(sf16)
-   531(f16_to_d):172(float64_t) SpecConstantOp 115 530
-   532(f_to_f16):28(float16_t) SpecConstantOp 115 527(sf)
-   533(d_to_f16):28(float16_t) SpecConstantOp 115 528(sd)
+             509:    183(int) Constant 1
+             516:28(float16_t) Constant 14336
+             517: 29(f16vec2) ConstantComposite 516 516
+             519:     33(int) Constant 2
+             520:             TypeArray 28(float16_t) 519
+             521:             TypeArray 406 519
+          522(S):             TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3)
+             523:             TypeArray 522(S) 519
+         524(B1):             TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 520 406 521 522(S) 523
+             525:             TypePointer Uniform 524(B1)
+             526:    525(ptr) Variable Uniform
+             527:             TypeArray 28(float16_t) 519
+             528:             TypeArray 406 519
+          529(S):             TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3)
+             530:             TypeArray 529(S) 519
+         531(B2):             TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 527 406 528 529(S) 530
+             532:             TypePointer Uniform 531(B2)
+             533:    532(ptr) Variable Uniform
+       534(sf16):28(float16_t) SpecConstant 12288
+         535(sf):  164(float) SpecConstant 1048576000
+         536(sd):172(float64_t) SpecConstant 0 1071644672
+   537(f16_to_f):  164(float) SpecConstantOp 115 534(sf16)
+             538:  164(float) SpecConstantOp 115 534(sf16)
+   539(f16_to_d):172(float64_t) SpecConstantOp 115 538
+   540(f_to_f16):28(float16_t) SpecConstantOp 115 535(sf)
+   541(d_to_f16):28(float16_t) SpecConstantOp 115 536(sd)
          4(main):           2 Function None 3
                5:             Label
                               Return
@@ -801,45 +801,57 @@
              475:151(f16vec3) Load 465(if16v)
              476: 29(f16vec2) VectorShuffle 475 475 0 1
              477: 29(f16vec2) DPdxFine 476
-             478:151(f16vec3) Load 463(f16v)
-             479:151(f16vec3) VectorShuffle 478 477 3 4 2
-                              Store 463(f16v) 479
-             480:151(f16vec3) Load 465(if16v)
-             481: 29(f16vec2) VectorShuffle 480 480 0 1
-             482: 29(f16vec2) DPdyFine 481
-             483:151(f16vec3) Load 463(f16v)
-             484:151(f16vec3) VectorShuffle 483 482 3 4 2
-                              Store 463(f16v) 484
-             485:151(f16vec3) Load 465(if16v)
-             486:151(f16vec3) DPdxCoarse 485
-                              Store 463(f16v) 486
-             487:151(f16vec3) Load 465(if16v)
-             488:151(f16vec3) DPdxCoarse 487
-                              Store 463(f16v) 488
-             489:    466(ptr) AccessChain 465(if16v) 34
-             490:28(float16_t) Load 489
-             491:28(float16_t) Fwidth 490
-             492:     35(ptr) AccessChain 463(f16v) 34
-                              Store 492 491
-             493:151(f16vec3) Load 465(if16v)
-             494: 29(f16vec2) VectorShuffle 493 493 0 1
-             495: 29(f16vec2) FwidthFine 494
-             496:151(f16vec3) Load 463(f16v)
-             497:151(f16vec3) VectorShuffle 496 495 3 4 2
-                              Store 463(f16v) 497
-             498:151(f16vec3) Load 465(if16v)
-             499:151(f16vec3) FwidthCoarse 498
-                              Store 463(f16v) 499
-             500:    466(ptr) AccessChain 465(if16v) 34
-             501:28(float16_t) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 500
-             502:     35(ptr) AccessChain 463(f16v) 34
-                              Store 502 501
-             504:151(f16vec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 465(if16v) 503
-             505: 29(f16vec2) VectorShuffle 504 504 0 1
-             506:151(f16vec3) Load 463(f16v)
-             507:151(f16vec3) VectorShuffle 506 505 3 4 2
-                              Store 463(f16v) 507
-             510:151(f16vec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 465(if16v) 509
-                              Store 463(f16v) 510
+             478:     35(ptr) AccessChain 463(f16v) 34
+             479:28(float16_t) CompositeExtract 477 0
+                              Store 478 479
+             480:     35(ptr) AccessChain 463(f16v) 90
+             481:28(float16_t) CompositeExtract 477 1
+                              Store 480 481
+             482:151(f16vec3) Load 465(if16v)
+             483: 29(f16vec2) VectorShuffle 482 482 0 1
+             484: 29(f16vec2) DPdyFine 483
+             485:     35(ptr) AccessChain 463(f16v) 34
+             486:28(float16_t) CompositeExtract 484 0
+                              Store 485 486
+             487:     35(ptr) AccessChain 463(f16v) 90
+             488:28(float16_t) CompositeExtract 484 1
+                              Store 487 488
+             489:151(f16vec3) Load 465(if16v)
+             490:151(f16vec3) DPdxCoarse 489
+                              Store 463(f16v) 490
+             491:151(f16vec3) Load 465(if16v)
+             492:151(f16vec3) DPdxCoarse 491
+                              Store 463(f16v) 492
+             493:    466(ptr) AccessChain 465(if16v) 34
+             494:28(float16_t) Load 493
+             495:28(float16_t) Fwidth 494
+             496:     35(ptr) AccessChain 463(f16v) 34
+                              Store 496 495
+             497:151(f16vec3) Load 465(if16v)
+             498: 29(f16vec2) VectorShuffle 497 497 0 1
+             499: 29(f16vec2) FwidthFine 498
+             500:     35(ptr) AccessChain 463(f16v) 34
+             501:28(float16_t) CompositeExtract 499 0
+                              Store 500 501
+             502:     35(ptr) AccessChain 463(f16v) 90
+             503:28(float16_t) CompositeExtract 499 1
+                              Store 502 503
+             504:151(f16vec3) Load 465(if16v)
+             505:151(f16vec3) FwidthCoarse 504
+                              Store 463(f16v) 505
+             506:    466(ptr) AccessChain 465(if16v) 34
+             507:28(float16_t) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 506
+             508:     35(ptr) AccessChain 463(f16v) 34
+                              Store 508 507
+             510:151(f16vec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 465(if16v) 509
+             511: 29(f16vec2) VectorShuffle 510 510 0 1
+             512:     35(ptr) AccessChain 463(f16v) 34
+             513:28(float16_t) CompositeExtract 511 0
+                              Store 512 513
+             514:     35(ptr) AccessChain 463(f16v) 90
+             515:28(float16_t) CompositeExtract 511 1
+                              Store 514 515
+             518:151(f16vec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 465(if16v) 517
+                              Store 463(f16v) 518
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.float16Fetch.frag.out b/Test/baseResults/spv.float16Fetch.frag.out
index 3b2c36f..da4aa4d 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 5933
+// Id's are bound by 5979
 
                               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 4267 4274 5923 5932
+                              EntryPoint Fragment 4  "main" 128 135 137 148 156 169 177 215 251 309 565 572 1393 1401 1409 1417 1425 1433 4311 4318 5969 5978
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 450
                               SourceExtension  "GL_AMD_gpu_shader_half_float"
@@ -145,68 +145,68 @@
                               Name 2502  "texel"
                               Name 2530  "texel"
                               Name 2559  "size"
-                              Name 2733  "lod"
-                              Name 2869  "levels"
-                              Name 2938  "samples"
-                              Name 2952  "texel"
-                              Name 2955  "i1D"
-                              Name 2964  "i2D"
-                              Name 2973  "i3D"
-                              Name 2982  "i2DRect"
-                              Name 2991  "iCube"
-                              Name 3000  "iBuffer"
-                              Name 3009  "i1DArray"
-                              Name 3018  "i2DArray"
-                              Name 3027  "iCubeArray"
-                              Name 3036  "i2DMS"
-                              Name 3045  "i2DMSArray"
-                              Name 3099  "texel"
-                              Name 3102  "ResType"
-                              Name 3138  "ResType"
-                              Name 3242  "texel"
-                              Name 3322  "texel"
-                              Name 3412  "texel"
-                              Name 3468  "texel"
-                              Name 3628  "texel"
-                              Name 3742  "texel"
-                              Name 3794  "texel"
-                              Name 3832  "texel"
-                              Name 3950  "texel"
-                              Name 4022  "texel"
-                              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"
+                              Name 2777  "lod"
+                              Name 2913  "levels"
+                              Name 2982  "samples"
+                              Name 2996  "texel"
+                              Name 2999  "i1D"
+                              Name 3008  "i2D"
+                              Name 3017  "i3D"
+                              Name 3026  "i2DRect"
+                              Name 3035  "iCube"
+                              Name 3044  "iBuffer"
+                              Name 3053  "i1DArray"
+                              Name 3062  "i2DArray"
+                              Name 3071  "iCubeArray"
+                              Name 3080  "i2DMS"
+                              Name 3089  "i2DMSArray"
+                              Name 3143  "texel"
+                              Name 3146  "ResType"
+                              Name 3182  "ResType"
+                              Name 3286  "texel"
+                              Name 3366  "texel"
+                              Name 3456  "texel"
+                              Name 3512  "texel"
+                              Name 3672  "texel"
+                              Name 3786  "texel"
+                              Name 3838  "texel"
+                              Name 3876  "texel"
+                              Name 3994  "texel"
+                              Name 4066  "texel"
+                              Name 4148  "texel"
+                              Name 4200  "texel"
+                              Name 4228  "texel"
+                              Name 4256  "texel"
+                              Name 4308  "texel"
+                              Name 4311  "lodClamp"
+                              Name 4318  "f16lodClamp"
+                              Name 4445  "texel"
+                              Name 4652  "texel"
+                              Name 4728  "texel"
+                              Name 4872  "texel"
+                              Name 5016  "texel"
+                              Name 5242  "texel"
+                              Name 5334  "texel"
+                              Name 5506  "texel"
+                              Name 5508  "t1D"
+                              Name 5512  "s"
+                              Name 5528  "t2D"
+                              Name 5545  "t3D"
+                              Name 5562  "tCube"
+                              Name 5579  "sShadow"
+                              Name 5643  "t1DArray"
+                              Name 5660  "t2DArray"
+                              Name 5677  "tCubeArray"
+                              Name 5735  "t2DRect"
+                              Name 5795  "subpass"
+                              Name 5801  "subpassMS"
+                              Name 5807  "result"
+                              Name 5890  "param"
+                              Name 5969  "fragColor"
+                              Name 5973  "tBuffer"
+                              Name 5975  "t2DMS"
+                              Name 5977  "t2DMSArray"
+                              Name 5978  "bias"
                               Decorate 125(s1D) DescriptorSet 0
                               Decorate 125(s1D) Binding 0
                               Decorate 128(c1) Location 0
@@ -261,64 +261,64 @@
                               Decorate 1417(f16dPdxy2) Location 19
                               Decorate 1425(dPdxy3) Location 10
                               Decorate 1433(f16dPdxy3) Location 20
-                              Decorate 2955(i1D) DescriptorSet 1
-                              Decorate 2955(i1D) Binding 0
-                              Decorate 2964(i2D) DescriptorSet 1
-                              Decorate 2964(i2D) Binding 1
-                              Decorate 2973(i3D) DescriptorSet 1
-                              Decorate 2973(i3D) Binding 2
-                              Decorate 2982(i2DRect) DescriptorSet 1
-                              Decorate 2982(i2DRect) Binding 3
-                              Decorate 2991(iCube) DescriptorSet 1
-                              Decorate 2991(iCube) Binding 4
-                              Decorate 3000(iBuffer) DescriptorSet 1
-                              Decorate 3000(iBuffer) Binding 8
-                              Decorate 3009(i1DArray) DescriptorSet 1
-                              Decorate 3009(i1DArray) Binding 5
-                              Decorate 3018(i2DArray) DescriptorSet 1
-                              Decorate 3018(i2DArray) Binding 6
-                              Decorate 3027(iCubeArray) DescriptorSet 1
-                              Decorate 3027(iCubeArray) Binding 7
-                              Decorate 3036(i2DMS) DescriptorSet 1
-                              Decorate 3036(i2DMS) Binding 9
-                              Decorate 3045(i2DMSArray) DescriptorSet 1
-                              Decorate 3045(i2DMSArray) Binding 10
-                              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
+                              Decorate 2999(i1D) DescriptorSet 1
+                              Decorate 2999(i1D) Binding 0
+                              Decorate 3008(i2D) DescriptorSet 1
+                              Decorate 3008(i2D) Binding 1
+                              Decorate 3017(i3D) DescriptorSet 1
+                              Decorate 3017(i3D) Binding 2
+                              Decorate 3026(i2DRect) DescriptorSet 1
+                              Decorate 3026(i2DRect) Binding 3
+                              Decorate 3035(iCube) DescriptorSet 1
+                              Decorate 3035(iCube) Binding 4
+                              Decorate 3044(iBuffer) DescriptorSet 1
+                              Decorate 3044(iBuffer) Binding 8
+                              Decorate 3053(i1DArray) DescriptorSet 1
+                              Decorate 3053(i1DArray) Binding 5
+                              Decorate 3062(i2DArray) DescriptorSet 1
+                              Decorate 3062(i2DArray) Binding 6
+                              Decorate 3071(iCubeArray) DescriptorSet 1
+                              Decorate 3071(iCubeArray) Binding 7
+                              Decorate 3080(i2DMS) DescriptorSet 1
+                              Decorate 3080(i2DMS) Binding 9
+                              Decorate 3089(i2DMSArray) DescriptorSet 1
+                              Decorate 3089(i2DMSArray) Binding 10
+                              Decorate 4311(lodClamp) Location 7
+                              Decorate 4318(f16lodClamp) Location 17
+                              Decorate 5508(t1D) DescriptorSet 2
+                              Decorate 5508(t1D) Binding 0
+                              Decorate 5512(s) DescriptorSet 2
+                              Decorate 5512(s) Binding 11
+                              Decorate 5528(t2D) DescriptorSet 2
+                              Decorate 5528(t2D) Binding 1
+                              Decorate 5545(t3D) DescriptorSet 2
+                              Decorate 5545(t3D) Binding 2
+                              Decorate 5562(tCube) DescriptorSet 2
+                              Decorate 5562(tCube) Binding 4
+                              Decorate 5579(sShadow) DescriptorSet 2
+                              Decorate 5579(sShadow) Binding 12
+                              Decorate 5643(t1DArray) DescriptorSet 2
+                              Decorate 5643(t1DArray) Binding 5
+                              Decorate 5660(t2DArray) DescriptorSet 2
+                              Decorate 5660(t2DArray) Binding 6
+                              Decorate 5677(tCubeArray) DescriptorSet 2
+                              Decorate 5677(tCubeArray) Binding 7
+                              Decorate 5735(t2DRect) DescriptorSet 2
+                              Decorate 5735(t2DRect) Binding 3
+                              Decorate 5795(subpass) DescriptorSet 3
+                              Decorate 5795(subpass) Binding 0
+                              Decorate 5795(subpass) InputAttachmentIndex 0
+                              Decorate 5801(subpassMS) DescriptorSet 3
+                              Decorate 5801(subpassMS) Binding 1
+                              Decorate 5801(subpassMS) InputAttachmentIndex 0
+                              Decorate 5969(fragColor) Location 0
+                              Decorate 5973(tBuffer) DescriptorSet 2
+                              Decorate 5973(tBuffer) Binding 8
+                              Decorate 5975(t2DMS) DescriptorSet 2
+                              Decorate 5975(t2DMS) Binding 9
+                              Decorate 5977(t2DMSArray) DescriptorSet 2
+                              Decorate 5977(t2DMSArray) Binding 10
+                              Decorate 5978(bias) Location 6
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 16
@@ -453,306 +453,311 @@
             2558:             TypePointer Function 48(ivec4)
             2560:   48(ivec4) ConstantComposite 2187 2187 2187 2187
             2566:             TypePointer Function 47(int)
-            2732:             TypePointer Function 53(fvec2)
-            2734:   52(float) Constant 0
-            2735:   53(fvec2) ConstantComposite 2734 2734
-            2953:             TypeImage 6(float16_t) 1D nonsampled format:Rgba16f
-            2954:             TypePointer UniformConstant 2953
-       2955(i1D):   2954(ptr) Variable UniformConstant
-            2962:             TypeImage 6(float16_t) 2D nonsampled format:Rgba16f
-            2963:             TypePointer UniformConstant 2962
-       2964(i2D):   2963(ptr) Variable UniformConstant
-            2971:             TypeImage 6(float16_t) 3D nonsampled format:Rgba16f
-            2972:             TypePointer UniformConstant 2971
-       2973(i3D):   2972(ptr) Variable UniformConstant
-            2980:             TypeImage 6(float16_t) Rect nonsampled format:Rgba16f
-            2981:             TypePointer UniformConstant 2980
-   2982(i2DRect):   2981(ptr) Variable UniformConstant
-            2989:             TypeImage 6(float16_t) Cube nonsampled format:Rgba16f
-            2990:             TypePointer UniformConstant 2989
-     2991(iCube):   2990(ptr) Variable UniformConstant
-            2998:             TypeImage 6(float16_t) Buffer nonsampled format:Rgba16f
-            2999:             TypePointer UniformConstant 2998
-   3000(iBuffer):   2999(ptr) Variable UniformConstant
-            3007:             TypeImage 6(float16_t) 1D array nonsampled format:Rgba16f
-            3008:             TypePointer UniformConstant 3007
-  3009(i1DArray):   3008(ptr) Variable UniformConstant
-            3016:             TypeImage 6(float16_t) 2D array nonsampled format:Rgba16f
-            3017:             TypePointer UniformConstant 3016
-  3018(i2DArray):   3017(ptr) Variable UniformConstant
-            3025:             TypeImage 6(float16_t) Cube array nonsampled format:Rgba16f
-            3026:             TypePointer UniformConstant 3025
-3027(iCubeArray):   3026(ptr) Variable UniformConstant
-            3034:             TypeImage 6(float16_t) 2D multi-sampled nonsampled format:Rgba16f
-            3035:             TypePointer UniformConstant 3034
-     3036(i2DMS):   3035(ptr) Variable UniformConstant
-            3043:             TypeImage 6(float16_t) 2D array multi-sampled nonsampled format:Rgba16f
-            3044:             TypePointer UniformConstant 3043
-3045(i2DMSArray):   3044(ptr) Variable UniformConstant
-   3102(ResType):             TypeStruct 47(int) 7(f16vec4)
-   3138(ResType):             TypeStruct 47(int) 6(float16_t)
-            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
+            2581:    206(int) Constant 1
+            2596:    206(int) Constant 2
+            2776:             TypePointer Function 53(fvec2)
+            2778:   52(float) Constant 0
+            2779:   53(fvec2) ConstantComposite 2778 2778
+            2997:             TypeImage 6(float16_t) 1D nonsampled format:Rgba16f
+            2998:             TypePointer UniformConstant 2997
+       2999(i1D):   2998(ptr) Variable UniformConstant
+            3006:             TypeImage 6(float16_t) 2D nonsampled format:Rgba16f
+            3007:             TypePointer UniformConstant 3006
+       3008(i2D):   3007(ptr) Variable UniformConstant
+            3015:             TypeImage 6(float16_t) 3D nonsampled format:Rgba16f
+            3016:             TypePointer UniformConstant 3015
+       3017(i3D):   3016(ptr) Variable UniformConstant
+            3024:             TypeImage 6(float16_t) Rect nonsampled format:Rgba16f
+            3025:             TypePointer UniformConstant 3024
+   3026(i2DRect):   3025(ptr) Variable UniformConstant
+            3033:             TypeImage 6(float16_t) Cube nonsampled format:Rgba16f
+            3034:             TypePointer UniformConstant 3033
+     3035(iCube):   3034(ptr) Variable UniformConstant
+            3042:             TypeImage 6(float16_t) Buffer nonsampled format:Rgba16f
+            3043:             TypePointer UniformConstant 3042
+   3044(iBuffer):   3043(ptr) Variable UniformConstant
+            3051:             TypeImage 6(float16_t) 1D array nonsampled format:Rgba16f
+            3052:             TypePointer UniformConstant 3051
+  3053(i1DArray):   3052(ptr) Variable UniformConstant
+            3060:             TypeImage 6(float16_t) 2D array nonsampled format:Rgba16f
+            3061:             TypePointer UniformConstant 3060
+  3062(i2DArray):   3061(ptr) Variable UniformConstant
+            3069:             TypeImage 6(float16_t) Cube array nonsampled format:Rgba16f
+            3070:             TypePointer UniformConstant 3069
+3071(iCubeArray):   3070(ptr) Variable UniformConstant
+            3078:             TypeImage 6(float16_t) 2D multi-sampled nonsampled format:Rgba16f
+            3079:             TypePointer UniformConstant 3078
+     3080(i2DMS):   3079(ptr) Variable UniformConstant
+            3087:             TypeImage 6(float16_t) 2D array multi-sampled nonsampled format:Rgba16f
+            3088:             TypePointer UniformConstant 3087
+3089(i2DMSArray):   3088(ptr) Variable UniformConstant
+   3146(ResType):             TypeStruct 47(int) 7(f16vec4)
+   3182(ResType):             TypeStruct 47(int) 6(float16_t)
+            4069:  721(ivec2) ConstantComposite 709 1326
+            4070:     47(int) Constant 3
+            4071:     47(int) Constant 4
+            4072:  721(ivec2) ConstantComposite 4070 4071
+            4073:     47(int) Constant 15
+            4074:     47(int) Constant 16
+            4075:  721(ivec2) ConstantComposite 4073 4074
+            4076:     47(int) Constant 4294967294
+            4077:  721(ivec2) ConstantComposite 4076 2187
+            4078:        2379 ConstantComposite 4069 4072 4075 4077
+  4311(lodClamp):    127(ptr) Variable Input
+4318(f16lodClamp):    134(ptr) Variable Input
+            5507:             TypePointer UniformConstant 122
+       5508(t1D):   5507(ptr) Variable UniformConstant
+            5510:             TypeSampler
+            5511:             TypePointer UniformConstant 5510
+         5512(s):   5511(ptr) Variable UniformConstant
+            5527:             TypePointer UniformConstant 142
+       5528(t2D):   5527(ptr) Variable UniformConstant
+            5544:             TypePointer UniformConstant 162
+       5545(t3D):   5544(ptr) Variable UniformConstant
+            5561:             TypePointer UniformConstant 183
+     5562(tCube):   5561(ptr) Variable UniformConstant
+   5579(sShadow):   5511(ptr) Variable UniformConstant
+            5642:             TypePointer UniformConstant 268
+  5643(t1DArray):   5642(ptr) Variable UniformConstant
+            5659:             TypePointer UniformConstant 283
+  5660(t2DArray):   5659(ptr) Variable UniformConstant
+            5676:             TypePointer UniformConstant 298
+5677(tCubeArray):   5676(ptr) Variable UniformConstant
+            5734:             TypePointer UniformConstant 356
+   5735(t2DRect):   5734(ptr) Variable UniformConstant
+            5793:             TypeImage 6(float16_t) SubpassData nonsampled format:Unknown
+            5794:             TypePointer UniformConstant 5793
+   5795(subpass):   5794(ptr) Variable UniformConstant
+            5797:  721(ivec2) ConstantComposite 2187 2187
+            5799:             TypeImage 6(float16_t) SubpassData multi-sampled nonsampled format:Unknown
+            5800:             TypePointer UniformConstant 5799
+ 5801(subpassMS):   5800(ptr) Variable UniformConstant
+            5968:             TypePointer Output 249(fvec4)
+ 5969(fragColor):   5968(ptr) Variable Output
+            5972:             TypePointer UniformConstant 1297
+   5973(tBuffer):   5972(ptr) Variable UniformConstant
+            5974:             TypePointer UniformConstant 1308
+     5975(t2DMS):   5974(ptr) Variable UniformConstant
+            5976:             TypePointer UniformConstant 1319
+5977(t2DMSArray):   5976(ptr) Variable UniformConstant
+      5978(bias):    127(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
-    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 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)
+    5807(result):     64(ptr) Variable Function
+     5890(param):     64(ptr) Variable Function
+                              Store 5807(result) 121
+            5808:  7(f16vec4) FunctionCall 9(testTexture()
+            5809:  7(f16vec4) Load 5807(result)
+            5810:  7(f16vec4) FAdd 5809 5808
+                              Store 5807(result) 5810
+            5811:  7(f16vec4) FunctionCall 11(testTextureProj()
+            5812:  7(f16vec4) Load 5807(result)
+            5813:  7(f16vec4) FAdd 5812 5811
+                              Store 5807(result) 5813
+            5814:  7(f16vec4) FunctionCall 13(testTextureLod()
+            5815:  7(f16vec4) Load 5807(result)
+            5816:  7(f16vec4) FAdd 5815 5814
+                              Store 5807(result) 5816
+            5817:  7(f16vec4) FunctionCall 15(testTextureOffset()
+            5818:  7(f16vec4) Load 5807(result)
+            5819:  7(f16vec4) FAdd 5818 5817
+                              Store 5807(result) 5819
+            5820:  7(f16vec4) FunctionCall 19(testTextureLodOffset()
+            5821:  7(f16vec4) Load 5807(result)
+            5822:  7(f16vec4) FAdd 5821 5820
+                              Store 5807(result) 5822
+            5823:  7(f16vec4) FunctionCall 21(testTextureProjLodOffset()
+            5824:  7(f16vec4) Load 5807(result)
+            5825:  7(f16vec4) FAdd 5824 5823
+                              Store 5807(result) 5825
+            5826:  7(f16vec4) FunctionCall 23(testTexelFetch()
+            5827:  7(f16vec4) Load 5807(result)
+            5828:  7(f16vec4) FAdd 5827 5826
+                              Store 5807(result) 5828
+            5829:  7(f16vec4) FunctionCall 25(testTexelFetchOffset()
+            5830:  7(f16vec4) Load 5807(result)
+            5831:  7(f16vec4) FAdd 5830 5829
+                              Store 5807(result) 5831
+            5832:  7(f16vec4) FunctionCall 27(testTextureGrad()
+            5833:  7(f16vec4) Load 5807(result)
+            5834:  7(f16vec4) FAdd 5833 5832
+                              Store 5807(result) 5834
+            5835:  7(f16vec4) FunctionCall 29(testTextureGradOffset()
+            5836:  7(f16vec4) Load 5807(result)
+            5837:  7(f16vec4) FAdd 5836 5835
+                              Store 5807(result) 5837
+            5838:  7(f16vec4) FunctionCall 31(testTextureProjGrad()
+            5839:  7(f16vec4) Load 5807(result)
+            5840:  7(f16vec4) FAdd 5839 5838
+                              Store 5807(result) 5840
+            5841:  7(f16vec4) FunctionCall 33(testTextureProjGradoffset()
+            5842:  7(f16vec4) Load 5807(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)
+                              Store 5807(result) 5843
+            5844:  7(f16vec4) FunctionCall 35(testTextureGather()
+            5845:  7(f16vec4) Load 5807(result)
+            5846:  7(f16vec4) FAdd 5845 5844
+                              Store 5807(result) 5846
+            5847:  7(f16vec4) FunctionCall 37(testTextureGatherOffset()
+            5848:  7(f16vec4) Load 5807(result)
             5849:  7(f16vec4) FAdd 5848 5847
-                              Store 5763(result) 5849
-            5850:  7(f16vec4) FunctionCall 71(testSparseTextureLod()
-            5851:  7(f16vec4) Load 5763(result)
+                              Store 5807(result) 5849
+            5850:  7(f16vec4) FunctionCall 39(testTextureGatherOffsets()
+            5851:  7(f16vec4) Load 5807(result)
             5852:  7(f16vec4) FAdd 5851 5850
-                              Store 5763(result) 5852
-            5853:  7(f16vec4) FunctionCall 73(testSparseTextureOffset()
-            5854:  7(f16vec4) Load 5763(result)
+                              Store 5807(result) 5852
+            5853:  7(f16vec4) FunctionCall 41(testTextureGatherLod()
+            5854:  7(f16vec4) Load 5807(result)
             5855:  7(f16vec4) FAdd 5854 5853
-                              Store 5763(result) 5855
-            5856:  7(f16vec4) FunctionCall 75(testSparseTextureLodOffset()
-            5857:  7(f16vec4) Load 5763(result)
+                              Store 5807(result) 5855
+            5856:  7(f16vec4) FunctionCall 43(testTextureGatherLodOffset()
+            5857:  7(f16vec4) Load 5807(result)
             5858:  7(f16vec4) FAdd 5857 5856
-                              Store 5763(result) 5858
-            5859:  7(f16vec4) FunctionCall 77(testSparseTextureGrad()
-            5860:  7(f16vec4) Load 5763(result)
+                              Store 5807(result) 5858
+            5859:  7(f16vec4) FunctionCall 45(testTextureGatherLodOffsets()
+            5860:  7(f16vec4) Load 5807(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
+                              Store 5807(result) 5861
+            5862:   48(ivec4) FunctionCall 50(testTextureSize()
+            5863:  7(f16vec4) ConvertSToF 5862
+            5864:  7(f16vec4) Load 5807(result)
+            5865:  7(f16vec4) FAdd 5864 5863
+                              Store 5807(result) 5865
+            5866:   53(fvec2) FunctionCall 55(testTextureQueryLod()
+            5867:154(f16vec2) FConvert 5866
+            5868:  7(f16vec4) Load 5807(result)
+            5869:154(f16vec2) VectorShuffle 5868 5868 0 1
+            5870:154(f16vec2) FAdd 5869 5867
+            5871:    208(ptr) AccessChain 5807(result) 207
+            5872:6(float16_t) CompositeExtract 5870 0
+                              Store 5871 5872
+            5873:    208(ptr) AccessChain 5807(result) 2581
+            5874:6(float16_t) CompositeExtract 5870 1
+                              Store 5873 5874
+            5875:     47(int) FunctionCall 58(testTextureQueryLevels()
+            5876:6(float16_t) ConvertSToF 5875
+            5877:    208(ptr) AccessChain 5807(result) 207
+            5878:6(float16_t) Load 5877
+            5879:6(float16_t) FAdd 5878 5876
+            5880:    208(ptr) AccessChain 5807(result) 207
+                              Store 5880 5879
+            5881:     47(int) FunctionCall 60(testTextureSamples()
+            5882:6(float16_t) ConvertSToF 5881
+            5883:    208(ptr) AccessChain 5807(result) 207
+            5884:6(float16_t) Load 5883
+            5885:6(float16_t) FAdd 5884 5882
+            5886:    208(ptr) AccessChain 5807(result) 207
+                              Store 5886 5885
+            5887:  7(f16vec4) FunctionCall 62(testImageLoad()
+            5888:  7(f16vec4) Load 5807(result)
+            5889:  7(f16vec4) FAdd 5888 5887
+                              Store 5807(result) 5889
+            5891:  7(f16vec4) Load 5807(result)
+                              Store 5890(param) 5891
+            5892:           2 FunctionCall 67(testImageStore(vf164;) 5890(param)
+            5893:  7(f16vec4) FunctionCall 69(testSparseTexture()
+            5894:  7(f16vec4) Load 5807(result)
+            5895:  7(f16vec4) FAdd 5894 5893
+                              Store 5807(result) 5895
+            5896:  7(f16vec4) FunctionCall 71(testSparseTextureLod()
+            5897:  7(f16vec4) Load 5807(result)
+            5898:  7(f16vec4) FAdd 5897 5896
+                              Store 5807(result) 5898
+            5899:  7(f16vec4) FunctionCall 73(testSparseTextureOffset()
+            5900:  7(f16vec4) Load 5807(result)
+            5901:  7(f16vec4) FAdd 5900 5899
+                              Store 5807(result) 5901
+            5902:  7(f16vec4) FunctionCall 75(testSparseTextureLodOffset()
+            5903:  7(f16vec4) Load 5807(result)
+            5904:  7(f16vec4) FAdd 5903 5902
+                              Store 5807(result) 5904
+            5905:  7(f16vec4) FunctionCall 77(testSparseTextureGrad()
+            5906:  7(f16vec4) Load 5807(result)
+            5907:  7(f16vec4) FAdd 5906 5905
+                              Store 5807(result) 5907
+            5908:  7(f16vec4) FunctionCall 79(testSparseTextureGradOffset()
+            5909:  7(f16vec4) Load 5807(result)
+            5910:  7(f16vec4) FAdd 5909 5908
+                              Store 5807(result) 5910
+            5911:  7(f16vec4) FunctionCall 81(testSparseTexelFetch()
+            5912:  7(f16vec4) Load 5807(result)
+            5913:  7(f16vec4) FAdd 5912 5911
+                              Store 5807(result) 5913
+            5914:  7(f16vec4) FunctionCall 83(testSparseTexelFetchOffset()
+            5915:  7(f16vec4) Load 5807(result)
+            5916:  7(f16vec4) FAdd 5915 5914
+                              Store 5807(result) 5916
+            5917:  7(f16vec4) FunctionCall 85(testSparseTextureGather()
+            5918:  7(f16vec4) Load 5807(result)
+            5919:  7(f16vec4) FAdd 5918 5917
+                              Store 5807(result) 5919
+            5920:  7(f16vec4) FunctionCall 87(testSparseTextureGatherOffset()
+            5921:  7(f16vec4) Load 5807(result)
+            5922:  7(f16vec4) FAdd 5921 5920
+                              Store 5807(result) 5922
+            5923:  7(f16vec4) FunctionCall 89(testSparseTextureGatherOffsets()
+            5924:  7(f16vec4) Load 5807(result)
+            5925:  7(f16vec4) FAdd 5924 5923
+                              Store 5807(result) 5925
+            5926:  7(f16vec4) FunctionCall 91(testSparseTextureGatherLod()
+            5927:  7(f16vec4) Load 5807(result)
+            5928:  7(f16vec4) FAdd 5927 5926
+                              Store 5807(result) 5928
+            5929:  7(f16vec4) FunctionCall 93(testSparseTextureGatherLodOffset()
+            5930:  7(f16vec4) Load 5807(result)
+            5931:  7(f16vec4) FAdd 5930 5929
+                              Store 5807(result) 5931
+            5932:  7(f16vec4) FunctionCall 95(testSparseTextureGatherLodOffsets()
+            5933:  7(f16vec4) Load 5807(result)
+            5934:  7(f16vec4) FAdd 5933 5932
+                              Store 5807(result) 5934
+            5935:  7(f16vec4) FunctionCall 97(testSparseImageLoad()
+            5936:  7(f16vec4) Load 5807(result)
+            5937:  7(f16vec4) FAdd 5936 5935
+                              Store 5807(result) 5937
+            5938:  7(f16vec4) FunctionCall 99(testSparseTextureClamp()
+            5939:  7(f16vec4) Load 5807(result)
+            5940:  7(f16vec4) FAdd 5939 5938
+                              Store 5807(result) 5940
+            5941:  7(f16vec4) FunctionCall 101(testTextureClamp()
+            5942:  7(f16vec4) Load 5807(result)
+            5943:  7(f16vec4) FAdd 5942 5941
+                              Store 5807(result) 5943
+            5944:  7(f16vec4) FunctionCall 103(testSparseTextureOffsetClamp()
+            5945:  7(f16vec4) Load 5807(result)
+            5946:  7(f16vec4) FAdd 5945 5944
+                              Store 5807(result) 5946
+            5947:  7(f16vec4) FunctionCall 105(testTextureOffsetClamp()
+            5948:  7(f16vec4) Load 5807(result)
+            5949:  7(f16vec4) FAdd 5948 5947
+                              Store 5807(result) 5949
+            5950:  7(f16vec4) FunctionCall 77(testSparseTextureGrad()
+            5951:  7(f16vec4) Load 5807(result)
+            5952:  7(f16vec4) FAdd 5951 5950
+                              Store 5807(result) 5952
+            5953:  7(f16vec4) FunctionCall 27(testTextureGrad()
+            5954:  7(f16vec4) Load 5807(result)
+            5955:  7(f16vec4) FAdd 5954 5953
+                              Store 5807(result) 5955
+            5956:  7(f16vec4) FunctionCall 111(testSparseTextureGradOffsetClamp()
+            5957:  7(f16vec4) Load 5807(result)
+            5958:  7(f16vec4) FAdd 5957 5956
+                              Store 5807(result) 5958
+            5959:  7(f16vec4) FunctionCall 113(testTextureGradOffsetClamp()
+            5960:  7(f16vec4) Load 5807(result)
+            5961:  7(f16vec4) FAdd 5960 5959
+                              Store 5807(result) 5961
+            5962:  7(f16vec4) FunctionCall 115(testCombinedTextureSampler()
+            5963:  7(f16vec4) Load 5807(result)
+            5964:  7(f16vec4) FAdd 5963 5962
+                              Store 5807(result) 5964
+            5965:  7(f16vec4) FunctionCall 117(testSubpassLoad()
+            5966:  7(f16vec4) Load 5807(result)
+            5967:  7(f16vec4) FAdd 5966 5965
+                              Store 5807(result) 5967
+            5970:  7(f16vec4) Load 5807(result)
+            5971:  249(fvec4) FConvert 5970
+                              Store 5969(fragColor) 5971
                               Return
                               FunctionEnd
  9(testTexture():  7(f16vec4) Function None 8
@@ -3463,3619 +3468,3682 @@
             2576:   48(ivec4) Load 2559(size)
             2577:  721(ivec2) VectorShuffle 2576 2576 0 1
             2578:  721(ivec2) IAdd 2577 2575
-            2579:   48(ivec4) Load 2559(size)
-            2580:   48(ivec4) VectorShuffle 2579 2578 4 5 2 3
-                              Store 2559(size) 2580
-            2581:         163 Load 165(s3D)
-            2582:   52(float) Load 565(lod)
-            2583:     47(int) ConvertFToS 2582
-            2584:         162 Image 2581
-            2585:  734(ivec3) ImageQuerySizeLod 2584 2583
-            2586:   48(ivec4) Load 2559(size)
-            2587:  734(ivec3) VectorShuffle 2586 2586 0 1 2
-            2588:  734(ivec3) IAdd 2587 2585
+            2579:   2566(ptr) AccessChain 2559(size) 207
+            2580:     47(int) CompositeExtract 2578 0
+                              Store 2579 2580
+            2582:   2566(ptr) AccessChain 2559(size) 2581
+            2583:     47(int) CompositeExtract 2578 1
+                              Store 2582 2583
+            2584:         163 Load 165(s3D)
+            2585:   52(float) Load 565(lod)
+            2586:     47(int) ConvertFToS 2585
+            2587:         162 Image 2584
+            2588:  734(ivec3) ImageQuerySizeLod 2587 2586
             2589:   48(ivec4) Load 2559(size)
-            2590:   48(ivec4) VectorShuffle 2589 2588 4 5 6 3
-                              Store 2559(size) 2590
-            2591:         184 Load 186(sCube)
-            2592:   52(float) Load 565(lod)
-            2593:     47(int) ConvertFToS 2592
-            2594:         183 Image 2591
-            2595:  721(ivec2) ImageQuerySizeLod 2594 2593
-            2596:   48(ivec4) Load 2559(size)
-            2597:  721(ivec2) VectorShuffle 2596 2596 0 1
-            2598:  721(ivec2) IAdd 2597 2595
-            2599:   48(ivec4) Load 2559(size)
-            2600:   48(ivec4) VectorShuffle 2599 2598 4 5 2 3
-                              Store 2559(size) 2600
-            2601:         199 Load 201(s1DShadow)
-            2602:   52(float) Load 565(lod)
-            2603:     47(int) ConvertFToS 2602
-            2604:         198 Image 2601
-            2605:     47(int) ImageQuerySizeLod 2604 2603
-            2606:   2566(ptr) AccessChain 2559(size) 207
-            2607:     47(int) Load 2606
-            2608:     47(int) IAdd 2607 2605
-            2609:   2566(ptr) AccessChain 2559(size) 207
-                              Store 2609 2608
-            2610:         224 Load 226(s2DShadow)
-            2611:   52(float) Load 565(lod)
-            2612:     47(int) ConvertFToS 2611
-            2613:         223 Image 2610
-            2614:  721(ivec2) ImageQuerySizeLod 2613 2612
-            2615:   48(ivec4) Load 2559(size)
-            2616:  721(ivec2) VectorShuffle 2615 2615 0 1
-            2617:  721(ivec2) IAdd 2616 2614
-            2618:   48(ivec4) Load 2559(size)
-            2619:   48(ivec4) VectorShuffle 2618 2617 4 5 2 3
-                              Store 2559(size) 2619
-            2620:         245 Load 247(sCubeShadow)
+            2590:  734(ivec3) VectorShuffle 2589 2589 0 1 2
+            2591:  734(ivec3) IAdd 2590 2588
+            2592:   2566(ptr) AccessChain 2559(size) 207
+            2593:     47(int) CompositeExtract 2591 0
+                              Store 2592 2593
+            2594:   2566(ptr) AccessChain 2559(size) 2581
+            2595:     47(int) CompositeExtract 2591 1
+                              Store 2594 2595
+            2597:   2566(ptr) AccessChain 2559(size) 2596
+            2598:     47(int) CompositeExtract 2591 2
+                              Store 2597 2598
+            2599:         184 Load 186(sCube)
+            2600:   52(float) Load 565(lod)
+            2601:     47(int) ConvertFToS 2600
+            2602:         183 Image 2599
+            2603:  721(ivec2) ImageQuerySizeLod 2602 2601
+            2604:   48(ivec4) Load 2559(size)
+            2605:  721(ivec2) VectorShuffle 2604 2604 0 1
+            2606:  721(ivec2) IAdd 2605 2603
+            2607:   2566(ptr) AccessChain 2559(size) 207
+            2608:     47(int) CompositeExtract 2606 0
+                              Store 2607 2608
+            2609:   2566(ptr) AccessChain 2559(size) 2581
+            2610:     47(int) CompositeExtract 2606 1
+                              Store 2609 2610
+            2611:         199 Load 201(s1DShadow)
+            2612:   52(float) Load 565(lod)
+            2613:     47(int) ConvertFToS 2612
+            2614:         198 Image 2611
+            2615:     47(int) ImageQuerySizeLod 2614 2613
+            2616:   2566(ptr) AccessChain 2559(size) 207
+            2617:     47(int) Load 2616
+            2618:     47(int) IAdd 2617 2615
+            2619:   2566(ptr) AccessChain 2559(size) 207
+                              Store 2619 2618
+            2620:         224 Load 226(s2DShadow)
             2621:   52(float) Load 565(lod)
             2622:     47(int) ConvertFToS 2621
-            2623:         244 Image 2620
+            2623:         223 Image 2620
             2624:  721(ivec2) ImageQuerySizeLod 2623 2622
             2625:   48(ivec4) Load 2559(size)
             2626:  721(ivec2) VectorShuffle 2625 2625 0 1
             2627:  721(ivec2) IAdd 2626 2624
-            2628:   48(ivec4) Load 2559(size)
-            2629:   48(ivec4) VectorShuffle 2628 2627 4 5 2 3
-                              Store 2559(size) 2629
-            2630:         299 Load 301(sCubeArray)
-            2631:   52(float) Load 565(lod)
-            2632:     47(int) ConvertFToS 2631
-            2633:         298 Image 2630
-            2634:  734(ivec3) ImageQuerySizeLod 2633 2632
-            2635:   48(ivec4) Load 2559(size)
-            2636:  734(ivec3) VectorShuffle 2635 2635 0 1 2
-            2637:  734(ivec3) IAdd 2636 2634
-            2638:   48(ivec4) Load 2559(size)
-            2639:   48(ivec4) VectorShuffle 2638 2637 4 5 6 3
-                              Store 2559(size) 2639
-            2640:         391 Load 393(sCubeArrayShadow)
-            2641:   52(float) Load 565(lod)
-            2642:     47(int) ConvertFToS 2641
-            2643:         390 Image 2640
-            2644:  734(ivec3) ImageQuerySizeLod 2643 2642
-            2645:   48(ivec4) Load 2559(size)
-            2646:  734(ivec3) VectorShuffle 2645 2645 0 1 2
-            2647:  734(ivec3) IAdd 2646 2644
-            2648:   48(ivec4) Load 2559(size)
-            2649:   48(ivec4) VectorShuffle 2648 2647 4 5 6 3
-                              Store 2559(size) 2649
-            2650:         357 Load 359(s2DRect)
-            2651:         356 Image 2650
-            2652:  721(ivec2) ImageQuerySize 2651
-            2653:   48(ivec4) Load 2559(size)
-            2654:  721(ivec2) VectorShuffle 2653 2653 0 1
-            2655:  721(ivec2) IAdd 2654 2652
-            2656:   48(ivec4) Load 2559(size)
-            2657:   48(ivec4) VectorShuffle 2656 2655 4 5 2 3
-                              Store 2559(size) 2657
-            2658:         371 Load 373(s2DRectShadow)
-            2659:         370 Image 2658
-            2660:  721(ivec2) ImageQuerySize 2659
-            2661:   48(ivec4) Load 2559(size)
-            2662:  721(ivec2) VectorShuffle 2661 2661 0 1
-            2663:  721(ivec2) IAdd 2662 2660
-            2664:   48(ivec4) Load 2559(size)
-            2665:   48(ivec4) VectorShuffle 2664 2663 4 5 2 3
-                              Store 2559(size) 2665
-            2666:         269 Load 271(s1DArray)
-            2667:   52(float) Load 565(lod)
-            2668:     47(int) ConvertFToS 2667
-            2669:         268 Image 2666
-            2670:  721(ivec2) ImageQuerySizeLod 2669 2668
-            2671:   48(ivec4) Load 2559(size)
-            2672:  721(ivec2) VectorShuffle 2671 2671 0 1
-            2673:  721(ivec2) IAdd 2672 2670
-            2674:   48(ivec4) Load 2559(size)
-            2675:   48(ivec4) VectorShuffle 2674 2673 4 5 2 3
-                              Store 2559(size) 2675
-            2676:         284 Load 286(s2DArray)
-            2677:   52(float) Load 565(lod)
-            2678:     47(int) ConvertFToS 2677
-            2679:         283 Image 2676
-            2680:  734(ivec3) ImageQuerySizeLod 2679 2678
-            2681:   48(ivec4) Load 2559(size)
-            2682:  734(ivec3) VectorShuffle 2681 2681 0 1 2
-            2683:  734(ivec3) IAdd 2682 2680
-            2684:   48(ivec4) Load 2559(size)
-            2685:   48(ivec4) VectorShuffle 2684 2683 4 5 6 3
-                              Store 2559(size) 2685
-            2686:         316 Load 318(s1DArrayShadow)
-            2687:   52(float) Load 565(lod)
-            2688:     47(int) ConvertFToS 2687
-            2689:         315 Image 2686
-            2690:  721(ivec2) ImageQuerySizeLod 2689 2688
-            2691:   48(ivec4) Load 2559(size)
-            2692:  721(ivec2) VectorShuffle 2691 2691 0 1
-            2693:  721(ivec2) IAdd 2692 2690
-            2694:   48(ivec4) Load 2559(size)
-            2695:   48(ivec4) VectorShuffle 2694 2693 4 5 2 3
-                              Store 2559(size) 2695
-            2696:         337 Load 339(s2DArrayShadow)
-            2697:   52(float) Load 565(lod)
-            2698:     47(int) ConvertFToS 2697
-            2699:         336 Image 2696
-            2700:  734(ivec3) ImageQuerySizeLod 2699 2698
-            2701:   48(ivec4) Load 2559(size)
-            2702:  734(ivec3) VectorShuffle 2701 2701 0 1 2
-            2703:  734(ivec3) IAdd 2702 2700
-            2704:   48(ivec4) Load 2559(size)
-            2705:   48(ivec4) VectorShuffle 2704 2703 4 5 6 3
-                              Store 2559(size) 2705
-            2706:        1298 Load 1300(sBuffer)
-            2707:        1297 Image 2706
-            2708:     47(int) ImageQuerySize 2707
-            2709:   2566(ptr) AccessChain 2559(size) 207
-            2710:     47(int) Load 2709
-            2711:     47(int) IAdd 2710 2708
+            2628:   2566(ptr) AccessChain 2559(size) 207
+            2629:     47(int) CompositeExtract 2627 0
+                              Store 2628 2629
+            2630:   2566(ptr) AccessChain 2559(size) 2581
+            2631:     47(int) CompositeExtract 2627 1
+                              Store 2630 2631
+            2632:         245 Load 247(sCubeShadow)
+            2633:   52(float) Load 565(lod)
+            2634:     47(int) ConvertFToS 2633
+            2635:         244 Image 2632
+            2636:  721(ivec2) ImageQuerySizeLod 2635 2634
+            2637:   48(ivec4) Load 2559(size)
+            2638:  721(ivec2) VectorShuffle 2637 2637 0 1
+            2639:  721(ivec2) IAdd 2638 2636
+            2640:   2566(ptr) AccessChain 2559(size) 207
+            2641:     47(int) CompositeExtract 2639 0
+                              Store 2640 2641
+            2642:   2566(ptr) AccessChain 2559(size) 2581
+            2643:     47(int) CompositeExtract 2639 1
+                              Store 2642 2643
+            2644:         299 Load 301(sCubeArray)
+            2645:   52(float) Load 565(lod)
+            2646:     47(int) ConvertFToS 2645
+            2647:         298 Image 2644
+            2648:  734(ivec3) ImageQuerySizeLod 2647 2646
+            2649:   48(ivec4) Load 2559(size)
+            2650:  734(ivec3) VectorShuffle 2649 2649 0 1 2
+            2651:  734(ivec3) IAdd 2650 2648
+            2652:   2566(ptr) AccessChain 2559(size) 207
+            2653:     47(int) CompositeExtract 2651 0
+                              Store 2652 2653
+            2654:   2566(ptr) AccessChain 2559(size) 2581
+            2655:     47(int) CompositeExtract 2651 1
+                              Store 2654 2655
+            2656:   2566(ptr) AccessChain 2559(size) 2596
+            2657:     47(int) CompositeExtract 2651 2
+                              Store 2656 2657
+            2658:         391 Load 393(sCubeArrayShadow)
+            2659:   52(float) Load 565(lod)
+            2660:     47(int) ConvertFToS 2659
+            2661:         390 Image 2658
+            2662:  734(ivec3) ImageQuerySizeLod 2661 2660
+            2663:   48(ivec4) Load 2559(size)
+            2664:  734(ivec3) VectorShuffle 2663 2663 0 1 2
+            2665:  734(ivec3) IAdd 2664 2662
+            2666:   2566(ptr) AccessChain 2559(size) 207
+            2667:     47(int) CompositeExtract 2665 0
+                              Store 2666 2667
+            2668:   2566(ptr) AccessChain 2559(size) 2581
+            2669:     47(int) CompositeExtract 2665 1
+                              Store 2668 2669
+            2670:   2566(ptr) AccessChain 2559(size) 2596
+            2671:     47(int) CompositeExtract 2665 2
+                              Store 2670 2671
+            2672:         357 Load 359(s2DRect)
+            2673:         356 Image 2672
+            2674:  721(ivec2) ImageQuerySize 2673
+            2675:   48(ivec4) Load 2559(size)
+            2676:  721(ivec2) VectorShuffle 2675 2675 0 1
+            2677:  721(ivec2) IAdd 2676 2674
+            2678:   2566(ptr) AccessChain 2559(size) 207
+            2679:     47(int) CompositeExtract 2677 0
+                              Store 2678 2679
+            2680:   2566(ptr) AccessChain 2559(size) 2581
+            2681:     47(int) CompositeExtract 2677 1
+                              Store 2680 2681
+            2682:         371 Load 373(s2DRectShadow)
+            2683:         370 Image 2682
+            2684:  721(ivec2) ImageQuerySize 2683
+            2685:   48(ivec4) Load 2559(size)
+            2686:  721(ivec2) VectorShuffle 2685 2685 0 1
+            2687:  721(ivec2) IAdd 2686 2684
+            2688:   2566(ptr) AccessChain 2559(size) 207
+            2689:     47(int) CompositeExtract 2687 0
+                              Store 2688 2689
+            2690:   2566(ptr) AccessChain 2559(size) 2581
+            2691:     47(int) CompositeExtract 2687 1
+                              Store 2690 2691
+            2692:         269 Load 271(s1DArray)
+            2693:   52(float) Load 565(lod)
+            2694:     47(int) ConvertFToS 2693
+            2695:         268 Image 2692
+            2696:  721(ivec2) ImageQuerySizeLod 2695 2694
+            2697:   48(ivec4) Load 2559(size)
+            2698:  721(ivec2) VectorShuffle 2697 2697 0 1
+            2699:  721(ivec2) IAdd 2698 2696
+            2700:   2566(ptr) AccessChain 2559(size) 207
+            2701:     47(int) CompositeExtract 2699 0
+                              Store 2700 2701
+            2702:   2566(ptr) AccessChain 2559(size) 2581
+            2703:     47(int) CompositeExtract 2699 1
+                              Store 2702 2703
+            2704:         284 Load 286(s2DArray)
+            2705:   52(float) Load 565(lod)
+            2706:     47(int) ConvertFToS 2705
+            2707:         283 Image 2704
+            2708:  734(ivec3) ImageQuerySizeLod 2707 2706
+            2709:   48(ivec4) Load 2559(size)
+            2710:  734(ivec3) VectorShuffle 2709 2709 0 1 2
+            2711:  734(ivec3) IAdd 2710 2708
             2712:   2566(ptr) AccessChain 2559(size) 207
-                              Store 2712 2711
-            2713:        1309 Load 1311(s2DMS)
-            2714:        1308 Image 2713
-            2715:  721(ivec2) ImageQuerySize 2714
-            2716:   48(ivec4) Load 2559(size)
-            2717:  721(ivec2) VectorShuffle 2716 2716 0 1
-            2718:  721(ivec2) IAdd 2717 2715
-            2719:   48(ivec4) Load 2559(size)
-            2720:   48(ivec4) VectorShuffle 2719 2718 4 5 2 3
-                              Store 2559(size) 2720
-            2721:        1320 Load 1322(s2DMSArray)
-            2722:        1319 Image 2721
-            2723:  734(ivec3) ImageQuerySize 2722
-            2724:   48(ivec4) Load 2559(size)
-            2725:  734(ivec3) VectorShuffle 2724 2724 0 1 2
-            2726:  734(ivec3) IAdd 2725 2723
-            2727:   48(ivec4) Load 2559(size)
-            2728:   48(ivec4) VectorShuffle 2727 2726 4 5 6 3
-                              Store 2559(size) 2728
-            2729:   48(ivec4) Load 2559(size)
-                              ReturnValue 2729
+            2713:     47(int) CompositeExtract 2711 0
+                              Store 2712 2713
+            2714:   2566(ptr) AccessChain 2559(size) 2581
+            2715:     47(int) CompositeExtract 2711 1
+                              Store 2714 2715
+            2716:   2566(ptr) AccessChain 2559(size) 2596
+            2717:     47(int) CompositeExtract 2711 2
+                              Store 2716 2717
+            2718:         316 Load 318(s1DArrayShadow)
+            2719:   52(float) Load 565(lod)
+            2720:     47(int) ConvertFToS 2719
+            2721:         315 Image 2718
+            2722:  721(ivec2) ImageQuerySizeLod 2721 2720
+            2723:   48(ivec4) Load 2559(size)
+            2724:  721(ivec2) VectorShuffle 2723 2723 0 1
+            2725:  721(ivec2) IAdd 2724 2722
+            2726:   2566(ptr) AccessChain 2559(size) 207
+            2727:     47(int) CompositeExtract 2725 0
+                              Store 2726 2727
+            2728:   2566(ptr) AccessChain 2559(size) 2581
+            2729:     47(int) CompositeExtract 2725 1
+                              Store 2728 2729
+            2730:         337 Load 339(s2DArrayShadow)
+            2731:   52(float) Load 565(lod)
+            2732:     47(int) ConvertFToS 2731
+            2733:         336 Image 2730
+            2734:  734(ivec3) ImageQuerySizeLod 2733 2732
+            2735:   48(ivec4) Load 2559(size)
+            2736:  734(ivec3) VectorShuffle 2735 2735 0 1 2
+            2737:  734(ivec3) IAdd 2736 2734
+            2738:   2566(ptr) AccessChain 2559(size) 207
+            2739:     47(int) CompositeExtract 2737 0
+                              Store 2738 2739
+            2740:   2566(ptr) AccessChain 2559(size) 2581
+            2741:     47(int) CompositeExtract 2737 1
+                              Store 2740 2741
+            2742:   2566(ptr) AccessChain 2559(size) 2596
+            2743:     47(int) CompositeExtract 2737 2
+                              Store 2742 2743
+            2744:        1298 Load 1300(sBuffer)
+            2745:        1297 Image 2744
+            2746:     47(int) ImageQuerySize 2745
+            2747:   2566(ptr) AccessChain 2559(size) 207
+            2748:     47(int) Load 2747
+            2749:     47(int) IAdd 2748 2746
+            2750:   2566(ptr) AccessChain 2559(size) 207
+                              Store 2750 2749
+            2751:        1309 Load 1311(s2DMS)
+            2752:        1308 Image 2751
+            2753:  721(ivec2) ImageQuerySize 2752
+            2754:   48(ivec4) Load 2559(size)
+            2755:  721(ivec2) VectorShuffle 2754 2754 0 1
+            2756:  721(ivec2) IAdd 2755 2753
+            2757:   2566(ptr) AccessChain 2559(size) 207
+            2758:     47(int) CompositeExtract 2756 0
+                              Store 2757 2758
+            2759:   2566(ptr) AccessChain 2559(size) 2581
+            2760:     47(int) CompositeExtract 2756 1
+                              Store 2759 2760
+            2761:        1320 Load 1322(s2DMSArray)
+            2762:        1319 Image 2761
+            2763:  734(ivec3) ImageQuerySize 2762
+            2764:   48(ivec4) Load 2559(size)
+            2765:  734(ivec3) VectorShuffle 2764 2764 0 1 2
+            2766:  734(ivec3) IAdd 2765 2763
+            2767:   2566(ptr) AccessChain 2559(size) 207
+            2768:     47(int) CompositeExtract 2766 0
+                              Store 2767 2768
+            2769:   2566(ptr) AccessChain 2559(size) 2581
+            2770:     47(int) CompositeExtract 2766 1
+                              Store 2769 2770
+            2771:   2566(ptr) AccessChain 2559(size) 2596
+            2772:     47(int) CompositeExtract 2766 2
+                              Store 2771 2772
+            2773:   48(ivec4) Load 2559(size)
+                              ReturnValue 2773
                               FunctionEnd
 55(testTextureQueryLod():   53(fvec2) Function None 54
               56:             Label
-       2733(lod):   2732(ptr) Variable Function
-                              Store 2733(lod) 2735
-            2736:         123 Load 125(s1D)
-            2737:   52(float) Load 128(c1)
-            2738:   53(fvec2) ImageQueryLod 2736 2737
-            2739:   53(fvec2) Load 2733(lod)
-            2740:   53(fvec2) FAdd 2739 2738
-                              Store 2733(lod) 2740
-            2741:         123 Load 125(s1D)
-            2742:6(float16_t) Load 135(f16c1)
-            2743:154(f16vec2) ImageQueryLod 2741 2742
-            2744:   53(fvec2) Load 2733(lod)
-            2745:   53(fvec2) FAdd 2744 2743
-                              Store 2733(lod) 2745
-            2746:         143 Load 145(s2D)
-            2747:   53(fvec2) Load 148(c2)
-            2748:   53(fvec2) ImageQueryLod 2746 2747
-            2749:   53(fvec2) Load 2733(lod)
-            2750:   53(fvec2) FAdd 2749 2748
-                              Store 2733(lod) 2750
-            2751:         143 Load 145(s2D)
-            2752:154(f16vec2) Load 156(f16c2)
-            2753:154(f16vec2) ImageQueryLod 2751 2752
-            2754:   53(fvec2) Load 2733(lod)
-            2755:   53(fvec2) FAdd 2754 2753
-                              Store 2733(lod) 2755
-            2756:         163 Load 165(s3D)
-            2757:  167(fvec3) Load 169(c3)
-            2758:   53(fvec2) ImageQueryLod 2756 2757
-            2759:   53(fvec2) Load 2733(lod)
-            2760:   53(fvec2) FAdd 2759 2758
-                              Store 2733(lod) 2760
-            2761:         163 Load 165(s3D)
-            2762:175(f16vec3) Load 177(f16c3)
-            2763:154(f16vec2) ImageQueryLod 2761 2762
-            2764:   53(fvec2) Load 2733(lod)
-            2765:   53(fvec2) FAdd 2764 2763
-                              Store 2733(lod) 2765
-            2766:         184 Load 186(sCube)
-            2767:  167(fvec3) Load 169(c3)
-            2768:   53(fvec2) ImageQueryLod 2766 2767
-            2769:   53(fvec2) Load 2733(lod)
-            2770:   53(fvec2) FAdd 2769 2768
-                              Store 2733(lod) 2770
-            2771:         184 Load 186(sCube)
-            2772:175(f16vec3) Load 177(f16c3)
-            2773:154(f16vec2) ImageQueryLod 2771 2772
-            2774:   53(fvec2) Load 2733(lod)
-            2775:   53(fvec2) FAdd 2774 2773
-                              Store 2733(lod) 2775
-            2776:         269 Load 271(s1DArray)
-            2777:   52(float) Load 128(c1)
-            2778:   53(fvec2) ImageQueryLod 2776 2777
-            2779:   53(fvec2) Load 2733(lod)
-            2780:   53(fvec2) FAdd 2779 2778
-                              Store 2733(lod) 2780
-            2781:         269 Load 271(s1DArray)
-            2782:6(float16_t) Load 135(f16c1)
-            2783:154(f16vec2) ImageQueryLod 2781 2782
-            2784:   53(fvec2) Load 2733(lod)
-            2785:   53(fvec2) FAdd 2784 2783
-                              Store 2733(lod) 2785
-            2786:         284 Load 286(s2DArray)
-            2787:   53(fvec2) Load 148(c2)
-            2788:   53(fvec2) ImageQueryLod 2786 2787
-            2789:   53(fvec2) Load 2733(lod)
-            2790:   53(fvec2) FAdd 2789 2788
-                              Store 2733(lod) 2790
-            2791:         284 Load 286(s2DArray)
-            2792:154(f16vec2) Load 156(f16c2)
-            2793:154(f16vec2) ImageQueryLod 2791 2792
-            2794:   53(fvec2) Load 2733(lod)
-            2795:   53(fvec2) FAdd 2794 2793
-                              Store 2733(lod) 2795
-            2796:         299 Load 301(sCubeArray)
-            2797:  167(fvec3) Load 169(c3)
-            2798:   53(fvec2) ImageQueryLod 2796 2797
-            2799:   53(fvec2) Load 2733(lod)
-            2800:   53(fvec2) FAdd 2799 2798
-                              Store 2733(lod) 2800
-            2801:         299 Load 301(sCubeArray)
-            2802:175(f16vec3) Load 177(f16c3)
-            2803:154(f16vec2) ImageQueryLod 2801 2802
-            2804:   53(fvec2) Load 2733(lod)
-            2805:   53(fvec2) FAdd 2804 2803
-                              Store 2733(lod) 2805
-            2806:         199 Load 201(s1DShadow)
-            2807:   52(float) Load 128(c1)
-            2808:   53(fvec2) ImageQueryLod 2806 2807
-            2809:   53(fvec2) Load 2733(lod)
-            2810:   53(fvec2) FAdd 2809 2808
-                              Store 2733(lod) 2810
-            2811:         199 Load 201(s1DShadow)
-            2812:6(float16_t) Load 135(f16c1)
-            2813:154(f16vec2) ImageQueryLod 2811 2812
-            2814:   53(fvec2) Load 2733(lod)
-            2815:   53(fvec2) FAdd 2814 2813
-                              Store 2733(lod) 2815
-            2816:         224 Load 226(s2DShadow)
-            2817:   53(fvec2) Load 148(c2)
-            2818:   53(fvec2) ImageQueryLod 2816 2817
-            2819:   53(fvec2) Load 2733(lod)
-            2820:   53(fvec2) FAdd 2819 2818
-                              Store 2733(lod) 2820
-            2821:         224 Load 226(s2DShadow)
-            2822:154(f16vec2) Load 156(f16c2)
-            2823:154(f16vec2) ImageQueryLod 2821 2822
-            2824:   53(fvec2) Load 2733(lod)
-            2825:   53(fvec2) FAdd 2824 2823
-                              Store 2733(lod) 2825
-            2826:         391 Load 393(sCubeArrayShadow)
-            2827:  167(fvec3) Load 169(c3)
-            2828:   53(fvec2) ImageQueryLod 2826 2827
-            2829:   53(fvec2) Load 2733(lod)
-            2830:   53(fvec2) FAdd 2829 2828
-                              Store 2733(lod) 2830
-            2831:         391 Load 393(sCubeArrayShadow)
-            2832:175(f16vec3) Load 177(f16c3)
-            2833:154(f16vec2) ImageQueryLod 2831 2832
-            2834:   53(fvec2) Load 2733(lod)
-            2835:   53(fvec2) FAdd 2834 2833
-                              Store 2733(lod) 2835
-            2836:         316 Load 318(s1DArrayShadow)
-            2837:   52(float) Load 128(c1)
-            2838:   53(fvec2) ImageQueryLod 2836 2837
-            2839:   53(fvec2) Load 2733(lod)
-            2840:   53(fvec2) FAdd 2839 2838
-                              Store 2733(lod) 2840
-            2841:         316 Load 318(s1DArrayShadow)
-            2842:6(float16_t) Load 135(f16c1)
-            2843:154(f16vec2) ImageQueryLod 2841 2842
-            2844:   53(fvec2) Load 2733(lod)
-            2845:   53(fvec2) FAdd 2844 2843
-                              Store 2733(lod) 2845
-            2846:         337 Load 339(s2DArrayShadow)
-            2847:   53(fvec2) Load 148(c2)
-            2848:   53(fvec2) ImageQueryLod 2846 2847
-            2849:   53(fvec2) Load 2733(lod)
-            2850:   53(fvec2) FAdd 2849 2848
-                              Store 2733(lod) 2850
-            2851:         337 Load 339(s2DArrayShadow)
-            2852:154(f16vec2) Load 156(f16c2)
-            2853:154(f16vec2) ImageQueryLod 2851 2852
-            2854:   53(fvec2) Load 2733(lod)
-            2855:   53(fvec2) FAdd 2854 2853
-                              Store 2733(lod) 2855
-            2856:         391 Load 393(sCubeArrayShadow)
-            2857:  167(fvec3) Load 169(c3)
-            2858:   53(fvec2) ImageQueryLod 2856 2857
-            2859:   53(fvec2) Load 2733(lod)
-            2860:   53(fvec2) FAdd 2859 2858
-                              Store 2733(lod) 2860
-            2861:         391 Load 393(sCubeArrayShadow)
-            2862:175(f16vec3) Load 177(f16c3)
-            2863:154(f16vec2) ImageQueryLod 2861 2862
-            2864:   53(fvec2) Load 2733(lod)
-            2865:   53(fvec2) FAdd 2864 2863
-                              Store 2733(lod) 2865
-            2866:   53(fvec2) Load 2733(lod)
-                              ReturnValue 2866
+       2777(lod):   2776(ptr) Variable Function
+                              Store 2777(lod) 2779
+            2780:         123 Load 125(s1D)
+            2781:   52(float) Load 128(c1)
+            2782:   53(fvec2) ImageQueryLod 2780 2781
+            2783:   53(fvec2) Load 2777(lod)
+            2784:   53(fvec2) FAdd 2783 2782
+                              Store 2777(lod) 2784
+            2785:         123 Load 125(s1D)
+            2786:6(float16_t) Load 135(f16c1)
+            2787:154(f16vec2) ImageQueryLod 2785 2786
+            2788:   53(fvec2) Load 2777(lod)
+            2789:   53(fvec2) FAdd 2788 2787
+                              Store 2777(lod) 2789
+            2790:         143 Load 145(s2D)
+            2791:   53(fvec2) Load 148(c2)
+            2792:   53(fvec2) ImageQueryLod 2790 2791
+            2793:   53(fvec2) Load 2777(lod)
+            2794:   53(fvec2) FAdd 2793 2792
+                              Store 2777(lod) 2794
+            2795:         143 Load 145(s2D)
+            2796:154(f16vec2) Load 156(f16c2)
+            2797:154(f16vec2) ImageQueryLod 2795 2796
+            2798:   53(fvec2) Load 2777(lod)
+            2799:   53(fvec2) FAdd 2798 2797
+                              Store 2777(lod) 2799
+            2800:         163 Load 165(s3D)
+            2801:  167(fvec3) Load 169(c3)
+            2802:   53(fvec2) ImageQueryLod 2800 2801
+            2803:   53(fvec2) Load 2777(lod)
+            2804:   53(fvec2) FAdd 2803 2802
+                              Store 2777(lod) 2804
+            2805:         163 Load 165(s3D)
+            2806:175(f16vec3) Load 177(f16c3)
+            2807:154(f16vec2) ImageQueryLod 2805 2806
+            2808:   53(fvec2) Load 2777(lod)
+            2809:   53(fvec2) FAdd 2808 2807
+                              Store 2777(lod) 2809
+            2810:         184 Load 186(sCube)
+            2811:  167(fvec3) Load 169(c3)
+            2812:   53(fvec2) ImageQueryLod 2810 2811
+            2813:   53(fvec2) Load 2777(lod)
+            2814:   53(fvec2) FAdd 2813 2812
+                              Store 2777(lod) 2814
+            2815:         184 Load 186(sCube)
+            2816:175(f16vec3) Load 177(f16c3)
+            2817:154(f16vec2) ImageQueryLod 2815 2816
+            2818:   53(fvec2) Load 2777(lod)
+            2819:   53(fvec2) FAdd 2818 2817
+                              Store 2777(lod) 2819
+            2820:         269 Load 271(s1DArray)
+            2821:   52(float) Load 128(c1)
+            2822:   53(fvec2) ImageQueryLod 2820 2821
+            2823:   53(fvec2) Load 2777(lod)
+            2824:   53(fvec2) FAdd 2823 2822
+                              Store 2777(lod) 2824
+            2825:         269 Load 271(s1DArray)
+            2826:6(float16_t) Load 135(f16c1)
+            2827:154(f16vec2) ImageQueryLod 2825 2826
+            2828:   53(fvec2) Load 2777(lod)
+            2829:   53(fvec2) FAdd 2828 2827
+                              Store 2777(lod) 2829
+            2830:         284 Load 286(s2DArray)
+            2831:   53(fvec2) Load 148(c2)
+            2832:   53(fvec2) ImageQueryLod 2830 2831
+            2833:   53(fvec2) Load 2777(lod)
+            2834:   53(fvec2) FAdd 2833 2832
+                              Store 2777(lod) 2834
+            2835:         284 Load 286(s2DArray)
+            2836:154(f16vec2) Load 156(f16c2)
+            2837:154(f16vec2) ImageQueryLod 2835 2836
+            2838:   53(fvec2) Load 2777(lod)
+            2839:   53(fvec2) FAdd 2838 2837
+                              Store 2777(lod) 2839
+            2840:         299 Load 301(sCubeArray)
+            2841:  167(fvec3) Load 169(c3)
+            2842:   53(fvec2) ImageQueryLod 2840 2841
+            2843:   53(fvec2) Load 2777(lod)
+            2844:   53(fvec2) FAdd 2843 2842
+                              Store 2777(lod) 2844
+            2845:         299 Load 301(sCubeArray)
+            2846:175(f16vec3) Load 177(f16c3)
+            2847:154(f16vec2) ImageQueryLod 2845 2846
+            2848:   53(fvec2) Load 2777(lod)
+            2849:   53(fvec2) FAdd 2848 2847
+                              Store 2777(lod) 2849
+            2850:         199 Load 201(s1DShadow)
+            2851:   52(float) Load 128(c1)
+            2852:   53(fvec2) ImageQueryLod 2850 2851
+            2853:   53(fvec2) Load 2777(lod)
+            2854:   53(fvec2) FAdd 2853 2852
+                              Store 2777(lod) 2854
+            2855:         199 Load 201(s1DShadow)
+            2856:6(float16_t) Load 135(f16c1)
+            2857:154(f16vec2) ImageQueryLod 2855 2856
+            2858:   53(fvec2) Load 2777(lod)
+            2859:   53(fvec2) FAdd 2858 2857
+                              Store 2777(lod) 2859
+            2860:         224 Load 226(s2DShadow)
+            2861:   53(fvec2) Load 148(c2)
+            2862:   53(fvec2) ImageQueryLod 2860 2861
+            2863:   53(fvec2) Load 2777(lod)
+            2864:   53(fvec2) FAdd 2863 2862
+                              Store 2777(lod) 2864
+            2865:         224 Load 226(s2DShadow)
+            2866:154(f16vec2) Load 156(f16c2)
+            2867:154(f16vec2) ImageQueryLod 2865 2866
+            2868:   53(fvec2) Load 2777(lod)
+            2869:   53(fvec2) FAdd 2868 2867
+                              Store 2777(lod) 2869
+            2870:         391 Load 393(sCubeArrayShadow)
+            2871:  167(fvec3) Load 169(c3)
+            2872:   53(fvec2) ImageQueryLod 2870 2871
+            2873:   53(fvec2) Load 2777(lod)
+            2874:   53(fvec2) FAdd 2873 2872
+                              Store 2777(lod) 2874
+            2875:         391 Load 393(sCubeArrayShadow)
+            2876:175(f16vec3) Load 177(f16c3)
+            2877:154(f16vec2) ImageQueryLod 2875 2876
+            2878:   53(fvec2) Load 2777(lod)
+            2879:   53(fvec2) FAdd 2878 2877
+                              Store 2777(lod) 2879
+            2880:         316 Load 318(s1DArrayShadow)
+            2881:   52(float) Load 128(c1)
+            2882:   53(fvec2) ImageQueryLod 2880 2881
+            2883:   53(fvec2) Load 2777(lod)
+            2884:   53(fvec2) FAdd 2883 2882
+                              Store 2777(lod) 2884
+            2885:         316 Load 318(s1DArrayShadow)
+            2886:6(float16_t) Load 135(f16c1)
+            2887:154(f16vec2) ImageQueryLod 2885 2886
+            2888:   53(fvec2) Load 2777(lod)
+            2889:   53(fvec2) FAdd 2888 2887
+                              Store 2777(lod) 2889
+            2890:         337 Load 339(s2DArrayShadow)
+            2891:   53(fvec2) Load 148(c2)
+            2892:   53(fvec2) ImageQueryLod 2890 2891
+            2893:   53(fvec2) Load 2777(lod)
+            2894:   53(fvec2) FAdd 2893 2892
+                              Store 2777(lod) 2894
+            2895:         337 Load 339(s2DArrayShadow)
+            2896:154(f16vec2) Load 156(f16c2)
+            2897:154(f16vec2) ImageQueryLod 2895 2896
+            2898:   53(fvec2) Load 2777(lod)
+            2899:   53(fvec2) FAdd 2898 2897
+                              Store 2777(lod) 2899
+            2900:         391 Load 393(sCubeArrayShadow)
+            2901:  167(fvec3) Load 169(c3)
+            2902:   53(fvec2) ImageQueryLod 2900 2901
+            2903:   53(fvec2) Load 2777(lod)
+            2904:   53(fvec2) FAdd 2903 2902
+                              Store 2777(lod) 2904
+            2905:         391 Load 393(sCubeArrayShadow)
+            2906:175(f16vec3) Load 177(f16c3)
+            2907:154(f16vec2) ImageQueryLod 2905 2906
+            2908:   53(fvec2) Load 2777(lod)
+            2909:   53(fvec2) FAdd 2908 2907
+                              Store 2777(lod) 2909
+            2910:   53(fvec2) Load 2777(lod)
+                              ReturnValue 2910
                               FunctionEnd
 58(testTextureQueryLevels():     47(int) Function None 57
               59:             Label
-    2869(levels):   2566(ptr) Variable Function
-                              Store 2869(levels) 2187
-            2870:         123 Load 125(s1D)
-            2871:         122 Image 2870
-            2872:     47(int) ImageQueryLevels 2871
-            2873:     47(int) Load 2869(levels)
-            2874:     47(int) IAdd 2873 2872
-                              Store 2869(levels) 2874
-            2875:         143 Load 145(s2D)
-            2876:         142 Image 2875
-            2877:     47(int) ImageQueryLevels 2876
-            2878:     47(int) Load 2869(levels)
-            2879:     47(int) IAdd 2878 2877
-                              Store 2869(levels) 2879
-            2880:         163 Load 165(s3D)
-            2881:         162 Image 2880
-            2882:     47(int) ImageQueryLevels 2881
-            2883:     47(int) Load 2869(levels)
-            2884:     47(int) IAdd 2883 2882
-                              Store 2869(levels) 2884
-            2885:         184 Load 186(sCube)
-            2886:         183 Image 2885
-            2887:     47(int) ImageQueryLevels 2886
-            2888:     47(int) Load 2869(levels)
-            2889:     47(int) IAdd 2888 2887
-                              Store 2869(levels) 2889
-            2890:         199 Load 201(s1DShadow)
-            2891:         198 Image 2890
-            2892:     47(int) ImageQueryLevels 2891
-            2893:     47(int) Load 2869(levels)
-            2894:     47(int) IAdd 2893 2892
-                              Store 2869(levels) 2894
-            2895:         224 Load 226(s2DShadow)
-            2896:         223 Image 2895
-            2897:     47(int) ImageQueryLevels 2896
-            2898:     47(int) Load 2869(levels)
-            2899:     47(int) IAdd 2898 2897
-                              Store 2869(levels) 2899
-            2900:         245 Load 247(sCubeShadow)
-            2901:         244 Image 2900
-            2902:     47(int) ImageQueryLevels 2901
-            2903:     47(int) Load 2869(levels)
-            2904:     47(int) IAdd 2903 2902
-                              Store 2869(levels) 2904
-            2905:         299 Load 301(sCubeArray)
-            2906:         298 Image 2905
-            2907:     47(int) ImageQueryLevels 2906
-            2908:     47(int) Load 2869(levels)
-            2909:     47(int) IAdd 2908 2907
-                              Store 2869(levels) 2909
-            2910:         391 Load 393(sCubeArrayShadow)
-            2911:         390 Image 2910
-            2912:     47(int) ImageQueryLevels 2911
-            2913:     47(int) Load 2869(levels)
-            2914:     47(int) IAdd 2913 2912
-                              Store 2869(levels) 2914
-            2915:         269 Load 271(s1DArray)
-            2916:         268 Image 2915
-            2917:     47(int) ImageQueryLevels 2916
-            2918:     47(int) Load 2869(levels)
-            2919:     47(int) IAdd 2918 2917
-                              Store 2869(levels) 2919
-            2920:         284 Load 286(s2DArray)
-            2921:         283 Image 2920
-            2922:     47(int) ImageQueryLevels 2921
-            2923:     47(int) Load 2869(levels)
-            2924:     47(int) IAdd 2923 2922
-                              Store 2869(levels) 2924
-            2925:         316 Load 318(s1DArrayShadow)
-            2926:         315 Image 2925
-            2927:     47(int) ImageQueryLevels 2926
-            2928:     47(int) Load 2869(levels)
-            2929:     47(int) IAdd 2928 2927
-                              Store 2869(levels) 2929
-            2930:         337 Load 339(s2DArrayShadow)
-            2931:         336 Image 2930
-            2932:     47(int) ImageQueryLevels 2931
-            2933:     47(int) Load 2869(levels)
-            2934:     47(int) IAdd 2933 2932
-                              Store 2869(levels) 2934
-            2935:     47(int) Load 2869(levels)
-                              ReturnValue 2935
+    2913(levels):   2566(ptr) Variable Function
+                              Store 2913(levels) 2187
+            2914:         123 Load 125(s1D)
+            2915:         122 Image 2914
+            2916:     47(int) ImageQueryLevels 2915
+            2917:     47(int) Load 2913(levels)
+            2918:     47(int) IAdd 2917 2916
+                              Store 2913(levels) 2918
+            2919:         143 Load 145(s2D)
+            2920:         142 Image 2919
+            2921:     47(int) ImageQueryLevels 2920
+            2922:     47(int) Load 2913(levels)
+            2923:     47(int) IAdd 2922 2921
+                              Store 2913(levels) 2923
+            2924:         163 Load 165(s3D)
+            2925:         162 Image 2924
+            2926:     47(int) ImageQueryLevels 2925
+            2927:     47(int) Load 2913(levels)
+            2928:     47(int) IAdd 2927 2926
+                              Store 2913(levels) 2928
+            2929:         184 Load 186(sCube)
+            2930:         183 Image 2929
+            2931:     47(int) ImageQueryLevels 2930
+            2932:     47(int) Load 2913(levels)
+            2933:     47(int) IAdd 2932 2931
+                              Store 2913(levels) 2933
+            2934:         199 Load 201(s1DShadow)
+            2935:         198 Image 2934
+            2936:     47(int) ImageQueryLevels 2935
+            2937:     47(int) Load 2913(levels)
+            2938:     47(int) IAdd 2937 2936
+                              Store 2913(levels) 2938
+            2939:         224 Load 226(s2DShadow)
+            2940:         223 Image 2939
+            2941:     47(int) ImageQueryLevels 2940
+            2942:     47(int) Load 2913(levels)
+            2943:     47(int) IAdd 2942 2941
+                              Store 2913(levels) 2943
+            2944:         245 Load 247(sCubeShadow)
+            2945:         244 Image 2944
+            2946:     47(int) ImageQueryLevels 2945
+            2947:     47(int) Load 2913(levels)
+            2948:     47(int) IAdd 2947 2946
+                              Store 2913(levels) 2948
+            2949:         299 Load 301(sCubeArray)
+            2950:         298 Image 2949
+            2951:     47(int) ImageQueryLevels 2950
+            2952:     47(int) Load 2913(levels)
+            2953:     47(int) IAdd 2952 2951
+                              Store 2913(levels) 2953
+            2954:         391 Load 393(sCubeArrayShadow)
+            2955:         390 Image 2954
+            2956:     47(int) ImageQueryLevels 2955
+            2957:     47(int) Load 2913(levels)
+            2958:     47(int) IAdd 2957 2956
+                              Store 2913(levels) 2958
+            2959:         269 Load 271(s1DArray)
+            2960:         268 Image 2959
+            2961:     47(int) ImageQueryLevels 2960
+            2962:     47(int) Load 2913(levels)
+            2963:     47(int) IAdd 2962 2961
+                              Store 2913(levels) 2963
+            2964:         284 Load 286(s2DArray)
+            2965:         283 Image 2964
+            2966:     47(int) ImageQueryLevels 2965
+            2967:     47(int) Load 2913(levels)
+            2968:     47(int) IAdd 2967 2966
+                              Store 2913(levels) 2968
+            2969:         316 Load 318(s1DArrayShadow)
+            2970:         315 Image 2969
+            2971:     47(int) ImageQueryLevels 2970
+            2972:     47(int) Load 2913(levels)
+            2973:     47(int) IAdd 2972 2971
+                              Store 2913(levels) 2973
+            2974:         337 Load 339(s2DArrayShadow)
+            2975:         336 Image 2974
+            2976:     47(int) ImageQueryLevels 2975
+            2977:     47(int) Load 2913(levels)
+            2978:     47(int) IAdd 2977 2976
+                              Store 2913(levels) 2978
+            2979:     47(int) Load 2913(levels)
+                              ReturnValue 2979
                               FunctionEnd
 60(testTextureSamples():     47(int) Function None 57
               61:             Label
-   2938(samples):   2566(ptr) Variable Function
-                              Store 2938(samples) 2187
-            2939:        1309 Load 1311(s2DMS)
-            2940:        1308 Image 2939
-            2941:     47(int) ImageQuerySamples 2940
-            2942:     47(int) Load 2938(samples)
-            2943:     47(int) IAdd 2942 2941
-                              Store 2938(samples) 2943
-            2944:        1320 Load 1322(s2DMSArray)
-            2945:        1319 Image 2944
-            2946:     47(int) ImageQuerySamples 2945
-            2947:     47(int) Load 2938(samples)
-            2948:     47(int) IAdd 2947 2946
-                              Store 2938(samples) 2948
-            2949:     47(int) Load 2938(samples)
-                              ReturnValue 2949
+   2982(samples):   2566(ptr) Variable Function
+                              Store 2982(samples) 2187
+            2983:        1309 Load 1311(s2DMS)
+            2984:        1308 Image 2983
+            2985:     47(int) ImageQuerySamples 2984
+            2986:     47(int) Load 2982(samples)
+            2987:     47(int) IAdd 2986 2985
+                              Store 2982(samples) 2987
+            2988:        1320 Load 1322(s2DMSArray)
+            2989:        1319 Image 2988
+            2990:     47(int) ImageQuerySamples 2989
+            2991:     47(int) Load 2982(samples)
+            2992:     47(int) IAdd 2991 2990
+                              Store 2982(samples) 2992
+            2993:     47(int) Load 2982(samples)
+                              ReturnValue 2993
                               FunctionEnd
 62(testImageLoad():  7(f16vec4) Function None 8
               63:             Label
-     2952(texel):     64(ptr) Variable Function
-                              Store 2952(texel) 121
-            2956:        2953 Load 2955(i1D)
-            2957:   52(float) Load 128(c1)
-            2958:     47(int) ConvertFToS 2957
-            2959:  7(f16vec4) ImageRead 2956 2958
-            2960:  7(f16vec4) Load 2952(texel)
-            2961:  7(f16vec4) FAdd 2960 2959
-                              Store 2952(texel) 2961
-            2965:        2962 Load 2964(i2D)
-            2966:   53(fvec2) Load 148(c2)
-            2967:  721(ivec2) ConvertFToS 2966
-            2968:  7(f16vec4) ImageRead 2965 2967
-            2969:  7(f16vec4) Load 2952(texel)
-            2970:  7(f16vec4) FAdd 2969 2968
-                              Store 2952(texel) 2970
-            2974:        2971 Load 2973(i3D)
-            2975:  167(fvec3) Load 169(c3)
-            2976:  734(ivec3) ConvertFToS 2975
-            2977:  7(f16vec4) ImageRead 2974 2976
-            2978:  7(f16vec4) Load 2952(texel)
-            2979:  7(f16vec4) FAdd 2978 2977
-                              Store 2952(texel) 2979
-            2983:        2980 Load 2982(i2DRect)
-            2984:   53(fvec2) Load 148(c2)
-            2985:  721(ivec2) ConvertFToS 2984
-            2986:  7(f16vec4) ImageRead 2983 2985
-            2987:  7(f16vec4) Load 2952(texel)
-            2988:  7(f16vec4) FAdd 2987 2986
-                              Store 2952(texel) 2988
-            2992:        2989 Load 2991(iCube)
-            2993:  167(fvec3) Load 169(c3)
-            2994:  734(ivec3) ConvertFToS 2993
-            2995:  7(f16vec4) ImageRead 2992 2994
-            2996:  7(f16vec4) Load 2952(texel)
-            2997:  7(f16vec4) FAdd 2996 2995
-                              Store 2952(texel) 2997
-            3001:        2998 Load 3000(iBuffer)
-            3002:   52(float) Load 128(c1)
-            3003:     47(int) ConvertFToS 3002
-            3004:  7(f16vec4) ImageRead 3001 3003
-            3005:  7(f16vec4) Load 2952(texel)
-            3006:  7(f16vec4) FAdd 3005 3004
-                              Store 2952(texel) 3006
-            3010:        3007 Load 3009(i1DArray)
-            3011:   53(fvec2) Load 148(c2)
-            3012:  721(ivec2) ConvertFToS 3011
-            3013:  7(f16vec4) ImageRead 3010 3012
-            3014:  7(f16vec4) Load 2952(texel)
-            3015:  7(f16vec4) FAdd 3014 3013
-                              Store 2952(texel) 3015
-            3019:        3016 Load 3018(i2DArray)
-            3020:  167(fvec3) Load 169(c3)
-            3021:  734(ivec3) ConvertFToS 3020
-            3022:  7(f16vec4) ImageRead 3019 3021
-            3023:  7(f16vec4) Load 2952(texel)
-            3024:  7(f16vec4) FAdd 3023 3022
-                              Store 2952(texel) 3024
-            3028:        3025 Load 3027(iCubeArray)
-            3029:  167(fvec3) Load 169(c3)
-            3030:  734(ivec3) ConvertFToS 3029
-            3031:  7(f16vec4) ImageRead 3028 3030
-            3032:  7(f16vec4) Load 2952(texel)
-            3033:  7(f16vec4) FAdd 3032 3031
-                              Store 2952(texel) 3033
-            3037:        3034 Load 3036(i2DMS)
-            3038:   53(fvec2) Load 148(c2)
-            3039:  721(ivec2) ConvertFToS 3038
-            3040:  7(f16vec4) ImageRead 3037 3039 Sample 709
-            3041:  7(f16vec4) Load 2952(texel)
-            3042:  7(f16vec4) FAdd 3041 3040
-                              Store 2952(texel) 3042
-            3046:        3043 Load 3045(i2DMSArray)
-            3047:  167(fvec3) Load 169(c3)
-            3048:  734(ivec3) ConvertFToS 3047
-            3049:  7(f16vec4) ImageRead 3046 3048 Sample 709
-            3050:  7(f16vec4) Load 2952(texel)
-            3051:  7(f16vec4) FAdd 3050 3049
-                              Store 2952(texel) 3051
-            3052:  7(f16vec4) Load 2952(texel)
-                              ReturnValue 3052
+     2996(texel):     64(ptr) Variable Function
+                              Store 2996(texel) 121
+            3000:        2997 Load 2999(i1D)
+            3001:   52(float) Load 128(c1)
+            3002:     47(int) ConvertFToS 3001
+            3003:  7(f16vec4) ImageRead 3000 3002
+            3004:  7(f16vec4) Load 2996(texel)
+            3005:  7(f16vec4) FAdd 3004 3003
+                              Store 2996(texel) 3005
+            3009:        3006 Load 3008(i2D)
+            3010:   53(fvec2) Load 148(c2)
+            3011:  721(ivec2) ConvertFToS 3010
+            3012:  7(f16vec4) ImageRead 3009 3011
+            3013:  7(f16vec4) Load 2996(texel)
+            3014:  7(f16vec4) FAdd 3013 3012
+                              Store 2996(texel) 3014
+            3018:        3015 Load 3017(i3D)
+            3019:  167(fvec3) Load 169(c3)
+            3020:  734(ivec3) ConvertFToS 3019
+            3021:  7(f16vec4) ImageRead 3018 3020
+            3022:  7(f16vec4) Load 2996(texel)
+            3023:  7(f16vec4) FAdd 3022 3021
+                              Store 2996(texel) 3023
+            3027:        3024 Load 3026(i2DRect)
+            3028:   53(fvec2) Load 148(c2)
+            3029:  721(ivec2) ConvertFToS 3028
+            3030:  7(f16vec4) ImageRead 3027 3029
+            3031:  7(f16vec4) Load 2996(texel)
+            3032:  7(f16vec4) FAdd 3031 3030
+                              Store 2996(texel) 3032
+            3036:        3033 Load 3035(iCube)
+            3037:  167(fvec3) Load 169(c3)
+            3038:  734(ivec3) ConvertFToS 3037
+            3039:  7(f16vec4) ImageRead 3036 3038
+            3040:  7(f16vec4) Load 2996(texel)
+            3041:  7(f16vec4) FAdd 3040 3039
+                              Store 2996(texel) 3041
+            3045:        3042 Load 3044(iBuffer)
+            3046:   52(float) Load 128(c1)
+            3047:     47(int) ConvertFToS 3046
+            3048:  7(f16vec4) ImageRead 3045 3047
+            3049:  7(f16vec4) Load 2996(texel)
+            3050:  7(f16vec4) FAdd 3049 3048
+                              Store 2996(texel) 3050
+            3054:        3051 Load 3053(i1DArray)
+            3055:   53(fvec2) Load 148(c2)
+            3056:  721(ivec2) ConvertFToS 3055
+            3057:  7(f16vec4) ImageRead 3054 3056
+            3058:  7(f16vec4) Load 2996(texel)
+            3059:  7(f16vec4) FAdd 3058 3057
+                              Store 2996(texel) 3059
+            3063:        3060 Load 3062(i2DArray)
+            3064:  167(fvec3) Load 169(c3)
+            3065:  734(ivec3) ConvertFToS 3064
+            3066:  7(f16vec4) ImageRead 3063 3065
+            3067:  7(f16vec4) Load 2996(texel)
+            3068:  7(f16vec4) FAdd 3067 3066
+                              Store 2996(texel) 3068
+            3072:        3069 Load 3071(iCubeArray)
+            3073:  167(fvec3) Load 169(c3)
+            3074:  734(ivec3) ConvertFToS 3073
+            3075:  7(f16vec4) ImageRead 3072 3074
+            3076:  7(f16vec4) Load 2996(texel)
+            3077:  7(f16vec4) FAdd 3076 3075
+                              Store 2996(texel) 3077
+            3081:        3078 Load 3080(i2DMS)
+            3082:   53(fvec2) Load 148(c2)
+            3083:  721(ivec2) ConvertFToS 3082
+            3084:  7(f16vec4) ImageRead 3081 3083 Sample 709
+            3085:  7(f16vec4) Load 2996(texel)
+            3086:  7(f16vec4) FAdd 3085 3084
+                              Store 2996(texel) 3086
+            3090:        3087 Load 3089(i2DMSArray)
+            3091:  167(fvec3) Load 169(c3)
+            3092:  734(ivec3) ConvertFToS 3091
+            3093:  7(f16vec4) ImageRead 3090 3092 Sample 709
+            3094:  7(f16vec4) Load 2996(texel)
+            3095:  7(f16vec4) FAdd 3094 3093
+                              Store 2996(texel) 3095
+            3096:  7(f16vec4) Load 2996(texel)
+                              ReturnValue 3096
                               FunctionEnd
 67(testImageStore(vf164;):           2 Function None 65
         66(data):     64(ptr) FunctionParameter
               68:             Label
-            3055:        2953 Load 2955(i1D)
-            3056:   52(float) Load 128(c1)
-            3057:     47(int) ConvertFToS 3056
-            3058:  7(f16vec4) Load 66(data)
-                              ImageWrite 3055 3057 3058
-            3059:        2962 Load 2964(i2D)
-            3060:   53(fvec2) Load 148(c2)
-            3061:  721(ivec2) ConvertFToS 3060
-            3062:  7(f16vec4) Load 66(data)
-                              ImageWrite 3059 3061 3062
-            3063:        2971 Load 2973(i3D)
-            3064:  167(fvec3) Load 169(c3)
-            3065:  734(ivec3) ConvertFToS 3064
-            3066:  7(f16vec4) Load 66(data)
-                              ImageWrite 3063 3065 3066
-            3067:        2980 Load 2982(i2DRect)
-            3068:   53(fvec2) Load 148(c2)
-            3069:  721(ivec2) ConvertFToS 3068
-            3070:  7(f16vec4) Load 66(data)
-                              ImageWrite 3067 3069 3070
-            3071:        2989 Load 2991(iCube)
-            3072:  167(fvec3) Load 169(c3)
-            3073:  734(ivec3) ConvertFToS 3072
-            3074:  7(f16vec4) Load 66(data)
-                              ImageWrite 3071 3073 3074
-            3075:        2998 Load 3000(iBuffer)
-            3076:   52(float) Load 128(c1)
-            3077:     47(int) ConvertFToS 3076
-            3078:  7(f16vec4) Load 66(data)
-                              ImageWrite 3075 3077 3078
-            3079:        3007 Load 3009(i1DArray)
-            3080:   53(fvec2) Load 148(c2)
-            3081:  721(ivec2) ConvertFToS 3080
-            3082:  7(f16vec4) Load 66(data)
-                              ImageWrite 3079 3081 3082
-            3083:        3016 Load 3018(i2DArray)
-            3084:  167(fvec3) Load 169(c3)
-            3085:  734(ivec3) ConvertFToS 3084
-            3086:  7(f16vec4) Load 66(data)
-                              ImageWrite 3083 3085 3086
-            3087:        3025 Load 3027(iCubeArray)
-            3088:  167(fvec3) Load 169(c3)
-            3089:  734(ivec3) ConvertFToS 3088
-            3090:  7(f16vec4) Load 66(data)
-                              ImageWrite 3087 3089 3090
-            3091:        3034 Load 3036(i2DMS)
-            3092:   53(fvec2) Load 148(c2)
-            3093:  721(ivec2) ConvertFToS 3092
-            3094:  7(f16vec4) Load 66(data)
-                              ImageWrite 3091 3093 3094 Sample 709
-            3095:        3043 Load 3045(i2DMSArray)
-            3096:  167(fvec3) Load 169(c3)
-            3097:  734(ivec3) ConvertFToS 3096
-            3098:  7(f16vec4) Load 66(data)
-                              ImageWrite 3095 3097 3098 Sample 709
+            3099:        2997 Load 2999(i1D)
+            3100:   52(float) Load 128(c1)
+            3101:     47(int) ConvertFToS 3100
+            3102:  7(f16vec4) Load 66(data)
+                              ImageWrite 3099 3101 3102
+            3103:        3006 Load 3008(i2D)
+            3104:   53(fvec2) Load 148(c2)
+            3105:  721(ivec2) ConvertFToS 3104
+            3106:  7(f16vec4) Load 66(data)
+                              ImageWrite 3103 3105 3106
+            3107:        3015 Load 3017(i3D)
+            3108:  167(fvec3) Load 169(c3)
+            3109:  734(ivec3) ConvertFToS 3108
+            3110:  7(f16vec4) Load 66(data)
+                              ImageWrite 3107 3109 3110
+            3111:        3024 Load 3026(i2DRect)
+            3112:   53(fvec2) Load 148(c2)
+            3113:  721(ivec2) ConvertFToS 3112
+            3114:  7(f16vec4) Load 66(data)
+                              ImageWrite 3111 3113 3114
+            3115:        3033 Load 3035(iCube)
+            3116:  167(fvec3) Load 169(c3)
+            3117:  734(ivec3) ConvertFToS 3116
+            3118:  7(f16vec4) Load 66(data)
+                              ImageWrite 3115 3117 3118
+            3119:        3042 Load 3044(iBuffer)
+            3120:   52(float) Load 128(c1)
+            3121:     47(int) ConvertFToS 3120
+            3122:  7(f16vec4) Load 66(data)
+                              ImageWrite 3119 3121 3122
+            3123:        3051 Load 3053(i1DArray)
+            3124:   53(fvec2) Load 148(c2)
+            3125:  721(ivec2) ConvertFToS 3124
+            3126:  7(f16vec4) Load 66(data)
+                              ImageWrite 3123 3125 3126
+            3127:        3060 Load 3062(i2DArray)
+            3128:  167(fvec3) Load 169(c3)
+            3129:  734(ivec3) ConvertFToS 3128
+            3130:  7(f16vec4) Load 66(data)
+                              ImageWrite 3127 3129 3130
+            3131:        3069 Load 3071(iCubeArray)
+            3132:  167(fvec3) Load 169(c3)
+            3133:  734(ivec3) ConvertFToS 3132
+            3134:  7(f16vec4) Load 66(data)
+                              ImageWrite 3131 3133 3134
+            3135:        3078 Load 3080(i2DMS)
+            3136:   53(fvec2) Load 148(c2)
+            3137:  721(ivec2) ConvertFToS 3136
+            3138:  7(f16vec4) Load 66(data)
+                              ImageWrite 3135 3137 3138 Sample 709
+            3139:        3087 Load 3089(i2DMSArray)
+            3140:  167(fvec3) Load 169(c3)
+            3141:  734(ivec3) ConvertFToS 3140
+            3142:  7(f16vec4) Load 66(data)
+                              ImageWrite 3139 3141 3142 Sample 709
                               Return
                               FunctionEnd
 69(testSparseTexture():  7(f16vec4) Function None 8
               70:             Label
-     3099(texel):     64(ptr) Variable Function
-                              Store 3099(texel) 121
-            3100:         143 Load 145(s2D)
-            3101:   53(fvec2) Load 148(c2)
-            3103:3102(ResType) ImageSparseSampleImplicitLod 3100 3101
-            3104:  7(f16vec4) CompositeExtract 3103 1
-                              Store 3099(texel) 3104
-            3105:     47(int) CompositeExtract 3103 0
-            3106:         143 Load 145(s2D)
-            3107:154(f16vec2) Load 156(f16c2)
-            3108:6(float16_t) Load 137(f16bias)
-            3109:3102(ResType) ImageSparseSampleImplicitLod 3106 3107 Bias 3108
-            3110:  7(f16vec4) CompositeExtract 3109 1
-                              Store 3099(texel) 3110
-            3111:     47(int) CompositeExtract 3109 0
-            3112:         163 Load 165(s3D)
-            3113:  167(fvec3) Load 169(c3)
-            3114:3102(ResType) ImageSparseSampleImplicitLod 3112 3113
-            3115:  7(f16vec4) CompositeExtract 3114 1
-                              Store 3099(texel) 3115
-            3116:     47(int) CompositeExtract 3114 0
-            3117:         163 Load 165(s3D)
-            3118:175(f16vec3) Load 177(f16c3)
-            3119:6(float16_t) Load 137(f16bias)
-            3120:3102(ResType) ImageSparseSampleImplicitLod 3117 3118 Bias 3119
-            3121:  7(f16vec4) CompositeExtract 3120 1
-                              Store 3099(texel) 3121
-            3122:     47(int) CompositeExtract 3120 0
-            3123:         184 Load 186(sCube)
-            3124:  167(fvec3) Load 169(c3)
-            3125:3102(ResType) ImageSparseSampleImplicitLod 3123 3124
-            3126:  7(f16vec4) CompositeExtract 3125 1
-                              Store 3099(texel) 3126
-            3127:     47(int) CompositeExtract 3125 0
-            3128:         184 Load 186(sCube)
-            3129:175(f16vec3) Load 177(f16c3)
-            3130:6(float16_t) Load 137(f16bias)
-            3131:3102(ResType) ImageSparseSampleImplicitLod 3128 3129 Bias 3130
-            3132:  7(f16vec4) CompositeExtract 3131 1
-                              Store 3099(texel) 3132
-            3133:     47(int) CompositeExtract 3131 0
-            3134:         224 Load 226(s2DShadow)
-            3135:  167(fvec3) Load 169(c3)
-            3136:    208(ptr) AccessChain 3099(texel) 207
-            3137:   52(float) CompositeExtract 3135 2
-            3139:3138(ResType) ImageSparseSampleDrefImplicitLod 3134 3135 3137
-            3140:6(float16_t) CompositeExtract 3139 1
-                              Store 3136 3140
-            3141:     47(int) CompositeExtract 3139 0
-            3142:         224 Load 226(s2DShadow)
-            3143:154(f16vec2) Load 156(f16c2)
-            3144:   52(float) Load 215(compare)
-            3145:    208(ptr) AccessChain 3099(texel) 207
-            3146:6(float16_t) Load 137(f16bias)
-            3147:3138(ResType) ImageSparseSampleDrefImplicitLod 3142 3143 3144 Bias 3146
-            3148:6(float16_t) CompositeExtract 3147 1
-                              Store 3145 3148
+     3143(texel):     64(ptr) Variable Function
+                              Store 3143(texel) 121
+            3144:         143 Load 145(s2D)
+            3145:   53(fvec2) Load 148(c2)
+            3147:3146(ResType) ImageSparseSampleImplicitLod 3144 3145
+            3148:  7(f16vec4) CompositeExtract 3147 1
+                              Store 3143(texel) 3148
             3149:     47(int) CompositeExtract 3147 0
-            3150:         245 Load 247(sCubeShadow)
-            3151:  249(fvec4) Load 251(c4)
-            3152:    208(ptr) AccessChain 3099(texel) 207
-            3153:   52(float) CompositeExtract 3151 3
-            3154:3138(ResType) ImageSparseSampleDrefImplicitLod 3150 3151 3153
-            3155:6(float16_t) CompositeExtract 3154 1
-                              Store 3152 3155
-            3156:     47(int) CompositeExtract 3154 0
-            3157:         245 Load 247(sCubeShadow)
-            3158:175(f16vec3) Load 177(f16c3)
-            3159:   52(float) Load 215(compare)
-            3160:    208(ptr) AccessChain 3099(texel) 207
-            3161:6(float16_t) Load 137(f16bias)
-            3162:3138(ResType) ImageSparseSampleDrefImplicitLod 3157 3158 3159 Bias 3161
-            3163:6(float16_t) CompositeExtract 3162 1
-                              Store 3160 3163
-            3164:     47(int) CompositeExtract 3162 0
-            3165:         284 Load 286(s2DArray)
-            3166:  167(fvec3) Load 169(c3)
-            3167:3102(ResType) ImageSparseSampleImplicitLod 3165 3166
-            3168:  7(f16vec4) CompositeExtract 3167 1
-                              Store 3099(texel) 3168
-            3169:     47(int) CompositeExtract 3167 0
-            3170:         284 Load 286(s2DArray)
-            3171:175(f16vec3) Load 177(f16c3)
-            3172:6(float16_t) Load 137(f16bias)
-            3173:3102(ResType) ImageSparseSampleImplicitLod 3170 3171 Bias 3172
-            3174:  7(f16vec4) CompositeExtract 3173 1
-                              Store 3099(texel) 3174
-            3175:     47(int) CompositeExtract 3173 0
-            3176:         299 Load 301(sCubeArray)
-            3177:  249(fvec4) Load 251(c4)
-            3178:3102(ResType) ImageSparseSampleImplicitLod 3176 3177
-            3179:  7(f16vec4) CompositeExtract 3178 1
-                              Store 3099(texel) 3179
-            3180:     47(int) CompositeExtract 3178 0
-            3181:         299 Load 301(sCubeArray)
-            3182:  7(f16vec4) Load 309(f16c4)
-            3183:6(float16_t) Load 137(f16bias)
-            3184:3102(ResType) ImageSparseSampleImplicitLod 3181 3182 Bias 3183
-            3185:  7(f16vec4) CompositeExtract 3184 1
-                              Store 3099(texel) 3185
-            3186:     47(int) CompositeExtract 3184 0
-            3187:         337 Load 339(s2DArrayShadow)
-            3188:  249(fvec4) Load 251(c4)
-            3189:    208(ptr) AccessChain 3099(texel) 207
-            3190:   52(float) CompositeExtract 3188 3
-            3191:3138(ResType) ImageSparseSampleDrefImplicitLod 3187 3188 3190
+            3150:         143 Load 145(s2D)
+            3151:154(f16vec2) Load 156(f16c2)
+            3152:6(float16_t) Load 137(f16bias)
+            3153:3146(ResType) ImageSparseSampleImplicitLod 3150 3151 Bias 3152
+            3154:  7(f16vec4) CompositeExtract 3153 1
+                              Store 3143(texel) 3154
+            3155:     47(int) CompositeExtract 3153 0
+            3156:         163 Load 165(s3D)
+            3157:  167(fvec3) Load 169(c3)
+            3158:3146(ResType) ImageSparseSampleImplicitLod 3156 3157
+            3159:  7(f16vec4) CompositeExtract 3158 1
+                              Store 3143(texel) 3159
+            3160:     47(int) CompositeExtract 3158 0
+            3161:         163 Load 165(s3D)
+            3162:175(f16vec3) Load 177(f16c3)
+            3163:6(float16_t) Load 137(f16bias)
+            3164:3146(ResType) ImageSparseSampleImplicitLod 3161 3162 Bias 3163
+            3165:  7(f16vec4) CompositeExtract 3164 1
+                              Store 3143(texel) 3165
+            3166:     47(int) CompositeExtract 3164 0
+            3167:         184 Load 186(sCube)
+            3168:  167(fvec3) Load 169(c3)
+            3169:3146(ResType) ImageSparseSampleImplicitLod 3167 3168
+            3170:  7(f16vec4) CompositeExtract 3169 1
+                              Store 3143(texel) 3170
+            3171:     47(int) CompositeExtract 3169 0
+            3172:         184 Load 186(sCube)
+            3173:175(f16vec3) Load 177(f16c3)
+            3174:6(float16_t) Load 137(f16bias)
+            3175:3146(ResType) ImageSparseSampleImplicitLod 3172 3173 Bias 3174
+            3176:  7(f16vec4) CompositeExtract 3175 1
+                              Store 3143(texel) 3176
+            3177:     47(int) CompositeExtract 3175 0
+            3178:         224 Load 226(s2DShadow)
+            3179:  167(fvec3) Load 169(c3)
+            3180:    208(ptr) AccessChain 3143(texel) 207
+            3181:   52(float) CompositeExtract 3179 2
+            3183:3182(ResType) ImageSparseSampleDrefImplicitLod 3178 3179 3181
+            3184:6(float16_t) CompositeExtract 3183 1
+                              Store 3180 3184
+            3185:     47(int) CompositeExtract 3183 0
+            3186:         224 Load 226(s2DShadow)
+            3187:154(f16vec2) Load 156(f16c2)
+            3188:   52(float) Load 215(compare)
+            3189:    208(ptr) AccessChain 3143(texel) 207
+            3190:6(float16_t) Load 137(f16bias)
+            3191:3182(ResType) ImageSparseSampleDrefImplicitLod 3186 3187 3188 Bias 3190
             3192:6(float16_t) CompositeExtract 3191 1
                               Store 3189 3192
             3193:     47(int) CompositeExtract 3191 0
-            3194:         337 Load 339(s2DArrayShadow)
-            3195:175(f16vec3) Load 177(f16c3)
-            3196:   52(float) Load 215(compare)
-            3197:    208(ptr) AccessChain 3099(texel) 207
-            3198:3138(ResType) ImageSparseSampleDrefImplicitLod 3194 3195 3196
+            3194:         245 Load 247(sCubeShadow)
+            3195:  249(fvec4) Load 251(c4)
+            3196:    208(ptr) AccessChain 3143(texel) 207
+            3197:   52(float) CompositeExtract 3195 3
+            3198:3182(ResType) ImageSparseSampleDrefImplicitLod 3194 3195 3197
             3199:6(float16_t) CompositeExtract 3198 1
-                              Store 3197 3199
+                              Store 3196 3199
             3200:     47(int) CompositeExtract 3198 0
-            3201:         357 Load 359(s2DRect)
-            3202:   53(fvec2) Load 148(c2)
-            3203:3102(ResType) ImageSparseSampleImplicitLod 3201 3202
-            3204:  7(f16vec4) CompositeExtract 3203 1
-                              Store 3099(texel) 3204
-            3205:     47(int) CompositeExtract 3203 0
-            3206:         357 Load 359(s2DRect)
-            3207:154(f16vec2) Load 156(f16c2)
-            3208:3102(ResType) ImageSparseSampleImplicitLod 3206 3207
-            3209:  7(f16vec4) CompositeExtract 3208 1
-                              Store 3099(texel) 3209
-            3210:     47(int) CompositeExtract 3208 0
-            3211:         371 Load 373(s2DRectShadow)
-            3212:  167(fvec3) Load 169(c3)
-            3213:    208(ptr) AccessChain 3099(texel) 207
-            3214:   52(float) CompositeExtract 3212 2
-            3215:3138(ResType) ImageSparseSampleDrefImplicitLod 3211 3212 3214
-            3216:6(float16_t) CompositeExtract 3215 1
-                              Store 3213 3216
-            3217:     47(int) CompositeExtract 3215 0
-            3218:         371 Load 373(s2DRectShadow)
-            3219:154(f16vec2) Load 156(f16c2)
-            3220:   52(float) Load 215(compare)
-            3221:    208(ptr) AccessChain 3099(texel) 207
-            3222:3138(ResType) ImageSparseSampleDrefImplicitLod 3218 3219 3220
-            3223:6(float16_t) CompositeExtract 3222 1
-                              Store 3221 3223
+            3201:         245 Load 247(sCubeShadow)
+            3202:175(f16vec3) Load 177(f16c3)
+            3203:   52(float) Load 215(compare)
+            3204:    208(ptr) AccessChain 3143(texel) 207
+            3205:6(float16_t) Load 137(f16bias)
+            3206:3182(ResType) ImageSparseSampleDrefImplicitLod 3201 3202 3203 Bias 3205
+            3207:6(float16_t) CompositeExtract 3206 1
+                              Store 3204 3207
+            3208:     47(int) CompositeExtract 3206 0
+            3209:         284 Load 286(s2DArray)
+            3210:  167(fvec3) Load 169(c3)
+            3211:3146(ResType) ImageSparseSampleImplicitLod 3209 3210
+            3212:  7(f16vec4) CompositeExtract 3211 1
+                              Store 3143(texel) 3212
+            3213:     47(int) CompositeExtract 3211 0
+            3214:         284 Load 286(s2DArray)
+            3215:175(f16vec3) Load 177(f16c3)
+            3216:6(float16_t) Load 137(f16bias)
+            3217:3146(ResType) ImageSparseSampleImplicitLod 3214 3215 Bias 3216
+            3218:  7(f16vec4) CompositeExtract 3217 1
+                              Store 3143(texel) 3218
+            3219:     47(int) CompositeExtract 3217 0
+            3220:         299 Load 301(sCubeArray)
+            3221:  249(fvec4) Load 251(c4)
+            3222:3146(ResType) ImageSparseSampleImplicitLod 3220 3221
+            3223:  7(f16vec4) CompositeExtract 3222 1
+                              Store 3143(texel) 3223
             3224:     47(int) CompositeExtract 3222 0
-            3225:         391 Load 393(sCubeArrayShadow)
-            3226:  249(fvec4) Load 251(c4)
-            3227:   52(float) Load 215(compare)
-            3228:    208(ptr) AccessChain 3099(texel) 207
-            3229:3138(ResType) ImageSparseSampleDrefImplicitLod 3225 3226 3227
-            3230:6(float16_t) CompositeExtract 3229 1
-                              Store 3228 3230
-            3231:     47(int) CompositeExtract 3229 0
-            3232:         391 Load 393(sCubeArrayShadow)
-            3233:  7(f16vec4) Load 309(f16c4)
-            3234:   52(float) Load 215(compare)
-            3235:    208(ptr) AccessChain 3099(texel) 207
-            3236:3138(ResType) ImageSparseSampleDrefImplicitLod 3232 3233 3234
-            3237:6(float16_t) CompositeExtract 3236 1
-                              Store 3235 3237
-            3238:     47(int) CompositeExtract 3236 0
-            3239:  7(f16vec4) Load 3099(texel)
-                              ReturnValue 3239
+            3225:         299 Load 301(sCubeArray)
+            3226:  7(f16vec4) Load 309(f16c4)
+            3227:6(float16_t) Load 137(f16bias)
+            3228:3146(ResType) ImageSparseSampleImplicitLod 3225 3226 Bias 3227
+            3229:  7(f16vec4) CompositeExtract 3228 1
+                              Store 3143(texel) 3229
+            3230:     47(int) CompositeExtract 3228 0
+            3231:         337 Load 339(s2DArrayShadow)
+            3232:  249(fvec4) Load 251(c4)
+            3233:    208(ptr) AccessChain 3143(texel) 207
+            3234:   52(float) CompositeExtract 3232 3
+            3235:3182(ResType) ImageSparseSampleDrefImplicitLod 3231 3232 3234
+            3236:6(float16_t) CompositeExtract 3235 1
+                              Store 3233 3236
+            3237:     47(int) CompositeExtract 3235 0
+            3238:         337 Load 339(s2DArrayShadow)
+            3239:175(f16vec3) Load 177(f16c3)
+            3240:   52(float) Load 215(compare)
+            3241:    208(ptr) AccessChain 3143(texel) 207
+            3242:3182(ResType) ImageSparseSampleDrefImplicitLod 3238 3239 3240
+            3243:6(float16_t) CompositeExtract 3242 1
+                              Store 3241 3243
+            3244:     47(int) CompositeExtract 3242 0
+            3245:         357 Load 359(s2DRect)
+            3246:   53(fvec2) Load 148(c2)
+            3247:3146(ResType) ImageSparseSampleImplicitLod 3245 3246
+            3248:  7(f16vec4) CompositeExtract 3247 1
+                              Store 3143(texel) 3248
+            3249:     47(int) CompositeExtract 3247 0
+            3250:         357 Load 359(s2DRect)
+            3251:154(f16vec2) Load 156(f16c2)
+            3252:3146(ResType) ImageSparseSampleImplicitLod 3250 3251
+            3253:  7(f16vec4) CompositeExtract 3252 1
+                              Store 3143(texel) 3253
+            3254:     47(int) CompositeExtract 3252 0
+            3255:         371 Load 373(s2DRectShadow)
+            3256:  167(fvec3) Load 169(c3)
+            3257:    208(ptr) AccessChain 3143(texel) 207
+            3258:   52(float) CompositeExtract 3256 2
+            3259:3182(ResType) ImageSparseSampleDrefImplicitLod 3255 3256 3258
+            3260:6(float16_t) CompositeExtract 3259 1
+                              Store 3257 3260
+            3261:     47(int) CompositeExtract 3259 0
+            3262:         371 Load 373(s2DRectShadow)
+            3263:154(f16vec2) Load 156(f16c2)
+            3264:   52(float) Load 215(compare)
+            3265:    208(ptr) AccessChain 3143(texel) 207
+            3266:3182(ResType) ImageSparseSampleDrefImplicitLod 3262 3263 3264
+            3267:6(float16_t) CompositeExtract 3266 1
+                              Store 3265 3267
+            3268:     47(int) CompositeExtract 3266 0
+            3269:         391 Load 393(sCubeArrayShadow)
+            3270:  249(fvec4) Load 251(c4)
+            3271:   52(float) Load 215(compare)
+            3272:    208(ptr) AccessChain 3143(texel) 207
+            3273:3182(ResType) ImageSparseSampleDrefImplicitLod 3269 3270 3271
+            3274:6(float16_t) CompositeExtract 3273 1
+                              Store 3272 3274
+            3275:     47(int) CompositeExtract 3273 0
+            3276:         391 Load 393(sCubeArrayShadow)
+            3277:  7(f16vec4) Load 309(f16c4)
+            3278:   52(float) Load 215(compare)
+            3279:    208(ptr) AccessChain 3143(texel) 207
+            3280:3182(ResType) ImageSparseSampleDrefImplicitLod 3276 3277 3278
+            3281:6(float16_t) CompositeExtract 3280 1
+                              Store 3279 3281
+            3282:     47(int) CompositeExtract 3280 0
+            3283:  7(f16vec4) Load 3143(texel)
+                              ReturnValue 3283
                               FunctionEnd
 71(testSparseTextureLod():  7(f16vec4) Function None 8
               72:             Label
-     3242(texel):     64(ptr) Variable Function
-                              Store 3242(texel) 121
-            3243:         143 Load 145(s2D)
-            3244:   53(fvec2) Load 148(c2)
-            3245:   52(float) Load 565(lod)
-            3246:3102(ResType) ImageSparseSampleExplicitLod 3243 3244 Lod 3245
-            3247:  7(f16vec4) CompositeExtract 3246 1
-                              Store 3242(texel) 3247
-            3248:     47(int) CompositeExtract 3246 0
-            3249:         143 Load 145(s2D)
-            3250:154(f16vec2) Load 156(f16c2)
-            3251:6(float16_t) Load 572(f16lod)
-            3252:3102(ResType) ImageSparseSampleExplicitLod 3249 3250 Lod 3251
-            3253:  7(f16vec4) CompositeExtract 3252 1
-                              Store 3242(texel) 3253
-            3254:     47(int) CompositeExtract 3252 0
-            3255:         163 Load 165(s3D)
-            3256:  167(fvec3) Load 169(c3)
-            3257:   52(float) Load 565(lod)
-            3258:3102(ResType) ImageSparseSampleExplicitLod 3255 3256 Lod 3257
-            3259:  7(f16vec4) CompositeExtract 3258 1
-                              Store 3242(texel) 3259
-            3260:     47(int) CompositeExtract 3258 0
-            3261:         163 Load 165(s3D)
-            3262:175(f16vec3) Load 177(f16c3)
-            3263:6(float16_t) Load 572(f16lod)
-            3264:3102(ResType) ImageSparseSampleExplicitLod 3261 3262 Lod 3263
-            3265:  7(f16vec4) CompositeExtract 3264 1
-                              Store 3242(texel) 3265
-            3266:     47(int) CompositeExtract 3264 0
-            3267:         184 Load 186(sCube)
-            3268:  167(fvec3) Load 169(c3)
-            3269:   52(float) Load 565(lod)
-            3270:3102(ResType) ImageSparseSampleExplicitLod 3267 3268 Lod 3269
-            3271:  7(f16vec4) CompositeExtract 3270 1
-                              Store 3242(texel) 3271
-            3272:     47(int) CompositeExtract 3270 0
-            3273:         184 Load 186(sCube)
-            3274:175(f16vec3) Load 177(f16c3)
-            3275:6(float16_t) Load 572(f16lod)
-            3276:3102(ResType) ImageSparseSampleExplicitLod 3273 3274 Lod 3275
-            3277:  7(f16vec4) CompositeExtract 3276 1
-                              Store 3242(texel) 3277
-            3278:     47(int) CompositeExtract 3276 0
-            3279:         224 Load 226(s2DShadow)
-            3280:  167(fvec3) Load 169(c3)
-            3281:   52(float) Load 565(lod)
-            3282:    208(ptr) AccessChain 3242(texel) 207
-            3283:   52(float) CompositeExtract 3280 2
-            3284:3138(ResType) ImageSparseSampleDrefExplicitLod 3279 3280 3283 Lod 3281
-            3285:6(float16_t) CompositeExtract 3284 1
-                              Store 3282 3285
-            3286:     47(int) CompositeExtract 3284 0
-            3287:         224 Load 226(s2DShadow)
-            3288:154(f16vec2) Load 156(f16c2)
-            3289:   52(float) Load 215(compare)
-            3290:6(float16_t) Load 572(f16lod)
-            3291:    208(ptr) AccessChain 3242(texel) 207
-            3292:3138(ResType) ImageSparseSampleDrefExplicitLod 3287 3288 3289 Lod 3290
-            3293:6(float16_t) CompositeExtract 3292 1
-                              Store 3291 3293
-            3294:     47(int) CompositeExtract 3292 0
-            3295:         284 Load 286(s2DArray)
-            3296:  167(fvec3) Load 169(c3)
-            3297:   52(float) Load 565(lod)
-            3298:3102(ResType) ImageSparseSampleExplicitLod 3295 3296 Lod 3297
-            3299:  7(f16vec4) CompositeExtract 3298 1
-                              Store 3242(texel) 3299
-            3300:     47(int) CompositeExtract 3298 0
-            3301:         284 Load 286(s2DArray)
-            3302:175(f16vec3) Load 177(f16c3)
-            3303:6(float16_t) Load 572(f16lod)
-            3304:3102(ResType) ImageSparseSampleExplicitLod 3301 3302 Lod 3303
-            3305:  7(f16vec4) CompositeExtract 3304 1
-                              Store 3242(texel) 3305
-            3306:     47(int) CompositeExtract 3304 0
-            3307:         299 Load 301(sCubeArray)
-            3308:  249(fvec4) Load 251(c4)
-            3309:   52(float) Load 565(lod)
-            3310:3102(ResType) ImageSparseSampleExplicitLod 3307 3308 Lod 3309
-            3311:  7(f16vec4) CompositeExtract 3310 1
-                              Store 3242(texel) 3311
-            3312:     47(int) CompositeExtract 3310 0
-            3313:         299 Load 301(sCubeArray)
-            3314:  7(f16vec4) Load 309(f16c4)
-            3315:6(float16_t) Load 572(f16lod)
-            3316:3102(ResType) ImageSparseSampleExplicitLod 3313 3314 Lod 3315
-            3317:  7(f16vec4) CompositeExtract 3316 1
-                              Store 3242(texel) 3317
-            3318:     47(int) CompositeExtract 3316 0
-            3319:  7(f16vec4) Load 3242(texel)
-                              ReturnValue 3319
+     3286(texel):     64(ptr) Variable Function
+                              Store 3286(texel) 121
+            3287:         143 Load 145(s2D)
+            3288:   53(fvec2) Load 148(c2)
+            3289:   52(float) Load 565(lod)
+            3290:3146(ResType) ImageSparseSampleExplicitLod 3287 3288 Lod 3289
+            3291:  7(f16vec4) CompositeExtract 3290 1
+                              Store 3286(texel) 3291
+            3292:     47(int) CompositeExtract 3290 0
+            3293:         143 Load 145(s2D)
+            3294:154(f16vec2) Load 156(f16c2)
+            3295:6(float16_t) Load 572(f16lod)
+            3296:3146(ResType) ImageSparseSampleExplicitLod 3293 3294 Lod 3295
+            3297:  7(f16vec4) CompositeExtract 3296 1
+                              Store 3286(texel) 3297
+            3298:     47(int) CompositeExtract 3296 0
+            3299:         163 Load 165(s3D)
+            3300:  167(fvec3) Load 169(c3)
+            3301:   52(float) Load 565(lod)
+            3302:3146(ResType) ImageSparseSampleExplicitLod 3299 3300 Lod 3301
+            3303:  7(f16vec4) CompositeExtract 3302 1
+                              Store 3286(texel) 3303
+            3304:     47(int) CompositeExtract 3302 0
+            3305:         163 Load 165(s3D)
+            3306:175(f16vec3) Load 177(f16c3)
+            3307:6(float16_t) Load 572(f16lod)
+            3308:3146(ResType) ImageSparseSampleExplicitLod 3305 3306 Lod 3307
+            3309:  7(f16vec4) CompositeExtract 3308 1
+                              Store 3286(texel) 3309
+            3310:     47(int) CompositeExtract 3308 0
+            3311:         184 Load 186(sCube)
+            3312:  167(fvec3) Load 169(c3)
+            3313:   52(float) Load 565(lod)
+            3314:3146(ResType) ImageSparseSampleExplicitLod 3311 3312 Lod 3313
+            3315:  7(f16vec4) CompositeExtract 3314 1
+                              Store 3286(texel) 3315
+            3316:     47(int) CompositeExtract 3314 0
+            3317:         184 Load 186(sCube)
+            3318:175(f16vec3) Load 177(f16c3)
+            3319:6(float16_t) Load 572(f16lod)
+            3320:3146(ResType) ImageSparseSampleExplicitLod 3317 3318 Lod 3319
+            3321:  7(f16vec4) CompositeExtract 3320 1
+                              Store 3286(texel) 3321
+            3322:     47(int) CompositeExtract 3320 0
+            3323:         224 Load 226(s2DShadow)
+            3324:  167(fvec3) Load 169(c3)
+            3325:   52(float) Load 565(lod)
+            3326:    208(ptr) AccessChain 3286(texel) 207
+            3327:   52(float) CompositeExtract 3324 2
+            3328:3182(ResType) ImageSparseSampleDrefExplicitLod 3323 3324 3327 Lod 3325
+            3329:6(float16_t) CompositeExtract 3328 1
+                              Store 3326 3329
+            3330:     47(int) CompositeExtract 3328 0
+            3331:         224 Load 226(s2DShadow)
+            3332:154(f16vec2) Load 156(f16c2)
+            3333:   52(float) Load 215(compare)
+            3334:6(float16_t) Load 572(f16lod)
+            3335:    208(ptr) AccessChain 3286(texel) 207
+            3336:3182(ResType) ImageSparseSampleDrefExplicitLod 3331 3332 3333 Lod 3334
+            3337:6(float16_t) CompositeExtract 3336 1
+                              Store 3335 3337
+            3338:     47(int) CompositeExtract 3336 0
+            3339:         284 Load 286(s2DArray)
+            3340:  167(fvec3) Load 169(c3)
+            3341:   52(float) Load 565(lod)
+            3342:3146(ResType) ImageSparseSampleExplicitLod 3339 3340 Lod 3341
+            3343:  7(f16vec4) CompositeExtract 3342 1
+                              Store 3286(texel) 3343
+            3344:     47(int) CompositeExtract 3342 0
+            3345:         284 Load 286(s2DArray)
+            3346:175(f16vec3) Load 177(f16c3)
+            3347:6(float16_t) Load 572(f16lod)
+            3348:3146(ResType) ImageSparseSampleExplicitLod 3345 3346 Lod 3347
+            3349:  7(f16vec4) CompositeExtract 3348 1
+                              Store 3286(texel) 3349
+            3350:     47(int) CompositeExtract 3348 0
+            3351:         299 Load 301(sCubeArray)
+            3352:  249(fvec4) Load 251(c4)
+            3353:   52(float) Load 565(lod)
+            3354:3146(ResType) ImageSparseSampleExplicitLod 3351 3352 Lod 3353
+            3355:  7(f16vec4) CompositeExtract 3354 1
+                              Store 3286(texel) 3355
+            3356:     47(int) CompositeExtract 3354 0
+            3357:         299 Load 301(sCubeArray)
+            3358:  7(f16vec4) Load 309(f16c4)
+            3359:6(float16_t) Load 572(f16lod)
+            3360:3146(ResType) ImageSparseSampleExplicitLod 3357 3358 Lod 3359
+            3361:  7(f16vec4) CompositeExtract 3360 1
+                              Store 3286(texel) 3361
+            3362:     47(int) CompositeExtract 3360 0
+            3363:  7(f16vec4) Load 3286(texel)
+                              ReturnValue 3363
                               FunctionEnd
 73(testSparseTextureOffset():  7(f16vec4) Function None 8
               74:             Label
-     3322(texel):     64(ptr) Variable Function
-                              Store 3322(texel) 121
-            3323:         143 Load 145(s2D)
-            3324:   53(fvec2) Load 148(c2)
-            3325:3102(ResType) ImageSparseSampleImplicitLod 3323 3324 ConstOffset 722
-            3326:  7(f16vec4) CompositeExtract 3325 1
-                              Store 3322(texel) 3326
-            3327:     47(int) CompositeExtract 3325 0
-            3328:         143 Load 145(s2D)
-            3329:154(f16vec2) Load 156(f16c2)
-            3330:6(float16_t) Load 137(f16bias)
-            3331:3102(ResType) ImageSparseSampleImplicitLod 3328 3329 Bias ConstOffset 3330 722
-            3332:  7(f16vec4) CompositeExtract 3331 1
-                              Store 3322(texel) 3332
-            3333:     47(int) CompositeExtract 3331 0
-            3334:         163 Load 165(s3D)
-            3335:  167(fvec3) Load 169(c3)
-            3336:3102(ResType) ImageSparseSampleImplicitLod 3334 3335 ConstOffset 735
-            3337:  7(f16vec4) CompositeExtract 3336 1
-                              Store 3322(texel) 3337
-            3338:     47(int) CompositeExtract 3336 0
-            3339:         163 Load 165(s3D)
-            3340:175(f16vec3) Load 177(f16c3)
-            3341:6(float16_t) Load 137(f16bias)
-            3342:3102(ResType) ImageSparseSampleImplicitLod 3339 3340 Bias ConstOffset 3341 735
-            3343:  7(f16vec4) CompositeExtract 3342 1
-                              Store 3322(texel) 3343
-            3344:     47(int) CompositeExtract 3342 0
-            3345:         357 Load 359(s2DRect)
-            3346:   53(fvec2) Load 148(c2)
-            3347:3102(ResType) ImageSparseSampleImplicitLod 3345 3346 ConstOffset 722
-            3348:  7(f16vec4) CompositeExtract 3347 1
-                              Store 3322(texel) 3348
-            3349:     47(int) CompositeExtract 3347 0
-            3350:         357 Load 359(s2DRect)
-            3351:154(f16vec2) Load 156(f16c2)
-            3352:3102(ResType) ImageSparseSampleImplicitLod 3350 3351 ConstOffset 722
-            3353:  7(f16vec4) CompositeExtract 3352 1
-                              Store 3322(texel) 3353
-            3354:     47(int) CompositeExtract 3352 0
-            3355:         371 Load 373(s2DRectShadow)
-            3356:  167(fvec3) Load 169(c3)
-            3357:    208(ptr) AccessChain 3322(texel) 207
-            3358:   52(float) CompositeExtract 3356 2
-            3359:3138(ResType) ImageSparseSampleDrefImplicitLod 3355 3356 3358 ConstOffset 722
-            3360:6(float16_t) CompositeExtract 3359 1
-                              Store 3357 3360
-            3361:     47(int) CompositeExtract 3359 0
-            3362:         371 Load 373(s2DRectShadow)
-            3363:154(f16vec2) Load 156(f16c2)
-            3364:   52(float) Load 215(compare)
-            3365:    208(ptr) AccessChain 3322(texel) 207
-            3366:3138(ResType) ImageSparseSampleDrefImplicitLod 3362 3363 3364 ConstOffset 722
-            3367:6(float16_t) CompositeExtract 3366 1
-                              Store 3365 3367
-            3368:     47(int) CompositeExtract 3366 0
-            3369:         224 Load 226(s2DShadow)
-            3370:  167(fvec3) Load 169(c3)
-            3371:    208(ptr) AccessChain 3322(texel) 207
-            3372:   52(float) CompositeExtract 3370 2
-            3373:3138(ResType) ImageSparseSampleDrefImplicitLod 3369 3370 3372 ConstOffset 722
-            3374:6(float16_t) CompositeExtract 3373 1
-                              Store 3371 3374
-            3375:     47(int) CompositeExtract 3373 0
-            3376:         224 Load 226(s2DShadow)
-            3377:154(f16vec2) Load 156(f16c2)
-            3378:   52(float) Load 215(compare)
-            3379:    208(ptr) AccessChain 3322(texel) 207
-            3380:6(float16_t) Load 137(f16bias)
-            3381:3138(ResType) ImageSparseSampleDrefImplicitLod 3376 3377 3378 Bias ConstOffset 3380 722
-            3382:6(float16_t) CompositeExtract 3381 1
-                              Store 3379 3382
-            3383:     47(int) CompositeExtract 3381 0
-            3384:         284 Load 286(s2DArray)
-            3385:  167(fvec3) Load 169(c3)
-            3386:3102(ResType) ImageSparseSampleImplicitLod 3384 3385 ConstOffset 722
+     3366(texel):     64(ptr) Variable Function
+                              Store 3366(texel) 121
+            3367:         143 Load 145(s2D)
+            3368:   53(fvec2) Load 148(c2)
+            3369:3146(ResType) ImageSparseSampleImplicitLod 3367 3368 ConstOffset 722
+            3370:  7(f16vec4) CompositeExtract 3369 1
+                              Store 3366(texel) 3370
+            3371:     47(int) CompositeExtract 3369 0
+            3372:         143 Load 145(s2D)
+            3373:154(f16vec2) Load 156(f16c2)
+            3374:6(float16_t) Load 137(f16bias)
+            3375:3146(ResType) ImageSparseSampleImplicitLod 3372 3373 Bias ConstOffset 3374 722
+            3376:  7(f16vec4) CompositeExtract 3375 1
+                              Store 3366(texel) 3376
+            3377:     47(int) CompositeExtract 3375 0
+            3378:         163 Load 165(s3D)
+            3379:  167(fvec3) Load 169(c3)
+            3380:3146(ResType) ImageSparseSampleImplicitLod 3378 3379 ConstOffset 735
+            3381:  7(f16vec4) CompositeExtract 3380 1
+                              Store 3366(texel) 3381
+            3382:     47(int) CompositeExtract 3380 0
+            3383:         163 Load 165(s3D)
+            3384:175(f16vec3) Load 177(f16c3)
+            3385:6(float16_t) Load 137(f16bias)
+            3386:3146(ResType) ImageSparseSampleImplicitLod 3383 3384 Bias ConstOffset 3385 735
             3387:  7(f16vec4) CompositeExtract 3386 1
-                              Store 3322(texel) 3387
+                              Store 3366(texel) 3387
             3388:     47(int) CompositeExtract 3386 0
-            3389:         284 Load 286(s2DArray)
-            3390:175(f16vec3) Load 177(f16c3)
-            3391:6(float16_t) Load 137(f16bias)
-            3392:3102(ResType) ImageSparseSampleImplicitLod 3389 3390 Bias ConstOffset 3391 722
-            3393:  7(f16vec4) CompositeExtract 3392 1
-                              Store 3322(texel) 3393
-            3394:     47(int) CompositeExtract 3392 0
-            3395:         337 Load 339(s2DArrayShadow)
-            3396:  249(fvec4) Load 251(c4)
-            3397:    208(ptr) AccessChain 3322(texel) 207
-            3398:   52(float) CompositeExtract 3396 3
-            3399:3138(ResType) ImageSparseSampleDrefImplicitLod 3395 3396 3398 ConstOffset 722
-            3400:6(float16_t) CompositeExtract 3399 1
-                              Store 3397 3400
-            3401:     47(int) CompositeExtract 3399 0
-            3402:         337 Load 339(s2DArrayShadow)
-            3403:175(f16vec3) Load 177(f16c3)
-            3404:   52(float) Load 215(compare)
-            3405:    208(ptr) AccessChain 3322(texel) 207
-            3406:3138(ResType) ImageSparseSampleDrefImplicitLod 3402 3403 3404 ConstOffset 722
-            3407:6(float16_t) CompositeExtract 3406 1
-                              Store 3405 3407
-            3408:     47(int) CompositeExtract 3406 0
-            3409:  7(f16vec4) Load 3322(texel)
-                              ReturnValue 3409
-                              FunctionEnd
-75(testSparseTextureLodOffset():  7(f16vec4) Function None 8
-              76:             Label
-     3412(texel):     64(ptr) Variable Function
-                              Store 3412(texel) 121
-            3413:         143 Load 145(s2D)
-            3414:   53(fvec2) Load 148(c2)
-            3415:   52(float) Load 565(lod)
-            3416:3102(ResType) ImageSparseSampleExplicitLod 3413 3414 Lod ConstOffset 3415 722
-            3417:  7(f16vec4) CompositeExtract 3416 1
-                              Store 3412(texel) 3417
-            3418:     47(int) CompositeExtract 3416 0
-            3419:         143 Load 145(s2D)
-            3420:154(f16vec2) Load 156(f16c2)
-            3421:6(float16_t) Load 572(f16lod)
-            3422:3102(ResType) ImageSparseSampleExplicitLod 3419 3420 Lod ConstOffset 3421 722
-            3423:  7(f16vec4) CompositeExtract 3422 1
-                              Store 3412(texel) 3423
-            3424:     47(int) CompositeExtract 3422 0
-            3425:         163 Load 165(s3D)
-            3426:  167(fvec3) Load 169(c3)
-            3427:   52(float) Load 565(lod)
-            3428:3102(ResType) ImageSparseSampleExplicitLod 3425 3426 Lod ConstOffset 3427 735
-            3429:  7(f16vec4) CompositeExtract 3428 1
-                              Store 3412(texel) 3429
-            3430:     47(int) CompositeExtract 3428 0
-            3431:         163 Load 165(s3D)
-            3432:175(f16vec3) Load 177(f16c3)
-            3433:6(float16_t) Load 572(f16lod)
-            3434:3102(ResType) ImageSparseSampleExplicitLod 3431 3432 Lod ConstOffset 3433 735
-            3435:  7(f16vec4) CompositeExtract 3434 1
-                              Store 3412(texel) 3435
-            3436:     47(int) CompositeExtract 3434 0
-            3437:         224 Load 226(s2DShadow)
-            3438:  167(fvec3) Load 169(c3)
-            3439:   52(float) Load 565(lod)
-            3440:    208(ptr) AccessChain 3412(texel) 207
-            3441:   52(float) CompositeExtract 3438 2
-            3442:3138(ResType) ImageSparseSampleDrefExplicitLod 3437 3438 3441 Lod ConstOffset 3439 722
-            3443:6(float16_t) CompositeExtract 3442 1
-                              Store 3440 3443
-            3444:     47(int) CompositeExtract 3442 0
-            3445:         224 Load 226(s2DShadow)
-            3446:154(f16vec2) Load 156(f16c2)
-            3447:   52(float) Load 215(compare)
-            3448:6(float16_t) Load 572(f16lod)
-            3449:    208(ptr) AccessChain 3412(texel) 207
-            3450:3138(ResType) ImageSparseSampleDrefExplicitLod 3445 3446 3447 Lod ConstOffset 3448 722
+            3389:         357 Load 359(s2DRect)
+            3390:   53(fvec2) Load 148(c2)
+            3391:3146(ResType) ImageSparseSampleImplicitLod 3389 3390 ConstOffset 722
+            3392:  7(f16vec4) CompositeExtract 3391 1
+                              Store 3366(texel) 3392
+            3393:     47(int) CompositeExtract 3391 0
+            3394:         357 Load 359(s2DRect)
+            3395:154(f16vec2) Load 156(f16c2)
+            3396:3146(ResType) ImageSparseSampleImplicitLod 3394 3395 ConstOffset 722
+            3397:  7(f16vec4) CompositeExtract 3396 1
+                              Store 3366(texel) 3397
+            3398:     47(int) CompositeExtract 3396 0
+            3399:         371 Load 373(s2DRectShadow)
+            3400:  167(fvec3) Load 169(c3)
+            3401:    208(ptr) AccessChain 3366(texel) 207
+            3402:   52(float) CompositeExtract 3400 2
+            3403:3182(ResType) ImageSparseSampleDrefImplicitLod 3399 3400 3402 ConstOffset 722
+            3404:6(float16_t) CompositeExtract 3403 1
+                              Store 3401 3404
+            3405:     47(int) CompositeExtract 3403 0
+            3406:         371 Load 373(s2DRectShadow)
+            3407:154(f16vec2) Load 156(f16c2)
+            3408:   52(float) Load 215(compare)
+            3409:    208(ptr) AccessChain 3366(texel) 207
+            3410:3182(ResType) ImageSparseSampleDrefImplicitLod 3406 3407 3408 ConstOffset 722
+            3411:6(float16_t) CompositeExtract 3410 1
+                              Store 3409 3411
+            3412:     47(int) CompositeExtract 3410 0
+            3413:         224 Load 226(s2DShadow)
+            3414:  167(fvec3) Load 169(c3)
+            3415:    208(ptr) AccessChain 3366(texel) 207
+            3416:   52(float) CompositeExtract 3414 2
+            3417:3182(ResType) ImageSparseSampleDrefImplicitLod 3413 3414 3416 ConstOffset 722
+            3418:6(float16_t) CompositeExtract 3417 1
+                              Store 3415 3418
+            3419:     47(int) CompositeExtract 3417 0
+            3420:         224 Load 226(s2DShadow)
+            3421:154(f16vec2) Load 156(f16c2)
+            3422:   52(float) Load 215(compare)
+            3423:    208(ptr) AccessChain 3366(texel) 207
+            3424:6(float16_t) Load 137(f16bias)
+            3425:3182(ResType) ImageSparseSampleDrefImplicitLod 3420 3421 3422 Bias ConstOffset 3424 722
+            3426:6(float16_t) CompositeExtract 3425 1
+                              Store 3423 3426
+            3427:     47(int) CompositeExtract 3425 0
+            3428:         284 Load 286(s2DArray)
+            3429:  167(fvec3) Load 169(c3)
+            3430:3146(ResType) ImageSparseSampleImplicitLod 3428 3429 ConstOffset 722
+            3431:  7(f16vec4) CompositeExtract 3430 1
+                              Store 3366(texel) 3431
+            3432:     47(int) CompositeExtract 3430 0
+            3433:         284 Load 286(s2DArray)
+            3434:175(f16vec3) Load 177(f16c3)
+            3435:6(float16_t) Load 137(f16bias)
+            3436:3146(ResType) ImageSparseSampleImplicitLod 3433 3434 Bias ConstOffset 3435 722
+            3437:  7(f16vec4) CompositeExtract 3436 1
+                              Store 3366(texel) 3437
+            3438:     47(int) CompositeExtract 3436 0
+            3439:         337 Load 339(s2DArrayShadow)
+            3440:  249(fvec4) Load 251(c4)
+            3441:    208(ptr) AccessChain 3366(texel) 207
+            3442:   52(float) CompositeExtract 3440 3
+            3443:3182(ResType) ImageSparseSampleDrefImplicitLod 3439 3440 3442 ConstOffset 722
+            3444:6(float16_t) CompositeExtract 3443 1
+                              Store 3441 3444
+            3445:     47(int) CompositeExtract 3443 0
+            3446:         337 Load 339(s2DArrayShadow)
+            3447:175(f16vec3) Load 177(f16c3)
+            3448:   52(float) Load 215(compare)
+            3449:    208(ptr) AccessChain 3366(texel) 207
+            3450:3182(ResType) ImageSparseSampleDrefImplicitLod 3446 3447 3448 ConstOffset 722
             3451:6(float16_t) CompositeExtract 3450 1
                               Store 3449 3451
             3452:     47(int) CompositeExtract 3450 0
-            3453:         284 Load 286(s2DArray)
-            3454:  167(fvec3) Load 169(c3)
-            3455:   52(float) Load 565(lod)
-            3456:3102(ResType) ImageSparseSampleExplicitLod 3453 3454 Lod ConstOffset 3455 722
-            3457:  7(f16vec4) CompositeExtract 3456 1
-                              Store 3412(texel) 3457
-            3458:     47(int) CompositeExtract 3456 0
-            3459:         284 Load 286(s2DArray)
-            3460:175(f16vec3) Load 177(f16c3)
-            3461:6(float16_t) Load 572(f16lod)
-            3462:3102(ResType) ImageSparseSampleExplicitLod 3459 3460 Lod ConstOffset 3461 722
-            3463:  7(f16vec4) CompositeExtract 3462 1
-                              Store 3412(texel) 3463
-            3464:     47(int) CompositeExtract 3462 0
-            3465:  7(f16vec4) Load 3412(texel)
-                              ReturnValue 3465
+            3453:  7(f16vec4) Load 3366(texel)
+                              ReturnValue 3453
+                              FunctionEnd
+75(testSparseTextureLodOffset():  7(f16vec4) Function None 8
+              76:             Label
+     3456(texel):     64(ptr) Variable Function
+                              Store 3456(texel) 121
+            3457:         143 Load 145(s2D)
+            3458:   53(fvec2) Load 148(c2)
+            3459:   52(float) Load 565(lod)
+            3460:3146(ResType) ImageSparseSampleExplicitLod 3457 3458 Lod ConstOffset 3459 722
+            3461:  7(f16vec4) CompositeExtract 3460 1
+                              Store 3456(texel) 3461
+            3462:     47(int) CompositeExtract 3460 0
+            3463:         143 Load 145(s2D)
+            3464:154(f16vec2) Load 156(f16c2)
+            3465:6(float16_t) Load 572(f16lod)
+            3466:3146(ResType) ImageSparseSampleExplicitLod 3463 3464 Lod ConstOffset 3465 722
+            3467:  7(f16vec4) CompositeExtract 3466 1
+                              Store 3456(texel) 3467
+            3468:     47(int) CompositeExtract 3466 0
+            3469:         163 Load 165(s3D)
+            3470:  167(fvec3) Load 169(c3)
+            3471:   52(float) Load 565(lod)
+            3472:3146(ResType) ImageSparseSampleExplicitLod 3469 3470 Lod ConstOffset 3471 735
+            3473:  7(f16vec4) CompositeExtract 3472 1
+                              Store 3456(texel) 3473
+            3474:     47(int) CompositeExtract 3472 0
+            3475:         163 Load 165(s3D)
+            3476:175(f16vec3) Load 177(f16c3)
+            3477:6(float16_t) Load 572(f16lod)
+            3478:3146(ResType) ImageSparseSampleExplicitLod 3475 3476 Lod ConstOffset 3477 735
+            3479:  7(f16vec4) CompositeExtract 3478 1
+                              Store 3456(texel) 3479
+            3480:     47(int) CompositeExtract 3478 0
+            3481:         224 Load 226(s2DShadow)
+            3482:  167(fvec3) Load 169(c3)
+            3483:   52(float) Load 565(lod)
+            3484:    208(ptr) AccessChain 3456(texel) 207
+            3485:   52(float) CompositeExtract 3482 2
+            3486:3182(ResType) ImageSparseSampleDrefExplicitLod 3481 3482 3485 Lod ConstOffset 3483 722
+            3487:6(float16_t) CompositeExtract 3486 1
+                              Store 3484 3487
+            3488:     47(int) CompositeExtract 3486 0
+            3489:         224 Load 226(s2DShadow)
+            3490:154(f16vec2) Load 156(f16c2)
+            3491:   52(float) Load 215(compare)
+            3492:6(float16_t) Load 572(f16lod)
+            3493:    208(ptr) AccessChain 3456(texel) 207
+            3494:3182(ResType) ImageSparseSampleDrefExplicitLod 3489 3490 3491 Lod ConstOffset 3492 722
+            3495:6(float16_t) CompositeExtract 3494 1
+                              Store 3493 3495
+            3496:     47(int) CompositeExtract 3494 0
+            3497:         284 Load 286(s2DArray)
+            3498:  167(fvec3) Load 169(c3)
+            3499:   52(float) Load 565(lod)
+            3500:3146(ResType) ImageSparseSampleExplicitLod 3497 3498 Lod ConstOffset 3499 722
+            3501:  7(f16vec4) CompositeExtract 3500 1
+                              Store 3456(texel) 3501
+            3502:     47(int) CompositeExtract 3500 0
+            3503:         284 Load 286(s2DArray)
+            3504:175(f16vec3) Load 177(f16c3)
+            3505:6(float16_t) Load 572(f16lod)
+            3506:3146(ResType) ImageSparseSampleExplicitLod 3503 3504 Lod ConstOffset 3505 722
+            3507:  7(f16vec4) CompositeExtract 3506 1
+                              Store 3456(texel) 3507
+            3508:     47(int) CompositeExtract 3506 0
+            3509:  7(f16vec4) Load 3456(texel)
+                              ReturnValue 3509
                               FunctionEnd
 77(testSparseTextureGrad():  7(f16vec4) Function None 8
               78:             Label
-     3468(texel):     64(ptr) Variable Function
-                              Store 3468(texel) 121
-            3469:         143 Load 145(s2D)
-            3470:   53(fvec2) Load 148(c2)
-            3471:   53(fvec2) Load 1409(dPdxy2)
-            3472:   53(fvec2) Load 1409(dPdxy2)
-            3473:3102(ResType) ImageSparseSampleExplicitLod 3469 3470 Grad 3471 3472
-            3474:  7(f16vec4) CompositeExtract 3473 1
-                              Store 3468(texel) 3474
-            3475:     47(int) CompositeExtract 3473 0
-            3476:         143 Load 145(s2D)
-            3477:154(f16vec2) Load 156(f16c2)
-            3478:154(f16vec2) Load 1417(f16dPdxy2)
-            3479:154(f16vec2) Load 1417(f16dPdxy2)
-            3480:3102(ResType) ImageSparseSampleExplicitLod 3476 3477 Grad 3478 3479
-            3481:  7(f16vec4) CompositeExtract 3480 1
-                              Store 3468(texel) 3481
-            3482:     47(int) CompositeExtract 3480 0
-            3483:         163 Load 165(s3D)
-            3484:  167(fvec3) Load 169(c3)
-            3485:  167(fvec3) Load 1425(dPdxy3)
-            3486:  167(fvec3) Load 1425(dPdxy3)
-            3487:3102(ResType) ImageSparseSampleExplicitLod 3483 3484 Grad 3485 3486
-            3488:  7(f16vec4) CompositeExtract 3487 1
-                              Store 3468(texel) 3488
-            3489:     47(int) CompositeExtract 3487 0
-            3490:         163 Load 165(s3D)
-            3491:175(f16vec3) Load 177(f16c3)
-            3492:175(f16vec3) Load 1433(f16dPdxy3)
-            3493:175(f16vec3) Load 1433(f16dPdxy3)
-            3494:3102(ResType) ImageSparseSampleExplicitLod 3490 3491 Grad 3492 3493
-            3495:  7(f16vec4) CompositeExtract 3494 1
-                              Store 3468(texel) 3495
-            3496:     47(int) CompositeExtract 3494 0
-            3497:         184 Load 186(sCube)
-            3498:  167(fvec3) Load 169(c3)
-            3499:  167(fvec3) Load 1425(dPdxy3)
-            3500:  167(fvec3) Load 1425(dPdxy3)
-            3501:3102(ResType) ImageSparseSampleExplicitLod 3497 3498 Grad 3499 3500
-            3502:  7(f16vec4) CompositeExtract 3501 1
-                              Store 3468(texel) 3502
-            3503:     47(int) CompositeExtract 3501 0
-            3504:         184 Load 186(sCube)
-            3505:175(f16vec3) Load 177(f16c3)
-            3506:175(f16vec3) Load 1433(f16dPdxy3)
-            3507:175(f16vec3) Load 1433(f16dPdxy3)
-            3508:3102(ResType) ImageSparseSampleExplicitLod 3504 3505 Grad 3506 3507
-            3509:  7(f16vec4) CompositeExtract 3508 1
-                              Store 3468(texel) 3509
-            3510:     47(int) CompositeExtract 3508 0
-            3511:         357 Load 359(s2DRect)
-            3512:   53(fvec2) Load 148(c2)
-            3513:   53(fvec2) Load 1409(dPdxy2)
-            3514:   53(fvec2) Load 1409(dPdxy2)
-            3515:3102(ResType) ImageSparseSampleExplicitLod 3511 3512 Grad 3513 3514
-            3516:  7(f16vec4) CompositeExtract 3515 1
-                              Store 3468(texel) 3516
-            3517:     47(int) CompositeExtract 3515 0
-            3518:         357 Load 359(s2DRect)
-            3519:154(f16vec2) Load 156(f16c2)
-            3520:154(f16vec2) Load 1417(f16dPdxy2)
-            3521:154(f16vec2) Load 1417(f16dPdxy2)
-            3522:3102(ResType) ImageSparseSampleExplicitLod 3518 3519 Grad 3520 3521
-            3523:  7(f16vec4) CompositeExtract 3522 1
-                              Store 3468(texel) 3523
-            3524:     47(int) CompositeExtract 3522 0
-            3525:         371 Load 373(s2DRectShadow)
-            3526:  167(fvec3) Load 169(c3)
-            3527:   53(fvec2) Load 1409(dPdxy2)
-            3528:   53(fvec2) Load 1409(dPdxy2)
-            3529:    208(ptr) AccessChain 3468(texel) 207
-            3530:   52(float) CompositeExtract 3526 2
-            3531:3138(ResType) ImageSparseSampleDrefExplicitLod 3525 3526 3530 Grad 3527 3528
-            3532:6(float16_t) CompositeExtract 3531 1
-                              Store 3529 3532
+     3512(texel):     64(ptr) Variable Function
+                              Store 3512(texel) 121
+            3513:         143 Load 145(s2D)
+            3514:   53(fvec2) Load 148(c2)
+            3515:   53(fvec2) Load 1409(dPdxy2)
+            3516:   53(fvec2) Load 1409(dPdxy2)
+            3517:3146(ResType) ImageSparseSampleExplicitLod 3513 3514 Grad 3515 3516
+            3518:  7(f16vec4) CompositeExtract 3517 1
+                              Store 3512(texel) 3518
+            3519:     47(int) CompositeExtract 3517 0
+            3520:         143 Load 145(s2D)
+            3521:154(f16vec2) Load 156(f16c2)
+            3522:154(f16vec2) Load 1417(f16dPdxy2)
+            3523:154(f16vec2) Load 1417(f16dPdxy2)
+            3524:3146(ResType) ImageSparseSampleExplicitLod 3520 3521 Grad 3522 3523
+            3525:  7(f16vec4) CompositeExtract 3524 1
+                              Store 3512(texel) 3525
+            3526:     47(int) CompositeExtract 3524 0
+            3527:         163 Load 165(s3D)
+            3528:  167(fvec3) Load 169(c3)
+            3529:  167(fvec3) Load 1425(dPdxy3)
+            3530:  167(fvec3) Load 1425(dPdxy3)
+            3531:3146(ResType) ImageSparseSampleExplicitLod 3527 3528 Grad 3529 3530
+            3532:  7(f16vec4) CompositeExtract 3531 1
+                              Store 3512(texel) 3532
             3533:     47(int) CompositeExtract 3531 0
-            3534:         371 Load 373(s2DRectShadow)
-            3535:154(f16vec2) Load 156(f16c2)
-            3536:   52(float) Load 215(compare)
-            3537:154(f16vec2) Load 1417(f16dPdxy2)
-            3538:154(f16vec2) Load 1417(f16dPdxy2)
-            3539:    208(ptr) AccessChain 3468(texel) 207
-            3540:3138(ResType) ImageSparseSampleDrefExplicitLod 3534 3535 3536 Grad 3537 3538
-            3541:6(float16_t) CompositeExtract 3540 1
-                              Store 3539 3541
-            3542:     47(int) CompositeExtract 3540 0
-            3543:         224 Load 226(s2DShadow)
-            3544:  167(fvec3) Load 169(c3)
-            3545:   53(fvec2) Load 1409(dPdxy2)
-            3546:   53(fvec2) Load 1409(dPdxy2)
-            3547:    208(ptr) AccessChain 3468(texel) 207
-            3548:   52(float) CompositeExtract 3544 2
-            3549:3138(ResType) ImageSparseSampleDrefExplicitLod 3543 3544 3548 Grad 3545 3546
-            3550:6(float16_t) CompositeExtract 3549 1
-                              Store 3547 3550
-            3551:     47(int) CompositeExtract 3549 0
-            3552:         224 Load 226(s2DShadow)
-            3553:154(f16vec2) Load 156(f16c2)
-            3554:   52(float) Load 215(compare)
-            3555:154(f16vec2) Load 1417(f16dPdxy2)
-            3556:154(f16vec2) Load 1417(f16dPdxy2)
-            3557:    208(ptr) AccessChain 3468(texel) 207
-            3558:3138(ResType) ImageSparseSampleDrefExplicitLod 3552 3553 3554 Grad 3555 3556
-            3559:6(float16_t) CompositeExtract 3558 1
-                              Store 3557 3559
-            3560:     47(int) CompositeExtract 3558 0
-            3561:         245 Load 247(sCubeShadow)
-            3562:  249(fvec4) Load 251(c4)
-            3563:  167(fvec3) Load 1425(dPdxy3)
-            3564:  167(fvec3) Load 1425(dPdxy3)
-            3565:    208(ptr) AccessChain 3468(texel) 207
-            3566:   52(float) CompositeExtract 3562 3
-            3567:3138(ResType) ImageSparseSampleDrefExplicitLod 3561 3562 3566 Grad 3563 3564
-            3568:6(float16_t) CompositeExtract 3567 1
-                              Store 3565 3568
-            3569:     47(int) CompositeExtract 3567 0
-            3570:         245 Load 247(sCubeShadow)
-            3571:175(f16vec3) Load 177(f16c3)
-            3572:   52(float) Load 215(compare)
-            3573:175(f16vec3) Load 1433(f16dPdxy3)
-            3574:175(f16vec3) Load 1433(f16dPdxy3)
-            3575:    208(ptr) AccessChain 3468(texel) 207
-            3576:3138(ResType) ImageSparseSampleDrefExplicitLod 3570 3571 3572 Grad 3573 3574
-            3577:6(float16_t) CompositeExtract 3576 1
-                              Store 3575 3577
-            3578:     47(int) CompositeExtract 3576 0
-            3579:         284 Load 286(s2DArray)
-            3580:  167(fvec3) Load 169(c3)
-            3581:   53(fvec2) Load 1409(dPdxy2)
-            3582:   53(fvec2) Load 1409(dPdxy2)
-            3583:3102(ResType) ImageSparseSampleExplicitLod 3579 3580 Grad 3581 3582
-            3584:  7(f16vec4) CompositeExtract 3583 1
-                              Store 3468(texel) 3584
-            3585:     47(int) CompositeExtract 3583 0
-            3586:         284 Load 286(s2DArray)
-            3587:175(f16vec3) Load 177(f16c3)
-            3588:154(f16vec2) Load 1417(f16dPdxy2)
-            3589:154(f16vec2) Load 1417(f16dPdxy2)
-            3590:3102(ResType) ImageSparseSampleExplicitLod 3586 3587 Grad 3588 3589
-            3591:  7(f16vec4) CompositeExtract 3590 1
-                              Store 3468(texel) 3591
-            3592:     47(int) CompositeExtract 3590 0
-            3593:         337 Load 339(s2DArrayShadow)
-            3594:  249(fvec4) Load 251(c4)
-            3595:   53(fvec2) Load 1409(dPdxy2)
-            3596:   53(fvec2) Load 1409(dPdxy2)
-            3597:    208(ptr) AccessChain 3468(texel) 207
-            3598:   52(float) CompositeExtract 3594 3
-            3599:3138(ResType) ImageSparseSampleDrefExplicitLod 3593 3594 3598 Grad 3595 3596
-            3600:6(float16_t) CompositeExtract 3599 1
-                              Store 3597 3600
-            3601:     47(int) CompositeExtract 3599 0
-            3602:         337 Load 339(s2DArrayShadow)
-            3603:175(f16vec3) Load 177(f16c3)
-            3604:   52(float) Load 215(compare)
-            3605:154(f16vec2) Load 1417(f16dPdxy2)
-            3606:154(f16vec2) Load 1417(f16dPdxy2)
-            3607:    208(ptr) AccessChain 3468(texel) 207
-            3608:3138(ResType) ImageSparseSampleDrefExplicitLod 3602 3603 3604 Grad 3605 3606
-            3609:6(float16_t) CompositeExtract 3608 1
-                              Store 3607 3609
-            3610:     47(int) CompositeExtract 3608 0
-            3611:         299 Load 301(sCubeArray)
-            3612:  249(fvec4) Load 251(c4)
-            3613:  167(fvec3) Load 1425(dPdxy3)
-            3614:  167(fvec3) Load 1425(dPdxy3)
-            3615:3102(ResType) ImageSparseSampleExplicitLod 3611 3612 Grad 3613 3614
-            3616:  7(f16vec4) CompositeExtract 3615 1
-                              Store 3468(texel) 3616
-            3617:     47(int) CompositeExtract 3615 0
-            3618:         299 Load 301(sCubeArray)
-            3619:  7(f16vec4) Load 309(f16c4)
-            3620:175(f16vec3) Load 1433(f16dPdxy3)
-            3621:175(f16vec3) Load 1433(f16dPdxy3)
-            3622:3102(ResType) ImageSparseSampleExplicitLod 3618 3619 Grad 3620 3621
-            3623:  7(f16vec4) CompositeExtract 3622 1
-                              Store 3468(texel) 3623
-            3624:     47(int) CompositeExtract 3622 0
-            3625:  7(f16vec4) Load 3468(texel)
-                              ReturnValue 3625
+            3534:         163 Load 165(s3D)
+            3535:175(f16vec3) Load 177(f16c3)
+            3536:175(f16vec3) Load 1433(f16dPdxy3)
+            3537:175(f16vec3) Load 1433(f16dPdxy3)
+            3538:3146(ResType) ImageSparseSampleExplicitLod 3534 3535 Grad 3536 3537
+            3539:  7(f16vec4) CompositeExtract 3538 1
+                              Store 3512(texel) 3539
+            3540:     47(int) CompositeExtract 3538 0
+            3541:         184 Load 186(sCube)
+            3542:  167(fvec3) Load 169(c3)
+            3543:  167(fvec3) Load 1425(dPdxy3)
+            3544:  167(fvec3) Load 1425(dPdxy3)
+            3545:3146(ResType) ImageSparseSampleExplicitLod 3541 3542 Grad 3543 3544
+            3546:  7(f16vec4) CompositeExtract 3545 1
+                              Store 3512(texel) 3546
+            3547:     47(int) CompositeExtract 3545 0
+            3548:         184 Load 186(sCube)
+            3549:175(f16vec3) Load 177(f16c3)
+            3550:175(f16vec3) Load 1433(f16dPdxy3)
+            3551:175(f16vec3) Load 1433(f16dPdxy3)
+            3552:3146(ResType) ImageSparseSampleExplicitLod 3548 3549 Grad 3550 3551
+            3553:  7(f16vec4) CompositeExtract 3552 1
+                              Store 3512(texel) 3553
+            3554:     47(int) CompositeExtract 3552 0
+            3555:         357 Load 359(s2DRect)
+            3556:   53(fvec2) Load 148(c2)
+            3557:   53(fvec2) Load 1409(dPdxy2)
+            3558:   53(fvec2) Load 1409(dPdxy2)
+            3559:3146(ResType) ImageSparseSampleExplicitLod 3555 3556 Grad 3557 3558
+            3560:  7(f16vec4) CompositeExtract 3559 1
+                              Store 3512(texel) 3560
+            3561:     47(int) CompositeExtract 3559 0
+            3562:         357 Load 359(s2DRect)
+            3563:154(f16vec2) Load 156(f16c2)
+            3564:154(f16vec2) Load 1417(f16dPdxy2)
+            3565:154(f16vec2) Load 1417(f16dPdxy2)
+            3566:3146(ResType) ImageSparseSampleExplicitLod 3562 3563 Grad 3564 3565
+            3567:  7(f16vec4) CompositeExtract 3566 1
+                              Store 3512(texel) 3567
+            3568:     47(int) CompositeExtract 3566 0
+            3569:         371 Load 373(s2DRectShadow)
+            3570:  167(fvec3) Load 169(c3)
+            3571:   53(fvec2) Load 1409(dPdxy2)
+            3572:   53(fvec2) Load 1409(dPdxy2)
+            3573:    208(ptr) AccessChain 3512(texel) 207
+            3574:   52(float) CompositeExtract 3570 2
+            3575:3182(ResType) ImageSparseSampleDrefExplicitLod 3569 3570 3574 Grad 3571 3572
+            3576:6(float16_t) CompositeExtract 3575 1
+                              Store 3573 3576
+            3577:     47(int) CompositeExtract 3575 0
+            3578:         371 Load 373(s2DRectShadow)
+            3579:154(f16vec2) Load 156(f16c2)
+            3580:   52(float) Load 215(compare)
+            3581:154(f16vec2) Load 1417(f16dPdxy2)
+            3582:154(f16vec2) Load 1417(f16dPdxy2)
+            3583:    208(ptr) AccessChain 3512(texel) 207
+            3584:3182(ResType) ImageSparseSampleDrefExplicitLod 3578 3579 3580 Grad 3581 3582
+            3585:6(float16_t) CompositeExtract 3584 1
+                              Store 3583 3585
+            3586:     47(int) CompositeExtract 3584 0
+            3587:         224 Load 226(s2DShadow)
+            3588:  167(fvec3) Load 169(c3)
+            3589:   53(fvec2) Load 1409(dPdxy2)
+            3590:   53(fvec2) Load 1409(dPdxy2)
+            3591:    208(ptr) AccessChain 3512(texel) 207
+            3592:   52(float) CompositeExtract 3588 2
+            3593:3182(ResType) ImageSparseSampleDrefExplicitLod 3587 3588 3592 Grad 3589 3590
+            3594:6(float16_t) CompositeExtract 3593 1
+                              Store 3591 3594
+            3595:     47(int) CompositeExtract 3593 0
+            3596:         224 Load 226(s2DShadow)
+            3597:154(f16vec2) Load 156(f16c2)
+            3598:   52(float) Load 215(compare)
+            3599:154(f16vec2) Load 1417(f16dPdxy2)
+            3600:154(f16vec2) Load 1417(f16dPdxy2)
+            3601:    208(ptr) AccessChain 3512(texel) 207
+            3602:3182(ResType) ImageSparseSampleDrefExplicitLod 3596 3597 3598 Grad 3599 3600
+            3603:6(float16_t) CompositeExtract 3602 1
+                              Store 3601 3603
+            3604:     47(int) CompositeExtract 3602 0
+            3605:         245 Load 247(sCubeShadow)
+            3606:  249(fvec4) Load 251(c4)
+            3607:  167(fvec3) Load 1425(dPdxy3)
+            3608:  167(fvec3) Load 1425(dPdxy3)
+            3609:    208(ptr) AccessChain 3512(texel) 207
+            3610:   52(float) CompositeExtract 3606 3
+            3611:3182(ResType) ImageSparseSampleDrefExplicitLod 3605 3606 3610 Grad 3607 3608
+            3612:6(float16_t) CompositeExtract 3611 1
+                              Store 3609 3612
+            3613:     47(int) CompositeExtract 3611 0
+            3614:         245 Load 247(sCubeShadow)
+            3615:175(f16vec3) Load 177(f16c3)
+            3616:   52(float) Load 215(compare)
+            3617:175(f16vec3) Load 1433(f16dPdxy3)
+            3618:175(f16vec3) Load 1433(f16dPdxy3)
+            3619:    208(ptr) AccessChain 3512(texel) 207
+            3620:3182(ResType) ImageSparseSampleDrefExplicitLod 3614 3615 3616 Grad 3617 3618
+            3621:6(float16_t) CompositeExtract 3620 1
+                              Store 3619 3621
+            3622:     47(int) CompositeExtract 3620 0
+            3623:         284 Load 286(s2DArray)
+            3624:  167(fvec3) Load 169(c3)
+            3625:   53(fvec2) Load 1409(dPdxy2)
+            3626:   53(fvec2) Load 1409(dPdxy2)
+            3627:3146(ResType) ImageSparseSampleExplicitLod 3623 3624 Grad 3625 3626
+            3628:  7(f16vec4) CompositeExtract 3627 1
+                              Store 3512(texel) 3628
+            3629:     47(int) CompositeExtract 3627 0
+            3630:         284 Load 286(s2DArray)
+            3631:175(f16vec3) Load 177(f16c3)
+            3632:154(f16vec2) Load 1417(f16dPdxy2)
+            3633:154(f16vec2) Load 1417(f16dPdxy2)
+            3634:3146(ResType) ImageSparseSampleExplicitLod 3630 3631 Grad 3632 3633
+            3635:  7(f16vec4) CompositeExtract 3634 1
+                              Store 3512(texel) 3635
+            3636:     47(int) CompositeExtract 3634 0
+            3637:         337 Load 339(s2DArrayShadow)
+            3638:  249(fvec4) Load 251(c4)
+            3639:   53(fvec2) Load 1409(dPdxy2)
+            3640:   53(fvec2) Load 1409(dPdxy2)
+            3641:    208(ptr) AccessChain 3512(texel) 207
+            3642:   52(float) CompositeExtract 3638 3
+            3643:3182(ResType) ImageSparseSampleDrefExplicitLod 3637 3638 3642 Grad 3639 3640
+            3644:6(float16_t) CompositeExtract 3643 1
+                              Store 3641 3644
+            3645:     47(int) CompositeExtract 3643 0
+            3646:         337 Load 339(s2DArrayShadow)
+            3647:175(f16vec3) Load 177(f16c3)
+            3648:   52(float) Load 215(compare)
+            3649:154(f16vec2) Load 1417(f16dPdxy2)
+            3650:154(f16vec2) Load 1417(f16dPdxy2)
+            3651:    208(ptr) AccessChain 3512(texel) 207
+            3652:3182(ResType) ImageSparseSampleDrefExplicitLod 3646 3647 3648 Grad 3649 3650
+            3653:6(float16_t) CompositeExtract 3652 1
+                              Store 3651 3653
+            3654:     47(int) CompositeExtract 3652 0
+            3655:         299 Load 301(sCubeArray)
+            3656:  249(fvec4) Load 251(c4)
+            3657:  167(fvec3) Load 1425(dPdxy3)
+            3658:  167(fvec3) Load 1425(dPdxy3)
+            3659:3146(ResType) ImageSparseSampleExplicitLod 3655 3656 Grad 3657 3658
+            3660:  7(f16vec4) CompositeExtract 3659 1
+                              Store 3512(texel) 3660
+            3661:     47(int) CompositeExtract 3659 0
+            3662:         299 Load 301(sCubeArray)
+            3663:  7(f16vec4) Load 309(f16c4)
+            3664:175(f16vec3) Load 1433(f16dPdxy3)
+            3665:175(f16vec3) Load 1433(f16dPdxy3)
+            3666:3146(ResType) ImageSparseSampleExplicitLod 3662 3663 Grad 3664 3665
+            3667:  7(f16vec4) CompositeExtract 3666 1
+                              Store 3512(texel) 3667
+            3668:     47(int) CompositeExtract 3666 0
+            3669:  7(f16vec4) Load 3512(texel)
+                              ReturnValue 3669
                               FunctionEnd
 79(testSparseTextureGradOffset():  7(f16vec4) Function None 8
               80:             Label
-     3628(texel):     64(ptr) Variable Function
-                              Store 3628(texel) 121
-            3629:         143 Load 145(s2D)
-            3630:   53(fvec2) Load 148(c2)
-            3631:   53(fvec2) Load 1409(dPdxy2)
-            3632:   53(fvec2) Load 1409(dPdxy2)
-            3633:3102(ResType) ImageSparseSampleExplicitLod 3629 3630 Grad ConstOffset 3631 3632 722
-            3634:  7(f16vec4) CompositeExtract 3633 1
-                              Store 3628(texel) 3634
-            3635:     47(int) CompositeExtract 3633 0
-            3636:         143 Load 145(s2D)
-            3637:154(f16vec2) Load 156(f16c2)
-            3638:154(f16vec2) Load 1417(f16dPdxy2)
-            3639:154(f16vec2) Load 1417(f16dPdxy2)
-            3640:3102(ResType) ImageSparseSampleExplicitLod 3636 3637 Grad ConstOffset 3638 3639 722
-            3641:  7(f16vec4) CompositeExtract 3640 1
-                              Store 3628(texel) 3641
-            3642:     47(int) CompositeExtract 3640 0
-            3643:         163 Load 165(s3D)
-            3644:  167(fvec3) Load 169(c3)
-            3645:  167(fvec3) Load 1425(dPdxy3)
-            3646:  167(fvec3) Load 1425(dPdxy3)
-            3647:3102(ResType) ImageSparseSampleExplicitLod 3643 3644 Grad ConstOffset 3645 3646 735
-            3648:  7(f16vec4) CompositeExtract 3647 1
-                              Store 3628(texel) 3648
-            3649:     47(int) CompositeExtract 3647 0
-            3650:         163 Load 165(s3D)
-            3651:175(f16vec3) Load 177(f16c3)
-            3652:175(f16vec3) Load 1433(f16dPdxy3)
-            3653:175(f16vec3) Load 1433(f16dPdxy3)
-            3654:3102(ResType) ImageSparseSampleExplicitLod 3650 3651 Grad ConstOffset 3652 3653 735
-            3655:  7(f16vec4) CompositeExtract 3654 1
-                              Store 3628(texel) 3655
-            3656:     47(int) CompositeExtract 3654 0
-            3657:         357 Load 359(s2DRect)
-            3658:   53(fvec2) Load 148(c2)
-            3659:   53(fvec2) Load 1409(dPdxy2)
-            3660:   53(fvec2) Load 1409(dPdxy2)
-            3661:3102(ResType) ImageSparseSampleExplicitLod 3657 3658 Grad ConstOffset 3659 3660 722
-            3662:  7(f16vec4) CompositeExtract 3661 1
-                              Store 3628(texel) 3662
-            3663:     47(int) CompositeExtract 3661 0
-            3664:         357 Load 359(s2DRect)
-            3665:154(f16vec2) Load 156(f16c2)
-            3666:154(f16vec2) Load 1417(f16dPdxy2)
-            3667:154(f16vec2) Load 1417(f16dPdxy2)
-            3668:3102(ResType) ImageSparseSampleExplicitLod 3664 3665 Grad ConstOffset 3666 3667 722
-            3669:  7(f16vec4) CompositeExtract 3668 1
-                              Store 3628(texel) 3669
-            3670:     47(int) CompositeExtract 3668 0
-            3671:         371 Load 373(s2DRectShadow)
-            3672:  167(fvec3) Load 169(c3)
-            3673:   53(fvec2) Load 1409(dPdxy2)
-            3674:   53(fvec2) Load 1409(dPdxy2)
-            3675:    208(ptr) AccessChain 3628(texel) 207
-            3676:   52(float) CompositeExtract 3672 2
-            3677:3138(ResType) ImageSparseSampleDrefExplicitLod 3671 3672 3676 Grad ConstOffset 3673 3674 722
-            3678:6(float16_t) CompositeExtract 3677 1
-                              Store 3675 3678
+     3672(texel):     64(ptr) Variable Function
+                              Store 3672(texel) 121
+            3673:         143 Load 145(s2D)
+            3674:   53(fvec2) Load 148(c2)
+            3675:   53(fvec2) Load 1409(dPdxy2)
+            3676:   53(fvec2) Load 1409(dPdxy2)
+            3677:3146(ResType) ImageSparseSampleExplicitLod 3673 3674 Grad ConstOffset 3675 3676 722
+            3678:  7(f16vec4) CompositeExtract 3677 1
+                              Store 3672(texel) 3678
             3679:     47(int) CompositeExtract 3677 0
-            3680:         371 Load 373(s2DRectShadow)
+            3680:         143 Load 145(s2D)
             3681:154(f16vec2) Load 156(f16c2)
-            3682:   52(float) Load 215(compare)
+            3682:154(f16vec2) Load 1417(f16dPdxy2)
             3683:154(f16vec2) Load 1417(f16dPdxy2)
-            3684:154(f16vec2) Load 1417(f16dPdxy2)
-            3685:    208(ptr) AccessChain 3628(texel) 207
-            3686:3138(ResType) ImageSparseSampleDrefExplicitLod 3680 3681 3682 Grad ConstOffset 3683 3684 722
-            3687:6(float16_t) CompositeExtract 3686 1
-                              Store 3685 3687
-            3688:     47(int) CompositeExtract 3686 0
-            3689:         224 Load 226(s2DShadow)
-            3690:  167(fvec3) Load 169(c3)
-            3691:   53(fvec2) Load 1409(dPdxy2)
-            3692:   53(fvec2) Load 1409(dPdxy2)
-            3693:    208(ptr) AccessChain 3628(texel) 207
-            3694:   52(float) CompositeExtract 3690 2
-            3695:3138(ResType) ImageSparseSampleDrefExplicitLod 3689 3690 3694 Grad ConstOffset 3691 3692 722
-            3696:6(float16_t) CompositeExtract 3695 1
-                              Store 3693 3696
-            3697:     47(int) CompositeExtract 3695 0
-            3698:         224 Load 226(s2DShadow)
-            3699:154(f16vec2) Load 156(f16c2)
-            3700:   52(float) Load 215(compare)
-            3701:154(f16vec2) Load 1417(f16dPdxy2)
-            3702:154(f16vec2) Load 1417(f16dPdxy2)
-            3703:    208(ptr) AccessChain 3628(texel) 207
-            3704:3138(ResType) ImageSparseSampleDrefExplicitLod 3698 3699 3700 Grad ConstOffset 3701 3702 722
-            3705:6(float16_t) CompositeExtract 3704 1
-                              Store 3703 3705
-            3706:     47(int) CompositeExtract 3704 0
-            3707:         284 Load 286(s2DArray)
-            3708:  167(fvec3) Load 169(c3)
-            3709:   53(fvec2) Load 1409(dPdxy2)
-            3710:   53(fvec2) Load 1409(dPdxy2)
-            3711:3102(ResType) ImageSparseSampleExplicitLod 3707 3708 Grad ConstOffset 3709 3710 722
-            3712:  7(f16vec4) CompositeExtract 3711 1
-                              Store 3628(texel) 3712
-            3713:     47(int) CompositeExtract 3711 0
-            3714:         284 Load 286(s2DArray)
-            3715:175(f16vec3) Load 177(f16c3)
-            3716:154(f16vec2) Load 1417(f16dPdxy2)
-            3717:154(f16vec2) Load 1417(f16dPdxy2)
-            3718:3102(ResType) ImageSparseSampleExplicitLod 3714 3715 Grad ConstOffset 3716 3717 722
-            3719:  7(f16vec4) CompositeExtract 3718 1
-                              Store 3628(texel) 3719
-            3720:     47(int) CompositeExtract 3718 0
-            3721:         337 Load 339(s2DArrayShadow)
-            3722:  249(fvec4) Load 251(c4)
-            3723:   53(fvec2) Load 1409(dPdxy2)
-            3724:   53(fvec2) Load 1409(dPdxy2)
-            3725:    208(ptr) AccessChain 3628(texel) 207
-            3726:   52(float) CompositeExtract 3722 3
-            3727:3138(ResType) ImageSparseSampleDrefExplicitLod 3721 3722 3726 Grad ConstOffset 3723 3724 722
-            3728:6(float16_t) CompositeExtract 3727 1
-                              Store 3725 3728
-            3729:     47(int) CompositeExtract 3727 0
-            3730:         337 Load 339(s2DArrayShadow)
-            3731:175(f16vec3) Load 177(f16c3)
-            3732:   52(float) Load 215(compare)
-            3733:154(f16vec2) Load 1417(f16dPdxy2)
-            3734:154(f16vec2) Load 1417(f16dPdxy2)
-            3735:    208(ptr) AccessChain 3628(texel) 207
-            3736:3138(ResType) ImageSparseSampleDrefExplicitLod 3730 3731 3732 Grad ConstOffset 3733 3734 722
-            3737:6(float16_t) CompositeExtract 3736 1
-                              Store 3735 3737
-            3738:     47(int) CompositeExtract 3736 0
-            3739:  7(f16vec4) Load 3628(texel)
-                              ReturnValue 3739
+            3684:3146(ResType) ImageSparseSampleExplicitLod 3680 3681 Grad ConstOffset 3682 3683 722
+            3685:  7(f16vec4) CompositeExtract 3684 1
+                              Store 3672(texel) 3685
+            3686:     47(int) CompositeExtract 3684 0
+            3687:         163 Load 165(s3D)
+            3688:  167(fvec3) Load 169(c3)
+            3689:  167(fvec3) Load 1425(dPdxy3)
+            3690:  167(fvec3) Load 1425(dPdxy3)
+            3691:3146(ResType) ImageSparseSampleExplicitLod 3687 3688 Grad ConstOffset 3689 3690 735
+            3692:  7(f16vec4) CompositeExtract 3691 1
+                              Store 3672(texel) 3692
+            3693:     47(int) CompositeExtract 3691 0
+            3694:         163 Load 165(s3D)
+            3695:175(f16vec3) Load 177(f16c3)
+            3696:175(f16vec3) Load 1433(f16dPdxy3)
+            3697:175(f16vec3) Load 1433(f16dPdxy3)
+            3698:3146(ResType) ImageSparseSampleExplicitLod 3694 3695 Grad ConstOffset 3696 3697 735
+            3699:  7(f16vec4) CompositeExtract 3698 1
+                              Store 3672(texel) 3699
+            3700:     47(int) CompositeExtract 3698 0
+            3701:         357 Load 359(s2DRect)
+            3702:   53(fvec2) Load 148(c2)
+            3703:   53(fvec2) Load 1409(dPdxy2)
+            3704:   53(fvec2) Load 1409(dPdxy2)
+            3705:3146(ResType) ImageSparseSampleExplicitLod 3701 3702 Grad ConstOffset 3703 3704 722
+            3706:  7(f16vec4) CompositeExtract 3705 1
+                              Store 3672(texel) 3706
+            3707:     47(int) CompositeExtract 3705 0
+            3708:         357 Load 359(s2DRect)
+            3709:154(f16vec2) Load 156(f16c2)
+            3710:154(f16vec2) Load 1417(f16dPdxy2)
+            3711:154(f16vec2) Load 1417(f16dPdxy2)
+            3712:3146(ResType) ImageSparseSampleExplicitLod 3708 3709 Grad ConstOffset 3710 3711 722
+            3713:  7(f16vec4) CompositeExtract 3712 1
+                              Store 3672(texel) 3713
+            3714:     47(int) CompositeExtract 3712 0
+            3715:         371 Load 373(s2DRectShadow)
+            3716:  167(fvec3) Load 169(c3)
+            3717:   53(fvec2) Load 1409(dPdxy2)
+            3718:   53(fvec2) Load 1409(dPdxy2)
+            3719:    208(ptr) AccessChain 3672(texel) 207
+            3720:   52(float) CompositeExtract 3716 2
+            3721:3182(ResType) ImageSparseSampleDrefExplicitLod 3715 3716 3720 Grad ConstOffset 3717 3718 722
+            3722:6(float16_t) CompositeExtract 3721 1
+                              Store 3719 3722
+            3723:     47(int) CompositeExtract 3721 0
+            3724:         371 Load 373(s2DRectShadow)
+            3725:154(f16vec2) Load 156(f16c2)
+            3726:   52(float) Load 215(compare)
+            3727:154(f16vec2) Load 1417(f16dPdxy2)
+            3728:154(f16vec2) Load 1417(f16dPdxy2)
+            3729:    208(ptr) AccessChain 3672(texel) 207
+            3730:3182(ResType) ImageSparseSampleDrefExplicitLod 3724 3725 3726 Grad ConstOffset 3727 3728 722
+            3731:6(float16_t) CompositeExtract 3730 1
+                              Store 3729 3731
+            3732:     47(int) CompositeExtract 3730 0
+            3733:         224 Load 226(s2DShadow)
+            3734:  167(fvec3) Load 169(c3)
+            3735:   53(fvec2) Load 1409(dPdxy2)
+            3736:   53(fvec2) Load 1409(dPdxy2)
+            3737:    208(ptr) AccessChain 3672(texel) 207
+            3738:   52(float) CompositeExtract 3734 2
+            3739:3182(ResType) ImageSparseSampleDrefExplicitLod 3733 3734 3738 Grad ConstOffset 3735 3736 722
+            3740:6(float16_t) CompositeExtract 3739 1
+                              Store 3737 3740
+            3741:     47(int) CompositeExtract 3739 0
+            3742:         224 Load 226(s2DShadow)
+            3743:154(f16vec2) Load 156(f16c2)
+            3744:   52(float) Load 215(compare)
+            3745:154(f16vec2) Load 1417(f16dPdxy2)
+            3746:154(f16vec2) Load 1417(f16dPdxy2)
+            3747:    208(ptr) AccessChain 3672(texel) 207
+            3748:3182(ResType) ImageSparseSampleDrefExplicitLod 3742 3743 3744 Grad ConstOffset 3745 3746 722
+            3749:6(float16_t) CompositeExtract 3748 1
+                              Store 3747 3749
+            3750:     47(int) CompositeExtract 3748 0
+            3751:         284 Load 286(s2DArray)
+            3752:  167(fvec3) Load 169(c3)
+            3753:   53(fvec2) Load 1409(dPdxy2)
+            3754:   53(fvec2) Load 1409(dPdxy2)
+            3755:3146(ResType) ImageSparseSampleExplicitLod 3751 3752 Grad ConstOffset 3753 3754 722
+            3756:  7(f16vec4) CompositeExtract 3755 1
+                              Store 3672(texel) 3756
+            3757:     47(int) CompositeExtract 3755 0
+            3758:         284 Load 286(s2DArray)
+            3759:175(f16vec3) Load 177(f16c3)
+            3760:154(f16vec2) Load 1417(f16dPdxy2)
+            3761:154(f16vec2) Load 1417(f16dPdxy2)
+            3762:3146(ResType) ImageSparseSampleExplicitLod 3758 3759 Grad ConstOffset 3760 3761 722
+            3763:  7(f16vec4) CompositeExtract 3762 1
+                              Store 3672(texel) 3763
+            3764:     47(int) CompositeExtract 3762 0
+            3765:         337 Load 339(s2DArrayShadow)
+            3766:  249(fvec4) Load 251(c4)
+            3767:   53(fvec2) Load 1409(dPdxy2)
+            3768:   53(fvec2) Load 1409(dPdxy2)
+            3769:    208(ptr) AccessChain 3672(texel) 207
+            3770:   52(float) CompositeExtract 3766 3
+            3771:3182(ResType) ImageSparseSampleDrefExplicitLod 3765 3766 3770 Grad ConstOffset 3767 3768 722
+            3772:6(float16_t) CompositeExtract 3771 1
+                              Store 3769 3772
+            3773:     47(int) CompositeExtract 3771 0
+            3774:         337 Load 339(s2DArrayShadow)
+            3775:175(f16vec3) Load 177(f16c3)
+            3776:   52(float) Load 215(compare)
+            3777:154(f16vec2) Load 1417(f16dPdxy2)
+            3778:154(f16vec2) Load 1417(f16dPdxy2)
+            3779:    208(ptr) AccessChain 3672(texel) 207
+            3780:3182(ResType) ImageSparseSampleDrefExplicitLod 3774 3775 3776 Grad ConstOffset 3777 3778 722
+            3781:6(float16_t) CompositeExtract 3780 1
+                              Store 3779 3781
+            3782:     47(int) CompositeExtract 3780 0
+            3783:  7(f16vec4) Load 3672(texel)
+                              ReturnValue 3783
                               FunctionEnd
 81(testSparseTexelFetch():  7(f16vec4) Function None 8
               82:             Label
-     3742(texel):     64(ptr) Variable Function
-                              Store 3742(texel) 121
-            3743:         143 Load 145(s2D)
-            3744:   53(fvec2) Load 148(c2)
-            3745:  721(ivec2) ConvertFToS 3744
-            3746:   52(float) Load 565(lod)
-            3747:     47(int) ConvertFToS 3746
-            3748:         142 Image 3743
-            3749:3102(ResType) ImageSparseFetch 3748 3745 Lod 3747
-            3750:  7(f16vec4) CompositeExtract 3749 1
-                              Store 3742(texel) 3750
-            3751:     47(int) CompositeExtract 3749 0
-            3752:         163 Load 165(s3D)
-            3753:  167(fvec3) Load 169(c3)
-            3754:  734(ivec3) ConvertFToS 3753
-            3755:   52(float) Load 565(lod)
-            3756:     47(int) ConvertFToS 3755
-            3757:         162 Image 3752
-            3758:3102(ResType) ImageSparseFetch 3757 3754 Lod 3756
-            3759:  7(f16vec4) CompositeExtract 3758 1
-                              Store 3742(texel) 3759
-            3760:     47(int) CompositeExtract 3758 0
-            3761:         357 Load 359(s2DRect)
-            3762:   53(fvec2) Load 148(c2)
-            3763:  721(ivec2) ConvertFToS 3762
-            3764:         356 Image 3761
-            3765:3102(ResType) ImageSparseFetch 3764 3763
-            3766:  7(f16vec4) CompositeExtract 3765 1
-                              Store 3742(texel) 3766
-            3767:     47(int) CompositeExtract 3765 0
-            3768:         284 Load 286(s2DArray)
-            3769:  167(fvec3) Load 169(c3)
-            3770:  734(ivec3) ConvertFToS 3769
-            3771:   52(float) Load 565(lod)
-            3772:     47(int) ConvertFToS 3771
-            3773:         283 Image 3768
-            3774:3102(ResType) ImageSparseFetch 3773 3770 Lod 3772
-            3775:  7(f16vec4) CompositeExtract 3774 1
-                              Store 3742(texel) 3775
-            3776:     47(int) CompositeExtract 3774 0
-            3777:        1309 Load 1311(s2DMS)
-            3778:   53(fvec2) Load 148(c2)
-            3779:  721(ivec2) ConvertFToS 3778
-            3780:        1308 Image 3777
-            3781:3102(ResType) ImageSparseFetch 3780 3779 Sample 709
-            3782:  7(f16vec4) CompositeExtract 3781 1
-                              Store 3742(texel) 3782
-            3783:     47(int) CompositeExtract 3781 0
-            3784:        1320 Load 1322(s2DMSArray)
-            3785:  167(fvec3) Load 169(c3)
-            3786:  734(ivec3) ConvertFToS 3785
-            3787:        1319 Image 3784
-            3788:3102(ResType) ImageSparseFetch 3787 3786 Sample 1326
-            3789:  7(f16vec4) CompositeExtract 3788 1
-                              Store 3742(texel) 3789
-            3790:     47(int) CompositeExtract 3788 0
-            3791:  7(f16vec4) Load 3742(texel)
-                              ReturnValue 3791
+     3786(texel):     64(ptr) Variable Function
+                              Store 3786(texel) 121
+            3787:         143 Load 145(s2D)
+            3788:   53(fvec2) Load 148(c2)
+            3789:  721(ivec2) ConvertFToS 3788
+            3790:   52(float) Load 565(lod)
+            3791:     47(int) ConvertFToS 3790
+            3792:         142 Image 3787
+            3793:3146(ResType) ImageSparseFetch 3792 3789 Lod 3791
+            3794:  7(f16vec4) CompositeExtract 3793 1
+                              Store 3786(texel) 3794
+            3795:     47(int) CompositeExtract 3793 0
+            3796:         163 Load 165(s3D)
+            3797:  167(fvec3) Load 169(c3)
+            3798:  734(ivec3) ConvertFToS 3797
+            3799:   52(float) Load 565(lod)
+            3800:     47(int) ConvertFToS 3799
+            3801:         162 Image 3796
+            3802:3146(ResType) ImageSparseFetch 3801 3798 Lod 3800
+            3803:  7(f16vec4) CompositeExtract 3802 1
+                              Store 3786(texel) 3803
+            3804:     47(int) CompositeExtract 3802 0
+            3805:         357 Load 359(s2DRect)
+            3806:   53(fvec2) Load 148(c2)
+            3807:  721(ivec2) ConvertFToS 3806
+            3808:         356 Image 3805
+            3809:3146(ResType) ImageSparseFetch 3808 3807
+            3810:  7(f16vec4) CompositeExtract 3809 1
+                              Store 3786(texel) 3810
+            3811:     47(int) CompositeExtract 3809 0
+            3812:         284 Load 286(s2DArray)
+            3813:  167(fvec3) Load 169(c3)
+            3814:  734(ivec3) ConvertFToS 3813
+            3815:   52(float) Load 565(lod)
+            3816:     47(int) ConvertFToS 3815
+            3817:         283 Image 3812
+            3818:3146(ResType) ImageSparseFetch 3817 3814 Lod 3816
+            3819:  7(f16vec4) CompositeExtract 3818 1
+                              Store 3786(texel) 3819
+            3820:     47(int) CompositeExtract 3818 0
+            3821:        1309 Load 1311(s2DMS)
+            3822:   53(fvec2) Load 148(c2)
+            3823:  721(ivec2) ConvertFToS 3822
+            3824:        1308 Image 3821
+            3825:3146(ResType) ImageSparseFetch 3824 3823 Sample 709
+            3826:  7(f16vec4) CompositeExtract 3825 1
+                              Store 3786(texel) 3826
+            3827:     47(int) CompositeExtract 3825 0
+            3828:        1320 Load 1322(s2DMSArray)
+            3829:  167(fvec3) Load 169(c3)
+            3830:  734(ivec3) ConvertFToS 3829
+            3831:        1319 Image 3828
+            3832:3146(ResType) ImageSparseFetch 3831 3830 Sample 1326
+            3833:  7(f16vec4) CompositeExtract 3832 1
+                              Store 3786(texel) 3833
+            3834:     47(int) CompositeExtract 3832 0
+            3835:  7(f16vec4) Load 3786(texel)
+                              ReturnValue 3835
                               FunctionEnd
 83(testSparseTexelFetchOffset():  7(f16vec4) Function None 8
               84:             Label
-     3794(texel):     64(ptr) Variable Function
-                              Store 3794(texel) 121
-            3795:         143 Load 145(s2D)
-            3796:   53(fvec2) Load 148(c2)
-            3797:  721(ivec2) ConvertFToS 3796
-            3798:   52(float) Load 565(lod)
-            3799:     47(int) ConvertFToS 3798
-            3800:         142 Image 3795
-            3801:3102(ResType) ImageSparseFetch 3800 3797 Lod ConstOffset 3799 722
-            3802:  7(f16vec4) CompositeExtract 3801 1
-                              Store 3794(texel) 3802
-            3803:     47(int) CompositeExtract 3801 0
-            3804:         163 Load 165(s3D)
-            3805:  167(fvec3) Load 169(c3)
-            3806:  734(ivec3) ConvertFToS 3805
-            3807:   52(float) Load 565(lod)
-            3808:     47(int) ConvertFToS 3807
-            3809:         162 Image 3804
-            3810:3102(ResType) ImageSparseFetch 3809 3806 Lod ConstOffset 3808 735
-            3811:  7(f16vec4) CompositeExtract 3810 1
-                              Store 3794(texel) 3811
-            3812:     47(int) CompositeExtract 3810 0
-            3813:         357 Load 359(s2DRect)
-            3814:   53(fvec2) Load 148(c2)
-            3815:  721(ivec2) ConvertFToS 3814
-            3816:         356 Image 3813
-            3817:3102(ResType) ImageSparseFetch 3816 3815 ConstOffset 722
-            3818:  7(f16vec4) CompositeExtract 3817 1
-                              Store 3794(texel) 3818
-            3819:     47(int) CompositeExtract 3817 0
-            3820:         284 Load 286(s2DArray)
-            3821:  167(fvec3) Load 169(c3)
-            3822:  734(ivec3) ConvertFToS 3821
-            3823:   52(float) Load 565(lod)
-            3824:     47(int) ConvertFToS 3823
-            3825:         283 Image 3820
-            3826:3102(ResType) ImageSparseFetch 3825 3822 Lod ConstOffset 3824 722
-            3827:  7(f16vec4) CompositeExtract 3826 1
-                              Store 3794(texel) 3827
-            3828:     47(int) CompositeExtract 3826 0
-            3829:  7(f16vec4) Load 3794(texel)
-                              ReturnValue 3829
+     3838(texel):     64(ptr) Variable Function
+                              Store 3838(texel) 121
+            3839:         143 Load 145(s2D)
+            3840:   53(fvec2) Load 148(c2)
+            3841:  721(ivec2) ConvertFToS 3840
+            3842:   52(float) Load 565(lod)
+            3843:     47(int) ConvertFToS 3842
+            3844:         142 Image 3839
+            3845:3146(ResType) ImageSparseFetch 3844 3841 Lod ConstOffset 3843 722
+            3846:  7(f16vec4) CompositeExtract 3845 1
+                              Store 3838(texel) 3846
+            3847:     47(int) CompositeExtract 3845 0
+            3848:         163 Load 165(s3D)
+            3849:  167(fvec3) Load 169(c3)
+            3850:  734(ivec3) ConvertFToS 3849
+            3851:   52(float) Load 565(lod)
+            3852:     47(int) ConvertFToS 3851
+            3853:         162 Image 3848
+            3854:3146(ResType) ImageSparseFetch 3853 3850 Lod ConstOffset 3852 735
+            3855:  7(f16vec4) CompositeExtract 3854 1
+                              Store 3838(texel) 3855
+            3856:     47(int) CompositeExtract 3854 0
+            3857:         357 Load 359(s2DRect)
+            3858:   53(fvec2) Load 148(c2)
+            3859:  721(ivec2) ConvertFToS 3858
+            3860:         356 Image 3857
+            3861:3146(ResType) ImageSparseFetch 3860 3859 ConstOffset 722
+            3862:  7(f16vec4) CompositeExtract 3861 1
+                              Store 3838(texel) 3862
+            3863:     47(int) CompositeExtract 3861 0
+            3864:         284 Load 286(s2DArray)
+            3865:  167(fvec3) Load 169(c3)
+            3866:  734(ivec3) ConvertFToS 3865
+            3867:   52(float) Load 565(lod)
+            3868:     47(int) ConvertFToS 3867
+            3869:         283 Image 3864
+            3870:3146(ResType) ImageSparseFetch 3869 3866 Lod ConstOffset 3868 722
+            3871:  7(f16vec4) CompositeExtract 3870 1
+                              Store 3838(texel) 3871
+            3872:     47(int) CompositeExtract 3870 0
+            3873:  7(f16vec4) Load 3838(texel)
+                              ReturnValue 3873
                               FunctionEnd
 85(testSparseTextureGather():  7(f16vec4) Function None 8
               86:             Label
-     3832(texel):     64(ptr) Variable Function
-                              Store 3832(texel) 121
-            3833:         143 Load 145(s2D)
-            3834:   53(fvec2) Load 148(c2)
-            3835:3102(ResType) ImageSparseGather 3833 3834 2187
-            3836:  7(f16vec4) CompositeExtract 3835 1
-                              Store 3832(texel) 3836
-            3837:     47(int) CompositeExtract 3835 0
-            3838:         143 Load 145(s2D)
-            3839:154(f16vec2) Load 156(f16c2)
-            3840:6(float16_t) Load 137(f16bias)
-            3841:3102(ResType) ImageSparseGather 3838 3839 2187 Bias 3840
-            3842:  7(f16vec4) CompositeExtract 3841 1
-                              Store 3832(texel) 3842
-            3843:     47(int) CompositeExtract 3841 0
-            3844:         284 Load 286(s2DArray)
-            3845:  167(fvec3) Load 169(c3)
-            3846:3102(ResType) ImageSparseGather 3844 3845 2187
-            3847:  7(f16vec4) CompositeExtract 3846 1
-                              Store 3832(texel) 3847
-            3848:     47(int) CompositeExtract 3846 0
-            3849:         284 Load 286(s2DArray)
-            3850:175(f16vec3) Load 177(f16c3)
-            3851:6(float16_t) Load 137(f16bias)
-            3852:3102(ResType) ImageSparseGather 3849 3850 2187 Bias 3851
-            3853:  7(f16vec4) CompositeExtract 3852 1
-                              Store 3832(texel) 3853
-            3854:     47(int) CompositeExtract 3852 0
-            3855:         184 Load 186(sCube)
-            3856:  167(fvec3) Load 169(c3)
-            3857:3102(ResType) ImageSparseGather 3855 3856 2187
-            3858:  7(f16vec4) CompositeExtract 3857 1
-                              Store 3832(texel) 3858
-            3859:     47(int) CompositeExtract 3857 0
-            3860:         184 Load 186(sCube)
-            3861:175(f16vec3) Load 177(f16c3)
-            3862:6(float16_t) Load 137(f16bias)
-            3863:3102(ResType) ImageSparseGather 3860 3861 2187 Bias 3862
-            3864:  7(f16vec4) CompositeExtract 3863 1
-                              Store 3832(texel) 3864
-            3865:     47(int) CompositeExtract 3863 0
-            3866:         299 Load 301(sCubeArray)
-            3867:  249(fvec4) Load 251(c4)
-            3868:3102(ResType) ImageSparseGather 3866 3867 2187
-            3869:  7(f16vec4) CompositeExtract 3868 1
-                              Store 3832(texel) 3869
-            3870:     47(int) CompositeExtract 3868 0
-            3871:         299 Load 301(sCubeArray)
-            3872:  7(f16vec4) Load 309(f16c4)
-            3873:6(float16_t) Load 137(f16bias)
-            3874:3102(ResType) ImageSparseGather 3871 3872 2187 Bias 3873
-            3875:  7(f16vec4) CompositeExtract 3874 1
-                              Store 3832(texel) 3875
-            3876:     47(int) CompositeExtract 3874 0
-            3877:         357 Load 359(s2DRect)
+     3876(texel):     64(ptr) Variable Function
+                              Store 3876(texel) 121
+            3877:         143 Load 145(s2D)
             3878:   53(fvec2) Load 148(c2)
-            3879:3102(ResType) ImageSparseGather 3877 3878 2187
+            3879:3146(ResType) ImageSparseGather 3877 3878 2187
             3880:  7(f16vec4) CompositeExtract 3879 1
-                              Store 3832(texel) 3880
+                              Store 3876(texel) 3880
             3881:     47(int) CompositeExtract 3879 0
-            3882:         357 Load 359(s2DRect)
+            3882:         143 Load 145(s2D)
             3883:154(f16vec2) Load 156(f16c2)
-            3884:3102(ResType) ImageSparseGather 3882 3883 2187
-            3885:  7(f16vec4) CompositeExtract 3884 1
-                              Store 3832(texel) 3885
-            3886:     47(int) CompositeExtract 3884 0
-            3887:         224 Load 226(s2DShadow)
-            3888:   53(fvec2) Load 148(c2)
-            3889:   52(float) Load 215(compare)
-            3890:3102(ResType) ImageSparseDrefGather 3887 3888 3889
+            3884:6(float16_t) Load 137(f16bias)
+            3885:3146(ResType) ImageSparseGather 3882 3883 2187 Bias 3884
+            3886:  7(f16vec4) CompositeExtract 3885 1
+                              Store 3876(texel) 3886
+            3887:     47(int) CompositeExtract 3885 0
+            3888:         284 Load 286(s2DArray)
+            3889:  167(fvec3) Load 169(c3)
+            3890:3146(ResType) ImageSparseGather 3888 3889 2187
             3891:  7(f16vec4) CompositeExtract 3890 1
-                              Store 3832(texel) 3891
+                              Store 3876(texel) 3891
             3892:     47(int) CompositeExtract 3890 0
-            3893:         224 Load 226(s2DShadow)
-            3894:154(f16vec2) Load 156(f16c2)
-            3895:   52(float) Load 215(compare)
-            3896:3102(ResType) ImageSparseDrefGather 3893 3894 3895
+            3893:         284 Load 286(s2DArray)
+            3894:175(f16vec3) Load 177(f16c3)
+            3895:6(float16_t) Load 137(f16bias)
+            3896:3146(ResType) ImageSparseGather 3893 3894 2187 Bias 3895
             3897:  7(f16vec4) CompositeExtract 3896 1
-                              Store 3832(texel) 3897
+                              Store 3876(texel) 3897
             3898:     47(int) CompositeExtract 3896 0
-            3899:         337 Load 339(s2DArrayShadow)
+            3899:         184 Load 186(sCube)
             3900:  167(fvec3) Load 169(c3)
-            3901:   52(float) Load 215(compare)
-            3902:3102(ResType) ImageSparseDrefGather 3899 3900 3901
-            3903:  7(f16vec4) CompositeExtract 3902 1
-                              Store 3832(texel) 3903
-            3904:     47(int) CompositeExtract 3902 0
-            3905:         337 Load 339(s2DArrayShadow)
-            3906:175(f16vec3) Load 177(f16c3)
-            3907:   52(float) Load 215(compare)
-            3908:3102(ResType) ImageSparseDrefGather 3905 3906 3907
-            3909:  7(f16vec4) CompositeExtract 3908 1
-                              Store 3832(texel) 3909
-            3910:     47(int) CompositeExtract 3908 0
-            3911:         245 Load 247(sCubeShadow)
-            3912:  167(fvec3) Load 169(c3)
-            3913:   52(float) Load 215(compare)
-            3914:3102(ResType) ImageSparseDrefGather 3911 3912 3913
-            3915:  7(f16vec4) CompositeExtract 3914 1
-                              Store 3832(texel) 3915
-            3916:     47(int) CompositeExtract 3914 0
-            3917:         245 Load 247(sCubeShadow)
-            3918:175(f16vec3) Load 177(f16c3)
-            3919:   52(float) Load 215(compare)
-            3920:3102(ResType) ImageSparseDrefGather 3917 3918 3919
-            3921:  7(f16vec4) CompositeExtract 3920 1
-                              Store 3832(texel) 3921
-            3922:     47(int) CompositeExtract 3920 0
-            3923:         391 Load 393(sCubeArrayShadow)
-            3924:  249(fvec4) Load 251(c4)
-            3925:   52(float) Load 215(compare)
-            3926:3102(ResType) ImageSparseDrefGather 3923 3924 3925
-            3927:  7(f16vec4) CompositeExtract 3926 1
-                              Store 3832(texel) 3927
-            3928:     47(int) CompositeExtract 3926 0
-            3929:         391 Load 393(sCubeArrayShadow)
-            3930:  7(f16vec4) Load 309(f16c4)
-            3931:   52(float) Load 215(compare)
-            3932:3102(ResType) ImageSparseDrefGather 3929 3930 3931
-            3933:  7(f16vec4) CompositeExtract 3932 1
-                              Store 3832(texel) 3933
-            3934:     47(int) CompositeExtract 3932 0
-            3935:         371 Load 373(s2DRectShadow)
-            3936:   53(fvec2) Load 148(c2)
-            3937:   52(float) Load 215(compare)
-            3938:3102(ResType) ImageSparseDrefGather 3935 3936 3937
-            3939:  7(f16vec4) CompositeExtract 3938 1
-                              Store 3832(texel) 3939
-            3940:     47(int) CompositeExtract 3938 0
-            3941:         371 Load 373(s2DRectShadow)
-            3942:154(f16vec2) Load 156(f16c2)
-            3943:   52(float) Load 215(compare)
-            3944:3102(ResType) ImageSparseDrefGather 3941 3942 3943
-            3945:  7(f16vec4) CompositeExtract 3944 1
-                              Store 3832(texel) 3945
-            3946:     47(int) CompositeExtract 3944 0
-            3947:  7(f16vec4) Load 3832(texel)
-                              ReturnValue 3947
+            3901:3146(ResType) ImageSparseGather 3899 3900 2187
+            3902:  7(f16vec4) CompositeExtract 3901 1
+                              Store 3876(texel) 3902
+            3903:     47(int) CompositeExtract 3901 0
+            3904:         184 Load 186(sCube)
+            3905:175(f16vec3) Load 177(f16c3)
+            3906:6(float16_t) Load 137(f16bias)
+            3907:3146(ResType) ImageSparseGather 3904 3905 2187 Bias 3906
+            3908:  7(f16vec4) CompositeExtract 3907 1
+                              Store 3876(texel) 3908
+            3909:     47(int) CompositeExtract 3907 0
+            3910:         299 Load 301(sCubeArray)
+            3911:  249(fvec4) Load 251(c4)
+            3912:3146(ResType) ImageSparseGather 3910 3911 2187
+            3913:  7(f16vec4) CompositeExtract 3912 1
+                              Store 3876(texel) 3913
+            3914:     47(int) CompositeExtract 3912 0
+            3915:         299 Load 301(sCubeArray)
+            3916:  7(f16vec4) Load 309(f16c4)
+            3917:6(float16_t) Load 137(f16bias)
+            3918:3146(ResType) ImageSparseGather 3915 3916 2187 Bias 3917
+            3919:  7(f16vec4) CompositeExtract 3918 1
+                              Store 3876(texel) 3919
+            3920:     47(int) CompositeExtract 3918 0
+            3921:         357 Load 359(s2DRect)
+            3922:   53(fvec2) Load 148(c2)
+            3923:3146(ResType) ImageSparseGather 3921 3922 2187
+            3924:  7(f16vec4) CompositeExtract 3923 1
+                              Store 3876(texel) 3924
+            3925:     47(int) CompositeExtract 3923 0
+            3926:         357 Load 359(s2DRect)
+            3927:154(f16vec2) Load 156(f16c2)
+            3928:3146(ResType) ImageSparseGather 3926 3927 2187
+            3929:  7(f16vec4) CompositeExtract 3928 1
+                              Store 3876(texel) 3929
+            3930:     47(int) CompositeExtract 3928 0
+            3931:         224 Load 226(s2DShadow)
+            3932:   53(fvec2) Load 148(c2)
+            3933:   52(float) Load 215(compare)
+            3934:3146(ResType) ImageSparseDrefGather 3931 3932 3933
+            3935:  7(f16vec4) CompositeExtract 3934 1
+                              Store 3876(texel) 3935
+            3936:     47(int) CompositeExtract 3934 0
+            3937:         224 Load 226(s2DShadow)
+            3938:154(f16vec2) Load 156(f16c2)
+            3939:   52(float) Load 215(compare)
+            3940:3146(ResType) ImageSparseDrefGather 3937 3938 3939
+            3941:  7(f16vec4) CompositeExtract 3940 1
+                              Store 3876(texel) 3941
+            3942:     47(int) CompositeExtract 3940 0
+            3943:         337 Load 339(s2DArrayShadow)
+            3944:  167(fvec3) Load 169(c3)
+            3945:   52(float) Load 215(compare)
+            3946:3146(ResType) ImageSparseDrefGather 3943 3944 3945
+            3947:  7(f16vec4) CompositeExtract 3946 1
+                              Store 3876(texel) 3947
+            3948:     47(int) CompositeExtract 3946 0
+            3949:         337 Load 339(s2DArrayShadow)
+            3950:175(f16vec3) Load 177(f16c3)
+            3951:   52(float) Load 215(compare)
+            3952:3146(ResType) ImageSparseDrefGather 3949 3950 3951
+            3953:  7(f16vec4) CompositeExtract 3952 1
+                              Store 3876(texel) 3953
+            3954:     47(int) CompositeExtract 3952 0
+            3955:         245 Load 247(sCubeShadow)
+            3956:  167(fvec3) Load 169(c3)
+            3957:   52(float) Load 215(compare)
+            3958:3146(ResType) ImageSparseDrefGather 3955 3956 3957
+            3959:  7(f16vec4) CompositeExtract 3958 1
+                              Store 3876(texel) 3959
+            3960:     47(int) CompositeExtract 3958 0
+            3961:         245 Load 247(sCubeShadow)
+            3962:175(f16vec3) Load 177(f16c3)
+            3963:   52(float) Load 215(compare)
+            3964:3146(ResType) ImageSparseDrefGather 3961 3962 3963
+            3965:  7(f16vec4) CompositeExtract 3964 1
+                              Store 3876(texel) 3965
+            3966:     47(int) CompositeExtract 3964 0
+            3967:         391 Load 393(sCubeArrayShadow)
+            3968:  249(fvec4) Load 251(c4)
+            3969:   52(float) Load 215(compare)
+            3970:3146(ResType) ImageSparseDrefGather 3967 3968 3969
+            3971:  7(f16vec4) CompositeExtract 3970 1
+                              Store 3876(texel) 3971
+            3972:     47(int) CompositeExtract 3970 0
+            3973:         391 Load 393(sCubeArrayShadow)
+            3974:  7(f16vec4) Load 309(f16c4)
+            3975:   52(float) Load 215(compare)
+            3976:3146(ResType) ImageSparseDrefGather 3973 3974 3975
+            3977:  7(f16vec4) CompositeExtract 3976 1
+                              Store 3876(texel) 3977
+            3978:     47(int) CompositeExtract 3976 0
+            3979:         371 Load 373(s2DRectShadow)
+            3980:   53(fvec2) Load 148(c2)
+            3981:   52(float) Load 215(compare)
+            3982:3146(ResType) ImageSparseDrefGather 3979 3980 3981
+            3983:  7(f16vec4) CompositeExtract 3982 1
+                              Store 3876(texel) 3983
+            3984:     47(int) CompositeExtract 3982 0
+            3985:         371 Load 373(s2DRectShadow)
+            3986:154(f16vec2) Load 156(f16c2)
+            3987:   52(float) Load 215(compare)
+            3988:3146(ResType) ImageSparseDrefGather 3985 3986 3987
+            3989:  7(f16vec4) CompositeExtract 3988 1
+                              Store 3876(texel) 3989
+            3990:     47(int) CompositeExtract 3988 0
+            3991:  7(f16vec4) Load 3876(texel)
+                              ReturnValue 3991
                               FunctionEnd
 87(testSparseTextureGatherOffset():  7(f16vec4) Function None 8
               88:             Label
-     3950(texel):     64(ptr) Variable Function
-                              Store 3950(texel) 121
-            3951:         143 Load 145(s2D)
-            3952:   53(fvec2) Load 148(c2)
-            3953:3102(ResType) ImageSparseGather 3951 3952 2187 ConstOffset 722
-            3954:  7(f16vec4) CompositeExtract 3953 1
-                              Store 3950(texel) 3954
-            3955:     47(int) CompositeExtract 3953 0
-            3956:         143 Load 145(s2D)
-            3957:154(f16vec2) Load 156(f16c2)
-            3958:6(float16_t) Load 137(f16bias)
-            3959:3102(ResType) ImageSparseGather 3956 3957 2187 Bias ConstOffset 3958 722
-            3960:  7(f16vec4) CompositeExtract 3959 1
-                              Store 3950(texel) 3960
-            3961:     47(int) CompositeExtract 3959 0
-            3962:         284 Load 286(s2DArray)
-            3963:  167(fvec3) Load 169(c3)
-            3964:3102(ResType) ImageSparseGather 3962 3963 2187 ConstOffset 722
-            3965:  7(f16vec4) CompositeExtract 3964 1
-                              Store 3950(texel) 3965
-            3966:     47(int) CompositeExtract 3964 0
-            3967:         284 Load 286(s2DArray)
-            3968:175(f16vec3) Load 177(f16c3)
-            3969:6(float16_t) Load 137(f16bias)
-            3970:3102(ResType) ImageSparseGather 3967 3968 2187 Bias ConstOffset 3969 722
-            3971:  7(f16vec4) CompositeExtract 3970 1
-                              Store 3950(texel) 3971
-            3972:     47(int) CompositeExtract 3970 0
-            3973:         357 Load 359(s2DRect)
-            3974:   53(fvec2) Load 148(c2)
-            3975:3102(ResType) ImageSparseGather 3973 3974 2187 ConstOffset 722
-            3976:  7(f16vec4) CompositeExtract 3975 1
-                              Store 3950(texel) 3976
-            3977:     47(int) CompositeExtract 3975 0
-            3978:         357 Load 359(s2DRect)
-            3979:154(f16vec2) Load 156(f16c2)
-            3980:3102(ResType) ImageSparseGather 3978 3979 2187 ConstOffset 722
-            3981:  7(f16vec4) CompositeExtract 3980 1
-                              Store 3950(texel) 3981
-            3982:     47(int) CompositeExtract 3980 0
-            3983:         224 Load 226(s2DShadow)
-            3984:   53(fvec2) Load 148(c2)
-            3985:   52(float) Load 215(compare)
-            3986:3102(ResType) ImageSparseDrefGather 3983 3984 3985 ConstOffset 722
-            3987:  7(f16vec4) CompositeExtract 3986 1
-                              Store 3950(texel) 3987
-            3988:     47(int) CompositeExtract 3986 0
-            3989:         224 Load 226(s2DShadow)
-            3990:154(f16vec2) Load 156(f16c2)
-            3991:   52(float) Load 215(compare)
-            3992:3102(ResType) ImageSparseDrefGather 3989 3990 3991 ConstOffset 722
-            3993:  7(f16vec4) CompositeExtract 3992 1
-                              Store 3950(texel) 3993
-            3994:     47(int) CompositeExtract 3992 0
-            3995:         337 Load 339(s2DArrayShadow)
-            3996:  167(fvec3) Load 169(c3)
-            3997:   52(float) Load 215(compare)
-            3998:3102(ResType) ImageSparseDrefGather 3995 3996 3997 ConstOffset 722
-            3999:  7(f16vec4) CompositeExtract 3998 1
-                              Store 3950(texel) 3999
-            4000:     47(int) CompositeExtract 3998 0
-            4001:         337 Load 339(s2DArrayShadow)
-            4002:175(f16vec3) Load 177(f16c3)
-            4003:   52(float) Load 215(compare)
-            4004:3102(ResType) ImageSparseDrefGather 4001 4002 4003 ConstOffset 722
-            4005:  7(f16vec4) CompositeExtract 4004 1
-                              Store 3950(texel) 4005
-            4006:     47(int) CompositeExtract 4004 0
-            4007:         371 Load 373(s2DRectShadow)
-            4008:   53(fvec2) Load 148(c2)
-            4009:   52(float) Load 215(compare)
-            4010:3102(ResType) ImageSparseDrefGather 4007 4008 4009 ConstOffset 722
-            4011:  7(f16vec4) CompositeExtract 4010 1
-                              Store 3950(texel) 4011
-            4012:     47(int) CompositeExtract 4010 0
-            4013:         371 Load 373(s2DRectShadow)
-            4014:154(f16vec2) Load 156(f16c2)
-            4015:   52(float) Load 215(compare)
-            4016:3102(ResType) ImageSparseDrefGather 4013 4014 4015 ConstOffset 722
-            4017:  7(f16vec4) CompositeExtract 4016 1
-                              Store 3950(texel) 4017
-            4018:     47(int) CompositeExtract 4016 0
-            4019:  7(f16vec4) Load 3950(texel)
-                              ReturnValue 4019
+     3994(texel):     64(ptr) Variable Function
+                              Store 3994(texel) 121
+            3995:         143 Load 145(s2D)
+            3996:   53(fvec2) Load 148(c2)
+            3997:3146(ResType) ImageSparseGather 3995 3996 2187 ConstOffset 722
+            3998:  7(f16vec4) CompositeExtract 3997 1
+                              Store 3994(texel) 3998
+            3999:     47(int) CompositeExtract 3997 0
+            4000:         143 Load 145(s2D)
+            4001:154(f16vec2) Load 156(f16c2)
+            4002:6(float16_t) Load 137(f16bias)
+            4003:3146(ResType) ImageSparseGather 4000 4001 2187 Bias ConstOffset 4002 722
+            4004:  7(f16vec4) CompositeExtract 4003 1
+                              Store 3994(texel) 4004
+            4005:     47(int) CompositeExtract 4003 0
+            4006:         284 Load 286(s2DArray)
+            4007:  167(fvec3) Load 169(c3)
+            4008:3146(ResType) ImageSparseGather 4006 4007 2187 ConstOffset 722
+            4009:  7(f16vec4) CompositeExtract 4008 1
+                              Store 3994(texel) 4009
+            4010:     47(int) CompositeExtract 4008 0
+            4011:         284 Load 286(s2DArray)
+            4012:175(f16vec3) Load 177(f16c3)
+            4013:6(float16_t) Load 137(f16bias)
+            4014:3146(ResType) ImageSparseGather 4011 4012 2187 Bias ConstOffset 4013 722
+            4015:  7(f16vec4) CompositeExtract 4014 1
+                              Store 3994(texel) 4015
+            4016:     47(int) CompositeExtract 4014 0
+            4017:         357 Load 359(s2DRect)
+            4018:   53(fvec2) Load 148(c2)
+            4019:3146(ResType) ImageSparseGather 4017 4018 2187 ConstOffset 722
+            4020:  7(f16vec4) CompositeExtract 4019 1
+                              Store 3994(texel) 4020
+            4021:     47(int) CompositeExtract 4019 0
+            4022:         357 Load 359(s2DRect)
+            4023:154(f16vec2) Load 156(f16c2)
+            4024:3146(ResType) ImageSparseGather 4022 4023 2187 ConstOffset 722
+            4025:  7(f16vec4) CompositeExtract 4024 1
+                              Store 3994(texel) 4025
+            4026:     47(int) CompositeExtract 4024 0
+            4027:         224 Load 226(s2DShadow)
+            4028:   53(fvec2) Load 148(c2)
+            4029:   52(float) Load 215(compare)
+            4030:3146(ResType) ImageSparseDrefGather 4027 4028 4029 ConstOffset 722
+            4031:  7(f16vec4) CompositeExtract 4030 1
+                              Store 3994(texel) 4031
+            4032:     47(int) CompositeExtract 4030 0
+            4033:         224 Load 226(s2DShadow)
+            4034:154(f16vec2) Load 156(f16c2)
+            4035:   52(float) Load 215(compare)
+            4036:3146(ResType) ImageSparseDrefGather 4033 4034 4035 ConstOffset 722
+            4037:  7(f16vec4) CompositeExtract 4036 1
+                              Store 3994(texel) 4037
+            4038:     47(int) CompositeExtract 4036 0
+            4039:         337 Load 339(s2DArrayShadow)
+            4040:  167(fvec3) Load 169(c3)
+            4041:   52(float) Load 215(compare)
+            4042:3146(ResType) ImageSparseDrefGather 4039 4040 4041 ConstOffset 722
+            4043:  7(f16vec4) CompositeExtract 4042 1
+                              Store 3994(texel) 4043
+            4044:     47(int) CompositeExtract 4042 0
+            4045:         337 Load 339(s2DArrayShadow)
+            4046:175(f16vec3) Load 177(f16c3)
+            4047:   52(float) Load 215(compare)
+            4048:3146(ResType) ImageSparseDrefGather 4045 4046 4047 ConstOffset 722
+            4049:  7(f16vec4) CompositeExtract 4048 1
+                              Store 3994(texel) 4049
+            4050:     47(int) CompositeExtract 4048 0
+            4051:         371 Load 373(s2DRectShadow)
+            4052:   53(fvec2) Load 148(c2)
+            4053:   52(float) Load 215(compare)
+            4054:3146(ResType) ImageSparseDrefGather 4051 4052 4053 ConstOffset 722
+            4055:  7(f16vec4) CompositeExtract 4054 1
+                              Store 3994(texel) 4055
+            4056:     47(int) CompositeExtract 4054 0
+            4057:         371 Load 373(s2DRectShadow)
+            4058:154(f16vec2) Load 156(f16c2)
+            4059:   52(float) Load 215(compare)
+            4060:3146(ResType) ImageSparseDrefGather 4057 4058 4059 ConstOffset 722
+            4061:  7(f16vec4) CompositeExtract 4060 1
+                              Store 3994(texel) 4061
+            4062:     47(int) CompositeExtract 4060 0
+            4063:  7(f16vec4) Load 3994(texel)
+                              ReturnValue 4063
                               FunctionEnd
 89(testSparseTextureGatherOffsets():  7(f16vec4) Function None 8
               90:             Label
-     4022(texel):     64(ptr) Variable Function
-                              Store 4022(texel) 121
-            4023:         143 Load 145(s2D)
-            4024:   53(fvec2) Load 148(c2)
-            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:         357 Load 359(s2DRect)
-            4056:   53(fvec2) Load 148(c2)
-            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
+     4066(texel):     64(ptr) Variable Function
+                              Store 4066(texel) 121
+            4067:         143 Load 145(s2D)
+            4068:   53(fvec2) Load 148(c2)
+            4079:3146(ResType) ImageSparseGather 4067 4068 2187 ConstOffsets 4078
+            4080:  7(f16vec4) CompositeExtract 4079 1
+                              Store 4066(texel) 4080
+            4081:     47(int) CompositeExtract 4079 0
+            4082:         143 Load 145(s2D)
+            4083:154(f16vec2) Load 156(f16c2)
+            4084:6(float16_t) Load 137(f16bias)
+            4085:3146(ResType) ImageSparseGather 4082 4083 2187 Bias ConstOffsets 4084 4078
+            4086:  7(f16vec4) CompositeExtract 4085 1
+                              Store 4066(texel) 4086
+            4087:     47(int) CompositeExtract 4085 0
+            4088:         284 Load 286(s2DArray)
+            4089:  167(fvec3) Load 169(c3)
+            4090:3146(ResType) ImageSparseGather 4088 4089 2187 ConstOffsets 4078
+            4091:  7(f16vec4) CompositeExtract 4090 1
+                              Store 4066(texel) 4091
+            4092:     47(int) CompositeExtract 4090 0
+            4093:         284 Load 286(s2DArray)
+            4094:175(f16vec3) Load 177(f16c3)
+            4095:6(float16_t) Load 137(f16bias)
+            4096:3146(ResType) ImageSparseGather 4093 4094 2187 Bias ConstOffsets 4095 4078
+            4097:  7(f16vec4) CompositeExtract 4096 1
+                              Store 4066(texel) 4097
+            4098:     47(int) CompositeExtract 4096 0
+            4099:         357 Load 359(s2DRect)
+            4100:   53(fvec2) Load 148(c2)
+            4101:3146(ResType) ImageSparseGather 4099 4100 2187 ConstOffsets 4078
+            4102:  7(f16vec4) CompositeExtract 4101 1
+                              Store 4066(texel) 4102
+            4103:     47(int) CompositeExtract 4101 0
+            4104:         357 Load 359(s2DRect)
+            4105:154(f16vec2) Load 156(f16c2)
+            4106:3146(ResType) ImageSparseGather 4104 4105 2187 ConstOffsets 4078
+            4107:  7(f16vec4) CompositeExtract 4106 1
+                              Store 4066(texel) 4107
+            4108:     47(int) CompositeExtract 4106 0
+            4109:         224 Load 226(s2DShadow)
+            4110:   53(fvec2) Load 148(c2)
+            4111:   52(float) Load 215(compare)
+            4112:3146(ResType) ImageSparseDrefGather 4109 4110 4111 ConstOffsets 4078
+            4113:  7(f16vec4) CompositeExtract 4112 1
+                              Store 4066(texel) 4113
+            4114:     47(int) CompositeExtract 4112 0
+            4115:         224 Load 226(s2DShadow)
+            4116:154(f16vec2) Load 156(f16c2)
+            4117:   52(float) Load 215(compare)
+            4118:3146(ResType) ImageSparseDrefGather 4115 4116 4117 ConstOffsets 4078
+            4119:  7(f16vec4) CompositeExtract 4118 1
+                              Store 4066(texel) 4119
+            4120:     47(int) CompositeExtract 4118 0
+            4121:         337 Load 339(s2DArrayShadow)
+            4122:  167(fvec3) Load 169(c3)
+            4123:   52(float) Load 215(compare)
+            4124:3146(ResType) ImageSparseDrefGather 4121 4122 4123 ConstOffsets 4078
+            4125:  7(f16vec4) CompositeExtract 4124 1
+                              Store 4066(texel) 4125
+            4126:     47(int) CompositeExtract 4124 0
+            4127:         337 Load 339(s2DArrayShadow)
+            4128:175(f16vec3) Load 177(f16c3)
+            4129:   52(float) Load 215(compare)
+            4130:3146(ResType) ImageSparseDrefGather 4127 4128 4129 ConstOffsets 4078
+            4131:  7(f16vec4) CompositeExtract 4130 1
+                              Store 4066(texel) 4131
+            4132:     47(int) CompositeExtract 4130 0
+            4133:         371 Load 373(s2DRectShadow)
+            4134:   53(fvec2) Load 148(c2)
+            4135:   52(float) Load 215(compare)
+            4136:3146(ResType) ImageSparseDrefGather 4133 4134 4135 ConstOffsets 4078
+            4137:  7(f16vec4) CompositeExtract 4136 1
+                              Store 4066(texel) 4137
+            4138:     47(int) CompositeExtract 4136 0
+            4139:         371 Load 373(s2DRectShadow)
+            4140:154(f16vec2) Load 156(f16c2)
+            4141:   52(float) Load 215(compare)
+            4142:3146(ResType) ImageSparseDrefGather 4139 4140 4141 ConstOffsets 4078
+            4143:  7(f16vec4) CompositeExtract 4142 1
+                              Store 4066(texel) 4143
+            4144:     47(int) CompositeExtract 4142 0
+            4145:  7(f16vec4) Load 4066(texel)
+                              ReturnValue 4145
                               FunctionEnd
 91(testSparseTextureGatherLod():  7(f16vec4) Function None 8
               92:             Label
-     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
+     4148(texel):     64(ptr) Variable Function
+                              Store 4148(texel) 121
+            4149:         143 Load 145(s2D)
+            4150:   53(fvec2) Load 148(c2)
+            4151:   52(float) Load 565(lod)
+            4152:3146(ResType) ImageSparseGather 4149 4150 2187 Lod 4151
+            4153:  7(f16vec4) CompositeExtract 4152 1
+                              Store 4148(texel) 4153
+            4154:     47(int) CompositeExtract 4152 0
+            4155:         143 Load 145(s2D)
+            4156:154(f16vec2) Load 156(f16c2)
+            4157:6(float16_t) Load 572(f16lod)
+            4158:3146(ResType) ImageSparseGather 4155 4156 2187 Lod 4157
+            4159:  7(f16vec4) CompositeExtract 4158 1
+                              Store 4148(texel) 4159
+            4160:     47(int) CompositeExtract 4158 0
+            4161:         284 Load 286(s2DArray)
+            4162:  167(fvec3) Load 169(c3)
+            4163:   52(float) Load 565(lod)
+            4164:3146(ResType) ImageSparseGather 4161 4162 2187 Lod 4163
+            4165:  7(f16vec4) CompositeExtract 4164 1
+                              Store 4148(texel) 4165
+            4166:     47(int) CompositeExtract 4164 0
+            4167:         284 Load 286(s2DArray)
+            4168:175(f16vec3) Load 177(f16c3)
+            4169:6(float16_t) Load 572(f16lod)
+            4170:3146(ResType) ImageSparseGather 4167 4168 2187 Lod 4169
+            4171:  7(f16vec4) CompositeExtract 4170 1
+                              Store 4148(texel) 4171
+            4172:     47(int) CompositeExtract 4170 0
+            4173:         184 Load 186(sCube)
+            4174:  167(fvec3) Load 169(c3)
+            4175:   52(float) Load 565(lod)
+            4176:3146(ResType) ImageSparseGather 4173 4174 2187 Lod 4175
+            4177:  7(f16vec4) CompositeExtract 4176 1
+                              Store 4148(texel) 4177
+            4178:     47(int) CompositeExtract 4176 0
+            4179:         184 Load 186(sCube)
+            4180:175(f16vec3) Load 177(f16c3)
+            4181:6(float16_t) Load 572(f16lod)
+            4182:3146(ResType) ImageSparseGather 4179 4180 2187 Lod 4181
+            4183:  7(f16vec4) CompositeExtract 4182 1
+                              Store 4148(texel) 4183
+            4184:     47(int) CompositeExtract 4182 0
+            4185:         299 Load 301(sCubeArray)
+            4186:  249(fvec4) Load 251(c4)
+            4187:   52(float) Load 565(lod)
+            4188:3146(ResType) ImageSparseGather 4185 4186 2187 Lod 4187
+            4189:  7(f16vec4) CompositeExtract 4188 1
+                              Store 4148(texel) 4189
+            4190:     47(int) CompositeExtract 4188 0
+            4191:         299 Load 301(sCubeArray)
+            4192:  7(f16vec4) Load 309(f16c4)
+            4193:6(float16_t) Load 572(f16lod)
+            4194:3146(ResType) ImageSparseGather 4191 4192 2187 Lod 4193
+            4195:  7(f16vec4) CompositeExtract 4194 1
+                              Store 4148(texel) 4195
+            4196:     47(int) CompositeExtract 4194 0
+            4197:  7(f16vec4) Load 4148(texel)
+                              ReturnValue 4197
                               FunctionEnd
 93(testSparseTextureGatherLodOffset():  7(f16vec4) Function None 8
               94:             Label
-     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
+     4200(texel):     64(ptr) Variable Function
+                              Store 4200(texel) 121
+            4201:         143 Load 145(s2D)
+            4202:   53(fvec2) Load 148(c2)
+            4203:   52(float) Load 565(lod)
+            4204:3146(ResType) ImageSparseGather 4201 4202 2187 Lod ConstOffset 4203 722
+            4205:  7(f16vec4) CompositeExtract 4204 1
+                              Store 4200(texel) 4205
+            4206:     47(int) CompositeExtract 4204 0
+            4207:         143 Load 145(s2D)
+            4208:154(f16vec2) Load 156(f16c2)
+            4209:6(float16_t) Load 572(f16lod)
+            4210:3146(ResType) ImageSparseGather 4207 4208 2187 Lod ConstOffset 4209 722
+            4211:  7(f16vec4) CompositeExtract 4210 1
+                              Store 4200(texel) 4211
+            4212:     47(int) CompositeExtract 4210 0
+            4213:         284 Load 286(s2DArray)
+            4214:  167(fvec3) Load 169(c3)
+            4215:   52(float) Load 565(lod)
+            4216:3146(ResType) ImageSparseGather 4213 4214 2187 Lod ConstOffset 4215 722
+            4217:  7(f16vec4) CompositeExtract 4216 1
+                              Store 4200(texel) 4217
+            4218:     47(int) CompositeExtract 4216 0
+            4219:         284 Load 286(s2DArray)
+            4220:175(f16vec3) Load 177(f16c3)
+            4221:6(float16_t) Load 572(f16lod)
+            4222:3146(ResType) ImageSparseGather 4219 4220 2187 Lod ConstOffset 4221 722
+            4223:  7(f16vec4) CompositeExtract 4222 1
+                              Store 4200(texel) 4223
+            4224:     47(int) CompositeExtract 4222 0
+            4225:  7(f16vec4) Load 4200(texel)
+                              ReturnValue 4225
                               FunctionEnd
 95(testSparseTextureGatherLodOffsets():  7(f16vec4) Function None 8
               96:             Label
-     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
+     4228(texel):     64(ptr) Variable Function
+                              Store 4228(texel) 121
+            4229:         143 Load 145(s2D)
+            4230:   53(fvec2) Load 148(c2)
+            4231:   52(float) Load 565(lod)
+            4232:3146(ResType) ImageSparseGather 4229 4230 2187 Lod ConstOffsets 4231 2380
+            4233:  7(f16vec4) CompositeExtract 4232 1
+                              Store 4228(texel) 4233
+            4234:     47(int) CompositeExtract 4232 0
+            4235:         143 Load 145(s2D)
+            4236:154(f16vec2) Load 156(f16c2)
+            4237:6(float16_t) Load 572(f16lod)
+            4238:3146(ResType) ImageSparseGather 4235 4236 2187 Lod ConstOffsets 4237 2380
+            4239:  7(f16vec4) CompositeExtract 4238 1
+                              Store 4228(texel) 4239
+            4240:     47(int) CompositeExtract 4238 0
+            4241:         284 Load 286(s2DArray)
+            4242:  167(fvec3) Load 169(c3)
+            4243:   52(float) Load 565(lod)
+            4244:3146(ResType) ImageSparseGather 4241 4242 2187 Lod ConstOffsets 4243 2380
+            4245:  7(f16vec4) CompositeExtract 4244 1
+                              Store 4228(texel) 4245
+            4246:     47(int) CompositeExtract 4244 0
+            4247:         284 Load 286(s2DArray)
+            4248:175(f16vec3) Load 177(f16c3)
+            4249:6(float16_t) Load 572(f16lod)
+            4250:3146(ResType) ImageSparseGather 4247 4248 2187 Lod ConstOffsets 4249 2380
+            4251:  7(f16vec4) CompositeExtract 4250 1
+                              Store 4228(texel) 4251
+            4252:     47(int) CompositeExtract 4250 0
+            4253:  7(f16vec4) Load 4228(texel)
+                              ReturnValue 4253
                               FunctionEnd
 97(testSparseImageLoad():  7(f16vec4) Function None 8
               98:             Label
-     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
+     4256(texel):     64(ptr) Variable Function
+                              Store 4256(texel) 121
+            4257:        3006 Load 3008(i2D)
+            4258:   53(fvec2) Load 148(c2)
+            4259:  721(ivec2) ConvertFToS 4258
+            4260:3146(ResType) ImageSparseRead 4257 4259
+            4261:  7(f16vec4) CompositeExtract 4260 1
+                              Store 4256(texel) 4261
+            4262:     47(int) CompositeExtract 4260 0
+            4263:        3015 Load 3017(i3D)
+            4264:  167(fvec3) Load 169(c3)
+            4265:  734(ivec3) ConvertFToS 4264
+            4266:3146(ResType) ImageSparseRead 4263 4265
+            4267:  7(f16vec4) CompositeExtract 4266 1
+                              Store 4256(texel) 4267
+            4268:     47(int) CompositeExtract 4266 0
+            4269:        3024 Load 3026(i2DRect)
+            4270:   53(fvec2) Load 148(c2)
+            4271:  721(ivec2) ConvertFToS 4270
+            4272:3146(ResType) ImageSparseRead 4269 4271
+            4273:  7(f16vec4) CompositeExtract 4272 1
+                              Store 4256(texel) 4273
+            4274:     47(int) CompositeExtract 4272 0
+            4275:        3033 Load 3035(iCube)
+            4276:  167(fvec3) Load 169(c3)
+            4277:  734(ivec3) ConvertFToS 4276
+            4278:3146(ResType) ImageSparseRead 4275 4277
+            4279:  7(f16vec4) CompositeExtract 4278 1
+                              Store 4256(texel) 4279
+            4280:     47(int) CompositeExtract 4278 0
+            4281:        3060 Load 3062(i2DArray)
+            4282:  167(fvec3) Load 169(c3)
+            4283:  734(ivec3) ConvertFToS 4282
+            4284:3146(ResType) ImageSparseRead 4281 4283
+            4285:  7(f16vec4) CompositeExtract 4284 1
+                              Store 4256(texel) 4285
+            4286:     47(int) CompositeExtract 4284 0
+            4287:        3069 Load 3071(iCubeArray)
+            4288:  167(fvec3) Load 169(c3)
+            4289:  734(ivec3) ConvertFToS 4288
+            4290:3146(ResType) ImageSparseRead 4287 4289
+            4291:  7(f16vec4) CompositeExtract 4290 1
+                              Store 4256(texel) 4291
+            4292:     47(int) CompositeExtract 4290 0
+            4293:        3078 Load 3080(i2DMS)
+            4294:   53(fvec2) Load 148(c2)
+            4295:  721(ivec2) ConvertFToS 4294
+            4296:3146(ResType) ImageSparseRead 4293 4295 Sample 709
+            4297:  7(f16vec4) CompositeExtract 4296 1
+                              Store 4256(texel) 4297
+            4298:     47(int) CompositeExtract 4296 0
+            4299:        3087 Load 3089(i2DMSArray)
+            4300:  167(fvec3) Load 169(c3)
+            4301:  734(ivec3) ConvertFToS 4300
+            4302:3146(ResType) ImageSparseRead 4299 4301 Sample 1326
+            4303:  7(f16vec4) CompositeExtract 4302 1
+                              Store 4256(texel) 4303
+            4304:     47(int) CompositeExtract 4302 0
+            4305:  7(f16vec4) Load 4256(texel)
+                              ReturnValue 4305
                               FunctionEnd
 99(testSparseTextureClamp():  7(f16vec4) Function None 8
              100:             Label
-     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
+     4308(texel):     64(ptr) Variable Function
+                              Store 4308(texel) 121
+            4309:         143 Load 145(s2D)
+            4310:   53(fvec2) Load 148(c2)
+            4312:   52(float) Load 4311(lodClamp)
+            4313:3146(ResType) ImageSparseSampleImplicitLod 4309 4310 MinLod 4312
+            4314:  7(f16vec4) CompositeExtract 4313 1
+                              Store 4308(texel) 4314
+            4315:     47(int) CompositeExtract 4313 0
+            4316:         143 Load 145(s2D)
+            4317:154(f16vec2) Load 156(f16c2)
+            4319:6(float16_t) Load 4318(f16lodClamp)
+            4320:6(float16_t) Load 137(f16bias)
+            4321:3146(ResType) ImageSparseSampleImplicitLod 4316 4317 Bias MinLod 4320 4319
+            4322:  7(f16vec4) CompositeExtract 4321 1
+                              Store 4308(texel) 4322
+            4323:     47(int) CompositeExtract 4321 0
+            4324:         163 Load 165(s3D)
+            4325:  167(fvec3) Load 169(c3)
+            4326:   52(float) Load 4311(lodClamp)
+            4327:3146(ResType) ImageSparseSampleImplicitLod 4324 4325 MinLod 4326
+            4328:  7(f16vec4) CompositeExtract 4327 1
+                              Store 4308(texel) 4328
+            4329:     47(int) CompositeExtract 4327 0
+            4330:         163 Load 165(s3D)
+            4331:175(f16vec3) Load 177(f16c3)
+            4332:6(float16_t) Load 4318(f16lodClamp)
+            4333:6(float16_t) Load 137(f16bias)
+            4334:3146(ResType) ImageSparseSampleImplicitLod 4330 4331 Bias MinLod 4333 4332
+            4335:  7(f16vec4) CompositeExtract 4334 1
+                              Store 4308(texel) 4335
+            4336:     47(int) CompositeExtract 4334 0
+            4337:         184 Load 186(sCube)
+            4338:  167(fvec3) Load 169(c3)
+            4339:   52(float) Load 4311(lodClamp)
+            4340:3146(ResType) ImageSparseSampleImplicitLod 4337 4338 MinLod 4339
+            4341:  7(f16vec4) CompositeExtract 4340 1
+                              Store 4308(texel) 4341
+            4342:     47(int) CompositeExtract 4340 0
+            4343:         184 Load 186(sCube)
+            4344:175(f16vec3) Load 177(f16c3)
+            4345:6(float16_t) Load 4318(f16lodClamp)
+            4346:6(float16_t) Load 137(f16bias)
+            4347:3146(ResType) ImageSparseSampleImplicitLod 4343 4344 Bias MinLod 4346 4345
+            4348:  7(f16vec4) CompositeExtract 4347 1
+                              Store 4308(texel) 4348
+            4349:     47(int) CompositeExtract 4347 0
+            4350:         224 Load 226(s2DShadow)
+            4351:  167(fvec3) Load 169(c3)
+            4352:   52(float) Load 4311(lodClamp)
+            4353:    208(ptr) AccessChain 4308(texel) 207
+            4354:   52(float) CompositeExtract 4351 2
+            4355:3182(ResType) ImageSparseSampleDrefImplicitLod 4350 4351 4354 MinLod 4352
+            4356:6(float16_t) CompositeExtract 4355 1
+                              Store 4353 4356
+            4357:     47(int) CompositeExtract 4355 0
+            4358:         224 Load 226(s2DShadow)
+            4359:154(f16vec2) Load 156(f16c2)
+            4360:   52(float) Load 215(compare)
+            4361:6(float16_t) Load 4318(f16lodClamp)
+            4362:    208(ptr) AccessChain 4308(texel) 207
+            4363:6(float16_t) Load 137(f16bias)
+            4364:3182(ResType) ImageSparseSampleDrefImplicitLod 4358 4359 4360 Bias MinLod 4363 4361
+            4365:6(float16_t) CompositeExtract 4364 1
+                              Store 4362 4365
+            4366:     47(int) CompositeExtract 4364 0
+            4367:         245 Load 247(sCubeShadow)
+            4368:  249(fvec4) Load 251(c4)
+            4369:   52(float) Load 4311(lodClamp)
+            4370:    208(ptr) AccessChain 4308(texel) 207
+            4371:   52(float) CompositeExtract 4368 3
+            4372:3182(ResType) ImageSparseSampleDrefImplicitLod 4367 4368 4371 MinLod 4369
+            4373:6(float16_t) CompositeExtract 4372 1
+                              Store 4370 4373
+            4374:     47(int) CompositeExtract 4372 0
+            4375:         245 Load 247(sCubeShadow)
+            4376:175(f16vec3) Load 177(f16c3)
+            4377:   52(float) Load 215(compare)
+            4378:6(float16_t) Load 4318(f16lodClamp)
+            4379:    208(ptr) AccessChain 4308(texel) 207
+            4380:6(float16_t) Load 137(f16bias)
+            4381:3182(ResType) ImageSparseSampleDrefImplicitLod 4375 4376 4377 Bias MinLod 4380 4378
+            4382:6(float16_t) CompositeExtract 4381 1
+                              Store 4379 4382
+            4383:     47(int) CompositeExtract 4381 0
+            4384:         284 Load 286(s2DArray)
+            4385:  167(fvec3) Load 169(c3)
+            4386:   52(float) Load 4311(lodClamp)
+            4387:3146(ResType) ImageSparseSampleImplicitLod 4384 4385 MinLod 4386
+            4388:  7(f16vec4) CompositeExtract 4387 1
+                              Store 4308(texel) 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
+            4390:         284 Load 286(s2DArray)
+            4391:175(f16vec3) Load 177(f16c3)
+            4392:6(float16_t) Load 4318(f16lodClamp)
+            4393:6(float16_t) Load 137(f16bias)
+            4394:3146(ResType) ImageSparseSampleImplicitLod 4390 4391 Bias MinLod 4393 4392
+            4395:  7(f16vec4) CompositeExtract 4394 1
+                              Store 4308(texel) 4395
+            4396:     47(int) CompositeExtract 4394 0
+            4397:         299 Load 301(sCubeArray)
+            4398:  249(fvec4) Load 251(c4)
+            4399:   52(float) Load 4311(lodClamp)
+            4400:3146(ResType) ImageSparseSampleImplicitLod 4397 4398 MinLod 4399
+            4401:  7(f16vec4) CompositeExtract 4400 1
+                              Store 4308(texel) 4401
+            4402:     47(int) CompositeExtract 4400 0
+            4403:         299 Load 301(sCubeArray)
+            4404:  7(f16vec4) Load 309(f16c4)
+            4405:6(float16_t) Load 4318(f16lodClamp)
+            4406:6(float16_t) Load 137(f16bias)
+            4407:3146(ResType) ImageSparseSampleImplicitLod 4403 4404 Bias MinLod 4406 4405
+            4408:  7(f16vec4) CompositeExtract 4407 1
+                              Store 4308(texel) 4408
+            4409:     47(int) CompositeExtract 4407 0
+            4410:         337 Load 339(s2DArrayShadow)
+            4411:  249(fvec4) Load 251(c4)
+            4412:   52(float) Load 4311(lodClamp)
+            4413:    208(ptr) AccessChain 4308(texel) 207
+            4414:   52(float) CompositeExtract 4411 3
+            4415:3182(ResType) ImageSparseSampleDrefImplicitLod 4410 4411 4414 MinLod 4412
+            4416:6(float16_t) CompositeExtract 4415 1
+                              Store 4413 4416
+            4417:     47(int) CompositeExtract 4415 0
+            4418:         337 Load 339(s2DArrayShadow)
+            4419:175(f16vec3) Load 177(f16c3)
+            4420:   52(float) Load 215(compare)
+            4421:6(float16_t) Load 4318(f16lodClamp)
+            4422:    208(ptr) AccessChain 4308(texel) 207
+            4423:3182(ResType) ImageSparseSampleDrefImplicitLod 4418 4419 4420 MinLod 4421
+            4424:6(float16_t) CompositeExtract 4423 1
+                              Store 4422 4424
+            4425:     47(int) CompositeExtract 4423 0
+            4426:         391 Load 393(sCubeArrayShadow)
+            4427:  249(fvec4) Load 251(c4)
+            4428:   52(float) Load 215(compare)
+            4429:   52(float) Load 4311(lodClamp)
+            4430:    208(ptr) AccessChain 4308(texel) 207
+            4431:3182(ResType) ImageSparseSampleDrefImplicitLod 4426 4427 4428 MinLod 4429
+            4432:6(float16_t) CompositeExtract 4431 1
+                              Store 4430 4432
+            4433:     47(int) CompositeExtract 4431 0
+            4434:         391 Load 393(sCubeArrayShadow)
+            4435:  7(f16vec4) Load 309(f16c4)
+            4436:   52(float) Load 215(compare)
+            4437:6(float16_t) Load 4318(f16lodClamp)
+            4438:    208(ptr) AccessChain 4308(texel) 207
+            4439:3182(ResType) ImageSparseSampleDrefImplicitLod 4434 4435 4436 MinLod 4437
+            4440:6(float16_t) CompositeExtract 4439 1
+                              Store 4438 4440
+            4441:     47(int) CompositeExtract 4439 0
+            4442:  7(f16vec4) Load 4308(texel)
+                              ReturnValue 4442
                               FunctionEnd
 101(testTextureClamp():  7(f16vec4) Function None 8
              102:             Label
-     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 4401(texel) 207
-                              Store 4462 4461
-            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 4401(texel) 207
-                              Store 4481 4480
-            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 4401(texel) 207
-                              Store 4500 4499
-            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 4401(texel) 207
-                              Store 4558 4557
-            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
+     4445(texel):     64(ptr) Variable Function
+                              Store 4445(texel) 121
+            4446:         123 Load 125(s1D)
+            4447:   52(float) Load 128(c1)
+            4448:   52(float) Load 4311(lodClamp)
+            4449:  7(f16vec4) ImageSampleImplicitLod 4446 4447 MinLod 4448
+            4450:  7(f16vec4) Load 4445(texel)
+            4451:  7(f16vec4) FAdd 4450 4449
+                              Store 4445(texel) 4451
+            4452:         123 Load 125(s1D)
+            4453:6(float16_t) Load 135(f16c1)
+            4454:6(float16_t) Load 4318(f16lodClamp)
+            4455:6(float16_t) Load 137(f16bias)
+            4456:  7(f16vec4) ImageSampleImplicitLod 4452 4453 Bias MinLod 4455 4454
+            4457:  7(f16vec4) Load 4445(texel)
+            4458:  7(f16vec4) FAdd 4457 4456
+                              Store 4445(texel) 4458
+            4459:         143 Load 145(s2D)
+            4460:   53(fvec2) Load 148(c2)
+            4461:   52(float) Load 4311(lodClamp)
+            4462:  7(f16vec4) ImageSampleImplicitLod 4459 4460 MinLod 4461
+            4463:  7(f16vec4) Load 4445(texel)
+            4464:  7(f16vec4) FAdd 4463 4462
+                              Store 4445(texel) 4464
+            4465:         143 Load 145(s2D)
+            4466:154(f16vec2) Load 156(f16c2)
+            4467:6(float16_t) Load 4318(f16lodClamp)
+            4468:6(float16_t) Load 137(f16bias)
+            4469:  7(f16vec4) ImageSampleImplicitLod 4465 4466 Bias MinLod 4468 4467
+            4470:  7(f16vec4) Load 4445(texel)
+            4471:  7(f16vec4) FAdd 4470 4469
+                              Store 4445(texel) 4471
+            4472:         163 Load 165(s3D)
+            4473:  167(fvec3) Load 169(c3)
+            4474:   52(float) Load 4311(lodClamp)
+            4475:  7(f16vec4) ImageSampleImplicitLod 4472 4473 MinLod 4474
+            4476:  7(f16vec4) Load 4445(texel)
+            4477:  7(f16vec4) FAdd 4476 4475
+                              Store 4445(texel) 4477
+            4478:         163 Load 165(s3D)
+            4479:175(f16vec3) Load 177(f16c3)
+            4480:6(float16_t) Load 4318(f16lodClamp)
+            4481:6(float16_t) Load 137(f16bias)
+            4482:  7(f16vec4) ImageSampleImplicitLod 4478 4479 Bias MinLod 4481 4480
+            4483:  7(f16vec4) Load 4445(texel)
+            4484:  7(f16vec4) FAdd 4483 4482
+                              Store 4445(texel) 4484
+            4485:         184 Load 186(sCube)
+            4486:  167(fvec3) Load 169(c3)
+            4487:   52(float) Load 4311(lodClamp)
+            4488:  7(f16vec4) ImageSampleImplicitLod 4485 4486 MinLod 4487
+            4489:  7(f16vec4) Load 4445(texel)
+            4490:  7(f16vec4) FAdd 4489 4488
+                              Store 4445(texel) 4490
+            4491:         184 Load 186(sCube)
+            4492:175(f16vec3) Load 177(f16c3)
+            4493:6(float16_t) Load 4318(f16lodClamp)
+            4494:6(float16_t) Load 137(f16bias)
+            4495:  7(f16vec4) ImageSampleImplicitLod 4491 4492 Bias MinLod 4494 4493
+            4496:  7(f16vec4) Load 4445(texel)
+            4497:  7(f16vec4) FAdd 4496 4495
+                              Store 4445(texel) 4497
+            4498:         199 Load 201(s1DShadow)
+            4499:  167(fvec3) Load 169(c3)
+            4500:   52(float) Load 4311(lodClamp)
+            4501:   52(float) CompositeExtract 4499 2
+            4502:6(float16_t) ImageSampleDrefImplicitLod 4498 4499 4501 MinLod 4500
+            4503:    208(ptr) AccessChain 4445(texel) 207
+            4504:6(float16_t) Load 4503
+            4505:6(float16_t) FAdd 4504 4502
+            4506:    208(ptr) AccessChain 4445(texel) 207
+                              Store 4506 4505
+            4507:         199 Load 201(s1DShadow)
+            4508:154(f16vec2) Load 156(f16c2)
+            4509:   52(float) Load 215(compare)
+            4510:6(float16_t) Load 4318(f16lodClamp)
+            4511:6(float16_t) Load 137(f16bias)
+            4512:6(float16_t) ImageSampleDrefImplicitLod 4507 4508 4509 Bias MinLod 4511 4510
+            4513:    208(ptr) AccessChain 4445(texel) 207
+            4514:6(float16_t) Load 4513
+            4515:6(float16_t) FAdd 4514 4512
+            4516:    208(ptr) AccessChain 4445(texel) 207
+                              Store 4516 4515
+            4517:         224 Load 226(s2DShadow)
+            4518:  167(fvec3) Load 169(c3)
+            4519:   52(float) Load 4311(lodClamp)
+            4520:   52(float) CompositeExtract 4518 2
+            4521:6(float16_t) ImageSampleDrefImplicitLod 4517 4518 4520 MinLod 4519
+            4522:    208(ptr) AccessChain 4445(texel) 207
+            4523:6(float16_t) Load 4522
+            4524:6(float16_t) FAdd 4523 4521
+            4525:    208(ptr) AccessChain 4445(texel) 207
+                              Store 4525 4524
+            4526:         224 Load 226(s2DShadow)
+            4527:154(f16vec2) Load 156(f16c2)
+            4528:   52(float) Load 215(compare)
+            4529:6(float16_t) Load 4318(f16lodClamp)
+            4530:6(float16_t) Load 137(f16bias)
+            4531:6(float16_t) ImageSampleDrefImplicitLod 4526 4527 4528 Bias MinLod 4530 4529
+            4532:    208(ptr) AccessChain 4445(texel) 207
+            4533:6(float16_t) Load 4532
+            4534:6(float16_t) FAdd 4533 4531
+            4535:    208(ptr) AccessChain 4445(texel) 207
+                              Store 4535 4534
+            4536:         245 Load 247(sCubeShadow)
+            4537:  249(fvec4) Load 251(c4)
+            4538:   52(float) Load 4311(lodClamp)
+            4539:   52(float) CompositeExtract 4537 3
+            4540:6(float16_t) ImageSampleDrefImplicitLod 4536 4537 4539 MinLod 4538
+            4541:    208(ptr) AccessChain 4445(texel) 207
+            4542:6(float16_t) Load 4541
+            4543:6(float16_t) FAdd 4542 4540
+            4544:    208(ptr) AccessChain 4445(texel) 207
+                              Store 4544 4543
+            4545:         245 Load 247(sCubeShadow)
+            4546:175(f16vec3) Load 177(f16c3)
+            4547:   52(float) Load 215(compare)
+            4548:6(float16_t) Load 4318(f16lodClamp)
+            4549:6(float16_t) Load 137(f16bias)
+            4550:6(float16_t) ImageSampleDrefImplicitLod 4545 4546 4547 Bias MinLod 4549 4548
+            4551:    208(ptr) AccessChain 4445(texel) 207
+            4552:6(float16_t) Load 4551
+            4553:6(float16_t) FAdd 4552 4550
+            4554:    208(ptr) AccessChain 4445(texel) 207
+                              Store 4554 4553
+            4555:         269 Load 271(s1DArray)
+            4556:   53(fvec2) Load 148(c2)
+            4557:   52(float) Load 4311(lodClamp)
+            4558:  7(f16vec4) ImageSampleImplicitLod 4555 4556 MinLod 4557
+            4559:  7(f16vec4) Load 4445(texel)
+            4560:  7(f16vec4) FAdd 4559 4558
+                              Store 4445(texel) 4560
+            4561:         269 Load 271(s1DArray)
+            4562:154(f16vec2) Load 156(f16c2)
+            4563:6(float16_t) Load 4318(f16lodClamp)
+            4564:6(float16_t) Load 137(f16bias)
+            4565:  7(f16vec4) ImageSampleImplicitLod 4561 4562 Bias MinLod 4564 4563
+            4566:  7(f16vec4) Load 4445(texel)
+            4567:  7(f16vec4) FAdd 4566 4565
+                              Store 4445(texel) 4567
+            4568:         284 Load 286(s2DArray)
+            4569:  167(fvec3) Load 169(c3)
+            4570:   52(float) Load 4311(lodClamp)
+            4571:  7(f16vec4) ImageSampleImplicitLod 4568 4569 MinLod 4570
+            4572:  7(f16vec4) Load 4445(texel)
+            4573:  7(f16vec4) FAdd 4572 4571
+                              Store 4445(texel) 4573
+            4574:         284 Load 286(s2DArray)
+            4575:175(f16vec3) Load 177(f16c3)
+            4576:6(float16_t) Load 4318(f16lodClamp)
+            4577:6(float16_t) Load 137(f16bias)
+            4578:  7(f16vec4) ImageSampleImplicitLod 4574 4575 Bias MinLod 4577 4576
+            4579:  7(f16vec4) Load 4445(texel)
+            4580:  7(f16vec4) FAdd 4579 4578
+                              Store 4445(texel) 4580
+            4581:         299 Load 301(sCubeArray)
+            4582:  249(fvec4) Load 251(c4)
+            4583:   52(float) Load 4311(lodClamp)
+            4584:  7(f16vec4) ImageSampleImplicitLod 4581 4582 MinLod 4583
+            4585:  7(f16vec4) Load 4445(texel)
+            4586:  7(f16vec4) FAdd 4585 4584
+                              Store 4445(texel) 4586
+            4587:         299 Load 301(sCubeArray)
+            4588:  7(f16vec4) Load 309(f16c4)
+            4589:6(float16_t) Load 4318(f16lodClamp)
+            4590:6(float16_t) Load 137(f16bias)
+            4591:  7(f16vec4) ImageSampleImplicitLod 4587 4588 Bias MinLod 4590 4589
+            4592:  7(f16vec4) Load 4445(texel)
+            4593:  7(f16vec4) FAdd 4592 4591
+                              Store 4445(texel) 4593
+            4594:         316 Load 318(s1DArrayShadow)
+            4595:  167(fvec3) Load 169(c3)
+            4596:   52(float) Load 4311(lodClamp)
+            4597:   52(float) CompositeExtract 4595 2
+            4598:6(float16_t) ImageSampleDrefImplicitLod 4594 4595 4597 MinLod 4596
+            4599:    208(ptr) AccessChain 4445(texel) 207
+            4600:6(float16_t) Load 4599
+            4601:6(float16_t) FAdd 4600 4598
+            4602:    208(ptr) AccessChain 4445(texel) 207
+                              Store 4602 4601
+            4603:         316 Load 318(s1DArrayShadow)
+            4604:154(f16vec2) Load 156(f16c2)
+            4605:   52(float) Load 215(compare)
+            4606:6(float16_t) Load 4318(f16lodClamp)
+            4607:6(float16_t) Load 137(f16bias)
+            4608:6(float16_t) ImageSampleDrefImplicitLod 4603 4604 4605 Bias MinLod 4607 4606
+            4609:    208(ptr) AccessChain 4445(texel) 207
+            4610:6(float16_t) Load 4609
+            4611:6(float16_t) FAdd 4610 4608
+            4612:    208(ptr) AccessChain 4445(texel) 207
+                              Store 4612 4611
+            4613:         337 Load 339(s2DArrayShadow)
+            4614:  249(fvec4) Load 251(c4)
+            4615:   52(float) Load 4311(lodClamp)
+            4616:   52(float) CompositeExtract 4614 3
+            4617:6(float16_t) ImageSampleDrefImplicitLod 4613 4614 4616 MinLod 4615
+            4618:    208(ptr) AccessChain 4445(texel) 207
+            4619:6(float16_t) Load 4618
+            4620:6(float16_t) FAdd 4619 4617
+            4621:    208(ptr) AccessChain 4445(texel) 207
+                              Store 4621 4620
+            4622:         337 Load 339(s2DArrayShadow)
+            4623:175(f16vec3) Load 177(f16c3)
+            4624:   52(float) Load 215(compare)
+            4625:6(float16_t) Load 4318(f16lodClamp)
+            4626:6(float16_t) ImageSampleDrefImplicitLod 4622 4623 4624 MinLod 4625
+            4627:    208(ptr) AccessChain 4445(texel) 207
+            4628:6(float16_t) Load 4627
+            4629:6(float16_t) FAdd 4628 4626
+            4630:    208(ptr) AccessChain 4445(texel) 207
+                              Store 4630 4629
+            4631:         391 Load 393(sCubeArrayShadow)
+            4632:  249(fvec4) Load 251(c4)
+            4633:   52(float) Load 215(compare)
+            4634:   52(float) Load 4311(lodClamp)
+            4635:6(float16_t) ImageSampleDrefImplicitLod 4631 4632 4633 MinLod 4634
+            4636:    208(ptr) AccessChain 4445(texel) 207
+            4637:6(float16_t) Load 4636
+            4638:6(float16_t) FAdd 4637 4635
+            4639:    208(ptr) AccessChain 4445(texel) 207
+                              Store 4639 4638
+            4640:         391 Load 393(sCubeArrayShadow)
+            4641:  7(f16vec4) Load 309(f16c4)
+            4642:   52(float) Load 215(compare)
+            4643:6(float16_t) Load 4318(f16lodClamp)
+            4644:6(float16_t) ImageSampleDrefImplicitLod 4640 4641 4642 MinLod 4643
+            4645:    208(ptr) AccessChain 4445(texel) 207
+            4646:6(float16_t) Load 4645
+            4647:6(float16_t) FAdd 4646 4644
+            4648:    208(ptr) AccessChain 4445(texel) 207
+                              Store 4648 4647
+            4649:  7(f16vec4) Load 4445(texel)
+                              ReturnValue 4649
                               FunctionEnd
 103(testSparseTextureOffsetClamp():  7(f16vec4) Function None 8
              104:             Label
-     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
+     4652(texel):     64(ptr) Variable Function
+                              Store 4652(texel) 121
+            4653:         143 Load 145(s2D)
+            4654:   53(fvec2) Load 148(c2)
+            4655:   52(float) Load 4311(lodClamp)
+            4656:3146(ResType) ImageSparseSampleImplicitLod 4653 4654 ConstOffset MinLod 722 4655
+            4657:  7(f16vec4) CompositeExtract 4656 1
+                              Store 4652(texel) 4657
+            4658:     47(int) CompositeExtract 4656 0
+            4659:         143 Load 145(s2D)
+            4660:154(f16vec2) Load 156(f16c2)
+            4661:6(float16_t) Load 4318(f16lodClamp)
+            4662:6(float16_t) Load 137(f16bias)
+            4663:3146(ResType) ImageSparseSampleImplicitLod 4659 4660 Bias ConstOffset MinLod 4662 722 4661
+            4664:  7(f16vec4) CompositeExtract 4663 1
+                              Store 4652(texel) 4664
+            4665:     47(int) CompositeExtract 4663 0
+            4666:         163 Load 165(s3D)
+            4667:  167(fvec3) Load 169(c3)
+            4668:   52(float) Load 4311(lodClamp)
+            4669:3146(ResType) ImageSparseSampleImplicitLod 4666 4667 ConstOffset MinLod 735 4668
+            4670:  7(f16vec4) CompositeExtract 4669 1
+                              Store 4652(texel) 4670
+            4671:     47(int) CompositeExtract 4669 0
+            4672:         163 Load 165(s3D)
+            4673:175(f16vec3) Load 177(f16c3)
+            4674:6(float16_t) Load 4318(f16lodClamp)
+            4675:6(float16_t) Load 137(f16bias)
+            4676:3146(ResType) ImageSparseSampleImplicitLod 4672 4673 Bias ConstOffset MinLod 4675 735 4674
+            4677:  7(f16vec4) CompositeExtract 4676 1
+                              Store 4652(texel) 4677
+            4678:     47(int) CompositeExtract 4676 0
+            4679:         224 Load 226(s2DShadow)
+            4680:  167(fvec3) Load 169(c3)
+            4681:   52(float) Load 4311(lodClamp)
+            4682:    208(ptr) AccessChain 4652(texel) 207
+            4683:   52(float) CompositeExtract 4680 2
+            4684:3182(ResType) ImageSparseSampleDrefImplicitLod 4679 4680 4683 ConstOffset MinLod 722 4681
+            4685:6(float16_t) CompositeExtract 4684 1
+                              Store 4682 4685
+            4686:     47(int) CompositeExtract 4684 0
+            4687:         224 Load 226(s2DShadow)
+            4688:154(f16vec2) Load 156(f16c2)
+            4689:   52(float) Load 215(compare)
+            4690:6(float16_t) Load 4318(f16lodClamp)
+            4691:    208(ptr) AccessChain 4652(texel) 207
+            4692:6(float16_t) Load 137(f16bias)
+            4693:3182(ResType) ImageSparseSampleDrefImplicitLod 4687 4688 4689 Bias ConstOffset MinLod 4692 722 4690
+            4694:6(float16_t) CompositeExtract 4693 1
+                              Store 4691 4694
+            4695:     47(int) CompositeExtract 4693 0
+            4696:         284 Load 286(s2DArray)
+            4697:  167(fvec3) Load 169(c3)
+            4698:   52(float) Load 4311(lodClamp)
+            4699:3146(ResType) ImageSparseSampleImplicitLod 4696 4697 ConstOffset MinLod 722 4698
+            4700:  7(f16vec4) CompositeExtract 4699 1
+                              Store 4652(texel) 4700
+            4701:     47(int) CompositeExtract 4699 0
+            4702:         284 Load 286(s2DArray)
+            4703:175(f16vec3) Load 177(f16c3)
+            4704:6(float16_t) Load 4318(f16lodClamp)
+            4705:6(float16_t) Load 137(f16bias)
+            4706:3146(ResType) ImageSparseSampleImplicitLod 4702 4703 Bias ConstOffset MinLod 4705 722 4704
+            4707:  7(f16vec4) CompositeExtract 4706 1
+                              Store 4652(texel) 4707
+            4708:     47(int) CompositeExtract 4706 0
+            4709:         337 Load 339(s2DArrayShadow)
+            4710:  249(fvec4) Load 251(c4)
+            4711:   52(float) Load 4311(lodClamp)
+            4712:    208(ptr) AccessChain 4652(texel) 207
+            4713:   52(float) CompositeExtract 4710 3
+            4714:3182(ResType) ImageSparseSampleDrefImplicitLod 4709 4710 4713 ConstOffset MinLod 722 4711
+            4715:6(float16_t) CompositeExtract 4714 1
+                              Store 4712 4715
+            4716:     47(int) CompositeExtract 4714 0
+            4717:         337 Load 339(s2DArrayShadow)
+            4718:175(f16vec3) Load 177(f16c3)
+            4719:   52(float) Load 215(compare)
+            4720:6(float16_t) Load 4318(f16lodClamp)
+            4721:    208(ptr) AccessChain 4652(texel) 207
+            4722:3182(ResType) ImageSparseSampleDrefImplicitLod 4717 4718 4719 ConstOffset MinLod 722 4720
+            4723:6(float16_t) CompositeExtract 4722 1
+                              Store 4721 4723
+            4724:     47(int) CompositeExtract 4722 0
+            4725:  7(f16vec4) Load 4652(texel)
+                              ReturnValue 4725
                               FunctionEnd
 105(testTextureOffsetClamp():  7(f16vec4) Function None 8
              106:             Label
-     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 4684(texel) 207
-                              Store 4732 4731
-            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 4684(texel) 207
-                              Store 4751 4750
-            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)
+     4728(texel):     64(ptr) Variable Function
+                              Store 4728(texel) 121
+            4729:         123 Load 125(s1D)
+            4730:   52(float) Load 128(c1)
+            4731:   52(float) Load 4311(lodClamp)
+            4732:  7(f16vec4) ImageSampleImplicitLod 4729 4730 ConstOffset MinLod 709 4731
+            4733:  7(f16vec4) Load 4728(texel)
+            4734:  7(f16vec4) FAdd 4733 4732
+                              Store 4728(texel) 4734
+            4735:         123 Load 125(s1D)
+            4736:6(float16_t) Load 135(f16c1)
+            4737:6(float16_t) Load 4318(f16lodClamp)
+            4738:6(float16_t) Load 137(f16bias)
+            4739:  7(f16vec4) ImageSampleImplicitLod 4735 4736 Bias ConstOffset MinLod 4738 709 4737
+            4740:  7(f16vec4) Load 4728(texel)
+            4741:  7(f16vec4) FAdd 4740 4739
+                              Store 4728(texel) 4741
+            4742:         143 Load 145(s2D)
+            4743:   53(fvec2) Load 148(c2)
+            4744:   52(float) Load 4311(lodClamp)
+            4745:  7(f16vec4) ImageSampleImplicitLod 4742 4743 ConstOffset MinLod 722 4744
+            4746:  7(f16vec4) Load 4728(texel)
+            4747:  7(f16vec4) FAdd 4746 4745
+                              Store 4728(texel) 4747
+            4748:         143 Load 145(s2D)
+            4749:154(f16vec2) Load 156(f16c2)
+            4750:6(float16_t) Load 4318(f16lodClamp)
+            4751:6(float16_t) Load 137(f16bias)
+            4752:  7(f16vec4) ImageSampleImplicitLod 4748 4749 Bias ConstOffset MinLod 4751 722 4750
+            4753:  7(f16vec4) Load 4728(texel)
+            4754:  7(f16vec4) FAdd 4753 4752
+                              Store 4728(texel) 4754
+            4755:         163 Load 165(s3D)
+            4756:  167(fvec3) Load 169(c3)
+            4757:   52(float) Load 4311(lodClamp)
+            4758:  7(f16vec4) ImageSampleImplicitLod 4755 4756 ConstOffset MinLod 735 4757
+            4759:  7(f16vec4) Load 4728(texel)
+            4760:  7(f16vec4) FAdd 4759 4758
+                              Store 4728(texel) 4760
+            4761:         163 Load 165(s3D)
+            4762:175(f16vec3) Load 177(f16c3)
+            4763:6(float16_t) Load 4318(f16lodClamp)
+            4764:6(float16_t) Load 137(f16bias)
+            4765:  7(f16vec4) ImageSampleImplicitLod 4761 4762 Bias ConstOffset MinLod 4764 735 4763
+            4766:  7(f16vec4) Load 4728(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 4684(texel) 207
-                              Store 4796 4795
-            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
+                              Store 4728(texel) 4767
+            4768:         199 Load 201(s1DShadow)
+            4769:  167(fvec3) Load 169(c3)
+            4770:   52(float) Load 4311(lodClamp)
+            4771:   52(float) CompositeExtract 4769 2
+            4772:6(float16_t) ImageSampleDrefImplicitLod 4768 4769 4771 ConstOffset MinLod 709 4770
+            4773:    208(ptr) AccessChain 4728(texel) 207
+            4774:6(float16_t) Load 4773
+            4775:6(float16_t) FAdd 4774 4772
+            4776:    208(ptr) AccessChain 4728(texel) 207
+                              Store 4776 4775
+            4777:         199 Load 201(s1DShadow)
+            4778:154(f16vec2) Load 156(f16c2)
+            4779:   52(float) Load 215(compare)
+            4780:6(float16_t) Load 4318(f16lodClamp)
+            4781:6(float16_t) Load 137(f16bias)
+            4782:6(float16_t) ImageSampleDrefImplicitLod 4777 4778 4779 Bias ConstOffset MinLod 4781 709 4780
+            4783:    208(ptr) AccessChain 4728(texel) 207
+            4784:6(float16_t) Load 4783
+            4785:6(float16_t) FAdd 4784 4782
+            4786:    208(ptr) AccessChain 4728(texel) 207
+                              Store 4786 4785
+            4787:         224 Load 226(s2DShadow)
+            4788:  167(fvec3) Load 169(c3)
+            4789:   52(float) Load 4311(lodClamp)
+            4790:   52(float) CompositeExtract 4788 2
+            4791:6(float16_t) ImageSampleDrefImplicitLod 4787 4788 4790 ConstOffset MinLod 722 4789
+            4792:    208(ptr) AccessChain 4728(texel) 207
+            4793:6(float16_t) Load 4792
+            4794:6(float16_t) FAdd 4793 4791
+            4795:    208(ptr) AccessChain 4728(texel) 207
+                              Store 4795 4794
+            4796:         224 Load 226(s2DShadow)
+            4797:154(f16vec2) Load 156(f16c2)
+            4798:   52(float) Load 215(compare)
+            4799:6(float16_t) Load 4318(f16lodClamp)
+            4800:6(float16_t) Load 137(f16bias)
+            4801:6(float16_t) ImageSampleDrefImplicitLod 4796 4797 4798 Bias ConstOffset MinLod 4800 722 4799
+            4802:    208(ptr) AccessChain 4728(texel) 207
+            4803:6(float16_t) Load 4802
+            4804:6(float16_t) FAdd 4803 4801
+            4805:    208(ptr) AccessChain 4728(texel) 207
+                              Store 4805 4804
+            4806:         269 Load 271(s1DArray)
+            4807:   53(fvec2) Load 148(c2)
+            4808:   52(float) Load 4311(lodClamp)
+            4809:  7(f16vec4) ImageSampleImplicitLod 4806 4807 ConstOffset MinLod 709 4808
+            4810:  7(f16vec4) Load 4728(texel)
+            4811:  7(f16vec4) FAdd 4810 4809
+                              Store 4728(texel) 4811
+            4812:         269 Load 271(s1DArray)
+            4813:154(f16vec2) Load 156(f16c2)
+            4814:6(float16_t) Load 4318(f16lodClamp)
+            4815:6(float16_t) Load 137(f16bias)
+            4816:  7(f16vec4) ImageSampleImplicitLod 4812 4813 Bias ConstOffset MinLod 4815 709 4814
+            4817:  7(f16vec4) Load 4728(texel)
+            4818:  7(f16vec4) FAdd 4817 4816
+                              Store 4728(texel) 4818
+            4819:         284 Load 286(s2DArray)
+            4820:  167(fvec3) Load 169(c3)
+            4821:   52(float) Load 4311(lodClamp)
+            4822:  7(f16vec4) ImageSampleImplicitLod 4819 4820 ConstOffset MinLod 722 4821
+            4823:  7(f16vec4) Load 4728(texel)
+            4824:  7(f16vec4) FAdd 4823 4822
+                              Store 4728(texel) 4824
+            4825:         284 Load 286(s2DArray)
+            4826:175(f16vec3) Load 177(f16c3)
+            4827:6(float16_t) Load 4318(f16lodClamp)
+            4828:6(float16_t) Load 137(f16bias)
+            4829:  7(f16vec4) ImageSampleImplicitLod 4825 4826 Bias ConstOffset MinLod 4828 722 4827
+            4830:  7(f16vec4) Load 4728(texel)
+            4831:  7(f16vec4) FAdd 4830 4829
+                              Store 4728(texel) 4831
+            4832:         316 Load 318(s1DArrayShadow)
+            4833:  167(fvec3) Load 169(c3)
+            4834:   52(float) Load 4311(lodClamp)
+            4835:   52(float) CompositeExtract 4833 2
+            4836:6(float16_t) ImageSampleDrefImplicitLod 4832 4833 4835 ConstOffset MinLod 709 4834
+            4837:    208(ptr) AccessChain 4728(texel) 207
+            4838:6(float16_t) Load 4837
+            4839:6(float16_t) FAdd 4838 4836
+            4840:    208(ptr) AccessChain 4728(texel) 207
+                              Store 4840 4839
+            4841:         316 Load 318(s1DArrayShadow)
+            4842:154(f16vec2) Load 156(f16c2)
+            4843:   52(float) Load 215(compare)
+            4844:6(float16_t) Load 4318(f16lodClamp)
+            4845:6(float16_t) Load 137(f16bias)
+            4846:6(float16_t) ImageSampleDrefImplicitLod 4841 4842 4843 Bias ConstOffset MinLod 4845 709 4844
+            4847:    208(ptr) AccessChain 4728(texel) 207
+            4848:6(float16_t) Load 4847
+            4849:6(float16_t) FAdd 4848 4846
+            4850:    208(ptr) AccessChain 4728(texel) 207
+                              Store 4850 4849
+            4851:         337 Load 339(s2DArrayShadow)
+            4852:  249(fvec4) Load 251(c4)
+            4853:   52(float) Load 4311(lodClamp)
+            4854:   52(float) CompositeExtract 4852 3
+            4855:6(float16_t) ImageSampleDrefImplicitLod 4851 4852 4854 ConstOffset MinLod 722 4853
+            4856:    208(ptr) AccessChain 4728(texel) 207
+            4857:6(float16_t) Load 4856
+            4858:6(float16_t) FAdd 4857 4855
+            4859:    208(ptr) AccessChain 4728(texel) 207
+                              Store 4859 4858
+            4860:         337 Load 339(s2DArrayShadow)
+            4861:175(f16vec3) Load 177(f16c3)
+            4862:   52(float) Load 215(compare)
+            4863:6(float16_t) Load 4318(f16lodClamp)
+            4864:6(float16_t) ImageSampleDrefImplicitLod 4860 4861 4862 ConstOffset MinLod 722 4863
+            4865:    208(ptr) AccessChain 4728(texel) 207
+            4866:6(float16_t) Load 4865
+            4867:6(float16_t) FAdd 4866 4864
+            4868:    208(ptr) AccessChain 4728(texel) 207
+                              Store 4868 4867
+            4869:  7(f16vec4) Load 4728(texel)
+                              ReturnValue 4869
                               FunctionEnd
 107(testSparseTextureGradClamp():  7(f16vec4) Function None 8
              108:             Label
-     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:  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 4882 4885
-            4886:     47(int) CompositeExtract 4884 0
-            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 4893 4895
+     4872(texel):     64(ptr) Variable Function
+                              Store 4872(texel) 121
+            4873:         143 Load 145(s2D)
+            4874:   53(fvec2) Load 148(c2)
+            4875:   53(fvec2) Load 1409(dPdxy2)
+            4876:   53(fvec2) Load 1409(dPdxy2)
+            4877:   52(float) Load 4311(lodClamp)
+            4878:3146(ResType) ImageSparseSampleExplicitLod 4873 4874 Grad MinLod 4875 4876 4877
+            4879:  7(f16vec4) CompositeExtract 4878 1
+                              Store 4872(texel) 4879
+            4880:     47(int) CompositeExtract 4878 0
+            4881:         143 Load 145(s2D)
+            4882:154(f16vec2) Load 156(f16c2)
+            4883:154(f16vec2) Load 1417(f16dPdxy2)
+            4884:154(f16vec2) Load 1417(f16dPdxy2)
+            4885:6(float16_t) Load 4318(f16lodClamp)
+            4886:3146(ResType) ImageSparseSampleExplicitLod 4881 4882 Grad MinLod 4883 4884 4885
+            4887:  7(f16vec4) CompositeExtract 4886 1
+                              Store 4872(texel) 4887
+            4888:     47(int) CompositeExtract 4886 0
+            4889:         163 Load 165(s3D)
+            4890:  167(fvec3) Load 169(c3)
+            4891:  167(fvec3) Load 1425(dPdxy3)
+            4892:  167(fvec3) Load 1425(dPdxy3)
+            4893:   52(float) Load 4311(lodClamp)
+            4894:3146(ResType) ImageSparseSampleExplicitLod 4889 4890 Grad MinLod 4891 4892 4893
+            4895:  7(f16vec4) CompositeExtract 4894 1
+                              Store 4872(texel) 4895
             4896:     47(int) CompositeExtract 4894 0
-            4897:         245 Load 247(sCubeShadow)
-            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 4902 4905
-            4906:     47(int) CompositeExtract 4904 0
-            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:  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 4938 4941
-            4942:     47(int) CompositeExtract 4940 0
-            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
+            4897:         163 Load 165(s3D)
+            4898:175(f16vec3) Load 177(f16c3)
+            4899:175(f16vec3) Load 1433(f16dPdxy3)
+            4900:175(f16vec3) Load 1433(f16dPdxy3)
+            4901:6(float16_t) Load 4318(f16lodClamp)
+            4902:3146(ResType) ImageSparseSampleExplicitLod 4897 4898 Grad MinLod 4899 4900 4901
+            4903:  7(f16vec4) CompositeExtract 4902 1
+                              Store 4872(texel) 4903
+            4904:     47(int) CompositeExtract 4902 0
+            4905:         184 Load 186(sCube)
+            4906:  167(fvec3) Load 169(c3)
+            4907:  167(fvec3) Load 1425(dPdxy3)
+            4908:  167(fvec3) Load 1425(dPdxy3)
+            4909:   52(float) Load 4311(lodClamp)
+            4910:3146(ResType) ImageSparseSampleExplicitLod 4905 4906 Grad MinLod 4907 4908 4909
+            4911:  7(f16vec4) CompositeExtract 4910 1
+                              Store 4872(texel) 4911
+            4912:     47(int) CompositeExtract 4910 0
+            4913:         184 Load 186(sCube)
+            4914:175(f16vec3) Load 177(f16c3)
+            4915:175(f16vec3) Load 1433(f16dPdxy3)
+            4916:175(f16vec3) Load 1433(f16dPdxy3)
+            4917:6(float16_t) Load 4318(f16lodClamp)
+            4918:3146(ResType) ImageSparseSampleExplicitLod 4913 4914 Grad MinLod 4915 4916 4917
+            4919:  7(f16vec4) CompositeExtract 4918 1
+                              Store 4872(texel) 4919
+            4920:     47(int) CompositeExtract 4918 0
+            4921:         224 Load 226(s2DShadow)
+            4922:  167(fvec3) Load 169(c3)
+            4923:   53(fvec2) Load 1409(dPdxy2)
+            4924:   53(fvec2) Load 1409(dPdxy2)
+            4925:   52(float) Load 4311(lodClamp)
+            4926:    208(ptr) AccessChain 4872(texel) 207
+            4927:   52(float) CompositeExtract 4922 2
+            4928:3182(ResType) ImageSparseSampleDrefExplicitLod 4921 4922 4927 Grad MinLod 4923 4924 4925
+            4929:6(float16_t) CompositeExtract 4928 1
+                              Store 4926 4929
+            4930:     47(int) CompositeExtract 4928 0
+            4931:         224 Load 226(s2DShadow)
+            4932:154(f16vec2) Load 156(f16c2)
+            4933:   52(float) Load 215(compare)
+            4934:154(f16vec2) Load 1417(f16dPdxy2)
+            4935:154(f16vec2) Load 1417(f16dPdxy2)
+            4936:6(float16_t) Load 4318(f16lodClamp)
+            4937:    208(ptr) AccessChain 4872(texel) 207
+            4938:3182(ResType) ImageSparseSampleDrefExplicitLod 4931 4932 4933 Grad MinLod 4934 4935 4936
+            4939:6(float16_t) CompositeExtract 4938 1
+                              Store 4937 4939
+            4940:     47(int) CompositeExtract 4938 0
+            4941:         245 Load 247(sCubeShadow)
+            4942:  249(fvec4) Load 251(c4)
+            4943:  167(fvec3) Load 1425(dPdxy3)
+            4944:  167(fvec3) Load 1425(dPdxy3)
+            4945:   52(float) Load 4311(lodClamp)
+            4946:    208(ptr) AccessChain 4872(texel) 207
+            4947:   52(float) CompositeExtract 4942 3
+            4948:3182(ResType) ImageSparseSampleDrefExplicitLod 4941 4942 4947 Grad MinLod 4943 4944 4945
+            4949:6(float16_t) CompositeExtract 4948 1
+                              Store 4946 4949
+            4950:     47(int) CompositeExtract 4948 0
+            4951:         245 Load 247(sCubeShadow)
+            4952:175(f16vec3) Load 177(f16c3)
+            4953:   52(float) Load 215(compare)
+            4954:175(f16vec3) Load 1433(f16dPdxy3)
+            4955:175(f16vec3) Load 1433(f16dPdxy3)
+            4956:6(float16_t) Load 4318(f16lodClamp)
+            4957:    208(ptr) AccessChain 4872(texel) 207
+            4958:3182(ResType) ImageSparseSampleDrefExplicitLod 4951 4952 4953 Grad MinLod 4954 4955 4956
+            4959:6(float16_t) CompositeExtract 4958 1
+                              Store 4957 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
+            4961:         284 Load 286(s2DArray)
+            4962:  167(fvec3) Load 169(c3)
+            4963:   53(fvec2) Load 1409(dPdxy2)
+            4964:   53(fvec2) Load 1409(dPdxy2)
+            4965:   52(float) Load 4311(lodClamp)
+            4966:3146(ResType) ImageSparseSampleExplicitLod 4961 4962 Grad MinLod 4963 4964 4965
             4967:  7(f16vec4) CompositeExtract 4966 1
-                              Store 4828(texel) 4967
+                              Store 4872(texel) 4967
             4968:     47(int) CompositeExtract 4966 0
-            4969:  7(f16vec4) Load 4828(texel)
-                              ReturnValue 4969
+            4969:         284 Load 286(s2DArray)
+            4970:175(f16vec3) Load 177(f16c3)
+            4971:154(f16vec2) Load 1417(f16dPdxy2)
+            4972:154(f16vec2) Load 1417(f16dPdxy2)
+            4973:6(float16_t) Load 4318(f16lodClamp)
+            4974:3146(ResType) ImageSparseSampleExplicitLod 4969 4970 Grad MinLod 4971 4972 4973
+            4975:  7(f16vec4) CompositeExtract 4974 1
+                              Store 4872(texel) 4975
+            4976:     47(int) CompositeExtract 4974 0
+            4977:         337 Load 339(s2DArrayShadow)
+            4978:  249(fvec4) Load 251(c4)
+            4979:   53(fvec2) Load 1409(dPdxy2)
+            4980:   53(fvec2) Load 1409(dPdxy2)
+            4981:   52(float) Load 4311(lodClamp)
+            4982:    208(ptr) AccessChain 4872(texel) 207
+            4983:   52(float) CompositeExtract 4978 3
+            4984:3182(ResType) ImageSparseSampleDrefExplicitLod 4977 4978 4983 Grad MinLod 4979 4980 4981
+            4985:6(float16_t) CompositeExtract 4984 1
+                              Store 4982 4985
+            4986:     47(int) CompositeExtract 4984 0
+            4987:         337 Load 339(s2DArrayShadow)
+            4988:175(f16vec3) Load 177(f16c3)
+            4989:   52(float) Load 215(compare)
+            4990:154(f16vec2) Load 1417(f16dPdxy2)
+            4991:154(f16vec2) Load 1417(f16dPdxy2)
+            4992:6(float16_t) Load 4318(f16lodClamp)
+            4993:    208(ptr) AccessChain 4872(texel) 207
+            4994:3182(ResType) ImageSparseSampleDrefExplicitLod 4987 4988 4989 Grad MinLod 4990 4991 4992
+            4995:6(float16_t) CompositeExtract 4994 1
+                              Store 4993 4995
+            4996:     47(int) CompositeExtract 4994 0
+            4997:         299 Load 301(sCubeArray)
+            4998:  249(fvec4) Load 251(c4)
+            4999:  167(fvec3) Load 1425(dPdxy3)
+            5000:  167(fvec3) Load 1425(dPdxy3)
+            5001:   52(float) Load 4311(lodClamp)
+            5002:3146(ResType) ImageSparseSampleExplicitLod 4997 4998 Grad MinLod 4999 5000 5001
+            5003:  7(f16vec4) CompositeExtract 5002 1
+                              Store 4872(texel) 5003
+            5004:     47(int) CompositeExtract 5002 0
+            5005:         299 Load 301(sCubeArray)
+            5006:  7(f16vec4) Load 309(f16c4)
+            5007:175(f16vec3) Load 1433(f16dPdxy3)
+            5008:175(f16vec3) Load 1433(f16dPdxy3)
+            5009:6(float16_t) Load 4318(f16lodClamp)
+            5010:3146(ResType) ImageSparseSampleExplicitLod 5005 5006 Grad MinLod 5007 5008 5009
+            5011:  7(f16vec4) CompositeExtract 5010 1
+                              Store 4872(texel) 5011
+            5012:     47(int) CompositeExtract 5010 0
+            5013:  7(f16vec4) Load 4872(texel)
+                              ReturnValue 5013
                               FunctionEnd
 109(testTextureGradClamp():  7(f16vec4) Function None 8
              110:             Label
-     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
+     5016(texel):     64(ptr) Variable Function
+                              Store 5016(texel) 121
+            5017:         123 Load 125(s1D)
+            5018:   52(float) Load 128(c1)
+            5019:   52(float) Load 1393(dPdxy1)
+            5020:   52(float) Load 1393(dPdxy1)
+            5021:   52(float) Load 4311(lodClamp)
+            5022:  7(f16vec4) ImageSampleExplicitLod 5017 5018 Grad MinLod 5019 5020 5021
+            5023:  7(f16vec4) Load 5016(texel)
+            5024:  7(f16vec4) FAdd 5023 5022
+                              Store 5016(texel) 5024
+            5025:         123 Load 125(s1D)
+            5026:6(float16_t) Load 135(f16c1)
+            5027:6(float16_t) Load 1401(f16dPdxy1)
+            5028:6(float16_t) Load 1401(f16dPdxy1)
+            5029:6(float16_t) Load 4318(f16lodClamp)
+            5030:  7(f16vec4) ImageSampleExplicitLod 5025 5026 Grad MinLod 5027 5028 5029
+            5031:  7(f16vec4) Load 5016(texel)
+            5032:  7(f16vec4) FAdd 5031 5030
+                              Store 5016(texel) 5032
+            5033:         143 Load 145(s2D)
+            5034:   53(fvec2) Load 148(c2)
+            5035:   53(fvec2) Load 1409(dPdxy2)
+            5036:   53(fvec2) Load 1409(dPdxy2)
+            5037:   52(float) Load 4311(lodClamp)
+            5038:  7(f16vec4) ImageSampleExplicitLod 5033 5034 Grad MinLod 5035 5036 5037
+            5039:  7(f16vec4) Load 5016(texel)
+            5040:  7(f16vec4) FAdd 5039 5038
+                              Store 5016(texel) 5040
+            5041:         143 Load 145(s2D)
+            5042:154(f16vec2) Load 156(f16c2)
+            5043:154(f16vec2) Load 1417(f16dPdxy2)
+            5044:154(f16vec2) Load 1417(f16dPdxy2)
+            5045:6(float16_t) Load 4318(f16lodClamp)
+            5046:  7(f16vec4) ImageSampleExplicitLod 5041 5042 Grad MinLod 5043 5044 5045
+            5047:  7(f16vec4) Load 5016(texel)
+            5048:  7(f16vec4) FAdd 5047 5046
+                              Store 5016(texel) 5048
+            5049:         163 Load 165(s3D)
+            5050:  167(fvec3) Load 169(c3)
+            5051:  167(fvec3) Load 1425(dPdxy3)
+            5052:  167(fvec3) Load 1425(dPdxy3)
+            5053:   52(float) Load 4311(lodClamp)
+            5054:  7(f16vec4) ImageSampleExplicitLod 5049 5050 Grad MinLod 5051 5052 5053
+            5055:  7(f16vec4) Load 5016(texel)
+            5056:  7(f16vec4) FAdd 5055 5054
+                              Store 5016(texel) 5056
+            5057:         163 Load 165(s3D)
+            5058:175(f16vec3) Load 177(f16c3)
+            5059:175(f16vec3) Load 1433(f16dPdxy3)
+            5060:175(f16vec3) Load 1433(f16dPdxy3)
+            5061:6(float16_t) Load 4318(f16lodClamp)
+            5062:  7(f16vec4) ImageSampleExplicitLod 5057 5058 Grad MinLod 5059 5060 5061
+            5063:  7(f16vec4) Load 5016(texel)
+            5064:  7(f16vec4) FAdd 5063 5062
+                              Store 5016(texel) 5064
+            5065:         184 Load 186(sCube)
+            5066:  167(fvec3) Load 169(c3)
+            5067:  167(fvec3) Load 1425(dPdxy3)
+            5068:  167(fvec3) Load 1425(dPdxy3)
+            5069:   52(float) Load 4311(lodClamp)
+            5070:  7(f16vec4) ImageSampleExplicitLod 5065 5066 Grad MinLod 5067 5068 5069
+            5071:  7(f16vec4) Load 5016(texel)
+            5072:  7(f16vec4) FAdd 5071 5070
+                              Store 5016(texel) 5072
+            5073:         184 Load 186(sCube)
+            5074:175(f16vec3) Load 177(f16c3)
+            5075:175(f16vec3) Load 1433(f16dPdxy3)
+            5076:175(f16vec3) Load 1433(f16dPdxy3)
+            5077:6(float16_t) Load 4318(f16lodClamp)
+            5078:  7(f16vec4) ImageSampleExplicitLod 5073 5074 Grad MinLod 5075 5076 5077
+            5079:  7(f16vec4) Load 5016(texel)
+            5080:  7(f16vec4) FAdd 5079 5078
+                              Store 5016(texel) 5080
+            5081:         199 Load 201(s1DShadow)
+            5082:  167(fvec3) Load 169(c3)
+            5083:   52(float) Load 1393(dPdxy1)
+            5084:   52(float) Load 1393(dPdxy1)
+            5085:   52(float) Load 4311(lodClamp)
+            5086:   52(float) CompositeExtract 5082 2
             5087:6(float16_t) ImageSampleDrefExplicitLod 5081 5082 5086 Grad MinLod 5083 5084 5085
-            5088:    208(ptr) AccessChain 4972(texel) 207
+            5088:    208(ptr) AccessChain 5016(texel) 207
             5089:6(float16_t) Load 5088
             5090:6(float16_t) FAdd 5089 5087
-            5091:    208(ptr) AccessChain 4972(texel) 207
+            5091:    208(ptr) AccessChain 5016(texel) 207
                               Store 5091 5090
-            5092:         245 Load 247(sCubeShadow)
-            5093:175(f16vec3) Load 177(f16c3)
+            5092:         199 Load 201(s1DShadow)
+            5093:154(f16vec2) Load 156(f16c2)
             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)
+            5095:6(float16_t) Load 1401(f16dPdxy1)
+            5096:6(float16_t) Load 1401(f16dPdxy1)
+            5097:6(float16_t) Load 4318(f16lodClamp)
             5098:6(float16_t) ImageSampleDrefExplicitLod 5092 5093 5094 Grad MinLod 5095 5096 5097
-            5099:    208(ptr) AccessChain 4972(texel) 207
+            5099:    208(ptr) AccessChain 5016(texel) 207
             5100:6(float16_t) Load 5099
             5101:6(float16_t) FAdd 5100 5098
-            5102:    208(ptr) AccessChain 4972(texel) 207
+            5102:    208(ptr) AccessChain 5016(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
+            5103:         224 Load 226(s2DShadow)
+            5104:  167(fvec3) Load 169(c3)
+            5105:   53(fvec2) Load 1409(dPdxy2)
+            5106:   53(fvec2) Load 1409(dPdxy2)
+            5107:   52(float) Load 4311(lodClamp)
+            5108:   52(float) CompositeExtract 5104 2
+            5109:6(float16_t) ImageSampleDrefExplicitLod 5103 5104 5108 Grad MinLod 5105 5106 5107
+            5110:    208(ptr) AccessChain 5016(texel) 207
+            5111:6(float16_t) Load 5110
+            5112:6(float16_t) FAdd 5111 5109
+            5113:    208(ptr) AccessChain 5016(texel) 207
+                              Store 5113 5112
+            5114:         224 Load 226(s2DShadow)
+            5115:154(f16vec2) Load 156(f16c2)
+            5116:   52(float) Load 215(compare)
+            5117:154(f16vec2) Load 1417(f16dPdxy2)
+            5118:154(f16vec2) Load 1417(f16dPdxy2)
+            5119:6(float16_t) Load 4318(f16lodClamp)
+            5120:6(float16_t) ImageSampleDrefExplicitLod 5114 5115 5116 Grad MinLod 5117 5118 5119
+            5121:    208(ptr) AccessChain 5016(texel) 207
+            5122:6(float16_t) Load 5121
+            5123:6(float16_t) FAdd 5122 5120
+            5124:    208(ptr) AccessChain 5016(texel) 207
+                              Store 5124 5123
+            5125:         245 Load 247(sCubeShadow)
+            5126:  249(fvec4) Load 251(c4)
+            5127:  167(fvec3) Load 1425(dPdxy3)
+            5128:  167(fvec3) Load 1425(dPdxy3)
+            5129:   52(float) Load 4311(lodClamp)
+            5130:   52(float) CompositeExtract 5126 3
+            5131:6(float16_t) ImageSampleDrefExplicitLod 5125 5126 5130 Grad MinLod 5127 5128 5129
+            5132:    208(ptr) AccessChain 5016(texel) 207
+            5133:6(float16_t) Load 5132
+            5134:6(float16_t) FAdd 5133 5131
+            5135:    208(ptr) AccessChain 5016(texel) 207
+                              Store 5135 5134
+            5136:         245 Load 247(sCubeShadow)
+            5137:175(f16vec3) Load 177(f16c3)
+            5138:   52(float) Load 215(compare)
+            5139:175(f16vec3) Load 1433(f16dPdxy3)
+            5140:175(f16vec3) Load 1433(f16dPdxy3)
+            5141:6(float16_t) Load 4318(f16lodClamp)
+            5142:6(float16_t) ImageSampleDrefExplicitLod 5136 5137 5138 Grad MinLod 5139 5140 5141
+            5143:    208(ptr) AccessChain 5016(texel) 207
+            5144:6(float16_t) Load 5143
+            5145:6(float16_t) FAdd 5144 5142
+            5146:    208(ptr) AccessChain 5016(texel) 207
+                              Store 5146 5145
+            5147:         269 Load 271(s1DArray)
+            5148:   53(fvec2) Load 148(c2)
+            5149:   52(float) Load 1393(dPdxy1)
+            5150:   52(float) Load 1393(dPdxy1)
+            5151:   52(float) Load 4311(lodClamp)
+            5152:  7(f16vec4) ImageSampleExplicitLod 5147 5148 Grad MinLod 5149 5150 5151
+            5153:  7(f16vec4) Load 5016(texel)
+            5154:  7(f16vec4) FAdd 5153 5152
+                              Store 5016(texel) 5154
+            5155:         269 Load 271(s1DArray)
+            5156:154(f16vec2) Load 156(f16c2)
+            5157:6(float16_t) Load 1401(f16dPdxy1)
+            5158:6(float16_t) Load 1401(f16dPdxy1)
+            5159:6(float16_t) Load 4318(f16lodClamp)
+            5160:  7(f16vec4) ImageSampleExplicitLod 5155 5156 Grad MinLod 5157 5158 5159
+            5161:  7(f16vec4) Load 5016(texel)
+            5162:  7(f16vec4) FAdd 5161 5160
+                              Store 5016(texel) 5162
+            5163:         284 Load 286(s2DArray)
+            5164:  167(fvec3) Load 169(c3)
+            5165:   53(fvec2) Load 1409(dPdxy2)
+            5166:   53(fvec2) Load 1409(dPdxy2)
+            5167:   52(float) Load 4311(lodClamp)
+            5168:  7(f16vec4) ImageSampleExplicitLod 5163 5164 Grad MinLod 5165 5166 5167
+            5169:  7(f16vec4) Load 5016(texel)
+            5170:  7(f16vec4) FAdd 5169 5168
+                              Store 5016(texel) 5170
+            5171:         284 Load 286(s2DArray)
+            5172:175(f16vec3) Load 177(f16c3)
+            5173:154(f16vec2) Load 1417(f16dPdxy2)
+            5174:154(f16vec2) Load 1417(f16dPdxy2)
+            5175:6(float16_t) Load 4318(f16lodClamp)
+            5176:  7(f16vec4) ImageSampleExplicitLod 5171 5172 Grad MinLod 5173 5174 5175
+            5177:  7(f16vec4) Load 5016(texel)
+            5178:  7(f16vec4) FAdd 5177 5176
+                              Store 5016(texel) 5178
+            5179:         316 Load 318(s1DArrayShadow)
+            5180:  167(fvec3) Load 169(c3)
+            5181:   52(float) Load 1393(dPdxy1)
+            5182:   52(float) Load 1393(dPdxy1)
+            5183:   52(float) Load 4311(lodClamp)
+            5184:   52(float) CompositeExtract 5180 2
+            5185:6(float16_t) ImageSampleDrefExplicitLod 5179 5180 5184 Grad MinLod 5181 5182 5183
+            5186:    208(ptr) AccessChain 5016(texel) 207
+            5187:6(float16_t) Load 5186
+            5188:6(float16_t) FAdd 5187 5185
+            5189:    208(ptr) AccessChain 5016(texel) 207
+                              Store 5189 5188
+            5190:         316 Load 318(s1DArrayShadow)
+            5191:154(f16vec2) Load 156(f16c2)
+            5192:   52(float) Load 215(compare)
+            5193:6(float16_t) Load 1401(f16dPdxy1)
+            5194:6(float16_t) Load 1401(f16dPdxy1)
+            5195:6(float16_t) Load 4318(f16lodClamp)
+            5196:6(float16_t) ImageSampleDrefExplicitLod 5190 5191 5192 Grad MinLod 5193 5194 5195
+            5197:    208(ptr) AccessChain 5016(texel) 207
+            5198:6(float16_t) Load 5197
+            5199:6(float16_t) FAdd 5198 5196
+            5200:    208(ptr) AccessChain 5016(texel) 207
+                              Store 5200 5199
+            5201:         337 Load 339(s2DArrayShadow)
+            5202:  249(fvec4) Load 251(c4)
+            5203:   53(fvec2) Load 1409(dPdxy2)
+            5204:   53(fvec2) Load 1409(dPdxy2)
+            5205:   52(float) Load 4311(lodClamp)
+            5206:   52(float) CompositeExtract 5202 3
+            5207:6(float16_t) ImageSampleDrefExplicitLod 5201 5202 5206 Grad MinLod 5203 5204 5205
+            5208:    208(ptr) AccessChain 5016(texel) 207
+            5209:6(float16_t) Load 5208
+            5210:6(float16_t) FAdd 5209 5207
+            5211:    208(ptr) AccessChain 5016(texel) 207
+                              Store 5211 5210
+            5212:         337 Load 339(s2DArrayShadow)
+            5213:175(f16vec3) Load 177(f16c3)
+            5214:   52(float) Load 215(compare)
+            5215:154(f16vec2) Load 1417(f16dPdxy2)
+            5216:154(f16vec2) Load 1417(f16dPdxy2)
+            5217:6(float16_t) Load 4318(f16lodClamp)
+            5218:6(float16_t) ImageSampleDrefExplicitLod 5212 5213 5214 Grad MinLod 5215 5216 5217
+            5219:    208(ptr) AccessChain 5016(texel) 207
+            5220:6(float16_t) Load 5219
+            5221:6(float16_t) FAdd 5220 5218
+            5222:    208(ptr) AccessChain 5016(texel) 207
+                              Store 5222 5221
+            5223:         299 Load 301(sCubeArray)
+            5224:  249(fvec4) Load 251(c4)
+            5225:  167(fvec3) Load 1425(dPdxy3)
+            5226:  167(fvec3) Load 1425(dPdxy3)
+            5227:   52(float) Load 4311(lodClamp)
+            5228:  7(f16vec4) ImageSampleExplicitLod 5223 5224 Grad MinLod 5225 5226 5227
+            5229:  7(f16vec4) Load 5016(texel)
+            5230:  7(f16vec4) FAdd 5229 5228
+                              Store 5016(texel) 5230
+            5231:         299 Load 301(sCubeArray)
+            5232:  7(f16vec4) Load 309(f16c4)
+            5233:175(f16vec3) Load 1433(f16dPdxy3)
+            5234:175(f16vec3) Load 1433(f16dPdxy3)
+            5235:6(float16_t) Load 4318(f16lodClamp)
+            5236:  7(f16vec4) ImageSampleExplicitLod 5231 5232 Grad MinLod 5233 5234 5235
+            5237:  7(f16vec4) Load 5016(texel)
+            5238:  7(f16vec4) FAdd 5237 5236
+                              Store 5016(texel) 5238
+            5239:  7(f16vec4) Load 5016(texel)
+                              ReturnValue 5239
                               FunctionEnd
 111(testSparseTextureGradOffsetClamp():  7(f16vec4) Function None 8
              112:             Label
-     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:  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 5236 5239
-            5240:     47(int) CompositeExtract 5238 0
-            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
+     5242(texel):     64(ptr) Variable Function
+                              Store 5242(texel) 121
+            5243:         143 Load 145(s2D)
+            5244:   53(fvec2) Load 148(c2)
+            5245:   53(fvec2) Load 1409(dPdxy2)
+            5246:   53(fvec2) Load 1409(dPdxy2)
+            5247:   52(float) Load 4311(lodClamp)
+            5248:3146(ResType) ImageSparseSampleExplicitLod 5243 5244 Grad ConstOffset MinLod 5245 5246 722 5247
+            5249:  7(f16vec4) CompositeExtract 5248 1
+                              Store 5242(texel) 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
+            5251:         143 Load 145(s2D)
+            5252:154(f16vec2) Load 156(f16c2)
+            5253:154(f16vec2) Load 1417(f16dPdxy2)
+            5254:154(f16vec2) Load 1417(f16dPdxy2)
+            5255:6(float16_t) Load 4318(f16lodClamp)
+            5256:3146(ResType) ImageSparseSampleExplicitLod 5251 5252 Grad ConstOffset MinLod 5253 5254 722 5255
             5257:  7(f16vec4) CompositeExtract 5256 1
-                              Store 5198(texel) 5257
+                              Store 5242(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
+            5259:         163 Load 165(s3D)
+            5260:  167(fvec3) Load 169(c3)
+            5261:  167(fvec3) Load 1425(dPdxy3)
+            5262:  167(fvec3) Load 1425(dPdxy3)
+            5263:   52(float) Load 4311(lodClamp)
+            5264:3146(ResType) ImageSparseSampleExplicitLod 5259 5260 Grad ConstOffset MinLod 5261 5262 735 5263
             5265:  7(f16vec4) CompositeExtract 5264 1
-                              Store 5198(texel) 5265
+                              Store 5242(texel) 5265
             5266:     47(int) CompositeExtract 5264 0
-            5267:         337 Load 339(s2DArrayShadow)
-            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 5272 5275
-            5276:     47(int) CompositeExtract 5274 0
-            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
+            5267:         163 Load 165(s3D)
+            5268:175(f16vec3) Load 177(f16c3)
+            5269:175(f16vec3) Load 1433(f16dPdxy3)
+            5270:175(f16vec3) Load 1433(f16dPdxy3)
+            5271:6(float16_t) Load 4318(f16lodClamp)
+            5272:3146(ResType) ImageSparseSampleExplicitLod 5267 5268 Grad ConstOffset MinLod 5269 5270 735 5271
+            5273:  7(f16vec4) CompositeExtract 5272 1
+                              Store 5242(texel) 5273
+            5274:     47(int) CompositeExtract 5272 0
+            5275:         224 Load 226(s2DShadow)
+            5276:  167(fvec3) Load 169(c3)
+            5277:   53(fvec2) Load 1409(dPdxy2)
+            5278:   53(fvec2) Load 1409(dPdxy2)
+            5279:   52(float) Load 4311(lodClamp)
+            5280:    208(ptr) AccessChain 5242(texel) 207
+            5281:   52(float) CompositeExtract 5276 2
+            5282:3182(ResType) ImageSparseSampleDrefExplicitLod 5275 5276 5281 Grad ConstOffset MinLod 5277 5278 722 5279
+            5283:6(float16_t) CompositeExtract 5282 1
+                              Store 5280 5283
+            5284:     47(int) CompositeExtract 5282 0
+            5285:         224 Load 226(s2DShadow)
+            5286:154(f16vec2) Load 156(f16c2)
+            5287:   52(float) Load 215(compare)
+            5288:154(f16vec2) Load 1417(f16dPdxy2)
+            5289:154(f16vec2) Load 1417(f16dPdxy2)
+            5290:6(float16_t) Load 4318(f16lodClamp)
+            5291:    208(ptr) AccessChain 5242(texel) 207
+            5292:3182(ResType) ImageSparseSampleDrefExplicitLod 5285 5286 5287 Grad ConstOffset MinLod 5288 5289 722 5290
+            5293:6(float16_t) CompositeExtract 5292 1
+                              Store 5291 5293
+            5294:     47(int) CompositeExtract 5292 0
+            5295:         284 Load 286(s2DArray)
+            5296:  167(fvec3) Load 169(c3)
+            5297:   53(fvec2) Load 1409(dPdxy2)
+            5298:   53(fvec2) Load 1409(dPdxy2)
+            5299:   52(float) Load 4311(lodClamp)
+            5300:3146(ResType) ImageSparseSampleExplicitLod 5295 5296 Grad ConstOffset MinLod 5297 5298 722 5299
+            5301:  7(f16vec4) CompositeExtract 5300 1
+                              Store 5242(texel) 5301
+            5302:     47(int) CompositeExtract 5300 0
+            5303:         284 Load 286(s2DArray)
+            5304:175(f16vec3) Load 177(f16c3)
+            5305:154(f16vec2) Load 1417(f16dPdxy2)
+            5306:154(f16vec2) Load 1417(f16dPdxy2)
+            5307:6(float16_t) Load 4318(f16lodClamp)
+            5308:3146(ResType) ImageSparseSampleExplicitLod 5303 5304 Grad ConstOffset MinLod 5305 5306 722 5307
+            5309:  7(f16vec4) CompositeExtract 5308 1
+                              Store 5242(texel) 5309
+            5310:     47(int) CompositeExtract 5308 0
+            5311:         337 Load 339(s2DArrayShadow)
+            5312:  249(fvec4) Load 251(c4)
+            5313:   53(fvec2) Load 1409(dPdxy2)
+            5314:   53(fvec2) Load 1409(dPdxy2)
+            5315:   52(float) Load 4311(lodClamp)
+            5316:    208(ptr) AccessChain 5242(texel) 207
+            5317:   52(float) CompositeExtract 5312 3
+            5318:3182(ResType) ImageSparseSampleDrefExplicitLod 5311 5312 5317 Grad ConstOffset MinLod 5313 5314 722 5315
+            5319:6(float16_t) CompositeExtract 5318 1
+                              Store 5316 5319
+            5320:     47(int) CompositeExtract 5318 0
+            5321:         337 Load 339(s2DArrayShadow)
+            5322:175(f16vec3) Load 177(f16c3)
+            5323:   52(float) Load 215(compare)
+            5324:154(f16vec2) Load 1417(f16dPdxy2)
+            5325:154(f16vec2) Load 1417(f16dPdxy2)
+            5326:6(float16_t) Load 4318(f16lodClamp)
+            5327:    208(ptr) AccessChain 5242(texel) 207
+            5328:3182(ResType) ImageSparseSampleDrefExplicitLod 5321 5322 5323 Grad ConstOffset MinLod 5324 5325 722 5326
+            5329:6(float16_t) CompositeExtract 5328 1
+                              Store 5327 5329
+            5330:     47(int) CompositeExtract 5328 0
+            5331:  7(f16vec4) Load 5242(texel)
+                              ReturnValue 5331
                               FunctionEnd
 113(testTextureGradOffsetClamp():  7(f16vec4) Function None 8
              114:             Label
-     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)
+     5334(texel):     64(ptr) Variable Function
+                              Store 5334(texel) 121
+            5335:         123 Load 125(s1D)
+            5336:   52(float) Load 128(c1)
+            5337:   52(float) Load 1393(dPdxy1)
+            5338:   52(float) Load 1393(dPdxy1)
+            5339:   52(float) Load 4311(lodClamp)
+            5340:  7(f16vec4) ImageSampleExplicitLod 5335 5336 Grad ConstOffset MinLod 5337 5338 709 5339
+            5341:  7(f16vec4) Load 5334(texel)
+            5342:  7(f16vec4) FAdd 5341 5340
+                              Store 5334(texel) 5342
+            5343:         123 Load 125(s1D)
+            5344:6(float16_t) Load 135(f16c1)
+            5345:6(float16_t) Load 1401(f16dPdxy1)
+            5346:6(float16_t) Load 1401(f16dPdxy1)
+            5347:6(float16_t) Load 4318(f16lodClamp)
+            5348:  7(f16vec4) ImageSampleExplicitLod 5343 5344 Grad ConstOffset MinLod 5345 5346 709 5347
+            5349:  7(f16vec4) Load 5334(texel)
+            5350:  7(f16vec4) FAdd 5349 5348
+                              Store 5334(texel) 5350
+            5351:         143 Load 145(s2D)
+            5352:   53(fvec2) Load 148(c2)
+            5353:   53(fvec2) Load 1409(dPdxy2)
+            5354:   53(fvec2) Load 1409(dPdxy2)
+            5355:   52(float) Load 4311(lodClamp)
+            5356:  7(f16vec4) ImageSampleExplicitLod 5351 5352 Grad ConstOffset MinLod 5353 5354 722 5355
+            5357:  7(f16vec4) Load 5334(texel)
+            5358:  7(f16vec4) FAdd 5357 5356
+                              Store 5334(texel) 5358
+            5359:         143 Load 145(s2D)
+            5360:154(f16vec2) Load 156(f16c2)
+            5361:154(f16vec2) Load 1417(f16dPdxy2)
+            5362:154(f16vec2) Load 1417(f16dPdxy2)
+            5363:6(float16_t) Load 4318(f16lodClamp)
+            5364:  7(f16vec4) ImageSampleExplicitLod 5359 5360 Grad ConstOffset MinLod 5361 5362 722 5363
+            5365:  7(f16vec4) Load 5334(texel)
+            5366:  7(f16vec4) FAdd 5365 5364
+                              Store 5334(texel) 5366
+            5367:         163 Load 165(s3D)
+            5368:  167(fvec3) Load 169(c3)
+            5369:  167(fvec3) Load 1425(dPdxy3)
+            5370:  167(fvec3) Load 1425(dPdxy3)
+            5371:   52(float) Load 4311(lodClamp)
+            5372:  7(f16vec4) ImageSampleExplicitLod 5367 5368 Grad ConstOffset MinLod 5369 5370 735 5371
+            5373:  7(f16vec4) Load 5334(texel)
+            5374:  7(f16vec4) FAdd 5373 5372
+                              Store 5334(texel) 5374
+            5375:         163 Load 165(s3D)
+            5376:175(f16vec3) Load 177(f16c3)
+            5377:175(f16vec3) Load 1433(f16dPdxy3)
+            5378:175(f16vec3) Load 1433(f16dPdxy3)
+            5379:6(float16_t) Load 4318(f16lodClamp)
+            5380:  7(f16vec4) ImageSampleExplicitLod 5375 5376 Grad ConstOffset MinLod 5377 5378 735 5379
+            5381:  7(f16vec4) Load 5334(texel)
+            5382:  7(f16vec4) FAdd 5381 5380
+                              Store 5334(texel) 5382
+            5383:         199 Load 201(s1DShadow)
+            5384:  167(fvec3) Load 169(c3)
             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
+            5387:   52(float) Load 4311(lodClamp)
+            5388:   52(float) CompositeExtract 5384 2
+            5389:6(float16_t) ImageSampleDrefExplicitLod 5383 5384 5388 Grad ConstOffset MinLod 5385 5386 709 5387
+            5390:    208(ptr) AccessChain 5334(texel) 207
+            5391:6(float16_t) Load 5390
+            5392:6(float16_t) FAdd 5391 5389
+            5393:    208(ptr) AccessChain 5334(texel) 207
+                              Store 5393 5392
+            5394:         199 Load 201(s1DShadow)
+            5395:154(f16vec2) Load 156(f16c2)
+            5396:   52(float) Load 215(compare)
+            5397:6(float16_t) Load 1401(f16dPdxy1)
+            5398:6(float16_t) Load 1401(f16dPdxy1)
+            5399:6(float16_t) Load 4318(f16lodClamp)
+            5400:6(float16_t) ImageSampleDrefExplicitLod 5394 5395 5396 Grad ConstOffset MinLod 5397 5398 709 5399
+            5401:    208(ptr) AccessChain 5334(texel) 207
+            5402:6(float16_t) Load 5401
+            5403:6(float16_t) FAdd 5402 5400
+            5404:    208(ptr) AccessChain 5334(texel) 207
+                              Store 5404 5403
+            5405:         224 Load 226(s2DShadow)
+            5406:  167(fvec3) Load 169(c3)
+            5407:   53(fvec2) Load 1409(dPdxy2)
+            5408:   53(fvec2) Load 1409(dPdxy2)
+            5409:   52(float) Load 4311(lodClamp)
+            5410:   52(float) CompositeExtract 5406 2
+            5411:6(float16_t) ImageSampleDrefExplicitLod 5405 5406 5410 Grad ConstOffset MinLod 5407 5408 722 5409
+            5412:    208(ptr) AccessChain 5334(texel) 207
+            5413:6(float16_t) Load 5412
+            5414:6(float16_t) FAdd 5413 5411
+            5415:    208(ptr) AccessChain 5334(texel) 207
+                              Store 5415 5414
+            5416:         224 Load 226(s2DShadow)
+            5417:154(f16vec2) Load 156(f16c2)
+            5418:   52(float) Load 215(compare)
+            5419:154(f16vec2) Load 1417(f16dPdxy2)
+            5420:154(f16vec2) Load 1417(f16dPdxy2)
+            5421:6(float16_t) Load 4318(f16lodClamp)
+            5422:6(float16_t) ImageSampleDrefExplicitLod 5416 5417 5418 Grad ConstOffset MinLod 5419 5420 722 5421
+            5423:    208(ptr) AccessChain 5334(texel) 207
+            5424:6(float16_t) Load 5423
+            5425:6(float16_t) FAdd 5424 5422
+            5426:    208(ptr) AccessChain 5334(texel) 207
+                              Store 5426 5425
+            5427:         269 Load 271(s1DArray)
+            5428:   53(fvec2) Load 148(c2)
+            5429:   52(float) Load 1393(dPdxy1)
+            5430:   52(float) Load 1393(dPdxy1)
+            5431:   52(float) Load 4311(lodClamp)
+            5432:  7(f16vec4) ImageSampleExplicitLod 5427 5428 Grad ConstOffset MinLod 5429 5430 709 5431
+            5433:  7(f16vec4) Load 5334(texel)
+            5434:  7(f16vec4) FAdd 5433 5432
+                              Store 5334(texel) 5434
+            5435:         269 Load 271(s1DArray)
+            5436:154(f16vec2) Load 156(f16c2)
+            5437:6(float16_t) Load 1401(f16dPdxy1)
+            5438:6(float16_t) Load 1401(f16dPdxy1)
+            5439:6(float16_t) Load 4318(f16lodClamp)
+            5440:  7(f16vec4) ImageSampleExplicitLod 5435 5436 Grad ConstOffset MinLod 5437 5438 709 5439
+            5441:  7(f16vec4) Load 5334(texel)
+            5442:  7(f16vec4) FAdd 5441 5440
+                              Store 5334(texel) 5442
+            5443:         284 Load 286(s2DArray)
+            5444:  167(fvec3) Load 169(c3)
+            5445:   53(fvec2) Load 1409(dPdxy2)
+            5446:   53(fvec2) Load 1409(dPdxy2)
+            5447:   52(float) Load 4311(lodClamp)
+            5448:  7(f16vec4) ImageSampleExplicitLod 5443 5444 Grad ConstOffset MinLod 5445 5446 722 5447
+            5449:  7(f16vec4) Load 5334(texel)
+            5450:  7(f16vec4) FAdd 5449 5448
+                              Store 5334(texel) 5450
+            5451:         284 Load 286(s2DArray)
+            5452:175(f16vec3) Load 177(f16c3)
+            5453:154(f16vec2) Load 1417(f16dPdxy2)
+            5454:154(f16vec2) Load 1417(f16dPdxy2)
+            5455:6(float16_t) Load 4318(f16lodClamp)
+            5456:  7(f16vec4) ImageSampleExplicitLod 5451 5452 Grad ConstOffset MinLod 5453 5454 722 5455
+            5457:  7(f16vec4) Load 5334(texel)
+            5458:  7(f16vec4) FAdd 5457 5456
+                              Store 5334(texel) 5458
+            5459:         316 Load 318(s1DArrayShadow)
+            5460:  167(fvec3) Load 169(c3)
+            5461:   52(float) Load 1393(dPdxy1)
+            5462:   52(float) Load 1393(dPdxy1)
+            5463:   52(float) Load 4311(lodClamp)
+            5464:   52(float) CompositeExtract 5460 2
+            5465:6(float16_t) ImageSampleDrefExplicitLod 5459 5460 5464 Grad ConstOffset MinLod 5461 5462 709 5463
+            5466:    208(ptr) AccessChain 5334(texel) 207
+            5467:6(float16_t) Load 5466
+            5468:6(float16_t) FAdd 5467 5465
+            5469:    208(ptr) AccessChain 5334(texel) 207
+                              Store 5469 5468
+            5470:         316 Load 318(s1DArrayShadow)
+            5471:154(f16vec2) Load 156(f16c2)
+            5472:   52(float) Load 215(compare)
+            5473:6(float16_t) Load 1401(f16dPdxy1)
+            5474:6(float16_t) Load 1401(f16dPdxy1)
+            5475:6(float16_t) Load 4318(f16lodClamp)
+            5476:6(float16_t) ImageSampleDrefExplicitLod 5470 5471 5472 Grad ConstOffset MinLod 5473 5474 709 5475
+            5477:    208(ptr) AccessChain 5334(texel) 207
+            5478:6(float16_t) Load 5477
+            5479:6(float16_t) FAdd 5478 5476
+            5480:    208(ptr) AccessChain 5334(texel) 207
+                              Store 5480 5479
+            5481:         337 Load 339(s2DArrayShadow)
+            5482:  249(fvec4) Load 251(c4)
+            5483:   53(fvec2) Load 1409(dPdxy2)
+            5484:   53(fvec2) Load 1409(dPdxy2)
+            5485:   52(float) Load 4311(lodClamp)
+            5486:   52(float) CompositeExtract 5482 3
+            5487:6(float16_t) ImageSampleDrefExplicitLod 5481 5482 5486 Grad ConstOffset MinLod 5483 5484 722 5485
+            5488:    208(ptr) AccessChain 5334(texel) 207
+            5489:6(float16_t) Load 5488
+            5490:6(float16_t) FAdd 5489 5487
+            5491:    208(ptr) AccessChain 5334(texel) 207
+                              Store 5491 5490
+            5492:         337 Load 339(s2DArrayShadow)
+            5493:175(f16vec3) Load 177(f16c3)
+            5494:   52(float) Load 215(compare)
+            5495:154(f16vec2) Load 1417(f16dPdxy2)
+            5496:154(f16vec2) Load 1417(f16dPdxy2)
+            5497:6(float16_t) Load 4318(f16lodClamp)
+            5498:6(float16_t) ImageSampleDrefExplicitLod 5492 5493 5494 Grad ConstOffset MinLod 5495 5496 722 5497
+            5499:    208(ptr) AccessChain 5334(texel) 207
+            5500:6(float16_t) Load 5499
+            5501:6(float16_t) FAdd 5500 5498
+            5502:    208(ptr) AccessChain 5334(texel) 207
+                              Store 5502 5501
+            5503:  7(f16vec4) Load 5334(texel)
+                              ReturnValue 5503
                               FunctionEnd
 115(testCombinedTextureSampler():  7(f16vec4) Function None 8
              116:             Label
-     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 5462(texel) 207
-                              Store 5555 5554
-            5556:         142 Load 5484(t2D)
-            5557:        5466 Load 5535(sShadow)
-            5558:         224 SampledImage 5556 5557
-            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 5462(texel) 207
-                              Store 5576 5575
-            5577:         183 Load 5518(tCube)
-            5578:        5466 Load 5535(sShadow)
-            5579:         245 SampledImage 5577 5578
-            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:  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 5462(texel) 207
-                              Store 5669 5668
-            5670:         283 Load 5616(t2DArray)
-            5671:        5466 Load 5535(sShadow)
-            5672:         337 SampledImage 5670 5671
-            5673:  249(fvec4) Load 251(c4)
-            5674:   52(float) CompositeExtract 5673 3
-            5675:6(float16_t) ImageSampleDrefImplicitLod 5672 5673 5674
-            5676:    208(ptr) AccessChain 5462(texel) 207
-            5677:6(float16_t) Load 5676
-            5678:6(float16_t) FAdd 5677 5675
-            5679:    208(ptr) AccessChain 5462(texel) 207
-                              Store 5679 5678
-            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:  167(fvec3) Load 169(c3)
-            5710:   52(float) CompositeExtract 5709 2
-            5711:6(float16_t) ImageSampleDrefImplicitLod 5708 5709 5710
-            5712:    208(ptr) AccessChain 5462(texel) 207
-            5713:6(float16_t) Load 5712
-            5714:6(float16_t) FAdd 5713 5711
-            5715:    208(ptr) AccessChain 5462(texel) 207
-                              Store 5715 5714
-            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 5462(texel) 207
-            5723:6(float16_t) Load 5722
-            5724:6(float16_t) FAdd 5723 5721
-            5725:    208(ptr) AccessChain 5462(texel) 207
-                              Store 5725 5724
-            5726:         298 Load 5633(tCubeArray)
-            5727:        5466 Load 5535(sShadow)
-            5728:         391 SampledImage 5726 5727
-            5729:  249(fvec4) Load 251(c4)
-            5730:   52(float) Load 215(compare)
-            5731:6(float16_t) ImageSampleDrefImplicitLod 5728 5729 5730
-            5732:    208(ptr) AccessChain 5462(texel) 207
-            5733:6(float16_t) Load 5732
-            5734:6(float16_t) FAdd 5733 5731
-            5735:    208(ptr) AccessChain 5462(texel) 207
-                              Store 5735 5734
-            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
+     5506(texel):     64(ptr) Variable Function
+                              Store 5506(texel) 121
+            5509:         122 Load 5508(t1D)
+            5513:        5510 Load 5512(s)
+            5514:         123 SampledImage 5509 5513
+            5515:   52(float) Load 128(c1)
+            5516:  7(f16vec4) ImageSampleImplicitLod 5514 5515
+            5517:  7(f16vec4) Load 5506(texel)
+            5518:  7(f16vec4) FAdd 5517 5516
+                              Store 5506(texel) 5518
+            5519:         122 Load 5508(t1D)
+            5520:        5510 Load 5512(s)
+            5521:         123 SampledImage 5519 5520
+            5522:6(float16_t) Load 135(f16c1)
+            5523:6(float16_t) Load 137(f16bias)
+            5524:  7(f16vec4) ImageSampleImplicitLod 5521 5522 Bias 5523
+            5525:  7(f16vec4) Load 5506(texel)
+            5526:  7(f16vec4) FAdd 5525 5524
+                              Store 5506(texel) 5526
+            5529:         142 Load 5528(t2D)
+            5530:        5510 Load 5512(s)
+            5531:         143 SampledImage 5529 5530
+            5532:   53(fvec2) Load 148(c2)
+            5533:  7(f16vec4) ImageSampleImplicitLod 5531 5532
+            5534:  7(f16vec4) Load 5506(texel)
+            5535:  7(f16vec4) FAdd 5534 5533
+                              Store 5506(texel) 5535
+            5536:         142 Load 5528(t2D)
+            5537:        5510 Load 5512(s)
+            5538:         143 SampledImage 5536 5537
+            5539:154(f16vec2) Load 156(f16c2)
+            5540:6(float16_t) Load 137(f16bias)
+            5541:  7(f16vec4) ImageSampleImplicitLod 5538 5539 Bias 5540
+            5542:  7(f16vec4) Load 5506(texel)
+            5543:  7(f16vec4) FAdd 5542 5541
+                              Store 5506(texel) 5543
+            5546:         162 Load 5545(t3D)
+            5547:        5510 Load 5512(s)
+            5548:         163 SampledImage 5546 5547
+            5549:  167(fvec3) Load 169(c3)
+            5550:  7(f16vec4) ImageSampleImplicitLod 5548 5549
+            5551:  7(f16vec4) Load 5506(texel)
+            5552:  7(f16vec4) FAdd 5551 5550
+                              Store 5506(texel) 5552
+            5553:         162 Load 5545(t3D)
+            5554:        5510 Load 5512(s)
+            5555:         163 SampledImage 5553 5554
+            5556:175(f16vec3) Load 177(f16c3)
+            5557:6(float16_t) Load 137(f16bias)
+            5558:  7(f16vec4) ImageSampleImplicitLod 5555 5556 Bias 5557
+            5559:  7(f16vec4) Load 5506(texel)
+            5560:  7(f16vec4) FAdd 5559 5558
+                              Store 5506(texel) 5560
+            5563:         183 Load 5562(tCube)
+            5564:        5510 Load 5512(s)
+            5565:         184 SampledImage 5563 5564
+            5566:  167(fvec3) Load 169(c3)
+            5567:  7(f16vec4) ImageSampleImplicitLod 5565 5566
+            5568:  7(f16vec4) Load 5506(texel)
+            5569:  7(f16vec4) FAdd 5568 5567
+                              Store 5506(texel) 5569
+            5570:         183 Load 5562(tCube)
+            5571:        5510 Load 5512(s)
+            5572:         184 SampledImage 5570 5571
+            5573:175(f16vec3) Load 177(f16c3)
+            5574:6(float16_t) Load 137(f16bias)
+            5575:  7(f16vec4) ImageSampleImplicitLod 5572 5573 Bias 5574
+            5576:  7(f16vec4) Load 5506(texel)
+            5577:  7(f16vec4) FAdd 5576 5575
+                              Store 5506(texel) 5577
+            5578:         122 Load 5508(t1D)
+            5580:        5510 Load 5579(sShadow)
+            5581:         199 SampledImage 5578 5580
+            5582:  167(fvec3) Load 169(c3)
+            5583:   52(float) CompositeExtract 5582 2
+            5584:6(float16_t) ImageSampleDrefImplicitLod 5581 5582 5583
+            5585:    208(ptr) AccessChain 5506(texel) 207
+            5586:6(float16_t) Load 5585
+            5587:6(float16_t) FAdd 5586 5584
+            5588:    208(ptr) AccessChain 5506(texel) 207
+                              Store 5588 5587
+            5589:         122 Load 5508(t1D)
+            5590:        5510 Load 5579(sShadow)
+            5591:         199 SampledImage 5589 5590
+            5592:154(f16vec2) Load 156(f16c2)
+            5593:   52(float) Load 215(compare)
+            5594:6(float16_t) Load 137(f16bias)
+            5595:6(float16_t) ImageSampleDrefImplicitLod 5591 5592 5593 Bias 5594
+            5596:    208(ptr) AccessChain 5506(texel) 207
+            5597:6(float16_t) Load 5596
+            5598:6(float16_t) FAdd 5597 5595
+            5599:    208(ptr) AccessChain 5506(texel) 207
+                              Store 5599 5598
+            5600:         142 Load 5528(t2D)
+            5601:        5510 Load 5579(sShadow)
+            5602:         224 SampledImage 5600 5601
+            5603:  167(fvec3) Load 169(c3)
+            5604:   52(float) CompositeExtract 5603 2
+            5605:6(float16_t) ImageSampleDrefImplicitLod 5602 5603 5604
+            5606:    208(ptr) AccessChain 5506(texel) 207
+            5607:6(float16_t) Load 5606
+            5608:6(float16_t) FAdd 5607 5605
+            5609:    208(ptr) AccessChain 5506(texel) 207
+                              Store 5609 5608
+            5610:         142 Load 5528(t2D)
+            5611:        5510 Load 5579(sShadow)
+            5612:         224 SampledImage 5610 5611
+            5613:154(f16vec2) Load 156(f16c2)
+            5614:   52(float) Load 215(compare)
+            5615:6(float16_t) Load 137(f16bias)
+            5616:6(float16_t) ImageSampleDrefImplicitLod 5612 5613 5614 Bias 5615
+            5617:    208(ptr) AccessChain 5506(texel) 207
+            5618:6(float16_t) Load 5617
+            5619:6(float16_t) FAdd 5618 5616
+            5620:    208(ptr) AccessChain 5506(texel) 207
+                              Store 5620 5619
+            5621:         183 Load 5562(tCube)
+            5622:        5510 Load 5579(sShadow)
+            5623:         245 SampledImage 5621 5622
+            5624:  249(fvec4) Load 251(c4)
+            5625:   52(float) CompositeExtract 5624 3
+            5626:6(float16_t) ImageSampleDrefImplicitLod 5623 5624 5625
+            5627:    208(ptr) AccessChain 5506(texel) 207
+            5628:6(float16_t) Load 5627
+            5629:6(float16_t) FAdd 5628 5626
+            5630:    208(ptr) AccessChain 5506(texel) 207
+                              Store 5630 5629
+            5631:         183 Load 5562(tCube)
+            5632:        5510 Load 5579(sShadow)
+            5633:         245 SampledImage 5631 5632
+            5634:175(f16vec3) Load 177(f16c3)
+            5635:   52(float) Load 215(compare)
+            5636:6(float16_t) Load 137(f16bias)
+            5637:6(float16_t) ImageSampleDrefImplicitLod 5633 5634 5635 Bias 5636
+            5638:    208(ptr) AccessChain 5506(texel) 207
+            5639:6(float16_t) Load 5638
+            5640:6(float16_t) FAdd 5639 5637
+            5641:    208(ptr) AccessChain 5506(texel) 207
+                              Store 5641 5640
+            5644:         268 Load 5643(t1DArray)
+            5645:        5510 Load 5512(s)
+            5646:         269 SampledImage 5644 5645
+            5647:   53(fvec2) Load 148(c2)
+            5648:  7(f16vec4) ImageSampleImplicitLod 5646 5647
+            5649:  7(f16vec4) Load 5506(texel)
+            5650:  7(f16vec4) FAdd 5649 5648
+                              Store 5506(texel) 5650
+            5651:         268 Load 5643(t1DArray)
+            5652:        5510 Load 5512(s)
+            5653:         269 SampledImage 5651 5652
+            5654:154(f16vec2) Load 156(f16c2)
+            5655:6(float16_t) Load 137(f16bias)
+            5656:  7(f16vec4) ImageSampleImplicitLod 5653 5654 Bias 5655
+            5657:  7(f16vec4) Load 5506(texel)
+            5658:  7(f16vec4) FAdd 5657 5656
+                              Store 5506(texel) 5658
+            5661:         283 Load 5660(t2DArray)
+            5662:        5510 Load 5512(s)
+            5663:         284 SampledImage 5661 5662
+            5664:  167(fvec3) Load 169(c3)
+            5665:  7(f16vec4) ImageSampleImplicitLod 5663 5664
+            5666:  7(f16vec4) Load 5506(texel)
+            5667:  7(f16vec4) FAdd 5666 5665
+                              Store 5506(texel) 5667
+            5668:         283 Load 5660(t2DArray)
+            5669:        5510 Load 5512(s)
+            5670:         284 SampledImage 5668 5669
+            5671:175(f16vec3) Load 177(f16c3)
+            5672:6(float16_t) Load 137(f16bias)
+            5673:  7(f16vec4) ImageSampleImplicitLod 5670 5671 Bias 5672
+            5674:  7(f16vec4) Load 5506(texel)
+            5675:  7(f16vec4) FAdd 5674 5673
+                              Store 5506(texel) 5675
+            5678:         298 Load 5677(tCubeArray)
+            5679:        5510 Load 5512(s)
+            5680:         299 SampledImage 5678 5679
+            5681:  249(fvec4) Load 251(c4)
+            5682:  7(f16vec4) ImageSampleImplicitLod 5680 5681
+            5683:  7(f16vec4) Load 5506(texel)
+            5684:  7(f16vec4) FAdd 5683 5682
+                              Store 5506(texel) 5684
+            5685:         298 Load 5677(tCubeArray)
+            5686:        5510 Load 5512(s)
+            5687:         299 SampledImage 5685 5686
+            5688:  7(f16vec4) Load 309(f16c4)
+            5689:6(float16_t) Load 137(f16bias)
+            5690:  7(f16vec4) ImageSampleImplicitLod 5687 5688 Bias 5689
+            5691:  7(f16vec4) Load 5506(texel)
+            5692:  7(f16vec4) FAdd 5691 5690
+                              Store 5506(texel) 5692
+            5693:         268 Load 5643(t1DArray)
+            5694:        5510 Load 5579(sShadow)
+            5695:         316 SampledImage 5693 5694
+            5696:  167(fvec3) Load 169(c3)
+            5697:   52(float) CompositeExtract 5696 2
+            5698:6(float16_t) ImageSampleDrefImplicitLod 5695 5696 5697
+            5699:    208(ptr) AccessChain 5506(texel) 207
+            5700:6(float16_t) Load 5699
+            5701:6(float16_t) FAdd 5700 5698
+            5702:    208(ptr) AccessChain 5506(texel) 207
+                              Store 5702 5701
+            5703:         268 Load 5643(t1DArray)
+            5704:        5510 Load 5579(sShadow)
+            5705:         316 SampledImage 5703 5704
+            5706:154(f16vec2) Load 156(f16c2)
+            5707:   52(float) Load 215(compare)
+            5708:6(float16_t) Load 137(f16bias)
+            5709:6(float16_t) ImageSampleDrefImplicitLod 5705 5706 5707 Bias 5708
+            5710:    208(ptr) AccessChain 5506(texel) 207
+            5711:6(float16_t) Load 5710
+            5712:6(float16_t) FAdd 5711 5709
+            5713:    208(ptr) AccessChain 5506(texel) 207
+                              Store 5713 5712
+            5714:         283 Load 5660(t2DArray)
+            5715:        5510 Load 5579(sShadow)
+            5716:         337 SampledImage 5714 5715
+            5717:  249(fvec4) Load 251(c4)
+            5718:   52(float) CompositeExtract 5717 3
+            5719:6(float16_t) ImageSampleDrefImplicitLod 5716 5717 5718
+            5720:    208(ptr) AccessChain 5506(texel) 207
+            5721:6(float16_t) Load 5720
+            5722:6(float16_t) FAdd 5721 5719
+            5723:    208(ptr) AccessChain 5506(texel) 207
+                              Store 5723 5722
+            5724:         283 Load 5660(t2DArray)
+            5725:        5510 Load 5579(sShadow)
+            5726:         337 SampledImage 5724 5725
+            5727:175(f16vec3) Load 177(f16c3)
+            5728:   52(float) Load 215(compare)
+            5729:6(float16_t) ImageSampleDrefImplicitLod 5726 5727 5728
+            5730:    208(ptr) AccessChain 5506(texel) 207
+            5731:6(float16_t) Load 5730
+            5732:6(float16_t) FAdd 5731 5729
+            5733:    208(ptr) AccessChain 5506(texel) 207
+                              Store 5733 5732
+            5736:         356 Load 5735(t2DRect)
+            5737:        5510 Load 5512(s)
+            5738:         357 SampledImage 5736 5737
+            5739:   53(fvec2) Load 148(c2)
+            5740:  7(f16vec4) ImageSampleImplicitLod 5738 5739
+            5741:  7(f16vec4) Load 5506(texel)
+            5742:  7(f16vec4) FAdd 5741 5740
+                              Store 5506(texel) 5742
+            5743:         356 Load 5735(t2DRect)
+            5744:        5510 Load 5512(s)
+            5745:         357 SampledImage 5743 5744
+            5746:154(f16vec2) Load 156(f16c2)
+            5747:  7(f16vec4) ImageSampleImplicitLod 5745 5746
+            5748:  7(f16vec4) Load 5506(texel)
+            5749:  7(f16vec4) FAdd 5748 5747
+                              Store 5506(texel) 5749
+            5750:         356 Load 5735(t2DRect)
+            5751:        5510 Load 5579(sShadow)
+            5752:         371 SampledImage 5750 5751
+            5753:  167(fvec3) Load 169(c3)
+            5754:   52(float) CompositeExtract 5753 2
+            5755:6(float16_t) ImageSampleDrefImplicitLod 5752 5753 5754
+            5756:    208(ptr) AccessChain 5506(texel) 207
+            5757:6(float16_t) Load 5756
+            5758:6(float16_t) FAdd 5757 5755
+            5759:    208(ptr) AccessChain 5506(texel) 207
+                              Store 5759 5758
+            5760:         356 Load 5735(t2DRect)
+            5761:        5510 Load 5579(sShadow)
+            5762:         371 SampledImage 5760 5761
+            5763:154(f16vec2) Load 156(f16c2)
+            5764:   52(float) Load 215(compare)
+            5765:6(float16_t) ImageSampleDrefImplicitLod 5762 5763 5764
+            5766:    208(ptr) AccessChain 5506(texel) 207
+            5767:6(float16_t) Load 5766
+            5768:6(float16_t) FAdd 5767 5765
+            5769:    208(ptr) AccessChain 5506(texel) 207
+                              Store 5769 5768
+            5770:         298 Load 5677(tCubeArray)
+            5771:        5510 Load 5579(sShadow)
+            5772:         391 SampledImage 5770 5771
+            5773:  249(fvec4) Load 251(c4)
+            5774:   52(float) Load 215(compare)
+            5775:6(float16_t) ImageSampleDrefImplicitLod 5772 5773 5774
+            5776:    208(ptr) AccessChain 5506(texel) 207
+            5777:6(float16_t) Load 5776
+            5778:6(float16_t) FAdd 5777 5775
+            5779:    208(ptr) AccessChain 5506(texel) 207
+                              Store 5779 5778
+            5780:         298 Load 5677(tCubeArray)
+            5781:        5510 Load 5579(sShadow)
+            5782:         391 SampledImage 5780 5781
+            5783:  7(f16vec4) Load 309(f16c4)
+            5784:   52(float) Load 215(compare)
+            5785:6(float16_t) ImageSampleDrefImplicitLod 5782 5783 5784
+            5786:    208(ptr) AccessChain 5506(texel) 207
+            5787:6(float16_t) Load 5786
+            5788:6(float16_t) FAdd 5787 5785
+            5789:    208(ptr) AccessChain 5506(texel) 207
+                              Store 5789 5788
+            5790:  7(f16vec4) Load 5506(texel)
+                              ReturnValue 5790
                               FunctionEnd
 117(testSubpassLoad():  7(f16vec4) Function None 8
              118:             Label
-            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
+            5796:        5793 Load 5795(subpass)
+            5798:  7(f16vec4) ImageRead 5796 5797
+            5802:        5799 Load 5801(subpassMS)
+            5803:  7(f16vec4) ImageRead 5802 5797 Sample 1326
+            5804:  7(f16vec4) FAdd 5798 5803
+                              ReturnValue 5804
                               FunctionEnd
diff --git a/Test/baseResults/spv.float32.frag.out b/Test/baseResults/spv.float32.frag.out
index df73497..2ffa231 100644
--- a/Test/baseResults/spv.float32.frag.out
+++ b/Test/baseResults/spv.float32.frag.out
@@ -1,7 +1,7 @@
 spv.float32.frag
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 533
+// Id's are bound by 541
 
                               Capability Shader
                               Capability Float16
@@ -83,52 +83,52 @@
                               Name 451  "f32v2"
                               Name 469  "f32v"
                               Name 471  "if32v"
-                              Name 520  "S"
-                              MemberName 520(S) 0  "x"
-                              MemberName 520(S) 1  "y"
-                              MemberName 520(S) 2  "z"
-                              Name 522  "B1"
-                              MemberName 522(B1) 0  "a"
-                              MemberName 522(B1) 1  "b"
-                              MemberName 522(B1) 2  "c"
-                              MemberName 522(B1) 3  "d"
-                              MemberName 522(B1) 4  "e"
-                              MemberName 522(B1) 5  "f"
-                              MemberName 522(B1) 6  "g"
-                              MemberName 522(B1) 7  "h"
-                              Name 524  ""
-                              Name 525  "sf16"
-                              Name 526  "sf"
-                              Name 527  "sd"
-                              Name 528  "f16_to_f"
-                              Name 530  "f16_to_d"
-                              Name 531  "f_to_f16"
-                              Name 532  "d_to_f16"
+                              Name 528  "S"
+                              MemberName 528(S) 0  "x"
+                              MemberName 528(S) 1  "y"
+                              MemberName 528(S) 2  "z"
+                              Name 530  "B1"
+                              MemberName 530(B1) 0  "a"
+                              MemberName 530(B1) 1  "b"
+                              MemberName 530(B1) 2  "c"
+                              MemberName 530(B1) 3  "d"
+                              MemberName 530(B1) 4  "e"
+                              MemberName 530(B1) 5  "f"
+                              MemberName 530(B1) 6  "g"
+                              MemberName 530(B1) 7  "h"
+                              Name 532  ""
+                              Name 533  "sf16"
+                              Name 534  "sf"
+                              Name 535  "sd"
+                              Name 536  "f16_to_f"
+                              Name 538  "f16_to_d"
+                              Name 539  "f_to_f16"
+                              Name 540  "d_to_f16"
                               Decorate 471(if32v) Location 0
-                              Decorate 518 ArrayStride 16
-                              Decorate 519 ArrayStride 32
-                              MemberDecorate 520(S) 0 Offset 0
-                              MemberDecorate 520(S) 1 Offset 8
-                              MemberDecorate 520(S) 2 Offset 16
-                              Decorate 521 ArrayStride 32
-                              MemberDecorate 522(B1) 0 Offset 0
-                              MemberDecorate 522(B1) 1 Offset 8
-                              MemberDecorate 522(B1) 2 Offset 16
-                              MemberDecorate 522(B1) 3 Offset 32
-                              MemberDecorate 522(B1) 4 ColMajor
-                              MemberDecorate 522(B1) 4 Offset 64
-                              MemberDecorate 522(B1) 4 MatrixStride 16
-                              MemberDecorate 522(B1) 5 ColMajor
-                              MemberDecorate 522(B1) 5 Offset 96
-                              MemberDecorate 522(B1) 5 MatrixStride 16
-                              MemberDecorate 522(B1) 6 Offset 160
-                              MemberDecorate 522(B1) 7 Offset 192
-                              Decorate 522(B1) Block
-                              Decorate 524 DescriptorSet 0
-                              Decorate 524 Binding 0
-                              Decorate 525(sf16) SpecId 100
-                              Decorate 526(sf) SpecId 101
-                              Decorate 527(sd) SpecId 102
+                              Decorate 526 ArrayStride 16
+                              Decorate 527 ArrayStride 32
+                              MemberDecorate 528(S) 0 Offset 0
+                              MemberDecorate 528(S) 1 Offset 8
+                              MemberDecorate 528(S) 2 Offset 16
+                              Decorate 529 ArrayStride 32
+                              MemberDecorate 530(B1) 0 Offset 0
+                              MemberDecorate 530(B1) 1 Offset 8
+                              MemberDecorate 530(B1) 2 Offset 16
+                              MemberDecorate 530(B1) 3 Offset 32
+                              MemberDecorate 530(B1) 4 ColMajor
+                              MemberDecorate 530(B1) 4 Offset 64
+                              MemberDecorate 530(B1) 4 MatrixStride 16
+                              MemberDecorate 530(B1) 5 ColMajor
+                              MemberDecorate 530(B1) 5 Offset 96
+                              MemberDecorate 530(B1) 5 MatrixStride 16
+                              MemberDecorate 530(B1) 6 Offset 160
+                              MemberDecorate 530(B1) 7 Offset 192
+                              Decorate 530(B1) Block
+                              Decorate 532 DescriptorSet 0
+                              Decorate 532 Binding 0
+                              Decorate 533(sf16) SpecId 100
+                              Decorate 534(sf) SpecId 101
+                              Decorate 535(sd) SpecId 102
                2:             TypeVoid
                3:             TypeFunction 2
               26:             TypeFloat 32
@@ -197,25 +197,25 @@
              470:             TypePointer Input 153(fvec3)
       471(if32v):    470(ptr) Variable Input
              472:             TypePointer Input 26(float)
-             509:    192(int) Constant 1
-             514:   26(float) Constant 1056964608
-             515:   27(fvec2) ConstantComposite 514 514
-             517:     31(int) Constant 2
-             518:             TypeArray 26(float) 517
-             519:             TypeArray 412 517
-          520(S):             TypeStruct 26(float) 27(fvec2) 153(fvec3)
-             521:             TypeArray 520(S) 517
-         522(B1):             TypeStruct 26(float) 27(fvec2) 153(fvec3) 518 412 519 520(S) 521
-             523:             TypePointer Uniform 522(B1)
-             524:    523(ptr) Variable Uniform
-       525(sf16):172(float16_t) SpecConstant 12288
-         526(sf):   26(float) SpecConstant 1048576000
-         527(sd):149(float64_t) SpecConstant 0 1071644672
-   528(f16_to_f):   26(float) SpecConstantOp 115 525(sf16)
-             529:   26(float) SpecConstantOp 115 525(sf16)
-   530(f16_to_d):149(float64_t) SpecConstantOp 115 529
-   531(f_to_f16):172(float16_t) SpecConstantOp 115 526(sf)
-   532(d_to_f16):172(float16_t) SpecConstantOp 115 527(sd)
+             515:    192(int) Constant 1
+             522:   26(float) Constant 1056964608
+             523:   27(fvec2) ConstantComposite 522 522
+             525:     31(int) Constant 2
+             526:             TypeArray 26(float) 525
+             527:             TypeArray 412 525
+          528(S):             TypeStruct 26(float) 27(fvec2) 153(fvec3)
+             529:             TypeArray 528(S) 525
+         530(B1):             TypeStruct 26(float) 27(fvec2) 153(fvec3) 526 412 527 528(S) 529
+             531:             TypePointer Uniform 530(B1)
+             532:    531(ptr) Variable Uniform
+       533(sf16):172(float16_t) SpecConstant 12288
+         534(sf):   26(float) SpecConstant 1048576000
+         535(sd):149(float64_t) SpecConstant 0 1071644672
+   536(f16_to_f):   26(float) SpecConstantOp 115 533(sf16)
+             537:   26(float) SpecConstantOp 115 533(sf16)
+   538(f16_to_d):149(float64_t) SpecConstantOp 115 537
+   539(f_to_f16):172(float16_t) SpecConstantOp 115 534(sf)
+   540(d_to_f16):172(float16_t) SpecConstantOp 115 535(sd)
          4(main):           2 Function None 3
                5:             Label
                               Return
@@ -765,45 +765,57 @@
              481:  153(fvec3) Load 471(if32v)
              482:   27(fvec2) VectorShuffle 481 481 0 1
              483:   27(fvec2) DPdxFine 482
-             484:  153(fvec3) Load 469(f32v)
-             485:  153(fvec3) VectorShuffle 484 483 3 4 2
-                              Store 469(f32v) 485
-             486:  153(fvec3) Load 471(if32v)
-             487:   27(fvec2) VectorShuffle 486 486 0 1
-             488:   27(fvec2) DPdyFine 487
-             489:  153(fvec3) Load 469(f32v)
-             490:  153(fvec3) VectorShuffle 489 488 3 4 2
-                              Store 469(f32v) 490
-             491:  153(fvec3) Load 471(if32v)
-             492:  153(fvec3) DPdxCoarse 491
-                              Store 469(f32v) 492
-             493:  153(fvec3) Load 471(if32v)
-             494:  153(fvec3) DPdxCoarse 493
-                              Store 469(f32v) 494
-             495:    472(ptr) AccessChain 471(if32v) 32
-             496:   26(float) Load 495
-             497:   26(float) Fwidth 496
-             498:     33(ptr) AccessChain 469(f32v) 32
-                              Store 498 497
-             499:  153(fvec3) Load 471(if32v)
-             500:   27(fvec2) VectorShuffle 499 499 0 1
-             501:   27(fvec2) FwidthFine 500
-             502:  153(fvec3) Load 469(f32v)
-             503:  153(fvec3) VectorShuffle 502 501 3 4 2
-                              Store 469(f32v) 503
-             504:  153(fvec3) Load 471(if32v)
-             505:  153(fvec3) FwidthCoarse 504
-                              Store 469(f32v) 505
-             506:    472(ptr) AccessChain 471(if32v) 32
-             507:   26(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 506
-             508:     33(ptr) AccessChain 469(f32v) 32
-                              Store 508 507
-             510:  153(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 471(if32v) 509
-             511:   27(fvec2) VectorShuffle 510 510 0 1
-             512:  153(fvec3) Load 469(f32v)
-             513:  153(fvec3) VectorShuffle 512 511 3 4 2
-                              Store 469(f32v) 513
-             516:  153(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 471(if32v) 515
-                              Store 469(f32v) 516
+             484:     33(ptr) AccessChain 469(f32v) 32
+             485:   26(float) CompositeExtract 483 0
+                              Store 484 485
+             486:     33(ptr) AccessChain 469(f32v) 88
+             487:   26(float) CompositeExtract 483 1
+                              Store 486 487
+             488:  153(fvec3) Load 471(if32v)
+             489:   27(fvec2) VectorShuffle 488 488 0 1
+             490:   27(fvec2) DPdyFine 489
+             491:     33(ptr) AccessChain 469(f32v) 32
+             492:   26(float) CompositeExtract 490 0
+                              Store 491 492
+             493:     33(ptr) AccessChain 469(f32v) 88
+             494:   26(float) CompositeExtract 490 1
+                              Store 493 494
+             495:  153(fvec3) Load 471(if32v)
+             496:  153(fvec3) DPdxCoarse 495
+                              Store 469(f32v) 496
+             497:  153(fvec3) Load 471(if32v)
+             498:  153(fvec3) DPdxCoarse 497
+                              Store 469(f32v) 498
+             499:    472(ptr) AccessChain 471(if32v) 32
+             500:   26(float) Load 499
+             501:   26(float) Fwidth 500
+             502:     33(ptr) AccessChain 469(f32v) 32
+                              Store 502 501
+             503:  153(fvec3) Load 471(if32v)
+             504:   27(fvec2) VectorShuffle 503 503 0 1
+             505:   27(fvec2) FwidthFine 504
+             506:     33(ptr) AccessChain 469(f32v) 32
+             507:   26(float) CompositeExtract 505 0
+                              Store 506 507
+             508:     33(ptr) AccessChain 469(f32v) 88
+             509:   26(float) CompositeExtract 505 1
+                              Store 508 509
+             510:  153(fvec3) Load 471(if32v)
+             511:  153(fvec3) FwidthCoarse 510
+                              Store 469(f32v) 511
+             512:    472(ptr) AccessChain 471(if32v) 32
+             513:   26(float) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 512
+             514:     33(ptr) AccessChain 469(f32v) 32
+                              Store 514 513
+             516:  153(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 471(if32v) 515
+             517:   27(fvec2) VectorShuffle 516 516 0 1
+             518:     33(ptr) AccessChain 469(f32v) 32
+             519:   26(float) CompositeExtract 517 0
+                              Store 518 519
+             520:     33(ptr) AccessChain 469(f32v) 88
+             521:   26(float) CompositeExtract 517 1
+                              Store 520 521
+             524:  153(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 471(if32v) 523
+                              Store 469(f32v) 524
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.float64.frag.out b/Test/baseResults/spv.float64.frag.out
index 8a69367..cd5f80d 100644
--- a/Test/baseResults/spv.float64.frag.out
+++ b/Test/baseResults/spv.float64.frag.out
@@ -2,7 +2,7 @@
 Validation failed
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 524
+// Id's are bound by 485
 
                               Capability Shader
                               Capability Float16
@@ -14,7 +14,7 @@
                               Capability InterpolationFunction
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 461
+                              EntryPoint Fragment 4  "main" 414
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 450
                               SourceExtension  "GL_EXT_shader_explicit_arithmetic_types"
@@ -29,770 +29,710 @@
                               Name 6  "literal("
                               Name 8  "operators("
                               Name 10  "typeCast("
-                              Name 12  "builtinAngleTrigFuncs("
-                              Name 14  "builtinExpFuncs("
-                              Name 16  "builtinCommonFuncs("
-                              Name 18  "builtinGeometryFuncs("
-                              Name 20  "builtinMatrixFuncs("
-                              Name 22  "builtinVecRelFuncs("
-                              Name 24  "builtinFragProcFuncs("
-                              Name 29  "f64v"
-                              Name 40  "f64v"
-                              Name 62  "f64m"
-                              Name 85  "f64"
-                              Name 109  "b"
-                              Name 151  "f64v"
-                              Name 154  "bv"
-                              Name 165  "f16v"
-                              Name 173  "i8v"
-                              Name 179  "i16v"
-                              Name 185  "i32v"
-                              Name 191  "i64v"
-                              Name 197  "u8v"
-                              Name 203  "u16v"
-                              Name 208  "u32v"
-                              Name 214  "u64v"
-                              Name 219  "f64v2"
-                              Name 220  "f64v1"
-                              Name 252  "f64v2"
-                              Name 253  "f64v1"
-                              Name 269  "f64v2"
-                              Name 270  "f64v1"
-                              Name 291  "f64"
-                              Name 295  "f64v3"
-                              Name 335  "bv"
-                              Name 356  "b"
-                              Name 366  "iv"
-                              Name 367  "ResType"
-                              Name 374  "f64"
-                              Name 375  "f64v1"
-                              Name 379  "f64v2"
-                              Name 385  "f64v3"
-                              Name 404  "f64m3"
-                              Name 405  "f64m1"
-                              Name 407  "f64m2"
-                              Name 416  "f64v1"
-                              Name 418  "f64v2"
-                              Name 423  "f64m4"
-                              Name 426  "f64"
-                              Name 429  "f64m5"
-                              Name 434  "f64m6"
-                              Name 435  "f64m7"
-                              Name 438  "bv"
-                              Name 439  "f64v1"
-                              Name 441  "f64v2"
-                              Name 459  "f64v"
-                              Name 461  "if64v"
-                              Name 510  "S"
-                              MemberName 510(S) 0  "x"
-                              MemberName 510(S) 1  "y"
-                              MemberName 510(S) 2  "z"
-                              Name 512  "B1"
-                              MemberName 512(B1) 0  "a"
-                              MemberName 512(B1) 1  "b"
-                              MemberName 512(B1) 2  "c"
-                              MemberName 512(B1) 3  "d"
-                              MemberName 512(B1) 4  "e"
-                              MemberName 512(B1) 5  "f"
-                              MemberName 512(B1) 6  "g"
-                              MemberName 512(B1) 7  "h"
-                              Name 514  ""
-                              Name 515  "sf16"
-                              Name 517  "sf"
-                              Name 518  "sd"
-                              Name 519  "f16_to_f"
-                              Name 521  "f16_to_d"
-                              Name 522  "f_to_f16"
-                              Name 523  "d_to_f16"
-                              Decorate 461(if64v) Flat
-                              Decorate 461(if64v) Location 0
-                              Decorate 508 ArrayStride 16
-                              Decorate 509 ArrayStride 64
-                              MemberDecorate 510(S) 0 Offset 0
-                              MemberDecorate 510(S) 1 Offset 16
-                              MemberDecorate 510(S) 2 Offset 32
-                              Decorate 511 ArrayStride 64
-                              MemberDecorate 512(B1) 0 Offset 0
-                              MemberDecorate 512(B1) 1 Offset 16
-                              MemberDecorate 512(B1) 2 Offset 32
-                              MemberDecorate 512(B1) 3 Offset 64
-                              MemberDecorate 512(B1) 4 ColMajor
-                              MemberDecorate 512(B1) 4 Offset 96
-                              MemberDecorate 512(B1) 4 MatrixStride 32
-                              MemberDecorate 512(B1) 5 ColMajor
-                              MemberDecorate 512(B1) 5 Offset 160
-                              MemberDecorate 512(B1) 5 MatrixStride 32
-                              MemberDecorate 512(B1) 6 Offset 288
-                              MemberDecorate 512(B1) 7 Offset 352
-                              Decorate 512(B1) Block
-                              Decorate 514 DescriptorSet 0
-                              Decorate 514 Binding 0
-                              Decorate 515(sf16) SpecId 100
-                              Decorate 517(sf) SpecId 101
-                              Decorate 518(sd) SpecId 102
+                              Name 12  "builtinTranscendentalFuncs("
+                              Name 14  "builtinCommonFuncs("
+                              Name 16  "builtinGeometryFuncs("
+                              Name 18  "builtinMatrixFuncs("
+                              Name 20  "builtinVecRelFuncs("
+                              Name 22  "builtinFragProcFuncs("
+                              Name 27  "f64v"
+                              Name 38  "f64v"
+                              Name 60  "f64m"
+                              Name 83  "f64"
+                              Name 107  "b"
+                              Name 149  "f64v"
+                              Name 152  "bv"
+                              Name 163  "f16v"
+                              Name 171  "i8v"
+                              Name 177  "i16v"
+                              Name 183  "i32v"
+                              Name 189  "i64v"
+                              Name 195  "u8v"
+                              Name 201  "u16v"
+                              Name 206  "u32v"
+                              Name 212  "u64v"
+                              Name 215  "f64v2"
+                              Name 216  "f64v1"
+                              Name 221  "f64v2"
+                              Name 222  "f64v1"
+                              Name 243  "f64"
+                              Name 247  "f64v3"
+                              Name 287  "bv"
+                              Name 308  "b"
+                              Name 318  "iv"
+                              Name 319  "ResType"
+                              Name 326  "f64"
+                              Name 327  "f64v1"
+                              Name 331  "f64v2"
+                              Name 337  "f64v3"
+                              Name 356  "f64m3"
+                              Name 357  "f64m1"
+                              Name 359  "f64m2"
+                              Name 368  "f64v1"
+                              Name 370  "f64v2"
+                              Name 375  "f64m4"
+                              Name 378  "f64"
+                              Name 381  "f64m5"
+                              Name 387  "f64m6"
+                              Name 388  "f64m7"
+                              Name 391  "bv"
+                              Name 392  "f64v1"
+                              Name 394  "f64v2"
+                              Name 412  "f64v"
+                              Name 414  "if64v"
+                              Name 471  "S"
+                              MemberName 471(S) 0  "x"
+                              MemberName 471(S) 1  "y"
+                              MemberName 471(S) 2  "z"
+                              Name 473  "B1"
+                              MemberName 473(B1) 0  "a"
+                              MemberName 473(B1) 1  "b"
+                              MemberName 473(B1) 2  "c"
+                              MemberName 473(B1) 3  "d"
+                              MemberName 473(B1) 4  "e"
+                              MemberName 473(B1) 5  "f"
+                              MemberName 473(B1) 6  "g"
+                              MemberName 473(B1) 7  "h"
+                              Name 475  ""
+                              Name 476  "sf16"
+                              Name 478  "sf"
+                              Name 479  "sd"
+                              Name 480  "f16_to_f"
+                              Name 482  "f16_to_d"
+                              Name 483  "f_to_f16"
+                              Name 484  "d_to_f16"
+                              Decorate 414(if64v) Flat
+                              Decorate 414(if64v) Location 0
+                              Decorate 469 ArrayStride 16
+                              Decorate 470 ArrayStride 64
+                              MemberDecorate 471(S) 0 Offset 0
+                              MemberDecorate 471(S) 1 Offset 16
+                              MemberDecorate 471(S) 2 Offset 32
+                              Decorate 472 ArrayStride 64
+                              MemberDecorate 473(B1) 0 Offset 0
+                              MemberDecorate 473(B1) 1 Offset 16
+                              MemberDecorate 473(B1) 2 Offset 32
+                              MemberDecorate 473(B1) 3 Offset 64
+                              MemberDecorate 473(B1) 4 ColMajor
+                              MemberDecorate 473(B1) 4 Offset 96
+                              MemberDecorate 473(B1) 4 MatrixStride 32
+                              MemberDecorate 473(B1) 5 ColMajor
+                              MemberDecorate 473(B1) 5 Offset 160
+                              MemberDecorate 473(B1) 5 MatrixStride 32
+                              MemberDecorate 473(B1) 6 Offset 288
+                              MemberDecorate 473(B1) 7 Offset 352
+                              Decorate 473(B1) Block
+                              Decorate 475 DescriptorSet 0
+                              Decorate 475 Binding 0
+                              Decorate 476(sf16) SpecId 100
+                              Decorate 478(sf) SpecId 101
+                              Decorate 479(sd) SpecId 102
                2:             TypeVoid
                3:             TypeFunction 2
-              26:             TypeFloat 64
-              27:             TypeVector 26(float64_t) 2
-              28:             TypePointer Function 27(f64vec2)
-              30:26(float64_t) Constant 2696277389 1051772663
-              31:             TypeInt 32 0
-              32:     31(int) Constant 0
-              33:             TypePointer Function 26(float64_t)
-              35:26(float64_t) Constant 0 3218079744
-              36:26(float64_t) Constant 3951369912 1067366481
-              37: 27(f64vec2) ConstantComposite 35 36
-              54:26(float64_t) Constant 0 1072693248
-              60:             TypeMatrix 27(f64vec2) 2
-              61:             TypePointer Function 60
-              88:     31(int) Constant 1
-             107:             TypeBool
-             108:             TypePointer Function 107(bool)
-             149:             TypeVector 26(float64_t) 3
-             150:             TypePointer Function 149(f64vec3)
-             152:             TypeVector 107(bool) 3
-             153:             TypePointer Function 152(bvec3)
-             156:26(float64_t) Constant 0 0
-             157:149(f64vec3) ConstantComposite 156 156 156
-             158:149(f64vec3) ConstantComposite 54 54 54
-             162:             TypeFloat 16
-             163:             TypeVector 162(float16_t) 3
-             164:             TypePointer Function 163(f16vec3)
-             170:             TypeInt 8 1
-             171:             TypeVector 170(int8_t) 3
-             172:             TypePointer Function 171(i8vec3)
-             176:             TypeInt 16 1
-             177:             TypeVector 176(int16_t) 3
-             178:             TypePointer Function 177(i16vec3)
-             182:             TypeInt 32 1
-             183:             TypeVector 182(int) 3
-             184:             TypePointer Function 183(ivec3)
-             188:             TypeInt 64 1
-             189:             TypeVector 188(int64_t) 3
-             190:             TypePointer Function 189(i64vec3)
-             194:             TypeInt 8 0
-             195:             TypeVector 194(int8_t) 3
-             196:             TypePointer Function 195(i8vec3)
-             200:             TypeInt 16 0
-             201:             TypeVector 200(int16_t) 3
-             202:             TypePointer Function 201(i16vec3)
-             206:             TypeVector 31(int) 3
-             207:             TypePointer Function 206(ivec3)
-             211:             TypeInt 64 0
-             212:             TypeVector 211(int64_t) 3
-             213:             TypePointer Function 212(i64vec3)
-             217:             TypeVector 26(float64_t) 4
-             218:             TypePointer Function 217(f64vec4)
-    367(ResType):             TypeStruct 149(f64vec3) 183(ivec3)
-             402:             TypeMatrix 149(f64vec3) 2
-             403:             TypePointer Function 402
-             421:             TypeMatrix 27(f64vec2) 3
-             422:             TypePointer Function 421
-             427:             TypeMatrix 149(f64vec3) 3
-             428:             TypePointer Function 427
-             432:             TypeMatrix 217(f64vec4) 4
-             433:             TypePointer Function 432
-             460:             TypePointer Input 149(f64vec3)
-      461(if64v):    460(ptr) Variable Input
-             462:             TypePointer Input 26(float64_t)
-             499:    182(int) Constant 1
-             504:26(float64_t) Constant 0 1071644672
-             505: 27(f64vec2) ConstantComposite 504 504
-             507:     31(int) Constant 2
-             508:             TypeArray 26(float64_t) 507
-             509:             TypeArray 402 507
-          510(S):             TypeStruct 26(float64_t) 27(f64vec2) 149(f64vec3)
-             511:             TypeArray 510(S) 507
-         512(B1):             TypeStruct 26(float64_t) 27(f64vec2) 149(f64vec3) 508 402 509 510(S) 511
-             513:             TypePointer Uniform 512(B1)
-             514:    513(ptr) Variable Uniform
-       515(sf16):162(float16_t) SpecConstant 12288
-             516:             TypeFloat 32
-         517(sf):  516(float) SpecConstant 1048576000
-         518(sd):26(float64_t) SpecConstant 0 1071644672
-   519(f16_to_f):  516(float) SpecConstantOp 115 515(sf16)
-             520:  516(float) SpecConstantOp 115 515(sf16)
-   521(f16_to_d):26(float64_t) SpecConstantOp 115 520
-   522(f_to_f16):162(float16_t) SpecConstantOp 115 517(sf)
-   523(d_to_f16):162(float16_t) SpecConstantOp 115 518(sd)
+              24:             TypeFloat 64
+              25:             TypeVector 24(float64_t) 2
+              26:             TypePointer Function 25(f64vec2)
+              28:24(float64_t) Constant 2696277389 1051772663
+              29:             TypeInt 32 0
+              30:     29(int) Constant 0
+              31:             TypePointer Function 24(float64_t)
+              33:24(float64_t) Constant 0 3218079744
+              34:24(float64_t) Constant 3951369912 1067366481
+              35: 25(f64vec2) ConstantComposite 33 34
+              52:24(float64_t) Constant 0 1072693248
+              58:             TypeMatrix 25(f64vec2) 2
+              59:             TypePointer Function 58
+              86:     29(int) Constant 1
+             105:             TypeBool
+             106:             TypePointer Function 105(bool)
+             147:             TypeVector 24(float64_t) 3
+             148:             TypePointer Function 147(f64vec3)
+             150:             TypeVector 105(bool) 3
+             151:             TypePointer Function 150(bvec3)
+             154:24(float64_t) Constant 0 0
+             155:147(f64vec3) ConstantComposite 154 154 154
+             156:147(f64vec3) ConstantComposite 52 52 52
+             160:             TypeFloat 16
+             161:             TypeVector 160(float16_t) 3
+             162:             TypePointer Function 161(f16vec3)
+             168:             TypeInt 8 1
+             169:             TypeVector 168(int8_t) 3
+             170:             TypePointer Function 169(i8vec3)
+             174:             TypeInt 16 1
+             175:             TypeVector 174(int16_t) 3
+             176:             TypePointer Function 175(i16vec3)
+             180:             TypeInt 32 1
+             181:             TypeVector 180(int) 3
+             182:             TypePointer Function 181(ivec3)
+             186:             TypeInt 64 1
+             187:             TypeVector 186(int64_t) 3
+             188:             TypePointer Function 187(i64vec3)
+             192:             TypeInt 8 0
+             193:             TypeVector 192(int8_t) 3
+             194:             TypePointer Function 193(i8vec3)
+             198:             TypeInt 16 0
+             199:             TypeVector 198(int16_t) 3
+             200:             TypePointer Function 199(i16vec3)
+             204:             TypeVector 29(int) 3
+             205:             TypePointer Function 204(ivec3)
+             209:             TypeInt 64 0
+             210:             TypeVector 209(int64_t) 3
+             211:             TypePointer Function 210(i64vec3)
+    319(ResType):             TypeStruct 147(f64vec3) 181(ivec3)
+             354:             TypeMatrix 147(f64vec3) 2
+             355:             TypePointer Function 354
+             373:             TypeMatrix 25(f64vec2) 3
+             374:             TypePointer Function 373
+             379:             TypeMatrix 147(f64vec3) 3
+             380:             TypePointer Function 379
+             384:             TypeVector 24(float64_t) 4
+             385:             TypeMatrix 384(f64vec4) 4
+             386:             TypePointer Function 385
+             413:             TypePointer Input 147(f64vec3)
+      414(if64v):    413(ptr) Variable Input
+             415:             TypePointer Input 24(float64_t)
+             458:    180(int) Constant 1
+             465:24(float64_t) Constant 0 1071644672
+             466: 25(f64vec2) ConstantComposite 465 465
+             468:     29(int) Constant 2
+             469:             TypeArray 24(float64_t) 468
+             470:             TypeArray 354 468
+          471(S):             TypeStruct 24(float64_t) 25(f64vec2) 147(f64vec3)
+             472:             TypeArray 471(S) 468
+         473(B1):             TypeStruct 24(float64_t) 25(f64vec2) 147(f64vec3) 469 354 470 471(S) 472
+             474:             TypePointer Uniform 473(B1)
+             475:    474(ptr) Variable Uniform
+       476(sf16):160(float16_t) SpecConstant 12288
+             477:             TypeFloat 32
+         478(sf):  477(float) SpecConstant 1048576000
+         479(sd):24(float64_t) SpecConstant 0 1071644672
+   480(f16_to_f):  477(float) SpecConstantOp 115 476(sf16)
+             481:  477(float) SpecConstantOp 115 476(sf16)
+   482(f16_to_d):24(float64_t) SpecConstantOp 115 481
+   483(f_to_f16):160(float16_t) SpecConstantOp 115 478(sf)
+   484(d_to_f16):160(float16_t) SpecConstantOp 115 479(sd)
          4(main):           2 Function None 3
                5:             Label
                               Return
                               FunctionEnd
      6(literal():           2 Function None 3
                7:             Label
-        29(f64v):     28(ptr) Variable Function
-              34:     33(ptr) AccessChain 29(f64v) 32
-                              Store 34 30
-              38: 27(f64vec2) Load 29(f64v)
-              39: 27(f64vec2) FAdd 38 37
-                              Store 29(f64v) 39
+        27(f64v):     26(ptr) Variable Function
+              32:     31(ptr) AccessChain 27(f64v) 30
+                              Store 32 28
+              36: 25(f64vec2) Load 27(f64v)
+              37: 25(f64vec2) FAdd 36 35
+                              Store 27(f64v) 37
                               Return
                               FunctionEnd
    8(operators():           2 Function None 3
                9:             Label
-        40(f64v):     28(ptr) Variable Function
-        62(f64m):     61(ptr) Variable Function
-         85(f64):     33(ptr) Variable Function
-          109(b):    108(ptr) Variable Function
-              41: 27(f64vec2) Load 40(f64v)
-              42: 27(f64vec2) Load 40(f64v)
-              43: 27(f64vec2) FAdd 42 41
-                              Store 40(f64v) 43
-              44: 27(f64vec2) Load 40(f64v)
-              45: 27(f64vec2) Load 40(f64v)
-              46: 27(f64vec2) FSub 45 44
-                              Store 40(f64v) 46
-              47: 27(f64vec2) Load 40(f64v)
-              48: 27(f64vec2) Load 40(f64v)
-              49: 27(f64vec2) FMul 48 47
-                              Store 40(f64v) 49
-              50: 27(f64vec2) Load 40(f64v)
-              51: 27(f64vec2) Load 40(f64v)
-              52: 27(f64vec2) FDiv 51 50
-                              Store 40(f64v) 52
-              53: 27(f64vec2) Load 40(f64v)
-              55: 27(f64vec2) CompositeConstruct 54 54
-              56: 27(f64vec2) FAdd 53 55
-                              Store 40(f64v) 56
-              57: 27(f64vec2) Load 40(f64v)
-              58: 27(f64vec2) CompositeConstruct 54 54
-              59: 27(f64vec2) FSub 57 58
-                              Store 40(f64v) 59
-              63:          60 Load 62(f64m)
-              64: 27(f64vec2) CompositeConstruct 54 54
-              65: 27(f64vec2) CompositeExtract 63 0
-              66: 27(f64vec2) FAdd 65 64
-              67: 27(f64vec2) CompositeExtract 63 1
-              68: 27(f64vec2) FAdd 67 64
-              69:          60 CompositeConstruct 66 68
-                              Store 62(f64m) 69
-              70:          60 Load 62(f64m)
-              71: 27(f64vec2) CompositeConstruct 54 54
-              72: 27(f64vec2) CompositeExtract 70 0
-              73: 27(f64vec2) FSub 72 71
-              74: 27(f64vec2) CompositeExtract 70 1
-              75: 27(f64vec2) FSub 74 71
-              76:          60 CompositeConstruct 73 75
-                              Store 62(f64m) 76
-              77: 27(f64vec2) Load 40(f64v)
-              78: 27(f64vec2) FNegate 77
-                              Store 40(f64v) 78
-              79:          60 Load 62(f64m)
-              80: 27(f64vec2) CompositeExtract 79 0
-              81: 27(f64vec2) FNegate 80
-              82: 27(f64vec2) CompositeExtract 79 1
-              83: 27(f64vec2) FNegate 82
-              84:          60 CompositeConstruct 81 83
-                              Store 62(f64m) 84
-              86:     33(ptr) AccessChain 40(f64v) 32
-              87:26(float64_t) Load 86
-              89:     33(ptr) AccessChain 40(f64v) 88
-              90:26(float64_t) Load 89
-              91:26(float64_t) FAdd 87 90
-                              Store 85(f64) 91
-              92:     33(ptr) AccessChain 40(f64v) 32
-              93:26(float64_t) Load 92
-              94:     33(ptr) AccessChain 40(f64v) 88
-              95:26(float64_t) Load 94
-              96:26(float64_t) FSub 93 95
-                              Store 85(f64) 96
-              97:     33(ptr) AccessChain 40(f64v) 32
-              98:26(float64_t) Load 97
-              99:     33(ptr) AccessChain 40(f64v) 88
-             100:26(float64_t) Load 99
-             101:26(float64_t) FMul 98 100
-                              Store 85(f64) 101
-             102:     33(ptr) AccessChain 40(f64v) 32
-             103:26(float64_t) Load 102
-             104:     33(ptr) AccessChain 40(f64v) 88
-             105:26(float64_t) Load 104
-             106:26(float64_t) FDiv 103 105
-                              Store 85(f64) 106
-             110:     33(ptr) AccessChain 40(f64v) 32
-             111:26(float64_t) Load 110
-             112:26(float64_t) Load 85(f64)
-             113:   107(bool) FUnordNotEqual 111 112
-                              Store 109(b) 113
-             114:     33(ptr) AccessChain 40(f64v) 88
-             115:26(float64_t) Load 114
-             116:26(float64_t) Load 85(f64)
-             117:   107(bool) FOrdEqual 115 116
-                              Store 109(b) 117
-             118:     33(ptr) AccessChain 40(f64v) 32
-             119:26(float64_t) Load 118
-             120:26(float64_t) Load 85(f64)
-             121:   107(bool) FOrdGreaterThan 119 120
-                              Store 109(b) 121
-             122:     33(ptr) AccessChain 40(f64v) 88
-             123:26(float64_t) Load 122
-             124:26(float64_t) Load 85(f64)
-             125:   107(bool) FOrdLessThan 123 124
-                              Store 109(b) 125
-             126:     33(ptr) AccessChain 40(f64v) 32
-             127:26(float64_t) Load 126
-             128:26(float64_t) Load 85(f64)
-             129:   107(bool) FOrdGreaterThanEqual 127 128
-                              Store 109(b) 129
-             130:     33(ptr) AccessChain 40(f64v) 88
-             131:26(float64_t) Load 130
-             132:26(float64_t) Load 85(f64)
-             133:   107(bool) FOrdLessThanEqual 131 132
-                              Store 109(b) 133
-             134: 27(f64vec2) Load 40(f64v)
-             135:26(float64_t) Load 85(f64)
-             136: 27(f64vec2) VectorTimesScalar 134 135
-                              Store 40(f64v) 136
-             137:          60 Load 62(f64m)
-             138:26(float64_t) Load 85(f64)
-             139:          60 MatrixTimesScalar 137 138
-                              Store 62(f64m) 139
-             140:          60 Load 62(f64m)
-             141: 27(f64vec2) Load 40(f64v)
-             142: 27(f64vec2) MatrixTimesVector 140 141
-                              Store 40(f64v) 142
-             143: 27(f64vec2) Load 40(f64v)
-             144:          60 Load 62(f64m)
-             145: 27(f64vec2) VectorTimesMatrix 143 144
-                              Store 40(f64v) 145
-             146:          60 Load 62(f64m)
-             147:          60 Load 62(f64m)
-             148:          60 MatrixTimesMatrix 146 147
-                              Store 62(f64m) 148
+        38(f64v):     26(ptr) Variable Function
+        60(f64m):     59(ptr) Variable Function
+         83(f64):     31(ptr) Variable Function
+          107(b):    106(ptr) Variable Function
+              39: 25(f64vec2) Load 38(f64v)
+              40: 25(f64vec2) Load 38(f64v)
+              41: 25(f64vec2) FAdd 40 39
+                              Store 38(f64v) 41
+              42: 25(f64vec2) Load 38(f64v)
+              43: 25(f64vec2) Load 38(f64v)
+              44: 25(f64vec2) FSub 43 42
+                              Store 38(f64v) 44
+              45: 25(f64vec2) Load 38(f64v)
+              46: 25(f64vec2) Load 38(f64v)
+              47: 25(f64vec2) FMul 46 45
+                              Store 38(f64v) 47
+              48: 25(f64vec2) Load 38(f64v)
+              49: 25(f64vec2) Load 38(f64v)
+              50: 25(f64vec2) FDiv 49 48
+                              Store 38(f64v) 50
+              51: 25(f64vec2) Load 38(f64v)
+              53: 25(f64vec2) CompositeConstruct 52 52
+              54: 25(f64vec2) FAdd 51 53
+                              Store 38(f64v) 54
+              55: 25(f64vec2) Load 38(f64v)
+              56: 25(f64vec2) CompositeConstruct 52 52
+              57: 25(f64vec2) FSub 55 56
+                              Store 38(f64v) 57
+              61:          58 Load 60(f64m)
+              62: 25(f64vec2) CompositeConstruct 52 52
+              63: 25(f64vec2) CompositeExtract 61 0
+              64: 25(f64vec2) FAdd 63 62
+              65: 25(f64vec2) CompositeExtract 61 1
+              66: 25(f64vec2) FAdd 65 62
+              67:          58 CompositeConstruct 64 66
+                              Store 60(f64m) 67
+              68:          58 Load 60(f64m)
+              69: 25(f64vec2) CompositeConstruct 52 52
+              70: 25(f64vec2) CompositeExtract 68 0
+              71: 25(f64vec2) FSub 70 69
+              72: 25(f64vec2) CompositeExtract 68 1
+              73: 25(f64vec2) FSub 72 69
+              74:          58 CompositeConstruct 71 73
+                              Store 60(f64m) 74
+              75: 25(f64vec2) Load 38(f64v)
+              76: 25(f64vec2) FNegate 75
+                              Store 38(f64v) 76
+              77:          58 Load 60(f64m)
+              78: 25(f64vec2) CompositeExtract 77 0
+              79: 25(f64vec2) FNegate 78
+              80: 25(f64vec2) CompositeExtract 77 1
+              81: 25(f64vec2) FNegate 80
+              82:          58 CompositeConstruct 79 81
+                              Store 60(f64m) 82
+              84:     31(ptr) AccessChain 38(f64v) 30
+              85:24(float64_t) Load 84
+              87:     31(ptr) AccessChain 38(f64v) 86
+              88:24(float64_t) Load 87
+              89:24(float64_t) FAdd 85 88
+                              Store 83(f64) 89
+              90:     31(ptr) AccessChain 38(f64v) 30
+              91:24(float64_t) Load 90
+              92:     31(ptr) AccessChain 38(f64v) 86
+              93:24(float64_t) Load 92
+              94:24(float64_t) FSub 91 93
+                              Store 83(f64) 94
+              95:     31(ptr) AccessChain 38(f64v) 30
+              96:24(float64_t) Load 95
+              97:     31(ptr) AccessChain 38(f64v) 86
+              98:24(float64_t) Load 97
+              99:24(float64_t) FMul 96 98
+                              Store 83(f64) 99
+             100:     31(ptr) AccessChain 38(f64v) 30
+             101:24(float64_t) Load 100
+             102:     31(ptr) AccessChain 38(f64v) 86
+             103:24(float64_t) Load 102
+             104:24(float64_t) FDiv 101 103
+                              Store 83(f64) 104
+             108:     31(ptr) AccessChain 38(f64v) 30
+             109:24(float64_t) Load 108
+             110:24(float64_t) Load 83(f64)
+             111:   105(bool) FUnordNotEqual 109 110
+                              Store 107(b) 111
+             112:     31(ptr) AccessChain 38(f64v) 86
+             113:24(float64_t) Load 112
+             114:24(float64_t) Load 83(f64)
+             115:   105(bool) FOrdEqual 113 114
+                              Store 107(b) 115
+             116:     31(ptr) AccessChain 38(f64v) 30
+             117:24(float64_t) Load 116
+             118:24(float64_t) Load 83(f64)
+             119:   105(bool) FOrdGreaterThan 117 118
+                              Store 107(b) 119
+             120:     31(ptr) AccessChain 38(f64v) 86
+             121:24(float64_t) Load 120
+             122:24(float64_t) Load 83(f64)
+             123:   105(bool) FOrdLessThan 121 122
+                              Store 107(b) 123
+             124:     31(ptr) AccessChain 38(f64v) 30
+             125:24(float64_t) Load 124
+             126:24(float64_t) Load 83(f64)
+             127:   105(bool) FOrdGreaterThanEqual 125 126
+                              Store 107(b) 127
+             128:     31(ptr) AccessChain 38(f64v) 86
+             129:24(float64_t) Load 128
+             130:24(float64_t) Load 83(f64)
+             131:   105(bool) FOrdLessThanEqual 129 130
+                              Store 107(b) 131
+             132: 25(f64vec2) Load 38(f64v)
+             133:24(float64_t) Load 83(f64)
+             134: 25(f64vec2) VectorTimesScalar 132 133
+                              Store 38(f64v) 134
+             135:          58 Load 60(f64m)
+             136:24(float64_t) Load 83(f64)
+             137:          58 MatrixTimesScalar 135 136
+                              Store 60(f64m) 137
+             138:          58 Load 60(f64m)
+             139: 25(f64vec2) Load 38(f64v)
+             140: 25(f64vec2) MatrixTimesVector 138 139
+                              Store 38(f64v) 140
+             141: 25(f64vec2) Load 38(f64v)
+             142:          58 Load 60(f64m)
+             143: 25(f64vec2) VectorTimesMatrix 141 142
+                              Store 38(f64v) 143
+             144:          58 Load 60(f64m)
+             145:          58 Load 60(f64m)
+             146:          58 MatrixTimesMatrix 144 145
+                              Store 60(f64m) 146
                               Return
                               FunctionEnd
    10(typeCast():           2 Function None 3
               11:             Label
-       151(f64v):    150(ptr) Variable Function
-         154(bv):    153(ptr) Variable Function
-       165(f16v):    164(ptr) Variable Function
-        173(i8v):    172(ptr) Variable Function
-       179(i16v):    178(ptr) Variable Function
-       185(i32v):    184(ptr) Variable Function
-       191(i64v):    190(ptr) Variable Function
-        197(u8v):    196(ptr) Variable Function
-       203(u16v):    202(ptr) Variable Function
-       208(u32v):    207(ptr) Variable Function
-       214(u64v):    213(ptr) Variable Function
-             155:  152(bvec3) Load 154(bv)
-             159:149(f64vec3) Select 155 158 157
-                              Store 151(f64v) 159
-             160:149(f64vec3) Load 151(f64v)
-             161:  152(bvec3) FUnordNotEqual 160 157
-                              Store 154(bv) 161
-             166:163(f16vec3) Load 165(f16v)
-             167:149(f64vec3) FConvert 166
-                              Store 151(f64v) 167
-             168:149(f64vec3) Load 151(f64v)
-             169:163(f16vec3) FConvert 168
-                              Store 165(f16v) 169
-             174:149(f64vec3) Load 151(f64v)
-             175: 171(i8vec3) ConvertFToS 174
-                              Store 173(i8v) 175
-             180:149(f64vec3) Load 151(f64v)
-             181:177(i16vec3) ConvertFToS 180
-                              Store 179(i16v) 181
-             186:149(f64vec3) Load 151(f64v)
-             187:  183(ivec3) ConvertFToS 186
-                              Store 185(i32v) 187
-             192:149(f64vec3) Load 151(f64v)
-             193:189(i64vec3) ConvertFToS 192
-                              Store 191(i64v) 193
-             198:149(f64vec3) Load 151(f64v)
-             199: 195(i8vec3) ConvertFToU 198
-                              Store 197(u8v) 199
-             204:149(f64vec3) Load 151(f64v)
-             205:201(i16vec3) ConvertFToU 204
-                              Store 203(u16v) 205
-             209:149(f64vec3) Load 151(f64v)
-             210:  206(ivec3) ConvertFToU 209
-                              Store 208(u32v) 210
-             215:149(f64vec3) Load 151(f64v)
-             216:212(i64vec3) ConvertFToU 215
-                              Store 214(u64v) 216
+       149(f64v):    148(ptr) Variable Function
+         152(bv):    151(ptr) Variable Function
+       163(f16v):    162(ptr) Variable Function
+        171(i8v):    170(ptr) Variable Function
+       177(i16v):    176(ptr) Variable Function
+       183(i32v):    182(ptr) Variable Function
+       189(i64v):    188(ptr) Variable Function
+        195(u8v):    194(ptr) Variable Function
+       201(u16v):    200(ptr) Variable Function
+       206(u32v):    205(ptr) Variable Function
+       212(u64v):    211(ptr) Variable Function
+             153:  150(bvec3) Load 152(bv)
+             157:147(f64vec3) Select 153 156 155
+                              Store 149(f64v) 157
+             158:147(f64vec3) Load 149(f64v)
+             159:  150(bvec3) FUnordNotEqual 158 155
+                              Store 152(bv) 159
+             164:161(f16vec3) Load 163(f16v)
+             165:147(f64vec3) FConvert 164
+                              Store 149(f64v) 165
+             166:147(f64vec3) Load 149(f64v)
+             167:161(f16vec3) FConvert 166
+                              Store 163(f16v) 167
+             172:147(f64vec3) Load 149(f64v)
+             173: 169(i8vec3) ConvertFToS 172
+                              Store 171(i8v) 173
+             178:147(f64vec3) Load 149(f64v)
+             179:175(i16vec3) ConvertFToS 178
+                              Store 177(i16v) 179
+             184:147(f64vec3) Load 149(f64v)
+             185:  181(ivec3) ConvertFToS 184
+                              Store 183(i32v) 185
+             190:147(f64vec3) Load 149(f64v)
+             191:187(i64vec3) ConvertFToS 190
+                              Store 189(i64v) 191
+             196:147(f64vec3) Load 149(f64v)
+             197: 193(i8vec3) ConvertFToU 196
+                              Store 195(u8v) 197
+             202:147(f64vec3) Load 149(f64v)
+             203:199(i16vec3) ConvertFToU 202
+                              Store 201(u16v) 203
+             207:147(f64vec3) Load 149(f64v)
+             208:  204(ivec3) ConvertFToU 207
+                              Store 206(u32v) 208
+             213:147(f64vec3) Load 149(f64v)
+             214:210(i64vec3) ConvertFToU 213
+                              Store 212(u64v) 214
                               Return
                               FunctionEnd
-12(builtinAngleTrigFuncs():           2 Function None 3
+12(builtinTranscendentalFuncs():           2 Function None 3
               13:             Label
-      219(f64v2):    218(ptr) Variable Function
-      220(f64v1):    218(ptr) Variable Function
-             221:217(f64vec4) Load 220(f64v1)
-             222:217(f64vec4) ExtInst 1(GLSL.std.450) 11(Radians) 221
-                              Store 219(f64v2) 222
-             223:217(f64vec4) Load 220(f64v1)
-             224:217(f64vec4) ExtInst 1(GLSL.std.450) 12(Degrees) 223
-                              Store 219(f64v2) 224
-             225:217(f64vec4) Load 220(f64v1)
-             226:217(f64vec4) ExtInst 1(GLSL.std.450) 13(Sin) 225
-                              Store 219(f64v2) 226
-             227:217(f64vec4) Load 220(f64v1)
-             228:217(f64vec4) ExtInst 1(GLSL.std.450) 14(Cos) 227
-                              Store 219(f64v2) 228
-             229:217(f64vec4) Load 220(f64v1)
-             230:217(f64vec4) ExtInst 1(GLSL.std.450) 15(Tan) 229
-                              Store 219(f64v2) 230
-             231:217(f64vec4) Load 220(f64v1)
-             232:217(f64vec4) ExtInst 1(GLSL.std.450) 16(Asin) 231
-                              Store 219(f64v2) 232
-             233:217(f64vec4) Load 220(f64v1)
-             234:217(f64vec4) ExtInst 1(GLSL.std.450) 17(Acos) 233
-                              Store 219(f64v2) 234
-             235:217(f64vec4) Load 220(f64v1)
-             236:217(f64vec4) Load 219(f64v2)
-             237:217(f64vec4) ExtInst 1(GLSL.std.450) 25(Atan2) 235 236
-                              Store 219(f64v2) 237
-             238:217(f64vec4) Load 220(f64v1)
-             239:217(f64vec4) ExtInst 1(GLSL.std.450) 18(Atan) 238
-                              Store 219(f64v2) 239
-             240:217(f64vec4) Load 220(f64v1)
-             241:217(f64vec4) ExtInst 1(GLSL.std.450) 19(Sinh) 240
-                              Store 219(f64v2) 241
-             242:217(f64vec4) Load 220(f64v1)
-             243:217(f64vec4) ExtInst 1(GLSL.std.450) 20(Cosh) 242
-                              Store 219(f64v2) 243
-             244:217(f64vec4) Load 220(f64v1)
-             245:217(f64vec4) ExtInst 1(GLSL.std.450) 21(Tanh) 244
-                              Store 219(f64v2) 245
-             246:217(f64vec4) Load 220(f64v1)
-             247:217(f64vec4) ExtInst 1(GLSL.std.450) 22(Asinh) 246
-                              Store 219(f64v2) 247
-             248:217(f64vec4) Load 220(f64v1)
-             249:217(f64vec4) ExtInst 1(GLSL.std.450) 23(Acosh) 248
-                              Store 219(f64v2) 249
-             250:217(f64vec4) Load 220(f64v1)
-             251:217(f64vec4) ExtInst 1(GLSL.std.450) 24(Atanh) 250
-                              Store 219(f64v2) 251
+      215(f64v2):     26(ptr) Variable Function
+      216(f64v1):     26(ptr) Variable Function
+             217: 25(f64vec2) Load 216(f64v1)
+             218: 25(f64vec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 217
+                              Store 215(f64v2) 218
+             219: 25(f64vec2) Load 216(f64v1)
+             220: 25(f64vec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 219
+                              Store 215(f64v2) 220
                               Return
                               FunctionEnd
-14(builtinExpFuncs():           2 Function None 3
+14(builtinCommonFuncs():           2 Function None 3
               15:             Label
-      252(f64v2):     28(ptr) Variable Function
-      253(f64v1):     28(ptr) Variable Function
-             254: 27(f64vec2) Load 253(f64v1)
-             255: 27(f64vec2) Load 252(f64v2)
-             256: 27(f64vec2) ExtInst 1(GLSL.std.450) 26(Pow) 254 255
-                              Store 252(f64v2) 256
-             257: 27(f64vec2) Load 253(f64v1)
-             258: 27(f64vec2) ExtInst 1(GLSL.std.450) 27(Exp) 257
-                              Store 252(f64v2) 258
-             259: 27(f64vec2) Load 253(f64v1)
-             260: 27(f64vec2) ExtInst 1(GLSL.std.450) 28(Log) 259
-                              Store 252(f64v2) 260
-             261: 27(f64vec2) Load 253(f64v1)
-             262: 27(f64vec2) ExtInst 1(GLSL.std.450) 29(Exp2) 261
-                              Store 252(f64v2) 262
-             263: 27(f64vec2) Load 253(f64v1)
-             264: 27(f64vec2) ExtInst 1(GLSL.std.450) 30(Log2) 263
-                              Store 252(f64v2) 264
-             265: 27(f64vec2) Load 253(f64v1)
-             266: 27(f64vec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 265
-                              Store 252(f64v2) 266
-             267: 27(f64vec2) Load 253(f64v1)
-             268: 27(f64vec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 267
-                              Store 252(f64v2) 268
+      221(f64v2):    148(ptr) Variable Function
+      222(f64v1):    148(ptr) Variable Function
+        243(f64):     31(ptr) Variable Function
+      247(f64v3):    148(ptr) Variable Function
+         287(bv):    151(ptr) Variable Function
+          308(b):    106(ptr) Variable Function
+         318(iv):    182(ptr) Variable Function
+             223:147(f64vec3) Load 222(f64v1)
+             224:147(f64vec3) ExtInst 1(GLSL.std.450) 4(FAbs) 223
+                              Store 221(f64v2) 224
+             225:147(f64vec3) Load 222(f64v1)
+             226:147(f64vec3) ExtInst 1(GLSL.std.450) 6(FSign) 225
+                              Store 221(f64v2) 226
+             227:147(f64vec3) Load 222(f64v1)
+             228:147(f64vec3) ExtInst 1(GLSL.std.450) 8(Floor) 227
+                              Store 221(f64v2) 228
+             229:147(f64vec3) Load 222(f64v1)
+             230:147(f64vec3) ExtInst 1(GLSL.std.450) 3(Trunc) 229
+                              Store 221(f64v2) 230
+             231:147(f64vec3) Load 222(f64v1)
+             232:147(f64vec3) ExtInst 1(GLSL.std.450) 1(Round) 231
+                              Store 221(f64v2) 232
+             233:147(f64vec3) Load 222(f64v1)
+             234:147(f64vec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 233
+                              Store 221(f64v2) 234
+             235:147(f64vec3) Load 222(f64v1)
+             236:147(f64vec3) ExtInst 1(GLSL.std.450) 9(Ceil) 235
+                              Store 221(f64v2) 236
+             237:147(f64vec3) Load 222(f64v1)
+             238:147(f64vec3) ExtInst 1(GLSL.std.450) 10(Fract) 237
+                              Store 221(f64v2) 238
+             239:147(f64vec3) Load 222(f64v1)
+             240:147(f64vec3) Load 221(f64v2)
+             241:147(f64vec3) FMod 239 240
+                              Store 221(f64v2) 241
+             242:147(f64vec3) Load 222(f64v1)
+             244:24(float64_t) Load 243(f64)
+             245:147(f64vec3) CompositeConstruct 244 244 244
+             246:147(f64vec3) FMod 242 245
+                              Store 221(f64v2) 246
+             248:147(f64vec3) Load 222(f64v1)
+             249:147(f64vec3) ExtInst 1(GLSL.std.450) 35(Modf) 248 221(f64v2)
+                              Store 247(f64v3) 249
+             250:147(f64vec3) Load 222(f64v1)
+             251:147(f64vec3) Load 221(f64v2)
+             252:147(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 250 251
+                              Store 247(f64v3) 252
+             253:147(f64vec3) Load 222(f64v1)
+             254:24(float64_t) Load 243(f64)
+             255:147(f64vec3) CompositeConstruct 254 254 254
+             256:147(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 253 255
+                              Store 247(f64v3) 256
+             257:147(f64vec3) Load 222(f64v1)
+             258:147(f64vec3) Load 221(f64v2)
+             259:147(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 257 258
+                              Store 247(f64v3) 259
+             260:147(f64vec3) Load 222(f64v1)
+             261:24(float64_t) Load 243(f64)
+             262:147(f64vec3) CompositeConstruct 261 261 261
+             263:147(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 260 262
+                              Store 247(f64v3) 263
+             264:147(f64vec3) Load 222(f64v1)
+             265:24(float64_t) Load 243(f64)
+             266:     31(ptr) AccessChain 221(f64v2) 30
+             267:24(float64_t) Load 266
+             268:147(f64vec3) CompositeConstruct 265 265 265
+             269:147(f64vec3) CompositeConstruct 267 267 267
+             270:147(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 264 268 269
+                              Store 247(f64v3) 270
+             271:147(f64vec3) Load 222(f64v1)
+             272:147(f64vec3) Load 221(f64v2)
+             273:24(float64_t) Load 243(f64)
+             274:147(f64vec3) CompositeConstruct 273 273 273
+             275:147(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 271 272 274
+                              Store 247(f64v3) 275
+             276:147(f64vec3) Load 222(f64v1)
+             277:147(f64vec3) Load 221(f64v2)
+             278:24(float64_t) Load 243(f64)
+             279:147(f64vec3) CompositeConstruct 278 278 278
+             280:147(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 276 277 279
+                              Store 247(f64v3) 280
+             281:147(f64vec3) Load 222(f64v1)
+             282:147(f64vec3) Load 221(f64v2)
+             283:147(f64vec3) Load 247(f64v3)
+             284:147(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 281 282 283
+                              Store 247(f64v3) 284
+             285:147(f64vec3) Load 222(f64v1)
+             286:147(f64vec3) Load 221(f64v2)
+             288:  150(bvec3) Load 287(bv)
+             289:147(f64vec3) Select 288 286 285
+                              Store 247(f64v3) 289
+             290:147(f64vec3) Load 222(f64v1)
+             291:147(f64vec3) Load 221(f64v2)
+             292:147(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 290 291
+                              Store 247(f64v3) 292
+             293:24(float64_t) Load 243(f64)
+             294:147(f64vec3) Load 247(f64v3)
+             295:147(f64vec3) CompositeConstruct 293 293 293
+             296:147(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 295 294
+                              Store 247(f64v3) 296
+             297:147(f64vec3) Load 222(f64v1)
+             298:147(f64vec3) Load 221(f64v2)
+             299:147(f64vec3) Load 247(f64v3)
+             300:147(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 297 298 299
+                              Store 247(f64v3) 300
+             301:24(float64_t) Load 243(f64)
+             302:     31(ptr) AccessChain 222(f64v1) 30
+             303:24(float64_t) Load 302
+             304:147(f64vec3) Load 221(f64v2)
+             305:147(f64vec3) CompositeConstruct 301 301 301
+             306:147(f64vec3) CompositeConstruct 303 303 303
+             307:147(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 305 306 304
+                              Store 247(f64v3) 307
+             309:24(float64_t) Load 243(f64)
+             310:   105(bool) IsNan 309
+                              Store 308(b) 310
+             311:147(f64vec3) Load 222(f64v1)
+             312:  150(bvec3) IsInf 311
+                              Store 287(bv) 312
+             313:147(f64vec3) Load 222(f64v1)
+             314:147(f64vec3) Load 221(f64v2)
+             315:147(f64vec3) Load 247(f64v3)
+             316:147(f64vec3) ExtInst 1(GLSL.std.450) 50(Fma) 313 314 315
+                              Store 247(f64v3) 316
+             317:147(f64vec3) Load 222(f64v1)
+             320:319(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 317
+             321:  181(ivec3) CompositeExtract 320 1
+                              Store 318(iv) 321
+             322:147(f64vec3) CompositeExtract 320 0
+                              Store 221(f64v2) 322
+             323:147(f64vec3) Load 222(f64v1)
+             324:  181(ivec3) Load 318(iv)
+             325:147(f64vec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 323 324
+                              Store 221(f64v2) 325
                               Return
                               FunctionEnd
-16(builtinCommonFuncs():           2 Function None 3
+16(builtinGeometryFuncs():           2 Function None 3
               17:             Label
-      269(f64v2):    150(ptr) Variable Function
-      270(f64v1):    150(ptr) Variable Function
-        291(f64):     33(ptr) Variable Function
-      295(f64v3):    150(ptr) Variable Function
-         335(bv):    153(ptr) Variable Function
-          356(b):    108(ptr) Variable Function
-         366(iv):    184(ptr) Variable Function
-             271:149(f64vec3) Load 270(f64v1)
-             272:149(f64vec3) ExtInst 1(GLSL.std.450) 4(FAbs) 271
-                              Store 269(f64v2) 272
-             273:149(f64vec3) Load 270(f64v1)
-             274:149(f64vec3) ExtInst 1(GLSL.std.450) 6(FSign) 273
-                              Store 269(f64v2) 274
-             275:149(f64vec3) Load 270(f64v1)
-             276:149(f64vec3) ExtInst 1(GLSL.std.450) 8(Floor) 275
-                              Store 269(f64v2) 276
-             277:149(f64vec3) Load 270(f64v1)
-             278:149(f64vec3) ExtInst 1(GLSL.std.450) 3(Trunc) 277
-                              Store 269(f64v2) 278
-             279:149(f64vec3) Load 270(f64v1)
-             280:149(f64vec3) ExtInst 1(GLSL.std.450) 1(Round) 279
-                              Store 269(f64v2) 280
-             281:149(f64vec3) Load 270(f64v1)
-             282:149(f64vec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 281
-                              Store 269(f64v2) 282
-             283:149(f64vec3) Load 270(f64v1)
-             284:149(f64vec3) ExtInst 1(GLSL.std.450) 9(Ceil) 283
-                              Store 269(f64v2) 284
-             285:149(f64vec3) Load 270(f64v1)
-             286:149(f64vec3) ExtInst 1(GLSL.std.450) 10(Fract) 285
-                              Store 269(f64v2) 286
-             287:149(f64vec3) Load 270(f64v1)
-             288:149(f64vec3) Load 269(f64v2)
-             289:149(f64vec3) FMod 287 288
-                              Store 269(f64v2) 289
-             290:149(f64vec3) Load 270(f64v1)
-             292:26(float64_t) Load 291(f64)
-             293:149(f64vec3) CompositeConstruct 292 292 292
-             294:149(f64vec3) FMod 290 293
-                              Store 269(f64v2) 294
-             296:149(f64vec3) Load 270(f64v1)
-             297:149(f64vec3) ExtInst 1(GLSL.std.450) 35(Modf) 296 269(f64v2)
-                              Store 295(f64v3) 297
-             298:149(f64vec3) Load 270(f64v1)
-             299:149(f64vec3) Load 269(f64v2)
-             300:149(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 298 299
-                              Store 295(f64v3) 300
-             301:149(f64vec3) Load 270(f64v1)
-             302:26(float64_t) Load 291(f64)
-             303:149(f64vec3) CompositeConstruct 302 302 302
-             304:149(f64vec3) ExtInst 1(GLSL.std.450) 37(FMin) 301 303
-                              Store 295(f64v3) 304
-             305:149(f64vec3) Load 270(f64v1)
-             306:149(f64vec3) Load 269(f64v2)
-             307:149(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 305 306
-                              Store 295(f64v3) 307
-             308:149(f64vec3) Load 270(f64v1)
-             309:26(float64_t) Load 291(f64)
-             310:149(f64vec3) CompositeConstruct 309 309 309
-             311:149(f64vec3) ExtInst 1(GLSL.std.450) 40(FMax) 308 310
-                              Store 295(f64v3) 311
-             312:149(f64vec3) Load 270(f64v1)
-             313:26(float64_t) Load 291(f64)
-             314:     33(ptr) AccessChain 269(f64v2) 32
-             315:26(float64_t) Load 314
-             316:149(f64vec3) CompositeConstruct 313 313 313
-             317:149(f64vec3) CompositeConstruct 315 315 315
-             318:149(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 312 316 317
-                              Store 295(f64v3) 318
-             319:149(f64vec3) Load 270(f64v1)
-             320:149(f64vec3) Load 269(f64v2)
-             321:26(float64_t) Load 291(f64)
-             322:149(f64vec3) CompositeConstruct 321 321 321
-             323:149(f64vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 319 320 322
-                              Store 295(f64v3) 323
-             324:149(f64vec3) Load 270(f64v1)
-             325:149(f64vec3) Load 269(f64v2)
-             326:26(float64_t) Load 291(f64)
-             327:149(f64vec3) CompositeConstruct 326 326 326
-             328:149(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 324 325 327
-                              Store 295(f64v3) 328
-             329:149(f64vec3) Load 270(f64v1)
-             330:149(f64vec3) Load 269(f64v2)
-             331:149(f64vec3) Load 295(f64v3)
-             332:149(f64vec3) ExtInst 1(GLSL.std.450) 46(FMix) 329 330 331
-                              Store 295(f64v3) 332
-             333:149(f64vec3) Load 270(f64v1)
-             334:149(f64vec3) Load 269(f64v2)
-             336:  152(bvec3) Load 335(bv)
-             337:149(f64vec3) Select 336 334 333
-                              Store 295(f64v3) 337
-             338:149(f64vec3) Load 270(f64v1)
-             339:149(f64vec3) Load 269(f64v2)
-             340:149(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 338 339
-                              Store 295(f64v3) 340
-             341:26(float64_t) Load 291(f64)
-             342:149(f64vec3) Load 295(f64v3)
-             343:149(f64vec3) CompositeConstruct 341 341 341
-             344:149(f64vec3) ExtInst 1(GLSL.std.450) 48(Step) 343 342
-                              Store 295(f64v3) 344
-             345:149(f64vec3) Load 270(f64v1)
-             346:149(f64vec3) Load 269(f64v2)
-             347:149(f64vec3) Load 295(f64v3)
-             348:149(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 345 346 347
-                              Store 295(f64v3) 348
-             349:26(float64_t) Load 291(f64)
-             350:     33(ptr) AccessChain 270(f64v1) 32
-             351:26(float64_t) Load 350
-             352:149(f64vec3) Load 269(f64v2)
-             353:149(f64vec3) CompositeConstruct 349 349 349
-             354:149(f64vec3) CompositeConstruct 351 351 351
-             355:149(f64vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 353 354 352
-                              Store 295(f64v3) 355
-             357:26(float64_t) Load 291(f64)
-             358:   107(bool) IsNan 357
-                              Store 356(b) 358
-             359:149(f64vec3) Load 270(f64v1)
-             360:  152(bvec3) IsInf 359
-                              Store 335(bv) 360
-             361:149(f64vec3) Load 270(f64v1)
-             362:149(f64vec3) Load 269(f64v2)
-             363:149(f64vec3) Load 295(f64v3)
-             364:149(f64vec3) ExtInst 1(GLSL.std.450) 50(Fma) 361 362 363
-                              Store 295(f64v3) 364
-             365:149(f64vec3) Load 270(f64v1)
-             368:367(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 365
-             369:  183(ivec3) CompositeExtract 368 1
-                              Store 366(iv) 369
-             370:149(f64vec3) CompositeExtract 368 0
-                              Store 269(f64v2) 370
-             371:149(f64vec3) Load 270(f64v1)
-             372:  183(ivec3) Load 366(iv)
-             373:149(f64vec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 371 372
-                              Store 269(f64v2) 373
+        326(f64):     31(ptr) Variable Function
+      327(f64v1):    148(ptr) Variable Function
+      331(f64v2):    148(ptr) Variable Function
+      337(f64v3):    148(ptr) Variable Function
+             328:147(f64vec3) Load 327(f64v1)
+             329:24(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 328
+                              Store 326(f64) 329
+             330:147(f64vec3) Load 327(f64v1)
+             332:147(f64vec3) Load 331(f64v2)
+             333:24(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 330 332
+                              Store 326(f64) 333
+             334:147(f64vec3) Load 327(f64v1)
+             335:147(f64vec3) Load 331(f64v2)
+             336:24(float64_t) Dot 334 335
+                              Store 326(f64) 336
+             338:147(f64vec3) Load 327(f64v1)
+             339:147(f64vec3) Load 331(f64v2)
+             340:147(f64vec3) ExtInst 1(GLSL.std.450) 68(Cross) 338 339
+                              Store 337(f64v3) 340
+             341:147(f64vec3) Load 327(f64v1)
+             342:147(f64vec3) ExtInst 1(GLSL.std.450) 69(Normalize) 341
+                              Store 331(f64v2) 342
+             343:147(f64vec3) Load 327(f64v1)
+             344:147(f64vec3) Load 331(f64v2)
+             345:147(f64vec3) Load 337(f64v3)
+             346:147(f64vec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 343 344 345
+                              Store 337(f64v3) 346
+             347:147(f64vec3) Load 327(f64v1)
+             348:147(f64vec3) Load 331(f64v2)
+             349:147(f64vec3) ExtInst 1(GLSL.std.450) 71(Reflect) 347 348
+                              Store 337(f64v3) 349
+             350:147(f64vec3) Load 327(f64v1)
+             351:147(f64vec3) Load 331(f64v2)
+             352:24(float64_t) Load 326(f64)
+             353:147(f64vec3) ExtInst 1(GLSL.std.450) 72(Refract) 350 351 352
+                              Store 337(f64v3) 353
                               Return
                               FunctionEnd
-18(builtinGeometryFuncs():           2 Function None 3
+18(builtinMatrixFuncs():           2 Function None 3
               19:             Label
-        374(f64):     33(ptr) Variable Function
-      375(f64v1):    150(ptr) Variable Function
-      379(f64v2):    150(ptr) Variable Function
-      385(f64v3):    150(ptr) Variable Function
-             376:149(f64vec3) Load 375(f64v1)
-             377:26(float64_t) ExtInst 1(GLSL.std.450) 66(Length) 376
-                              Store 374(f64) 377
-             378:149(f64vec3) Load 375(f64v1)
-             380:149(f64vec3) Load 379(f64v2)
-             381:26(float64_t) ExtInst 1(GLSL.std.450) 67(Distance) 378 380
-                              Store 374(f64) 381
-             382:149(f64vec3) Load 375(f64v1)
-             383:149(f64vec3) Load 379(f64v2)
-             384:26(float64_t) Dot 382 383
-                              Store 374(f64) 384
-             386:149(f64vec3) Load 375(f64v1)
-             387:149(f64vec3) Load 379(f64v2)
-             388:149(f64vec3) ExtInst 1(GLSL.std.450) 68(Cross) 386 387
-                              Store 385(f64v3) 388
-             389:149(f64vec3) Load 375(f64v1)
-             390:149(f64vec3) ExtInst 1(GLSL.std.450) 69(Normalize) 389
-                              Store 379(f64v2) 390
-             391:149(f64vec3) Load 375(f64v1)
-             392:149(f64vec3) Load 379(f64v2)
-             393:149(f64vec3) Load 385(f64v3)
-             394:149(f64vec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 391 392 393
-                              Store 385(f64v3) 394
-             395:149(f64vec3) Load 375(f64v1)
-             396:149(f64vec3) Load 379(f64v2)
-             397:149(f64vec3) ExtInst 1(GLSL.std.450) 71(Reflect) 395 396
-                              Store 385(f64v3) 397
-             398:149(f64vec3) Load 375(f64v1)
-             399:149(f64vec3) Load 379(f64v2)
-             400:26(float64_t) Load 374(f64)
-             401:149(f64vec3) ExtInst 1(GLSL.std.450) 72(Refract) 398 399 400
-                              Store 385(f64v3) 401
+      356(f64m3):    355(ptr) Variable Function
+      357(f64m1):    355(ptr) Variable Function
+      359(f64m2):    355(ptr) Variable Function
+      368(f64v1):    148(ptr) Variable Function
+      370(f64v2):     26(ptr) Variable Function
+      375(f64m4):    374(ptr) Variable Function
+        378(f64):     31(ptr) Variable Function
+      381(f64m5):    380(ptr) Variable Function
+      387(f64m6):    386(ptr) Variable Function
+      388(f64m7):    386(ptr) Variable Function
+             358:         354 Load 357(f64m1)
+             360:         354 Load 359(f64m2)
+             361:147(f64vec3) CompositeExtract 358 0
+             362:147(f64vec3) CompositeExtract 360 0
+             363:147(f64vec3) FMul 361 362
+             364:147(f64vec3) CompositeExtract 358 1
+             365:147(f64vec3) CompositeExtract 360 1
+             366:147(f64vec3) FMul 364 365
+             367:         354 CompositeConstruct 363 366
+                              Store 356(f64m3) 367
+             369:147(f64vec3) Load 368(f64v1)
+             371: 25(f64vec2) Load 370(f64v2)
+             372:         354 OuterProduct 369 371
+                              Store 357(f64m1) 372
+             376:         354 Load 357(f64m1)
+             377:         373 Transpose 376
+                              Store 375(f64m4) 377
+             382:         379 Load 381(f64m5)
+             383:24(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 382
+                              Store 378(f64) 383
+             389:         385 Load 388(f64m7)
+             390:         385 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 389
+                              Store 387(f64m6) 390
                               Return
                               FunctionEnd
-20(builtinMatrixFuncs():           2 Function None 3
+20(builtinVecRelFuncs():           2 Function None 3
               21:             Label
-      404(f64m3):    403(ptr) Variable Function
-      405(f64m1):    403(ptr) Variable Function
-      407(f64m2):    403(ptr) Variable Function
-      416(f64v1):    150(ptr) Variable Function
-      418(f64v2):     28(ptr) Variable Function
-      423(f64m4):    422(ptr) Variable Function
-        426(f64):     33(ptr) Variable Function
-      429(f64m5):    428(ptr) Variable Function
-      434(f64m6):    433(ptr) Variable Function
-      435(f64m7):    433(ptr) Variable Function
-             406:         402 Load 405(f64m1)
-             408:         402 Load 407(f64m2)
-             409:149(f64vec3) CompositeExtract 406 0
-             410:149(f64vec3) CompositeExtract 408 0
-             411:149(f64vec3) FMul 409 410
-             412:149(f64vec3) CompositeExtract 406 1
-             413:149(f64vec3) CompositeExtract 408 1
-             414:149(f64vec3) FMul 412 413
-             415:         402 CompositeConstruct 411 414
-                              Store 404(f64m3) 415
-             417:149(f64vec3) Load 416(f64v1)
-             419: 27(f64vec2) Load 418(f64v2)
-             420:         402 OuterProduct 417 419
-                              Store 405(f64m1) 420
-             424:         402 Load 405(f64m1)
-             425:         421 Transpose 424
-                              Store 423(f64m4) 425
-             430:         427 Load 429(f64m5)
-             431:26(float64_t) ExtInst 1(GLSL.std.450) 33(Determinant) 430
-                              Store 426(f64) 431
-             436:         432 Load 435(f64m7)
-             437:         432 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 436
-                              Store 434(f64m6) 437
+         391(bv):    151(ptr) Variable Function
+      392(f64v1):    148(ptr) Variable Function
+      394(f64v2):    148(ptr) Variable Function
+             393:147(f64vec3) Load 392(f64v1)
+             395:147(f64vec3) Load 394(f64v2)
+             396:  150(bvec3) FOrdLessThan 393 395
+                              Store 391(bv) 396
+             397:147(f64vec3) Load 392(f64v1)
+             398:147(f64vec3) Load 394(f64v2)
+             399:  150(bvec3) FOrdLessThanEqual 397 398
+                              Store 391(bv) 399
+             400:147(f64vec3) Load 392(f64v1)
+             401:147(f64vec3) Load 394(f64v2)
+             402:  150(bvec3) FOrdGreaterThan 400 401
+                              Store 391(bv) 402
+             403:147(f64vec3) Load 392(f64v1)
+             404:147(f64vec3) Load 394(f64v2)
+             405:  150(bvec3) FOrdGreaterThanEqual 403 404
+                              Store 391(bv) 405
+             406:147(f64vec3) Load 392(f64v1)
+             407:147(f64vec3) Load 394(f64v2)
+             408:  150(bvec3) FOrdEqual 406 407
+                              Store 391(bv) 408
+             409:147(f64vec3) Load 392(f64v1)
+             410:147(f64vec3) Load 394(f64v2)
+             411:  150(bvec3) FUnordNotEqual 409 410
+                              Store 391(bv) 411
                               Return
                               FunctionEnd
-22(builtinVecRelFuncs():           2 Function None 3
+22(builtinFragProcFuncs():           2 Function None 3
               23:             Label
-         438(bv):    153(ptr) Variable Function
-      439(f64v1):    150(ptr) Variable Function
-      441(f64v2):    150(ptr) Variable Function
-             440:149(f64vec3) Load 439(f64v1)
-             442:149(f64vec3) Load 441(f64v2)
-             443:  152(bvec3) FOrdLessThan 440 442
-                              Store 438(bv) 443
-             444:149(f64vec3) Load 439(f64v1)
-             445:149(f64vec3) Load 441(f64v2)
-             446:  152(bvec3) FOrdLessThanEqual 444 445
-                              Store 438(bv) 446
-             447:149(f64vec3) Load 439(f64v1)
-             448:149(f64vec3) Load 441(f64v2)
-             449:  152(bvec3) FOrdGreaterThan 447 448
-                              Store 438(bv) 449
-             450:149(f64vec3) Load 439(f64v1)
-             451:149(f64vec3) Load 441(f64v2)
-             452:  152(bvec3) FOrdGreaterThanEqual 450 451
-                              Store 438(bv) 452
-             453:149(f64vec3) Load 439(f64v1)
-             454:149(f64vec3) Load 441(f64v2)
-             455:  152(bvec3) FOrdEqual 453 454
-                              Store 438(bv) 455
-             456:149(f64vec3) Load 439(f64v1)
-             457:149(f64vec3) Load 441(f64v2)
-             458:  152(bvec3) FUnordNotEqual 456 457
-                              Store 438(bv) 458
-                              Return
-                              FunctionEnd
-24(builtinFragProcFuncs():           2 Function None 3
-              25:             Label
-       459(f64v):    150(ptr) Variable Function
-             463:    462(ptr) AccessChain 461(if64v) 32
-             464:26(float64_t) Load 463
-             465:26(float64_t) DPdx 464
-             466:     33(ptr) AccessChain 459(f64v) 32
-                              Store 466 465
-             467:    462(ptr) AccessChain 461(if64v) 88
-             468:26(float64_t) Load 467
-             469:26(float64_t) DPdy 468
-             470:     33(ptr) AccessChain 459(f64v) 88
-                              Store 470 469
-             471:149(f64vec3) Load 461(if64v)
-             472: 27(f64vec2) VectorShuffle 471 471 0 1
-             473: 27(f64vec2) DPdxFine 472
-             474:149(f64vec3) Load 459(f64v)
-             475:149(f64vec3) VectorShuffle 474 473 3 4 2
-                              Store 459(f64v) 475
-             476:149(f64vec3) Load 461(if64v)
-             477: 27(f64vec2) VectorShuffle 476 476 0 1
-             478: 27(f64vec2) DPdyFine 477
-             479:149(f64vec3) Load 459(f64v)
-             480:149(f64vec3) VectorShuffle 479 478 3 4 2
-                              Store 459(f64v) 480
-             481:149(f64vec3) Load 461(if64v)
-             482:149(f64vec3) DPdxCoarse 481
-                              Store 459(f64v) 482
-             483:149(f64vec3) Load 461(if64v)
-             484:149(f64vec3) DPdxCoarse 483
-                              Store 459(f64v) 484
-             485:    462(ptr) AccessChain 461(if64v) 32
-             486:26(float64_t) Load 485
-             487:26(float64_t) Fwidth 486
-             488:     33(ptr) AccessChain 459(f64v) 32
-                              Store 488 487
-             489:149(f64vec3) Load 461(if64v)
-             490: 27(f64vec2) VectorShuffle 489 489 0 1
-             491: 27(f64vec2) FwidthFine 490
-             492:149(f64vec3) Load 459(f64v)
-             493:149(f64vec3) VectorShuffle 492 491 3 4 2
-                              Store 459(f64v) 493
-             494:149(f64vec3) Load 461(if64v)
-             495:149(f64vec3) FwidthCoarse 494
-                              Store 459(f64v) 495
-             496:    462(ptr) AccessChain 461(if64v) 32
-             497:26(float64_t) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 496
-             498:     33(ptr) AccessChain 459(f64v) 32
-                              Store 498 497
-             500:149(f64vec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 461(if64v) 499
-             501: 27(f64vec2) VectorShuffle 500 500 0 1
-             502:149(f64vec3) Load 459(f64v)
-             503:149(f64vec3) VectorShuffle 502 501 3 4 2
-                              Store 459(f64v) 503
-             506:149(f64vec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 461(if64v) 505
-                              Store 459(f64v) 506
+       412(f64v):    148(ptr) Variable Function
+             416:    415(ptr) AccessChain 414(if64v) 30
+             417:24(float64_t) Load 416
+             418:24(float64_t) DPdx 417
+             419:     31(ptr) AccessChain 412(f64v) 30
+                              Store 419 418
+             420:    415(ptr) AccessChain 414(if64v) 86
+             421:24(float64_t) Load 420
+             422:24(float64_t) DPdy 421
+             423:     31(ptr) AccessChain 412(f64v) 86
+                              Store 423 422
+             424:147(f64vec3) Load 414(if64v)
+             425: 25(f64vec2) VectorShuffle 424 424 0 1
+             426: 25(f64vec2) DPdxFine 425
+             427:     31(ptr) AccessChain 412(f64v) 30
+             428:24(float64_t) CompositeExtract 426 0
+                              Store 427 428
+             429:     31(ptr) AccessChain 412(f64v) 86
+             430:24(float64_t) CompositeExtract 426 1
+                              Store 429 430
+             431:147(f64vec3) Load 414(if64v)
+             432: 25(f64vec2) VectorShuffle 431 431 0 1
+             433: 25(f64vec2) DPdyFine 432
+             434:     31(ptr) AccessChain 412(f64v) 30
+             435:24(float64_t) CompositeExtract 433 0
+                              Store 434 435
+             436:     31(ptr) AccessChain 412(f64v) 86
+             437:24(float64_t) CompositeExtract 433 1
+                              Store 436 437
+             438:147(f64vec3) Load 414(if64v)
+             439:147(f64vec3) DPdxCoarse 438
+                              Store 412(f64v) 439
+             440:147(f64vec3) Load 414(if64v)
+             441:147(f64vec3) DPdxCoarse 440
+                              Store 412(f64v) 441
+             442:    415(ptr) AccessChain 414(if64v) 30
+             443:24(float64_t) Load 442
+             444:24(float64_t) Fwidth 443
+             445:     31(ptr) AccessChain 412(f64v) 30
+                              Store 445 444
+             446:147(f64vec3) Load 414(if64v)
+             447: 25(f64vec2) VectorShuffle 446 446 0 1
+             448: 25(f64vec2) FwidthFine 447
+             449:     31(ptr) AccessChain 412(f64v) 30
+             450:24(float64_t) CompositeExtract 448 0
+                              Store 449 450
+             451:     31(ptr) AccessChain 412(f64v) 86
+             452:24(float64_t) CompositeExtract 448 1
+                              Store 451 452
+             453:147(f64vec3) Load 414(if64v)
+             454:147(f64vec3) FwidthCoarse 453
+                              Store 412(f64v) 454
+             455:    415(ptr) AccessChain 414(if64v) 30
+             456:24(float64_t) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 455
+             457:     31(ptr) AccessChain 412(f64v) 30
+                              Store 457 456
+             459:147(f64vec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 414(if64v) 458
+             460: 25(f64vec2) VectorShuffle 459 459 0 1
+             461:     31(ptr) AccessChain 412(f64v) 30
+             462:24(float64_t) CompositeExtract 460 0
+                              Store 461 462
+             463:     31(ptr) AccessChain 412(f64v) 86
+             464:24(float64_t) CompositeExtract 460 1
+                              Store 463 464
+             467:147(f64vec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 414(if64v) 466
+                              Store 412(f64v) 467
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.forLoop.frag.out b/Test/baseResults/spv.forLoop.frag.out
index 1aac9a6..3a36667 100644
--- a/Test/baseResults/spv.forLoop.frag.out
+++ b/Test/baseResults/spv.forLoop.frag.out
@@ -1,12 +1,12 @@
 spv.forLoop.frag
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 131
+// Id's are bound by 143
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 11 24 28 36 53 104
+                              EntryPoint Fragment 4  "main" 11 24 28 36 53 111
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 140
                               Name 4  "main"
@@ -22,9 +22,9 @@
                               Name 63  "i"
                               Name 71  "tv4"
                               Name 88  "r"
-                              Name 94  "i"
-                              Name 104  "f"
-                              Name 117  "i"
+                              Name 101  "i"
+                              Name 111  "f"
+                              Name 129  "i"
                               Decorate 11(BaseColor) Location 1
                               Decorate 24(Count) Flat
                               Decorate 24(Count) Location 3
@@ -32,7 +32,7 @@
                               Decorate 36(gl_FragColor) Location 0
                               Decorate 53(v4) Flat
                               Decorate 53(v4) Location 4
-                              Decorate 104(f) Location 2
+                              Decorate 111(f) Location 2
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -60,10 +60,14 @@
               55:             TypePointer Input 50(int)
               76:     50(int) Constant 4
               89:             TypeVector 6(float) 3
-             103:             TypePointer Input 6(float)
-          104(f):    103(ptr) Variable Input
-             106:     50(int) Constant 3
-             124:     13(int) Constant 16
+              92:     50(int) Constant 0
+              95:     50(int) Constant 1
+              98:     50(int) Constant 2
+             110:             TypePointer Input 6(float)
+          111(f):    110(ptr) Variable Input
+             113:     50(int) Constant 3
+             122:             TypePointer Output 6(float)
+             136:     13(int) Constant 16
          4(main):           2 Function None 3
                5:             Label
         9(color):      8(ptr) Variable Function
@@ -73,8 +77,8 @@
            63(i):     14(ptr) Variable Function
          71(tv4):      8(ptr) Variable Function
            88(r):      8(ptr) Variable Function
-           94(i):     14(ptr) Variable Function
-          117(i):     14(ptr) Variable Function
+          101(i):     14(ptr) Variable Function
+          129(i):     14(ptr) Variable Function
               12:    7(fvec4) Load 11(BaseColor)
                               Store 9(color) 12
                               Store 15(i) 16
@@ -160,58 +164,70 @@
                               Store 36(gl_FragColor) 87
               90:    7(fvec4) Load 11(BaseColor)
               91:   89(fvec3) VectorShuffle 90 90 0 1 2
-              92:    7(fvec4) Load 88(r)
-              93:    7(fvec4) VectorShuffle 92 91 4 5 6 3
-                              Store 88(r) 93
-                              Store 94(i) 16
-                              Branch 95
-              95:             Label
-                              LoopMerge 97 98 None
-                              Branch 99
-              99:             Label
-             100:     13(int) Load 94(i)
-             101:     13(int) Load 24(Count)
-             102:    26(bool) SLessThan 100 101
-                              BranchConditional 102 96 97
-              96:               Label
-             105:    6(float)   Load 104(f)
-             107:     38(ptr)   AccessChain 88(r) 106
-                                Store 107 105
-                                Branch 98
-              98:               Label
-             108:     13(int)   Load 94(i)
-             109:     13(int)   IAdd 108 33
-                                Store 94(i) 109
-                                Branch 95
-              97:             Label
-             110:    7(fvec4) Load 88(r)
-             111:   89(fvec3) VectorShuffle 110 110 0 1 2
-             112:    7(fvec4) Load 36(gl_FragColor)
-             113:   89(fvec3) VectorShuffle 112 112 0 1 2
-             114:   89(fvec3) FAdd 113 111
-             115:    7(fvec4) Load 36(gl_FragColor)
-             116:    7(fvec4) VectorShuffle 115 114 4 5 6 3
-                              Store 36(gl_FragColor) 116
-                              Store 117(i) 16
-                              Branch 118
-             118:             Label
-                              LoopMerge 120 121 None
-                              Branch 122
-             122:             Label
-             123:     13(int) Load 117(i)
-             125:    26(bool) SLessThan 123 124
-                              BranchConditional 125 119 120
-             119:               Label
-             126:    6(float)   Load 104(f)
-             127:    7(fvec4)   Load 36(gl_FragColor)
-             128:    7(fvec4)   VectorTimesScalar 127 126
-                                Store 36(gl_FragColor) 128
-                                Branch 121
-             121:               Label
-             129:     13(int)   Load 117(i)
-             130:     13(int)   IAdd 129 48
-                                Store 117(i) 130
-                                Branch 118
-             120:             Label
+              93:     38(ptr) AccessChain 88(r) 92
+              94:    6(float) CompositeExtract 91 0
+                              Store 93 94
+              96:     38(ptr) AccessChain 88(r) 95
+              97:    6(float) CompositeExtract 91 1
+                              Store 96 97
+              99:     38(ptr) AccessChain 88(r) 98
+             100:    6(float) CompositeExtract 91 2
+                              Store 99 100
+                              Store 101(i) 16
+                              Branch 102
+             102:             Label
+                              LoopMerge 104 105 None
+                              Branch 106
+             106:             Label
+             107:     13(int) Load 101(i)
+             108:     13(int) Load 24(Count)
+             109:    26(bool) SLessThan 107 108
+                              BranchConditional 109 103 104
+             103:               Label
+             112:    6(float)   Load 111(f)
+             114:     38(ptr)   AccessChain 88(r) 113
+                                Store 114 112
+                                Branch 105
+             105:               Label
+             115:     13(int)   Load 101(i)
+             116:     13(int)   IAdd 115 33
+                                Store 101(i) 116
+                                Branch 102
+             104:             Label
+             117:    7(fvec4) Load 88(r)
+             118:   89(fvec3) VectorShuffle 117 117 0 1 2
+             119:    7(fvec4) Load 36(gl_FragColor)
+             120:   89(fvec3) VectorShuffle 119 119 0 1 2
+             121:   89(fvec3) FAdd 120 118
+             123:    122(ptr) AccessChain 36(gl_FragColor) 92
+             124:    6(float) CompositeExtract 121 0
+                              Store 123 124
+             125:    122(ptr) AccessChain 36(gl_FragColor) 95
+             126:    6(float) CompositeExtract 121 1
+                              Store 125 126
+             127:    122(ptr) AccessChain 36(gl_FragColor) 98
+             128:    6(float) CompositeExtract 121 2
+                              Store 127 128
+                              Store 129(i) 16
+                              Branch 130
+             130:             Label
+                              LoopMerge 132 133 None
+                              Branch 134
+             134:             Label
+             135:     13(int) Load 129(i)
+             137:    26(bool) SLessThan 135 136
+                              BranchConditional 137 131 132
+             131:               Label
+             138:    6(float)   Load 111(f)
+             139:    7(fvec4)   Load 36(gl_FragColor)
+             140:    7(fvec4)   VectorTimesScalar 139 138
+                                Store 36(gl_FragColor) 140
+                                Branch 133
+             133:               Label
+             141:     13(int)   Load 129(i)
+             142:     13(int)   IAdd 141 48
+                                Store 129(i) 142
+                                Branch 130
+             132:             Label
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.funcall.array.frag.out b/Test/baseResults/spv.funcall.array.frag.out
new file mode 100644
index 0000000..616ba16
--- /dev/null
+++ b/Test/baseResults/spv.funcall.array.frag.out
@@ -0,0 +1,106 @@
+spv.funcall.array.frag
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 66
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 27
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 16  "f(vf4[9];i1;"
+                              Name 14  "a"
+                              Name 15  "ix"
+                              Name 20  "indexable"
+                              Name 27  "color"
+                              Name 29  "ub"
+                              MemberName 29(ub) 0  "u"
+                              Name 31  ""
+                              Name 37  "arg"
+                              Name 64  "param"
+                              Decorate 27(color) Location 0
+                              Decorate 28 ArrayStride 16
+                              MemberDecorate 29(ub) 0 Offset 0
+                              Decorate 29(ub) Block
+                              Decorate 31 DescriptorSet 0
+                              Decorate 31 Binding 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypeInt 32 0
+               9:      8(int) Constant 9
+              10:             TypeArray 7(fvec4) 9
+              11:             TypeInt 32 1
+              12:             TypePointer Function 11(int)
+              13:             TypeFunction 7(fvec4) 10 12(ptr)
+              19:             TypePointer Function 10
+              21:             TypePointer Function 7(fvec4)
+              26:             TypePointer Output 7(fvec4)
+       27(color):     26(ptr) Variable Output
+              28:             TypeArray 7(fvec4) 9
+          29(ub):             TypeStruct 28
+              30:             TypePointer Uniform 29(ub)
+              31:     30(ptr) Variable Uniform
+              32:     11(int) Constant 0
+              33:             TypePointer Uniform 28
+              36:     11(int) Constant 2
+              41:     11(int) Constant 1
+              46:     11(int) Constant 3
+              49:     11(int) Constant 4
+              52:     11(int) Constant 5
+              55:     11(int) Constant 6
+              58:     11(int) Constant 7
+              61:     11(int) Constant 8
+         4(main):           2 Function None 3
+               5:             Label
+         37(arg):     19(ptr) Variable Function
+       64(param):     12(ptr) Variable Function
+              34:     33(ptr) AccessChain 31 32
+              35:          28 Load 34
+              38:    7(fvec4) CompositeExtract 35 0
+              39:     21(ptr) AccessChain 37(arg) 32
+                              Store 39 38
+              40:    7(fvec4) CompositeExtract 35 1
+              42:     21(ptr) AccessChain 37(arg) 41
+                              Store 42 40
+              43:    7(fvec4) CompositeExtract 35 2
+              44:     21(ptr) AccessChain 37(arg) 36
+                              Store 44 43
+              45:    7(fvec4) CompositeExtract 35 3
+              47:     21(ptr) AccessChain 37(arg) 46
+                              Store 47 45
+              48:    7(fvec4) CompositeExtract 35 4
+              50:     21(ptr) AccessChain 37(arg) 49
+                              Store 50 48
+              51:    7(fvec4) CompositeExtract 35 5
+              53:     21(ptr) AccessChain 37(arg) 52
+                              Store 53 51
+              54:    7(fvec4) CompositeExtract 35 6
+              56:     21(ptr) AccessChain 37(arg) 55
+                              Store 56 54
+              57:    7(fvec4) CompositeExtract 35 7
+              59:     21(ptr) AccessChain 37(arg) 58
+                              Store 59 57
+              60:    7(fvec4) CompositeExtract 35 8
+              62:     21(ptr) AccessChain 37(arg) 61
+                              Store 62 60
+              63:          10 Load 37(arg)
+                              Store 64(param) 36
+              65:    7(fvec4) FunctionCall 16(f(vf4[9];i1;) 63 64(param)
+                              Store 27(color) 65
+                              Return
+                              FunctionEnd
+16(f(vf4[9];i1;):    7(fvec4) Function None 13
+           14(a):          10 FunctionParameter
+          15(ix):     12(ptr) FunctionParameter
+              17:             Label
+   20(indexable):     19(ptr) Variable Function
+              18:     11(int) Load 15(ix)
+                              Store 20(indexable) 14(a)
+              22:     21(ptr) AccessChain 20(indexable) 18
+              23:    7(fvec4) Load 22
+                              ReturnValue 23
+                              FunctionEnd
diff --git a/Test/baseResults/spv.image.frag.out b/Test/baseResults/spv.image.frag.out
index 3e2096d..5fbb922 100644
--- a/Test/baseResults/spv.image.frag.out
+++ b/Test/baseResults/spv.image.frag.out
@@ -2,7 +2,7 @@
 Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 395
+// Id's are bound by 405
 
                               Capability Shader
                               Capability StorageImageMultisample
@@ -16,79 +16,79 @@
                               Capability StorageImageWriteWithoutFormat
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 132 142 152 248 381 394
+                              EntryPoint Fragment 4  "main" 143 153 163 258 391 404
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 450
                               Name 4  "main"
                               Name 9  "iv"
                               Name 15  "i1D"
                               Name 27  "i2D"
-                              Name 38  "i3D"
-                              Name 45  "iCube"
-                              Name 55  "iCubeArray"
-                              Name 62  "i2DRect"
-                              Name 72  "i1DArray"
-                              Name 82  "i2DArray"
-                              Name 89  "iBuffer"
-                              Name 98  "i2DMS"
-                              Name 108  "i2DMSArray"
-                              Name 127  "v"
-                              Name 132  "ic1D"
-                              Name 142  "ic2D"
-                              Name 152  "ic3D"
-                              Name 229  "ui"
-                              Name 232  "ii1D"
-                              Name 245  "ui2D"
-                              Name 248  "value"
-                              Name 357  "ii2DMS"
-                              Name 367  "ui2DMSArray"
-                              Name 376  "wo2D"
-                              Name 381  "fragData"
-                              Name 394  "ic4D"
+                              Name 41  "i3D"
+                              Name 48  "iCube"
+                              Name 60  "iCubeArray"
+                              Name 67  "i2DRect"
+                              Name 79  "i1DArray"
+                              Name 91  "i2DArray"
+                              Name 98  "iBuffer"
+                              Name 107  "i2DMS"
+                              Name 119  "i2DMSArray"
+                              Name 138  "v"
+                              Name 143  "ic1D"
+                              Name 153  "ic2D"
+                              Name 163  "ic3D"
+                              Name 240  "ui"
+                              Name 243  "ii1D"
+                              Name 255  "ui2D"
+                              Name 258  "value"
+                              Name 367  "ii2DMS"
+                              Name 377  "ui2DMSArray"
+                              Name 386  "wo2D"
+                              Name 391  "fragData"
+                              Name 404  "ic4D"
                               Decorate 15(i1D) DescriptorSet 0
                               Decorate 15(i1D) Binding 0
                               Decorate 27(i2D) DescriptorSet 0
                               Decorate 27(i2D) Binding 1
-                              Decorate 38(i3D) DescriptorSet 0
-                              Decorate 38(i3D) Binding 2
-                              Decorate 45(iCube) DescriptorSet 0
-                              Decorate 45(iCube) Binding 3
-                              Decorate 55(iCubeArray) DescriptorSet 0
-                              Decorate 55(iCubeArray) Binding 4
-                              Decorate 62(i2DRect) DescriptorSet 0
-                              Decorate 62(i2DRect) Binding 5
-                              Decorate 72(i1DArray) DescriptorSet 0
-                              Decorate 72(i1DArray) Binding 6
-                              Decorate 82(i2DArray) DescriptorSet 0
-                              Decorate 82(i2DArray) Binding 7
-                              Decorate 89(iBuffer) DescriptorSet 0
-                              Decorate 89(iBuffer) Binding 8
-                              Decorate 98(i2DMS) DescriptorSet 0
-                              Decorate 98(i2DMS) Binding 9
-                              Decorate 108(i2DMSArray) DescriptorSet 0
-                              Decorate 108(i2DMSArray) Binding 10
-                              Decorate 132(ic1D) Flat
-                              Decorate 132(ic1D) Location 0
-                              Decorate 142(ic2D) Flat
-                              Decorate 142(ic2D) Location 1
-                              Decorate 152(ic3D) Flat
-                              Decorate 152(ic3D) Location 2
-                              Decorate 232(ii1D) DescriptorSet 0
-                              Decorate 232(ii1D) Binding 11
-                              Decorate 245(ui2D) DescriptorSet 0
-                              Decorate 245(ui2D) Binding 12
-                              Decorate 248(value) Flat
-                              Decorate 248(value) Location 4
-                              Decorate 357(ii2DMS) DescriptorSet 0
-                              Decorate 357(ii2DMS) Binding 13
-                              Decorate 367(ui2DMSArray) DescriptorSet 0
-                              Decorate 367(ui2DMSArray) Binding 14
-                              Decorate 376(wo2D) DescriptorSet 0
-                              Decorate 376(wo2D) Binding 1
-                              Decorate 376(wo2D) NonReadable
-                              Decorate 381(fragData) Location 0
-                              Decorate 394(ic4D) Flat
-                              Decorate 394(ic4D) Location 3
+                              Decorate 41(i3D) DescriptorSet 0
+                              Decorate 41(i3D) Binding 2
+                              Decorate 48(iCube) DescriptorSet 0
+                              Decorate 48(iCube) Binding 3
+                              Decorate 60(iCubeArray) DescriptorSet 0
+                              Decorate 60(iCubeArray) Binding 4
+                              Decorate 67(i2DRect) DescriptorSet 0
+                              Decorate 67(i2DRect) Binding 5
+                              Decorate 79(i1DArray) DescriptorSet 0
+                              Decorate 79(i1DArray) Binding 6
+                              Decorate 91(i2DArray) DescriptorSet 0
+                              Decorate 91(i2DArray) Binding 7
+                              Decorate 98(iBuffer) DescriptorSet 0
+                              Decorate 98(iBuffer) Binding 8
+                              Decorate 107(i2DMS) DescriptorSet 0
+                              Decorate 107(i2DMS) Binding 9
+                              Decorate 119(i2DMSArray) DescriptorSet 0
+                              Decorate 119(i2DMSArray) Binding 10
+                              Decorate 143(ic1D) Flat
+                              Decorate 143(ic1D) Location 0
+                              Decorate 153(ic2D) Flat
+                              Decorate 153(ic2D) Location 1
+                              Decorate 163(ic3D) Flat
+                              Decorate 163(ic3D) Location 2
+                              Decorate 243(ii1D) DescriptorSet 0
+                              Decorate 243(ii1D) Binding 11
+                              Decorate 255(ui2D) DescriptorSet 0
+                              Decorate 255(ui2D) Binding 12
+                              Decorate 258(value) Flat
+                              Decorate 258(value) Location 4
+                              Decorate 367(ii2DMS) DescriptorSet 0
+                              Decorate 367(ii2DMS) Binding 13
+                              Decorate 377(ui2DMSArray) DescriptorSet 0
+                              Decorate 377(ui2DMSArray) Binding 14
+                              Decorate 386(wo2D) DescriptorSet 0
+                              Decorate 386(wo2D) Binding 1
+                              Decorate 386(wo2D) NonReadable
+                              Decorate 391(fragData) Location 0
+                              Decorate 404(ic4D) Flat
+                              Decorate 404(ic4D) Location 3
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
@@ -107,90 +107,90 @@
               26:             TypePointer UniformConstant 25
          27(i2D):     26(ptr) Variable UniformConstant
               29:             TypeVector 6(int) 2
-              36:             TypeImage 12(float) 3D nonsampled format:Rgba32f
-              37:             TypePointer UniformConstant 36
-         38(i3D):     37(ptr) Variable UniformConstant
-              43:             TypeImage 12(float) Cube nonsampled format:Rgba32f
-              44:             TypePointer UniformConstant 43
-       45(iCube):     44(ptr) Variable UniformConstant
-              53:             TypeImage 12(float) Cube array nonsampled format:Rgba32f
-              54:             TypePointer UniformConstant 53
-  55(iCubeArray):     54(ptr) Variable UniformConstant
-              60:             TypeImage 12(float) Rect nonsampled format:Rgba32f
-              61:             TypePointer UniformConstant 60
-     62(i2DRect):     61(ptr) Variable UniformConstant
-              70:             TypeImage 12(float) 1D array nonsampled format:Rgba32f
-              71:             TypePointer UniformConstant 70
-    72(i1DArray):     71(ptr) Variable UniformConstant
-              80:             TypeImage 12(float) 2D array nonsampled format:Rg16
-              81:             TypePointer UniformConstant 80
-    82(i2DArray):     81(ptr) Variable UniformConstant
-              87:             TypeImage 12(float) Buffer nonsampled format:Rgba32f
-              88:             TypePointer UniformConstant 87
-     89(iBuffer):     88(ptr) Variable UniformConstant
-              96:             TypeImage 12(float) 2D multi-sampled nonsampled format:Rgba32f
+              36:     18(int) Constant 1
+              39:             TypeImage 12(float) 3D nonsampled format:Rgba32f
+              40:             TypePointer UniformConstant 39
+         41(i3D):     40(ptr) Variable UniformConstant
+              46:             TypeImage 12(float) Cube nonsampled format:Rgba32f
+              47:             TypePointer UniformConstant 46
+       48(iCube):     47(ptr) Variable UniformConstant
+              58:             TypeImage 12(float) Cube array nonsampled format:Rgba32f
+              59:             TypePointer UniformConstant 58
+  60(iCubeArray):     59(ptr) Variable UniformConstant
+              65:             TypeImage 12(float) Rect nonsampled format:Rgba32f
+              66:             TypePointer UniformConstant 65
+     67(i2DRect):     66(ptr) Variable UniformConstant
+              77:             TypeImage 12(float) 1D array nonsampled format:Rgba32f
+              78:             TypePointer UniformConstant 77
+    79(i1DArray):     78(ptr) Variable UniformConstant
+              89:             TypeImage 12(float) 2D array nonsampled format:Rg16
+              90:             TypePointer UniformConstant 89
+    91(i2DArray):     90(ptr) Variable UniformConstant
+              96:             TypeImage 12(float) Buffer nonsampled format:Rgba32f
               97:             TypePointer UniformConstant 96
-       98(i2DMS):     97(ptr) Variable UniformConstant
-             106:             TypeImage 12(float) 2D array multi-sampled nonsampled format:Rgba32f
-             107:             TypePointer UniformConstant 106
- 108(i2DMSArray):    107(ptr) Variable UniformConstant
-             125:             TypeVector 12(float) 4
-             126:             TypePointer Function 125(fvec4)
-             128:   12(float) Constant 0
-             129:  125(fvec4) ConstantComposite 128 128 128 128
-             131:             TypePointer Input 6(int)
-       132(ic1D):    131(ptr) Variable Input
-             141:             TypePointer Input 29(ivec2)
-       142(ic2D):    141(ptr) Variable Input
-             151:             TypePointer Input 7(ivec3)
-       152(ic3D):    151(ptr) Variable Input
-             210:      6(int) Constant 1
-             216:      6(int) Constant 2
-             220:      6(int) Constant 3
-             226:      6(int) Constant 4
-             228:             TypePointer Function 18(int)
-             230:             TypeImage 6(int) 1D nonsampled format:R32i
-             231:             TypePointer UniformConstant 230
-       232(ii1D):    231(ptr) Variable UniformConstant
-             234:      6(int) Constant 10
-             235:             TypePointer Image 6(int)
-             237:     18(int) Constant 1
-             243:             TypeImage 18(int) 2D nonsampled format:R32ui
-             244:             TypePointer UniformConstant 243
-       245(ui2D):    244(ptr) Variable UniformConstant
-             247:             TypePointer Input 18(int)
-      248(value):    247(ptr) Variable Input
-             250:             TypePointer Image 18(int)
-             256:      6(int) Constant 11
-             270:      6(int) Constant 12
-             284:      6(int) Constant 13
-             298:      6(int) Constant 14
-             312:      6(int) Constant 15
-             326:      6(int) Constant 16
-             340:      6(int) Constant 18
-             341:      6(int) Constant 17
-             349:     18(int) Constant 19
-             355:             TypeImage 6(int) 2D multi-sampled nonsampled format:R32i
-             356:             TypePointer UniformConstant 355
-     357(ii2DMS):    356(ptr) Variable UniformConstant
-             365:             TypeImage 18(int) 2D array multi-sampled nonsampled format:R32ui
+     98(iBuffer):     97(ptr) Variable UniformConstant
+             105:             TypeImage 12(float) 2D multi-sampled nonsampled format:Rgba32f
+             106:             TypePointer UniformConstant 105
+      107(i2DMS):    106(ptr) Variable UniformConstant
+             117:             TypeImage 12(float) 2D array multi-sampled nonsampled format:Rgba32f
+             118:             TypePointer UniformConstant 117
+ 119(i2DMSArray):    118(ptr) Variable UniformConstant
+             136:             TypeVector 12(float) 4
+             137:             TypePointer Function 136(fvec4)
+             139:   12(float) Constant 0
+             140:  136(fvec4) ConstantComposite 139 139 139 139
+             142:             TypePointer Input 6(int)
+       143(ic1D):    142(ptr) Variable Input
+             152:             TypePointer Input 29(ivec2)
+       153(ic2D):    152(ptr) Variable Input
+             162:             TypePointer Input 7(ivec3)
+       163(ic3D):    162(ptr) Variable Input
+             221:      6(int) Constant 1
+             227:      6(int) Constant 2
+             231:      6(int) Constant 3
+             237:      6(int) Constant 4
+             239:             TypePointer Function 18(int)
+             241:             TypeImage 6(int) 1D nonsampled format:R32i
+             242:             TypePointer UniformConstant 241
+       243(ii1D):    242(ptr) Variable UniformConstant
+             245:      6(int) Constant 10
+             246:             TypePointer Image 6(int)
+             253:             TypeImage 18(int) 2D nonsampled format:R32ui
+             254:             TypePointer UniformConstant 253
+       255(ui2D):    254(ptr) Variable UniformConstant
+             257:             TypePointer Input 18(int)
+      258(value):    257(ptr) Variable Input
+             260:             TypePointer Image 18(int)
+             266:      6(int) Constant 11
+             280:      6(int) Constant 12
+             294:      6(int) Constant 13
+             308:      6(int) Constant 14
+             322:      6(int) Constant 15
+             336:      6(int) Constant 16
+             350:      6(int) Constant 18
+             351:      6(int) Constant 17
+             359:     18(int) Constant 19
+             365:             TypeImage 6(int) 2D multi-sampled nonsampled format:R32i
              366:             TypePointer UniformConstant 365
-367(ui2DMSArray):    366(ptr) Variable UniformConstant
-             374:             TypeImage 12(float) 2D nonsampled format:Unknown
-             375:             TypePointer UniformConstant 374
-       376(wo2D):    375(ptr) Variable UniformConstant
-             380:             TypePointer Output 125(fvec4)
-   381(fragData):    380(ptr) Variable Output
-             386:             TypeBool
-             389:             TypeVector 386(bool) 4
-             392:             TypeVector 6(int) 4
-             393:             TypePointer Input 392(ivec4)
-       394(ic4D):    393(ptr) Variable Input
+     367(ii2DMS):    366(ptr) Variable UniformConstant
+             375:             TypeImage 18(int) 2D array multi-sampled nonsampled format:R32ui
+             376:             TypePointer UniformConstant 375
+377(ui2DMSArray):    376(ptr) Variable UniformConstant
+             384:             TypeImage 12(float) 2D nonsampled format:Unknown
+             385:             TypePointer UniformConstant 384
+       386(wo2D):    385(ptr) Variable UniformConstant
+             390:             TypePointer Output 136(fvec4)
+   391(fragData):    390(ptr) Variable Output
+             396:             TypeBool
+             399:             TypeVector 396(bool) 4
+             402:             TypeVector 6(int) 4
+             403:             TypePointer Input 402(ivec4)
+       404(ic4D):    403(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
            9(iv):      8(ptr) Variable Function
-          127(v):    126(ptr) Variable Function
-         229(ui):    228(ptr) Variable Function
+          138(v):    137(ptr) Variable Function
+         240(ui):    239(ptr) Variable Function
                               Store 9(iv) 11
               16:          13 Load 15(i1D)
               17:      6(int) ImageQuerySize 16
@@ -204,341 +204,356 @@
               31:    7(ivec3) Load 9(iv)
               32:   29(ivec2) VectorShuffle 31 31 0 1
               33:   29(ivec2) IAdd 32 30
-              34:    7(ivec3) Load 9(iv)
-              35:    7(ivec3) VectorShuffle 34 33 3 4 2
-                              Store 9(iv) 35
-              39:          36 Load 38(i3D)
-              40:    7(ivec3) ImageQuerySize 39
-              41:    7(ivec3) Load 9(iv)
-              42:    7(ivec3) IAdd 41 40
-                              Store 9(iv) 42
-              46:          43 Load 45(iCube)
-              47:   29(ivec2) ImageQuerySize 46
-              48:    7(ivec3) Load 9(iv)
-              49:   29(ivec2) VectorShuffle 48 48 0 1
-              50:   29(ivec2) IAdd 49 47
+              34:     20(ptr) AccessChain 9(iv) 19
+              35:      6(int) CompositeExtract 33 0
+                              Store 34 35
+              37:     20(ptr) AccessChain 9(iv) 36
+              38:      6(int) CompositeExtract 33 1
+                              Store 37 38
+              42:          39 Load 41(i3D)
+              43:    7(ivec3) ImageQuerySize 42
+              44:    7(ivec3) Load 9(iv)
+              45:    7(ivec3) IAdd 44 43
+                              Store 9(iv) 45
+              49:          46 Load 48(iCube)
+              50:   29(ivec2) ImageQuerySize 49
               51:    7(ivec3) Load 9(iv)
-              52:    7(ivec3) VectorShuffle 51 50 3 4 2
-                              Store 9(iv) 52
-              56:          53 Load 55(iCubeArray)
-              57:    7(ivec3) ImageQuerySize 56
-              58:    7(ivec3) Load 9(iv)
-              59:    7(ivec3) IAdd 58 57
-                              Store 9(iv) 59
-              63:          60 Load 62(i2DRect)
-              64:   29(ivec2) ImageQuerySize 63
-              65:    7(ivec3) Load 9(iv)
-              66:   29(ivec2) VectorShuffle 65 65 0 1
-              67:   29(ivec2) IAdd 66 64
-              68:    7(ivec3) Load 9(iv)
-              69:    7(ivec3) VectorShuffle 68 67 3 4 2
-                              Store 9(iv) 69
-              73:          70 Load 72(i1DArray)
-              74:   29(ivec2) ImageQuerySize 73
-              75:    7(ivec3) Load 9(iv)
-              76:   29(ivec2) VectorShuffle 75 75 0 1
-              77:   29(ivec2) IAdd 76 74
-              78:    7(ivec3) Load 9(iv)
-              79:    7(ivec3) VectorShuffle 78 77 3 4 2
-                              Store 9(iv) 79
-              83:          80 Load 82(i2DArray)
-              84:    7(ivec3) ImageQuerySize 83
-              85:    7(ivec3) Load 9(iv)
-              86:    7(ivec3) IAdd 85 84
-                              Store 9(iv) 86
-              90:          87 Load 89(iBuffer)
-              91:      6(int) ImageQuerySize 90
-              92:     20(ptr) AccessChain 9(iv) 19
-              93:      6(int) Load 92
-              94:      6(int) IAdd 93 91
-              95:     20(ptr) AccessChain 9(iv) 19
-                              Store 95 94
-              99:          96 Load 98(i2DMS)
-             100:   29(ivec2) ImageQuerySize 99
-             101:    7(ivec3) Load 9(iv)
-             102:   29(ivec2) VectorShuffle 101 101 0 1
-             103:   29(ivec2) IAdd 102 100
-             104:    7(ivec3) Load 9(iv)
-             105:    7(ivec3) VectorShuffle 104 103 3 4 2
-                              Store 9(iv) 105
-             109:         106 Load 108(i2DMSArray)
-             110:    7(ivec3) ImageQuerySize 109
-             111:    7(ivec3) Load 9(iv)
-             112:    7(ivec3) IAdd 111 110
-                              Store 9(iv) 112
-             113:          96 Load 98(i2DMS)
-             114:      6(int) ImageQuerySamples 113
-             115:     20(ptr) AccessChain 9(iv) 19
-             116:      6(int) Load 115
-             117:      6(int) IAdd 116 114
-             118:     20(ptr) AccessChain 9(iv) 19
-                              Store 118 117
-             119:         106 Load 108(i2DMSArray)
-             120:      6(int) ImageQuerySamples 119
-             121:     20(ptr) AccessChain 9(iv) 19
-             122:      6(int) Load 121
-             123:      6(int) IAdd 122 120
-             124:     20(ptr) AccessChain 9(iv) 19
-                              Store 124 123
-                              Store 127(v) 129
-             130:          13 Load 15(i1D)
-             133:      6(int) Load 132(ic1D)
-             134:  125(fvec4) ImageRead 130 133
-             135:  125(fvec4) Load 127(v)
-             136:  125(fvec4) FAdd 135 134
-                              Store 127(v) 136
-             137:          13 Load 15(i1D)
-             138:      6(int) Load 132(ic1D)
-             139:  125(fvec4) Load 127(v)
-                              ImageWrite 137 138 139
-             140:          25 Load 27(i2D)
-             143:   29(ivec2) Load 142(ic2D)
-             144:  125(fvec4) ImageRead 140 143
-             145:  125(fvec4) Load 127(v)
-             146:  125(fvec4) FAdd 145 144
-                              Store 127(v) 146
-             147:          25 Load 27(i2D)
-             148:   29(ivec2) Load 142(ic2D)
-             149:  125(fvec4) Load 127(v)
-                              ImageWrite 147 148 149
-             150:          36 Load 38(i3D)
-             153:    7(ivec3) Load 152(ic3D)
-             154:  125(fvec4) ImageRead 150 153
-             155:  125(fvec4) Load 127(v)
-             156:  125(fvec4) FAdd 155 154
-                              Store 127(v) 156
-             157:          36 Load 38(i3D)
-             158:    7(ivec3) Load 152(ic3D)
-             159:  125(fvec4) Load 127(v)
-                              ImageWrite 157 158 159
-             160:          43 Load 45(iCube)
-             161:    7(ivec3) Load 152(ic3D)
-             162:  125(fvec4) ImageRead 160 161
-             163:  125(fvec4) Load 127(v)
-             164:  125(fvec4) FAdd 163 162
-                              Store 127(v) 164
-             165:          43 Load 45(iCube)
-             166:    7(ivec3) Load 152(ic3D)
-             167:  125(fvec4) Load 127(v)
-                              ImageWrite 165 166 167
-             168:          53 Load 55(iCubeArray)
-             169:    7(ivec3) Load 152(ic3D)
-             170:  125(fvec4) ImageRead 168 169
-             171:  125(fvec4) Load 127(v)
-             172:  125(fvec4) FAdd 171 170
-                              Store 127(v) 172
-             173:          53 Load 55(iCubeArray)
-             174:    7(ivec3) Load 152(ic3D)
-             175:  125(fvec4) Load 127(v)
-                              ImageWrite 173 174 175
-             176:          60 Load 62(i2DRect)
-             177:   29(ivec2) Load 142(ic2D)
-             178:  125(fvec4) ImageRead 176 177
-             179:  125(fvec4) Load 127(v)
-             180:  125(fvec4) FAdd 179 178
-                              Store 127(v) 180
-             181:          60 Load 62(i2DRect)
-             182:   29(ivec2) Load 142(ic2D)
-             183:  125(fvec4) Load 127(v)
-                              ImageWrite 181 182 183
-             184:          70 Load 72(i1DArray)
-             185:   29(ivec2) Load 142(ic2D)
-             186:  125(fvec4) ImageRead 184 185
-             187:  125(fvec4) Load 127(v)
-             188:  125(fvec4) FAdd 187 186
-                              Store 127(v) 188
-             189:          70 Load 72(i1DArray)
-             190:   29(ivec2) Load 142(ic2D)
-             191:  125(fvec4) Load 127(v)
-                              ImageWrite 189 190 191
-             192:          80 Load 82(i2DArray)
-             193:    7(ivec3) Load 152(ic3D)
-             194:  125(fvec4) ImageRead 192 193
-             195:  125(fvec4) Load 127(v)
-             196:  125(fvec4) FAdd 195 194
-                              Store 127(v) 196
-             197:          80 Load 82(i2DArray)
-             198:    7(ivec3) Load 152(ic3D)
-             199:  125(fvec4) Load 127(v)
-                              ImageWrite 197 198 199
-             200:          87 Load 89(iBuffer)
-             201:      6(int) Load 132(ic1D)
-             202:  125(fvec4) ImageRead 200 201
-             203:  125(fvec4) Load 127(v)
-             204:  125(fvec4) FAdd 203 202
-                              Store 127(v) 204
-             205:          87 Load 89(iBuffer)
-             206:      6(int) Load 132(ic1D)
-             207:  125(fvec4) Load 127(v)
-                              ImageWrite 205 206 207
-             208:          96 Load 98(i2DMS)
-             209:   29(ivec2) Load 142(ic2D)
-             211:  125(fvec4) ImageRead 208 209 Sample 210
-             212:  125(fvec4) Load 127(v)
-             213:  125(fvec4) FAdd 212 211
-                              Store 127(v) 213
-             214:          96 Load 98(i2DMS)
-             215:   29(ivec2) Load 142(ic2D)
-             217:  125(fvec4) Load 127(v)
-                              ImageWrite 214 215 217 Sample 216
-             218:         106 Load 108(i2DMSArray)
-             219:    7(ivec3) Load 152(ic3D)
-             221:  125(fvec4) ImageRead 218 219 Sample 220
-             222:  125(fvec4) Load 127(v)
-             223:  125(fvec4) FAdd 222 221
-                              Store 127(v) 223
-             224:         106 Load 108(i2DMSArray)
-             225:    7(ivec3) Load 152(ic3D)
-             227:  125(fvec4) Load 127(v)
-                              ImageWrite 224 225 227 Sample 226
-                              Store 229(ui) 19
-             233:      6(int) Load 132(ic1D)
-             236:    235(ptr) ImageTexelPointer 232(ii1D) 233 19
-             238:      6(int) AtomicIAdd 236 237 19 234
-             239:     20(ptr) AccessChain 9(iv) 19
-             240:      6(int) Load 239
-             241:      6(int) IAdd 240 238
-             242:     20(ptr) AccessChain 9(iv) 19
-                              Store 242 241
-             246:   29(ivec2) Load 142(ic2D)
-             249:     18(int) Load 248(value)
-             251:    250(ptr) ImageTexelPointer 245(ui2D) 246 19
-             252:     18(int) AtomicIAdd 251 237 19 249
-             253:     18(int) Load 229(ui)
-             254:     18(int) IAdd 253 252
-                              Store 229(ui) 254
-             255:      6(int) Load 132(ic1D)
-             257:    235(ptr) ImageTexelPointer 232(ii1D) 255 19
-             258:      6(int) AtomicSMin 257 237 19 256
-             259:     20(ptr) AccessChain 9(iv) 19
-             260:      6(int) Load 259
-             261:      6(int) IAdd 260 258
-             262:     20(ptr) AccessChain 9(iv) 19
-                              Store 262 261
-             263:   29(ivec2) Load 142(ic2D)
-             264:     18(int) Load 248(value)
-             265:    250(ptr) ImageTexelPointer 245(ui2D) 263 19
-             266:     18(int) AtomicUMin 265 237 19 264
-             267:     18(int) Load 229(ui)
-             268:     18(int) IAdd 267 266
-                              Store 229(ui) 268
-             269:      6(int) Load 132(ic1D)
-             271:    235(ptr) ImageTexelPointer 232(ii1D) 269 19
-             272:      6(int) AtomicSMax 271 237 19 270
-             273:     20(ptr) AccessChain 9(iv) 19
-             274:      6(int) Load 273
-             275:      6(int) IAdd 274 272
-             276:     20(ptr) AccessChain 9(iv) 19
-                              Store 276 275
-             277:   29(ivec2) Load 142(ic2D)
-             278:     18(int) Load 248(value)
-             279:    250(ptr) ImageTexelPointer 245(ui2D) 277 19
-             280:     18(int) AtomicUMax 279 237 19 278
-             281:     18(int) Load 229(ui)
-             282:     18(int) IAdd 281 280
-                              Store 229(ui) 282
-             283:      6(int) Load 132(ic1D)
-             285:    235(ptr) ImageTexelPointer 232(ii1D) 283 19
-             286:      6(int) AtomicAnd 285 237 19 284
-             287:     20(ptr) AccessChain 9(iv) 19
-             288:      6(int) Load 287
-             289:      6(int) IAdd 288 286
-             290:     20(ptr) AccessChain 9(iv) 19
-                              Store 290 289
-             291:   29(ivec2) Load 142(ic2D)
-             292:     18(int) Load 248(value)
-             293:    250(ptr) ImageTexelPointer 245(ui2D) 291 19
-             294:     18(int) AtomicAnd 293 237 19 292
-             295:     18(int) Load 229(ui)
-             296:     18(int) IAdd 295 294
-                              Store 229(ui) 296
-             297:      6(int) Load 132(ic1D)
-             299:    235(ptr) ImageTexelPointer 232(ii1D) 297 19
-             300:      6(int) AtomicOr 299 237 19 298
-             301:     20(ptr) AccessChain 9(iv) 19
-             302:      6(int) Load 301
-             303:      6(int) IAdd 302 300
-             304:     20(ptr) AccessChain 9(iv) 19
-                              Store 304 303
-             305:   29(ivec2) Load 142(ic2D)
-             306:     18(int) Load 248(value)
-             307:    250(ptr) ImageTexelPointer 245(ui2D) 305 19
-             308:     18(int) AtomicOr 307 237 19 306
-             309:     18(int) Load 229(ui)
-             310:     18(int) IAdd 309 308
-                              Store 229(ui) 310
-             311:      6(int) Load 132(ic1D)
-             313:    235(ptr) ImageTexelPointer 232(ii1D) 311 19
-             314:      6(int) AtomicXor 313 237 19 312
-             315:     20(ptr) AccessChain 9(iv) 19
-             316:      6(int) Load 315
-             317:      6(int) IAdd 316 314
-             318:     20(ptr) AccessChain 9(iv) 19
-                              Store 318 317
-             319:   29(ivec2) Load 142(ic2D)
-             320:     18(int) Load 248(value)
-             321:    250(ptr) ImageTexelPointer 245(ui2D) 319 19
-             322:     18(int) AtomicXor 321 237 19 320
-             323:     18(int) Load 229(ui)
-             324:     18(int) IAdd 323 322
-                              Store 229(ui) 324
-             325:      6(int) Load 132(ic1D)
-             327:    235(ptr) ImageTexelPointer 232(ii1D) 325 19
-             328:      6(int) AtomicExchange 327 237 19 326
-             329:     20(ptr) AccessChain 9(iv) 19
-             330:      6(int) Load 329
-             331:      6(int) IAdd 330 328
-             332:     20(ptr) AccessChain 9(iv) 19
-                              Store 332 331
-             333:   29(ivec2) Load 142(ic2D)
-             334:     18(int) Load 248(value)
-             335:    250(ptr) ImageTexelPointer 245(ui2D) 333 19
-             336:     18(int) AtomicExchange 335 237 19 334
-             337:     18(int) Load 229(ui)
-             338:     18(int) IAdd 337 336
-                              Store 229(ui) 338
-             339:      6(int) Load 132(ic1D)
-             342:    235(ptr) ImageTexelPointer 232(ii1D) 339 19
-             343:      6(int) AtomicCompareExchange 342 237 19 19 341 340
-             344:     20(ptr) AccessChain 9(iv) 19
-             345:      6(int) Load 344
-             346:      6(int) IAdd 345 343
-             347:     20(ptr) AccessChain 9(iv) 19
-                              Store 347 346
-             348:   29(ivec2) Load 142(ic2D)
-             350:     18(int) Load 248(value)
-             351:    250(ptr) ImageTexelPointer 245(ui2D) 348 19
-             352:     18(int) AtomicCompareExchange 351 237 19 19 350 349
-             353:     18(int) Load 229(ui)
-             354:     18(int) IAdd 353 352
-                              Store 229(ui) 354
-             358:   29(ivec2) Load 142(ic2D)
-             359:    235(ptr) ImageTexelPointer 357(ii2DMS) 358 216
-             360:      6(int) AtomicCompareExchange 359 237 19 19 341 340
-             361:     20(ptr) AccessChain 9(iv) 19
-             362:      6(int) Load 361
-             363:      6(int) IAdd 362 360
-             364:     20(ptr) AccessChain 9(iv) 19
-                              Store 364 363
-             368:    7(ivec3) Load 152(ic3D)
-             369:     18(int) Load 248(value)
-             370:    250(ptr) ImageTexelPointer 367(ui2DMSArray) 368 220
-             371:     18(int) AtomicCompareExchange 370 237 19 19 369 349
-             372:     18(int) Load 229(ui)
-             373:     18(int) IAdd 372 371
-                              Store 229(ui) 373
-             377:         374 Load 376(wo2D)
-             378:   29(ivec2) Load 142(ic2D)
-             379:  125(fvec4) Load 127(v)
-                              ImageWrite 377 378 379
-             382:     18(int) Load 229(ui)
-             383:     20(ptr) AccessChain 9(iv) 237
-             384:      6(int) Load 383
-             385:     18(int) Bitcast 384
-             387:   386(bool) INotEqual 382 385
-             388:  125(fvec4) Load 127(v)
-             390:  389(bvec4) CompositeConstruct 387 387 387 387
-             391:  125(fvec4) Select 390 388 129
-                              Store 381(fragData) 391
+              52:   29(ivec2) VectorShuffle 51 51 0 1
+              53:   29(ivec2) IAdd 52 50
+              54:     20(ptr) AccessChain 9(iv) 19
+              55:      6(int) CompositeExtract 53 0
+                              Store 54 55
+              56:     20(ptr) AccessChain 9(iv) 36
+              57:      6(int) CompositeExtract 53 1
+                              Store 56 57
+              61:          58 Load 60(iCubeArray)
+              62:    7(ivec3) ImageQuerySize 61
+              63:    7(ivec3) Load 9(iv)
+              64:    7(ivec3) IAdd 63 62
+                              Store 9(iv) 64
+              68:          65 Load 67(i2DRect)
+              69:   29(ivec2) ImageQuerySize 68
+              70:    7(ivec3) Load 9(iv)
+              71:   29(ivec2) VectorShuffle 70 70 0 1
+              72:   29(ivec2) IAdd 71 69
+              73:     20(ptr) AccessChain 9(iv) 19
+              74:      6(int) CompositeExtract 72 0
+                              Store 73 74
+              75:     20(ptr) AccessChain 9(iv) 36
+              76:      6(int) CompositeExtract 72 1
+                              Store 75 76
+              80:          77 Load 79(i1DArray)
+              81:   29(ivec2) ImageQuerySize 80
+              82:    7(ivec3) Load 9(iv)
+              83:   29(ivec2) VectorShuffle 82 82 0 1
+              84:   29(ivec2) IAdd 83 81
+              85:     20(ptr) AccessChain 9(iv) 19
+              86:      6(int) CompositeExtract 84 0
+                              Store 85 86
+              87:     20(ptr) AccessChain 9(iv) 36
+              88:      6(int) CompositeExtract 84 1
+                              Store 87 88
+              92:          89 Load 91(i2DArray)
+              93:    7(ivec3) ImageQuerySize 92
+              94:    7(ivec3) Load 9(iv)
+              95:    7(ivec3) IAdd 94 93
+                              Store 9(iv) 95
+              99:          96 Load 98(iBuffer)
+             100:      6(int) ImageQuerySize 99
+             101:     20(ptr) AccessChain 9(iv) 19
+             102:      6(int) Load 101
+             103:      6(int) IAdd 102 100
+             104:     20(ptr) AccessChain 9(iv) 19
+                              Store 104 103
+             108:         105 Load 107(i2DMS)
+             109:   29(ivec2) ImageQuerySize 108
+             110:    7(ivec3) Load 9(iv)
+             111:   29(ivec2) VectorShuffle 110 110 0 1
+             112:   29(ivec2) IAdd 111 109
+             113:     20(ptr) AccessChain 9(iv) 19
+             114:      6(int) CompositeExtract 112 0
+                              Store 113 114
+             115:     20(ptr) AccessChain 9(iv) 36
+             116:      6(int) CompositeExtract 112 1
+                              Store 115 116
+             120:         117 Load 119(i2DMSArray)
+             121:    7(ivec3) ImageQuerySize 120
+             122:    7(ivec3) Load 9(iv)
+             123:    7(ivec3) IAdd 122 121
+                              Store 9(iv) 123
+             124:         105 Load 107(i2DMS)
+             125:      6(int) ImageQuerySamples 124
+             126:     20(ptr) AccessChain 9(iv) 19
+             127:      6(int) Load 126
+             128:      6(int) IAdd 127 125
+             129:     20(ptr) AccessChain 9(iv) 19
+                              Store 129 128
+             130:         117 Load 119(i2DMSArray)
+             131:      6(int) ImageQuerySamples 130
+             132:     20(ptr) AccessChain 9(iv) 19
+             133:      6(int) Load 132
+             134:      6(int) IAdd 133 131
+             135:     20(ptr) AccessChain 9(iv) 19
+                              Store 135 134
+                              Store 138(v) 140
+             141:          13 Load 15(i1D)
+             144:      6(int) Load 143(ic1D)
+             145:  136(fvec4) ImageRead 141 144
+             146:  136(fvec4) Load 138(v)
+             147:  136(fvec4) FAdd 146 145
+                              Store 138(v) 147
+             148:          13 Load 15(i1D)
+             149:      6(int) Load 143(ic1D)
+             150:  136(fvec4) Load 138(v)
+                              ImageWrite 148 149 150
+             151:          25 Load 27(i2D)
+             154:   29(ivec2) Load 153(ic2D)
+             155:  136(fvec4) ImageRead 151 154
+             156:  136(fvec4) Load 138(v)
+             157:  136(fvec4) FAdd 156 155
+                              Store 138(v) 157
+             158:          25 Load 27(i2D)
+             159:   29(ivec2) Load 153(ic2D)
+             160:  136(fvec4) Load 138(v)
+                              ImageWrite 158 159 160
+             161:          39 Load 41(i3D)
+             164:    7(ivec3) Load 163(ic3D)
+             165:  136(fvec4) ImageRead 161 164
+             166:  136(fvec4) Load 138(v)
+             167:  136(fvec4) FAdd 166 165
+                              Store 138(v) 167
+             168:          39 Load 41(i3D)
+             169:    7(ivec3) Load 163(ic3D)
+             170:  136(fvec4) Load 138(v)
+                              ImageWrite 168 169 170
+             171:          46 Load 48(iCube)
+             172:    7(ivec3) Load 163(ic3D)
+             173:  136(fvec4) ImageRead 171 172
+             174:  136(fvec4) Load 138(v)
+             175:  136(fvec4) FAdd 174 173
+                              Store 138(v) 175
+             176:          46 Load 48(iCube)
+             177:    7(ivec3) Load 163(ic3D)
+             178:  136(fvec4) Load 138(v)
+                              ImageWrite 176 177 178
+             179:          58 Load 60(iCubeArray)
+             180:    7(ivec3) Load 163(ic3D)
+             181:  136(fvec4) ImageRead 179 180
+             182:  136(fvec4) Load 138(v)
+             183:  136(fvec4) FAdd 182 181
+                              Store 138(v) 183
+             184:          58 Load 60(iCubeArray)
+             185:    7(ivec3) Load 163(ic3D)
+             186:  136(fvec4) Load 138(v)
+                              ImageWrite 184 185 186
+             187:          65 Load 67(i2DRect)
+             188:   29(ivec2) Load 153(ic2D)
+             189:  136(fvec4) ImageRead 187 188
+             190:  136(fvec4) Load 138(v)
+             191:  136(fvec4) FAdd 190 189
+                              Store 138(v) 191
+             192:          65 Load 67(i2DRect)
+             193:   29(ivec2) Load 153(ic2D)
+             194:  136(fvec4) Load 138(v)
+                              ImageWrite 192 193 194
+             195:          77 Load 79(i1DArray)
+             196:   29(ivec2) Load 153(ic2D)
+             197:  136(fvec4) ImageRead 195 196
+             198:  136(fvec4) Load 138(v)
+             199:  136(fvec4) FAdd 198 197
+                              Store 138(v) 199
+             200:          77 Load 79(i1DArray)
+             201:   29(ivec2) Load 153(ic2D)
+             202:  136(fvec4) Load 138(v)
+                              ImageWrite 200 201 202
+             203:          89 Load 91(i2DArray)
+             204:    7(ivec3) Load 163(ic3D)
+             205:  136(fvec4) ImageRead 203 204
+             206:  136(fvec4) Load 138(v)
+             207:  136(fvec4) FAdd 206 205
+                              Store 138(v) 207
+             208:          89 Load 91(i2DArray)
+             209:    7(ivec3) Load 163(ic3D)
+             210:  136(fvec4) Load 138(v)
+                              ImageWrite 208 209 210
+             211:          96 Load 98(iBuffer)
+             212:      6(int) Load 143(ic1D)
+             213:  136(fvec4) ImageRead 211 212
+             214:  136(fvec4) Load 138(v)
+             215:  136(fvec4) FAdd 214 213
+                              Store 138(v) 215
+             216:          96 Load 98(iBuffer)
+             217:      6(int) Load 143(ic1D)
+             218:  136(fvec4) Load 138(v)
+                              ImageWrite 216 217 218
+             219:         105 Load 107(i2DMS)
+             220:   29(ivec2) Load 153(ic2D)
+             222:  136(fvec4) ImageRead 219 220 Sample 221
+             223:  136(fvec4) Load 138(v)
+             224:  136(fvec4) FAdd 223 222
+                              Store 138(v) 224
+             225:         105 Load 107(i2DMS)
+             226:   29(ivec2) Load 153(ic2D)
+             228:  136(fvec4) Load 138(v)
+                              ImageWrite 225 226 228 Sample 227
+             229:         117 Load 119(i2DMSArray)
+             230:    7(ivec3) Load 163(ic3D)
+             232:  136(fvec4) ImageRead 229 230 Sample 231
+             233:  136(fvec4) Load 138(v)
+             234:  136(fvec4) FAdd 233 232
+                              Store 138(v) 234
+             235:         117 Load 119(i2DMSArray)
+             236:    7(ivec3) Load 163(ic3D)
+             238:  136(fvec4) Load 138(v)
+                              ImageWrite 235 236 238 Sample 237
+                              Store 240(ui) 19
+             244:      6(int) Load 143(ic1D)
+             247:    246(ptr) ImageTexelPointer 243(ii1D) 244 19
+             248:      6(int) AtomicIAdd 247 36 19 245
+             249:     20(ptr) AccessChain 9(iv) 19
+             250:      6(int) Load 249
+             251:      6(int) IAdd 250 248
+             252:     20(ptr) AccessChain 9(iv) 19
+                              Store 252 251
+             256:   29(ivec2) Load 153(ic2D)
+             259:     18(int) Load 258(value)
+             261:    260(ptr) ImageTexelPointer 255(ui2D) 256 19
+             262:     18(int) AtomicIAdd 261 36 19 259
+             263:     18(int) Load 240(ui)
+             264:     18(int) IAdd 263 262
+                              Store 240(ui) 264
+             265:      6(int) Load 143(ic1D)
+             267:    246(ptr) ImageTexelPointer 243(ii1D) 265 19
+             268:      6(int) AtomicSMin 267 36 19 266
+             269:     20(ptr) AccessChain 9(iv) 19
+             270:      6(int) Load 269
+             271:      6(int) IAdd 270 268
+             272:     20(ptr) AccessChain 9(iv) 19
+                              Store 272 271
+             273:   29(ivec2) Load 153(ic2D)
+             274:     18(int) Load 258(value)
+             275:    260(ptr) ImageTexelPointer 255(ui2D) 273 19
+             276:     18(int) AtomicUMin 275 36 19 274
+             277:     18(int) Load 240(ui)
+             278:     18(int) IAdd 277 276
+                              Store 240(ui) 278
+             279:      6(int) Load 143(ic1D)
+             281:    246(ptr) ImageTexelPointer 243(ii1D) 279 19
+             282:      6(int) AtomicSMax 281 36 19 280
+             283:     20(ptr) AccessChain 9(iv) 19
+             284:      6(int) Load 283
+             285:      6(int) IAdd 284 282
+             286:     20(ptr) AccessChain 9(iv) 19
+                              Store 286 285
+             287:   29(ivec2) Load 153(ic2D)
+             288:     18(int) Load 258(value)
+             289:    260(ptr) ImageTexelPointer 255(ui2D) 287 19
+             290:     18(int) AtomicUMax 289 36 19 288
+             291:     18(int) Load 240(ui)
+             292:     18(int) IAdd 291 290
+                              Store 240(ui) 292
+             293:      6(int) Load 143(ic1D)
+             295:    246(ptr) ImageTexelPointer 243(ii1D) 293 19
+             296:      6(int) AtomicAnd 295 36 19 294
+             297:     20(ptr) AccessChain 9(iv) 19
+             298:      6(int) Load 297
+             299:      6(int) IAdd 298 296
+             300:     20(ptr) AccessChain 9(iv) 19
+                              Store 300 299
+             301:   29(ivec2) Load 153(ic2D)
+             302:     18(int) Load 258(value)
+             303:    260(ptr) ImageTexelPointer 255(ui2D) 301 19
+             304:     18(int) AtomicAnd 303 36 19 302
+             305:     18(int) Load 240(ui)
+             306:     18(int) IAdd 305 304
+                              Store 240(ui) 306
+             307:      6(int) Load 143(ic1D)
+             309:    246(ptr) ImageTexelPointer 243(ii1D) 307 19
+             310:      6(int) AtomicOr 309 36 19 308
+             311:     20(ptr) AccessChain 9(iv) 19
+             312:      6(int) Load 311
+             313:      6(int) IAdd 312 310
+             314:     20(ptr) AccessChain 9(iv) 19
+                              Store 314 313
+             315:   29(ivec2) Load 153(ic2D)
+             316:     18(int) Load 258(value)
+             317:    260(ptr) ImageTexelPointer 255(ui2D) 315 19
+             318:     18(int) AtomicOr 317 36 19 316
+             319:     18(int) Load 240(ui)
+             320:     18(int) IAdd 319 318
+                              Store 240(ui) 320
+             321:      6(int) Load 143(ic1D)
+             323:    246(ptr) ImageTexelPointer 243(ii1D) 321 19
+             324:      6(int) AtomicXor 323 36 19 322
+             325:     20(ptr) AccessChain 9(iv) 19
+             326:      6(int) Load 325
+             327:      6(int) IAdd 326 324
+             328:     20(ptr) AccessChain 9(iv) 19
+                              Store 328 327
+             329:   29(ivec2) Load 153(ic2D)
+             330:     18(int) Load 258(value)
+             331:    260(ptr) ImageTexelPointer 255(ui2D) 329 19
+             332:     18(int) AtomicXor 331 36 19 330
+             333:     18(int) Load 240(ui)
+             334:     18(int) IAdd 333 332
+                              Store 240(ui) 334
+             335:      6(int) Load 143(ic1D)
+             337:    246(ptr) ImageTexelPointer 243(ii1D) 335 19
+             338:      6(int) AtomicExchange 337 36 19 336
+             339:     20(ptr) AccessChain 9(iv) 19
+             340:      6(int) Load 339
+             341:      6(int) IAdd 340 338
+             342:     20(ptr) AccessChain 9(iv) 19
+                              Store 342 341
+             343:   29(ivec2) Load 153(ic2D)
+             344:     18(int) Load 258(value)
+             345:    260(ptr) ImageTexelPointer 255(ui2D) 343 19
+             346:     18(int) AtomicExchange 345 36 19 344
+             347:     18(int) Load 240(ui)
+             348:     18(int) IAdd 347 346
+                              Store 240(ui) 348
+             349:      6(int) Load 143(ic1D)
+             352:    246(ptr) ImageTexelPointer 243(ii1D) 349 19
+             353:      6(int) AtomicCompareExchange 352 36 19 19 351 350
+             354:     20(ptr) AccessChain 9(iv) 19
+             355:      6(int) Load 354
+             356:      6(int) IAdd 355 353
+             357:     20(ptr) AccessChain 9(iv) 19
+                              Store 357 356
+             358:   29(ivec2) Load 153(ic2D)
+             360:     18(int) Load 258(value)
+             361:    260(ptr) ImageTexelPointer 255(ui2D) 358 19
+             362:     18(int) AtomicCompareExchange 361 36 19 19 360 359
+             363:     18(int) Load 240(ui)
+             364:     18(int) IAdd 363 362
+                              Store 240(ui) 364
+             368:   29(ivec2) Load 153(ic2D)
+             369:    246(ptr) ImageTexelPointer 367(ii2DMS) 368 227
+             370:      6(int) AtomicCompareExchange 369 36 19 19 351 350
+             371:     20(ptr) AccessChain 9(iv) 19
+             372:      6(int) Load 371
+             373:      6(int) IAdd 372 370
+             374:     20(ptr) AccessChain 9(iv) 19
+                              Store 374 373
+             378:    7(ivec3) Load 163(ic3D)
+             379:     18(int) Load 258(value)
+             380:    260(ptr) ImageTexelPointer 377(ui2DMSArray) 378 231
+             381:     18(int) AtomicCompareExchange 380 36 19 19 379 359
+             382:     18(int) Load 240(ui)
+             383:     18(int) IAdd 382 381
+                              Store 240(ui) 383
+             387:         384 Load 386(wo2D)
+             388:   29(ivec2) Load 153(ic2D)
+             389:  136(fvec4) Load 138(v)
+                              ImageWrite 387 388 389
+             392:     18(int) Load 240(ui)
+             393:     20(ptr) AccessChain 9(iv) 36
+             394:      6(int) Load 393
+             395:     18(int) Bitcast 394
+             397:   396(bool) INotEqual 392 395
+             398:  136(fvec4) Load 138(v)
+             400:  399(bvec4) CompositeConstruct 397 397 397 397
+             401:  136(fvec4) Select 400 398 140
+                              Store 391(fragData) 401
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.int16.amd.frag.out b/Test/baseResults/spv.int16.amd.frag.out
index 50dbe6c..676d99c 100644
--- a/Test/baseResults/spv.int16.amd.frag.out
+++ b/Test/baseResults/spv.int16.amd.frag.out
@@ -1,7 +1,7 @@
 spv.int16.amd.frag
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 560
+// Id's are bound by 576
 
                               Capability Shader
                               Capability Float16
@@ -14,7 +14,7 @@
                               Extension  "SPV_KHR_16bit_storage"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 519 521
+                              EntryPoint Fragment 4  "main" 535 537
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 450
                               SourceExtension  "GL_AMD_gpu_shader_half_float"
@@ -54,66 +54,66 @@
                               Name 393  "f16v"
                               Name 396  "exp"
                               Name 397  "ResType"
-                              Name 418  "packi"
-                              Name 423  "packu"
-                              Name 432  "packi64"
-                              Name 441  "packu64"
-                              Name 450  "bv"
-                              Name 515  "Block"
-                              MemberName 515(Block) 0  "i16v"
-                              MemberName 515(Block) 1  "u16"
-                              Name 517  "block"
-                              Name 519  "iu16v"
-                              Name 521  "ii16"
-                              Name 522  "si64"
-                              Name 523  "su64"
-                              Name 524  "si"
-                              Name 525  "su"
-                              Name 526  "sb"
-                              Name 527  "si16"
-                              Name 528  "su16"
-                              Name 529  "i16_to_b"
-                              Name 530  "u16_to_b"
-                              Name 531  "b_to_i16"
-                              Name 532  "b_to_u16"
-                              Name 533  "i16_to_i"
-                              Name 535  "u16_to_i"
-                              Name 536  "i_to_i16"
-                              Name 538  "i_to_u16"
-                              Name 540  "i16_to_u"
-                              Name 541  "u16_to_u"
-                              Name 543  "u_to_i16"
-                              Name 544  "u_to_u16"
-                              Name 545  "i16_to_i64"
-                              Name 548  "u16_to_i64"
-                              Name 549  "i64_to_i16"
-                              Name 551  "i64_to_u16"
-                              Name 553  "i16_to_u64"
-                              Name 554  "u16_to_u64"
-                              Name 556  "u64_to_i16"
-                              Name 557  "u64_to_u16"
-                              Name 558  "i16_to_u16"
-                              Name 559  "u16_to_i16"
+                              Name 420  "packi"
+                              Name 425  "packu"
+                              Name 436  "packi64"
+                              Name 445  "packu64"
+                              Name 454  "bv"
+                              Name 531  "Block"
+                              MemberName 531(Block) 0  "i16v"
+                              MemberName 531(Block) 1  "u16"
+                              Name 533  "block"
+                              Name 535  "iu16v"
+                              Name 537  "ii16"
+                              Name 538  "si64"
+                              Name 539  "su64"
+                              Name 540  "si"
+                              Name 541  "su"
+                              Name 542  "sb"
+                              Name 543  "si16"
+                              Name 544  "su16"
+                              Name 545  "i16_to_b"
+                              Name 546  "u16_to_b"
+                              Name 547  "b_to_i16"
+                              Name 548  "b_to_u16"
+                              Name 549  "i16_to_i"
+                              Name 551  "u16_to_i"
+                              Name 552  "i_to_i16"
+                              Name 554  "i_to_u16"
+                              Name 556  "i16_to_u"
+                              Name 557  "u16_to_u"
+                              Name 559  "u_to_i16"
+                              Name 560  "u_to_u16"
+                              Name 561  "i16_to_i64"
+                              Name 564  "u16_to_i64"
+                              Name 565  "i64_to_i16"
+                              Name 567  "i64_to_u16"
+                              Name 569  "i16_to_u64"
+                              Name 570  "u16_to_u64"
+                              Name 572  "u64_to_i16"
+                              Name 573  "u64_to_u16"
+                              Name 574  "i16_to_u16"
+                              Name 575  "u16_to_i16"
                               MemberDecorate 25(Uniforms) 0 Offset 0
                               Decorate 25(Uniforms) Block
                               Decorate 27 DescriptorSet 0
                               Decorate 27 Binding 0
-                              MemberDecorate 515(Block) 0 Offset 0
-                              MemberDecorate 515(Block) 1 Offset 6
-                              Decorate 515(Block) Block
-                              Decorate 517(block) DescriptorSet 0
-                              Decorate 517(block) Binding 1
-                              Decorate 519(iu16v) Flat
-                              Decorate 519(iu16v) Location 0
-                              Decorate 521(ii16) Flat
-                              Decorate 521(ii16) Location 1
-                              Decorate 522(si64) SpecId 100
-                              Decorate 523(su64) SpecId 101
-                              Decorate 524(si) SpecId 102
-                              Decorate 525(su) SpecId 103
-                              Decorate 526(sb) SpecId 104
-                              Decorate 527(si16) SpecId 105
-                              Decorate 528(su16) SpecId 106
+                              MemberDecorate 531(Block) 0 Offset 0
+                              MemberDecorate 531(Block) 1 Offset 6
+                              Decorate 531(Block) Block
+                              Decorate 533(block) DescriptorSet 0
+                              Decorate 533(block) Binding 1
+                              Decorate 535(iu16v) Flat
+                              Decorate 535(iu16v) Location 0
+                              Decorate 537(ii16) Flat
+                              Decorate 537(ii16) Location 1
+                              Decorate 538(si64) SpecId 100
+                              Decorate 539(su64) SpecId 101
+                              Decorate 540(si) SpecId 102
+                              Decorate 541(su) SpecId 103
+                              Decorate 542(sb) SpecId 104
+                              Decorate 543(si16) SpecId 105
+                              Decorate 544(su16) SpecId 106
                2:             TypeVoid
                3:             TypeFunction 2
               14:             TypeInt 16 0
@@ -194,62 +194,62 @@
              395:             TypePointer Function 54(i16vec3)
     397(ResType):             TypeStruct 391(f16vec3) 54(i16vec3)
              407:             TypePointer Function 261(float16_t)
-             431:             TypePointer Function 273(int64_t)
-             434:             TypeVector 17(int16_t) 4
-             440:             TypePointer Function 285(int64_t)
-             443:             TypeVector 14(int16_t) 4
-             449:             TypePointer Function 388(bvec3)
-      515(Block):             TypeStruct 54(i16vec3) 14(int16_t)
-             516:             TypePointer Uniform 515(Block)
-      517(block):    516(ptr) Variable Uniform
-             518:             TypePointer Input 49(i16vec3)
-      519(iu16v):    518(ptr) Variable Input
-             520:             TypePointer Input 17(int16_t)
-       521(ii16):    520(ptr) Variable Input
-       522(si64):273(int64_t) SpecConstant 4294967286 4294967295
-       523(su64):285(int64_t) SpecConstant 20 0
-         524(si):     28(int) SpecConstant 4294967291
-         525(su):     18(int) SpecConstant 4
-         526(sb):   125(bool) SpecConstantTrue
-       527(si16): 17(int16_t) SpecConstant 4294967291
-       528(su16): 14(int16_t) SpecConstant 4
-   529(i16_to_b):   125(bool) SpecConstantOp 171 527(si16) 202
-   530(u16_to_b):   125(bool) SpecConstantOp 171 528(su16) 202
-   531(b_to_i16): 17(int16_t) SpecConstantOp 169 526(sb) 53 194
-   532(b_to_u16): 14(int16_t) SpecConstantOp 169 526(sb) 203 202
-   533(i16_to_i):     28(int) SpecConstantOp 114 527(si16)
-             534:     18(int) SpecConstantOp 113 528(su16)
-   535(u16_to_i):     28(int) SpecConstantOp 128 534 128
-   536(i_to_i16): 17(int16_t) SpecConstantOp 114 524(si)
-             537: 17(int16_t) SpecConstantOp 114 524(si)
-   538(i_to_u16): 14(int16_t) SpecConstantOp 128 537 202
-             539:     28(int) SpecConstantOp 114 527(si16)
-   540(i16_to_u):     18(int) SpecConstantOp 128 539 128
-   541(u16_to_u):     18(int) SpecConstantOp 113 528(su16)
-             542: 14(int16_t) SpecConstantOp 113 525(su)
-   543(u_to_i16): 17(int16_t) SpecConstantOp 128 542 202
-   544(u_to_u16): 14(int16_t) SpecConstantOp 113 525(su)
- 545(i16_to_i64):273(int64_t) SpecConstantOp 114 527(si16)
-             546:285(int64_t) SpecConstantOp 113 528(su16)
-             547:285(int64_t) Constant 0 0
- 548(u16_to_i64):273(int64_t) SpecConstantOp 128 546 547
- 549(i64_to_i16): 17(int16_t) SpecConstantOp 114 522(si64)
-             550: 17(int16_t) SpecConstantOp 114 522(si64)
- 551(i64_to_u16): 14(int16_t) SpecConstantOp 128 550 202
-             552:273(int64_t) SpecConstantOp 114 527(si16)
- 553(i16_to_u64):285(int64_t) SpecConstantOp 128 552 547
- 554(u16_to_u64):285(int64_t) SpecConstantOp 113 528(su16)
-             555: 14(int16_t) SpecConstantOp 113 523(su64)
- 556(u64_to_i16): 17(int16_t) SpecConstantOp 128 555 202
- 557(u64_to_u16): 14(int16_t) SpecConstantOp 113 523(su64)
- 558(i16_to_u16): 14(int16_t) SpecConstantOp 128 527(si16) 202
- 559(u16_to_i16): 17(int16_t) SpecConstantOp 128 528(su16) 202
+             435:             TypePointer Function 273(int64_t)
+             438:             TypeVector 17(int16_t) 4
+             444:             TypePointer Function 285(int64_t)
+             447:             TypeVector 14(int16_t) 4
+             453:             TypePointer Function 388(bvec3)
+      531(Block):             TypeStruct 54(i16vec3) 14(int16_t)
+             532:             TypePointer Uniform 531(Block)
+      533(block):    532(ptr) Variable Uniform
+             534:             TypePointer Input 49(i16vec3)
+      535(iu16v):    534(ptr) Variable Input
+             536:             TypePointer Input 17(int16_t)
+       537(ii16):    536(ptr) Variable Input
+       538(si64):273(int64_t) SpecConstant 4294967286 4294967295
+       539(su64):285(int64_t) SpecConstant 20 0
+         540(si):     28(int) SpecConstant 4294967291
+         541(su):     18(int) SpecConstant 4
+         542(sb):   125(bool) SpecConstantTrue
+       543(si16): 17(int16_t) SpecConstant 4294967291
+       544(su16): 14(int16_t) SpecConstant 4
+   545(i16_to_b):   125(bool) SpecConstantOp 171 543(si16) 202
+   546(u16_to_b):   125(bool) SpecConstantOp 171 544(su16) 202
+   547(b_to_i16): 17(int16_t) SpecConstantOp 169 542(sb) 53 194
+   548(b_to_u16): 14(int16_t) SpecConstantOp 169 542(sb) 203 202
+   549(i16_to_i):     28(int) SpecConstantOp 114 543(si16)
+             550:     18(int) SpecConstantOp 113 544(su16)
+   551(u16_to_i):     28(int) SpecConstantOp 128 550 128
+   552(i_to_i16): 17(int16_t) SpecConstantOp 114 540(si)
+             553: 17(int16_t) SpecConstantOp 114 540(si)
+   554(i_to_u16): 14(int16_t) SpecConstantOp 128 553 202
+             555:     28(int) SpecConstantOp 114 543(si16)
+   556(i16_to_u):     18(int) SpecConstantOp 128 555 128
+   557(u16_to_u):     18(int) SpecConstantOp 113 544(su16)
+             558: 14(int16_t) SpecConstantOp 113 541(su)
+   559(u_to_i16): 17(int16_t) SpecConstantOp 128 558 202
+   560(u_to_u16): 14(int16_t) SpecConstantOp 113 541(su)
+ 561(i16_to_i64):273(int64_t) SpecConstantOp 114 543(si16)
+             562:285(int64_t) SpecConstantOp 113 544(su16)
+             563:285(int64_t) Constant 0 0
+ 564(u16_to_i64):273(int64_t) SpecConstantOp 128 562 563
+ 565(i64_to_i16): 17(int16_t) SpecConstantOp 114 538(si64)
+             566: 17(int16_t) SpecConstantOp 114 538(si64)
+ 567(i64_to_u16): 14(int16_t) SpecConstantOp 128 566 202
+             568:273(int64_t) SpecConstantOp 114 543(si16)
+ 569(i16_to_u64):285(int64_t) SpecConstantOp 128 568 563
+ 570(u16_to_u64):285(int64_t) SpecConstantOp 113 544(su16)
+             571: 14(int16_t) SpecConstantOp 113 539(su64)
+ 572(u64_to_i16): 17(int16_t) SpecConstantOp 128 571 202
+ 573(u64_to_u16): 14(int16_t) SpecConstantOp 113 539(su64)
+ 574(i16_to_u16): 14(int16_t) SpecConstantOp 128 543(si16) 202
+ 575(u16_to_i16): 17(int16_t) SpecConstantOp 128 544(su16) 202
          4(main):           2 Function None 3
                5:             Label
-             511:           2 FunctionCall 6(literal()
-             512:           2 FunctionCall 8(operators()
-             513:           2 FunctionCall 10(typeCast()
-             514:           2 FunctionCall 12(builtinFuncs()
+             527:           2 FunctionCall 6(literal()
+             528:           2 FunctionCall 8(operators()
+             529:           2 FunctionCall 10(typeCast()
+             530:           2 FunctionCall 12(builtinFuncs()
                               Return
                               FunctionEnd
      6(literal():           2 Function None 3
@@ -568,11 +568,11 @@
         321(u16):     15(ptr) Variable Function
        393(f16v):    392(ptr) Variable Function
         396(exp):    395(ptr) Variable Function
-      418(packi):    158(ptr) Variable Function
-      423(packu):    147(ptr) Variable Function
-    432(packi64):    431(ptr) Variable Function
-    441(packu64):    440(ptr) Variable Function
-         450(bv):    449(ptr) Variable Function
+      420(packi):    158(ptr) Variable Function
+      425(packu):    147(ptr) Variable Function
+    436(packi64):    435(ptr) Variable Function
+    445(packu64):    444(ptr) Variable Function
+         454(bv):    453(ptr) Variable Function
              306:187(i16vec2) Load 305(i16v)
              307:187(i16vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 306
                               Store 305(i16v) 307
@@ -686,114 +686,138 @@
                               Store 411 410
              412:187(i16vec2) Load 305(i16v)
              413:262(f16vec2) Bitcast 412
-             414:391(f16vec3) Load 393(f16v)
-             415:391(f16vec3) VectorShuffle 414 413 3 4 2
-                              Store 393(f16v) 415
-             416: 49(i16vec3) Load 319(u16v)
-             417:391(f16vec3) Bitcast 416
-                              Store 393(f16v) 417
-             419:187(i16vec2) Load 305(i16v)
-             420:     28(int) Bitcast 419
-                              Store 418(packi) 420
-             421:     28(int) Load 418(packi)
-             422:187(i16vec2) Bitcast 421
-                              Store 305(i16v) 422
-             424: 49(i16vec3) Load 319(u16v)
-             425:198(i16vec2) VectorShuffle 424 424 0 1
-             426:     18(int) Bitcast 425
-                              Store 423(packu) 426
-             427:     18(int) Load 423(packu)
-             428:198(i16vec2) Bitcast 427
-             429: 49(i16vec3) Load 319(u16v)
-             430: 49(i16vec3) VectorShuffle 429 428 3 4 2
-                              Store 319(u16v) 430
-             433: 17(int16_t) Load 311(i16)
-             435:434(i16vec4) CompositeConstruct 433 433 433 433
-             436:273(int64_t) Bitcast 435
-                              Store 432(packi64) 436
-             437:273(int64_t) Load 432(packi64)
-             438:434(i16vec4) Bitcast 437
-             439:187(i16vec2) VectorShuffle 438 438 0 1
-                              Store 305(i16v) 439
-             442: 14(int16_t) Load 321(u16)
-             444:443(i16vec4) CompositeConstruct 442 442 442 442
-             445:285(int64_t) Bitcast 444
-                              Store 441(packu64) 445
-             446:285(int64_t) Load 441(packu64)
-             447:443(i16vec4) Bitcast 446
-             448: 49(i16vec3) VectorShuffle 447 447 0 1 2
-                              Store 319(u16v) 448
-             451: 49(i16vec3) Load 319(u16v)
-             452: 14(int16_t) Load 321(u16)
-             453: 49(i16vec3) CompositeConstruct 452 452 452
-             454:  388(bvec3) ULessThan 451 453
-                              Store 450(bv) 454
-             455:187(i16vec2) Load 305(i16v)
-             456: 17(int16_t) Load 311(i16)
-             457:187(i16vec2) CompositeConstruct 456 456
-             458:  190(bvec2) SLessThan 455 457
-             459:  388(bvec3) Load 450(bv)
-             460:  388(bvec3) VectorShuffle 459 458 3 4 2
-                              Store 450(bv) 460
-             461: 49(i16vec3) Load 319(u16v)
-             462: 14(int16_t) Load 321(u16)
-             463: 49(i16vec3) CompositeConstruct 462 462 462
-             464:  388(bvec3) ULessThanEqual 461 463
-                              Store 450(bv) 464
-             465:187(i16vec2) Load 305(i16v)
-             466: 17(int16_t) Load 311(i16)
-             467:187(i16vec2) CompositeConstruct 466 466
-             468:  190(bvec2) SLessThanEqual 465 467
-             469:  388(bvec3) Load 450(bv)
-             470:  388(bvec3) VectorShuffle 469 468 3 4 2
-                              Store 450(bv) 470
-             471: 49(i16vec3) Load 319(u16v)
-             472: 14(int16_t) Load 321(u16)
-             473: 49(i16vec3) CompositeConstruct 472 472 472
-             474:  388(bvec3) UGreaterThan 471 473
-                              Store 450(bv) 474
-             475:187(i16vec2) Load 305(i16v)
-             476: 17(int16_t) Load 311(i16)
-             477:187(i16vec2) CompositeConstruct 476 476
-             478:  190(bvec2) SGreaterThan 475 477
-             479:  388(bvec3) Load 450(bv)
-             480:  388(bvec3) VectorShuffle 479 478 3 4 2
-                              Store 450(bv) 480
-             481: 49(i16vec3) Load 319(u16v)
-             482: 14(int16_t) Load 321(u16)
-             483: 49(i16vec3) CompositeConstruct 482 482 482
-             484:  388(bvec3) UGreaterThanEqual 481 483
-                              Store 450(bv) 484
-             485:187(i16vec2) Load 305(i16v)
-             486: 17(int16_t) Load 311(i16)
-             487:187(i16vec2) CompositeConstruct 486 486
-             488:  190(bvec2) SGreaterThanEqual 485 487
-             489:  388(bvec3) Load 450(bv)
-             490:  388(bvec3) VectorShuffle 489 488 3 4 2
-                              Store 450(bv) 490
+             414:    407(ptr) AccessChain 393(f16v) 128
+             415:261(float16_t) CompositeExtract 413 0
+                              Store 414 415
+             416:    407(ptr) AccessChain 393(f16v) 111
+             417:261(float16_t) CompositeExtract 413 1
+                              Store 416 417
+             418: 49(i16vec3) Load 319(u16v)
+             419:391(f16vec3) Bitcast 418
+                              Store 393(f16v) 419
+             421:187(i16vec2) Load 305(i16v)
+             422:     28(int) Bitcast 421
+                              Store 420(packi) 422
+             423:     28(int) Load 420(packi)
+             424:187(i16vec2) Bitcast 423
+                              Store 305(i16v) 424
+             426: 49(i16vec3) Load 319(u16v)
+             427:198(i16vec2) VectorShuffle 426 426 0 1
+             428:     18(int) Bitcast 427
+                              Store 425(packu) 428
+             429:     18(int) Load 425(packu)
+             430:198(i16vec2) Bitcast 429
+             431:     15(ptr) AccessChain 319(u16v) 128
+             432: 14(int16_t) CompositeExtract 430 0
+                              Store 431 432
+             433:     15(ptr) AccessChain 319(u16v) 111
+             434: 14(int16_t) CompositeExtract 430 1
+                              Store 433 434
+             437: 17(int16_t) Load 311(i16)
+             439:438(i16vec4) CompositeConstruct 437 437 437 437
+             440:273(int64_t) Bitcast 439
+                              Store 436(packi64) 440
+             441:273(int64_t) Load 436(packi64)
+             442:438(i16vec4) Bitcast 441
+             443:187(i16vec2) VectorShuffle 442 442 0 1
+                              Store 305(i16v) 443
+             446: 14(int16_t) Load 321(u16)
+             448:447(i16vec4) CompositeConstruct 446 446 446 446
+             449:285(int64_t) Bitcast 448
+                              Store 445(packu64) 449
+             450:285(int64_t) Load 445(packu64)
+             451:447(i16vec4) Bitcast 450
+             452: 49(i16vec3) VectorShuffle 451 451 0 1 2
+                              Store 319(u16v) 452
+             455: 49(i16vec3) Load 319(u16v)
+             456: 14(int16_t) Load 321(u16)
+             457: 49(i16vec3) CompositeConstruct 456 456 456
+             458:  388(bvec3) ULessThan 455 457
+                              Store 454(bv) 458
+             459:187(i16vec2) Load 305(i16v)
+             460: 17(int16_t) Load 311(i16)
+             461:187(i16vec2) CompositeConstruct 460 460
+             462:  190(bvec2) SLessThan 459 461
+             463:    126(ptr) AccessChain 454(bv) 128
+             464:   125(bool) CompositeExtract 462 0
+                              Store 463 464
+             465:    126(ptr) AccessChain 454(bv) 111
+             466:   125(bool) CompositeExtract 462 1
+                              Store 465 466
+             467: 49(i16vec3) Load 319(u16v)
+             468: 14(int16_t) Load 321(u16)
+             469: 49(i16vec3) CompositeConstruct 468 468 468
+             470:  388(bvec3) ULessThanEqual 467 469
+                              Store 454(bv) 470
+             471:187(i16vec2) Load 305(i16v)
+             472: 17(int16_t) Load 311(i16)
+             473:187(i16vec2) CompositeConstruct 472 472
+             474:  190(bvec2) SLessThanEqual 471 473
+             475:    126(ptr) AccessChain 454(bv) 128
+             476:   125(bool) CompositeExtract 474 0
+                              Store 475 476
+             477:    126(ptr) AccessChain 454(bv) 111
+             478:   125(bool) CompositeExtract 474 1
+                              Store 477 478
+             479: 49(i16vec3) Load 319(u16v)
+             480: 14(int16_t) Load 321(u16)
+             481: 49(i16vec3) CompositeConstruct 480 480 480
+             482:  388(bvec3) UGreaterThan 479 481
+                              Store 454(bv) 482
+             483:187(i16vec2) Load 305(i16v)
+             484: 17(int16_t) Load 311(i16)
+             485:187(i16vec2) CompositeConstruct 484 484
+             486:  190(bvec2) SGreaterThan 483 485
+             487:    126(ptr) AccessChain 454(bv) 128
+             488:   125(bool) CompositeExtract 486 0
+                              Store 487 488
+             489:    126(ptr) AccessChain 454(bv) 111
+             490:   125(bool) CompositeExtract 486 1
+                              Store 489 490
              491: 49(i16vec3) Load 319(u16v)
              492: 14(int16_t) Load 321(u16)
              493: 49(i16vec3) CompositeConstruct 492 492 492
-             494:  388(bvec3) IEqual 491 493
-                              Store 450(bv) 494
+             494:  388(bvec3) UGreaterThanEqual 491 493
+                              Store 454(bv) 494
              495:187(i16vec2) Load 305(i16v)
              496: 17(int16_t) Load 311(i16)
              497:187(i16vec2) CompositeConstruct 496 496
-             498:  190(bvec2) IEqual 495 497
-             499:  388(bvec3) Load 450(bv)
-             500:  388(bvec3) VectorShuffle 499 498 3 4 2
-                              Store 450(bv) 500
-             501: 49(i16vec3) Load 319(u16v)
-             502: 14(int16_t) Load 321(u16)
-             503: 49(i16vec3) CompositeConstruct 502 502 502
-             504:  388(bvec3) INotEqual 501 503
-                              Store 450(bv) 504
-             505:187(i16vec2) Load 305(i16v)
-             506: 17(int16_t) Load 311(i16)
-             507:187(i16vec2) CompositeConstruct 506 506
-             508:  190(bvec2) INotEqual 505 507
-             509:  388(bvec3) Load 450(bv)
-             510:  388(bvec3) VectorShuffle 509 508 3 4 2
-                              Store 450(bv) 510
+             498:  190(bvec2) SGreaterThanEqual 495 497
+             499:    126(ptr) AccessChain 454(bv) 128
+             500:   125(bool) CompositeExtract 498 0
+                              Store 499 500
+             501:    126(ptr) AccessChain 454(bv) 111
+             502:   125(bool) CompositeExtract 498 1
+                              Store 501 502
+             503: 49(i16vec3) Load 319(u16v)
+             504: 14(int16_t) Load 321(u16)
+             505: 49(i16vec3) CompositeConstruct 504 504 504
+             506:  388(bvec3) IEqual 503 505
+                              Store 454(bv) 506
+             507:187(i16vec2) Load 305(i16v)
+             508: 17(int16_t) Load 311(i16)
+             509:187(i16vec2) CompositeConstruct 508 508
+             510:  190(bvec2) IEqual 507 509
+             511:    126(ptr) AccessChain 454(bv) 128
+             512:   125(bool) CompositeExtract 510 0
+                              Store 511 512
+             513:    126(ptr) AccessChain 454(bv) 111
+             514:   125(bool) CompositeExtract 510 1
+                              Store 513 514
+             515: 49(i16vec3) Load 319(u16v)
+             516: 14(int16_t) Load 321(u16)
+             517: 49(i16vec3) CompositeConstruct 516 516 516
+             518:  388(bvec3) INotEqual 515 517
+                              Store 454(bv) 518
+             519:187(i16vec2) Load 305(i16v)
+             520: 17(int16_t) Load 311(i16)
+             521:187(i16vec2) CompositeConstruct 520 520
+             522:  190(bvec2) INotEqual 519 521
+             523:    126(ptr) AccessChain 454(bv) 128
+             524:   125(bool) CompositeExtract 522 0
+                              Store 523 524
+             525:    126(ptr) AccessChain 454(bv) 111
+             526:   125(bool) CompositeExtract 522 1
+                              Store 525 526
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.int16.frag.out b/Test/baseResults/spv.int16.frag.out
index b58e718..3e10a7d 100644
--- a/Test/baseResults/spv.int16.frag.out
+++ b/Test/baseResults/spv.int16.frag.out
@@ -1,7 +1,7 @@
 spv.int16.frag
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 523
+// Id's are bound by 549
 
                               Capability Shader
                               Capability Float16
@@ -48,53 +48,55 @@
                               Name 154  "i8v"
                               Name 163  "u8v"
                               Name 176  "bv"
-                              Name 195  "u16v"
-                              Name 200  "i16"
-                              Name 220  "i"
-                              Name 227  "uv"
-                              Name 243  "i64"
-                              Name 281  "b"
-                              Name 343  "i16v"
-                              Name 346  "i16"
-                              Name 356  "u16v"
-                              Name 358  "u16"
-                              Name 428  "i32"
-                              Name 431  "i64"
-                              Name 434  "i16v4"
-                              Name 437  "u32"
-                              Name 438  "u16v2"
-                              Name 442  "u64"
-                              Name 445  "u16v4"
-                              Name 457  "bv"
-                              Name 518  "Block"
-                              MemberName 518(Block) 0  "i16"
-                              MemberName 518(Block) 1  "i16v2"
-                              MemberName 518(Block) 2  "i16v3"
-                              MemberName 518(Block) 3  "i16v4"
-                              MemberName 518(Block) 4  "u16"
-                              MemberName 518(Block) 5  "u16v2"
-                              MemberName 518(Block) 6  "u16v3"
-                              MemberName 518(Block) 7  "u16v4"
-                              Name 520  "block"
-                              Name 521  "si16"
-                              Name 522  "su16"
+                              Name 196  "arr"
+                              Name 204  "u16v"
+                              Name 209  "i16"
+                              Name 229  "i"
+                              Name 236  "uv"
+                              Name 252  "i64"
+                              Name 290  "b"
+                              Name 353  "f"
+                              Name 357  "i16v"
+                              Name 360  "i16"
+                              Name 370  "u16v"
+                              Name 372  "u16"
+                              Name 442  "i32"
+                              Name 445  "i64"
+                              Name 448  "i16v4"
+                              Name 451  "u32"
+                              Name 452  "u16v2"
+                              Name 456  "u64"
+                              Name 459  "u16v4"
+                              Name 471  "bv"
+                              Name 544  "Block"
+                              MemberName 544(Block) 0  "i16"
+                              MemberName 544(Block) 1  "i16v2"
+                              MemberName 544(Block) 2  "i16v3"
+                              MemberName 544(Block) 3  "i16v4"
+                              MemberName 544(Block) 4  "u16"
+                              MemberName 544(Block) 5  "u16v2"
+                              MemberName 544(Block) 6  "u16v3"
+                              MemberName 544(Block) 7  "u16v4"
+                              Name 546  "block"
+                              Name 547  "si16"
+                              Name 548  "su16"
                               MemberDecorate 24(Uniforms) 0 Offset 0
                               Decorate 24(Uniforms) Block
                               Decorate 26 DescriptorSet 0
                               Decorate 26 Binding 0
-                              MemberDecorate 518(Block) 0 Offset 0
-                              MemberDecorate 518(Block) 1 Offset 4
-                              MemberDecorate 518(Block) 2 Offset 8
-                              MemberDecorate 518(Block) 3 Offset 16
-                              MemberDecorate 518(Block) 4 Offset 24
-                              MemberDecorate 518(Block) 5 Offset 28
-                              MemberDecorate 518(Block) 6 Offset 32
-                              MemberDecorate 518(Block) 7 Offset 40
-                              Decorate 518(Block) Block
-                              Decorate 520(block) DescriptorSet 0
-                              Decorate 520(block) Binding 1
-                              Decorate 521(si16) SpecId 100
-                              Decorate 522(su16) SpecId 101
+                              MemberDecorate 544(Block) 0 Offset 0
+                              MemberDecorate 544(Block) 1 Offset 4
+                              MemberDecorate 544(Block) 2 Offset 8
+                              MemberDecorate 544(Block) 3 Offset 16
+                              MemberDecorate 544(Block) 4 Offset 24
+                              MemberDecorate 544(Block) 5 Offset 28
+                              MemberDecorate 544(Block) 6 Offset 32
+                              MemberDecorate 544(Block) 7 Offset 40
+                              Decorate 544(Block) Block
+                              Decorate 546(block) DescriptorSet 0
+                              Decorate 546(block) Binding 1
+                              Decorate 547(si16) SpecId 100
+                              Decorate 548(su16) SpecId 101
                2:             TypeVoid
                3:             TypeFunction 2
               14:             TypeInt 16 1
@@ -160,37 +162,46 @@
              185: 36(int16_t) Constant 1
              186: 57(i16vec2) ConstantComposite 184 184
              187: 57(i16vec2) ConstantComposite 185 185
-             193:             TypeVector 36(int16_t) 3
-             194:             TypePointer Function 193(i16vec3)
-             197:             TypeVector 14(int16_t) 3
-             219:             TypePointer Function 27(int)
-             225:             TypeVector 17(int) 3
-             226:             TypePointer Function 225(ivec3)
-             242:             TypePointer Function 71(int64_t)
-             264:     17(int) Constant 1
-             270:     17(int) Constant 2
-             276:             TypeVector 27(int) 3
-             280:             TypePointer Function 173(bool)
-             282:     17(int) Constant 0
-             296:             TypePointer Function 17(int)
-             354: 52(i16vec2) ConstantComposite 21 21
-             363:193(i16vec3) ConstantComposite 184 184 184
-             405:   173(bool) ConstantTrue
-             412:   173(bool) ConstantFalse
-             413:  174(bvec2) ConstantComposite 412 412
-             425:             TypeVector 173(bool) 3
-             426:  425(bvec3) ConstantComposite 412 412 412
-             432:             TypeVector 14(int16_t) 4
-             433:             TypePointer Function 432(i16vec4)
-             441:             TypePointer Function 77(int64_t)
-             443:             TypeVector 36(int16_t) 4
-             444:             TypePointer Function 443(i16vec4)
-             456:             TypePointer Function 425(bvec3)
-      518(Block):             TypeStruct 14(int16_t) 52(i16vec2) 197(i16vec3) 432(i16vec4) 36(int16_t) 57(i16vec2) 193(i16vec3) 443(i16vec4)
-             519:             TypePointer Uniform 518(Block)
-      520(block):    519(ptr) Variable Uniform
-       521(si16): 14(int16_t) SpecConstant 4294967286
-       522(su16): 36(int16_t) SpecConstant 20
+             193:     17(int) Constant 4
+             194:             TypeArray 97(float) 193
+             195:             TypePointer Function 194
+             197:   97(float) Constant 1065353216
+             198:   97(float) Constant 1073741824
+             199:   97(float) Constant 1077936128
+             200:   97(float) Constant 1082130432
+             201:         194 ConstantComposite 197 198 199 200
+             202:             TypeVector 36(int16_t) 3
+             203:             TypePointer Function 202(i16vec3)
+             206:             TypeVector 14(int16_t) 3
+             228:             TypePointer Function 27(int)
+             234:             TypeVector 17(int) 3
+             235:             TypePointer Function 234(ivec3)
+             251:             TypePointer Function 71(int64_t)
+             273:     17(int) Constant 1
+             279:     17(int) Constant 2
+             285:             TypeVector 27(int) 3
+             289:             TypePointer Function 173(bool)
+             291:     17(int) Constant 0
+             305:             TypePointer Function 17(int)
+             352:             TypePointer Function 97(float)
+             368: 52(i16vec2) ConstantComposite 21 21
+             377:202(i16vec3) ConstantComposite 184 184 184
+             419:   173(bool) ConstantTrue
+             426:   173(bool) ConstantFalse
+             427:  174(bvec2) ConstantComposite 426 426
+             439:             TypeVector 173(bool) 3
+             440:  439(bvec3) ConstantComposite 426 426 426
+             446:             TypeVector 14(int16_t) 4
+             447:             TypePointer Function 446(i16vec4)
+             455:             TypePointer Function 77(int64_t)
+             457:             TypeVector 36(int16_t) 4
+             458:             TypePointer Function 457(i16vec4)
+             470:             TypePointer Function 439(bvec3)
+      544(Block):             TypeStruct 14(int16_t) 52(i16vec2) 206(i16vec3) 446(i16vec4) 36(int16_t) 57(i16vec2) 202(i16vec3) 457(i16vec4)
+             545:             TypePointer Uniform 544(Block)
+      546(block):    545(ptr) Variable Uniform
+       547(si16): 14(int16_t) SpecConstant 4294967286
+       548(su16): 36(int16_t) SpecConstant 20
          4(main):           2 Function None 3
                5:             Label
                               Return
@@ -364,379 +375,404 @@
                               FunctionEnd
   10(operators():           2 Function None 3
               11:             Label
-       195(u16v):    194(ptr) Variable Function
-        200(i16):     15(ptr) Variable Function
-          220(i):    219(ptr) Variable Function
-         227(uv):    226(ptr) Variable Function
-        243(i64):    242(ptr) Variable Function
-          281(b):    280(ptr) Variable Function
-             196:193(i16vec3) Load 195(u16v)
-             198:197(i16vec3) CompositeConstruct 179 179 179
-             199:193(i16vec3) IAdd 196 198
-                              Store 195(u16v) 199
-             201: 14(int16_t) Load 200(i16)
-             202: 14(int16_t) ISub 201 179
-                              Store 200(i16) 202
-             203: 14(int16_t) Load 200(i16)
-             204: 14(int16_t) IAdd 203 179
-                              Store 200(i16) 204
-             205:193(i16vec3) Load 195(u16v)
-             206:197(i16vec3) CompositeConstruct 179 179 179
-             207:193(i16vec3) ISub 205 206
-                              Store 195(u16v) 207
-             208:193(i16vec3) Load 195(u16v)
-             209:193(i16vec3) Not 208
-                              Store 195(u16v) 209
-             210: 14(int16_t) Load 200(i16)
-                              Store 200(i16) 210
-             211:193(i16vec3) Load 195(u16v)
-             212:193(i16vec3) SNegate 211
-                              Store 195(u16v) 212
-             213: 14(int16_t) Load 200(i16)
-             214: 14(int16_t) Load 200(i16)
-             215: 14(int16_t) IAdd 214 213
-                              Store 200(i16) 215
-             216:193(i16vec3) Load 195(u16v)
-             217:193(i16vec3) Load 195(u16v)
-             218:193(i16vec3) ISub 217 216
-                              Store 195(u16v) 218
-             221: 14(int16_t) Load 200(i16)
-             222:     27(int) SConvert 221
-             223:     27(int) Load 220(i)
-             224:     27(int) IMul 223 222
-                              Store 220(i) 224
-             228:193(i16vec3) Load 195(u16v)
-             229:  225(ivec3) UConvert 228
-             230:  225(ivec3) Load 227(uv)
-             231:  225(ivec3) UDiv 230 229
-                              Store 227(uv) 231
-             232: 14(int16_t) Load 200(i16)
-             233:     27(int) SConvert 232
-             234:     17(int) Bitcast 233
-             235:  225(ivec3) Load 227(uv)
-             236:  225(ivec3) CompositeConstruct 234 234 234
-             237:  225(ivec3) UMod 235 236
-                              Store 227(uv) 237
-             238:193(i16vec3) Load 195(u16v)
-             239:  225(ivec3) UConvert 238
-             240:  225(ivec3) Load 227(uv)
-             241:  225(ivec3) IAdd 239 240
-                              Store 227(uv) 241
-             244: 14(int16_t) Load 200(i16)
-             245: 71(int64_t) SConvert 244
-             246: 71(int64_t) Load 243(i64)
-             247: 71(int64_t) ISub 245 246
-                              Store 243(i64) 247
-             248:193(i16vec3) Load 195(u16v)
-             249:  225(ivec3) UConvert 248
-             250:  225(ivec3) Load 227(uv)
-             251:  225(ivec3) IMul 249 250
-                              Store 227(uv) 251
-             252: 14(int16_t) Load 200(i16)
-             253: 71(int64_t) SConvert 252
-             254: 71(int64_t) Load 243(i64)
-             255: 71(int64_t) IMul 253 254
-                              Store 243(i64) 255
-             256: 14(int16_t) Load 200(i16)
-             257:     27(int) SConvert 256
-             258:     27(int) Load 220(i)
-             259:     27(int) SMod 257 258
-                              Store 220(i) 259
-             260: 14(int16_t) Load 200(i16)
-             261:193(i16vec3) Load 195(u16v)
-             262:197(i16vec3) CompositeConstruct 260 260 260
-             263:193(i16vec3) ShiftLeftLogical 261 262
-                              Store 195(u16v) 263
-             265:     37(ptr) AccessChain 195(u16v) 264
-             266: 36(int16_t) Load 265
-             267: 14(int16_t) Load 200(i16)
-             268: 14(int16_t) ShiftRightArithmetic 267 266
-                              Store 200(i16) 268
-             269: 14(int16_t) Load 200(i16)
-             271:     37(ptr) AccessChain 195(u16v) 270
-             272: 36(int16_t) Load 271
-             273: 14(int16_t) ShiftLeftLogical 269 272
-                              Store 200(i16) 273
-             274:193(i16vec3) Load 195(u16v)
-             275:     27(int) Load 220(i)
-             277:  276(ivec3) CompositeConstruct 275 275 275
-             278:193(i16vec3) ShiftLeftLogical 274 277
-             279:  225(ivec3) UConvert 278
-                              Store 227(uv) 279
-             283:     37(ptr) AccessChain 195(u16v) 282
-             284: 36(int16_t) Load 283
-             285: 14(int16_t) Load 200(i16)
-             286: 36(int16_t) Bitcast 285
-             287:   173(bool) INotEqual 284 286
-                              Store 281(b) 287
-             288: 14(int16_t) Load 200(i16)
-             289: 36(int16_t) Bitcast 288
-             290:     37(ptr) AccessChain 195(u16v) 282
-             291: 36(int16_t) Load 290
-             292:   173(bool) IEqual 289 291
-                              Store 281(b) 292
-             293:     37(ptr) AccessChain 195(u16v) 282
-             294: 36(int16_t) Load 293
-             295:     17(int) UConvert 294
-             297:    296(ptr) AccessChain 227(uv) 264
-             298:     17(int) Load 297
-             299:   173(bool) UGreaterThan 295 298
-                              Store 281(b) 299
-             300: 14(int16_t) Load 200(i16)
-             301:     27(int) SConvert 300
-             302:     27(int) Load 220(i)
-             303:   173(bool) SLessThan 301 302
-                              Store 281(b) 303
-             304:     37(ptr) AccessChain 195(u16v) 264
-             305: 36(int16_t) Load 304
-             306:     17(int) UConvert 305
-             307:    296(ptr) AccessChain 227(uv) 282
-             308:     17(int) Load 307
-             309:   173(bool) UGreaterThanEqual 306 308
-                              Store 281(b) 309
-             310: 14(int16_t) Load 200(i16)
-             311:     27(int) SConvert 310
-             312:     27(int) Load 220(i)
-             313:   173(bool) SLessThanEqual 311 312
-                              Store 281(b) 313
-             314: 14(int16_t) Load 200(i16)
-             315:     27(int) SConvert 314
-             316:     17(int) Bitcast 315
-             317:  225(ivec3) Load 227(uv)
-             318:  225(ivec3) CompositeConstruct 316 316 316
-             319:  225(ivec3) BitwiseOr 317 318
-                              Store 227(uv) 319
-             320: 14(int16_t) Load 200(i16)
-             321:     27(int) SConvert 320
-             322:     27(int) Load 220(i)
-             323:     27(int) BitwiseOr 321 322
-                              Store 220(i) 323
-             324: 14(int16_t) Load 200(i16)
-             325: 71(int64_t) SConvert 324
-             326: 71(int64_t) Load 243(i64)
-             327: 71(int64_t) BitwiseAnd 326 325
-                              Store 243(i64) 327
-             328:193(i16vec3) Load 195(u16v)
-             329:  225(ivec3) UConvert 328
-             330:  225(ivec3) Load 227(uv)
-             331:  225(ivec3) BitwiseAnd 329 330
-                              Store 227(uv) 331
-             332: 14(int16_t) Load 200(i16)
-             333:     27(int) SConvert 332
-             334:     17(int) Bitcast 333
-             335:  225(ivec3) Load 227(uv)
-             336:  225(ivec3) CompositeConstruct 334 334 334
-             337:  225(ivec3) BitwiseXor 335 336
-                              Store 227(uv) 337
-             338:193(i16vec3) Load 195(u16v)
-             339: 14(int16_t) Load 200(i16)
-             340: 36(int16_t) Bitcast 339
-             341:193(i16vec3) CompositeConstruct 340 340 340
-             342:193(i16vec3) BitwiseXor 338 341
-                              Store 195(u16v) 342
+        196(arr):    195(ptr) Variable Function
+       204(u16v):    203(ptr) Variable Function
+        209(i16):     15(ptr) Variable Function
+          229(i):    228(ptr) Variable Function
+         236(uv):    235(ptr) Variable Function
+        252(i64):    251(ptr) Variable Function
+          290(b):    289(ptr) Variable Function
+          353(f):    352(ptr) Variable Function
+                              Store 196(arr) 201
+             205:202(i16vec3) Load 204(u16v)
+             207:206(i16vec3) CompositeConstruct 179 179 179
+             208:202(i16vec3) IAdd 205 207
+                              Store 204(u16v) 208
+             210: 14(int16_t) Load 209(i16)
+             211: 14(int16_t) ISub 210 179
+                              Store 209(i16) 211
+             212: 14(int16_t) Load 209(i16)
+             213: 14(int16_t) IAdd 212 179
+                              Store 209(i16) 213
+             214:202(i16vec3) Load 204(u16v)
+             215:206(i16vec3) CompositeConstruct 179 179 179
+             216:202(i16vec3) ISub 214 215
+                              Store 204(u16v) 216
+             217:202(i16vec3) Load 204(u16v)
+             218:202(i16vec3) Not 217
+                              Store 204(u16v) 218
+             219: 14(int16_t) Load 209(i16)
+                              Store 209(i16) 219
+             220:202(i16vec3) Load 204(u16v)
+             221:202(i16vec3) SNegate 220
+                              Store 204(u16v) 221
+             222: 14(int16_t) Load 209(i16)
+             223: 14(int16_t) Load 209(i16)
+             224: 14(int16_t) IAdd 223 222
+                              Store 209(i16) 224
+             225:202(i16vec3) Load 204(u16v)
+             226:202(i16vec3) Load 204(u16v)
+             227:202(i16vec3) ISub 226 225
+                              Store 204(u16v) 227
+             230: 14(int16_t) Load 209(i16)
+             231:     27(int) SConvert 230
+             232:     27(int) Load 229(i)
+             233:     27(int) IMul 232 231
+                              Store 229(i) 233
+             237:202(i16vec3) Load 204(u16v)
+             238:  234(ivec3) UConvert 237
+             239:  234(ivec3) Load 236(uv)
+             240:  234(ivec3) UDiv 239 238
+                              Store 236(uv) 240
+             241: 14(int16_t) Load 209(i16)
+             242:     27(int) SConvert 241
+             243:     17(int) Bitcast 242
+             244:  234(ivec3) Load 236(uv)
+             245:  234(ivec3) CompositeConstruct 243 243 243
+             246:  234(ivec3) UMod 244 245
+                              Store 236(uv) 246
+             247:202(i16vec3) Load 204(u16v)
+             248:  234(ivec3) UConvert 247
+             249:  234(ivec3) Load 236(uv)
+             250:  234(ivec3) IAdd 248 249
+                              Store 236(uv) 250
+             253: 14(int16_t) Load 209(i16)
+             254: 71(int64_t) SConvert 253
+             255: 71(int64_t) Load 252(i64)
+             256: 71(int64_t) ISub 254 255
+                              Store 252(i64) 256
+             257:202(i16vec3) Load 204(u16v)
+             258:  234(ivec3) UConvert 257
+             259:  234(ivec3) Load 236(uv)
+             260:  234(ivec3) IMul 258 259
+                              Store 236(uv) 260
+             261: 14(int16_t) Load 209(i16)
+             262: 71(int64_t) SConvert 261
+             263: 71(int64_t) Load 252(i64)
+             264: 71(int64_t) IMul 262 263
+                              Store 252(i64) 264
+             265: 14(int16_t) Load 209(i16)
+             266:     27(int) SConvert 265
+             267:     27(int) Load 229(i)
+             268:     27(int) SMod 266 267
+                              Store 229(i) 268
+             269: 14(int16_t) Load 209(i16)
+             270:202(i16vec3) Load 204(u16v)
+             271:206(i16vec3) CompositeConstruct 269 269 269
+             272:202(i16vec3) ShiftLeftLogical 270 271
+                              Store 204(u16v) 272
+             274:     37(ptr) AccessChain 204(u16v) 273
+             275: 36(int16_t) Load 274
+             276: 14(int16_t) Load 209(i16)
+             277: 14(int16_t) ShiftRightArithmetic 276 275
+                              Store 209(i16) 277
+             278: 14(int16_t) Load 209(i16)
+             280:     37(ptr) AccessChain 204(u16v) 279
+             281: 36(int16_t) Load 280
+             282: 14(int16_t) ShiftLeftLogical 278 281
+                              Store 209(i16) 282
+             283:202(i16vec3) Load 204(u16v)
+             284:     27(int) Load 229(i)
+             286:  285(ivec3) CompositeConstruct 284 284 284
+             287:202(i16vec3) ShiftLeftLogical 283 286
+             288:  234(ivec3) UConvert 287
+                              Store 236(uv) 288
+             292:     37(ptr) AccessChain 204(u16v) 291
+             293: 36(int16_t) Load 292
+             294: 14(int16_t) Load 209(i16)
+             295: 36(int16_t) Bitcast 294
+             296:   173(bool) INotEqual 293 295
+                              Store 290(b) 296
+             297: 14(int16_t) Load 209(i16)
+             298: 36(int16_t) Bitcast 297
+             299:     37(ptr) AccessChain 204(u16v) 291
+             300: 36(int16_t) Load 299
+             301:   173(bool) IEqual 298 300
+                              Store 290(b) 301
+             302:     37(ptr) AccessChain 204(u16v) 291
+             303: 36(int16_t) Load 302
+             304:     17(int) UConvert 303
+             306:    305(ptr) AccessChain 236(uv) 273
+             307:     17(int) Load 306
+             308:   173(bool) UGreaterThan 304 307
+                              Store 290(b) 308
+             309: 14(int16_t) Load 209(i16)
+             310:     27(int) SConvert 309
+             311:     27(int) Load 229(i)
+             312:   173(bool) SLessThan 310 311
+                              Store 290(b) 312
+             313:     37(ptr) AccessChain 204(u16v) 273
+             314: 36(int16_t) Load 313
+             315:     17(int) UConvert 314
+             316:    305(ptr) AccessChain 236(uv) 291
+             317:     17(int) Load 316
+             318:   173(bool) UGreaterThanEqual 315 317
+                              Store 290(b) 318
+             319: 14(int16_t) Load 209(i16)
+             320:     27(int) SConvert 319
+             321:     27(int) Load 229(i)
+             322:   173(bool) SLessThanEqual 320 321
+                              Store 290(b) 322
+             323: 14(int16_t) Load 209(i16)
+             324:     27(int) SConvert 323
+             325:     17(int) Bitcast 324
+             326:  234(ivec3) Load 236(uv)
+             327:  234(ivec3) CompositeConstruct 325 325 325
+             328:  234(ivec3) BitwiseOr 326 327
+                              Store 236(uv) 328
+             329: 14(int16_t) Load 209(i16)
+             330:     27(int) SConvert 329
+             331:     27(int) Load 229(i)
+             332:     27(int) BitwiseOr 330 331
+                              Store 229(i) 332
+             333: 14(int16_t) Load 209(i16)
+             334: 71(int64_t) SConvert 333
+             335: 71(int64_t) Load 252(i64)
+             336: 71(int64_t) BitwiseAnd 335 334
+                              Store 252(i64) 336
+             337:202(i16vec3) Load 204(u16v)
+             338:  234(ivec3) UConvert 337
+             339:  234(ivec3) Load 236(uv)
+             340:  234(ivec3) BitwiseAnd 338 339
+                              Store 236(uv) 340
+             341: 14(int16_t) Load 209(i16)
+             342:     27(int) SConvert 341
+             343:     17(int) Bitcast 342
+             344:  234(ivec3) Load 236(uv)
+             345:  234(ivec3) CompositeConstruct 343 343 343
+             346:  234(ivec3) BitwiseXor 344 345
+                              Store 236(uv) 346
+             347:202(i16vec3) Load 204(u16v)
+             348: 14(int16_t) Load 209(i16)
+             349: 36(int16_t) Bitcast 348
+             350:202(i16vec3) CompositeConstruct 349 349 349
+             351:202(i16vec3) BitwiseXor 347 350
+                              Store 204(u16v) 351
+             354: 14(int16_t) Load 209(i16)
+             355:    352(ptr) AccessChain 196(arr) 354
+             356:   97(float) Load 355
+                              Store 353(f) 356
                               Return
                               FunctionEnd
 12(builtinFuncs():           2 Function None 3
               13:             Label
-       343(i16v):     53(ptr) Variable Function
-        346(i16):     15(ptr) Variable Function
-       356(u16v):    194(ptr) Variable Function
-        358(u16):     37(ptr) Variable Function
-        428(i32):    219(ptr) Variable Function
-        431(i64):    242(ptr) Variable Function
-      434(i16v4):    433(ptr) Variable Function
-        437(u32):    296(ptr) Variable Function
-      438(u16v2):     58(ptr) Variable Function
-        442(u64):    441(ptr) Variable Function
-      445(u16v4):    444(ptr) Variable Function
-         457(bv):    456(ptr) Variable Function
-             344: 52(i16vec2) Load 343(i16v)
-             345: 52(i16vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 344
-                              Store 343(i16v) 345
-             347: 14(int16_t) Load 346(i16)
-             348: 14(int16_t) ExtInst 1(GLSL.std.450) 7(SSign) 347
-                              Store 346(i16) 348
-             349: 52(i16vec2) Load 343(i16v)
-             350: 14(int16_t) Load 346(i16)
-             351: 52(i16vec2) CompositeConstruct 350 350
-             352: 52(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 349 351
-                              Store 343(i16v) 352
-             353: 52(i16vec2) Load 343(i16v)
-             355: 52(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 353 354
-                              Store 343(i16v) 355
-             357:193(i16vec3) Load 356(u16v)
-             359: 36(int16_t) Load 358(u16)
-             360:193(i16vec3) CompositeConstruct 359 359 359
-             361:193(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 357 360
-                              Store 356(u16v) 361
-             362:193(i16vec3) Load 356(u16v)
-             364:193(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 362 363
-                              Store 356(u16v) 364
-             365: 52(i16vec2) Load 343(i16v)
-             366: 14(int16_t) Load 346(i16)
-             367: 52(i16vec2) CompositeConstruct 366 366
-             368: 52(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 365 367
-                              Store 343(i16v) 368
-             369: 52(i16vec2) Load 343(i16v)
-             370: 52(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 369 354
-                              Store 343(i16v) 370
-             371:193(i16vec3) Load 356(u16v)
-             372: 36(int16_t) Load 358(u16)
-             373:193(i16vec3) CompositeConstruct 372 372 372
-             374:193(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 371 373
-                              Store 356(u16v) 374
-             375:193(i16vec3) Load 356(u16v)
-             376:193(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 375 363
-                              Store 356(u16v) 376
-             377: 52(i16vec2) Load 343(i16v)
-             378: 14(int16_t) Load 346(i16)
-             379: 14(int16_t) SNegate 378
-             380: 14(int16_t) Load 346(i16)
-             381: 52(i16vec2) CompositeConstruct 379 379
-             382: 52(i16vec2) CompositeConstruct 380 380
-             383: 52(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 377 381 382
-                              Store 343(i16v) 383
-             384: 52(i16vec2) Load 343(i16v)
-             385: 52(i16vec2) Load 343(i16v)
-             386: 52(i16vec2) SNegate 385
-             387: 52(i16vec2) Load 343(i16v)
-             388: 52(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 384 386 387
-                              Store 343(i16v) 388
-             389:193(i16vec3) Load 356(u16v)
-             390: 36(int16_t) Load 358(u16)
-             391: 36(int16_t) SNegate 390
-             392: 36(int16_t) Load 358(u16)
-             393:193(i16vec3) CompositeConstruct 391 391 391
-             394:193(i16vec3) CompositeConstruct 392 392 392
-             395:193(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 389 393 394
-                              Store 356(u16v) 395
-             396:193(i16vec3) Load 356(u16v)
-             397:193(i16vec3) Load 356(u16v)
-             398:193(i16vec3) SNegate 397
-             399:193(i16vec3) Load 356(u16v)
-             400:193(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 396 398 399
-                              Store 356(u16v) 400
-             401:     15(ptr) AccessChain 343(i16v) 282
-             402: 14(int16_t) Load 401
-             403:     15(ptr) AccessChain 343(i16v) 264
-             404: 14(int16_t) Load 403
-             406: 14(int16_t) Select 405 404 402
-                              Store 346(i16) 406
-             407: 14(int16_t) Load 346(i16)
-             408: 52(i16vec2) CompositeConstruct 407 407
-             409: 14(int16_t) Load 346(i16)
-             410: 14(int16_t) SNegate 409
-             411: 52(i16vec2) CompositeConstruct 410 410
-             414: 52(i16vec2) Select 413 411 408
-                              Store 343(i16v) 414
-             415:     37(ptr) AccessChain 356(u16v) 282
-             416: 36(int16_t) Load 415
-             417:     37(ptr) AccessChain 356(u16v) 264
-             418: 36(int16_t) Load 417
-             419: 36(int16_t) Select 405 418 416
-                              Store 358(u16) 419
-             420: 36(int16_t) Load 358(u16)
-             421:193(i16vec3) CompositeConstruct 420 420 420
-             422: 36(int16_t) Load 358(u16)
-             423: 36(int16_t) SNegate 422
-             424:193(i16vec3) CompositeConstruct 423 423 423
-             427:193(i16vec3) Select 426 424 421
-                              Store 356(u16v) 427
-             429: 52(i16vec2) Load 343(i16v)
-             430:     27(int) Bitcast 429
-                              Store 428(i32) 430
-             435:432(i16vec4) Load 434(i16v4)
-             436: 71(int64_t) Bitcast 435
-                              Store 431(i64) 436
-             439: 57(i16vec2) Load 438(u16v2)
-             440:     17(int) Bitcast 439
-                              Store 437(u32) 440
-             446:443(i16vec4) Load 445(u16v4)
-             447: 77(int64_t) Bitcast 446
-                              Store 442(u64) 447
-             448:     27(int) Load 428(i32)
-             449: 52(i16vec2) Bitcast 448
-                              Store 343(i16v) 449
-             450: 71(int64_t) Load 431(i64)
-             451:432(i16vec4) Bitcast 450
-                              Store 434(i16v4) 451
-             452:     17(int) Load 437(u32)
-             453: 57(i16vec2) Bitcast 452
-                              Store 438(u16v2) 453
-             454: 77(int64_t) Load 442(u64)
-             455:443(i16vec4) Bitcast 454
-                              Store 445(u16v4) 455
-             458:193(i16vec3) Load 356(u16v)
-             459: 36(int16_t) Load 358(u16)
-             460:193(i16vec3) CompositeConstruct 459 459 459
-             461:  425(bvec3) ULessThan 458 460
-                              Store 457(bv) 461
-             462: 52(i16vec2) Load 343(i16v)
-             463: 14(int16_t) Load 346(i16)
-             464: 52(i16vec2) CompositeConstruct 463 463
-             465:  174(bvec2) SLessThan 462 464
-             466:  425(bvec3) Load 457(bv)
-             467:  425(bvec3) VectorShuffle 466 465 3 4 2
-                              Store 457(bv) 467
-             468:193(i16vec3) Load 356(u16v)
-             469: 36(int16_t) Load 358(u16)
-             470:193(i16vec3) CompositeConstruct 469 469 469
-             471:  425(bvec3) ULessThanEqual 468 470
-                              Store 457(bv) 471
-             472: 52(i16vec2) Load 343(i16v)
-             473: 14(int16_t) Load 346(i16)
-             474: 52(i16vec2) CompositeConstruct 473 473
-             475:  174(bvec2) SLessThanEqual 472 474
-             476:  425(bvec3) Load 457(bv)
-             477:  425(bvec3) VectorShuffle 476 475 3 4 2
-                              Store 457(bv) 477
-             478:193(i16vec3) Load 356(u16v)
-             479: 36(int16_t) Load 358(u16)
-             480:193(i16vec3) CompositeConstruct 479 479 479
-             481:  425(bvec3) UGreaterThan 478 480
-                              Store 457(bv) 481
-             482: 52(i16vec2) Load 343(i16v)
-             483: 14(int16_t) Load 346(i16)
-             484: 52(i16vec2) CompositeConstruct 483 483
-             485:  174(bvec2) SGreaterThan 482 484
-             486:  425(bvec3) Load 457(bv)
-             487:  425(bvec3) VectorShuffle 486 485 3 4 2
-                              Store 457(bv) 487
-             488:193(i16vec3) Load 356(u16v)
-             489: 36(int16_t) Load 358(u16)
-             490:193(i16vec3) CompositeConstruct 489 489 489
-             491:  425(bvec3) UGreaterThanEqual 488 490
-                              Store 457(bv) 491
-             492: 52(i16vec2) Load 343(i16v)
-             493: 14(int16_t) Load 346(i16)
-             494: 52(i16vec2) CompositeConstruct 493 493
-             495:  174(bvec2) SGreaterThanEqual 492 494
-             496:  425(bvec3) Load 457(bv)
-             497:  425(bvec3) VectorShuffle 496 495 3 4 2
-                              Store 457(bv) 497
-             498:193(i16vec3) Load 356(u16v)
-             499: 36(int16_t) Load 358(u16)
-             500:193(i16vec3) CompositeConstruct 499 499 499
-             501:  425(bvec3) IEqual 498 500
-                              Store 457(bv) 501
-             502: 52(i16vec2) Load 343(i16v)
-             503: 14(int16_t) Load 346(i16)
-             504: 52(i16vec2) CompositeConstruct 503 503
-             505:  174(bvec2) IEqual 502 504
-             506:  425(bvec3) Load 457(bv)
-             507:  425(bvec3) VectorShuffle 506 505 3 4 2
-                              Store 457(bv) 507
-             508:193(i16vec3) Load 356(u16v)
-             509: 36(int16_t) Load 358(u16)
-             510:193(i16vec3) CompositeConstruct 509 509 509
-             511:  425(bvec3) INotEqual 508 510
-                              Store 457(bv) 511
-             512: 52(i16vec2) Load 343(i16v)
-             513: 14(int16_t) Load 346(i16)
+       357(i16v):     53(ptr) Variable Function
+        360(i16):     15(ptr) Variable Function
+       370(u16v):    203(ptr) Variable Function
+        372(u16):     37(ptr) Variable Function
+        442(i32):    228(ptr) Variable Function
+        445(i64):    251(ptr) Variable Function
+      448(i16v4):    447(ptr) Variable Function
+        451(u32):    305(ptr) Variable Function
+      452(u16v2):     58(ptr) Variable Function
+        456(u64):    455(ptr) Variable Function
+      459(u16v4):    458(ptr) Variable Function
+         471(bv):    470(ptr) Variable Function
+             358: 52(i16vec2) Load 357(i16v)
+             359: 52(i16vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 358
+                              Store 357(i16v) 359
+             361: 14(int16_t) Load 360(i16)
+             362: 14(int16_t) ExtInst 1(GLSL.std.450) 7(SSign) 361
+                              Store 360(i16) 362
+             363: 52(i16vec2) Load 357(i16v)
+             364: 14(int16_t) Load 360(i16)
+             365: 52(i16vec2) CompositeConstruct 364 364
+             366: 52(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 363 365
+                              Store 357(i16v) 366
+             367: 52(i16vec2) Load 357(i16v)
+             369: 52(i16vec2) ExtInst 1(GLSL.std.450) 39(SMin) 367 368
+                              Store 357(i16v) 369
+             371:202(i16vec3) Load 370(u16v)
+             373: 36(int16_t) Load 372(u16)
+             374:202(i16vec3) CompositeConstruct 373 373 373
+             375:202(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 371 374
+                              Store 370(u16v) 375
+             376:202(i16vec3) Load 370(u16v)
+             378:202(i16vec3) ExtInst 1(GLSL.std.450) 38(UMin) 376 377
+                              Store 370(u16v) 378
+             379: 52(i16vec2) Load 357(i16v)
+             380: 14(int16_t) Load 360(i16)
+             381: 52(i16vec2) CompositeConstruct 380 380
+             382: 52(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 379 381
+                              Store 357(i16v) 382
+             383: 52(i16vec2) Load 357(i16v)
+             384: 52(i16vec2) ExtInst 1(GLSL.std.450) 42(SMax) 383 368
+                              Store 357(i16v) 384
+             385:202(i16vec3) Load 370(u16v)
+             386: 36(int16_t) Load 372(u16)
+             387:202(i16vec3) CompositeConstruct 386 386 386
+             388:202(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 385 387
+                              Store 370(u16v) 388
+             389:202(i16vec3) Load 370(u16v)
+             390:202(i16vec3) ExtInst 1(GLSL.std.450) 41(UMax) 389 377
+                              Store 370(u16v) 390
+             391: 52(i16vec2) Load 357(i16v)
+             392: 14(int16_t) Load 360(i16)
+             393: 14(int16_t) SNegate 392
+             394: 14(int16_t) Load 360(i16)
+             395: 52(i16vec2) CompositeConstruct 393 393
+             396: 52(i16vec2) CompositeConstruct 394 394
+             397: 52(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 391 395 396
+                              Store 357(i16v) 397
+             398: 52(i16vec2) Load 357(i16v)
+             399: 52(i16vec2) Load 357(i16v)
+             400: 52(i16vec2) SNegate 399
+             401: 52(i16vec2) Load 357(i16v)
+             402: 52(i16vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 398 400 401
+                              Store 357(i16v) 402
+             403:202(i16vec3) Load 370(u16v)
+             404: 36(int16_t) Load 372(u16)
+             405: 36(int16_t) SNegate 404
+             406: 36(int16_t) Load 372(u16)
+             407:202(i16vec3) CompositeConstruct 405 405 405
+             408:202(i16vec3) CompositeConstruct 406 406 406
+             409:202(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 403 407 408
+                              Store 370(u16v) 409
+             410:202(i16vec3) Load 370(u16v)
+             411:202(i16vec3) Load 370(u16v)
+             412:202(i16vec3) SNegate 411
+             413:202(i16vec3) Load 370(u16v)
+             414:202(i16vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 410 412 413
+                              Store 370(u16v) 414
+             415:     15(ptr) AccessChain 357(i16v) 291
+             416: 14(int16_t) Load 415
+             417:     15(ptr) AccessChain 357(i16v) 273
+             418: 14(int16_t) Load 417
+             420: 14(int16_t) Select 419 418 416
+                              Store 360(i16) 420
+             421: 14(int16_t) Load 360(i16)
+             422: 52(i16vec2) CompositeConstruct 421 421
+             423: 14(int16_t) Load 360(i16)
+             424: 14(int16_t) SNegate 423
+             425: 52(i16vec2) CompositeConstruct 424 424
+             428: 52(i16vec2) Select 427 425 422
+                              Store 357(i16v) 428
+             429:     37(ptr) AccessChain 370(u16v) 291
+             430: 36(int16_t) Load 429
+             431:     37(ptr) AccessChain 370(u16v) 273
+             432: 36(int16_t) Load 431
+             433: 36(int16_t) Select 419 432 430
+                              Store 372(u16) 433
+             434: 36(int16_t) Load 372(u16)
+             435:202(i16vec3) CompositeConstruct 434 434 434
+             436: 36(int16_t) Load 372(u16)
+             437: 36(int16_t) SNegate 436
+             438:202(i16vec3) CompositeConstruct 437 437 437
+             441:202(i16vec3) Select 440 438 435
+                              Store 370(u16v) 441
+             443: 52(i16vec2) Load 357(i16v)
+             444:     27(int) Bitcast 443
+                              Store 442(i32) 444
+             449:446(i16vec4) Load 448(i16v4)
+             450: 71(int64_t) Bitcast 449
+                              Store 445(i64) 450
+             453: 57(i16vec2) Load 452(u16v2)
+             454:     17(int) Bitcast 453
+                              Store 451(u32) 454
+             460:457(i16vec4) Load 459(u16v4)
+             461: 77(int64_t) Bitcast 460
+                              Store 456(u64) 461
+             462:     27(int) Load 442(i32)
+             463: 52(i16vec2) Bitcast 462
+                              Store 357(i16v) 463
+             464: 71(int64_t) Load 445(i64)
+             465:446(i16vec4) Bitcast 464
+                              Store 448(i16v4) 465
+             466:     17(int) Load 451(u32)
+             467: 57(i16vec2) Bitcast 466
+                              Store 452(u16v2) 467
+             468: 77(int64_t) Load 456(u64)
+             469:457(i16vec4) Bitcast 468
+                              Store 459(u16v4) 469
+             472:202(i16vec3) Load 370(u16v)
+             473: 36(int16_t) Load 372(u16)
+             474:202(i16vec3) CompositeConstruct 473 473 473
+             475:  439(bvec3) ULessThan 472 474
+                              Store 471(bv) 475
+             476: 52(i16vec2) Load 357(i16v)
+             477: 14(int16_t) Load 360(i16)
+             478: 52(i16vec2) CompositeConstruct 477 477
+             479:  174(bvec2) SLessThan 476 478
+             480:    289(ptr) AccessChain 471(bv) 291
+             481:   173(bool) CompositeExtract 479 0
+                              Store 480 481
+             482:    289(ptr) AccessChain 471(bv) 273
+             483:   173(bool) CompositeExtract 479 1
+                              Store 482 483
+             484:202(i16vec3) Load 370(u16v)
+             485: 36(int16_t) Load 372(u16)
+             486:202(i16vec3) CompositeConstruct 485 485 485
+             487:  439(bvec3) ULessThanEqual 484 486
+                              Store 471(bv) 487
+             488: 52(i16vec2) Load 357(i16v)
+             489: 14(int16_t) Load 360(i16)
+             490: 52(i16vec2) CompositeConstruct 489 489
+             491:  174(bvec2) SLessThanEqual 488 490
+             492:    289(ptr) AccessChain 471(bv) 291
+             493:   173(bool) CompositeExtract 491 0
+                              Store 492 493
+             494:    289(ptr) AccessChain 471(bv) 273
+             495:   173(bool) CompositeExtract 491 1
+                              Store 494 495
+             496:202(i16vec3) Load 370(u16v)
+             497: 36(int16_t) Load 372(u16)
+             498:202(i16vec3) CompositeConstruct 497 497 497
+             499:  439(bvec3) UGreaterThan 496 498
+                              Store 471(bv) 499
+             500: 52(i16vec2) Load 357(i16v)
+             501: 14(int16_t) Load 360(i16)
+             502: 52(i16vec2) CompositeConstruct 501 501
+             503:  174(bvec2) SGreaterThan 500 502
+             504:    289(ptr) AccessChain 471(bv) 291
+             505:   173(bool) CompositeExtract 503 0
+                              Store 504 505
+             506:    289(ptr) AccessChain 471(bv) 273
+             507:   173(bool) CompositeExtract 503 1
+                              Store 506 507
+             508:202(i16vec3) Load 370(u16v)
+             509: 36(int16_t) Load 372(u16)
+             510:202(i16vec3) CompositeConstruct 509 509 509
+             511:  439(bvec3) UGreaterThanEqual 508 510
+                              Store 471(bv) 511
+             512: 52(i16vec2) Load 357(i16v)
+             513: 14(int16_t) Load 360(i16)
              514: 52(i16vec2) CompositeConstruct 513 513
-             515:  174(bvec2) INotEqual 512 514
-             516:  425(bvec3) Load 457(bv)
-             517:  425(bvec3) VectorShuffle 516 515 3 4 2
-                              Store 457(bv) 517
+             515:  174(bvec2) SGreaterThanEqual 512 514
+             516:    289(ptr) AccessChain 471(bv) 291
+             517:   173(bool) CompositeExtract 515 0
+                              Store 516 517
+             518:    289(ptr) AccessChain 471(bv) 273
+             519:   173(bool) CompositeExtract 515 1
+                              Store 518 519
+             520:202(i16vec3) Load 370(u16v)
+             521: 36(int16_t) Load 372(u16)
+             522:202(i16vec3) CompositeConstruct 521 521 521
+             523:  439(bvec3) IEqual 520 522
+                              Store 471(bv) 523
+             524: 52(i16vec2) Load 357(i16v)
+             525: 14(int16_t) Load 360(i16)
+             526: 52(i16vec2) CompositeConstruct 525 525
+             527:  174(bvec2) IEqual 524 526
+             528:    289(ptr) AccessChain 471(bv) 291
+             529:   173(bool) CompositeExtract 527 0
+                              Store 528 529
+             530:    289(ptr) AccessChain 471(bv) 273
+             531:   173(bool) CompositeExtract 527 1
+                              Store 530 531
+             532:202(i16vec3) Load 370(u16v)
+             533: 36(int16_t) Load 372(u16)
+             534:202(i16vec3) CompositeConstruct 533 533 533
+             535:  439(bvec3) INotEqual 532 534
+                              Store 471(bv) 535
+             536: 52(i16vec2) Load 357(i16v)
+             537: 14(int16_t) Load 360(i16)
+             538: 52(i16vec2) CompositeConstruct 537 537
+             539:  174(bvec2) INotEqual 536 538
+             540:    289(ptr) AccessChain 471(bv) 291
+             541:   173(bool) CompositeExtract 539 0
+                              Store 540 541
+             542:    289(ptr) AccessChain 471(bv) 273
+             543:   173(bool) CompositeExtract 539 1
+                              Store 542 543
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.int32.frag.out b/Test/baseResults/spv.int32.frag.out
index 0ef51e8..af232ec 100644
--- a/Test/baseResults/spv.int32.frag.out
+++ b/Test/baseResults/spv.int32.frag.out
@@ -1,7 +1,7 @@
 spv.int32.frag
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 493
+// Id's are bound by 505
 
                               Capability Shader
                               Capability Float16
@@ -65,41 +65,41 @@
                               Name 416  "u32v2"
                               Name 418  "u64"
                               Name 422  "bv"
-                              Name 485  "Block"
-                              MemberName 485(Block) 0  "i32"
-                              MemberName 485(Block) 1  "i32v2"
-                              MemberName 485(Block) 2  "i32v3"
-                              MemberName 485(Block) 3  "i32v4"
-                              MemberName 485(Block) 4  "u32"
-                              MemberName 485(Block) 5  "u32v2"
-                              MemberName 485(Block) 6  "u32v3"
-                              MemberName 485(Block) 7  "u32v4"
-                              Name 487  "block"
-                              Name 488  "si32"
-                              Name 489  "su32"
-                              Name 490  "si"
-                              Name 491  "su"
-                              Name 492  "sb"
+                              Name 497  "Block"
+                              MemberName 497(Block) 0  "i32"
+                              MemberName 497(Block) 1  "i32v2"
+                              MemberName 497(Block) 2  "i32v3"
+                              MemberName 497(Block) 3  "i32v4"
+                              MemberName 497(Block) 4  "u32"
+                              MemberName 497(Block) 5  "u32v2"
+                              MemberName 497(Block) 6  "u32v3"
+                              MemberName 497(Block) 7  "u32v4"
+                              Name 499  "block"
+                              Name 500  "si32"
+                              Name 501  "su32"
+                              Name 502  "si"
+                              Name 503  "su"
+                              Name 504  "sb"
                               MemberDecorate 27(Uniforms) 0 Offset 0
                               Decorate 27(Uniforms) Block
                               Decorate 29 DescriptorSet 0
                               Decorate 29 Binding 0
-                              MemberDecorate 485(Block) 0 Offset 0
-                              MemberDecorate 485(Block) 1 Offset 8
-                              MemberDecorate 485(Block) 2 Offset 16
-                              MemberDecorate 485(Block) 3 Offset 32
-                              MemberDecorate 485(Block) 4 Offset 48
-                              MemberDecorate 485(Block) 5 Offset 56
-                              MemberDecorate 485(Block) 6 Offset 64
-                              MemberDecorate 485(Block) 7 Offset 80
-                              Decorate 485(Block) Block
-                              Decorate 487(block) DescriptorSet 0
-                              Decorate 487(block) Binding 1
-                              Decorate 488(si32) SpecId 100
-                              Decorate 489(su32) SpecId 101
-                              Decorate 490(si) SpecId 102
-                              Decorate 491(su) SpecId 103
-                              Decorate 492(sb) SpecId 104
+                              MemberDecorate 497(Block) 0 Offset 0
+                              MemberDecorate 497(Block) 1 Offset 8
+                              MemberDecorate 497(Block) 2 Offset 16
+                              MemberDecorate 497(Block) 3 Offset 32
+                              MemberDecorate 497(Block) 4 Offset 48
+                              MemberDecorate 497(Block) 5 Offset 56
+                              MemberDecorate 497(Block) 6 Offset 64
+                              MemberDecorate 497(Block) 7 Offset 80
+                              Decorate 497(Block) Block
+                              Decorate 499(block) DescriptorSet 0
+                              Decorate 499(block) Binding 1
+                              Decorate 500(si32) SpecId 100
+                              Decorate 501(su32) SpecId 101
+                              Decorate 502(si) SpecId 102
+                              Decorate 503(su) SpecId 103
+                              Decorate 504(sb) SpecId 104
                2:             TypeVoid
                3:             TypeFunction 2
               14:             TypeInt 32 0
@@ -185,16 +185,16 @@
              406:             TypePointer Function 405(i8vec4)
              417:             TypePointer Function 63(int64_t)
              421:             TypePointer Function 394(bvec3)
-             483:             TypeVector 18(int) 4
-             484:             TypeVector 14(int) 4
-      485(Block):             TypeStruct 18(int) 52(ivec2) 188(ivec3) 483(ivec4) 14(int) 49(ivec2) 184(ivec3) 484(ivec4)
-             486:             TypePointer Uniform 485(Block)
-      487(block):    486(ptr) Variable Uniform
-       488(si32):     18(int) SpecConstant 4294967286
-       489(su32):     14(int) SpecConstant 20
-         490(si):     18(int) SpecConstant 4294967291
-         491(su):     14(int) SpecConstant 4
-         492(sb):   165(bool) SpecConstantTrue
+             495:             TypeVector 18(int) 4
+             496:             TypeVector 14(int) 4
+      497(Block):             TypeStruct 18(int) 52(ivec2) 188(ivec3) 495(ivec4) 14(int) 49(ivec2) 184(ivec3) 496(ivec4)
+             498:             TypePointer Uniform 497(Block)
+      499(block):    498(ptr) Variable Uniform
+       500(si32):     18(int) SpecConstant 4294967286
+       501(su32):     14(int) SpecConstant 20
+         502(si):     18(int) SpecConstant 4294967291
+         503(su):     14(int) SpecConstant 4
+         504(sb):   165(bool) SpecConstantTrue
          4(main):           2 Function None 3
                5:             Label
                               Store 16(u32Max) 17
@@ -645,68 +645,86 @@
              428:     18(int) Load 315(i32)
              429:   52(ivec2) CompositeConstruct 428 428
              430:  166(bvec2) SLessThan 427 429
-             431:  394(bvec3) Load 422(bv)
-             432:  394(bvec3) VectorShuffle 431 430 3 4 2
-                              Store 422(bv) 432
-             433:  184(ivec3) Load 325(u32v)
-             434:     14(int) Load 327(u32)
-             435:  184(ivec3) CompositeConstruct 434 434 434
-             436:  394(bvec3) ULessThanEqual 433 435
-                              Store 422(bv) 436
-             437:   52(ivec2) Load 312(i32v)
-             438:     18(int) Load 315(i32)
-             439:   52(ivec2) CompositeConstruct 438 438
-             440:  166(bvec2) SLessThanEqual 437 439
-             441:  394(bvec3) Load 422(bv)
-             442:  394(bvec3) VectorShuffle 441 440 3 4 2
-                              Store 422(bv) 442
-             443:  184(ivec3) Load 325(u32v)
-             444:     14(int) Load 327(u32)
-             445:  184(ivec3) CompositeConstruct 444 444 444
-             446:  394(bvec3) UGreaterThan 443 445
-                              Store 422(bv) 446
-             447:   52(ivec2) Load 312(i32v)
-             448:     18(int) Load 315(i32)
-             449:   52(ivec2) CompositeConstruct 448 448
-             450:  166(bvec2) SGreaterThan 447 449
-             451:  394(bvec3) Load 422(bv)
-             452:  394(bvec3) VectorShuffle 451 450 3 4 2
-                              Store 422(bv) 452
-             453:  184(ivec3) Load 325(u32v)
-             454:     14(int) Load 327(u32)
-             455:  184(ivec3) CompositeConstruct 454 454 454
-             456:  394(bvec3) UGreaterThanEqual 453 455
-                              Store 422(bv) 456
-             457:   52(ivec2) Load 312(i32v)
-             458:     18(int) Load 315(i32)
-             459:   52(ivec2) CompositeConstruct 458 458
-             460:  166(bvec2) SGreaterThanEqual 457 459
-             461:  394(bvec3) Load 422(bv)
-             462:  394(bvec3) VectorShuffle 461 460 3 4 2
+             431:    259(ptr) AccessChain 422(bv) 175
+             432:   165(bool) CompositeExtract 430 0
+                              Store 431 432
+             433:    259(ptr) AccessChain 422(bv) 176
+             434:   165(bool) CompositeExtract 430 1
+                              Store 433 434
+             435:  184(ivec3) Load 325(u32v)
+             436:     14(int) Load 327(u32)
+             437:  184(ivec3) CompositeConstruct 436 436 436
+             438:  394(bvec3) ULessThanEqual 435 437
+                              Store 422(bv) 438
+             439:   52(ivec2) Load 312(i32v)
+             440:     18(int) Load 315(i32)
+             441:   52(ivec2) CompositeConstruct 440 440
+             442:  166(bvec2) SLessThanEqual 439 441
+             443:    259(ptr) AccessChain 422(bv) 175
+             444:   165(bool) CompositeExtract 442 0
+                              Store 443 444
+             445:    259(ptr) AccessChain 422(bv) 176
+             446:   165(bool) CompositeExtract 442 1
+                              Store 445 446
+             447:  184(ivec3) Load 325(u32v)
+             448:     14(int) Load 327(u32)
+             449:  184(ivec3) CompositeConstruct 448 448 448
+             450:  394(bvec3) UGreaterThan 447 449
+                              Store 422(bv) 450
+             451:   52(ivec2) Load 312(i32v)
+             452:     18(int) Load 315(i32)
+             453:   52(ivec2) CompositeConstruct 452 452
+             454:  166(bvec2) SGreaterThan 451 453
+             455:    259(ptr) AccessChain 422(bv) 175
+             456:   165(bool) CompositeExtract 454 0
+                              Store 455 456
+             457:    259(ptr) AccessChain 422(bv) 176
+             458:   165(bool) CompositeExtract 454 1
+                              Store 457 458
+             459:  184(ivec3) Load 325(u32v)
+             460:     14(int) Load 327(u32)
+             461:  184(ivec3) CompositeConstruct 460 460 460
+             462:  394(bvec3) UGreaterThanEqual 459 461
                               Store 422(bv) 462
-             463:  184(ivec3) Load 325(u32v)
-             464:     14(int) Load 327(u32)
-             465:  184(ivec3) CompositeConstruct 464 464 464
-             466:  394(bvec3) IEqual 463 465
-                              Store 422(bv) 466
-             467:   52(ivec2) Load 312(i32v)
-             468:     18(int) Load 315(i32)
-             469:   52(ivec2) CompositeConstruct 468 468
-             470:  166(bvec2) IEqual 467 469
-             471:  394(bvec3) Load 422(bv)
-             472:  394(bvec3) VectorShuffle 471 470 3 4 2
-                              Store 422(bv) 472
-             473:  184(ivec3) Load 325(u32v)
-             474:     14(int) Load 327(u32)
-             475:  184(ivec3) CompositeConstruct 474 474 474
-             476:  394(bvec3) INotEqual 473 475
-                              Store 422(bv) 476
-             477:   52(ivec2) Load 312(i32v)
-             478:     18(int) Load 315(i32)
-             479:   52(ivec2) CompositeConstruct 478 478
-             480:  166(bvec2) INotEqual 477 479
-             481:  394(bvec3) Load 422(bv)
-             482:  394(bvec3) VectorShuffle 481 480 3 4 2
-                              Store 422(bv) 482
+             463:   52(ivec2) Load 312(i32v)
+             464:     18(int) Load 315(i32)
+             465:   52(ivec2) CompositeConstruct 464 464
+             466:  166(bvec2) SGreaterThanEqual 463 465
+             467:    259(ptr) AccessChain 422(bv) 175
+             468:   165(bool) CompositeExtract 466 0
+                              Store 467 468
+             469:    259(ptr) AccessChain 422(bv) 176
+             470:   165(bool) CompositeExtract 466 1
+                              Store 469 470
+             471:  184(ivec3) Load 325(u32v)
+             472:     14(int) Load 327(u32)
+             473:  184(ivec3) CompositeConstruct 472 472 472
+             474:  394(bvec3) IEqual 471 473
+                              Store 422(bv) 474
+             475:   52(ivec2) Load 312(i32v)
+             476:     18(int) Load 315(i32)
+             477:   52(ivec2) CompositeConstruct 476 476
+             478:  166(bvec2) IEqual 475 477
+             479:    259(ptr) AccessChain 422(bv) 175
+             480:   165(bool) CompositeExtract 478 0
+                              Store 479 480
+             481:    259(ptr) AccessChain 422(bv) 176
+             482:   165(bool) CompositeExtract 478 1
+                              Store 481 482
+             483:  184(ivec3) Load 325(u32v)
+             484:     14(int) Load 327(u32)
+             485:  184(ivec3) CompositeConstruct 484 484 484
+             486:  394(bvec3) INotEqual 483 485
+                              Store 422(bv) 486
+             487:   52(ivec2) Load 312(i32v)
+             488:     18(int) Load 315(i32)
+             489:   52(ivec2) CompositeConstruct 488 488
+             490:  166(bvec2) INotEqual 487 489
+             491:    259(ptr) AccessChain 422(bv) 175
+             492:   165(bool) CompositeExtract 490 0
+                              Store 491 492
+             493:    259(ptr) AccessChain 422(bv) 176
+             494:   165(bool) CompositeExtract 490 1
+                              Store 493 494
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.int64.frag.out b/Test/baseResults/spv.int64.frag.out
index 4b5e450..f2fd600 100644
--- a/Test/baseResults/spv.int64.frag.out
+++ b/Test/baseResults/spv.int64.frag.out
@@ -2,7 +2,7 @@
 Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 489
+// Id's are bound by 513
 
                               Capability Shader
                               Capability Float64
@@ -44,48 +44,48 @@
                               Name 299  "u64v"
                               Name 301  "u64"
                               Name 373  "dv"
-                              Name 392  "iv"
-                              Name 397  "uv"
-                              Name 401  "bv"
-                              Name 462  "Block"
-                              MemberName 462(Block) 0  "i64v"
-                              MemberName 462(Block) 1  "u64"
-                              Name 464  "block"
-                              Name 465  "si64"
-                              Name 466  "su64"
-                              Name 467  "si"
-                              Name 468  "su"
-                              Name 469  "sb"
-                              Name 470  "su64inc"
-                              Name 471  "i64_to_b"
-                              Name 472  "u64_to_b"
-                              Name 473  "b_to_i64"
-                              Name 474  "b_to_u64"
-                              Name 475  "i64_to_i"
-                              Name 476  "i_to_i64"
-                              Name 477  "u64_to_u"
-                              Name 478  "u_to_u64"
-                              Name 479  "u64_to_i64"
-                              Name 480  "i64_to_u64"
-                              Name 482  "u64_to_i"
-                              Name 484  "i_to_u64"
-                              Name 486  "i64_to_u"
-                              Name 488  "u_to_i64"
+                              Name 394  "iv"
+                              Name 399  "uv"
+                              Name 403  "bv"
+                              Name 486  "Block"
+                              MemberName 486(Block) 0  "i64v"
+                              MemberName 486(Block) 1  "u64"
+                              Name 488  "block"
+                              Name 489  "si64"
+                              Name 490  "su64"
+                              Name 491  "si"
+                              Name 492  "su"
+                              Name 493  "sb"
+                              Name 494  "su64inc"
+                              Name 495  "i64_to_b"
+                              Name 496  "u64_to_b"
+                              Name 497  "b_to_i64"
+                              Name 498  "b_to_u64"
+                              Name 499  "i64_to_i"
+                              Name 500  "i_to_i64"
+                              Name 501  "u64_to_u"
+                              Name 502  "u_to_u64"
+                              Name 503  "u64_to_i64"
+                              Name 504  "i64_to_u64"
+                              Name 506  "u64_to_i"
+                              Name 508  "i_to_u64"
+                              Name 510  "i64_to_u"
+                              Name 512  "u_to_i64"
                               MemberDecorate 28(Uniforms) 0 Offset 0
                               Decorate 28(Uniforms) Block
                               Decorate 30 DescriptorSet 0
                               Decorate 30 Binding 0
-                              MemberDecorate 462(Block) 0 Offset 0
-                              MemberDecorate 462(Block) 1 Offset 24
-                              Decorate 462(Block) Block
-                              Decorate 464(block) DescriptorSet 0
-                              Decorate 464(block) Binding 1
-                              Decorate 465(si64) SpecId 100
-                              Decorate 466(su64) SpecId 101
-                              Decorate 467(si) SpecId 102
-                              Decorate 468(su) SpecId 103
-                              Decorate 469(sb) SpecId 104
-                              Decorate 470(su64inc) SpecId 105
+                              MemberDecorate 486(Block) 0 Offset 0
+                              MemberDecorate 486(Block) 1 Offset 24
+                              Decorate 486(Block) Block
+                              Decorate 488(block) DescriptorSet 0
+                              Decorate 488(block) Binding 1
+                              Decorate 489(si64) SpecId 100
+                              Decorate 490(su64) SpecId 101
+                              Decorate 491(si) SpecId 102
+                              Decorate 492(su) SpecId 103
+                              Decorate 493(sb) SpecId 104
+                              Decorate 494(su64inc) SpecId 105
                2:             TypeVoid
                3:             TypeFunction 2
               14:             TypeInt 64 0
@@ -161,38 +161,38 @@
              371:             TypeVector 94(float64_t) 3
              372:             TypePointer Function 371(f64vec3)
              377:             TypePointer Function 94(float64_t)
-             388:     31(int) Constant 1
-             389:     31(int) Constant 2
-             390:   74(ivec2) ConstantComposite 388 389
-             395:   81(ivec2) ConstantComposite 217 22
-             400:             TypePointer Function 368(bvec3)
-      462(Block):             TypeStruct 136(i64vec3) 14(int64_t)
-             463:             TypePointer Uniform 462(Block)
-      464(block):    463(ptr) Variable Uniform
-       465(si64): 18(int64_t) SpecConstant 4294967286 4294967295
-       466(su64): 14(int64_t) SpecConstant 20 0
-         467(si):     31(int) SpecConstant 4294967291
-         468(su):     21(int) SpecConstant 4
-         469(sb):    55(bool) SpecConstantTrue
-    470(su64inc): 14(int64_t) SpecConstantOp 128 466(su64) 70
-   471(i64_to_b):    55(bool) SpecConstantOp 171 465(si64) 69
-   472(u64_to_b):    55(bool) SpecConstantOp 171 466(su64) 69
-   473(b_to_i64): 18(int64_t) SpecConstantOp 169 469(sb) 61 60
-   474(b_to_u64): 14(int64_t) SpecConstantOp 169 469(sb) 70 69
-   475(i64_to_i):     31(int) SpecConstantOp 114 465(si64)
-   476(i_to_i64): 18(int64_t) SpecConstantOp 114 467(si)
-   477(u64_to_u):     21(int) SpecConstantOp 113 466(su64)
-   478(u_to_u64): 14(int64_t) SpecConstantOp 113 468(su)
- 479(u64_to_i64): 18(int64_t) SpecConstantOp 128 466(su64) 69
- 480(i64_to_u64): 14(int64_t) SpecConstantOp 128 465(si64) 69
-             481:     21(int) SpecConstantOp 113 466(su64)
-   482(u64_to_i):     31(int) SpecConstantOp 128 481 227
-             483: 18(int64_t) SpecConstantOp 114 467(si)
-   484(i_to_u64): 14(int64_t) SpecConstantOp 128 483 69
-             485:     31(int) SpecConstantOp 114 465(si64)
-   486(i64_to_u):     21(int) SpecConstantOp 128 485 227
-             487: 14(int64_t) SpecConstantOp 113 468(su)
-   488(u_to_i64): 18(int64_t) SpecConstantOp 128 487 69
+             390:     31(int) Constant 1
+             391:     31(int) Constant 2
+             392:   74(ivec2) ConstantComposite 390 391
+             397:   81(ivec2) ConstantComposite 217 22
+             402:             TypePointer Function 368(bvec3)
+      486(Block):             TypeStruct 136(i64vec3) 14(int64_t)
+             487:             TypePointer Uniform 486(Block)
+      488(block):    487(ptr) Variable Uniform
+       489(si64): 18(int64_t) SpecConstant 4294967286 4294967295
+       490(su64): 14(int64_t) SpecConstant 20 0
+         491(si):     31(int) SpecConstant 4294967291
+         492(su):     21(int) SpecConstant 4
+         493(sb):    55(bool) SpecConstantTrue
+    494(su64inc): 14(int64_t) SpecConstantOp 128 490(su64) 70
+   495(i64_to_b):    55(bool) SpecConstantOp 171 489(si64) 69
+   496(u64_to_b):    55(bool) SpecConstantOp 171 490(su64) 69
+   497(b_to_i64): 18(int64_t) SpecConstantOp 169 493(sb) 61 60
+   498(b_to_u64): 14(int64_t) SpecConstantOp 169 493(sb) 70 69
+   499(i64_to_i):     31(int) SpecConstantOp 114 489(si64)
+   500(i_to_i64): 18(int64_t) SpecConstantOp 114 491(si)
+   501(u64_to_u):     21(int) SpecConstantOp 113 490(su64)
+   502(u_to_u64): 14(int64_t) SpecConstantOp 113 492(su)
+ 503(u64_to_i64): 18(int64_t) SpecConstantOp 128 490(su64) 69
+ 504(i64_to_u64): 14(int64_t) SpecConstantOp 128 489(si64) 69
+             505:     21(int) SpecConstantOp 113 490(su64)
+   506(u64_to_i):     31(int) SpecConstantOp 128 505 227
+             507: 18(int64_t) SpecConstantOp 114 491(si)
+   508(i_to_u64): 14(int64_t) SpecConstantOp 128 507 69
+             509:     31(int) SpecConstantOp 114 489(si64)
+   510(i64_to_u):     21(int) SpecConstantOp 128 509 227
+             511: 14(int64_t) SpecConstantOp 113 492(su)
+   512(u_to_i64): 18(int64_t) SpecConstantOp 128 511 69
          4(main):           2 Function None 3
                5:             Label
                               Store 16(u64Max) 17
@@ -487,9 +487,9 @@
        299(u64v):    133(ptr) Variable Function
         301(u64):     40(ptr) Variable Function
          373(dv):    372(ptr) Variable Function
-         392(iv):     75(ptr) Variable Function
-         397(uv):     82(ptr) Variable Function
-         401(bv):    400(ptr) Variable Function
+         394(iv):     75(ptr) Variable Function
+         399(uv):     82(ptr) Variable Function
+         403(bv):    402(ptr) Variable Function
              287: 52(i64vec2) Load 286(i64v)
              288: 52(i64vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 287
                               Store 286(i64v) 288
@@ -593,93 +593,128 @@
                               Store 381 380
              382: 52(i64vec2) Load 286(i64v)
              383: 95(f64vec2) Bitcast 382
-             384:371(f64vec3) Load 373(dv)
-             385:371(f64vec3) VectorShuffle 384 383 3 4 2
-                              Store 373(dv) 385
-             386:132(i64vec3) Load 299(u64v)
-             387:371(f64vec3) Bitcast 386
-                              Store 373(dv) 387
-             391: 18(int64_t) Bitcast 390
-                              Store 289(i64) 391
-             393: 18(int64_t) Load 289(i64)
-             394:   74(ivec2) Bitcast 393
-                              Store 392(iv) 394
-             396: 14(int64_t) Bitcast 395
-                              Store 301(u64) 396
-             398: 14(int64_t) Load 301(u64)
-             399:   81(ivec2) Bitcast 398
-                              Store 397(uv) 399
-             402:132(i64vec3) Load 299(u64v)
-             403: 14(int64_t) Load 301(u64)
-             404:132(i64vec3) CompositeConstruct 403 403 403
-             405:  368(bvec3) ULessThan 402 404
-                              Store 401(bv) 405
-             406: 52(i64vec2) Load 286(i64v)
-             407: 18(int64_t) Load 289(i64)
-             408: 52(i64vec2) CompositeConstruct 407 407
-             409:   56(bvec2) SLessThan 406 408
-             410:  368(bvec3) Load 401(bv)
-             411:  368(bvec3) VectorShuffle 410 409 3 4 2
-                              Store 401(bv) 411
-             412:132(i64vec3) Load 299(u64v)
-             413: 14(int64_t) Load 301(u64)
-             414:132(i64vec3) CompositeConstruct 413 413 413
-             415:  368(bvec3) ULessThanEqual 412 414
-                              Store 401(bv) 415
-             416: 52(i64vec2) Load 286(i64v)
-             417: 18(int64_t) Load 289(i64)
-             418: 52(i64vec2) CompositeConstruct 417 417
-             419:   56(bvec2) SLessThanEqual 416 418
-             420:  368(bvec3) Load 401(bv)
-             421:  368(bvec3) VectorShuffle 420 419 3 4 2
-                              Store 401(bv) 421
-             422:132(i64vec3) Load 299(u64v)
-             423: 14(int64_t) Load 301(u64)
-             424:132(i64vec3) CompositeConstruct 423 423 423
-             425:  368(bvec3) UGreaterThan 422 424
-                              Store 401(bv) 425
-             426: 52(i64vec2) Load 286(i64v)
-             427: 18(int64_t) Load 289(i64)
-             428: 52(i64vec2) CompositeConstruct 427 427
-             429:   56(bvec2) SGreaterThan 426 428
-             430:  368(bvec3) Load 401(bv)
-             431:  368(bvec3) VectorShuffle 430 429 3 4 2
-                              Store 401(bv) 431
-             432:132(i64vec3) Load 299(u64v)
-             433: 14(int64_t) Load 301(u64)
-             434:132(i64vec3) CompositeConstruct 433 433 433
-             435:  368(bvec3) UGreaterThanEqual 432 434
-                              Store 401(bv) 435
-             436: 52(i64vec2) Load 286(i64v)
-             437: 18(int64_t) Load 289(i64)
-             438: 52(i64vec2) CompositeConstruct 437 437
-             439:   56(bvec2) SGreaterThanEqual 436 438
-             440:  368(bvec3) Load 401(bv)
-             441:  368(bvec3) VectorShuffle 440 439 3 4 2
-                              Store 401(bv) 441
-             442:132(i64vec3) Load 299(u64v)
-             443: 14(int64_t) Load 301(u64)
-             444:132(i64vec3) CompositeConstruct 443 443 443
-             445:  368(bvec3) IEqual 442 444
-                              Store 401(bv) 445
-             446: 52(i64vec2) Load 286(i64v)
-             447: 18(int64_t) Load 289(i64)
-             448: 52(i64vec2) CompositeConstruct 447 447
-             449:   56(bvec2) IEqual 446 448
-             450:  368(bvec3) Load 401(bv)
-             451:  368(bvec3) VectorShuffle 450 449 3 4 2
-                              Store 401(bv) 451
+             384:    377(ptr) AccessChain 373(dv) 227
+             385:94(float64_t) CompositeExtract 383 0
+                              Store 384 385
+             386:    377(ptr) AccessChain 373(dv) 203
+             387:94(float64_t) CompositeExtract 383 1
+                              Store 386 387
+             388:132(i64vec3) Load 299(u64v)
+             389:371(f64vec3) Bitcast 388
+                              Store 373(dv) 389
+             393: 18(int64_t) Bitcast 392
+                              Store 289(i64) 393
+             395: 18(int64_t) Load 289(i64)
+             396:   74(ivec2) Bitcast 395
+                              Store 394(iv) 396
+             398: 14(int64_t) Bitcast 397
+                              Store 301(u64) 398
+             400: 14(int64_t) Load 301(u64)
+             401:   81(ivec2) Bitcast 400
+                              Store 399(uv) 401
+             404:132(i64vec3) Load 299(u64v)
+             405: 14(int64_t) Load 301(u64)
+             406:132(i64vec3) CompositeConstruct 405 405 405
+             407:  368(bvec3) ULessThan 404 406
+                              Store 403(bv) 407
+             408: 52(i64vec2) Load 286(i64v)
+             409: 18(int64_t) Load 289(i64)
+             410: 52(i64vec2) CompositeConstruct 409 409
+             411:   56(bvec2) SLessThan 408 410
+             412:    225(ptr) AccessChain 403(bv) 227
+             413:    55(bool) CompositeExtract 411 0
+                              Store 412 413
+             414:    225(ptr) AccessChain 403(bv) 203
+             415:    55(bool) CompositeExtract 411 1
+                              Store 414 415
+             416:132(i64vec3) Load 299(u64v)
+             417: 14(int64_t) Load 301(u64)
+             418:132(i64vec3) CompositeConstruct 417 417 417
+             419:  368(bvec3) ULessThanEqual 416 418
+                              Store 403(bv) 419
+             420: 52(i64vec2) Load 286(i64v)
+             421: 18(int64_t) Load 289(i64)
+             422: 52(i64vec2) CompositeConstruct 421 421
+             423:   56(bvec2) SLessThanEqual 420 422
+             424:    225(ptr) AccessChain 403(bv) 227
+             425:    55(bool) CompositeExtract 423 0
+                              Store 424 425
+             426:    225(ptr) AccessChain 403(bv) 203
+             427:    55(bool) CompositeExtract 423 1
+                              Store 426 427
+             428:132(i64vec3) Load 299(u64v)
+             429: 14(int64_t) Load 301(u64)
+             430:132(i64vec3) CompositeConstruct 429 429 429
+             431:  368(bvec3) UGreaterThan 428 430
+                              Store 403(bv) 431
+             432: 52(i64vec2) Load 286(i64v)
+             433: 18(int64_t) Load 289(i64)
+             434: 52(i64vec2) CompositeConstruct 433 433
+             435:   56(bvec2) SGreaterThan 432 434
+             436:    225(ptr) AccessChain 403(bv) 227
+             437:    55(bool) CompositeExtract 435 0
+                              Store 436 437
+             438:    225(ptr) AccessChain 403(bv) 203
+             439:    55(bool) CompositeExtract 435 1
+                              Store 438 439
+             440:132(i64vec3) Load 299(u64v)
+             441: 14(int64_t) Load 301(u64)
+             442:132(i64vec3) CompositeConstruct 441 441 441
+             443:  368(bvec3) UGreaterThanEqual 440 442
+                              Store 403(bv) 443
+             444: 52(i64vec2) Load 286(i64v)
+             445: 18(int64_t) Load 289(i64)
+             446: 52(i64vec2) CompositeConstruct 445 445
+             447:   56(bvec2) SGreaterThanEqual 444 446
+             448:    225(ptr) AccessChain 403(bv) 227
+             449:    55(bool) CompositeExtract 447 0
+                              Store 448 449
+             450:    225(ptr) AccessChain 403(bv) 203
+             451:    55(bool) CompositeExtract 447 1
+                              Store 450 451
              452:132(i64vec3) Load 299(u64v)
              453: 14(int64_t) Load 301(u64)
              454:132(i64vec3) CompositeConstruct 453 453 453
-             455:  368(bvec3) INotEqual 452 454
-                              Store 401(bv) 455
+             455:  368(bvec3) IEqual 452 454
+                              Store 403(bv) 455
              456: 52(i64vec2) Load 286(i64v)
              457: 18(int64_t) Load 289(i64)
              458: 52(i64vec2) CompositeConstruct 457 457
-             459:   56(bvec2) INotEqual 456 458
-             460:  368(bvec3) Load 401(bv)
-             461:  368(bvec3) VectorShuffle 460 459 3 4 2
-                              Store 401(bv) 461
+             459:   56(bvec2) IEqual 456 458
+             460:    225(ptr) AccessChain 403(bv) 227
+             461:    55(bool) CompositeExtract 459 0
+                              Store 460 461
+             462:    225(ptr) AccessChain 403(bv) 203
+             463:    55(bool) CompositeExtract 459 1
+                              Store 462 463
+             464:132(i64vec3) Load 299(u64v)
+             465: 14(int64_t) Load 301(u64)
+             466:132(i64vec3) CompositeConstruct 465 465 465
+             467:  368(bvec3) INotEqual 464 466
+                              Store 403(bv) 467
+             468: 52(i64vec2) Load 286(i64v)
+             469: 18(int64_t) Load 289(i64)
+             470: 52(i64vec2) CompositeConstruct 469 469
+             471:   56(bvec2) INotEqual 468 470
+             472:    225(ptr) AccessChain 403(bv) 227
+             473:    55(bool) CompositeExtract 471 0
+                              Store 472 473
+             474:    225(ptr) AccessChain 403(bv) 203
+             475:    55(bool) CompositeExtract 471 1
+                              Store 474 475
+             476: 14(int64_t) Load 301(u64)
+             477: 18(int64_t) ExtInst 1(GLSL.std.450) 73(FindILsb) 476
+                              Store 289(i64) 477
+             478: 14(int64_t) Load 301(u64)
+             479: 65(i64vec2) CompositeConstruct 478 478
+             480: 52(i64vec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 479
+                              Store 286(i64v) 480
+             481: 14(int64_t) Load 301(u64)
+             482: 18(int64_t) BitCount 481
+                              Store 289(i64) 482
+             483: 14(int64_t) Load 301(u64)
+             484: 65(i64vec2) CompositeConstruct 483 483
+             485: 52(i64vec2) BitCount 484
+                              Store 286(i64v) 485
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.int8.frag.out b/Test/baseResults/spv.int8.frag.out
index e88707d..e9cd5f8 100644
--- a/Test/baseResults/spv.int8.frag.out
+++ b/Test/baseResults/spv.int8.frag.out
@@ -1,7 +1,7 @@
 spv.int8.frag
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 518
+// Id's are bound by 544
 
                               Capability Shader
                               Capability Float16
@@ -48,53 +48,55 @@
                               Name 117  "f64v"
                               Name 144  "u16v"
                               Name 174  "bv"
-                              Name 192  "u8v"
-                              Name 197  "i8"
-                              Name 217  "i"
-                              Name 224  "uv"
-                              Name 240  "i16"
-                              Name 276  "b"
-                              Name 338  "i8v"
-                              Name 341  "i8"
-                              Name 351  "u8v"
-                              Name 353  "u8"
-                              Name 423  "i16"
-                              Name 426  "i32"
-                              Name 429  "i8v4"
-                              Name 433  "u16"
-                              Name 434  "u8v2"
-                              Name 437  "u32"
-                              Name 440  "u8v4"
-                              Name 452  "bv"
-                              Name 513  "Block"
-                              MemberName 513(Block) 0  "i8"
-                              MemberName 513(Block) 1  "i8v2"
-                              MemberName 513(Block) 2  "i8v3"
-                              MemberName 513(Block) 3  "i8v4"
-                              MemberName 513(Block) 4  "u8"
-                              MemberName 513(Block) 5  "u8v2"
-                              MemberName 513(Block) 6  "u8v3"
-                              MemberName 513(Block) 7  "u8v4"
-                              Name 515  "block"
-                              Name 516  "si8"
-                              Name 517  "su8"
+                              Name 193  "arr"
+                              Name 201  "u8v"
+                              Name 206  "i8"
+                              Name 226  "i"
+                              Name 233  "uv"
+                              Name 249  "i16"
+                              Name 285  "b"
+                              Name 348  "f"
+                              Name 352  "i8v"
+                              Name 355  "i8"
+                              Name 365  "u8v"
+                              Name 367  "u8"
+                              Name 437  "i16"
+                              Name 440  "i32"
+                              Name 443  "i8v4"
+                              Name 447  "u16"
+                              Name 448  "u8v2"
+                              Name 451  "u32"
+                              Name 454  "u8v4"
+                              Name 466  "bv"
+                              Name 539  "Block"
+                              MemberName 539(Block) 0  "i8"
+                              MemberName 539(Block) 1  "i8v2"
+                              MemberName 539(Block) 2  "i8v3"
+                              MemberName 539(Block) 3  "i8v4"
+                              MemberName 539(Block) 4  "u8"
+                              MemberName 539(Block) 5  "u8v2"
+                              MemberName 539(Block) 6  "u8v3"
+                              MemberName 539(Block) 7  "u8v4"
+                              Name 541  "block"
+                              Name 542  "si8"
+                              Name 543  "su8"
                               MemberDecorate 24(Uniforms) 0 Offset 0
                               Decorate 24(Uniforms) Block
                               Decorate 26 DescriptorSet 0
                               Decorate 26 Binding 0
-                              MemberDecorate 513(Block) 0 Offset 0
-                              MemberDecorate 513(Block) 1 Offset 2
-                              MemberDecorate 513(Block) 2 Offset 4
-                              MemberDecorate 513(Block) 3 Offset 8
-                              MemberDecorate 513(Block) 4 Offset 12
-                              MemberDecorate 513(Block) 5 Offset 14
-                              MemberDecorate 513(Block) 6 Offset 16
-                              MemberDecorate 513(Block) 7 Offset 20
-                              Decorate 513(Block) Block
-                              Decorate 515(block) DescriptorSet 0
-                              Decorate 515(block) Binding 1
-                              Decorate 516(si8) SpecId 100
-                              Decorate 517(su8) SpecId 101
+                              MemberDecorate 539(Block) 0 Offset 0
+                              MemberDecorate 539(Block) 1 Offset 2
+                              MemberDecorate 539(Block) 2 Offset 4
+                              MemberDecorate 539(Block) 3 Offset 8
+                              MemberDecorate 539(Block) 4 Offset 12
+                              MemberDecorate 539(Block) 5 Offset 14
+                              MemberDecorate 539(Block) 6 Offset 16
+                              MemberDecorate 539(Block) 7 Offset 20
+                              Decorate 539(Block) Block
+                              Decorate 541(block) DescriptorSet 0
+                              Decorate 541(block) Binding 1
+                              Decorate 542(si8) SpecId 100
+                              Decorate 543(su8) SpecId 101
                2:             TypeVoid
                3:             TypeFunction 2
               14:             TypeInt 8 1
@@ -159,36 +161,45 @@
              182:  36(int8_t) Constant 1
              183:  49(i8vec2) ConstantComposite 181 181
              184:  49(i8vec2) ConstantComposite 182 182
-             190:             TypeVector 36(int8_t) 3
-             191:             TypePointer Function 190(i8vec3)
-             194:             TypeVector 14(int8_t) 3
-             216:             TypePointer Function 27(int)
-             222:             TypeVector 17(int) 3
-             223:             TypePointer Function 222(ivec3)
-             239:             TypePointer Function 57(int16_t)
-             261:     17(int) Constant 1
-             267:     17(int) Constant 2
-             275:             TypePointer Function 171(bool)
-             277:     17(int) Constant 0
-             291:             TypePointer Function 17(int)
-             349:  52(i8vec2) ConstantComposite 21 21
-             358: 190(i8vec3) ConstantComposite 181 181 181
-             400:   171(bool) ConstantTrue
-             407:   171(bool) ConstantFalse
-             408:  172(bvec2) ConstantComposite 407 407
-             420:             TypeVector 171(bool) 3
-             421:  420(bvec3) ConstantComposite 407 407 407
-             427:             TypeVector 14(int8_t) 4
-             428:             TypePointer Function 427(i8vec4)
-             432:             TypePointer Function 64(int16_t)
-             438:             TypeVector 36(int8_t) 4
-             439:             TypePointer Function 438(i8vec4)
-             451:             TypePointer Function 420(bvec3)
-      513(Block):             TypeStruct 14(int8_t) 52(i8vec2) 194(i8vec3) 427(i8vec4) 36(int8_t) 49(i8vec2) 190(i8vec3) 438(i8vec4)
-             514:             TypePointer Uniform 513(Block)
-      515(block):    514(ptr) Variable Uniform
-        516(si8):  14(int8_t) SpecConstant 4294967286
-        517(su8):  36(int8_t) SpecConstant 20
+             190:     17(int) Constant 4
+             191:             TypeArray 108(float) 190
+             192:             TypePointer Function 191
+             194:  108(float) Constant 1065353216
+             195:  108(float) Constant 1073741824
+             196:  108(float) Constant 1077936128
+             197:  108(float) Constant 1082130432
+             198:         191 ConstantComposite 194 195 196 197
+             199:             TypeVector 36(int8_t) 3
+             200:             TypePointer Function 199(i8vec3)
+             203:             TypeVector 14(int8_t) 3
+             225:             TypePointer Function 27(int)
+             231:             TypeVector 17(int) 3
+             232:             TypePointer Function 231(ivec3)
+             248:             TypePointer Function 57(int16_t)
+             270:     17(int) Constant 1
+             276:     17(int) Constant 2
+             284:             TypePointer Function 171(bool)
+             286:     17(int) Constant 0
+             300:             TypePointer Function 17(int)
+             347:             TypePointer Function 108(float)
+             363:  52(i8vec2) ConstantComposite 21 21
+             372: 199(i8vec3) ConstantComposite 181 181 181
+             414:   171(bool) ConstantTrue
+             421:   171(bool) ConstantFalse
+             422:  172(bvec2) ConstantComposite 421 421
+             434:             TypeVector 171(bool) 3
+             435:  434(bvec3) ConstantComposite 421 421 421
+             441:             TypeVector 14(int8_t) 4
+             442:             TypePointer Function 441(i8vec4)
+             446:             TypePointer Function 64(int16_t)
+             452:             TypeVector 36(int8_t) 4
+             453:             TypePointer Function 452(i8vec4)
+             465:             TypePointer Function 434(bvec3)
+      539(Block):             TypeStruct 14(int8_t) 52(i8vec2) 203(i8vec3) 441(i8vec4) 36(int8_t) 49(i8vec2) 199(i8vec3) 452(i8vec4)
+             540:             TypePointer Uniform 539(Block)
+      541(block):    540(ptr) Variable Uniform
+        542(si8):  14(int8_t) SpecConstant 4294967286
+        543(su8):  36(int8_t) SpecConstant 20
          4(main):           2 Function None 3
                5:             Label
                               Return
@@ -360,378 +371,403 @@
                               FunctionEnd
   10(operators():           2 Function None 3
               11:             Label
-        192(u8v):    191(ptr) Variable Function
-         197(i8):     15(ptr) Variable Function
-          217(i):    216(ptr) Variable Function
-         224(uv):    223(ptr) Variable Function
-        240(i16):    239(ptr) Variable Function
-          276(b):    275(ptr) Variable Function
-             193: 190(i8vec3) Load 192(u8v)
-             195: 194(i8vec3) CompositeConstruct 176 176 176
-             196: 190(i8vec3) IAdd 193 195
-                              Store 192(u8v) 196
-             198:  14(int8_t) Load 197(i8)
-             199:  14(int8_t) ISub 198 176
-                              Store 197(i8) 199
-             200:  14(int8_t) Load 197(i8)
-             201:  14(int8_t) IAdd 200 176
-                              Store 197(i8) 201
-             202: 190(i8vec3) Load 192(u8v)
-             203: 194(i8vec3) CompositeConstruct 176 176 176
-             204: 190(i8vec3) ISub 202 203
-                              Store 192(u8v) 204
-             205: 190(i8vec3) Load 192(u8v)
-             206: 190(i8vec3) Not 205
-                              Store 192(u8v) 206
-             207:  14(int8_t) Load 197(i8)
-                              Store 197(i8) 207
-             208: 190(i8vec3) Load 192(u8v)
-             209: 190(i8vec3) SNegate 208
-                              Store 192(u8v) 209
-             210:  14(int8_t) Load 197(i8)
-             211:  14(int8_t) Load 197(i8)
-             212:  14(int8_t) IAdd 211 210
-                              Store 197(i8) 212
-             213: 190(i8vec3) Load 192(u8v)
-             214: 190(i8vec3) Load 192(u8v)
-             215: 190(i8vec3) ISub 214 213
-                              Store 192(u8v) 215
-             218:  14(int8_t) Load 197(i8)
-             219:     27(int) SConvert 218
-             220:     27(int) Load 217(i)
-             221:     27(int) IMul 220 219
-                              Store 217(i) 221
-             225: 190(i8vec3) Load 192(u8v)
-             226:  222(ivec3) UConvert 225
-             227:  222(ivec3) Load 224(uv)
-             228:  222(ivec3) UDiv 227 226
-                              Store 224(uv) 228
-             229:  14(int8_t) Load 197(i8)
-             230:     27(int) SConvert 229
-             231:     17(int) Bitcast 230
-             232:  222(ivec3) Load 224(uv)
-             233:  222(ivec3) CompositeConstruct 231 231 231
-             234:  222(ivec3) UMod 232 233
-                              Store 224(uv) 234
-             235: 190(i8vec3) Load 192(u8v)
-             236:  222(ivec3) UConvert 235
-             237:  222(ivec3) Load 224(uv)
-             238:  222(ivec3) IAdd 236 237
-                              Store 224(uv) 238
-             241:  14(int8_t) Load 197(i8)
-             242: 57(int16_t) SConvert 241
-             243: 57(int16_t) Load 240(i16)
-             244: 57(int16_t) ISub 242 243
-                              Store 240(i16) 244
-             245: 190(i8vec3) Load 192(u8v)
-             246:  222(ivec3) UConvert 245
-             247:  222(ivec3) Load 224(uv)
-             248:  222(ivec3) IMul 246 247
-                              Store 224(uv) 248
-             249:  14(int8_t) Load 197(i8)
-             250: 57(int16_t) SConvert 249
-             251: 57(int16_t) Load 240(i16)
-             252: 57(int16_t) IMul 250 251
-                              Store 240(i16) 252
-             253:  14(int8_t) Load 197(i8)
-             254:     27(int) SConvert 253
-             255:     27(int) Load 217(i)
-             256:     27(int) SMod 254 255
-                              Store 217(i) 256
-             257:  14(int8_t) Load 197(i8)
-             258: 190(i8vec3) Load 192(u8v)
-             259: 194(i8vec3) CompositeConstruct 257 257 257
-             260: 190(i8vec3) ShiftLeftLogical 258 259
-                              Store 192(u8v) 260
-             262:     37(ptr) AccessChain 192(u8v) 261
-             263:  36(int8_t) Load 262
-             264:  14(int8_t) Load 197(i8)
-             265:  14(int8_t) ShiftRightArithmetic 264 263
-                              Store 197(i8) 265
-             266:  14(int8_t) Load 197(i8)
-             268:     37(ptr) AccessChain 192(u8v) 267
-             269:  36(int8_t) Load 268
-             270:  14(int8_t) ShiftLeftLogical 266 269
-                              Store 197(i8) 270
-             271: 190(i8vec3) Load 192(u8v)
-             272:  14(int8_t) Load 197(i8)
-             273: 194(i8vec3) CompositeConstruct 272 272 272
-             274: 190(i8vec3) ShiftLeftLogical 271 273
-                              Store 192(u8v) 274
-             278:     37(ptr) AccessChain 192(u8v) 277
-             279:  36(int8_t) Load 278
-             280:  14(int8_t) Load 197(i8)
-             281:  36(int8_t) Bitcast 280
-             282:   171(bool) INotEqual 279 281
-                              Store 276(b) 282
-             283:  14(int8_t) Load 197(i8)
-             284:  36(int8_t) Bitcast 283
-             285:     37(ptr) AccessChain 192(u8v) 277
-             286:  36(int8_t) Load 285
-             287:   171(bool) IEqual 284 286
-                              Store 276(b) 287
-             288:     37(ptr) AccessChain 192(u8v) 277
-             289:  36(int8_t) Load 288
-             290:     17(int) UConvert 289
-             292:    291(ptr) AccessChain 224(uv) 261
-             293:     17(int) Load 292
-             294:   171(bool) UGreaterThan 290 293
-                              Store 276(b) 294
-             295:  14(int8_t) Load 197(i8)
-             296:     27(int) SConvert 295
-             297:     27(int) Load 217(i)
-             298:   171(bool) SLessThan 296 297
-                              Store 276(b) 298
-             299:     37(ptr) AccessChain 192(u8v) 261
-             300:  36(int8_t) Load 299
-             301:     17(int) UConvert 300
-             302:    291(ptr) AccessChain 224(uv) 277
-             303:     17(int) Load 302
-             304:   171(bool) UGreaterThanEqual 301 303
-                              Store 276(b) 304
-             305:  14(int8_t) Load 197(i8)
-             306:     27(int) SConvert 305
-             307:     27(int) Load 217(i)
-             308:   171(bool) SLessThanEqual 306 307
-                              Store 276(b) 308
-             309:  14(int8_t) Load 197(i8)
-             310:     27(int) SConvert 309
-             311:     17(int) Bitcast 310
-             312:  222(ivec3) Load 224(uv)
-             313:  222(ivec3) CompositeConstruct 311 311 311
-             314:  222(ivec3) BitwiseOr 312 313
-                              Store 224(uv) 314
-             315:  14(int8_t) Load 197(i8)
-             316:     27(int) SConvert 315
-             317:     27(int) Load 217(i)
-             318:     27(int) BitwiseOr 316 317
-                              Store 217(i) 318
-             319:  14(int8_t) Load 197(i8)
-             320: 57(int16_t) SConvert 319
-             321: 57(int16_t) Load 240(i16)
-             322: 57(int16_t) BitwiseAnd 321 320
-                              Store 240(i16) 322
-             323: 190(i8vec3) Load 192(u8v)
-             324:  222(ivec3) UConvert 323
-             325:  222(ivec3) Load 224(uv)
-             326:  222(ivec3) BitwiseAnd 324 325
-                              Store 224(uv) 326
-             327:  14(int8_t) Load 197(i8)
-             328:     27(int) SConvert 327
-             329:     17(int) Bitcast 328
-             330:  222(ivec3) Load 224(uv)
-             331:  222(ivec3) CompositeConstruct 329 329 329
-             332:  222(ivec3) BitwiseXor 330 331
-                              Store 224(uv) 332
-             333: 190(i8vec3) Load 192(u8v)
-             334:  14(int8_t) Load 197(i8)
-             335:  36(int8_t) Bitcast 334
-             336: 190(i8vec3) CompositeConstruct 335 335 335
-             337: 190(i8vec3) BitwiseXor 333 336
-                              Store 192(u8v) 337
+        193(arr):    192(ptr) Variable Function
+        201(u8v):    200(ptr) Variable Function
+         206(i8):     15(ptr) Variable Function
+          226(i):    225(ptr) Variable Function
+         233(uv):    232(ptr) Variable Function
+        249(i16):    248(ptr) Variable Function
+          285(b):    284(ptr) Variable Function
+          348(f):    347(ptr) Variable Function
+                              Store 193(arr) 198
+             202: 199(i8vec3) Load 201(u8v)
+             204: 203(i8vec3) CompositeConstruct 176 176 176
+             205: 199(i8vec3) IAdd 202 204
+                              Store 201(u8v) 205
+             207:  14(int8_t) Load 206(i8)
+             208:  14(int8_t) ISub 207 176
+                              Store 206(i8) 208
+             209:  14(int8_t) Load 206(i8)
+             210:  14(int8_t) IAdd 209 176
+                              Store 206(i8) 210
+             211: 199(i8vec3) Load 201(u8v)
+             212: 203(i8vec3) CompositeConstruct 176 176 176
+             213: 199(i8vec3) ISub 211 212
+                              Store 201(u8v) 213
+             214: 199(i8vec3) Load 201(u8v)
+             215: 199(i8vec3) Not 214
+                              Store 201(u8v) 215
+             216:  14(int8_t) Load 206(i8)
+                              Store 206(i8) 216
+             217: 199(i8vec3) Load 201(u8v)
+             218: 199(i8vec3) SNegate 217
+                              Store 201(u8v) 218
+             219:  14(int8_t) Load 206(i8)
+             220:  14(int8_t) Load 206(i8)
+             221:  14(int8_t) IAdd 220 219
+                              Store 206(i8) 221
+             222: 199(i8vec3) Load 201(u8v)
+             223: 199(i8vec3) Load 201(u8v)
+             224: 199(i8vec3) ISub 223 222
+                              Store 201(u8v) 224
+             227:  14(int8_t) Load 206(i8)
+             228:     27(int) SConvert 227
+             229:     27(int) Load 226(i)
+             230:     27(int) IMul 229 228
+                              Store 226(i) 230
+             234: 199(i8vec3) Load 201(u8v)
+             235:  231(ivec3) UConvert 234
+             236:  231(ivec3) Load 233(uv)
+             237:  231(ivec3) UDiv 236 235
+                              Store 233(uv) 237
+             238:  14(int8_t) Load 206(i8)
+             239:     27(int) SConvert 238
+             240:     17(int) Bitcast 239
+             241:  231(ivec3) Load 233(uv)
+             242:  231(ivec3) CompositeConstruct 240 240 240
+             243:  231(ivec3) UMod 241 242
+                              Store 233(uv) 243
+             244: 199(i8vec3) Load 201(u8v)
+             245:  231(ivec3) UConvert 244
+             246:  231(ivec3) Load 233(uv)
+             247:  231(ivec3) IAdd 245 246
+                              Store 233(uv) 247
+             250:  14(int8_t) Load 206(i8)
+             251: 57(int16_t) SConvert 250
+             252: 57(int16_t) Load 249(i16)
+             253: 57(int16_t) ISub 251 252
+                              Store 249(i16) 253
+             254: 199(i8vec3) Load 201(u8v)
+             255:  231(ivec3) UConvert 254
+             256:  231(ivec3) Load 233(uv)
+             257:  231(ivec3) IMul 255 256
+                              Store 233(uv) 257
+             258:  14(int8_t) Load 206(i8)
+             259: 57(int16_t) SConvert 258
+             260: 57(int16_t) Load 249(i16)
+             261: 57(int16_t) IMul 259 260
+                              Store 249(i16) 261
+             262:  14(int8_t) Load 206(i8)
+             263:     27(int) SConvert 262
+             264:     27(int) Load 226(i)
+             265:     27(int) SMod 263 264
+                              Store 226(i) 265
+             266:  14(int8_t) Load 206(i8)
+             267: 199(i8vec3) Load 201(u8v)
+             268: 203(i8vec3) CompositeConstruct 266 266 266
+             269: 199(i8vec3) ShiftLeftLogical 267 268
+                              Store 201(u8v) 269
+             271:     37(ptr) AccessChain 201(u8v) 270
+             272:  36(int8_t) Load 271
+             273:  14(int8_t) Load 206(i8)
+             274:  14(int8_t) ShiftRightArithmetic 273 272
+                              Store 206(i8) 274
+             275:  14(int8_t) Load 206(i8)
+             277:     37(ptr) AccessChain 201(u8v) 276
+             278:  36(int8_t) Load 277
+             279:  14(int8_t) ShiftLeftLogical 275 278
+                              Store 206(i8) 279
+             280: 199(i8vec3) Load 201(u8v)
+             281:  14(int8_t) Load 206(i8)
+             282: 203(i8vec3) CompositeConstruct 281 281 281
+             283: 199(i8vec3) ShiftLeftLogical 280 282
+                              Store 201(u8v) 283
+             287:     37(ptr) AccessChain 201(u8v) 286
+             288:  36(int8_t) Load 287
+             289:  14(int8_t) Load 206(i8)
+             290:  36(int8_t) Bitcast 289
+             291:   171(bool) INotEqual 288 290
+                              Store 285(b) 291
+             292:  14(int8_t) Load 206(i8)
+             293:  36(int8_t) Bitcast 292
+             294:     37(ptr) AccessChain 201(u8v) 286
+             295:  36(int8_t) Load 294
+             296:   171(bool) IEqual 293 295
+                              Store 285(b) 296
+             297:     37(ptr) AccessChain 201(u8v) 286
+             298:  36(int8_t) Load 297
+             299:     17(int) UConvert 298
+             301:    300(ptr) AccessChain 233(uv) 270
+             302:     17(int) Load 301
+             303:   171(bool) UGreaterThan 299 302
+                              Store 285(b) 303
+             304:  14(int8_t) Load 206(i8)
+             305:     27(int) SConvert 304
+             306:     27(int) Load 226(i)
+             307:   171(bool) SLessThan 305 306
+                              Store 285(b) 307
+             308:     37(ptr) AccessChain 201(u8v) 270
+             309:  36(int8_t) Load 308
+             310:     17(int) UConvert 309
+             311:    300(ptr) AccessChain 233(uv) 286
+             312:     17(int) Load 311
+             313:   171(bool) UGreaterThanEqual 310 312
+                              Store 285(b) 313
+             314:  14(int8_t) Load 206(i8)
+             315:     27(int) SConvert 314
+             316:     27(int) Load 226(i)
+             317:   171(bool) SLessThanEqual 315 316
+                              Store 285(b) 317
+             318:  14(int8_t) Load 206(i8)
+             319:     27(int) SConvert 318
+             320:     17(int) Bitcast 319
+             321:  231(ivec3) Load 233(uv)
+             322:  231(ivec3) CompositeConstruct 320 320 320
+             323:  231(ivec3) BitwiseOr 321 322
+                              Store 233(uv) 323
+             324:  14(int8_t) Load 206(i8)
+             325:     27(int) SConvert 324
+             326:     27(int) Load 226(i)
+             327:     27(int) BitwiseOr 325 326
+                              Store 226(i) 327
+             328:  14(int8_t) Load 206(i8)
+             329: 57(int16_t) SConvert 328
+             330: 57(int16_t) Load 249(i16)
+             331: 57(int16_t) BitwiseAnd 330 329
+                              Store 249(i16) 331
+             332: 199(i8vec3) Load 201(u8v)
+             333:  231(ivec3) UConvert 332
+             334:  231(ivec3) Load 233(uv)
+             335:  231(ivec3) BitwiseAnd 333 334
+                              Store 233(uv) 335
+             336:  14(int8_t) Load 206(i8)
+             337:     27(int) SConvert 336
+             338:     17(int) Bitcast 337
+             339:  231(ivec3) Load 233(uv)
+             340:  231(ivec3) CompositeConstruct 338 338 338
+             341:  231(ivec3) BitwiseXor 339 340
+                              Store 233(uv) 341
+             342: 199(i8vec3) Load 201(u8v)
+             343:  14(int8_t) Load 206(i8)
+             344:  36(int8_t) Bitcast 343
+             345: 199(i8vec3) CompositeConstruct 344 344 344
+             346: 199(i8vec3) BitwiseXor 342 345
+                              Store 201(u8v) 346
+             349:  14(int8_t) Load 206(i8)
+             350:    347(ptr) AccessChain 193(arr) 349
+             351:  108(float) Load 350
+                              Store 348(f) 351
                               Return
                               FunctionEnd
 12(builtinFuncs():           2 Function None 3
               13:             Label
-        338(i8v):     53(ptr) Variable Function
-         341(i8):     15(ptr) Variable Function
-        351(u8v):    191(ptr) Variable Function
-         353(u8):     37(ptr) Variable Function
-        423(i16):    239(ptr) Variable Function
-        426(i32):    216(ptr) Variable Function
-       429(i8v4):    428(ptr) Variable Function
-        433(u16):    432(ptr) Variable Function
-       434(u8v2):     50(ptr) Variable Function
-        437(u32):    291(ptr) Variable Function
-       440(u8v4):    439(ptr) Variable Function
-         452(bv):    451(ptr) Variable Function
-             339:  52(i8vec2) Load 338(i8v)
-             340:  52(i8vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 339
-                              Store 338(i8v) 340
-             342:  14(int8_t) Load 341(i8)
-             343:  14(int8_t) ExtInst 1(GLSL.std.450) 7(SSign) 342
-                              Store 341(i8) 343
-             344:  52(i8vec2) Load 338(i8v)
-             345:  14(int8_t) Load 341(i8)
-             346:  52(i8vec2) CompositeConstruct 345 345
-             347:  52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 344 346
-                              Store 338(i8v) 347
-             348:  52(i8vec2) Load 338(i8v)
-             350:  52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 348 349
-                              Store 338(i8v) 350
-             352: 190(i8vec3) Load 351(u8v)
-             354:  36(int8_t) Load 353(u8)
-             355: 190(i8vec3) CompositeConstruct 354 354 354
-             356: 190(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 352 355
-                              Store 351(u8v) 356
-             357: 190(i8vec3) Load 351(u8v)
-             359: 190(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 357 358
-                              Store 351(u8v) 359
-             360:  52(i8vec2) Load 338(i8v)
-             361:  14(int8_t) Load 341(i8)
-             362:  52(i8vec2) CompositeConstruct 361 361
-             363:  52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 360 362
-                              Store 338(i8v) 363
-             364:  52(i8vec2) Load 338(i8v)
-             365:  52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 364 349
-                              Store 338(i8v) 365
-             366: 190(i8vec3) Load 351(u8v)
-             367:  36(int8_t) Load 353(u8)
-             368: 190(i8vec3) CompositeConstruct 367 367 367
-             369: 190(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 366 368
-                              Store 351(u8v) 369
-             370: 190(i8vec3) Load 351(u8v)
-             371: 190(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 370 358
-                              Store 351(u8v) 371
-             372:  52(i8vec2) Load 338(i8v)
-             373:  14(int8_t) Load 341(i8)
-             374:  14(int8_t) SNegate 373
-             375:  14(int8_t) Load 341(i8)
-             376:  52(i8vec2) CompositeConstruct 374 374
-             377:  52(i8vec2) CompositeConstruct 375 375
-             378:  52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 372 376 377
-                              Store 338(i8v) 378
-             379:  52(i8vec2) Load 338(i8v)
-             380:  52(i8vec2) Load 338(i8v)
-             381:  52(i8vec2) SNegate 380
-             382:  52(i8vec2) Load 338(i8v)
-             383:  52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 379 381 382
-                              Store 338(i8v) 383
-             384: 190(i8vec3) Load 351(u8v)
-             385:  36(int8_t) Load 353(u8)
-             386:  36(int8_t) SNegate 385
-             387:  36(int8_t) Load 353(u8)
-             388: 190(i8vec3) CompositeConstruct 386 386 386
-             389: 190(i8vec3) CompositeConstruct 387 387 387
-             390: 190(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 384 388 389
-                              Store 351(u8v) 390
-             391: 190(i8vec3) Load 351(u8v)
-             392: 190(i8vec3) Load 351(u8v)
-             393: 190(i8vec3) SNegate 392
-             394: 190(i8vec3) Load 351(u8v)
-             395: 190(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 391 393 394
-                              Store 351(u8v) 395
-             396:     15(ptr) AccessChain 338(i8v) 277
-             397:  14(int8_t) Load 396
-             398:     15(ptr) AccessChain 338(i8v) 261
-             399:  14(int8_t) Load 398
-             401:  14(int8_t) Select 400 399 397
-                              Store 341(i8) 401
-             402:  14(int8_t) Load 341(i8)
-             403:  52(i8vec2) CompositeConstruct 402 402
-             404:  14(int8_t) Load 341(i8)
-             405:  14(int8_t) SNegate 404
-             406:  52(i8vec2) CompositeConstruct 405 405
-             409:  52(i8vec2) Select 408 406 403
-                              Store 338(i8v) 409
-             410:     37(ptr) AccessChain 351(u8v) 277
-             411:  36(int8_t) Load 410
-             412:     37(ptr) AccessChain 351(u8v) 261
-             413:  36(int8_t) Load 412
-             414:  36(int8_t) Select 400 413 411
-                              Store 353(u8) 414
-             415:  36(int8_t) Load 353(u8)
-             416: 190(i8vec3) CompositeConstruct 415 415 415
-             417:  36(int8_t) Load 353(u8)
-             418:  36(int8_t) SNegate 417
-             419: 190(i8vec3) CompositeConstruct 418 418 418
-             422: 190(i8vec3) Select 421 419 416
-                              Store 351(u8v) 422
-             424:  52(i8vec2) Load 338(i8v)
-             425: 57(int16_t) Bitcast 424
-                              Store 423(i16) 425
-             430: 427(i8vec4) Load 429(i8v4)
-             431:     27(int) Bitcast 430
-                              Store 426(i32) 431
-             435:  49(i8vec2) Load 434(u8v2)
-             436: 64(int16_t) Bitcast 435
-                              Store 433(u16) 436
-             441: 438(i8vec4) Load 440(u8v4)
-             442:     17(int) Bitcast 441
-                              Store 437(u32) 442
-             443: 57(int16_t) Load 423(i16)
-             444:  52(i8vec2) Bitcast 443
-                              Store 338(i8v) 444
-             445:     27(int) Load 426(i32)
-             446: 427(i8vec4) Bitcast 445
-                              Store 429(i8v4) 446
-             447: 64(int16_t) Load 433(u16)
-             448:  49(i8vec2) Bitcast 447
-                              Store 434(u8v2) 448
-             449:     17(int) Load 437(u32)
-             450: 438(i8vec4) Bitcast 449
-                              Store 440(u8v4) 450
-             453: 190(i8vec3) Load 351(u8v)
-             454:  36(int8_t) Load 353(u8)
-             455: 190(i8vec3) CompositeConstruct 454 454 454
-             456:  420(bvec3) ULessThan 453 455
-                              Store 452(bv) 456
-             457:  52(i8vec2) Load 338(i8v)
-             458:  14(int8_t) Load 341(i8)
-             459:  52(i8vec2) CompositeConstruct 458 458
-             460:  172(bvec2) SLessThan 457 459
-             461:  420(bvec3) Load 452(bv)
-             462:  420(bvec3) VectorShuffle 461 460 3 4 2
-                              Store 452(bv) 462
-             463: 190(i8vec3) Load 351(u8v)
-             464:  36(int8_t) Load 353(u8)
-             465: 190(i8vec3) CompositeConstruct 464 464 464
-             466:  420(bvec3) ULessThanEqual 463 465
-                              Store 452(bv) 466
-             467:  52(i8vec2) Load 338(i8v)
-             468:  14(int8_t) Load 341(i8)
-             469:  52(i8vec2) CompositeConstruct 468 468
-             470:  172(bvec2) SLessThanEqual 467 469
-             471:  420(bvec3) Load 452(bv)
-             472:  420(bvec3) VectorShuffle 471 470 3 4 2
-                              Store 452(bv) 472
-             473: 190(i8vec3) Load 351(u8v)
-             474:  36(int8_t) Load 353(u8)
-             475: 190(i8vec3) CompositeConstruct 474 474 474
-             476:  420(bvec3) UGreaterThan 473 475
-                              Store 452(bv) 476
-             477:  52(i8vec2) Load 338(i8v)
-             478:  14(int8_t) Load 341(i8)
-             479:  52(i8vec2) CompositeConstruct 478 478
-             480:  172(bvec2) SGreaterThan 477 479
-             481:  420(bvec3) Load 452(bv)
-             482:  420(bvec3) VectorShuffle 481 480 3 4 2
-                              Store 452(bv) 482
-             483: 190(i8vec3) Load 351(u8v)
-             484:  36(int8_t) Load 353(u8)
-             485: 190(i8vec3) CompositeConstruct 484 484 484
-             486:  420(bvec3) UGreaterThanEqual 483 485
-                              Store 452(bv) 486
-             487:  52(i8vec2) Load 338(i8v)
-             488:  14(int8_t) Load 341(i8)
-             489:  52(i8vec2) CompositeConstruct 488 488
-             490:  172(bvec2) SGreaterThanEqual 487 489
-             491:  420(bvec3) Load 452(bv)
-             492:  420(bvec3) VectorShuffle 491 490 3 4 2
-                              Store 452(bv) 492
-             493: 190(i8vec3) Load 351(u8v)
-             494:  36(int8_t) Load 353(u8)
-             495: 190(i8vec3) CompositeConstruct 494 494 494
-             496:  420(bvec3) IEqual 493 495
-                              Store 452(bv) 496
-             497:  52(i8vec2) Load 338(i8v)
-             498:  14(int8_t) Load 341(i8)
-             499:  52(i8vec2) CompositeConstruct 498 498
-             500:  172(bvec2) IEqual 497 499
-             501:  420(bvec3) Load 452(bv)
-             502:  420(bvec3) VectorShuffle 501 500 3 4 2
-                              Store 452(bv) 502
-             503: 190(i8vec3) Load 351(u8v)
-             504:  36(int8_t) Load 353(u8)
-             505: 190(i8vec3) CompositeConstruct 504 504 504
-             506:  420(bvec3) INotEqual 503 505
-                              Store 452(bv) 506
-             507:  52(i8vec2) Load 338(i8v)
-             508:  14(int8_t) Load 341(i8)
+        352(i8v):     53(ptr) Variable Function
+         355(i8):     15(ptr) Variable Function
+        365(u8v):    200(ptr) Variable Function
+         367(u8):     37(ptr) Variable Function
+        437(i16):    248(ptr) Variable Function
+        440(i32):    225(ptr) Variable Function
+       443(i8v4):    442(ptr) Variable Function
+        447(u16):    446(ptr) Variable Function
+       448(u8v2):     50(ptr) Variable Function
+        451(u32):    300(ptr) Variable Function
+       454(u8v4):    453(ptr) Variable Function
+         466(bv):    465(ptr) Variable Function
+             353:  52(i8vec2) Load 352(i8v)
+             354:  52(i8vec2) ExtInst 1(GLSL.std.450) 5(SAbs) 353
+                              Store 352(i8v) 354
+             356:  14(int8_t) Load 355(i8)
+             357:  14(int8_t) ExtInst 1(GLSL.std.450) 7(SSign) 356
+                              Store 355(i8) 357
+             358:  52(i8vec2) Load 352(i8v)
+             359:  14(int8_t) Load 355(i8)
+             360:  52(i8vec2) CompositeConstruct 359 359
+             361:  52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 358 360
+                              Store 352(i8v) 361
+             362:  52(i8vec2) Load 352(i8v)
+             364:  52(i8vec2) ExtInst 1(GLSL.std.450) 39(SMin) 362 363
+                              Store 352(i8v) 364
+             366: 199(i8vec3) Load 365(u8v)
+             368:  36(int8_t) Load 367(u8)
+             369: 199(i8vec3) CompositeConstruct 368 368 368
+             370: 199(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 366 369
+                              Store 365(u8v) 370
+             371: 199(i8vec3) Load 365(u8v)
+             373: 199(i8vec3) ExtInst 1(GLSL.std.450) 38(UMin) 371 372
+                              Store 365(u8v) 373
+             374:  52(i8vec2) Load 352(i8v)
+             375:  14(int8_t) Load 355(i8)
+             376:  52(i8vec2) CompositeConstruct 375 375
+             377:  52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 374 376
+                              Store 352(i8v) 377
+             378:  52(i8vec2) Load 352(i8v)
+             379:  52(i8vec2) ExtInst 1(GLSL.std.450) 42(SMax) 378 363
+                              Store 352(i8v) 379
+             380: 199(i8vec3) Load 365(u8v)
+             381:  36(int8_t) Load 367(u8)
+             382: 199(i8vec3) CompositeConstruct 381 381 381
+             383: 199(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 380 382
+                              Store 365(u8v) 383
+             384: 199(i8vec3) Load 365(u8v)
+             385: 199(i8vec3) ExtInst 1(GLSL.std.450) 41(UMax) 384 372
+                              Store 365(u8v) 385
+             386:  52(i8vec2) Load 352(i8v)
+             387:  14(int8_t) Load 355(i8)
+             388:  14(int8_t) SNegate 387
+             389:  14(int8_t) Load 355(i8)
+             390:  52(i8vec2) CompositeConstruct 388 388
+             391:  52(i8vec2) CompositeConstruct 389 389
+             392:  52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 386 390 391
+                              Store 352(i8v) 392
+             393:  52(i8vec2) Load 352(i8v)
+             394:  52(i8vec2) Load 352(i8v)
+             395:  52(i8vec2) SNegate 394
+             396:  52(i8vec2) Load 352(i8v)
+             397:  52(i8vec2) ExtInst 1(GLSL.std.450) 45(SClamp) 393 395 396
+                              Store 352(i8v) 397
+             398: 199(i8vec3) Load 365(u8v)
+             399:  36(int8_t) Load 367(u8)
+             400:  36(int8_t) SNegate 399
+             401:  36(int8_t) Load 367(u8)
+             402: 199(i8vec3) CompositeConstruct 400 400 400
+             403: 199(i8vec3) CompositeConstruct 401 401 401
+             404: 199(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 398 402 403
+                              Store 365(u8v) 404
+             405: 199(i8vec3) Load 365(u8v)
+             406: 199(i8vec3) Load 365(u8v)
+             407: 199(i8vec3) SNegate 406
+             408: 199(i8vec3) Load 365(u8v)
+             409: 199(i8vec3) ExtInst 1(GLSL.std.450) 44(UClamp) 405 407 408
+                              Store 365(u8v) 409
+             410:     15(ptr) AccessChain 352(i8v) 286
+             411:  14(int8_t) Load 410
+             412:     15(ptr) AccessChain 352(i8v) 270
+             413:  14(int8_t) Load 412
+             415:  14(int8_t) Select 414 413 411
+                              Store 355(i8) 415
+             416:  14(int8_t) Load 355(i8)
+             417:  52(i8vec2) CompositeConstruct 416 416
+             418:  14(int8_t) Load 355(i8)
+             419:  14(int8_t) SNegate 418
+             420:  52(i8vec2) CompositeConstruct 419 419
+             423:  52(i8vec2) Select 422 420 417
+                              Store 352(i8v) 423
+             424:     37(ptr) AccessChain 365(u8v) 286
+             425:  36(int8_t) Load 424
+             426:     37(ptr) AccessChain 365(u8v) 270
+             427:  36(int8_t) Load 426
+             428:  36(int8_t) Select 414 427 425
+                              Store 367(u8) 428
+             429:  36(int8_t) Load 367(u8)
+             430: 199(i8vec3) CompositeConstruct 429 429 429
+             431:  36(int8_t) Load 367(u8)
+             432:  36(int8_t) SNegate 431
+             433: 199(i8vec3) CompositeConstruct 432 432 432
+             436: 199(i8vec3) Select 435 433 430
+                              Store 365(u8v) 436
+             438:  52(i8vec2) Load 352(i8v)
+             439: 57(int16_t) Bitcast 438
+                              Store 437(i16) 439
+             444: 441(i8vec4) Load 443(i8v4)
+             445:     27(int) Bitcast 444
+                              Store 440(i32) 445
+             449:  49(i8vec2) Load 448(u8v2)
+             450: 64(int16_t) Bitcast 449
+                              Store 447(u16) 450
+             455: 452(i8vec4) Load 454(u8v4)
+             456:     17(int) Bitcast 455
+                              Store 451(u32) 456
+             457: 57(int16_t) Load 437(i16)
+             458:  52(i8vec2) Bitcast 457
+                              Store 352(i8v) 458
+             459:     27(int) Load 440(i32)
+             460: 441(i8vec4) Bitcast 459
+                              Store 443(i8v4) 460
+             461: 64(int16_t) Load 447(u16)
+             462:  49(i8vec2) Bitcast 461
+                              Store 448(u8v2) 462
+             463:     17(int) Load 451(u32)
+             464: 452(i8vec4) Bitcast 463
+                              Store 454(u8v4) 464
+             467: 199(i8vec3) Load 365(u8v)
+             468:  36(int8_t) Load 367(u8)
+             469: 199(i8vec3) CompositeConstruct 468 468 468
+             470:  434(bvec3) ULessThan 467 469
+                              Store 466(bv) 470
+             471:  52(i8vec2) Load 352(i8v)
+             472:  14(int8_t) Load 355(i8)
+             473:  52(i8vec2) CompositeConstruct 472 472
+             474:  172(bvec2) SLessThan 471 473
+             475:    284(ptr) AccessChain 466(bv) 286
+             476:   171(bool) CompositeExtract 474 0
+                              Store 475 476
+             477:    284(ptr) AccessChain 466(bv) 270
+             478:   171(bool) CompositeExtract 474 1
+                              Store 477 478
+             479: 199(i8vec3) Load 365(u8v)
+             480:  36(int8_t) Load 367(u8)
+             481: 199(i8vec3) CompositeConstruct 480 480 480
+             482:  434(bvec3) ULessThanEqual 479 481
+                              Store 466(bv) 482
+             483:  52(i8vec2) Load 352(i8v)
+             484:  14(int8_t) Load 355(i8)
+             485:  52(i8vec2) CompositeConstruct 484 484
+             486:  172(bvec2) SLessThanEqual 483 485
+             487:    284(ptr) AccessChain 466(bv) 286
+             488:   171(bool) CompositeExtract 486 0
+                              Store 487 488
+             489:    284(ptr) AccessChain 466(bv) 270
+             490:   171(bool) CompositeExtract 486 1
+                              Store 489 490
+             491: 199(i8vec3) Load 365(u8v)
+             492:  36(int8_t) Load 367(u8)
+             493: 199(i8vec3) CompositeConstruct 492 492 492
+             494:  434(bvec3) UGreaterThan 491 493
+                              Store 466(bv) 494
+             495:  52(i8vec2) Load 352(i8v)
+             496:  14(int8_t) Load 355(i8)
+             497:  52(i8vec2) CompositeConstruct 496 496
+             498:  172(bvec2) SGreaterThan 495 497
+             499:    284(ptr) AccessChain 466(bv) 286
+             500:   171(bool) CompositeExtract 498 0
+                              Store 499 500
+             501:    284(ptr) AccessChain 466(bv) 270
+             502:   171(bool) CompositeExtract 498 1
+                              Store 501 502
+             503: 199(i8vec3) Load 365(u8v)
+             504:  36(int8_t) Load 367(u8)
+             505: 199(i8vec3) CompositeConstruct 504 504 504
+             506:  434(bvec3) UGreaterThanEqual 503 505
+                              Store 466(bv) 506
+             507:  52(i8vec2) Load 352(i8v)
+             508:  14(int8_t) Load 355(i8)
              509:  52(i8vec2) CompositeConstruct 508 508
-             510:  172(bvec2) INotEqual 507 509
-             511:  420(bvec3) Load 452(bv)
-             512:  420(bvec3) VectorShuffle 511 510 3 4 2
-                              Store 452(bv) 512
+             510:  172(bvec2) SGreaterThanEqual 507 509
+             511:    284(ptr) AccessChain 466(bv) 286
+             512:   171(bool) CompositeExtract 510 0
+                              Store 511 512
+             513:    284(ptr) AccessChain 466(bv) 270
+             514:   171(bool) CompositeExtract 510 1
+                              Store 513 514
+             515: 199(i8vec3) Load 365(u8v)
+             516:  36(int8_t) Load 367(u8)
+             517: 199(i8vec3) CompositeConstruct 516 516 516
+             518:  434(bvec3) IEqual 515 517
+                              Store 466(bv) 518
+             519:  52(i8vec2) Load 352(i8v)
+             520:  14(int8_t) Load 355(i8)
+             521:  52(i8vec2) CompositeConstruct 520 520
+             522:  172(bvec2) IEqual 519 521
+             523:    284(ptr) AccessChain 466(bv) 286
+             524:   171(bool) CompositeExtract 522 0
+                              Store 523 524
+             525:    284(ptr) AccessChain 466(bv) 270
+             526:   171(bool) CompositeExtract 522 1
+                              Store 525 526
+             527: 199(i8vec3) Load 365(u8v)
+             528:  36(int8_t) Load 367(u8)
+             529: 199(i8vec3) CompositeConstruct 528 528 528
+             530:  434(bvec3) INotEqual 527 529
+                              Store 466(bv) 530
+             531:  52(i8vec2) Load 352(i8v)
+             532:  14(int8_t) Load 355(i8)
+             533:  52(i8vec2) CompositeConstruct 532 532
+             534:  172(bvec2) INotEqual 531 533
+             535:    284(ptr) AccessChain 466(bv) 286
+             536:   171(bool) CompositeExtract 534 0
+                              Store 535 536
+             537:    284(ptr) AccessChain 466(bv) 270
+             538:   171(bool) CompositeExtract 534 1
+                              Store 537 538
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.intOps.vert.out b/Test/baseResults/spv.intOps.vert.out
index d57c306..b57eac2 100644
--- a/Test/baseResults/spv.intOps.vert.out
+++ b/Test/baseResults/spv.intOps.vert.out
@@ -1,12 +1,12 @@
 spv.intOps.vert
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 268
+// Id's are bound by 302
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Vertex 4  "main" 9 15 21 26 47 67 83 100 121 142 146 156 173 182 247
+                              EntryPoint Vertex 4  "main" 9 15 21 26 53 72 88 105 137 156 160 172 189 202 281
                               Source ESSL 310
                               Name 4  "main"
                               Name 9  "iout"
@@ -15,44 +15,44 @@
                               Name 26  "u2"
                               Name 30  "u2out"
                               Name 31  "ResType"
-                              Name 47  "u1"
-                              Name 51  "u1out"
-                              Name 52  "ResType"
-                              Name 67  "u4"
-                              Name 71  "u4outHi"
-                              Name 72  "u4outLow"
-                              Name 73  "ResType"
-                              Name 83  "i4"
-                              Name 87  "i4outHi"
-                              Name 88  "i4outLow"
-                              Name 89  "ResType"
-                              Name 100  "v3"
-                              Name 104  "i3out"
-                              Name 105  "ResType"
-                              Name 121  "v1"
-                              Name 124  "i1out"
-                              Name 125  "ResType"
-                              Name 142  "v2"
-                              Name 146  "i2"
-                              Name 156  "i1"
-                              Name 173  "u3"
-                              Name 182  "i3"
-                              Name 247  "v4"
+                              Name 53  "u1"
+                              Name 57  "u1out"
+                              Name 58  "ResType"
+                              Name 72  "u4"
+                              Name 76  "u4outHi"
+                              Name 77  "u4outLow"
+                              Name 78  "ResType"
+                              Name 88  "i4"
+                              Name 92  "i4outHi"
+                              Name 93  "i4outLow"
+                              Name 94  "ResType"
+                              Name 105  "v3"
+                              Name 109  "i3out"
+                              Name 110  "ResType"
+                              Name 137  "v1"
+                              Name 140  "i1out"
+                              Name 141  "ResType"
+                              Name 156  "v2"
+                              Name 160  "i2"
+                              Name 172  "i1"
+                              Name 189  "u3"
+                              Name 202  "i3"
+                              Name 281  "v4"
                               Decorate 9(iout) Location 1
                               Decorate 15(uout) Location 0
                               Decorate 21(fout) Location 2
                               Decorate 26(u2) Location 1
-                              Decorate 47(u1) Location 0
-                              Decorate 67(u4) Location 3
-                              Decorate 83(i4) Location 11
-                              Decorate 100(v3) Location 6
-                              Decorate 121(v1) Location 4
-                              Decorate 142(v2) Location 5
-                              Decorate 146(i2) Location 9
-                              Decorate 156(i1) Location 8
-                              Decorate 173(u3) Location 2
-                              Decorate 182(i3) Location 10
-                              Decorate 247(v4) Location 7
+                              Decorate 53(u1) Location 0
+                              Decorate 72(u4) Location 3
+                              Decorate 88(i4) Location 11
+                              Decorate 105(v3) Location 6
+                              Decorate 137(v1) Location 4
+                              Decorate 156(v2) Location 5
+                              Decorate 160(i2) Location 9
+                              Decorate 172(i1) Location 8
+                              Decorate 189(u3) Location 2
+                              Decorate 202(i3) Location 10
+                              Decorate 281(v4) Location 7
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
@@ -78,58 +78,60 @@
           26(u2):     25(ptr) Variable Input
               29:             TypePointer Function 24(ivec2)
      31(ResType):             TypeStruct 24(ivec2) 24(ivec2)
-              46:             TypePointer Input 12(int)
-          47(u1):     46(ptr) Variable Input
-              50:             TypePointer Function 12(int)
-     52(ResType):             TypeStruct 12(int) 12(int)
-              56:             TypePointer Output 12(int)
-              66:             TypePointer Input 13(ivec4)
-          67(u4):     66(ptr) Variable Input
-              70:             TypePointer Function 13(ivec4)
-     73(ResType):             TypeStruct 13(ivec4) 13(ivec4)
-              82:             TypePointer Input 7(ivec4)
-          83(i4):     82(ptr) Variable Input
-              86:             TypePointer Function 7(ivec4)
-     89(ResType):             TypeStruct 7(ivec4) 7(ivec4)
-              98:             TypeVector 18(float) 3
-              99:             TypePointer Input 98(fvec3)
-         100(v3):     99(ptr) Variable Input
-             102:             TypeVector 6(int) 3
-             103:             TypePointer Function 102(ivec3)
-    105(ResType):             TypeStruct 98(fvec3) 102(ivec3)
-             120:             TypePointer Input 18(float)
-         121(v1):    120(ptr) Variable Input
-             123:             TypePointer Function 6(int)
-    125(ResType):             TypeStruct 18(float) 6(int)
-             129:             TypePointer Output 18(float)
-             135:             TypePointer Output 6(int)
-             140:             TypeVector 18(float) 2
-             141:             TypePointer Input 140(fvec2)
-         142(v2):    141(ptr) Variable Input
-             144:             TypeVector 6(int) 2
-             145:             TypePointer Input 144(ivec2)
-         146(i2):    145(ptr) Variable Input
-             155:             TypePointer Input 6(int)
-         156(i1):    155(ptr) Variable Input
-             164:      6(int) Constant 4
-             165:      6(int) Constant 5
-             171:             TypeVector 12(int) 3
-             172:             TypePointer Input 171(ivec3)
-         173(u3):    172(ptr) Variable Input
-             181:             TypePointer Input 102(ivec3)
-         182(i3):    181(ptr) Variable Input
-             246:             TypePointer Input 19(fvec4)
-         247(v4):    246(ptr) Variable Input
+              38:             TypePointer Output 12(int)
+              41:     12(int) Constant 1
+              52:             TypePointer Input 12(int)
+          53(u1):     52(ptr) Variable Input
+              56:             TypePointer Function 12(int)
+     58(ResType):             TypeStruct 12(int) 12(int)
+              71:             TypePointer Input 13(ivec4)
+          72(u4):     71(ptr) Variable Input
+              75:             TypePointer Function 13(ivec4)
+     78(ResType):             TypeStruct 13(ivec4) 13(ivec4)
+              87:             TypePointer Input 7(ivec4)
+          88(i4):     87(ptr) Variable Input
+              91:             TypePointer Function 7(ivec4)
+     94(ResType):             TypeStruct 7(ivec4) 7(ivec4)
+             103:             TypeVector 18(float) 3
+             104:             TypePointer Input 103(fvec3)
+         105(v3):    104(ptr) Variable Input
+             107:             TypeVector 6(int) 3
+             108:             TypePointer Function 107(ivec3)
+    110(ResType):             TypeStruct 103(fvec3) 107(ivec3)
+             117:             TypePointer Output 18(float)
+             122:     12(int) Constant 2
+             129:             TypePointer Output 6(int)
+             136:             TypePointer Input 18(float)
+         137(v1):    136(ptr) Variable Input
+             139:             TypePointer Function 6(int)
+    141(ResType):             TypeStruct 18(float) 6(int)
+             154:             TypeVector 18(float) 2
+             155:             TypePointer Input 154(fvec2)
+         156(v2):    155(ptr) Variable Input
+             158:             TypeVector 6(int) 2
+             159:             TypePointer Input 158(ivec2)
+         160(i2):    159(ptr) Variable Input
+             171:             TypePointer Input 6(int)
+         172(i1):    171(ptr) Variable Input
+             180:      6(int) Constant 4
+             181:      6(int) Constant 5
+             187:             TypeVector 12(int) 3
+             188:             TypePointer Input 187(ivec3)
+         189(u3):    188(ptr) Variable Input
+             201:             TypePointer Input 107(ivec3)
+         202(i3):    201(ptr) Variable Input
+             280:             TypePointer Input 19(fvec4)
+         281(v4):    280(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
        30(u2out):     29(ptr) Variable Function
-       51(u1out):     50(ptr) Variable Function
-     71(u4outHi):     70(ptr) Variable Function
-    72(u4outLow):     70(ptr) Variable Function
-     87(i4outHi):     86(ptr) Variable Function
-    88(i4outLow):     86(ptr) Variable Function
-      104(i3out):    103(ptr) Variable Function
-      124(i1out):    123(ptr) Variable Function
+       57(u1out):     56(ptr) Variable Function
+     76(u4outHi):     75(ptr) Variable Function
+    77(u4outLow):     75(ptr) Variable Function
+     92(i4outHi):     91(ptr) Variable Function
+    93(i4outLow):     91(ptr) Variable Function
+      109(i3out):    108(ptr) Variable Function
+      140(i1out):    139(ptr) Variable Function
                               Store 9(iout) 11
                               Store 15(uout) 17
                               Store 21(fout) 23
@@ -142,221 +144,269 @@
               35:   13(ivec4) Load 15(uout)
               36:   24(ivec2) VectorShuffle 35 35 0 1
               37:   24(ivec2) IAdd 36 34
-              38:   13(ivec4) Load 15(uout)
-              39:   13(ivec4) VectorShuffle 38 37 4 5 2 3
-                              Store 15(uout) 39
-              40:   24(ivec2) Load 30(u2out)
-              41:   13(ivec4) Load 15(uout)
-              42:   24(ivec2) VectorShuffle 41 41 0 1
-              43:   24(ivec2) IAdd 42 40
-              44:   13(ivec4) Load 15(uout)
-              45:   13(ivec4) VectorShuffle 44 43 4 5 2 3
-                              Store 15(uout) 45
-              48:     12(int) Load 47(u1)
-              49:     12(int) Load 47(u1)
-              53: 52(ResType) ISubBorrow 48 49
-              54:     12(int) CompositeExtract 53 1
-                              Store 51(u1out) 54
-              55:     12(int) CompositeExtract 53 0
-              57:     56(ptr) AccessChain 15(uout) 16
-              58:     12(int) Load 57
-              59:     12(int) IAdd 58 55
-              60:     56(ptr) AccessChain 15(uout) 16
-                              Store 60 59
-              61:     12(int) Load 51(u1out)
-              62:     56(ptr) AccessChain 15(uout) 16
+              39:     38(ptr) AccessChain 15(uout) 16
+              40:     12(int) CompositeExtract 37 0
+                              Store 39 40
+              42:     38(ptr) AccessChain 15(uout) 41
+              43:     12(int) CompositeExtract 37 1
+                              Store 42 43
+              44:   24(ivec2) Load 30(u2out)
+              45:   13(ivec4) Load 15(uout)
+              46:   24(ivec2) VectorShuffle 45 45 0 1
+              47:   24(ivec2) IAdd 46 44
+              48:     38(ptr) AccessChain 15(uout) 16
+              49:     12(int) CompositeExtract 47 0
+                              Store 48 49
+              50:     38(ptr) AccessChain 15(uout) 41
+              51:     12(int) CompositeExtract 47 1
+                              Store 50 51
+              54:     12(int) Load 53(u1)
+              55:     12(int) Load 53(u1)
+              59: 58(ResType) ISubBorrow 54 55
+              60:     12(int) CompositeExtract 59 1
+                              Store 57(u1out) 60
+              61:     12(int) CompositeExtract 59 0
+              62:     38(ptr) AccessChain 15(uout) 16
               63:     12(int) Load 62
               64:     12(int) IAdd 63 61
-              65:     56(ptr) AccessChain 15(uout) 16
+              65:     38(ptr) AccessChain 15(uout) 16
                               Store 65 64
-              68:   13(ivec4) Load 67(u4)
-              69:   13(ivec4) Load 67(u4)
-              74: 73(ResType) UMulExtended 68 69
-              75:   13(ivec4) CompositeExtract 74 0
-                              Store 72(u4outLow) 75
-              76:   13(ivec4) CompositeExtract 74 1
-                              Store 71(u4outHi) 76
-              77:   13(ivec4) Load 71(u4outHi)
-              78:   13(ivec4) Load 72(u4outLow)
-              79:   13(ivec4) IAdd 77 78
-              80:   13(ivec4) Load 15(uout)
-              81:   13(ivec4) IAdd 80 79
-                              Store 15(uout) 81
-              84:    7(ivec4) Load 83(i4)
-              85:    7(ivec4) Load 83(i4)
-              90: 89(ResType) SMulExtended 84 85
-              91:    7(ivec4) CompositeExtract 90 0
-                              Store 88(i4outLow) 91
-              92:    7(ivec4) CompositeExtract 90 1
-                              Store 87(i4outHi) 92
-              93:    7(ivec4) Load 88(i4outLow)
-              94:    7(ivec4) Load 87(i4outHi)
-              95:    7(ivec4) IAdd 93 94
-              96:    7(ivec4) Load 9(iout)
-              97:    7(ivec4) IAdd 96 95
-                              Store 9(iout) 97
-             101:   98(fvec3) Load 100(v3)
-             106:105(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 101
-             107:  102(ivec3) CompositeExtract 106 1
-                              Store 104(i3out) 107
-             108:   98(fvec3) CompositeExtract 106 0
-             109:   19(fvec4) Load 21(fout)
-             110:   98(fvec3) VectorShuffle 109 109 0 1 2
-             111:   98(fvec3) FAdd 110 108
-             112:   19(fvec4) Load 21(fout)
-             113:   19(fvec4) VectorShuffle 112 111 4 5 6 3
-                              Store 21(fout) 113
-             114:  102(ivec3) Load 104(i3out)
-             115:    7(ivec4) Load 9(iout)
-             116:  102(ivec3) VectorShuffle 115 115 0 1 2
-             117:  102(ivec3) IAdd 116 114
-             118:    7(ivec4) Load 9(iout)
-             119:    7(ivec4) VectorShuffle 118 117 4 5 6 3
-                              Store 9(iout) 119
-             122:   18(float) Load 121(v1)
-             126:125(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 122
-             127:      6(int) CompositeExtract 126 1
-                              Store 124(i1out) 127
-             128:   18(float) CompositeExtract 126 0
-             130:    129(ptr) AccessChain 21(fout) 16
-             131:   18(float) Load 130
-             132:   18(float) FAdd 131 128
-             133:    129(ptr) AccessChain 21(fout) 16
-                              Store 133 132
-             134:      6(int) Load 124(i1out)
-             136:    135(ptr) AccessChain 9(iout) 16
-             137:      6(int) Load 136
-             138:      6(int) IAdd 137 134
-             139:    135(ptr) AccessChain 9(iout) 16
-                              Store 139 138
-             143:  140(fvec2) Load 142(v2)
-             147:  144(ivec2) Load 146(i2)
-             148:  140(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 143 147
-             149:   19(fvec4) Load 21(fout)
-             150:  140(fvec2) VectorShuffle 149 149 0 1
-             151:  140(fvec2) FAdd 150 148
-             152:   19(fvec4) Load 21(fout)
-             153:   19(fvec4) VectorShuffle 152 151 4 5 2 3
-                              Store 21(fout) 153
-             154:   18(float) Load 121(v1)
-             157:      6(int) Load 156(i1)
-             158:   18(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 154 157
-             159:    129(ptr) AccessChain 21(fout) 16
-             160:   18(float) Load 159
-             161:   18(float) FAdd 160 158
-             162:    129(ptr) AccessChain 21(fout) 16
-                              Store 162 161
-             163:      6(int) Load 156(i1)
-             166:      6(int) BitFieldSExtract 163 164 165
-             167:    135(ptr) AccessChain 9(iout) 16
-             168:      6(int) Load 167
-             169:      6(int) IAdd 168 166
-             170:    135(ptr) AccessChain 9(iout) 16
-                              Store 170 169
-             174:  171(ivec3) Load 173(u3)
-             175:  171(ivec3) BitFieldUExtract 174 164 165
-             176:   13(ivec4) Load 15(uout)
-             177:  171(ivec3) VectorShuffle 176 176 0 1 2
-             178:  171(ivec3) IAdd 177 175
-             179:   13(ivec4) Load 15(uout)
-             180:   13(ivec4) VectorShuffle 179 178 4 5 6 3
-                              Store 15(uout) 180
-             183:  102(ivec3) Load 182(i3)
-             184:  102(ivec3) Load 182(i3)
-             185:  102(ivec3) BitFieldInsert 183 184 164 165
-             186:    7(ivec4) Load 9(iout)
-             187:  102(ivec3) VectorShuffle 186 186 0 1 2
-             188:  102(ivec3) IAdd 187 185
-             189:    7(ivec4) Load 9(iout)
-             190:    7(ivec4) VectorShuffle 189 188 4 5 6 3
-                              Store 9(iout) 190
-             191:     12(int) Load 47(u1)
-             192:     12(int) Load 47(u1)
-             193:     12(int) BitFieldInsert 191 192 164 165
-             194:     56(ptr) AccessChain 15(uout) 16
-             195:     12(int) Load 194
-             196:     12(int) IAdd 195 193
-             197:     56(ptr) AccessChain 15(uout) 16
-                              Store 197 196
-             198:  144(ivec2) Load 146(i2)
-             199:  144(ivec2) BitReverse 198
-             200:    7(ivec4) Load 9(iout)
-             201:  144(ivec2) VectorShuffle 200 200 0 1
-             202:  144(ivec2) IAdd 201 199
-             203:    7(ivec4) Load 9(iout)
-             204:    7(ivec4) VectorShuffle 203 202 4 5 2 3
-                              Store 9(iout) 204
-             205:   13(ivec4) Load 67(u4)
-             206:   13(ivec4) BitReverse 205
-             207:   13(ivec4) Load 15(uout)
-             208:   13(ivec4) IAdd 207 206
-                              Store 15(uout) 208
-             209:      6(int) Load 156(i1)
-             210:      6(int) BitCount 209
-             211:    135(ptr) AccessChain 9(iout) 16
-             212:      6(int) Load 211
-             213:      6(int) IAdd 212 210
-             214:    135(ptr) AccessChain 9(iout) 16
-                              Store 214 213
-             215:  171(ivec3) Load 173(u3)
-             216:  102(ivec3) BitCount 215
-             217:    7(ivec4) Load 9(iout)
-             218:  102(ivec3) VectorShuffle 217 217 0 1 2
-             219:  102(ivec3) IAdd 218 216
-             220:    7(ivec4) Load 9(iout)
-             221:    7(ivec4) VectorShuffle 220 219 4 5 6 3
-                              Store 9(iout) 221
-             222:  144(ivec2) Load 146(i2)
-             223:  144(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 222
+              66:     12(int) Load 57(u1out)
+              67:     38(ptr) AccessChain 15(uout) 16
+              68:     12(int) Load 67
+              69:     12(int) IAdd 68 66
+              70:     38(ptr) AccessChain 15(uout) 16
+                              Store 70 69
+              73:   13(ivec4) Load 72(u4)
+              74:   13(ivec4) Load 72(u4)
+              79: 78(ResType) UMulExtended 73 74
+              80:   13(ivec4) CompositeExtract 79 0
+                              Store 77(u4outLow) 80
+              81:   13(ivec4) CompositeExtract 79 1
+                              Store 76(u4outHi) 81
+              82:   13(ivec4) Load 76(u4outHi)
+              83:   13(ivec4) Load 77(u4outLow)
+              84:   13(ivec4) IAdd 82 83
+              85:   13(ivec4) Load 15(uout)
+              86:   13(ivec4) IAdd 85 84
+                              Store 15(uout) 86
+              89:    7(ivec4) Load 88(i4)
+              90:    7(ivec4) Load 88(i4)
+              95: 94(ResType) SMulExtended 89 90
+              96:    7(ivec4) CompositeExtract 95 0
+                              Store 93(i4outLow) 96
+              97:    7(ivec4) CompositeExtract 95 1
+                              Store 92(i4outHi) 97
+              98:    7(ivec4) Load 93(i4outLow)
+              99:    7(ivec4) Load 92(i4outHi)
+             100:    7(ivec4) IAdd 98 99
+             101:    7(ivec4) Load 9(iout)
+             102:    7(ivec4) IAdd 101 100
+                              Store 9(iout) 102
+             106:  103(fvec3) Load 105(v3)
+             111:110(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 106
+             112:  107(ivec3) CompositeExtract 111 1
+                              Store 109(i3out) 112
+             113:  103(fvec3) CompositeExtract 111 0
+             114:   19(fvec4) Load 21(fout)
+             115:  103(fvec3) VectorShuffle 114 114 0 1 2
+             116:  103(fvec3) FAdd 115 113
+             118:    117(ptr) AccessChain 21(fout) 16
+             119:   18(float) CompositeExtract 116 0
+                              Store 118 119
+             120:    117(ptr) AccessChain 21(fout) 41
+             121:   18(float) CompositeExtract 116 1
+                              Store 120 121
+             123:    117(ptr) AccessChain 21(fout) 122
+             124:   18(float) CompositeExtract 116 2
+                              Store 123 124
+             125:  107(ivec3) Load 109(i3out)
+             126:    7(ivec4) Load 9(iout)
+             127:  107(ivec3) VectorShuffle 126 126 0 1 2
+             128:  107(ivec3) IAdd 127 125
+             130:    129(ptr) AccessChain 9(iout) 16
+             131:      6(int) CompositeExtract 128 0
+                              Store 130 131
+             132:    129(ptr) AccessChain 9(iout) 41
+             133:      6(int) CompositeExtract 128 1
+                              Store 132 133
+             134:    129(ptr) AccessChain 9(iout) 122
+             135:      6(int) CompositeExtract 128 2
+                              Store 134 135
+             138:   18(float) Load 137(v1)
+             142:141(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 138
+             143:      6(int) CompositeExtract 142 1
+                              Store 140(i1out) 143
+             144:   18(float) CompositeExtract 142 0
+             145:    117(ptr) AccessChain 21(fout) 16
+             146:   18(float) Load 145
+             147:   18(float) FAdd 146 144
+             148:    117(ptr) AccessChain 21(fout) 16
+                              Store 148 147
+             149:      6(int) Load 140(i1out)
+             150:    129(ptr) AccessChain 9(iout) 16
+             151:      6(int) Load 150
+             152:      6(int) IAdd 151 149
+             153:    129(ptr) AccessChain 9(iout) 16
+                              Store 153 152
+             157:  154(fvec2) Load 156(v2)
+             161:  158(ivec2) Load 160(i2)
+             162:  154(fvec2) ExtInst 1(GLSL.std.450) 53(Ldexp) 157 161
+             163:   19(fvec4) Load 21(fout)
+             164:  154(fvec2) VectorShuffle 163 163 0 1
+             165:  154(fvec2) FAdd 164 162
+             166:    117(ptr) AccessChain 21(fout) 16
+             167:   18(float) CompositeExtract 165 0
+                              Store 166 167
+             168:    117(ptr) AccessChain 21(fout) 41
+             169:   18(float) CompositeExtract 165 1
+                              Store 168 169
+             170:   18(float) Load 137(v1)
+             173:      6(int) Load 172(i1)
+             174:   18(float) ExtInst 1(GLSL.std.450) 53(Ldexp) 170 173
+             175:    117(ptr) AccessChain 21(fout) 16
+             176:   18(float) Load 175
+             177:   18(float) FAdd 176 174
+             178:    117(ptr) AccessChain 21(fout) 16
+                              Store 178 177
+             179:      6(int) Load 172(i1)
+             182:      6(int) BitFieldSExtract 179 180 181
+             183:    129(ptr) AccessChain 9(iout) 16
+             184:      6(int) Load 183
+             185:      6(int) IAdd 184 182
+             186:    129(ptr) AccessChain 9(iout) 16
+                              Store 186 185
+             190:  187(ivec3) Load 189(u3)
+             191:  187(ivec3) BitFieldUExtract 190 180 181
+             192:   13(ivec4) Load 15(uout)
+             193:  187(ivec3) VectorShuffle 192 192 0 1 2
+             194:  187(ivec3) IAdd 193 191
+             195:     38(ptr) AccessChain 15(uout) 16
+             196:     12(int) CompositeExtract 194 0
+                              Store 195 196
+             197:     38(ptr) AccessChain 15(uout) 41
+             198:     12(int) CompositeExtract 194 1
+                              Store 197 198
+             199:     38(ptr) AccessChain 15(uout) 122
+             200:     12(int) CompositeExtract 194 2
+                              Store 199 200
+             203:  107(ivec3) Load 202(i3)
+             204:  107(ivec3) Load 202(i3)
+             205:  107(ivec3) BitFieldInsert 203 204 180 181
+             206:    7(ivec4) Load 9(iout)
+             207:  107(ivec3) VectorShuffle 206 206 0 1 2
+             208:  107(ivec3) IAdd 207 205
+             209:    129(ptr) AccessChain 9(iout) 16
+             210:      6(int) CompositeExtract 208 0
+                              Store 209 210
+             211:    129(ptr) AccessChain 9(iout) 41
+             212:      6(int) CompositeExtract 208 1
+                              Store 211 212
+             213:    129(ptr) AccessChain 9(iout) 122
+             214:      6(int) CompositeExtract 208 2
+                              Store 213 214
+             215:     12(int) Load 53(u1)
+             216:     12(int) Load 53(u1)
+             217:     12(int) BitFieldInsert 215 216 180 181
+             218:     38(ptr) AccessChain 15(uout) 16
+             219:     12(int) Load 218
+             220:     12(int) IAdd 219 217
+             221:     38(ptr) AccessChain 15(uout) 16
+                              Store 221 220
+             222:  158(ivec2) Load 160(i2)
+             223:  158(ivec2) BitReverse 222
              224:    7(ivec4) Load 9(iout)
-             225:  144(ivec2) VectorShuffle 224 224 0 1
-             226:  144(ivec2) IAdd 225 223
-             227:    7(ivec4) Load 9(iout)
-             228:    7(ivec4) VectorShuffle 227 226 4 5 2 3
-                              Store 9(iout) 228
-             229:   13(ivec4) Load 67(u4)
-             230:    7(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 229
-             231:    7(ivec4) Load 9(iout)
-             232:    7(ivec4) IAdd 231 230
-                              Store 9(iout) 232
-             233:      6(int) Load 156(i1)
-             234:      6(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 233
-             235:    135(ptr) AccessChain 9(iout) 16
-             236:      6(int) Load 235
-             237:      6(int) IAdd 236 234
-             238:    135(ptr) AccessChain 9(iout) 16
-                              Store 238 237
-             239:   24(ivec2) Load 26(u2)
-             240:  144(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 239
-             241:    7(ivec4) Load 9(iout)
-             242:  144(ivec2) VectorShuffle 241 241 0 1
-             243:  144(ivec2) IAdd 242 240
-             244:    7(ivec4) Load 9(iout)
-             245:    7(ivec4) VectorShuffle 244 243 4 5 2 3
-                              Store 9(iout) 245
-             248:   19(fvec4) Load 247(v4)
-             249:     12(int) ExtInst 1(GLSL.std.450) 55(PackUnorm4x8) 248
-             250:     56(ptr) AccessChain 15(uout) 16
-             251:     12(int) Load 250
-             252:     12(int) IAdd 251 249
-             253:     56(ptr) AccessChain 15(uout) 16
-                              Store 253 252
-             254:   19(fvec4) Load 247(v4)
-             255:     12(int) ExtInst 1(GLSL.std.450) 54(PackSnorm4x8) 254
-             256:     56(ptr) AccessChain 15(uout) 16
-             257:     12(int) Load 256
-             258:     12(int) IAdd 257 255
-             259:     56(ptr) AccessChain 15(uout) 16
-                              Store 259 258
-             260:     12(int) Load 47(u1)
-             261:   19(fvec4) ExtInst 1(GLSL.std.450) 64(UnpackUnorm4x8) 260
-             262:   19(fvec4) Load 21(fout)
-             263:   19(fvec4) FAdd 262 261
-                              Store 21(fout) 263
-             264:     12(int) Load 47(u1)
-             265:   19(fvec4) ExtInst 1(GLSL.std.450) 63(UnpackSnorm4x8) 264
-             266:   19(fvec4) Load 21(fout)
-             267:   19(fvec4) FAdd 266 265
-                              Store 21(fout) 267
+             225:  158(ivec2) VectorShuffle 224 224 0 1
+             226:  158(ivec2) IAdd 225 223
+             227:    129(ptr) AccessChain 9(iout) 16
+             228:      6(int) CompositeExtract 226 0
+                              Store 227 228
+             229:    129(ptr) AccessChain 9(iout) 41
+             230:      6(int) CompositeExtract 226 1
+                              Store 229 230
+             231:   13(ivec4) Load 72(u4)
+             232:   13(ivec4) BitReverse 231
+             233:   13(ivec4) Load 15(uout)
+             234:   13(ivec4) IAdd 233 232
+                              Store 15(uout) 234
+             235:      6(int) Load 172(i1)
+             236:      6(int) BitCount 235
+             237:    129(ptr) AccessChain 9(iout) 16
+             238:      6(int) Load 237
+             239:      6(int) IAdd 238 236
+             240:    129(ptr) AccessChain 9(iout) 16
+                              Store 240 239
+             241:  187(ivec3) Load 189(u3)
+             242:  107(ivec3) BitCount 241
+             243:    7(ivec4) Load 9(iout)
+             244:  107(ivec3) VectorShuffle 243 243 0 1 2
+             245:  107(ivec3) IAdd 244 242
+             246:    129(ptr) AccessChain 9(iout) 16
+             247:      6(int) CompositeExtract 245 0
+                              Store 246 247
+             248:    129(ptr) AccessChain 9(iout) 41
+             249:      6(int) CompositeExtract 245 1
+                              Store 248 249
+             250:    129(ptr) AccessChain 9(iout) 122
+             251:      6(int) CompositeExtract 245 2
+                              Store 250 251
+             252:  158(ivec2) Load 160(i2)
+             253:  158(ivec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 252
+             254:    7(ivec4) Load 9(iout)
+             255:  158(ivec2) VectorShuffle 254 254 0 1
+             256:  158(ivec2) IAdd 255 253
+             257:    129(ptr) AccessChain 9(iout) 16
+             258:      6(int) CompositeExtract 256 0
+                              Store 257 258
+             259:    129(ptr) AccessChain 9(iout) 41
+             260:      6(int) CompositeExtract 256 1
+                              Store 259 260
+             261:   13(ivec4) Load 72(u4)
+             262:    7(ivec4) ExtInst 1(GLSL.std.450) 73(FindILsb) 261
+             263:    7(ivec4) Load 9(iout)
+             264:    7(ivec4) IAdd 263 262
+                              Store 9(iout) 264
+             265:      6(int) Load 172(i1)
+             266:      6(int) ExtInst 1(GLSL.std.450) 74(FindSMsb) 265
+             267:    129(ptr) AccessChain 9(iout) 16
+             268:      6(int) Load 267
+             269:      6(int) IAdd 268 266
+             270:    129(ptr) AccessChain 9(iout) 16
+                              Store 270 269
+             271:   24(ivec2) Load 26(u2)
+             272:  158(ivec2) ExtInst 1(GLSL.std.450) 75(FindUMsb) 271
+             273:    7(ivec4) Load 9(iout)
+             274:  158(ivec2) VectorShuffle 273 273 0 1
+             275:  158(ivec2) IAdd 274 272
+             276:    129(ptr) AccessChain 9(iout) 16
+             277:      6(int) CompositeExtract 275 0
+                              Store 276 277
+             278:    129(ptr) AccessChain 9(iout) 41
+             279:      6(int) CompositeExtract 275 1
+                              Store 278 279
+             282:   19(fvec4) Load 281(v4)
+             283:     12(int) ExtInst 1(GLSL.std.450) 55(PackUnorm4x8) 282
+             284:     38(ptr) AccessChain 15(uout) 16
+             285:     12(int) Load 284
+             286:     12(int) IAdd 285 283
+             287:     38(ptr) AccessChain 15(uout) 16
+                              Store 287 286
+             288:   19(fvec4) Load 281(v4)
+             289:     12(int) ExtInst 1(GLSL.std.450) 54(PackSnorm4x8) 288
+             290:     38(ptr) AccessChain 15(uout) 16
+             291:     12(int) Load 290
+             292:     12(int) IAdd 291 289
+             293:     38(ptr) AccessChain 15(uout) 16
+                              Store 293 292
+             294:     12(int) Load 53(u1)
+             295:   19(fvec4) ExtInst 1(GLSL.std.450) 64(UnpackUnorm4x8) 294
+             296:   19(fvec4) Load 21(fout)
+             297:   19(fvec4) FAdd 296 295
+                              Store 21(fout) 297
+             298:     12(int) Load 53(u1)
+             299:   19(fvec4) ExtInst 1(GLSL.std.450) 63(UnpackSnorm4x8) 298
+             300:   19(fvec4) Load 21(fout)
+             301:   19(fvec4) FAdd 300 299
+                              Store 21(fout) 301
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.interpOps.frag.out b/Test/baseResults/spv.interpOps.frag.out
index 6c285e7..808c1cd 100644
--- a/Test/baseResults/spv.interpOps.frag.out
+++ b/Test/baseResults/spv.interpOps.frag.out
@@ -1,33 +1,33 @@
 spv.interpOps.frag
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 100
+// Id's are bound by 120
 
                               Capability Shader
                               Capability InterpolationFunction
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 13 24 33 41 47 72 98
+                              EntryPoint Fragment 4  "main" 13 24 36 49 55 86 118
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 450
                               Name 4  "main"
                               Name 9  "f4"
                               Name 13  "if1"
                               Name 24  "if2"
-                              Name 33  "if3"
-                              Name 41  "if4"
-                              Name 47  "samp"
-                              Name 72  "offset"
-                              Name 98  "fragColor"
+                              Name 36  "if3"
+                              Name 49  "if4"
+                              Name 55  "samp"
+                              Name 86  "offset"
+                              Name 118  "fragColor"
                               Decorate 13(if1) Location 0
                               Decorate 24(if2) Location 1
-                              Decorate 33(if3) Location 2
-                              Decorate 41(if4) Location 3
-                              Decorate 47(samp) Flat
-                              Decorate 47(samp) Location 4
-                              Decorate 72(offset) Flat
-                              Decorate 72(offset) Location 5
-                              Decorate 98(fragColor) Location 0
+                              Decorate 36(if3) Location 2
+                              Decorate 49(if4) Location 3
+                              Decorate 55(samp) Flat
+                              Decorate 55(samp) Location 4
+                              Decorate 86(offset) Flat
+                              Decorate 86(offset) Location 5
+                              Decorate 118(fragColor) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -43,17 +43,19 @@
               22:             TypeVector 6(float) 2
               23:             TypePointer Input 22(fvec2)
          24(if2):     23(ptr) Variable Input
-              31:             TypeVector 6(float) 3
-              32:             TypePointer Input 31(fvec3)
-         33(if3):     32(ptr) Variable Input
-              40:             TypePointer Input 7(fvec4)
-         41(if4):     40(ptr) Variable Input
-              45:             TypeInt 32 1
-              46:             TypePointer Input 45(int)
-        47(samp):     46(ptr) Variable Input
-      72(offset):     23(ptr) Variable Input
-              97:             TypePointer Output 7(fvec4)
-   98(fragColor):     97(ptr) Variable Output
+              31:     15(int) Constant 1
+              34:             TypeVector 6(float) 3
+              35:             TypePointer Input 34(fvec3)
+         36(if3):     35(ptr) Variable Input
+              45:     15(int) Constant 2
+              48:             TypePointer Input 7(fvec4)
+         49(if4):     48(ptr) Variable Input
+              53:             TypeInt 32 1
+              54:             TypePointer Input 53(int)
+        55(samp):     54(ptr) Variable Input
+      86(offset):     23(ptr) Variable Input
+             117:             TypePointer Output 7(fvec4)
+  118(fragColor):    117(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
            9(f4):      8(ptr) Variable Function
@@ -68,77 +70,104 @@
               26:    7(fvec4) Load 9(f4)
               27:   22(fvec2) VectorShuffle 26 26 0 1
               28:   22(fvec2) FAdd 27 25
-              29:    7(fvec4) Load 9(f4)
-              30:    7(fvec4) VectorShuffle 29 28 4 5 2 3
-                              Store 9(f4) 30
-              34:   31(fvec3) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 33(if3)
-              35:    7(fvec4) Load 9(f4)
-              36:   31(fvec3) VectorShuffle 35 35 0 1 2
-              37:   31(fvec3) FAdd 36 34
+              29:     17(ptr) AccessChain 9(f4) 16
+              30:    6(float) CompositeExtract 28 0
+                              Store 29 30
+              32:     17(ptr) AccessChain 9(f4) 31
+              33:    6(float) CompositeExtract 28 1
+                              Store 32 33
+              37:   34(fvec3) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 36(if3)
               38:    7(fvec4) Load 9(f4)
-              39:    7(fvec4) VectorShuffle 38 37 4 5 6 3
-                              Store 9(f4) 39
-              42:    7(fvec4) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 41(if4)
-              43:    7(fvec4) Load 9(f4)
-              44:    7(fvec4) FAdd 43 42
-                              Store 9(f4) 44
-              48:     45(int) Load 47(samp)
-              49:    6(float) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 13(if1) 48
-              50:     17(ptr) AccessChain 9(f4) 16
-              51:    6(float) Load 50
-              52:    6(float) FAdd 51 49
-              53:     17(ptr) AccessChain 9(f4) 16
-                              Store 53 52
-              54:     45(int) Load 47(samp)
-              55:   22(fvec2) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 24(if2) 54
-              56:    7(fvec4) Load 9(f4)
-              57:   22(fvec2) VectorShuffle 56 56 0 1
-              58:   22(fvec2) FAdd 57 55
-              59:    7(fvec4) Load 9(f4)
-              60:    7(fvec4) VectorShuffle 59 58 4 5 2 3
-                              Store 9(f4) 60
-              61:     45(int) Load 47(samp)
-              62:   31(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 33(if3) 61
-              63:    7(fvec4) Load 9(f4)
-              64:   31(fvec3) VectorShuffle 63 63 0 1 2
-              65:   31(fvec3) FAdd 64 62
-              66:    7(fvec4) Load 9(f4)
-              67:    7(fvec4) VectorShuffle 66 65 4 5 6 3
-                              Store 9(f4) 67
-              68:     45(int) Load 47(samp)
-              69:    7(fvec4) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 41(if4) 68
-              70:    7(fvec4) Load 9(f4)
-              71:    7(fvec4) FAdd 70 69
-                              Store 9(f4) 71
-              73:   22(fvec2) Load 72(offset)
-              74:    6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 13(if1) 73
-              75:     17(ptr) AccessChain 9(f4) 16
-              76:    6(float) Load 75
-              77:    6(float) FAdd 76 74
-              78:     17(ptr) AccessChain 9(f4) 16
-                              Store 78 77
-              79:   22(fvec2) Load 72(offset)
-              80:   22(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 24(if2) 79
-              81:    7(fvec4) Load 9(f4)
-              82:   22(fvec2) VectorShuffle 81 81 0 1
-              83:   22(fvec2) FAdd 82 80
+              39:   34(fvec3) VectorShuffle 38 38 0 1 2
+              40:   34(fvec3) FAdd 39 37
+              41:     17(ptr) AccessChain 9(f4) 16
+              42:    6(float) CompositeExtract 40 0
+                              Store 41 42
+              43:     17(ptr) AccessChain 9(f4) 31
+              44:    6(float) CompositeExtract 40 1
+                              Store 43 44
+              46:     17(ptr) AccessChain 9(f4) 45
+              47:    6(float) CompositeExtract 40 2
+                              Store 46 47
+              50:    7(fvec4) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 49(if4)
+              51:    7(fvec4) Load 9(f4)
+              52:    7(fvec4) FAdd 51 50
+                              Store 9(f4) 52
+              56:     53(int) Load 55(samp)
+              57:    6(float) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 13(if1) 56
+              58:     17(ptr) AccessChain 9(f4) 16
+              59:    6(float) Load 58
+              60:    6(float) FAdd 59 57
+              61:     17(ptr) AccessChain 9(f4) 16
+                              Store 61 60
+              62:     53(int) Load 55(samp)
+              63:   22(fvec2) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 24(if2) 62
+              64:    7(fvec4) Load 9(f4)
+              65:   22(fvec2) VectorShuffle 64 64 0 1
+              66:   22(fvec2) FAdd 65 63
+              67:     17(ptr) AccessChain 9(f4) 16
+              68:    6(float) CompositeExtract 66 0
+                              Store 67 68
+              69:     17(ptr) AccessChain 9(f4) 31
+              70:    6(float) CompositeExtract 66 1
+                              Store 69 70
+              71:     53(int) Load 55(samp)
+              72:   34(fvec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 36(if3) 71
+              73:    7(fvec4) Load 9(f4)
+              74:   34(fvec3) VectorShuffle 73 73 0 1 2
+              75:   34(fvec3) FAdd 74 72
+              76:     17(ptr) AccessChain 9(f4) 16
+              77:    6(float) CompositeExtract 75 0
+                              Store 76 77
+              78:     17(ptr) AccessChain 9(f4) 31
+              79:    6(float) CompositeExtract 75 1
+                              Store 78 79
+              80:     17(ptr) AccessChain 9(f4) 45
+              81:    6(float) CompositeExtract 75 2
+                              Store 80 81
+              82:     53(int) Load 55(samp)
+              83:    7(fvec4) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 49(if4) 82
               84:    7(fvec4) Load 9(f4)
-              85:    7(fvec4) VectorShuffle 84 83 4 5 2 3
+              85:    7(fvec4) FAdd 84 83
                               Store 9(f4) 85
-              86:   22(fvec2) Load 72(offset)
-              87:   31(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 33(if3) 86
-              88:    7(fvec4) Load 9(f4)
-              89:   31(fvec3) VectorShuffle 88 88 0 1 2
-              90:   31(fvec3) FAdd 89 87
-              91:    7(fvec4) Load 9(f4)
-              92:    7(fvec4) VectorShuffle 91 90 4 5 6 3
-                              Store 9(f4) 92
-              93:   22(fvec2) Load 72(offset)
-              94:    7(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 41(if4) 93
+              87:   22(fvec2) Load 86(offset)
+              88:    6(float) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 13(if1) 87
+              89:     17(ptr) AccessChain 9(f4) 16
+              90:    6(float) Load 89
+              91:    6(float) FAdd 90 88
+              92:     17(ptr) AccessChain 9(f4) 16
+                              Store 92 91
+              93:   22(fvec2) Load 86(offset)
+              94:   22(fvec2) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 24(if2) 93
               95:    7(fvec4) Load 9(f4)
-              96:    7(fvec4) FAdd 95 94
-                              Store 9(f4) 96
-              99:    7(fvec4) Load 9(f4)
-                              Store 98(fragColor) 99
+              96:   22(fvec2) VectorShuffle 95 95 0 1
+              97:   22(fvec2) FAdd 96 94
+              98:     17(ptr) AccessChain 9(f4) 16
+              99:    6(float) CompositeExtract 97 0
+                              Store 98 99
+             100:     17(ptr) AccessChain 9(f4) 31
+             101:    6(float) CompositeExtract 97 1
+                              Store 100 101
+             102:   22(fvec2) Load 86(offset)
+             103:   34(fvec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 36(if3) 102
+             104:    7(fvec4) Load 9(f4)
+             105:   34(fvec3) VectorShuffle 104 104 0 1 2
+             106:   34(fvec3) FAdd 105 103
+             107:     17(ptr) AccessChain 9(f4) 16
+             108:    6(float) CompositeExtract 106 0
+                              Store 107 108
+             109:     17(ptr) AccessChain 9(f4) 31
+             110:    6(float) CompositeExtract 106 1
+                              Store 109 110
+             111:     17(ptr) AccessChain 9(f4) 45
+             112:    6(float) CompositeExtract 106 2
+                              Store 111 112
+             113:   22(fvec2) Load 86(offset)
+             114:    7(fvec4) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 49(if4) 113
+             115:    7(fvec4) Load 9(f4)
+             116:    7(fvec4) FAdd 115 114
+                              Store 9(f4) 116
+             119:    7(fvec4) Load 9(f4)
+                              Store 118(fragColor) 119
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.intrinsicsSpecConst.vert.out b/Test/baseResults/spv.intrinsicsSpecConst.vert.out
new file mode 100644
index 0000000..11751d6
--- /dev/null
+++ b/Test/baseResults/spv.intrinsicsSpecConst.vert.out
@@ -0,0 +1,35 @@
+spv.intrinsicsSpecConst.vert
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 13
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 10
+                              ExecutionModeId 4 DenormFlushToZero 7
+                              Source GLSL 450
+                              SourceExtension  "GL_EXT_spirv_intrinsics"
+                              Name 4  "main"
+                              Name 7  "targetWidth"
+                              Name 10  "pointSize"
+                              Name 11  "builtIn"
+                              Decorate 7(targetWidth) SpecId 5
+                              Decorate 10(pointSize) Location 0
+                              Decorate 11(builtIn) SpecId 6
+                              DecorateId 10(pointSize) BuiltIn 11(builtIn)
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+  7(targetWidth):      6(int) SpecConstant 32
+               8:             TypeFloat 32
+               9:             TypePointer Output 8(float)
+   10(pointSize):      9(ptr) Variable Output
+     11(builtIn):      6(int) SpecConstant 1
+              12:    8(float) Constant 1082130432
+         4(main):           2 Function None 3
+               5:             Label
+                              Store 10(pointSize) 12
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.intrinsicsSpirvByReference.vert.out b/Test/baseResults/spv.intrinsicsSpirvByReference.vert.out
new file mode 100644
index 0000000..d46b33f
--- /dev/null
+++ b/Test/baseResults/spv.intrinsicsSpirvByReference.vert.out
@@ -0,0 +1,56 @@
+spv.intrinsicsSpirvByReference.vert
+// 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" 15 17 26
+                              Source GLSL 450
+                              SourceExtension  "GL_EXT_spirv_intrinsics"
+                              Name 4  "main"
+                              Name 10  "func(f1;"
+                              Name 9  "f"
+                              Name 15  "vec2Out"
+                              Name 17  "floatIn"
+                              Name 26  "floatOut"
+                              Name 27  "param"
+                              Decorate 15(vec2Out) Location 0
+                              Decorate 17(floatIn) Location 0
+                              Decorate 26(floatOut) Location 1
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypePointer Function 6(float)
+               8:             TypeFunction 2 7(ptr)
+              12:    6(float) Constant 1056964608
+              13:             TypeVector 6(float) 2
+              14:             TypePointer Output 13(fvec2)
+     15(vec2Out):     14(ptr) Variable Output
+              16:             TypePointer Input 6(float)
+     17(floatIn):     16(ptr) Variable Input
+              19:             TypeInt 32 0
+              20:     19(int) Constant 1
+              21:             TypePointer Output 6(float)
+              24:     19(int) Constant 0
+    26(floatOut):     21(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+       27(param):      7(ptr) Variable Function
+              18:    6(float) Load 17(floatIn)
+              22:     21(ptr) AccessChain 15(vec2Out) 20
+              23:    6(float) ExtInst 1(GLSL.std.450) 35(Modf) 18 22
+              25:     21(ptr) AccessChain 15(vec2Out) 24
+                              Store 25 23
+              28:    6(float) Load 26(floatOut)
+                              Store 27(param) 28
+              29:           2 FunctionCall 10(func(f1;) 27(param)
+                              Return
+                              FunctionEnd
+    10(func(f1;):           2 Function None 8
+            9(f):      7(ptr) FunctionParameter
+              11:             Label
+                              Store 9(f) 12
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.intrinsicsSpirvDecorate.frag.out b/Test/baseResults/spv.intrinsicsSpirvDecorate.frag.out
new file mode 100644
index 0000000..cbd46b0
--- /dev/null
+++ b/Test/baseResults/spv.intrinsicsSpirvDecorate.frag.out
@@ -0,0 +1,88 @@
+spv.intrinsicsSpirvDecorate.frag
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 43
+
+                              Capability Shader
+                              Extension  "SPV_AMD_shader_explicit_vertex_parameter"
+               1:             ExtInstImport  "GLSL.std.450"
+              14:             ExtInstImport  "SPV_AMD_shader_explicit_vertex_parameter"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 8 10 18 20 22 25 28 31 34 39
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              SourceExtension  "GL_EXT_spirv_intrinsics"
+                              Name 4  "main"
+                              Name 8  "floatOut"
+                              Name 10  "floatIn"
+                              Name 18  "vec2Out"
+                              Name 20  "gl_BaryCoordNoPerspAMD"
+                              Name 22  "gl_BaryCoordNoPerspCentroidAMD"
+                              Name 25  "gl_BaryCoordNoPerspSampleAMD"
+                              Name 28  "gl_BaryCoordSmoothAMD"
+                              Name 31  "gl_BaryCoordSmoothCentroidAMD"
+                              Name 34  "gl_BaryCoordSmoothSampleAMD"
+                              Name 39  "gl_BaryCoordPullModelAMD"
+                              Decorate 8(floatOut) Location 0
+                              Decorate 10(floatIn) Location 0
+                              Decorate 10(floatIn) ExplicitInterpAMD
+                              Decorate 18(vec2Out) Location 1
+                              Decorate 20(gl_BaryCoordNoPerspAMD) Location 0
+                              Decorate 20(gl_BaryCoordNoPerspAMD) BuiltIn BaryCoordNoPerspAMD
+                              Decorate 22(gl_BaryCoordNoPerspCentroidAMD) Location 1
+                              Decorate 22(gl_BaryCoordNoPerspCentroidAMD) BuiltIn BaryCoordNoPerspCentroidAMD
+                              Decorate 25(gl_BaryCoordNoPerspSampleAMD) Location 2
+                              Decorate 25(gl_BaryCoordNoPerspSampleAMD) BuiltIn BaryCoordNoPerspSampleAMD
+                              Decorate 28(gl_BaryCoordSmoothAMD) Location 3
+                              Decorate 28(gl_BaryCoordSmoothAMD) BuiltIn BaryCoordSmoothAMD
+                              Decorate 31(gl_BaryCoordSmoothCentroidAMD) Location 4
+                              Decorate 31(gl_BaryCoordSmoothCentroidAMD) BuiltIn BaryCoordSmoothCentroidAMD
+                              Decorate 34(gl_BaryCoordSmoothSampleAMD) Location 5
+                              Decorate 34(gl_BaryCoordSmoothSampleAMD) BuiltIn BaryCoordSmoothSampleAMD
+                              Decorate 39(gl_BaryCoordPullModelAMD) Location 6
+                              Decorate 39(gl_BaryCoordPullModelAMD) BuiltIn BaryCoordPullModelAMD
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypePointer Output 6(float)
+     8(floatOut):      7(ptr) Variable Output
+               9:             TypePointer Input 6(float)
+     10(floatIn):      9(ptr) Variable Input
+              12:             TypeInt 32 0
+              13:     12(int) Constant 1
+              16:             TypeVector 6(float) 2
+              17:             TypePointer Output 16(fvec2)
+     18(vec2Out):     17(ptr) Variable Output
+              19:             TypePointer Input 16(fvec2)
+20(gl_BaryCoordNoPerspAMD):     19(ptr) Variable Input
+22(gl_BaryCoordNoPerspCentroidAMD):     19(ptr) Variable Input
+25(gl_BaryCoordNoPerspSampleAMD):     19(ptr) Variable Input
+28(gl_BaryCoordSmoothAMD):     19(ptr) Variable Input
+31(gl_BaryCoordSmoothCentroidAMD):     19(ptr) Variable Input
+34(gl_BaryCoordSmoothSampleAMD):     19(ptr) Variable Input
+              37:             TypeVector 6(float) 3
+              38:             TypePointer Input 37(fvec3)
+39(gl_BaryCoordPullModelAMD):     38(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+              11:    6(float) Load 10(floatIn)
+              15:    6(float) ExtInst 14(SPV_AMD_shader_explicit_vertex_parameter) 1(InterpolateAtVertexAMD) 11 13
+                              Store 8(floatOut) 15
+              21:   16(fvec2) Load 20(gl_BaryCoordNoPerspAMD)
+              23:   16(fvec2) Load 22(gl_BaryCoordNoPerspCentroidAMD)
+              24:   16(fvec2) FAdd 21 23
+              26:   16(fvec2) Load 25(gl_BaryCoordNoPerspSampleAMD)
+              27:   16(fvec2) FAdd 24 26
+              29:   16(fvec2) Load 28(gl_BaryCoordSmoothAMD)
+              30:   16(fvec2) FAdd 27 29
+              32:   16(fvec2) Load 31(gl_BaryCoordSmoothCentroidAMD)
+              33:   16(fvec2) FAdd 30 32
+              35:   16(fvec2) Load 34(gl_BaryCoordSmoothSampleAMD)
+              36:   16(fvec2) FAdd 33 35
+              40:   37(fvec3) Load 39(gl_BaryCoordPullModelAMD)
+              41:   16(fvec2) VectorShuffle 40 40 0 1
+              42:   16(fvec2) FAdd 36 41
+                              Store 18(vec2Out) 42
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.intrinsicsSpirvExecutionMode.frag.out b/Test/baseResults/spv.intrinsicsSpirvExecutionMode.frag.out
new file mode 100644
index 0000000..22bc53b
--- /dev/null
+++ b/Test/baseResults/spv.intrinsicsSpirvExecutionMode.frag.out
@@ -0,0 +1,36 @@
+spv.intrinsicsSpirvExecutionMode.frag
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 12
+
+                              Capability Shader
+                              Capability StencilExportEXT
+                              Extension  "SPV_EXT_shader_stencil_export"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 8 10
+                              ExecutionMode 4 OriginUpperLeft
+                              ExecutionMode 4 StencilRefReplacingEXT
+                              Source GLSL 450
+                              SourceExtension  "GL_EXT_spirv_intrinsics"
+                              Name 4  "main"
+                              Name 8  "gl_FragStencilRef"
+                              Name 10  "color"
+                              Decorate 8(gl_FragStencilRef) Location 0
+                              Decorate 8(gl_FragStencilRef) BuiltIn FragStencilRefEXT
+                              Decorate 10(color) Flat
+                              Decorate 10(color) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Output 6(int)
+8(gl_FragStencilRef):      7(ptr) Variable Output
+               9:             TypePointer Input 6(int)
+       10(color):      9(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+              11:      6(int) Load 10(color)
+                              Store 8(gl_FragStencilRef) 11
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.intrinsicsSpirvInstruction.vert.out b/Test/baseResults/spv.intrinsicsSpirvInstruction.vert.out
new file mode 100644
index 0000000..0e2780c
--- /dev/null
+++ b/Test/baseResults/spv.intrinsicsSpirvInstruction.vert.out
@@ -0,0 +1,59 @@
+spv.intrinsicsSpirvInstruction.vert
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 30
+
+                              Capability Shader
+                              Capability Int64
+                              Capability ShaderClockKHR
+                              Extension  "SPV_AMD_shader_trinary_minmax"
+                              Extension  "SPV_KHR_shader_clock"
+               1:             ExtInstImport  "GLSL.std.450"
+              28:             ExtInstImport  "SPV_AMD_shader_trinary_minmax"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 9 13 18 21
+                              Source GLSL 450
+                              SourceExtension  "GL_ARB_gpu_shader_int64"
+                              SourceExtension  "GL_EXT_spirv_intrinsics"
+                              Name 4  "main"
+                              Name 9  "uvec2Out"
+                              Name 13  "i64Out"
+                              Name 18  "vec2Out"
+                              Name 21  "vec3In"
+                              Decorate 9(uvec2Out) Location 0
+                              Decorate 13(i64Out) Location 1
+                              Decorate 18(vec2Out) Location 2
+                              Decorate 21(vec3In) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:             TypeVector 6(int) 2
+               8:             TypePointer Output 7(ivec2)
+     9(uvec2Out):      8(ptr) Variable Output
+              11:             TypeInt 64 1
+              12:             TypePointer Output 11(int64_t)
+      13(i64Out):     12(ptr) Variable Output
+              15:             TypeFloat 32
+              16:             TypeVector 15(float) 2
+              17:             TypePointer Output 16(fvec2)
+     18(vec2Out):     17(ptr) Variable Output
+              19:             TypeVector 15(float) 3
+              20:             TypePointer Input 19(fvec3)
+      21(vec3In):     20(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+              10:    7(ivec2) ReadClockKHR
+                              Store 9(uvec2Out) 10
+              14: 11(int64_t) ReadClockKHR
+                              Store 13(i64Out) 14
+              22:   19(fvec3) Load 21(vec3In)
+              23:   16(fvec2) VectorShuffle 22 22 0 1
+              24:   19(fvec3) Load 21(vec3In)
+              25:   16(fvec2) VectorShuffle 24 24 1 2
+              26:   19(fvec3) Load 21(vec3In)
+              27:   16(fvec2) VectorShuffle 26 26 2 0
+              29:   16(fvec2) ExtInst 28(SPV_AMD_shader_trinary_minmax) 1(FMin3AMD) 23 25 27
+                              Store 18(vec2Out) 29
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out b/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out
new file mode 100644
index 0000000..68ad949
--- /dev/null
+++ b/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out
@@ -0,0 +1,30 @@
+spv.intrinsicsSpirvLiteral.vert
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 12
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main"
+                              Source GLSL 450
+                              SourceExtension  "GL_EXT_spirv_intrinsics"
+                              Name 4  "main"
+                              Name 9  "vec4Out"
+                              Name 10  "vec4In"
+                              Decorate 9(vec4Out) Location 1
+                              Decorate 10(vec4In) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Function 7(fvec4)
+         4(main):           2 Function None 3
+               5:             Label
+      9(vec4Out):      8(ptr) Variable Function
+      10(vec4In):      8(ptr) Variable Function
+              11:    7(fvec4) Load 10(vec4In) None
+                              Store 9(vec4Out) 11 Volatile 
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.intrinsicsSpirvStorageClass.rchit.out b/Test/baseResults/spv.intrinsicsSpirvStorageClass.rchit.out
new file mode 100644
index 0000000..4be5b91
--- /dev/null
+++ b/Test/baseResults/spv.intrinsicsSpirvStorageClass.rchit.out
@@ -0,0 +1,30 @@
+spv.intrinsicsSpirvStorageClass.rchit
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 13
+
+                              Capability RayTracingKHR
+                              Capability RayTracingProvisionalKHR
+                              Extension  "SPV_KHR_ray_tracing"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint ClosestHitKHR 4  "main"
+                              Source GLSL 460
+                              SourceExtension  "GL_EXT_spirv_intrinsics"
+                              Name 4  "main"
+                              Name 9  "payload"
+                              Decorate 9(payload) Location 1
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer RayPayloadKHR 7(fvec4)
+      9(payload):      8(ptr) Variable RayPayloadKHR
+              10:    6(float) Constant 0
+              11:    6(float) Constant 1065353216
+              12:    7(fvec4) ConstantComposite 10 11 10 11
+         4(main):           2 Function None 3
+               5:             Label
+                              Store 9(payload) 12
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.intrinsicsSpirvType.rgen.out b/Test/baseResults/spv.intrinsicsSpirvType.rgen.out
new file mode 100644
index 0000000..ac0c946
--- /dev/null
+++ b/Test/baseResults/spv.intrinsicsSpirvType.rgen.out
@@ -0,0 +1,45 @@
+spv.intrinsicsSpirvType.rgen
+Validation failed
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 21
+
+                              Capability RayQueryKHR
+                              Capability RayTraversalPrimitiveCullingKHR
+                              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_spirv_intrinsics"
+                              Name 4  "main"
+                              Name 8  "rq"
+                              Name 11  "as"
+                              Decorate 11(as) Location 0
+                              Decorate 11(as) DescriptorSet 0
+                              Decorate 11(as) Binding 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               7:             TypePointer Function 6
+              10:             TypePointer UniformConstant 9
+          11(as):     10(ptr) Variable UniformConstant
+              13:             TypeInt 32 0
+              14:     13(int) Constant 0
+              15:             TypeFloat 32
+              16:             TypeVector 15(float) 3
+              17:   15(float) Constant 0
+              18:   16(fvec3) ConstantComposite 17 17 17
+              19:   15(float) Constant 1065353216
+              20:   16(fvec3) ConstantComposite 19 19 19
+         4(main):           2 Function None 3
+               5:             Label
+           8(rq):      7(ptr) Variable Function
+               6:             TypeRayQueryKHR
+               9:             TypeAccelerationStructureKHR
+              12:           9 Load 11(as)
+                              RayQueryInitializeKHR 8(rq) 12 14 14 18 17 20 19
+                              RayQueryTerminateKHR 8(rq)
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.invariantAll.vert.out b/Test/baseResults/spv.invariantAll.vert.out
new file mode 100644
index 0000000..ec5ad30
--- /dev/null
+++ b/Test/baseResults/spv.invariantAll.vert.out
@@ -0,0 +1,55 @@
+spv.invariantAll.vert
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 25
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 13 17
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 11  "gl_PerVertex"
+                              MemberName 11(gl_PerVertex) 0  "gl_Position"
+                              MemberName 11(gl_PerVertex) 1  "gl_PointSize"
+                              MemberName 11(gl_PerVertex) 2  "gl_ClipDistance"
+                              MemberName 11(gl_PerVertex) 3  "gl_CullDistance"
+                              Name 13  ""
+                              Name 17  "v"
+                              MemberDecorate 11(gl_PerVertex) 0 Invariant
+                              MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position
+                              MemberDecorate 11(gl_PerVertex) 1 Invariant
+                              MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize
+                              MemberDecorate 11(gl_PerVertex) 2 Invariant
+                              MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance
+                              MemberDecorate 11(gl_PerVertex) 3 Invariant
+                              MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance
+                              Decorate 11(gl_PerVertex) Block
+                              Decorate 17(v) Location 0
+                              Decorate 17(v) Invariant
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypeInt 32 0
+               9:      8(int) Constant 1
+              10:             TypeArray 6(float) 9
+11(gl_PerVertex):             TypeStruct 7(fvec4) 6(float) 10 10
+              12:             TypePointer Output 11(gl_PerVertex)
+              13:     12(ptr) Variable Output
+              14:             TypeInt 32 1
+              15:     14(int) Constant 0
+              16:             TypePointer Output 6(float)
+           17(v):     16(ptr) Variable Output
+              20:    6(float) Constant 0
+              21:    6(float) Constant 1065353216
+              23:             TypePointer Output 7(fvec4)
+         4(main):           2 Function None 3
+               5:             Label
+              18:    6(float) Load 17(v)
+              19:    6(float) Load 17(v)
+              22:    7(fvec4) CompositeConstruct 18 19 20 21
+              24:     23(ptr) AccessChain 13 15
+                              Store 24 22
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.load.bool.array.interface.block.frag.out b/Test/baseResults/spv.load.bool.array.interface.block.frag.out
new file mode 100644
index 0000000..f45736c
--- /dev/null
+++ b/Test/baseResults/spv.load.bool.array.interface.block.frag.out
@@ -0,0 +1,119 @@
+spv.load.bool.array.interface.block.frag
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 80
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 77
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 11  "ssbo"
+                              MemberName 11(ssbo) 0  "bo"
+                              Name 13  ""
+                              Name 18  "ub"
+                              MemberName 18(ub) 0  "bi"
+                              Name 20  ""
+                              Name 77  "color"
+                              Decorate 8 ArrayStride 4
+                              Decorate 10 ArrayStride 12
+                              MemberDecorate 11(ssbo) 0 Offset 0
+                              Decorate 11(ssbo) BufferBlock
+                              Decorate 13 DescriptorSet 0
+                              Decorate 13 Binding 1
+                              Decorate 16 ArrayStride 16
+                              Decorate 17 ArrayStride 48
+                              MemberDecorate 18(ub) 0 Offset 0
+                              Decorate 18(ub) Block
+                              Decorate 20 DescriptorSet 0
+                              Decorate 20 Binding 0
+                              Decorate 77(color) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 0
+               7:      6(int) Constant 3
+               8:             TypeArray 6(int) 7
+               9:      6(int) Constant 2
+              10:             TypeArray 8 9
+        11(ssbo):             TypeStruct 10
+              12:             TypePointer Uniform 11(ssbo)
+              13:     12(ptr) Variable Uniform
+              14:             TypeInt 32 1
+              15:     14(int) Constant 0
+              16:             TypeArray 6(int) 7
+              17:             TypeArray 16 9
+          18(ub):             TypeStruct 17
+              19:             TypePointer Uniform 18(ub)
+              20:     19(ptr) Variable Uniform
+              21:             TypePointer Uniform 17
+              24:             TypeBool
+              25:             TypeArray 24(bool) 7
+              26:             TypeArray 25 9
+              29:      6(int) Constant 0
+              45:             TypePointer Uniform 10
+              48:             TypePointer Uniform 8
+              51:      6(int) Constant 1
+              53:             TypePointer Uniform 6(int)
+              56:     14(int) Constant 1
+              60:     14(int) Constant 2
+              74:             TypeFloat 32
+              75:             TypeVector 74(float) 4
+              76:             TypePointer Output 75(fvec4)
+       77(color):     76(ptr) Variable Output
+              78:   74(float) Constant 0
+              79:   75(fvec4) ConstantComposite 78 78 78 78
+         4(main):           2 Function None 3
+               5:             Label
+              22:     21(ptr) AccessChain 20 15
+              23:          17 Load 22
+              27:          16 CompositeExtract 23 0
+              28:      6(int) CompositeExtract 27 0
+              30:    24(bool) INotEqual 28 29
+              31:      6(int) CompositeExtract 27 1
+              32:    24(bool) INotEqual 31 29
+              33:      6(int) CompositeExtract 27 2
+              34:    24(bool) INotEqual 33 29
+              35:          25 CompositeConstruct 30 32 34
+              36:          16 CompositeExtract 23 1
+              37:      6(int) CompositeExtract 36 0
+              38:    24(bool) INotEqual 37 29
+              39:      6(int) CompositeExtract 36 1
+              40:    24(bool) INotEqual 39 29
+              41:      6(int) CompositeExtract 36 2
+              42:    24(bool) INotEqual 41 29
+              43:          25 CompositeConstruct 38 40 42
+              44:          26 CompositeConstruct 35 43
+              46:     45(ptr) AccessChain 13 15
+              47:          25 CompositeExtract 44 0
+              49:     48(ptr) AccessChain 46 15
+              50:    24(bool) CompositeExtract 47 0
+              52:      6(int) Select 50 51 29
+              54:     53(ptr) AccessChain 49 15
+                              Store 54 52
+              55:    24(bool) CompositeExtract 47 1
+              57:      6(int) Select 55 51 29
+              58:     53(ptr) AccessChain 49 56
+                              Store 58 57
+              59:    24(bool) CompositeExtract 47 2
+              61:      6(int) Select 59 51 29
+              62:     53(ptr) AccessChain 49 60
+                              Store 62 61
+              63:          25 CompositeExtract 44 1
+              64:     48(ptr) AccessChain 46 56
+              65:    24(bool) CompositeExtract 63 0
+              66:      6(int) Select 65 51 29
+              67:     53(ptr) AccessChain 64 15
+                              Store 67 66
+              68:    24(bool) CompositeExtract 63 1
+              69:      6(int) Select 68 51 29
+              70:     53(ptr) AccessChain 64 56
+                              Store 70 69
+              71:    24(bool) CompositeExtract 63 2
+              72:      6(int) Select 71 51 29
+              73:     53(ptr) AccessChain 64 60
+                              Store 73 72
+                              Store 77(color) 79
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.memoryQualifier.frag.out b/Test/baseResults/spv.memoryQualifier.frag.out
index 5f0647b..fce8c9c 100644
--- a/Test/baseResults/spv.memoryQualifier.frag.out
+++ b/Test/baseResults/spv.memoryQualifier.frag.out
@@ -2,7 +2,7 @@
 Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 97
+// Id's are bound by 105
 
                               Capability Shader
                               Capability ImageRect
@@ -106,14 +106,16 @@
               58:             TypePointer Uniform 6(float)
               61:             TypePointer Function 6(float)
               63:             TypePointer Uniform 47(fvec2)
-              71:     14(int) Constant 2
-              72:             TypePointer Uniform 48(fvec3)
-              80:     14(int) Constant 5
-              83:             TypeInt 32 0
-              84:     83(int) Constant 1
-              88:     83(int) Constant 3
-              93:     14(int) Constant 3
-              95:             TypePointer Uniform 7(fvec4)
+              69:             TypeInt 32 0
+              70:     69(int) Constant 0
+              73:     69(int) Constant 1
+              76:     14(int) Constant 2
+              77:             TypePointer Uniform 48(fvec3)
+              87:     69(int) Constant 2
+              90:     14(int) Constant 5
+              96:     69(int) Constant 3
+             101:     14(int) Constant 3
+             103:             TypePointer Uniform 7(fvec4)
          4(main):           2 Function None 3
                5:             Label
         9(texel):      8(ptr) Variable Function
@@ -149,29 +151,38 @@
               66:    7(fvec4) Load 9(texel)
               67:   47(fvec2) VectorShuffle 66 66 0 1
               68:   47(fvec2) FAdd 67 65
-              69:    7(fvec4) Load 9(texel)
-              70:    7(fvec4) VectorShuffle 69 68 4 5 2 3
-                              Store 9(texel) 70
-              73:     72(ptr) AccessChain 52 71
-              74:   48(fvec3) Load 73
-              75:    7(fvec4) Load 9(texel)
-              76:   48(fvec3) VectorShuffle 75 75 0 1 2
-              77:   48(fvec3) FSub 76 74
-              78:    7(fvec4) Load 9(texel)
-              79:    7(fvec4) VectorShuffle 78 77 4 5 6 3
-                              Store 9(texel) 79
-              81:     58(ptr) AccessChain 52 80 57
-              82:    6(float) Load 81
-              85:     58(ptr) AccessChain 52 80 15 84
-              86:    6(float) Load 85
-              87:    6(float) FAdd 82 86
-              89:     61(ptr) AccessChain 9(texel) 88
-              90:    6(float) Load 89
-              91:    6(float) FAdd 90 87
-              92:     61(ptr) AccessChain 9(texel) 88
-                              Store 92 91
-              94:    7(fvec4) Load 9(texel)
-              96:     95(ptr) AccessChain 52 93
-                              Store 96 94
+              71:     61(ptr) AccessChain 9(texel) 70
+              72:    6(float) CompositeExtract 68 0
+                              Store 71 72
+              74:     61(ptr) AccessChain 9(texel) 73
+              75:    6(float) CompositeExtract 68 1
+                              Store 74 75
+              78:     77(ptr) AccessChain 52 76
+              79:   48(fvec3) Load 78
+              80:    7(fvec4) Load 9(texel)
+              81:   48(fvec3) VectorShuffle 80 80 0 1 2
+              82:   48(fvec3) FSub 81 79
+              83:     61(ptr) AccessChain 9(texel) 70
+              84:    6(float) CompositeExtract 82 0
+                              Store 83 84
+              85:     61(ptr) AccessChain 9(texel) 73
+              86:    6(float) CompositeExtract 82 1
+                              Store 85 86
+              88:     61(ptr) AccessChain 9(texel) 87
+              89:    6(float) CompositeExtract 82 2
+                              Store 88 89
+              91:     58(ptr) AccessChain 52 90 57
+              92:    6(float) Load 91
+              93:     58(ptr) AccessChain 52 90 15 73
+              94:    6(float) Load 93
+              95:    6(float) FAdd 92 94
+              97:     61(ptr) AccessChain 9(texel) 96
+              98:    6(float) Load 97
+              99:    6(float) FAdd 98 95
+             100:     61(ptr) AccessChain 9(texel) 96
+                              Store 100 99
+             102:    7(fvec4) Load 9(texel)
+             104:    103(ptr) AccessChain 52 101
+                              Store 104 102
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.meshShaderUserDefined.mesh.out
index fc2730c..01ee933 100644
--- a/Test/baseResults/spv.meshShaderUserDefined.mesh.out
+++ b/Test/baseResults/spv.meshShaderUserDefined.mesh.out
@@ -1,13 +1,13 @@
 spv.meshShaderUserDefined.mesh
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 138
+// Id's are bound by 141
 
                               Capability MeshShadingNV
                               Extension  "SPV_NV_mesh_shader"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint MeshNV 4  "main" 11 17 34 101
+                              EntryPoint MeshNV 4  "main" 11 17 34 104
                               ExecutionMode 4 LocalSize 32 1 1
                               ExecutionMode 4 OutputVertices 81
                               ExecutionMode 4 OutputPrimitivesNV 32
@@ -27,11 +27,11 @@
                               MemberName 30(myblock) 4  "m"
                               MemberName 30(myblock) 5  "mArr"
                               Name 34  "blk"
-                              Name 97  "myblock2"
-                              MemberName 97(myblock2) 0  "f"
-                              MemberName 97(myblock2) 1  "pos"
-                              MemberName 97(myblock2) 2  "m"
-                              Name 101  "blk2"
+                              Name 100  "myblock2"
+                              MemberName 100(myblock2) 0  "f"
+                              MemberName 100(myblock2) 1  "pos"
+                              MemberName 100(myblock2) 2  "m"
+                              Name 104  "blk2"
                               Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId
                               Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId
                               MemberDecorate 30(myblock) 0 PerPrimitiveNV
@@ -42,9 +42,9 @@
                               MemberDecorate 30(myblock) 5 PerPrimitiveNV
                               Decorate 30(myblock) Block
                               Decorate 34(blk) Location 0
-                              Decorate 97(myblock2) Block
-                              Decorate 101(blk2) Location 20
-                              Decorate 137 BuiltIn WorkgroupSize
+                              Decorate 100(myblock2) Block
+                              Decorate 104(blk2) Location 20
+                              Decorate 140 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -83,30 +83,30 @@
               56:   23(fvec3) ConstantComposite 53 54 55
               57:             TypePointer Output 23(fvec3)
               63:     36(int) Constant 3
-              68:             TypePointer Output 24(fvec4)
-              74:     36(int) Constant 4
-              75:   20(float) Constant 1098907648
-              76:   24(fvec4) ConstantComposite 55 53 54 75
-              81:     36(int) Constant 5
-              84:      6(int) Constant 3
-              91:   20(float) Constant 1099431936
-              92:   20(float) Constant 1099956224
-              93:   20(float) Constant 1100480512
-              94:   23(fvec3) ConstantComposite 91 92 93
-              96:      6(int) Constant 264
-    97(myblock2):             TypeStruct 20(float) 24(fvec4) 26
-              98:      6(int) Constant 81
-              99:             TypeArray 97(myblock2) 98
-             100:             TypePointer Output 99
-       101(blk2):    100(ptr) Variable Output
-             107:   20(float) Constant 1101004800
-             111:   20(float) Constant 1101529088
-             112:   20(float) Constant 1102053376
-             113:   20(float) Constant 1102577664
-             114:   20(float) Constant 1103101952
-             115:   24(fvec4) ConstantComposite 111 112 113 114
-             127:   20(float) Constant 1105723392
-             137:    9(ivec3) ConstantComposite 31 42 42
+              72:      6(int) Constant 3
+              77:     36(int) Constant 4
+              78:   20(float) Constant 1098907648
+              79:   24(fvec4) ConstantComposite 55 53 54 78
+              80:             TypePointer Output 24(fvec4)
+              85:     36(int) Constant 5
+              94:   20(float) Constant 1099431936
+              95:   20(float) Constant 1099956224
+              96:   20(float) Constant 1100480512
+              97:   23(fvec3) ConstantComposite 94 95 96
+              99:      6(int) Constant 264
+   100(myblock2):             TypeStruct 20(float) 24(fvec4) 26
+             101:      6(int) Constant 81
+             102:             TypeArray 100(myblock2) 101
+             103:             TypePointer Output 102
+       104(blk2):    103(ptr) Variable Output
+             110:   20(float) Constant 1101004800
+             114:   20(float) Constant 1101529088
+             115:   20(float) Constant 1102053376
+             116:   20(float) Constant 1102577664
+             117:   20(float) Constant 1103101952
+             118:   24(fvec4) ConstantComposite 114 115 116 117
+             130:   20(float) Constant 1105723392
+             140:    9(ivec3) ConstantComposite 31 42 42
          4(main):           2 Function None 3
                5:             Label
           8(iid):      7(ptr) Variable Function
@@ -140,64 +140,69 @@
               65:      6(int) UDiv 64 28
               66:     57(ptr) AccessChain 34(blk) 65 52
               67:   23(fvec3) Load 66
-              69:     68(ptr) AccessChain 34(blk) 62 63 44
-              70:   24(fvec4) Load 69
-              71:   24(fvec4) VectorShuffle 70 67 0 4 5 6
-                              Store 69 71
-              72:      6(int) Load 8(iid)
-              73:      6(int) UDiv 72 21
-              77:     68(ptr) AccessChain 34(blk) 73 74 52
-              78:   24(fvec4) Load 77
-              79:   24(fvec4) VectorShuffle 78 76 7 6 5 4
-                              Store 77 79
-              80:      6(int) Load 8(iid)
-              82:      6(int) Load 8(iid)
-              83:      6(int) UDiv 82 21
-              85:     39(ptr) AccessChain 34(blk) 83 74 52 84
-              86:   20(float) Load 85
-              87:     39(ptr) AccessChain 34(blk) 80 81 37 44 42
-                              Store 87 86
-              88:      6(int) Load 8(iid)
-              89:      6(int) IMul 88 21
-              90:      6(int) Load 16(gid)
-              95:     57(ptr) AccessChain 34(blk) 89 81 44 90
-                              Store 95 94
-                              MemoryBarrier 42 96
-                              ControlBarrier 28 28 96
-             102:      6(int) Load 8(iid)
-             103:      6(int) Load 8(iid)
-             104:      6(int) ISub 103 42
-             105:     39(ptr) AccessChain 101(blk2) 104 37
-             106:   20(float) Load 105
-             108:   20(float) FAdd 106 107
-             109:     39(ptr) AccessChain 101(blk2) 102 37
-                              Store 109 108
-             110:      6(int) Load 8(iid)
-             116:     68(ptr) AccessChain 101(blk2) 110 44
-                              Store 116 115
-             117:      6(int) Load 8(iid)
-             118:      6(int) IAdd 117 42
-             119:      6(int) Load 16(gid)
+              68:     39(ptr) AccessChain 34(blk) 62 63 44 42
+              69:   20(float) CompositeExtract 67 0
+                              Store 68 69
+              70:     39(ptr) AccessChain 34(blk) 62 63 44 28
+              71:   20(float) CompositeExtract 67 1
+                              Store 70 71
+              73:     39(ptr) AccessChain 34(blk) 62 63 44 72
+              74:   20(float) CompositeExtract 67 2
+                              Store 73 74
+              75:      6(int) Load 8(iid)
+              76:      6(int) UDiv 75 21
+              81:     80(ptr) AccessChain 34(blk) 76 77 52
+              82:   24(fvec4) Load 81
+              83:   24(fvec4) VectorShuffle 82 79 7 6 5 4
+                              Store 81 83
+              84:      6(int) Load 8(iid)
+              86:      6(int) Load 8(iid)
+              87:      6(int) UDiv 86 21
+              88:     39(ptr) AccessChain 34(blk) 87 77 52 72
+              89:   20(float) Load 88
+              90:     39(ptr) AccessChain 34(blk) 84 85 37 44 42
+                              Store 90 89
+              91:      6(int) Load 8(iid)
+              92:      6(int) IMul 91 21
+              93:      6(int) Load 16(gid)
+              98:     57(ptr) AccessChain 34(blk) 92 85 44 93
+                              Store 98 97
+                              MemoryBarrier 42 99
+                              ControlBarrier 28 28 99
+             105:      6(int) Load 8(iid)
+             106:      6(int) Load 8(iid)
+             107:      6(int) ISub 106 42
+             108:     39(ptr) AccessChain 104(blk2) 107 37
+             109:   20(float) Load 108
+             111:   20(float) FAdd 109 110
+             112:     39(ptr) AccessChain 104(blk2) 105 37
+                              Store 112 111
+             113:      6(int) Load 8(iid)
+             119:     80(ptr) AccessChain 104(blk2) 113 44
+                              Store 119 118
              120:      6(int) Load 8(iid)
-             121:     68(ptr) AccessChain 101(blk2) 120 44
-             122:   24(fvec4) Load 121
-             123:     68(ptr) AccessChain 101(blk2) 118 52 119
-                              Store 123 122
-             124:      6(int) Load 8(iid)
-             125:      6(int) IAdd 124 42
-             126:      6(int) Load 16(gid)
-             128:     39(ptr) AccessChain 101(blk2) 125 52 126 28
-                              Store 128 127
-             129:      6(int) Load 8(iid)
-             130:      6(int) IAdd 129 28
-             131:      6(int) Load 8(iid)
-             132:      6(int) IAdd 131 42
-             133:      6(int) Load 16(gid)
-             134:     68(ptr) AccessChain 101(blk2) 132 52 133
-             135:   24(fvec4) Load 134
-             136:     68(ptr) AccessChain 101(blk2) 130 52 63
-                              Store 136 135
-                              MemoryBarrier 42 96
-                              ControlBarrier 28 28 96
+             121:      6(int) IAdd 120 42
+             122:      6(int) Load 16(gid)
+             123:      6(int) Load 8(iid)
+             124:     80(ptr) AccessChain 104(blk2) 123 44
+             125:   24(fvec4) Load 124
+             126:     80(ptr) AccessChain 104(blk2) 121 52 122
+                              Store 126 125
+             127:      6(int) Load 8(iid)
+             128:      6(int) IAdd 127 42
+             129:      6(int) Load 16(gid)
+             131:     39(ptr) AccessChain 104(blk2) 128 52 129 28
+                              Store 131 130
+             132:      6(int) Load 8(iid)
+             133:      6(int) IAdd 132 28
+             134:      6(int) Load 8(iid)
+             135:      6(int) IAdd 134 42
+             136:      6(int) Load 16(gid)
+             137:     80(ptr) AccessChain 104(blk2) 135 52 136
+             138:   24(fvec4) Load 137
+             139:     80(ptr) AccessChain 104(blk2) 133 52 63
+                              Store 139 138
+                              MemoryBarrier 42 99
+                              ControlBarrier 28 28 99
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.multiStructFuncall.frag.out b/Test/baseResults/spv.multiStructFuncall.frag.out
index dd57cd1..eec734a 100644
--- a/Test/baseResults/spv.multiStructFuncall.frag.out
+++ b/Test/baseResults/spv.multiStructFuncall.frag.out
@@ -1,7 +1,7 @@
 spv.multiStructFuncall.frag
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 66
+// Id's are bound by 65
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -23,14 +23,12 @@
                               Name 23  "blockName"
                               MemberName 23(blockName) 0  "s1"
                               Name 25  ""
-                              Name 31  "S"
-                              MemberName 31(S) 0  "m"
-                              Name 32  "arg"
-                              Name 39  "s2"
-                              Name 42  "param"
-                              Name 48  "param"
-                              Name 51  "param"
-                              Name 62  "param"
+                              Name 31  "arg"
+                              Name 38  "s2"
+                              Name 41  "param"
+                              Name 47  "param"
+                              Name 50  "param"
+                              Name 61  "param"
                               MemberDecorate 22(S) 0 ColMajor
                               MemberDecorate 22(S) 0 Offset 0
                               MemberDecorate 22(S) 0 MatrixStride 16
@@ -38,7 +36,6 @@
                               Decorate 23(blockName) BufferBlock
                               Decorate 25 DescriptorSet 0
                               Decorate 25 Binding 0
-                              MemberDecorate 31(S) 0 ColMajor
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -55,52 +52,51 @@
               26:             TypeInt 32 1
               27:     26(int) Constant 0
               28:             TypePointer Uniform 22(S)
-           31(S):             TypeStruct 8
-              34:             TypePointer Function 8
-              38:             TypePointer Private 9(S)
-          39(s2):     38(ptr) Variable Private
-              60:             TypePointer Uniform 8
+              33:             TypePointer Function 8
+              37:             TypePointer Private 9(S)
+          38(s2):     37(ptr) Variable Private
+              59:             TypePointer Uniform 8
          4(main):           2 Function None 3
                5:             Label
-         32(arg):     14(ptr) Variable Function
-       42(param):     14(ptr) Variable Function
-       48(param):     14(ptr) Variable Function
-       51(param):     14(ptr) Variable Function
-       62(param):     14(ptr) Variable Function
+         31(arg):     14(ptr) Variable Function
+       41(param):     14(ptr) Variable Function
+       47(param):     14(ptr) Variable Function
+       50(param):     14(ptr) Variable Function
+       61(param):     14(ptr) Variable Function
               29:     28(ptr) AccessChain 25 27
               30:       22(S) Load 29
-              33:           8 CompositeExtract 30 0
-              35:     34(ptr) AccessChain 32(arg) 27
-                              Store 35 33
-              36:        9(S) Load 32(arg)
-              37:           2 FunctionCall 12(fooConst(struct-S-mf441;) 36
-              40:        9(S) Load 39(s2)
-              41:           2 FunctionCall 12(fooConst(struct-S-mf441;) 40
-              43:     28(ptr) AccessChain 25 27
-              44:       22(S) Load 43
-              45:           8 CompositeExtract 44 0
-              46:     34(ptr) AccessChain 42(param) 27
-                              Store 46 45
-              47:           2 FunctionCall 17(foo(struct-S-mf441;) 42(param)
-              49:        9(S) Load 39(s2)
-                              Store 48(param) 49
-              50:           2 FunctionCall 17(foo(struct-S-mf441;) 48(param)
-              52:     28(ptr) AccessChain 25 27
-              53:       22(S) Load 52
-              54:           8 CompositeExtract 53 0
-              55:     34(ptr) AccessChain 51(param) 27
-                              Store 55 54
-              56:           2 FunctionCall 20(fooOut(struct-S-mf441;) 51(param)
-              57:        9(S) Load 51(param)
-              58:     28(ptr) AccessChain 25 27
-              59:           8 CompositeExtract 57 0
-              61:     60(ptr) AccessChain 58 27
-                              Store 61 59
-              63:        9(S) Load 39(s2)
-                              Store 62(param) 63
-              64:           2 FunctionCall 20(fooOut(struct-S-mf441;) 62(param)
-              65:        9(S) Load 62(param)
-                              Store 39(s2) 65
+              32:           8 CompositeExtract 30 0
+              34:     33(ptr) AccessChain 31(arg) 27
+                              Store 34 32
+              35:        9(S) Load 31(arg)
+              36:           2 FunctionCall 12(fooConst(struct-S-mf441;) 35
+              39:        9(S) Load 38(s2)
+              40:           2 FunctionCall 12(fooConst(struct-S-mf441;) 39
+              42:     28(ptr) AccessChain 25 27
+              43:       22(S) Load 42
+              44:           8 CompositeExtract 43 0
+              45:     33(ptr) AccessChain 41(param) 27
+                              Store 45 44
+              46:           2 FunctionCall 17(foo(struct-S-mf441;) 41(param)
+              48:        9(S) Load 38(s2)
+                              Store 47(param) 48
+              49:           2 FunctionCall 17(foo(struct-S-mf441;) 47(param)
+              51:     28(ptr) AccessChain 25 27
+              52:       22(S) Load 51
+              53:           8 CompositeExtract 52 0
+              54:     33(ptr) AccessChain 50(param) 27
+                              Store 54 53
+              55:           2 FunctionCall 20(fooOut(struct-S-mf441;) 50(param)
+              56:        9(S) Load 50(param)
+              57:     28(ptr) AccessChain 25 27
+              58:           8 CompositeExtract 56 0
+              60:     59(ptr) AccessChain 57 27
+                              Store 60 58
+              62:        9(S) Load 38(s2)
+                              Store 61(param) 62
+              63:           2 FunctionCall 20(fooOut(struct-S-mf441;) 61(param)
+              64:        9(S) Load 61(param)
+                              Store 38(s2) 64
                               Return
                               FunctionEnd
 12(fooConst(struct-S-mf441;):           2 Function None 10
diff --git a/Test/baseResults/spv.noWorkgroup.comp.out b/Test/baseResults/spv.noWorkgroup.comp.out
index 9cd130c..a8969e0 100644
--- a/Test/baseResults/spv.noWorkgroup.comp.out
+++ b/Test/baseResults/spv.noWorkgroup.comp.out
@@ -1,7 +1,7 @@
 spv.noWorkgroup.comp
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 12
+// Id's are bound by 23
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -10,6 +10,7 @@
                               ExecutionMode 4 LocalSize 1 1 1
                               Source GLSL 450
                               Name 4  "main"
+                              Name 22  "keys"
                               Decorate 7 SpecId 18
                               Decorate 8 SpecId 10
                               Decorate 9 SpecId 19
@@ -22,6 +23,17 @@
                9:      6(int) SpecConstant 1
               10:             TypeVector 6(int) 3
               11:   10(ivec3) SpecConstantComposite 7 8 9
+              12:      6(int) Constant 0
+              13:      6(int) SpecConstantOp 81 11 0
+              14:      6(int) Constant 1
+              15:      6(int) SpecConstantOp 81 11 1(GLSL.std.450)
+              16:      6(int) SpecConstantOp 132 13 15
+              17:             TypeArray 6(int) 16
+              18:      6(int) Constant 2
+              19:      6(int) SpecConstantOp 81 11 2
+              20:             TypeArray 17 19
+              21:             TypePointer Workgroup 20
+        22(keys):     21(ptr) Variable Workgroup
          4(main):           2 Function None 3
                5:             Label
                               Return
diff --git a/Test/baseResults/spv.precise.tese.out b/Test/baseResults/spv.precise.tese.out
index a23b073..7db4ed0 100644
--- a/Test/baseResults/spv.precise.tese.out
+++ b/Test/baseResults/spv.precise.tese.out
@@ -36,10 +36,6 @@
                               Decorate 43 NoContraction
                               Decorate 62(in_f_color) RelaxedPrecision
                               Decorate 62(in_f_color) Location 0
-                              Decorate 67 RelaxedPrecision
-                              Decorate 68 RelaxedPrecision
-                              Decorate 69 RelaxedPrecision
-                              Decorate 70 RelaxedPrecision
                               Decorate 97 NoContraction
                               Decorate 99 NoContraction
                               Decorate 101 NoContraction
diff --git a/Test/baseResults/spv.rw.autoassign.frag.out b/Test/baseResults/spv.rw.autoassign.frag.out
index c696c52..27db336 100644
--- a/Test/baseResults/spv.rw.autoassign.frag.out
+++ b/Test/baseResults/spv.rw.autoassign.frag.out
@@ -1,15 +1,14 @@
 spv.rw.autoassign.frag
-Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 42
+// Id's are bound by 45
 
                               Capability Shader
                               Capability Image1D
                               Capability ImageBuffer
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 39
+                              EntryPoint Fragment 4  "main" 42
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "main"
@@ -18,15 +17,15 @@
                               Name 10  "@main("
                               Name 13  "r00"
                               Name 16  "g_tTex1df1"
-                              Name 23  "r01"
-                              Name 26  "g_tBuf1du1"
-                              Name 30  "psout"
-                              Name 39  "@entryPointOutput.Color"
+                              Name 24  "r01"
+                              Name 27  "g_tBuf1du1"
+                              Name 33  "psout"
+                              Name 42  "@entryPointOutput.Color"
                               Decorate 16(g_tTex1df1) DescriptorSet 0
                               Decorate 16(g_tTex1df1) Binding 20
-                              Decorate 26(g_tBuf1du1) DescriptorSet 0
-                              Decorate 26(g_tBuf1du1) Binding 21
-                              Decorate 39(@entryPointOutput.Color) Location 0
+                              Decorate 27(g_tBuf1du1) DescriptorSet 0
+                              Decorate 27(g_tBuf1du1) Binding 21
+                              Decorate 42(@entryPointOutput.Color) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -39,37 +38,40 @@
   16(g_tTex1df1):     15(ptr) Variable UniformConstant
               18:             TypeInt 32 1
               19:     18(int) Constant 0
-              21:             TypeInt 32 0
-              22:             TypePointer Function 21(int)
-              24:             TypeImage 21(int) Buffer nonsampled format:R32ui
-              25:             TypePointer UniformConstant 24
-  26(g_tBuf1du1):     25(ptr) Variable UniformConstant
-              29:             TypePointer Function 8(PS_OUTPUT)
-              31:    6(float) Constant 0
-              32:    7(fvec4) ConstantComposite 31 31 31 31
-              33:             TypePointer Function 7(fvec4)
-              38:             TypePointer Output 7(fvec4)
-39(@entryPointOutput.Color):     38(ptr) Variable Output
+              22:             TypeInt 32 0
+              23:             TypePointer Function 22(int)
+              25:             TypeImage 22(int) Buffer nonsampled format:R32ui
+              26:             TypePointer UniformConstant 25
+  27(g_tBuf1du1):     26(ptr) Variable UniformConstant
+              29:             TypeVector 22(int) 4
+              32:             TypePointer Function 8(PS_OUTPUT)
+              34:    6(float) Constant 0
+              35:    7(fvec4) ConstantComposite 34 34 34 34
+              36:             TypePointer Function 7(fvec4)
+              41:             TypePointer Output 7(fvec4)
+42(@entryPointOutput.Color):     41(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
-              40:8(PS_OUTPUT) FunctionCall 10(@main()
-              41:    7(fvec4) CompositeExtract 40 0
-                              Store 39(@entryPointOutput.Color) 41
+              43:8(PS_OUTPUT) FunctionCall 10(@main()
+              44:    7(fvec4) CompositeExtract 43 0
+                              Store 42(@entryPointOutput.Color) 44
                               Return
                               FunctionEnd
       10(@main():8(PS_OUTPUT) Function None 9
               11:             Label
          13(r00):     12(ptr) Variable Function
-         23(r01):     22(ptr) Variable Function
-       30(psout):     29(ptr) Variable Function
+         24(r01):     23(ptr) Variable Function
+       33(psout):     32(ptr) Variable Function
               17:          14 Load 16(g_tTex1df1)
-              20:    6(float) ImageRead 17 19
-                              Store 13(r00) 20
-              27:          24 Load 26(g_tBuf1du1)
-              28:     21(int) ImageRead 27 19
-                              Store 23(r01) 28
-              34:     33(ptr) AccessChain 30(psout) 19
-                              Store 34 32
-              35:8(PS_OUTPUT) Load 30(psout)
-                              ReturnValue 35
+              20:    7(fvec4) ImageRead 17 19
+              21:    6(float) CompositeExtract 20 0
+                              Store 13(r00) 21
+              28:          25 Load 27(g_tBuf1du1)
+              30:   29(ivec4) ImageRead 28 19
+              31:     22(int) CompositeExtract 30 0
+                              Store 24(r01) 31
+              37:     36(ptr) AccessChain 33(psout) 19
+                              Store 37 35
+              38:8(PS_OUTPUT) Load 33(psout)
+                              ReturnValue 38
                               FunctionEnd
diff --git a/Test/baseResults/spv.shaderBallot.comp.out b/Test/baseResults/spv.shaderBallot.comp.out
index bdbf10f..2a0106e 100644
--- a/Test/baseResults/spv.shaderBallot.comp.out
+++ b/Test/baseResults/spv.shaderBallot.comp.out
@@ -1,7 +1,7 @@
 spv.shaderBallot.comp
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 318
+// Id's are bound by 397
 
                               Capability Shader
                               Capability Int64
@@ -42,7 +42,7 @@
                               Decorate 72(Buffers) BufferBlock
                               Decorate 75(data) DescriptorSet 0
                               Decorate 75(data) Binding 0
-                              Decorate 317 BuiltIn WorkgroupSize
+                              Decorate 396 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -77,19 +77,20 @@
               86:     70(int) Constant 1
               87:             TypeVector 68(float) 2
               88:             TypePointer Uniform 69(fvec4)
-             102:     70(int) Constant 2
-             103:             TypeVector 68(float) 3
-             119:     70(int) Constant 3
-             134:             TypePointer Uniform 70(int)
-             141:             TypeVector 70(int) 2
-             142:             TypePointer Uniform 71(ivec4)
-             156:             TypeVector 70(int) 3
-             186:             TypePointer Uniform 6(int)
-             193:             TypePointer Uniform 20(ivec4)
-             207:             TypeVector 6(int) 3
-             315:      6(int) Constant 8
-             316:      6(int) Constant 1
-             317:  207(ivec3) ConstantComposite 315 315 316
+             100:      6(int) Constant 1
+             104:     70(int) Constant 2
+             105:             TypeVector 68(float) 3
+             121:      6(int) Constant 2
+             125:     70(int) Constant 3
+             140:             TypePointer Uniform 70(int)
+             147:             TypeVector 70(int) 2
+             148:             TypePointer Uniform 71(ivec4)
+             163:             TypeVector 70(int) 3
+             196:             TypePointer Uniform 6(int)
+             203:             TypePointer Uniform 20(ivec4)
+             218:             TypeVector 6(int) 3
+             395:      6(int) Constant 8
+             396:  218(ivec3) ConstantComposite 395 395 100
          4(main):           2 Function None 3
                5:             Label
    8(invocation):      7(ptr) Variable Function
@@ -137,7 +138,7 @@
               64: 17(int64_t) Bitcast 63
               65:    58(bool) IEqual 57 64
                               SelectionMerge 67 None
-                              BranchConditional 65 66 236
+                              BranchConditional 65 66 250
               66:               Label
               76:      6(int)   Load 8(invocation)
               80:     79(ptr)   AccessChain 75(data) 77 77 78
@@ -156,237 +157,333 @@
               95:   68(float)   CompositeExtract 91 1
               96:   68(float)   SubgroupReadInvocationKHR 95 92
               97:   87(fvec2)   CompositeConstruct 94 96
-              98:     88(ptr)   AccessChain 75(data) 85 77
-              99:   69(fvec4)   Load 98
-             100:   69(fvec4)   VectorShuffle 99 97 4 5 2 3
-                                Store 98 100
-             101:      6(int)   Load 8(invocation)
-             104:     88(ptr)   AccessChain 75(data) 102 77
-             105:   69(fvec4)   Load 104
-             106:  103(fvec3)   VectorShuffle 105 105 0 1 2
-             107:      6(int)   Load 8(invocation)
-             108:   68(float)   CompositeExtract 106 0
-             109:   68(float)   SubgroupReadInvocationKHR 108 107
-             110:   68(float)   CompositeExtract 106 1
-             111:   68(float)   SubgroupReadInvocationKHR 110 107
-             112:   68(float)   CompositeExtract 106 2
-             113:   68(float)   SubgroupReadInvocationKHR 112 107
-             114:  103(fvec3)   CompositeConstruct 109 111 113
-             115:     88(ptr)   AccessChain 75(data) 101 77
-             116:   69(fvec4)   Load 115
-             117:   69(fvec4)   VectorShuffle 116 114 4 5 6 3
-                                Store 115 117
-             118:      6(int)   Load 8(invocation)
-             120:     88(ptr)   AccessChain 75(data) 119 77
-             121:   69(fvec4)   Load 120
-             122:      6(int)   Load 8(invocation)
-             123:   68(float)   CompositeExtract 121 0
-             124:   68(float)   SubgroupReadInvocationKHR 123 122
-             125:   68(float)   CompositeExtract 121 1
-             126:   68(float)   SubgroupReadInvocationKHR 125 122
-             127:   68(float)   CompositeExtract 121 2
-             128:   68(float)   SubgroupReadInvocationKHR 127 122
-             129:   68(float)   CompositeExtract 121 3
-             130:   68(float)   SubgroupReadInvocationKHR 129 122
-             131:   69(fvec4)   CompositeConstruct 124 126 128 130
-             132:     88(ptr)   AccessChain 75(data) 118 77
-                                Store 132 131
-             133:      6(int)   Load 8(invocation)
-             135:    134(ptr)   AccessChain 75(data) 77 86 78
-             136:     70(int)   Load 135
-             137:      6(int)   Load 8(invocation)
-             138:     70(int)   SubgroupReadInvocationKHR 136 137
-             139:    134(ptr)   AccessChain 75(data) 133 86 78
-                                Store 139 138
-             140:      6(int)   Load 8(invocation)
-             143:    142(ptr)   AccessChain 75(data) 86 86
-             144:   71(ivec4)   Load 143
-             145:  141(ivec2)   VectorShuffle 144 144 0 1
+              98:     79(ptr)   AccessChain 75(data) 85 77 78
+              99:   68(float)   CompositeExtract 97 0
+                                Store 98 99
+             101:     79(ptr)   AccessChain 75(data) 85 77 100
+             102:   68(float)   CompositeExtract 97 1
+                                Store 101 102
+             103:      6(int)   Load 8(invocation)
+             106:     88(ptr)   AccessChain 75(data) 104 77
+             107:   69(fvec4)   Load 106
+             108:  105(fvec3)   VectorShuffle 107 107 0 1 2
+             109:      6(int)   Load 8(invocation)
+             110:   68(float)   CompositeExtract 108 0
+             111:   68(float)   SubgroupReadInvocationKHR 110 109
+             112:   68(float)   CompositeExtract 108 1
+             113:   68(float)   SubgroupReadInvocationKHR 112 109
+             114:   68(float)   CompositeExtract 108 2
+             115:   68(float)   SubgroupReadInvocationKHR 114 109
+             116:  105(fvec3)   CompositeConstruct 111 113 115
+             117:     79(ptr)   AccessChain 75(data) 103 77 78
+             118:   68(float)   CompositeExtract 116 0
+                                Store 117 118
+             119:     79(ptr)   AccessChain 75(data) 103 77 100
+             120:   68(float)   CompositeExtract 116 1
+                                Store 119 120
+             122:     79(ptr)   AccessChain 75(data) 103 77 121
+             123:   68(float)   CompositeExtract 116 2
+                                Store 122 123
+             124:      6(int)   Load 8(invocation)
+             126:     88(ptr)   AccessChain 75(data) 125 77
+             127:   69(fvec4)   Load 126
+             128:      6(int)   Load 8(invocation)
+             129:   68(float)   CompositeExtract 127 0
+             130:   68(float)   SubgroupReadInvocationKHR 129 128
+             131:   68(float)   CompositeExtract 127 1
+             132:   68(float)   SubgroupReadInvocationKHR 131 128
+             133:   68(float)   CompositeExtract 127 2
+             134:   68(float)   SubgroupReadInvocationKHR 133 128
+             135:   68(float)   CompositeExtract 127 3
+             136:   68(float)   SubgroupReadInvocationKHR 135 128
+             137:   69(fvec4)   CompositeConstruct 130 132 134 136
+             138:     88(ptr)   AccessChain 75(data) 124 77
+                                Store 138 137
+             139:      6(int)   Load 8(invocation)
+             141:    140(ptr)   AccessChain 75(data) 77 86 78
+             142:     70(int)   Load 141
+             143:      6(int)   Load 8(invocation)
+             144:     70(int)   SubgroupReadInvocationKHR 142 143
+             145:    140(ptr)   AccessChain 75(data) 139 86 78
+                                Store 145 144
              146:      6(int)   Load 8(invocation)
-             147:     70(int)   CompositeExtract 145 0
-             148:     70(int)   SubgroupReadInvocationKHR 147 146
-             149:     70(int)   CompositeExtract 145 1
-             150:     70(int)   SubgroupReadInvocationKHR 149 146
-             151:  141(ivec2)   CompositeConstruct 148 150
-             152:    142(ptr)   AccessChain 75(data) 140 86
-             153:   71(ivec4)   Load 152
-             154:   71(ivec4)   VectorShuffle 153 151 4 5 2 3
-                                Store 152 154
-             155:      6(int)   Load 8(invocation)
-             157:    142(ptr)   AccessChain 75(data) 102 86
-             158:   71(ivec4)   Load 157
-             159:  156(ivec3)   VectorShuffle 158 158 0 1 2
-             160:      6(int)   Load 8(invocation)
-             161:     70(int)   CompositeExtract 159 0
-             162:     70(int)   SubgroupReadInvocationKHR 161 160
-             163:     70(int)   CompositeExtract 159 1
-             164:     70(int)   SubgroupReadInvocationKHR 163 160
-             165:     70(int)   CompositeExtract 159 2
-             166:     70(int)   SubgroupReadInvocationKHR 165 160
-             167:  156(ivec3)   CompositeConstruct 162 164 166
-             168:    142(ptr)   AccessChain 75(data) 155 86
-             169:   71(ivec4)   Load 168
-             170:   71(ivec4)   VectorShuffle 169 167 4 5 6 3
-                                Store 168 170
-             171:      6(int)   Load 8(invocation)
-             172:    142(ptr)   AccessChain 75(data) 119 86
-             173:   71(ivec4)   Load 172
-             174:      6(int)   Load 8(invocation)
-             175:     70(int)   CompositeExtract 173 0
-             176:     70(int)   SubgroupReadInvocationKHR 175 174
-             177:     70(int)   CompositeExtract 173 1
-             178:     70(int)   SubgroupReadInvocationKHR 177 174
-             179:     70(int)   CompositeExtract 173 2
-             180:     70(int)   SubgroupReadInvocationKHR 179 174
-             181:     70(int)   CompositeExtract 173 3
-             182:     70(int)   SubgroupReadInvocationKHR 181 174
-             183:   71(ivec4)   CompositeConstruct 176 178 180 182
-             184:    142(ptr)   AccessChain 75(data) 171 86
-                                Store 184 183
-             185:      6(int)   Load 8(invocation)
-             187:    186(ptr)   AccessChain 75(data) 77 102 78
-             188:      6(int)   Load 187
-             189:      6(int)   Load 8(invocation)
-             190:      6(int)   SubgroupReadInvocationKHR 188 189
-             191:    186(ptr)   AccessChain 75(data) 185 102 78
-                                Store 191 190
-             192:      6(int)   Load 8(invocation)
-             194:    193(ptr)   AccessChain 75(data) 86 102
-             195:   20(ivec4)   Load 194
-             196:   26(ivec2)   VectorShuffle 195 195 0 1
-             197:      6(int)   Load 8(invocation)
-             198:      6(int)   CompositeExtract 196 0
-             199:      6(int)   SubgroupReadInvocationKHR 198 197
-             200:      6(int)   CompositeExtract 196 1
-             201:      6(int)   SubgroupReadInvocationKHR 200 197
-             202:   26(ivec2)   CompositeConstruct 199 201
-             203:    193(ptr)   AccessChain 75(data) 192 102
-             204:   20(ivec4)   Load 203
-             205:   20(ivec4)   VectorShuffle 204 202 4 5 2 3
-                                Store 203 205
-             206:      6(int)   Load 8(invocation)
-             208:    193(ptr)   AccessChain 75(data) 102 102
-             209:   20(ivec4)   Load 208
-             210:  207(ivec3)   VectorShuffle 209 209 0 1 2
-             211:      6(int)   Load 8(invocation)
-             212:      6(int)   CompositeExtract 210 0
-             213:      6(int)   SubgroupReadInvocationKHR 212 211
-             214:      6(int)   CompositeExtract 210 1
-             215:      6(int)   SubgroupReadInvocationKHR 214 211
-             216:      6(int)   CompositeExtract 210 2
-             217:      6(int)   SubgroupReadInvocationKHR 216 211
-             218:  207(ivec3)   CompositeConstruct 213 215 217
-             219:    193(ptr)   AccessChain 75(data) 206 102
+             149:    148(ptr)   AccessChain 75(data) 86 86
+             150:   71(ivec4)   Load 149
+             151:  147(ivec2)   VectorShuffle 150 150 0 1
+             152:      6(int)   Load 8(invocation)
+             153:     70(int)   CompositeExtract 151 0
+             154:     70(int)   SubgroupReadInvocationKHR 153 152
+             155:     70(int)   CompositeExtract 151 1
+             156:     70(int)   SubgroupReadInvocationKHR 155 152
+             157:  147(ivec2)   CompositeConstruct 154 156
+             158:    140(ptr)   AccessChain 75(data) 146 86 78
+             159:     70(int)   CompositeExtract 157 0
+                                Store 158 159
+             160:    140(ptr)   AccessChain 75(data) 146 86 100
+             161:     70(int)   CompositeExtract 157 1
+                                Store 160 161
+             162:      6(int)   Load 8(invocation)
+             164:    148(ptr)   AccessChain 75(data) 104 86
+             165:   71(ivec4)   Load 164
+             166:  163(ivec3)   VectorShuffle 165 165 0 1 2
+             167:      6(int)   Load 8(invocation)
+             168:     70(int)   CompositeExtract 166 0
+             169:     70(int)   SubgroupReadInvocationKHR 168 167
+             170:     70(int)   CompositeExtract 166 1
+             171:     70(int)   SubgroupReadInvocationKHR 170 167
+             172:     70(int)   CompositeExtract 166 2
+             173:     70(int)   SubgroupReadInvocationKHR 172 167
+             174:  163(ivec3)   CompositeConstruct 169 171 173
+             175:    140(ptr)   AccessChain 75(data) 162 86 78
+             176:     70(int)   CompositeExtract 174 0
+                                Store 175 176
+             177:    140(ptr)   AccessChain 75(data) 162 86 100
+             178:     70(int)   CompositeExtract 174 1
+                                Store 177 178
+             179:    140(ptr)   AccessChain 75(data) 162 86 121
+             180:     70(int)   CompositeExtract 174 2
+                                Store 179 180
+             181:      6(int)   Load 8(invocation)
+             182:    148(ptr)   AccessChain 75(data) 125 86
+             183:   71(ivec4)   Load 182
+             184:      6(int)   Load 8(invocation)
+             185:     70(int)   CompositeExtract 183 0
+             186:     70(int)   SubgroupReadInvocationKHR 185 184
+             187:     70(int)   CompositeExtract 183 1
+             188:     70(int)   SubgroupReadInvocationKHR 187 184
+             189:     70(int)   CompositeExtract 183 2
+             190:     70(int)   SubgroupReadInvocationKHR 189 184
+             191:     70(int)   CompositeExtract 183 3
+             192:     70(int)   SubgroupReadInvocationKHR 191 184
+             193:   71(ivec4)   CompositeConstruct 186 188 190 192
+             194:    148(ptr)   AccessChain 75(data) 181 86
+                                Store 194 193
+             195:      6(int)   Load 8(invocation)
+             197:    196(ptr)   AccessChain 75(data) 77 104 78
+             198:      6(int)   Load 197
+             199:      6(int)   Load 8(invocation)
+             200:      6(int)   SubgroupReadInvocationKHR 198 199
+             201:    196(ptr)   AccessChain 75(data) 195 104 78
+                                Store 201 200
+             202:      6(int)   Load 8(invocation)
+             204:    203(ptr)   AccessChain 75(data) 86 104
+             205:   20(ivec4)   Load 204
+             206:   26(ivec2)   VectorShuffle 205 205 0 1
+             207:      6(int)   Load 8(invocation)
+             208:      6(int)   CompositeExtract 206 0
+             209:      6(int)   SubgroupReadInvocationKHR 208 207
+             210:      6(int)   CompositeExtract 206 1
+             211:      6(int)   SubgroupReadInvocationKHR 210 207
+             212:   26(ivec2)   CompositeConstruct 209 211
+             213:    196(ptr)   AccessChain 75(data) 202 104 78
+             214:      6(int)   CompositeExtract 212 0
+                                Store 213 214
+             215:    196(ptr)   AccessChain 75(data) 202 104 100
+             216:      6(int)   CompositeExtract 212 1
+                                Store 215 216
+             217:      6(int)   Load 8(invocation)
+             219:    203(ptr)   AccessChain 75(data) 104 104
              220:   20(ivec4)   Load 219
-             221:   20(ivec4)   VectorShuffle 220 218 4 5 6 3
-                                Store 219 221
+             221:  218(ivec3)   VectorShuffle 220 220 0 1 2
              222:      6(int)   Load 8(invocation)
-             223:    193(ptr)   AccessChain 75(data) 119 102
-             224:   20(ivec4)   Load 223
-             225:      6(int)   Load 8(invocation)
-             226:      6(int)   CompositeExtract 224 0
-             227:      6(int)   SubgroupReadInvocationKHR 226 225
-             228:      6(int)   CompositeExtract 224 1
-             229:      6(int)   SubgroupReadInvocationKHR 228 225
-             230:      6(int)   CompositeExtract 224 2
-             231:      6(int)   SubgroupReadInvocationKHR 230 225
-             232:      6(int)   CompositeExtract 224 3
-             233:      6(int)   SubgroupReadInvocationKHR 232 225
-             234:   20(ivec4)   CompositeConstruct 227 229 231 233
-             235:    193(ptr)   AccessChain 75(data) 222 102
-                                Store 235 234
+             223:      6(int)   CompositeExtract 221 0
+             224:      6(int)   SubgroupReadInvocationKHR 223 222
+             225:      6(int)   CompositeExtract 221 1
+             226:      6(int)   SubgroupReadInvocationKHR 225 222
+             227:      6(int)   CompositeExtract 221 2
+             228:      6(int)   SubgroupReadInvocationKHR 227 222
+             229:  218(ivec3)   CompositeConstruct 224 226 228
+             230:    196(ptr)   AccessChain 75(data) 217 104 78
+             231:      6(int)   CompositeExtract 229 0
+                                Store 230 231
+             232:    196(ptr)   AccessChain 75(data) 217 104 100
+             233:      6(int)   CompositeExtract 229 1
+                                Store 232 233
+             234:    196(ptr)   AccessChain 75(data) 217 104 121
+             235:      6(int)   CompositeExtract 229 2
+                                Store 234 235
+             236:      6(int)   Load 8(invocation)
+             237:    203(ptr)   AccessChain 75(data) 125 104
+             238:   20(ivec4)   Load 237
+             239:      6(int)   Load 8(invocation)
+             240:      6(int)   CompositeExtract 238 0
+             241:      6(int)   SubgroupReadInvocationKHR 240 239
+             242:      6(int)   CompositeExtract 238 1
+             243:      6(int)   SubgroupReadInvocationKHR 242 239
+             244:      6(int)   CompositeExtract 238 2
+             245:      6(int)   SubgroupReadInvocationKHR 244 239
+             246:      6(int)   CompositeExtract 238 3
+             247:      6(int)   SubgroupReadInvocationKHR 246 239
+             248:   20(ivec4)   CompositeConstruct 241 243 245 247
+             249:    203(ptr)   AccessChain 75(data) 236 104
+                                Store 249 248
                                 Branch 67
-             236:               Label
-             237:      6(int)   Load 8(invocation)
-             238:     79(ptr)   AccessChain 75(data) 77 77 78
-             239:   68(float)   Load 238
-             240:   68(float)   SubgroupFirstInvocationKHR 239
-             241:     79(ptr)   AccessChain 75(data) 237 77 78
-                                Store 241 240
-             242:      6(int)   Load 8(invocation)
-             243:     88(ptr)   AccessChain 75(data) 86 77
-             244:   69(fvec4)   Load 243
-             245:   87(fvec2)   VectorShuffle 244 244 0 1
-             246:   87(fvec2)   SubgroupFirstInvocationKHR 245
-             247:     88(ptr)   AccessChain 75(data) 242 77
-             248:   69(fvec4)   Load 247
-             249:   69(fvec4)   VectorShuffle 248 246 4 5 2 3
-                                Store 247 249
-             250:      6(int)   Load 8(invocation)
-             251:     88(ptr)   AccessChain 75(data) 102 77
-             252:   69(fvec4)   Load 251
-             253:  103(fvec3)   VectorShuffle 252 252 0 1 2
-             254:  103(fvec3)   SubgroupFirstInvocationKHR 253
-             255:     88(ptr)   AccessChain 75(data) 250 77
-             256:   69(fvec4)   Load 255
-             257:   69(fvec4)   VectorShuffle 256 254 4 5 6 3
-                                Store 255 257
-             258:      6(int)   Load 8(invocation)
-             259:     88(ptr)   AccessChain 75(data) 119 77
-             260:   69(fvec4)   Load 259
-             261:   69(fvec4)   SubgroupFirstInvocationKHR 260
-             262:     88(ptr)   AccessChain 75(data) 258 77
-                                Store 262 261
-             263:      6(int)   Load 8(invocation)
-             264:    134(ptr)   AccessChain 75(data) 77 86 78
-             265:     70(int)   Load 264
-             266:     70(int)   SubgroupFirstInvocationKHR 265
-             267:    134(ptr)   AccessChain 75(data) 263 86 78
-                                Store 267 266
-             268:      6(int)   Load 8(invocation)
-             269:    142(ptr)   AccessChain 75(data) 86 86
-             270:   71(ivec4)   Load 269
-             271:  141(ivec2)   VectorShuffle 270 270 0 1
-             272:  141(ivec2)   SubgroupFirstInvocationKHR 271
-             273:    142(ptr)   AccessChain 75(data) 268 86
-             274:   71(ivec4)   Load 273
-             275:   71(ivec4)   VectorShuffle 274 272 4 5 2 3
-                                Store 273 275
-             276:      6(int)   Load 8(invocation)
-             277:    142(ptr)   AccessChain 75(data) 102 86
-             278:   71(ivec4)   Load 277
-             279:  156(ivec3)   VectorShuffle 278 278 0 1 2
-             280:  156(ivec3)   SubgroupFirstInvocationKHR 279
-             281:    142(ptr)   AccessChain 75(data) 276 86
-             282:   71(ivec4)   Load 281
-             283:   71(ivec4)   VectorShuffle 282 280 4 5 6 3
-                                Store 281 283
-             284:      6(int)   Load 8(invocation)
-             285:    142(ptr)   AccessChain 75(data) 119 86
-             286:   71(ivec4)   Load 285
-             287:   71(ivec4)   SubgroupFirstInvocationKHR 286
-             288:    142(ptr)   AccessChain 75(data) 284 86
-                                Store 288 287
-             289:      6(int)   Load 8(invocation)
-             290:    186(ptr)   AccessChain 75(data) 77 102 78
-             291:      6(int)   Load 290
-             292:      6(int)   SubgroupFirstInvocationKHR 291
-             293:    186(ptr)   AccessChain 75(data) 289 102 78
-                                Store 293 292
-             294:      6(int)   Load 8(invocation)
-             295:    193(ptr)   AccessChain 75(data) 86 102
-             296:   20(ivec4)   Load 295
-             297:   26(ivec2)   VectorShuffle 296 296 0 1
-             298:   26(ivec2)   SubgroupFirstInvocationKHR 297
-             299:    193(ptr)   AccessChain 75(data) 294 102
-             300:   20(ivec4)   Load 299
-             301:   20(ivec4)   VectorShuffle 300 298 4 5 2 3
-                                Store 299 301
-             302:      6(int)   Load 8(invocation)
-             303:    193(ptr)   AccessChain 75(data) 102 102
-             304:   20(ivec4)   Load 303
-             305:  207(ivec3)   VectorShuffle 304 304 0 1 2
-             306:  207(ivec3)   SubgroupFirstInvocationKHR 305
-             307:    193(ptr)   AccessChain 75(data) 302 102
-             308:   20(ivec4)   Load 307
-             309:   20(ivec4)   VectorShuffle 308 306 4 5 6 3
-                                Store 307 309
-             310:      6(int)   Load 8(invocation)
-             311:    193(ptr)   AccessChain 75(data) 119 102
-             312:   20(ivec4)   Load 311
-             313:   20(ivec4)   SubgroupFirstInvocationKHR 312
-             314:    193(ptr)   AccessChain 75(data) 310 102
-                                Store 314 313
+             250:               Label
+             251:      6(int)   Load 8(invocation)
+             252:     79(ptr)   AccessChain 75(data) 77 77 78
+             253:   68(float)   Load 252
+             254:   68(float)   SubgroupFirstInvocationKHR 253
+             255:     79(ptr)   AccessChain 75(data) 251 77 78
+                                Store 255 254
+             256:      6(int)   Load 8(invocation)
+             257:     88(ptr)   AccessChain 75(data) 86 77
+             258:   69(fvec4)   Load 257
+             259:   87(fvec2)   VectorShuffle 258 258 0 1
+             260:   68(float)   CompositeExtract 259 0
+             261:   68(float)   SubgroupFirstInvocationKHR 260
+             262:   68(float)   CompositeExtract 259 1
+             263:   68(float)   SubgroupFirstInvocationKHR 262
+             264:   87(fvec2)   CompositeConstruct 261 263
+             265:     79(ptr)   AccessChain 75(data) 256 77 78
+             266:   68(float)   CompositeExtract 264 0
+                                Store 265 266
+             267:     79(ptr)   AccessChain 75(data) 256 77 100
+             268:   68(float)   CompositeExtract 264 1
+                                Store 267 268
+             269:      6(int)   Load 8(invocation)
+             270:     88(ptr)   AccessChain 75(data) 104 77
+             271:   69(fvec4)   Load 270
+             272:  105(fvec3)   VectorShuffle 271 271 0 1 2
+             273:   68(float)   CompositeExtract 272 0
+             274:   68(float)   SubgroupFirstInvocationKHR 273
+             275:   68(float)   CompositeExtract 272 1
+             276:   68(float)   SubgroupFirstInvocationKHR 275
+             277:   68(float)   CompositeExtract 272 2
+             278:   68(float)   SubgroupFirstInvocationKHR 277
+             279:  105(fvec3)   CompositeConstruct 274 276 278
+             280:     79(ptr)   AccessChain 75(data) 269 77 78
+             281:   68(float)   CompositeExtract 279 0
+                                Store 280 281
+             282:     79(ptr)   AccessChain 75(data) 269 77 100
+             283:   68(float)   CompositeExtract 279 1
+                                Store 282 283
+             284:     79(ptr)   AccessChain 75(data) 269 77 121
+             285:   68(float)   CompositeExtract 279 2
+                                Store 284 285
+             286:      6(int)   Load 8(invocation)
+             287:     88(ptr)   AccessChain 75(data) 125 77
+             288:   69(fvec4)   Load 287
+             289:   68(float)   CompositeExtract 288 0
+             290:   68(float)   SubgroupFirstInvocationKHR 289
+             291:   68(float)   CompositeExtract 288 1
+             292:   68(float)   SubgroupFirstInvocationKHR 291
+             293:   68(float)   CompositeExtract 288 2
+             294:   68(float)   SubgroupFirstInvocationKHR 293
+             295:   68(float)   CompositeExtract 288 3
+             296:   68(float)   SubgroupFirstInvocationKHR 295
+             297:   69(fvec4)   CompositeConstruct 290 292 294 296
+             298:     88(ptr)   AccessChain 75(data) 286 77
+                                Store 298 297
+             299:      6(int)   Load 8(invocation)
+             300:    140(ptr)   AccessChain 75(data) 77 86 78
+             301:     70(int)   Load 300
+             302:     70(int)   SubgroupFirstInvocationKHR 301
+             303:    140(ptr)   AccessChain 75(data) 299 86 78
+                                Store 303 302
+             304:      6(int)   Load 8(invocation)
+             305:    148(ptr)   AccessChain 75(data) 86 86
+             306:   71(ivec4)   Load 305
+             307:  147(ivec2)   VectorShuffle 306 306 0 1
+             308:     70(int)   CompositeExtract 307 0
+             309:     70(int)   SubgroupFirstInvocationKHR 308
+             310:     70(int)   CompositeExtract 307 1
+             311:     70(int)   SubgroupFirstInvocationKHR 310
+             312:  147(ivec2)   CompositeConstruct 309 311
+             313:    140(ptr)   AccessChain 75(data) 304 86 78
+             314:     70(int)   CompositeExtract 312 0
+                                Store 313 314
+             315:    140(ptr)   AccessChain 75(data) 304 86 100
+             316:     70(int)   CompositeExtract 312 1
+                                Store 315 316
+             317:      6(int)   Load 8(invocation)
+             318:    148(ptr)   AccessChain 75(data) 104 86
+             319:   71(ivec4)   Load 318
+             320:  163(ivec3)   VectorShuffle 319 319 0 1 2
+             321:     70(int)   CompositeExtract 320 0
+             322:     70(int)   SubgroupFirstInvocationKHR 321
+             323:     70(int)   CompositeExtract 320 1
+             324:     70(int)   SubgroupFirstInvocationKHR 323
+             325:     70(int)   CompositeExtract 320 2
+             326:     70(int)   SubgroupFirstInvocationKHR 325
+             327:  163(ivec3)   CompositeConstruct 322 324 326
+             328:    140(ptr)   AccessChain 75(data) 317 86 78
+             329:     70(int)   CompositeExtract 327 0
+                                Store 328 329
+             330:    140(ptr)   AccessChain 75(data) 317 86 100
+             331:     70(int)   CompositeExtract 327 1
+                                Store 330 331
+             332:    140(ptr)   AccessChain 75(data) 317 86 121
+             333:     70(int)   CompositeExtract 327 2
+                                Store 332 333
+             334:      6(int)   Load 8(invocation)
+             335:    148(ptr)   AccessChain 75(data) 125 86
+             336:   71(ivec4)   Load 335
+             337:     70(int)   CompositeExtract 336 0
+             338:     70(int)   SubgroupFirstInvocationKHR 337
+             339:     70(int)   CompositeExtract 336 1
+             340:     70(int)   SubgroupFirstInvocationKHR 339
+             341:     70(int)   CompositeExtract 336 2
+             342:     70(int)   SubgroupFirstInvocationKHR 341
+             343:     70(int)   CompositeExtract 336 3
+             344:     70(int)   SubgroupFirstInvocationKHR 343
+             345:   71(ivec4)   CompositeConstruct 338 340 342 344
+             346:    148(ptr)   AccessChain 75(data) 334 86
+                                Store 346 345
+             347:      6(int)   Load 8(invocation)
+             348:    196(ptr)   AccessChain 75(data) 77 104 78
+             349:      6(int)   Load 348
+             350:      6(int)   SubgroupFirstInvocationKHR 349
+             351:    196(ptr)   AccessChain 75(data) 347 104 78
+                                Store 351 350
+             352:      6(int)   Load 8(invocation)
+             353:    203(ptr)   AccessChain 75(data) 86 104
+             354:   20(ivec4)   Load 353
+             355:   26(ivec2)   VectorShuffle 354 354 0 1
+             356:      6(int)   CompositeExtract 355 0
+             357:      6(int)   SubgroupFirstInvocationKHR 356
+             358:      6(int)   CompositeExtract 355 1
+             359:      6(int)   SubgroupFirstInvocationKHR 358
+             360:   26(ivec2)   CompositeConstruct 357 359
+             361:    196(ptr)   AccessChain 75(data) 352 104 78
+             362:      6(int)   CompositeExtract 360 0
+                                Store 361 362
+             363:    196(ptr)   AccessChain 75(data) 352 104 100
+             364:      6(int)   CompositeExtract 360 1
+                                Store 363 364
+             365:      6(int)   Load 8(invocation)
+             366:    203(ptr)   AccessChain 75(data) 104 104
+             367:   20(ivec4)   Load 366
+             368:  218(ivec3)   VectorShuffle 367 367 0 1 2
+             369:      6(int)   CompositeExtract 368 0
+             370:      6(int)   SubgroupFirstInvocationKHR 369
+             371:      6(int)   CompositeExtract 368 1
+             372:      6(int)   SubgroupFirstInvocationKHR 371
+             373:      6(int)   CompositeExtract 368 2
+             374:      6(int)   SubgroupFirstInvocationKHR 373
+             375:  218(ivec3)   CompositeConstruct 370 372 374
+             376:    196(ptr)   AccessChain 75(data) 365 104 78
+             377:      6(int)   CompositeExtract 375 0
+                                Store 376 377
+             378:    196(ptr)   AccessChain 75(data) 365 104 100
+             379:      6(int)   CompositeExtract 375 1
+                                Store 378 379
+             380:    196(ptr)   AccessChain 75(data) 365 104 121
+             381:      6(int)   CompositeExtract 375 2
+                                Store 380 381
+             382:      6(int)   Load 8(invocation)
+             383:    203(ptr)   AccessChain 75(data) 125 104
+             384:   20(ivec4)   Load 383
+             385:      6(int)   CompositeExtract 384 0
+             386:      6(int)   SubgroupFirstInvocationKHR 385
+             387:      6(int)   CompositeExtract 384 1
+             388:      6(int)   SubgroupFirstInvocationKHR 387
+             389:      6(int)   CompositeExtract 384 2
+             390:      6(int)   SubgroupFirstInvocationKHR 389
+             391:      6(int)   CompositeExtract 384 3
+             392:      6(int)   SubgroupFirstInvocationKHR 391
+             393:   20(ivec4)   CompositeConstruct 386 388 390 392
+             394:    203(ptr)   AccessChain 75(data) 382 104
+                                Store 394 393
                                 Branch 67
               67:             Label
                               Return
diff --git a/Test/baseResults/spv.subgroup.frag.out b/Test/baseResults/spv.subgroup.frag.out
index ad11586..a3e427f 100644
--- a/Test/baseResults/spv.subgroup.frag.out
+++ b/Test/baseResults/spv.subgroup.frag.out
@@ -24,6 +24,7 @@
                               Decorate 13(gl_SubgroupInvocationID) Flat
                               Decorate 13(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
                               Decorate 14 RelaxedPrecision
+                              Decorate 16 RelaxedPrecision
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
diff --git a/Test/baseResults/spv.subgroup.geom.out b/Test/baseResults/spv.subgroup.geom.out
index c866f8e..27f05b2 100644
--- a/Test/baseResults/spv.subgroup.geom.out
+++ b/Test/baseResults/spv.subgroup.geom.out
@@ -33,6 +33,7 @@
                               Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision
                               Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
                               Decorate 21 RelaxedPrecision
+                              Decorate 23 RelaxedPrecision
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
diff --git a/Test/baseResults/spv.subgroup.tesc.out b/Test/baseResults/spv.subgroup.tesc.out
index ed6b5c1..8322a4a 100644
--- a/Test/baseResults/spv.subgroup.tesc.out
+++ b/Test/baseResults/spv.subgroup.tesc.out
@@ -30,6 +30,7 @@
                               Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision
                               Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
                               Decorate 21 RelaxedPrecision
+                              Decorate 23 RelaxedPrecision
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
diff --git a/Test/baseResults/spv.subgroup.tese.out b/Test/baseResults/spv.subgroup.tese.out
index 70cdc96..360f98b 100644
--- a/Test/baseResults/spv.subgroup.tese.out
+++ b/Test/baseResults/spv.subgroup.tese.out
@@ -32,6 +32,7 @@
                               Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision
                               Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
                               Decorate 21 RelaxedPrecision
+                              Decorate 23 RelaxedPrecision
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
diff --git a/Test/baseResults/spv.subgroup.vert.out b/Test/baseResults/spv.subgroup.vert.out
index 34b090d..6de8a0a 100644
--- a/Test/baseResults/spv.subgroup.vert.out
+++ b/Test/baseResults/spv.subgroup.vert.out
@@ -29,6 +29,7 @@
                               Decorate 20(gl_SubgroupInvocationID) RelaxedPrecision
                               Decorate 20(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId
                               Decorate 21 RelaxedPrecision
+                              Decorate 23 RelaxedPrecision
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
diff --git a/Test/baseResults/spv.subgroupArithmetic.comp.out b/Test/baseResults/spv.subgroupArithmetic.comp.out
index e531f6f..87bfa31 100644
--- a/Test/baseResults/spv.subgroupArithmetic.comp.out
+++ b/Test/baseResults/spv.subgroupArithmetic.comp.out
@@ -1,7 +1,7 @@
 spv.subgroupArithmetic.comp
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 2085
+// Id's are bound by 2386
 
                               Capability Shader
                               Capability Float64
@@ -39,7 +39,7 @@
                               Decorate 24(Buffers) Block
                               Decorate 27(data) DescriptorSet 0
                               Decorate 27(data) Binding 0
-                              Decorate 2084 BuiltIn WorkgroupSize
+                              Decorate 2385 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -66,34 +66,35 @@
               38:     19(int) Constant 1
               39:             TypeVector 17(float) 2
               40:             TypePointer StorageBuffer 18(fvec4)
-              49:     19(int) Constant 2
-              50:             TypeVector 17(float) 3
-              59:     19(int) Constant 3
-              65:             TypePointer StorageBuffer 19(int)
-              71:             TypeVector 19(int) 2
-              72:             TypePointer StorageBuffer 20(ivec4)
-              81:             TypeVector 19(int) 3
-              95:             TypePointer StorageBuffer 6(int)
-             101:             TypeVector 6(int) 2
-             102:             TypePointer StorageBuffer 21(ivec4)
-             111:             TypeVector 6(int) 3
-             125:             TypePointer StorageBuffer 22(float64_t)
-             131:             TypeVector 22(float64_t) 2
-             132:             TypePointer StorageBuffer 23(f64vec4)
-             141:             TypeVector 22(float64_t) 3
-             521:             TypeBool
-             530:   71(ivec2) ConstantComposite 29 29
-             531:             TypeVector 521(bool) 2
-             534:   71(ivec2) ConstantComposite 38 38
-             543:   81(ivec3) ConstantComposite 29 29 29
-             544:             TypeVector 521(bool) 3
-             547:   81(ivec3) ConstantComposite 38 38 38
-             555:   20(ivec4) ConstantComposite 29 29 29 29
-             556:             TypeVector 521(bool) 4
-             559:   20(ivec4) ConstantComposite 38 38 38 38
-            2082:      6(int) Constant 8
-            2083:      6(int) Constant 1
-            2084:  111(ivec3) ConstantComposite 2082 2083 2083
+              47:      6(int) Constant 1
+              51:     19(int) Constant 2
+              52:             TypeVector 17(float) 3
+              61:      6(int) Constant 2
+              65:     19(int) Constant 3
+              71:             TypePointer StorageBuffer 19(int)
+              77:             TypeVector 19(int) 2
+              78:             TypePointer StorageBuffer 20(ivec4)
+              88:             TypeVector 19(int) 3
+             105:             TypePointer StorageBuffer 6(int)
+             111:             TypeVector 6(int) 2
+             112:             TypePointer StorageBuffer 21(ivec4)
+             122:             TypeVector 6(int) 3
+             139:             TypePointer StorageBuffer 22(float64_t)
+             145:             TypeVector 22(float64_t) 2
+             146:             TypePointer StorageBuffer 23(f64vec4)
+             156:             TypeVector 22(float64_t) 3
+             595:             TypeBool
+             604:   77(ivec2) ConstantComposite 29 29
+             605:             TypeVector 595(bool) 2
+             608:   77(ivec2) ConstantComposite 38 38
+             618:   88(ivec3) ConstantComposite 29 29 29
+             619:             TypeVector 595(bool) 3
+             622:   88(ivec3) ConstantComposite 38 38 38
+             633:   20(ivec4) ConstantComposite 29 29 29 29
+             634:             TypeVector 595(bool) 4
+             637:   20(ivec4) ConstantComposite 38 38 38 38
+            2384:      6(int) Constant 8
+            2385:  122(ivec3) ConstantComposite 2384 47 47
          4(main):           2 Function None 3
                5:             Label
    8(invocation):      7(ptr) Variable Function
@@ -113,2316 +114,2841 @@
               42:   18(fvec4) Load 41
               43:   39(fvec2) VectorShuffle 42 42 0 1
               44:   39(fvec2) GroupNonUniformFAdd 34 Reduce 43
-              45:     40(ptr) AccessChain 27(data) 37 29
-              46:   18(fvec4) Load 45
-              47:   18(fvec4) VectorShuffle 46 44 4 5 2 3
-                              Store 45 47
-              48:      6(int) Load 8(invocation)
-              51:     40(ptr) AccessChain 27(data) 49 29
-              52:   18(fvec4) Load 51
-              53:   50(fvec3) VectorShuffle 52 52 0 1 2
-              54:   50(fvec3) GroupNonUniformFAdd 34 Reduce 53
-              55:     40(ptr) AccessChain 27(data) 48 29
-              56:   18(fvec4) Load 55
-              57:   18(fvec4) VectorShuffle 56 54 4 5 6 3
-                              Store 55 57
-              58:      6(int) Load 8(invocation)
-              60:     40(ptr) AccessChain 27(data) 59 29
-              61:   18(fvec4) Load 60
-              62:   18(fvec4) GroupNonUniformFAdd 34 Reduce 61
-              63:     40(ptr) AccessChain 27(data) 58 29
-                              Store 63 62
+              45:     31(ptr) AccessChain 27(data) 37 29 30
+              46:   17(float) CompositeExtract 44 0
+                              Store 45 46
+              48:     31(ptr) AccessChain 27(data) 37 29 47
+              49:   17(float) CompositeExtract 44 1
+                              Store 48 49
+              50:      6(int) Load 8(invocation)
+              53:     40(ptr) AccessChain 27(data) 51 29
+              54:   18(fvec4) Load 53
+              55:   52(fvec3) VectorShuffle 54 54 0 1 2
+              56:   52(fvec3) GroupNonUniformFAdd 34 Reduce 55
+              57:     31(ptr) AccessChain 27(data) 50 29 30
+              58:   17(float) CompositeExtract 56 0
+                              Store 57 58
+              59:     31(ptr) AccessChain 27(data) 50 29 47
+              60:   17(float) CompositeExtract 56 1
+                              Store 59 60
+              62:     31(ptr) AccessChain 27(data) 50 29 61
+              63:   17(float) CompositeExtract 56 2
+                              Store 62 63
               64:      6(int) Load 8(invocation)
-              66:     65(ptr) AccessChain 27(data) 29 38 30
-              67:     19(int) Load 66
-              68:     19(int) GroupNonUniformIAdd 34 Reduce 67
-              69:     65(ptr) AccessChain 27(data) 64 38 30
+              66:     40(ptr) AccessChain 27(data) 65 29
+              67:   18(fvec4) Load 66
+              68:   18(fvec4) GroupNonUniformFAdd 34 Reduce 67
+              69:     40(ptr) AccessChain 27(data) 64 29
                               Store 69 68
               70:      6(int) Load 8(invocation)
-              73:     72(ptr) AccessChain 27(data) 38 38
-              74:   20(ivec4) Load 73
-              75:   71(ivec2) VectorShuffle 74 74 0 1
-              76:   71(ivec2) GroupNonUniformIAdd 34 Reduce 75
-              77:     72(ptr) AccessChain 27(data) 70 38
-              78:   20(ivec4) Load 77
-              79:   20(ivec4) VectorShuffle 78 76 4 5 2 3
-                              Store 77 79
-              80:      6(int) Load 8(invocation)
-              82:     72(ptr) AccessChain 27(data) 49 38
-              83:   20(ivec4) Load 82
-              84:   81(ivec3) VectorShuffle 83 83 0 1 2
-              85:   81(ivec3) GroupNonUniformIAdd 34 Reduce 84
-              86:     72(ptr) AccessChain 27(data) 80 38
-              87:   20(ivec4) Load 86
-              88:   20(ivec4) VectorShuffle 87 85 4 5 6 3
-                              Store 86 88
-              89:      6(int) Load 8(invocation)
-              90:     72(ptr) AccessChain 27(data) 59 38
-              91:   20(ivec4) Load 90
-              92:   20(ivec4) GroupNonUniformIAdd 34 Reduce 91
-              93:     72(ptr) AccessChain 27(data) 89 38
-                              Store 93 92
-              94:      6(int) Load 8(invocation)
-              96:     95(ptr) AccessChain 27(data) 29 49 30
-              97:      6(int) Load 96
-              98:      6(int) GroupNonUniformIAdd 34 Reduce 97
-              99:     95(ptr) AccessChain 27(data) 94 49 30
-                              Store 99 98
-             100:      6(int) Load 8(invocation)
-             103:    102(ptr) AccessChain 27(data) 38 49
-             104:   21(ivec4) Load 103
-             105:  101(ivec2) VectorShuffle 104 104 0 1
-             106:  101(ivec2) GroupNonUniformIAdd 34 Reduce 105
-             107:    102(ptr) AccessChain 27(data) 100 49
-             108:   21(ivec4) Load 107
-             109:   21(ivec4) VectorShuffle 108 106 4 5 2 3
-                              Store 107 109
+              72:     71(ptr) AccessChain 27(data) 29 38 30
+              73:     19(int) Load 72
+              74:     19(int) GroupNonUniformIAdd 34 Reduce 73
+              75:     71(ptr) AccessChain 27(data) 70 38 30
+                              Store 75 74
+              76:      6(int) Load 8(invocation)
+              79:     78(ptr) AccessChain 27(data) 38 38
+              80:   20(ivec4) Load 79
+              81:   77(ivec2) VectorShuffle 80 80 0 1
+              82:   77(ivec2) GroupNonUniformIAdd 34 Reduce 81
+              83:     71(ptr) AccessChain 27(data) 76 38 30
+              84:     19(int) CompositeExtract 82 0
+                              Store 83 84
+              85:     71(ptr) AccessChain 27(data) 76 38 47
+              86:     19(int) CompositeExtract 82 1
+                              Store 85 86
+              87:      6(int) Load 8(invocation)
+              89:     78(ptr) AccessChain 27(data) 51 38
+              90:   20(ivec4) Load 89
+              91:   88(ivec3) VectorShuffle 90 90 0 1 2
+              92:   88(ivec3) GroupNonUniformIAdd 34 Reduce 91
+              93:     71(ptr) AccessChain 27(data) 87 38 30
+              94:     19(int) CompositeExtract 92 0
+                              Store 93 94
+              95:     71(ptr) AccessChain 27(data) 87 38 47
+              96:     19(int) CompositeExtract 92 1
+                              Store 95 96
+              97:     71(ptr) AccessChain 27(data) 87 38 61
+              98:     19(int) CompositeExtract 92 2
+                              Store 97 98
+              99:      6(int) Load 8(invocation)
+             100:     78(ptr) AccessChain 27(data) 65 38
+             101:   20(ivec4) Load 100
+             102:   20(ivec4) GroupNonUniformIAdd 34 Reduce 101
+             103:     78(ptr) AccessChain 27(data) 99 38
+                              Store 103 102
+             104:      6(int) Load 8(invocation)
+             106:    105(ptr) AccessChain 27(data) 29 51 30
+             107:      6(int) Load 106
+             108:      6(int) GroupNonUniformIAdd 34 Reduce 107
+             109:    105(ptr) AccessChain 27(data) 104 51 30
+                              Store 109 108
              110:      6(int) Load 8(invocation)
-             112:    102(ptr) AccessChain 27(data) 49 49
-             113:   21(ivec4) Load 112
-             114:  111(ivec3) VectorShuffle 113 113 0 1 2
-             115:  111(ivec3) GroupNonUniformIAdd 34 Reduce 114
-             116:    102(ptr) AccessChain 27(data) 110 49
-             117:   21(ivec4) Load 116
-             118:   21(ivec4) VectorShuffle 117 115 4 5 6 3
-                              Store 116 118
-             119:      6(int) Load 8(invocation)
-             120:    102(ptr) AccessChain 27(data) 59 49
-             121:   21(ivec4) Load 120
-             122:   21(ivec4) GroupNonUniformIAdd 34 Reduce 121
-             123:    102(ptr) AccessChain 27(data) 119 49
-                              Store 123 122
-             124:      6(int) Load 8(invocation)
-             126:    125(ptr) AccessChain 27(data) 29 59 30
-             127:22(float64_t) Load 126
-             128:22(float64_t) GroupNonUniformFAdd 34 Reduce 127
-             129:    125(ptr) AccessChain 27(data) 124 59 30
-                              Store 129 128
-             130:      6(int) Load 8(invocation)
-             133:    132(ptr) AccessChain 27(data) 38 59
-             134: 23(f64vec4) Load 133
-             135:131(f64vec2) VectorShuffle 134 134 0 1
-             136:131(f64vec2) GroupNonUniformFAdd 34 Reduce 135
-             137:    132(ptr) AccessChain 27(data) 130 59
-             138: 23(f64vec4) Load 137
-             139: 23(f64vec4) VectorShuffle 138 136 4 5 2 3
-                              Store 137 139
-             140:      6(int) Load 8(invocation)
-             142:    132(ptr) AccessChain 27(data) 49 59
-             143: 23(f64vec4) Load 142
-             144:141(f64vec3) VectorShuffle 143 143 0 1 2
-             145:141(f64vec3) GroupNonUniformFAdd 34 Reduce 144
-             146:    132(ptr) AccessChain 27(data) 140 59
-             147: 23(f64vec4) Load 146
-             148: 23(f64vec4) VectorShuffle 147 145 4 5 6 3
-                              Store 146 148
-             149:      6(int) Load 8(invocation)
-             150:    132(ptr) AccessChain 27(data) 59 59
-             151: 23(f64vec4) Load 150
-             152: 23(f64vec4) GroupNonUniformFAdd 34 Reduce 151
-             153:    132(ptr) AccessChain 27(data) 149 59
-                              Store 153 152
-             154:      6(int) Load 8(invocation)
-             155:     31(ptr) AccessChain 27(data) 29 29 30
-             156:   17(float) Load 155
-             157:   17(float) GroupNonUniformFMul 34 Reduce 156
-             158:     31(ptr) AccessChain 27(data) 154 29 30
-                              Store 158 157
-             159:      6(int) Load 8(invocation)
-             160:     40(ptr) AccessChain 27(data) 38 29
-             161:   18(fvec4) Load 160
-             162:   39(fvec2) VectorShuffle 161 161 0 1
-             163:   39(fvec2) GroupNonUniformFMul 34 Reduce 162
-             164:     40(ptr) AccessChain 27(data) 159 29
-             165:   18(fvec4) Load 164
-             166:   18(fvec4) VectorShuffle 165 163 4 5 2 3
-                              Store 164 166
+             113:    112(ptr) AccessChain 27(data) 38 51
+             114:   21(ivec4) Load 113
+             115:  111(ivec2) VectorShuffle 114 114 0 1
+             116:  111(ivec2) GroupNonUniformIAdd 34 Reduce 115
+             117:    105(ptr) AccessChain 27(data) 110 51 30
+             118:      6(int) CompositeExtract 116 0
+                              Store 117 118
+             119:    105(ptr) AccessChain 27(data) 110 51 47
+             120:      6(int) CompositeExtract 116 1
+                              Store 119 120
+             121:      6(int) Load 8(invocation)
+             123:    112(ptr) AccessChain 27(data) 51 51
+             124:   21(ivec4) Load 123
+             125:  122(ivec3) VectorShuffle 124 124 0 1 2
+             126:  122(ivec3) GroupNonUniformIAdd 34 Reduce 125
+             127:    105(ptr) AccessChain 27(data) 121 51 30
+             128:      6(int) CompositeExtract 126 0
+                              Store 127 128
+             129:    105(ptr) AccessChain 27(data) 121 51 47
+             130:      6(int) CompositeExtract 126 1
+                              Store 129 130
+             131:    105(ptr) AccessChain 27(data) 121 51 61
+             132:      6(int) CompositeExtract 126 2
+                              Store 131 132
+             133:      6(int) Load 8(invocation)
+             134:    112(ptr) AccessChain 27(data) 65 51
+             135:   21(ivec4) Load 134
+             136:   21(ivec4) GroupNonUniformIAdd 34 Reduce 135
+             137:    112(ptr) AccessChain 27(data) 133 51
+                              Store 137 136
+             138:      6(int) Load 8(invocation)
+             140:    139(ptr) AccessChain 27(data) 29 65 30
+             141:22(float64_t) Load 140
+             142:22(float64_t) GroupNonUniformFAdd 34 Reduce 141
+             143:    139(ptr) AccessChain 27(data) 138 65 30
+                              Store 143 142
+             144:      6(int) Load 8(invocation)
+             147:    146(ptr) AccessChain 27(data) 38 65
+             148: 23(f64vec4) Load 147
+             149:145(f64vec2) VectorShuffle 148 148 0 1
+             150:145(f64vec2) GroupNonUniformFAdd 34 Reduce 149
+             151:    139(ptr) AccessChain 27(data) 144 65 30
+             152:22(float64_t) CompositeExtract 150 0
+                              Store 151 152
+             153:    139(ptr) AccessChain 27(data) 144 65 47
+             154:22(float64_t) CompositeExtract 150 1
+                              Store 153 154
+             155:      6(int) Load 8(invocation)
+             157:    146(ptr) AccessChain 27(data) 51 65
+             158: 23(f64vec4) Load 157
+             159:156(f64vec3) VectorShuffle 158 158 0 1 2
+             160:156(f64vec3) GroupNonUniformFAdd 34 Reduce 159
+             161:    139(ptr) AccessChain 27(data) 155 65 30
+             162:22(float64_t) CompositeExtract 160 0
+                              Store 161 162
+             163:    139(ptr) AccessChain 27(data) 155 65 47
+             164:22(float64_t) CompositeExtract 160 1
+                              Store 163 164
+             165:    139(ptr) AccessChain 27(data) 155 65 61
+             166:22(float64_t) CompositeExtract 160 2
+                              Store 165 166
              167:      6(int) Load 8(invocation)
-             168:     40(ptr) AccessChain 27(data) 49 29
-             169:   18(fvec4) Load 168
-             170:   50(fvec3) VectorShuffle 169 169 0 1 2
-             171:   50(fvec3) GroupNonUniformFMul 34 Reduce 170
-             172:     40(ptr) AccessChain 27(data) 167 29
-             173:   18(fvec4) Load 172
-             174:   18(fvec4) VectorShuffle 173 171 4 5 6 3
-                              Store 172 174
-             175:      6(int) Load 8(invocation)
-             176:     40(ptr) AccessChain 27(data) 59 29
-             177:   18(fvec4) Load 176
-             178:   18(fvec4) GroupNonUniformFMul 34 Reduce 177
-             179:     40(ptr) AccessChain 27(data) 175 29
-                              Store 179 178
-             180:      6(int) Load 8(invocation)
-             181:     65(ptr) AccessChain 27(data) 29 38 30
-             182:     19(int) Load 181
-             183:     19(int) GroupNonUniformIMul 34 Reduce 182
-             184:     65(ptr) AccessChain 27(data) 180 38 30
-                              Store 184 183
-             185:      6(int) Load 8(invocation)
-             186:     72(ptr) AccessChain 27(data) 38 38
-             187:   20(ivec4) Load 186
-             188:   71(ivec2) VectorShuffle 187 187 0 1
-             189:   71(ivec2) GroupNonUniformIMul 34 Reduce 188
-             190:     72(ptr) AccessChain 27(data) 185 38
-             191:   20(ivec4) Load 190
-             192:   20(ivec4) VectorShuffle 191 189 4 5 2 3
-                              Store 190 192
-             193:      6(int) Load 8(invocation)
-             194:     72(ptr) AccessChain 27(data) 49 38
-             195:   20(ivec4) Load 194
-             196:   81(ivec3) VectorShuffle 195 195 0 1 2
-             197:   81(ivec3) GroupNonUniformIMul 34 Reduce 196
-             198:     72(ptr) AccessChain 27(data) 193 38
-             199:   20(ivec4) Load 198
-             200:   20(ivec4) VectorShuffle 199 197 4 5 6 3
-                              Store 198 200
-             201:      6(int) Load 8(invocation)
-             202:     72(ptr) AccessChain 27(data) 59 38
-             203:   20(ivec4) Load 202
-             204:   20(ivec4) GroupNonUniformIMul 34 Reduce 203
-             205:     72(ptr) AccessChain 27(data) 201 38
-                              Store 205 204
-             206:      6(int) Load 8(invocation)
-             207:     95(ptr) AccessChain 27(data) 29 49 30
-             208:      6(int) Load 207
-             209:      6(int) GroupNonUniformIMul 34 Reduce 208
-             210:     95(ptr) AccessChain 27(data) 206 49 30
-                              Store 210 209
-             211:      6(int) Load 8(invocation)
-             212:    102(ptr) AccessChain 27(data) 38 49
-             213:   21(ivec4) Load 212
-             214:  101(ivec2) VectorShuffle 213 213 0 1
-             215:  101(ivec2) GroupNonUniformIMul 34 Reduce 214
-             216:    102(ptr) AccessChain 27(data) 211 49
-             217:   21(ivec4) Load 216
-             218:   21(ivec4) VectorShuffle 217 215 4 5 2 3
-                              Store 216 218
-             219:      6(int) Load 8(invocation)
-             220:    102(ptr) AccessChain 27(data) 49 49
-             221:   21(ivec4) Load 220
-             222:  111(ivec3) VectorShuffle 221 221 0 1 2
-             223:  111(ivec3) GroupNonUniformIMul 34 Reduce 222
-             224:    102(ptr) AccessChain 27(data) 219 49
-             225:   21(ivec4) Load 224
-             226:   21(ivec4) VectorShuffle 225 223 4 5 6 3
-                              Store 224 226
+             168:    146(ptr) AccessChain 27(data) 65 65
+             169: 23(f64vec4) Load 168
+             170: 23(f64vec4) GroupNonUniformFAdd 34 Reduce 169
+             171:    146(ptr) AccessChain 27(data) 167 65
+                              Store 171 170
+             172:      6(int) Load 8(invocation)
+             173:     31(ptr) AccessChain 27(data) 29 29 30
+             174:   17(float) Load 173
+             175:   17(float) GroupNonUniformFMul 34 Reduce 174
+             176:     31(ptr) AccessChain 27(data) 172 29 30
+                              Store 176 175
+             177:      6(int) Load 8(invocation)
+             178:     40(ptr) AccessChain 27(data) 38 29
+             179:   18(fvec4) Load 178
+             180:   39(fvec2) VectorShuffle 179 179 0 1
+             181:   39(fvec2) GroupNonUniformFMul 34 Reduce 180
+             182:     31(ptr) AccessChain 27(data) 177 29 30
+             183:   17(float) CompositeExtract 181 0
+                              Store 182 183
+             184:     31(ptr) AccessChain 27(data) 177 29 47
+             185:   17(float) CompositeExtract 181 1
+                              Store 184 185
+             186:      6(int) Load 8(invocation)
+             187:     40(ptr) AccessChain 27(data) 51 29
+             188:   18(fvec4) Load 187
+             189:   52(fvec3) VectorShuffle 188 188 0 1 2
+             190:   52(fvec3) GroupNonUniformFMul 34 Reduce 189
+             191:     31(ptr) AccessChain 27(data) 186 29 30
+             192:   17(float) CompositeExtract 190 0
+                              Store 191 192
+             193:     31(ptr) AccessChain 27(data) 186 29 47
+             194:   17(float) CompositeExtract 190 1
+                              Store 193 194
+             195:     31(ptr) AccessChain 27(data) 186 29 61
+             196:   17(float) CompositeExtract 190 2
+                              Store 195 196
+             197:      6(int) Load 8(invocation)
+             198:     40(ptr) AccessChain 27(data) 65 29
+             199:   18(fvec4) Load 198
+             200:   18(fvec4) GroupNonUniformFMul 34 Reduce 199
+             201:     40(ptr) AccessChain 27(data) 197 29
+                              Store 201 200
+             202:      6(int) Load 8(invocation)
+             203:     71(ptr) AccessChain 27(data) 29 38 30
+             204:     19(int) Load 203
+             205:     19(int) GroupNonUniformIMul 34 Reduce 204
+             206:     71(ptr) AccessChain 27(data) 202 38 30
+                              Store 206 205
+             207:      6(int) Load 8(invocation)
+             208:     78(ptr) AccessChain 27(data) 38 38
+             209:   20(ivec4) Load 208
+             210:   77(ivec2) VectorShuffle 209 209 0 1
+             211:   77(ivec2) GroupNonUniformIMul 34 Reduce 210
+             212:     71(ptr) AccessChain 27(data) 207 38 30
+             213:     19(int) CompositeExtract 211 0
+                              Store 212 213
+             214:     71(ptr) AccessChain 27(data) 207 38 47
+             215:     19(int) CompositeExtract 211 1
+                              Store 214 215
+             216:      6(int) Load 8(invocation)
+             217:     78(ptr) AccessChain 27(data) 51 38
+             218:   20(ivec4) Load 217
+             219:   88(ivec3) VectorShuffle 218 218 0 1 2
+             220:   88(ivec3) GroupNonUniformIMul 34 Reduce 219
+             221:     71(ptr) AccessChain 27(data) 216 38 30
+             222:     19(int) CompositeExtract 220 0
+                              Store 221 222
+             223:     71(ptr) AccessChain 27(data) 216 38 47
+             224:     19(int) CompositeExtract 220 1
+                              Store 223 224
+             225:     71(ptr) AccessChain 27(data) 216 38 61
+             226:     19(int) CompositeExtract 220 2
+                              Store 225 226
              227:      6(int) Load 8(invocation)
-             228:    102(ptr) AccessChain 27(data) 59 49
-             229:   21(ivec4) Load 228
-             230:   21(ivec4) GroupNonUniformIMul 34 Reduce 229
-             231:    102(ptr) AccessChain 27(data) 227 49
+             228:     78(ptr) AccessChain 27(data) 65 38
+             229:   20(ivec4) Load 228
+             230:   20(ivec4) GroupNonUniformIMul 34 Reduce 229
+             231:     78(ptr) AccessChain 27(data) 227 38
                               Store 231 230
              232:      6(int) Load 8(invocation)
-             233:    125(ptr) AccessChain 27(data) 29 59 30
-             234:22(float64_t) Load 233
-             235:22(float64_t) GroupNonUniformFMul 34 Reduce 234
-             236:    125(ptr) AccessChain 27(data) 232 59 30
+             233:    105(ptr) AccessChain 27(data) 29 51 30
+             234:      6(int) Load 233
+             235:      6(int) GroupNonUniformIMul 34 Reduce 234
+             236:    105(ptr) AccessChain 27(data) 232 51 30
                               Store 236 235
              237:      6(int) Load 8(invocation)
-             238:    132(ptr) AccessChain 27(data) 38 59
-             239: 23(f64vec4) Load 238
-             240:131(f64vec2) VectorShuffle 239 239 0 1
-             241:131(f64vec2) GroupNonUniformFMul 34 Reduce 240
-             242:    132(ptr) AccessChain 27(data) 237 59
-             243: 23(f64vec4) Load 242
-             244: 23(f64vec4) VectorShuffle 243 241 4 5 2 3
-                              Store 242 244
-             245:      6(int) Load 8(invocation)
-             246:    132(ptr) AccessChain 27(data) 49 59
-             247: 23(f64vec4) Load 246
-             248:141(f64vec3) VectorShuffle 247 247 0 1 2
-             249:141(f64vec3) GroupNonUniformFMul 34 Reduce 248
-             250:    132(ptr) AccessChain 27(data) 245 59
-             251: 23(f64vec4) Load 250
-             252: 23(f64vec4) VectorShuffle 251 249 4 5 6 3
-                              Store 250 252
-             253:      6(int) Load 8(invocation)
-             254:    132(ptr) AccessChain 27(data) 59 59
-             255: 23(f64vec4) Load 254
-             256: 23(f64vec4) GroupNonUniformFMul 34 Reduce 255
-             257:    132(ptr) AccessChain 27(data) 253 59
-                              Store 257 256
-             258:      6(int) Load 8(invocation)
-             259:     31(ptr) AccessChain 27(data) 29 29 30
-             260:   17(float) Load 259
-             261:   17(float) GroupNonUniformFMin 34 Reduce 260
-             262:     31(ptr) AccessChain 27(data) 258 29 30
-                              Store 262 261
-             263:      6(int) Load 8(invocation)
-             264:     40(ptr) AccessChain 27(data) 38 29
-             265:   18(fvec4) Load 264
-             266:   39(fvec2) VectorShuffle 265 265 0 1
-             267:   39(fvec2) GroupNonUniformFMin 34 Reduce 266
-             268:     40(ptr) AccessChain 27(data) 263 29
-             269:   18(fvec4) Load 268
-             270:   18(fvec4) VectorShuffle 269 267 4 5 2 3
-                              Store 268 270
-             271:      6(int) Load 8(invocation)
-             272:     40(ptr) AccessChain 27(data) 49 29
-             273:   18(fvec4) Load 272
-             274:   50(fvec3) VectorShuffle 273 273 0 1 2
-             275:   50(fvec3) GroupNonUniformFMin 34 Reduce 274
-             276:     40(ptr) AccessChain 27(data) 271 29
-             277:   18(fvec4) Load 276
-             278:   18(fvec4) VectorShuffle 277 275 4 5 6 3
-                              Store 276 278
-             279:      6(int) Load 8(invocation)
-             280:     40(ptr) AccessChain 27(data) 59 29
-             281:   18(fvec4) Load 280
-             282:   18(fvec4) GroupNonUniformFMin 34 Reduce 281
-             283:     40(ptr) AccessChain 27(data) 279 29
-                              Store 283 282
-             284:      6(int) Load 8(invocation)
-             285:     65(ptr) AccessChain 27(data) 29 38 30
-             286:     19(int) Load 285
-             287:     19(int) GroupNonUniformSMin 34 Reduce 286
-             288:     65(ptr) AccessChain 27(data) 284 38 30
-                              Store 288 287
-             289:      6(int) Load 8(invocation)
-             290:     72(ptr) AccessChain 27(data) 38 38
-             291:   20(ivec4) Load 290
-             292:   71(ivec2) VectorShuffle 291 291 0 1
-             293:   71(ivec2) GroupNonUniformSMin 34 Reduce 292
-             294:     72(ptr) AccessChain 27(data) 289 38
-             295:   20(ivec4) Load 294
-             296:   20(ivec4) VectorShuffle 295 293 4 5 2 3
-                              Store 294 296
+             238:    112(ptr) AccessChain 27(data) 38 51
+             239:   21(ivec4) Load 238
+             240:  111(ivec2) VectorShuffle 239 239 0 1
+             241:  111(ivec2) GroupNonUniformIMul 34 Reduce 240
+             242:    105(ptr) AccessChain 27(data) 237 51 30
+             243:      6(int) CompositeExtract 241 0
+                              Store 242 243
+             244:    105(ptr) AccessChain 27(data) 237 51 47
+             245:      6(int) CompositeExtract 241 1
+                              Store 244 245
+             246:      6(int) Load 8(invocation)
+             247:    112(ptr) AccessChain 27(data) 51 51
+             248:   21(ivec4) Load 247
+             249:  122(ivec3) VectorShuffle 248 248 0 1 2
+             250:  122(ivec3) GroupNonUniformIMul 34 Reduce 249
+             251:    105(ptr) AccessChain 27(data) 246 51 30
+             252:      6(int) CompositeExtract 250 0
+                              Store 251 252
+             253:    105(ptr) AccessChain 27(data) 246 51 47
+             254:      6(int) CompositeExtract 250 1
+                              Store 253 254
+             255:    105(ptr) AccessChain 27(data) 246 51 61
+             256:      6(int) CompositeExtract 250 2
+                              Store 255 256
+             257:      6(int) Load 8(invocation)
+             258:    112(ptr) AccessChain 27(data) 65 51
+             259:   21(ivec4) Load 258
+             260:   21(ivec4) GroupNonUniformIMul 34 Reduce 259
+             261:    112(ptr) AccessChain 27(data) 257 51
+                              Store 261 260
+             262:      6(int) Load 8(invocation)
+             263:    139(ptr) AccessChain 27(data) 29 65 30
+             264:22(float64_t) Load 263
+             265:22(float64_t) GroupNonUniformFMul 34 Reduce 264
+             266:    139(ptr) AccessChain 27(data) 262 65 30
+                              Store 266 265
+             267:      6(int) Load 8(invocation)
+             268:    146(ptr) AccessChain 27(data) 38 65
+             269: 23(f64vec4) Load 268
+             270:145(f64vec2) VectorShuffle 269 269 0 1
+             271:145(f64vec2) GroupNonUniformFMul 34 Reduce 270
+             272:    139(ptr) AccessChain 27(data) 267 65 30
+             273:22(float64_t) CompositeExtract 271 0
+                              Store 272 273
+             274:    139(ptr) AccessChain 27(data) 267 65 47
+             275:22(float64_t) CompositeExtract 271 1
+                              Store 274 275
+             276:      6(int) Load 8(invocation)
+             277:    146(ptr) AccessChain 27(data) 51 65
+             278: 23(f64vec4) Load 277
+             279:156(f64vec3) VectorShuffle 278 278 0 1 2
+             280:156(f64vec3) GroupNonUniformFMul 34 Reduce 279
+             281:    139(ptr) AccessChain 27(data) 276 65 30
+             282:22(float64_t) CompositeExtract 280 0
+                              Store 281 282
+             283:    139(ptr) AccessChain 27(data) 276 65 47
+             284:22(float64_t) CompositeExtract 280 1
+                              Store 283 284
+             285:    139(ptr) AccessChain 27(data) 276 65 61
+             286:22(float64_t) CompositeExtract 280 2
+                              Store 285 286
+             287:      6(int) Load 8(invocation)
+             288:    146(ptr) AccessChain 27(data) 65 65
+             289: 23(f64vec4) Load 288
+             290: 23(f64vec4) GroupNonUniformFMul 34 Reduce 289
+             291:    146(ptr) AccessChain 27(data) 287 65
+                              Store 291 290
+             292:      6(int) Load 8(invocation)
+             293:     31(ptr) AccessChain 27(data) 29 29 30
+             294:   17(float) Load 293
+             295:   17(float) GroupNonUniformFMin 34 Reduce 294
+             296:     31(ptr) AccessChain 27(data) 292 29 30
+                              Store 296 295
              297:      6(int) Load 8(invocation)
-             298:     72(ptr) AccessChain 27(data) 49 38
-             299:   20(ivec4) Load 298
-             300:   81(ivec3) VectorShuffle 299 299 0 1 2
-             301:   81(ivec3) GroupNonUniformSMin 34 Reduce 300
-             302:     72(ptr) AccessChain 27(data) 297 38
-             303:   20(ivec4) Load 302
-             304:   20(ivec4) VectorShuffle 303 301 4 5 6 3
-                              Store 302 304
-             305:      6(int) Load 8(invocation)
-             306:     72(ptr) AccessChain 27(data) 59 38
-             307:   20(ivec4) Load 306
-             308:   20(ivec4) GroupNonUniformSMin 34 Reduce 307
-             309:     72(ptr) AccessChain 27(data) 305 38
-                              Store 309 308
-             310:      6(int) Load 8(invocation)
-             311:     95(ptr) AccessChain 27(data) 29 49 30
-             312:      6(int) Load 311
-             313:      6(int) GroupNonUniformUMin 34 Reduce 312
-             314:     95(ptr) AccessChain 27(data) 310 49 30
-                              Store 314 313
-             315:      6(int) Load 8(invocation)
-             316:    102(ptr) AccessChain 27(data) 38 49
-             317:   21(ivec4) Load 316
-             318:  101(ivec2) VectorShuffle 317 317 0 1
-             319:  101(ivec2) GroupNonUniformUMin 34 Reduce 318
-             320:    102(ptr) AccessChain 27(data) 315 49
-             321:   21(ivec4) Load 320
-             322:   21(ivec4) VectorShuffle 321 319 4 5 2 3
-                              Store 320 322
-             323:      6(int) Load 8(invocation)
-             324:    102(ptr) AccessChain 27(data) 49 49
-             325:   21(ivec4) Load 324
-             326:  111(ivec3) VectorShuffle 325 325 0 1 2
-             327:  111(ivec3) GroupNonUniformUMin 34 Reduce 326
-             328:    102(ptr) AccessChain 27(data) 323 49
-             329:   21(ivec4) Load 328
-             330:   21(ivec4) VectorShuffle 329 327 4 5 6 3
-                              Store 328 330
-             331:      6(int) Load 8(invocation)
-             332:    102(ptr) AccessChain 27(data) 59 49
-             333:   21(ivec4) Load 332
-             334:   21(ivec4) GroupNonUniformUMin 34 Reduce 333
-             335:    102(ptr) AccessChain 27(data) 331 49
-                              Store 335 334
+             298:     40(ptr) AccessChain 27(data) 38 29
+             299:   18(fvec4) Load 298
+             300:   39(fvec2) VectorShuffle 299 299 0 1
+             301:   39(fvec2) GroupNonUniformFMin 34 Reduce 300
+             302:     31(ptr) AccessChain 27(data) 297 29 30
+             303:   17(float) CompositeExtract 301 0
+                              Store 302 303
+             304:     31(ptr) AccessChain 27(data) 297 29 47
+             305:   17(float) CompositeExtract 301 1
+                              Store 304 305
+             306:      6(int) Load 8(invocation)
+             307:     40(ptr) AccessChain 27(data) 51 29
+             308:   18(fvec4) Load 307
+             309:   52(fvec3) VectorShuffle 308 308 0 1 2
+             310:   52(fvec3) GroupNonUniformFMin 34 Reduce 309
+             311:     31(ptr) AccessChain 27(data) 306 29 30
+             312:   17(float) CompositeExtract 310 0
+                              Store 311 312
+             313:     31(ptr) AccessChain 27(data) 306 29 47
+             314:   17(float) CompositeExtract 310 1
+                              Store 313 314
+             315:     31(ptr) AccessChain 27(data) 306 29 61
+             316:   17(float) CompositeExtract 310 2
+                              Store 315 316
+             317:      6(int) Load 8(invocation)
+             318:     40(ptr) AccessChain 27(data) 65 29
+             319:   18(fvec4) Load 318
+             320:   18(fvec4) GroupNonUniformFMin 34 Reduce 319
+             321:     40(ptr) AccessChain 27(data) 317 29
+                              Store 321 320
+             322:      6(int) Load 8(invocation)
+             323:     71(ptr) AccessChain 27(data) 29 38 30
+             324:     19(int) Load 323
+             325:     19(int) GroupNonUniformSMin 34 Reduce 324
+             326:     71(ptr) AccessChain 27(data) 322 38 30
+                              Store 326 325
+             327:      6(int) Load 8(invocation)
+             328:     78(ptr) AccessChain 27(data) 38 38
+             329:   20(ivec4) Load 328
+             330:   77(ivec2) VectorShuffle 329 329 0 1
+             331:   77(ivec2) GroupNonUniformSMin 34 Reduce 330
+             332:     71(ptr) AccessChain 27(data) 327 38 30
+             333:     19(int) CompositeExtract 331 0
+                              Store 332 333
+             334:     71(ptr) AccessChain 27(data) 327 38 47
+             335:     19(int) CompositeExtract 331 1
+                              Store 334 335
              336:      6(int) Load 8(invocation)
-             337:    125(ptr) AccessChain 27(data) 29 59 30
-             338:22(float64_t) Load 337
-             339:22(float64_t) GroupNonUniformFMin 34 Reduce 338
-             340:    125(ptr) AccessChain 27(data) 336 59 30
-                              Store 340 339
-             341:      6(int) Load 8(invocation)
-             342:    132(ptr) AccessChain 27(data) 38 59
-             343: 23(f64vec4) Load 342
-             344:131(f64vec2) VectorShuffle 343 343 0 1
-             345:131(f64vec2) GroupNonUniformFMin 34 Reduce 344
-             346:    132(ptr) AccessChain 27(data) 341 59
-             347: 23(f64vec4) Load 346
-             348: 23(f64vec4) VectorShuffle 347 345 4 5 2 3
-                              Store 346 348
-             349:      6(int) Load 8(invocation)
-             350:    132(ptr) AccessChain 27(data) 49 59
-             351: 23(f64vec4) Load 350
-             352:141(f64vec3) VectorShuffle 351 351 0 1 2
-             353:141(f64vec3) GroupNonUniformFMin 34 Reduce 352
-             354:    132(ptr) AccessChain 27(data) 349 59
-             355: 23(f64vec4) Load 354
-             356: 23(f64vec4) VectorShuffle 355 353 4 5 6 3
-                              Store 354 356
+             337:     78(ptr) AccessChain 27(data) 51 38
+             338:   20(ivec4) Load 337
+             339:   88(ivec3) VectorShuffle 338 338 0 1 2
+             340:   88(ivec3) GroupNonUniformSMin 34 Reduce 339
+             341:     71(ptr) AccessChain 27(data) 336 38 30
+             342:     19(int) CompositeExtract 340 0
+                              Store 341 342
+             343:     71(ptr) AccessChain 27(data) 336 38 47
+             344:     19(int) CompositeExtract 340 1
+                              Store 343 344
+             345:     71(ptr) AccessChain 27(data) 336 38 61
+             346:     19(int) CompositeExtract 340 2
+                              Store 345 346
+             347:      6(int) Load 8(invocation)
+             348:     78(ptr) AccessChain 27(data) 65 38
+             349:   20(ivec4) Load 348
+             350:   20(ivec4) GroupNonUniformSMin 34 Reduce 349
+             351:     78(ptr) AccessChain 27(data) 347 38
+                              Store 351 350
+             352:      6(int) Load 8(invocation)
+             353:    105(ptr) AccessChain 27(data) 29 51 30
+             354:      6(int) Load 353
+             355:      6(int) GroupNonUniformUMin 34 Reduce 354
+             356:    105(ptr) AccessChain 27(data) 352 51 30
+                              Store 356 355
              357:      6(int) Load 8(invocation)
-             358:    132(ptr) AccessChain 27(data) 59 59
-             359: 23(f64vec4) Load 358
-             360: 23(f64vec4) GroupNonUniformFMin 34 Reduce 359
-             361:    132(ptr) AccessChain 27(data) 357 59
-                              Store 361 360
-             362:      6(int) Load 8(invocation)
-             363:     31(ptr) AccessChain 27(data) 29 29 30
-             364:   17(float) Load 363
-             365:   17(float) GroupNonUniformFMax 34 Reduce 364
-             366:     31(ptr) AccessChain 27(data) 362 29 30
-                              Store 366 365
-             367:      6(int) Load 8(invocation)
-             368:     40(ptr) AccessChain 27(data) 38 29
-             369:   18(fvec4) Load 368
-             370:   39(fvec2) VectorShuffle 369 369 0 1
-             371:   39(fvec2) GroupNonUniformFMax 34 Reduce 370
-             372:     40(ptr) AccessChain 27(data) 367 29
-             373:   18(fvec4) Load 372
-             374:   18(fvec4) VectorShuffle 373 371 4 5 2 3
-                              Store 372 374
-             375:      6(int) Load 8(invocation)
-             376:     40(ptr) AccessChain 27(data) 49 29
-             377:   18(fvec4) Load 376
-             378:   50(fvec3) VectorShuffle 377 377 0 1 2
-             379:   50(fvec3) GroupNonUniformFMax 34 Reduce 378
-             380:     40(ptr) AccessChain 27(data) 375 29
-             381:   18(fvec4) Load 380
-             382:   18(fvec4) VectorShuffle 381 379 4 5 6 3
-                              Store 380 382
-             383:      6(int) Load 8(invocation)
-             384:     40(ptr) AccessChain 27(data) 59 29
-             385:   18(fvec4) Load 384
-             386:   18(fvec4) GroupNonUniformFMax 34 Reduce 385
-             387:     40(ptr) AccessChain 27(data) 383 29
-                              Store 387 386
-             388:      6(int) Load 8(invocation)
-             389:     65(ptr) AccessChain 27(data) 29 38 30
-             390:     19(int) Load 389
-             391:     19(int) GroupNonUniformSMax 34 Reduce 390
-             392:     65(ptr) AccessChain 27(data) 388 38 30
-                              Store 392 391
-             393:      6(int) Load 8(invocation)
-             394:     72(ptr) AccessChain 27(data) 38 38
-             395:   20(ivec4) Load 394
-             396:   71(ivec2) VectorShuffle 395 395 0 1
-             397:   71(ivec2) GroupNonUniformSMax 34 Reduce 396
-             398:     72(ptr) AccessChain 27(data) 393 38
-             399:   20(ivec4) Load 398
-             400:   20(ivec4) VectorShuffle 399 397 4 5 2 3
-                              Store 398 400
-             401:      6(int) Load 8(invocation)
-             402:     72(ptr) AccessChain 27(data) 49 38
-             403:   20(ivec4) Load 402
-             404:   81(ivec3) VectorShuffle 403 403 0 1 2
-             405:   81(ivec3) GroupNonUniformSMax 34 Reduce 404
-             406:     72(ptr) AccessChain 27(data) 401 38
-             407:   20(ivec4) Load 406
-             408:   20(ivec4) VectorShuffle 407 405 4 5 6 3
-                              Store 406 408
-             409:      6(int) Load 8(invocation)
-             410:     72(ptr) AccessChain 27(data) 59 38
-             411:   20(ivec4) Load 410
-             412:   20(ivec4) GroupNonUniformSMax 34 Reduce 411
-             413:     72(ptr) AccessChain 27(data) 409 38
-                              Store 413 412
-             414:      6(int) Load 8(invocation)
-             415:     95(ptr) AccessChain 27(data) 29 49 30
-             416:      6(int) Load 415
-             417:      6(int) GroupNonUniformUMax 34 Reduce 416
-             418:     95(ptr) AccessChain 27(data) 414 49 30
-                              Store 418 417
-             419:      6(int) Load 8(invocation)
-             420:    102(ptr) AccessChain 27(data) 38 49
-             421:   21(ivec4) Load 420
-             422:  101(ivec2) VectorShuffle 421 421 0 1
-             423:  101(ivec2) GroupNonUniformUMax 34 Reduce 422
-             424:    102(ptr) AccessChain 27(data) 419 49
-             425:   21(ivec4) Load 424
-             426:   21(ivec4) VectorShuffle 425 423 4 5 2 3
-                              Store 424 426
-             427:      6(int) Load 8(invocation)
-             428:    102(ptr) AccessChain 27(data) 49 49
-             429:   21(ivec4) Load 428
-             430:  111(ivec3) VectorShuffle 429 429 0 1 2
-             431:  111(ivec3) GroupNonUniformUMax 34 Reduce 430
-             432:    102(ptr) AccessChain 27(data) 427 49
-             433:   21(ivec4) Load 432
-             434:   21(ivec4) VectorShuffle 433 431 4 5 6 3
-                              Store 432 434
-             435:      6(int) Load 8(invocation)
-             436:    102(ptr) AccessChain 27(data) 59 49
-             437:   21(ivec4) Load 436
-             438:   21(ivec4) GroupNonUniformUMax 34 Reduce 437
-             439:    102(ptr) AccessChain 27(data) 435 49
-                              Store 439 438
-             440:      6(int) Load 8(invocation)
-             441:    125(ptr) AccessChain 27(data) 29 59 30
-             442:22(float64_t) Load 441
-             443:22(float64_t) GroupNonUniformFMax 34 Reduce 442
-             444:    125(ptr) AccessChain 27(data) 440 59 30
-                              Store 444 443
-             445:      6(int) Load 8(invocation)
-             446:    132(ptr) AccessChain 27(data) 38 59
-             447: 23(f64vec4) Load 446
-             448:131(f64vec2) VectorShuffle 447 447 0 1
-             449:131(f64vec2) GroupNonUniformFMax 34 Reduce 448
-             450:    132(ptr) AccessChain 27(data) 445 59
-             451: 23(f64vec4) Load 450
-             452: 23(f64vec4) VectorShuffle 451 449 4 5 2 3
-                              Store 450 452
-             453:      6(int) Load 8(invocation)
-             454:    132(ptr) AccessChain 27(data) 49 59
-             455: 23(f64vec4) Load 454
-             456:141(f64vec3) VectorShuffle 455 455 0 1 2
-             457:141(f64vec3) GroupNonUniformFMax 34 Reduce 456
-             458:    132(ptr) AccessChain 27(data) 453 59
-             459: 23(f64vec4) Load 458
-             460: 23(f64vec4) VectorShuffle 459 457 4 5 6 3
-                              Store 458 460
-             461:      6(int) Load 8(invocation)
-             462:    132(ptr) AccessChain 27(data) 59 59
-             463: 23(f64vec4) Load 462
-             464: 23(f64vec4) GroupNonUniformFMax 34 Reduce 463
-             465:    132(ptr) AccessChain 27(data) 461 59
-                              Store 465 464
-             466:      6(int) Load 8(invocation)
-             467:     65(ptr) AccessChain 27(data) 29 38 30
-             468:     19(int) Load 467
-             469:     19(int) GroupNonUniformBitwiseAnd 34 Reduce 468
-             470:     65(ptr) AccessChain 27(data) 466 38 30
-                              Store 470 469
-             471:      6(int) Load 8(invocation)
-             472:     72(ptr) AccessChain 27(data) 38 38
-             473:   20(ivec4) Load 472
-             474:   71(ivec2) VectorShuffle 473 473 0 1
-             475:   71(ivec2) GroupNonUniformBitwiseAnd 34 Reduce 474
-             476:     72(ptr) AccessChain 27(data) 471 38
-             477:   20(ivec4) Load 476
-             478:   20(ivec4) VectorShuffle 477 475 4 5 2 3
-                              Store 476 478
-             479:      6(int) Load 8(invocation)
-             480:     72(ptr) AccessChain 27(data) 49 38
-             481:   20(ivec4) Load 480
-             482:   81(ivec3) VectorShuffle 481 481 0 1 2
-             483:   81(ivec3) GroupNonUniformBitwiseAnd 34 Reduce 482
-             484:     72(ptr) AccessChain 27(data) 479 38
-             485:   20(ivec4) Load 484
-             486:   20(ivec4) VectorShuffle 485 483 4 5 6 3
-                              Store 484 486
-             487:      6(int) Load 8(invocation)
-             488:     72(ptr) AccessChain 27(data) 59 38
-             489:   20(ivec4) Load 488
-             490:   20(ivec4) GroupNonUniformBitwiseAnd 34 Reduce 489
-             491:     72(ptr) AccessChain 27(data) 487 38
-                              Store 491 490
-             492:      6(int) Load 8(invocation)
-             493:     95(ptr) AccessChain 27(data) 29 49 30
-             494:      6(int) Load 493
-             495:      6(int) GroupNonUniformBitwiseAnd 34 Reduce 494
-             496:     95(ptr) AccessChain 27(data) 492 49 30
-                              Store 496 495
+             358:    112(ptr) AccessChain 27(data) 38 51
+             359:   21(ivec4) Load 358
+             360:  111(ivec2) VectorShuffle 359 359 0 1
+             361:  111(ivec2) GroupNonUniformUMin 34 Reduce 360
+             362:    105(ptr) AccessChain 27(data) 357 51 30
+             363:      6(int) CompositeExtract 361 0
+                              Store 362 363
+             364:    105(ptr) AccessChain 27(data) 357 51 47
+             365:      6(int) CompositeExtract 361 1
+                              Store 364 365
+             366:      6(int) Load 8(invocation)
+             367:    112(ptr) AccessChain 27(data) 51 51
+             368:   21(ivec4) Load 367
+             369:  122(ivec3) VectorShuffle 368 368 0 1 2
+             370:  122(ivec3) GroupNonUniformUMin 34 Reduce 369
+             371:    105(ptr) AccessChain 27(data) 366 51 30
+             372:      6(int) CompositeExtract 370 0
+                              Store 371 372
+             373:    105(ptr) AccessChain 27(data) 366 51 47
+             374:      6(int) CompositeExtract 370 1
+                              Store 373 374
+             375:    105(ptr) AccessChain 27(data) 366 51 61
+             376:      6(int) CompositeExtract 370 2
+                              Store 375 376
+             377:      6(int) Load 8(invocation)
+             378:    112(ptr) AccessChain 27(data) 65 51
+             379:   21(ivec4) Load 378
+             380:   21(ivec4) GroupNonUniformUMin 34 Reduce 379
+             381:    112(ptr) AccessChain 27(data) 377 51
+                              Store 381 380
+             382:      6(int) Load 8(invocation)
+             383:    139(ptr) AccessChain 27(data) 29 65 30
+             384:22(float64_t) Load 383
+             385:22(float64_t) GroupNonUniformFMin 34 Reduce 384
+             386:    139(ptr) AccessChain 27(data) 382 65 30
+                              Store 386 385
+             387:      6(int) Load 8(invocation)
+             388:    146(ptr) AccessChain 27(data) 38 65
+             389: 23(f64vec4) Load 388
+             390:145(f64vec2) VectorShuffle 389 389 0 1
+             391:145(f64vec2) GroupNonUniformFMin 34 Reduce 390
+             392:    139(ptr) AccessChain 27(data) 387 65 30
+             393:22(float64_t) CompositeExtract 391 0
+                              Store 392 393
+             394:    139(ptr) AccessChain 27(data) 387 65 47
+             395:22(float64_t) CompositeExtract 391 1
+                              Store 394 395
+             396:      6(int) Load 8(invocation)
+             397:    146(ptr) AccessChain 27(data) 51 65
+             398: 23(f64vec4) Load 397
+             399:156(f64vec3) VectorShuffle 398 398 0 1 2
+             400:156(f64vec3) GroupNonUniformFMin 34 Reduce 399
+             401:    139(ptr) AccessChain 27(data) 396 65 30
+             402:22(float64_t) CompositeExtract 400 0
+                              Store 401 402
+             403:    139(ptr) AccessChain 27(data) 396 65 47
+             404:22(float64_t) CompositeExtract 400 1
+                              Store 403 404
+             405:    139(ptr) AccessChain 27(data) 396 65 61
+             406:22(float64_t) CompositeExtract 400 2
+                              Store 405 406
+             407:      6(int) Load 8(invocation)
+             408:    146(ptr) AccessChain 27(data) 65 65
+             409: 23(f64vec4) Load 408
+             410: 23(f64vec4) GroupNonUniformFMin 34 Reduce 409
+             411:    146(ptr) AccessChain 27(data) 407 65
+                              Store 411 410
+             412:      6(int) Load 8(invocation)
+             413:     31(ptr) AccessChain 27(data) 29 29 30
+             414:   17(float) Load 413
+             415:   17(float) GroupNonUniformFMax 34 Reduce 414
+             416:     31(ptr) AccessChain 27(data) 412 29 30
+                              Store 416 415
+             417:      6(int) Load 8(invocation)
+             418:     40(ptr) AccessChain 27(data) 38 29
+             419:   18(fvec4) Load 418
+             420:   39(fvec2) VectorShuffle 419 419 0 1
+             421:   39(fvec2) GroupNonUniformFMax 34 Reduce 420
+             422:     31(ptr) AccessChain 27(data) 417 29 30
+             423:   17(float) CompositeExtract 421 0
+                              Store 422 423
+             424:     31(ptr) AccessChain 27(data) 417 29 47
+             425:   17(float) CompositeExtract 421 1
+                              Store 424 425
+             426:      6(int) Load 8(invocation)
+             427:     40(ptr) AccessChain 27(data) 51 29
+             428:   18(fvec4) Load 427
+             429:   52(fvec3) VectorShuffle 428 428 0 1 2
+             430:   52(fvec3) GroupNonUniformFMax 34 Reduce 429
+             431:     31(ptr) AccessChain 27(data) 426 29 30
+             432:   17(float) CompositeExtract 430 0
+                              Store 431 432
+             433:     31(ptr) AccessChain 27(data) 426 29 47
+             434:   17(float) CompositeExtract 430 1
+                              Store 433 434
+             435:     31(ptr) AccessChain 27(data) 426 29 61
+             436:   17(float) CompositeExtract 430 2
+                              Store 435 436
+             437:      6(int) Load 8(invocation)
+             438:     40(ptr) AccessChain 27(data) 65 29
+             439:   18(fvec4) Load 438
+             440:   18(fvec4) GroupNonUniformFMax 34 Reduce 439
+             441:     40(ptr) AccessChain 27(data) 437 29
+                              Store 441 440
+             442:      6(int) Load 8(invocation)
+             443:     71(ptr) AccessChain 27(data) 29 38 30
+             444:     19(int) Load 443
+             445:     19(int) GroupNonUniformSMax 34 Reduce 444
+             446:     71(ptr) AccessChain 27(data) 442 38 30
+                              Store 446 445
+             447:      6(int) Load 8(invocation)
+             448:     78(ptr) AccessChain 27(data) 38 38
+             449:   20(ivec4) Load 448
+             450:   77(ivec2) VectorShuffle 449 449 0 1
+             451:   77(ivec2) GroupNonUniformSMax 34 Reduce 450
+             452:     71(ptr) AccessChain 27(data) 447 38 30
+             453:     19(int) CompositeExtract 451 0
+                              Store 452 453
+             454:     71(ptr) AccessChain 27(data) 447 38 47
+             455:     19(int) CompositeExtract 451 1
+                              Store 454 455
+             456:      6(int) Load 8(invocation)
+             457:     78(ptr) AccessChain 27(data) 51 38
+             458:   20(ivec4) Load 457
+             459:   88(ivec3) VectorShuffle 458 458 0 1 2
+             460:   88(ivec3) GroupNonUniformSMax 34 Reduce 459
+             461:     71(ptr) AccessChain 27(data) 456 38 30
+             462:     19(int) CompositeExtract 460 0
+                              Store 461 462
+             463:     71(ptr) AccessChain 27(data) 456 38 47
+             464:     19(int) CompositeExtract 460 1
+                              Store 463 464
+             465:     71(ptr) AccessChain 27(data) 456 38 61
+             466:     19(int) CompositeExtract 460 2
+                              Store 465 466
+             467:      6(int) Load 8(invocation)
+             468:     78(ptr) AccessChain 27(data) 65 38
+             469:   20(ivec4) Load 468
+             470:   20(ivec4) GroupNonUniformSMax 34 Reduce 469
+             471:     78(ptr) AccessChain 27(data) 467 38
+                              Store 471 470
+             472:      6(int) Load 8(invocation)
+             473:    105(ptr) AccessChain 27(data) 29 51 30
+             474:      6(int) Load 473
+             475:      6(int) GroupNonUniformUMax 34 Reduce 474
+             476:    105(ptr) AccessChain 27(data) 472 51 30
+                              Store 476 475
+             477:      6(int) Load 8(invocation)
+             478:    112(ptr) AccessChain 27(data) 38 51
+             479:   21(ivec4) Load 478
+             480:  111(ivec2) VectorShuffle 479 479 0 1
+             481:  111(ivec2) GroupNonUniformUMax 34 Reduce 480
+             482:    105(ptr) AccessChain 27(data) 477 51 30
+             483:      6(int) CompositeExtract 481 0
+                              Store 482 483
+             484:    105(ptr) AccessChain 27(data) 477 51 47
+             485:      6(int) CompositeExtract 481 1
+                              Store 484 485
+             486:      6(int) Load 8(invocation)
+             487:    112(ptr) AccessChain 27(data) 51 51
+             488:   21(ivec4) Load 487
+             489:  122(ivec3) VectorShuffle 488 488 0 1 2
+             490:  122(ivec3) GroupNonUniformUMax 34 Reduce 489
+             491:    105(ptr) AccessChain 27(data) 486 51 30
+             492:      6(int) CompositeExtract 490 0
+                              Store 491 492
+             493:    105(ptr) AccessChain 27(data) 486 51 47
+             494:      6(int) CompositeExtract 490 1
+                              Store 493 494
+             495:    105(ptr) AccessChain 27(data) 486 51 61
+             496:      6(int) CompositeExtract 490 2
+                              Store 495 496
              497:      6(int) Load 8(invocation)
-             498:    102(ptr) AccessChain 27(data) 38 49
+             498:    112(ptr) AccessChain 27(data) 65 51
              499:   21(ivec4) Load 498
-             500:  101(ivec2) VectorShuffle 499 499 0 1
-             501:  101(ivec2) GroupNonUniformBitwiseAnd 34 Reduce 500
-             502:    102(ptr) AccessChain 27(data) 497 49
-             503:   21(ivec4) Load 502
-             504:   21(ivec4) VectorShuffle 503 501 4 5 2 3
-                              Store 502 504
-             505:      6(int) Load 8(invocation)
-             506:    102(ptr) AccessChain 27(data) 49 49
-             507:   21(ivec4) Load 506
-             508:  111(ivec3) VectorShuffle 507 507 0 1 2
-             509:  111(ivec3) GroupNonUniformBitwiseAnd 34 Reduce 508
-             510:    102(ptr) AccessChain 27(data) 505 49
-             511:   21(ivec4) Load 510
-             512:   21(ivec4) VectorShuffle 511 509 4 5 6 3
-                              Store 510 512
-             513:      6(int) Load 8(invocation)
-             514:    102(ptr) AccessChain 27(data) 59 49
-             515:   21(ivec4) Load 514
-             516:   21(ivec4) GroupNonUniformBitwiseAnd 34 Reduce 515
-             517:    102(ptr) AccessChain 27(data) 513 49
-                              Store 517 516
-             518:      6(int) Load 8(invocation)
-             519:     65(ptr) AccessChain 27(data) 29 38 30
-             520:     19(int) Load 519
-             522:   521(bool) SLessThan 520 29
-             523:   521(bool) GroupNonUniformLogicalAnd 34 Reduce 522
-             524:     19(int) Select 523 38 29
-             525:     65(ptr) AccessChain 27(data) 518 38 30
-                              Store 525 524
-             526:      6(int) Load 8(invocation)
-             527:     72(ptr) AccessChain 27(data) 38 38
-             528:   20(ivec4) Load 527
-             529:   71(ivec2) VectorShuffle 528 528 0 1
-             532:  531(bvec2) SLessThan 529 530
-             533:  531(bvec2) GroupNonUniformLogicalAnd 34 Reduce 532
-             535:   71(ivec2) Select 533 534 530
-             536:     72(ptr) AccessChain 27(data) 526 38
-             537:   20(ivec4) Load 536
-             538:   20(ivec4) VectorShuffle 537 535 4 5 2 3
-                              Store 536 538
-             539:      6(int) Load 8(invocation)
-             540:     72(ptr) AccessChain 27(data) 38 38
-             541:   20(ivec4) Load 540
-             542:   81(ivec3) VectorShuffle 541 541 0 1 2
-             545:  544(bvec3) SLessThan 542 543
-             546:  544(bvec3) GroupNonUniformLogicalAnd 34 Reduce 545
-             548:   81(ivec3) Select 546 547 543
-             549:     72(ptr) AccessChain 27(data) 539 38
-             550:   20(ivec4) Load 549
-             551:   20(ivec4) VectorShuffle 550 548 4 5 6 3
-                              Store 549 551
-             552:      6(int) Load 8(invocation)
-             553:     72(ptr) AccessChain 27(data) 38 38
-             554:   20(ivec4) Load 553
-             557:  556(bvec4) SLessThan 554 555
-             558:  556(bvec4) GroupNonUniformLogicalAnd 34 Reduce 557
-             560:   20(ivec4) Select 558 559 555
-             561:     72(ptr) AccessChain 27(data) 552 38
+             500:   21(ivec4) GroupNonUniformUMax 34 Reduce 499
+             501:    112(ptr) AccessChain 27(data) 497 51
+                              Store 501 500
+             502:      6(int) Load 8(invocation)
+             503:    139(ptr) AccessChain 27(data) 29 65 30
+             504:22(float64_t) Load 503
+             505:22(float64_t) GroupNonUniformFMax 34 Reduce 504
+             506:    139(ptr) AccessChain 27(data) 502 65 30
+                              Store 506 505
+             507:      6(int) Load 8(invocation)
+             508:    146(ptr) AccessChain 27(data) 38 65
+             509: 23(f64vec4) Load 508
+             510:145(f64vec2) VectorShuffle 509 509 0 1
+             511:145(f64vec2) GroupNonUniformFMax 34 Reduce 510
+             512:    139(ptr) AccessChain 27(data) 507 65 30
+             513:22(float64_t) CompositeExtract 511 0
+                              Store 512 513
+             514:    139(ptr) AccessChain 27(data) 507 65 47
+             515:22(float64_t) CompositeExtract 511 1
+                              Store 514 515
+             516:      6(int) Load 8(invocation)
+             517:    146(ptr) AccessChain 27(data) 51 65
+             518: 23(f64vec4) Load 517
+             519:156(f64vec3) VectorShuffle 518 518 0 1 2
+             520:156(f64vec3) GroupNonUniformFMax 34 Reduce 519
+             521:    139(ptr) AccessChain 27(data) 516 65 30
+             522:22(float64_t) CompositeExtract 520 0
+                              Store 521 522
+             523:    139(ptr) AccessChain 27(data) 516 65 47
+             524:22(float64_t) CompositeExtract 520 1
+                              Store 523 524
+             525:    139(ptr) AccessChain 27(data) 516 65 61
+             526:22(float64_t) CompositeExtract 520 2
+                              Store 525 526
+             527:      6(int) Load 8(invocation)
+             528:    146(ptr) AccessChain 27(data) 65 65
+             529: 23(f64vec4) Load 528
+             530: 23(f64vec4) GroupNonUniformFMax 34 Reduce 529
+             531:    146(ptr) AccessChain 27(data) 527 65
+                              Store 531 530
+             532:      6(int) Load 8(invocation)
+             533:     71(ptr) AccessChain 27(data) 29 38 30
+             534:     19(int) Load 533
+             535:     19(int) GroupNonUniformBitwiseAnd 34 Reduce 534
+             536:     71(ptr) AccessChain 27(data) 532 38 30
+                              Store 536 535
+             537:      6(int) Load 8(invocation)
+             538:     78(ptr) AccessChain 27(data) 38 38
+             539:   20(ivec4) Load 538
+             540:   77(ivec2) VectorShuffle 539 539 0 1
+             541:   77(ivec2) GroupNonUniformBitwiseAnd 34 Reduce 540
+             542:     71(ptr) AccessChain 27(data) 537 38 30
+             543:     19(int) CompositeExtract 541 0
+                              Store 542 543
+             544:     71(ptr) AccessChain 27(data) 537 38 47
+             545:     19(int) CompositeExtract 541 1
+                              Store 544 545
+             546:      6(int) Load 8(invocation)
+             547:     78(ptr) AccessChain 27(data) 51 38
+             548:   20(ivec4) Load 547
+             549:   88(ivec3) VectorShuffle 548 548 0 1 2
+             550:   88(ivec3) GroupNonUniformBitwiseAnd 34 Reduce 549
+             551:     71(ptr) AccessChain 27(data) 546 38 30
+             552:     19(int) CompositeExtract 550 0
+                              Store 551 552
+             553:     71(ptr) AccessChain 27(data) 546 38 47
+             554:     19(int) CompositeExtract 550 1
+                              Store 553 554
+             555:     71(ptr) AccessChain 27(data) 546 38 61
+             556:     19(int) CompositeExtract 550 2
+                              Store 555 556
+             557:      6(int) Load 8(invocation)
+             558:     78(ptr) AccessChain 27(data) 65 38
+             559:   20(ivec4) Load 558
+             560:   20(ivec4) GroupNonUniformBitwiseAnd 34 Reduce 559
+             561:     78(ptr) AccessChain 27(data) 557 38
                               Store 561 560
              562:      6(int) Load 8(invocation)
-             563:     65(ptr) AccessChain 27(data) 29 38 30
-             564:     19(int) Load 563
-             565:     19(int) GroupNonUniformBitwiseOr 34 Reduce 564
-             566:     65(ptr) AccessChain 27(data) 562 38 30
+             563:    105(ptr) AccessChain 27(data) 29 51 30
+             564:      6(int) Load 563
+             565:      6(int) GroupNonUniformBitwiseAnd 34 Reduce 564
+             566:    105(ptr) AccessChain 27(data) 562 51 30
                               Store 566 565
              567:      6(int) Load 8(invocation)
-             568:     72(ptr) AccessChain 27(data) 38 38
-             569:   20(ivec4) Load 568
-             570:   71(ivec2) VectorShuffle 569 569 0 1
-             571:   71(ivec2) GroupNonUniformBitwiseOr 34 Reduce 570
-             572:     72(ptr) AccessChain 27(data) 567 38
-             573:   20(ivec4) Load 572
-             574:   20(ivec4) VectorShuffle 573 571 4 5 2 3
-                              Store 572 574
-             575:      6(int) Load 8(invocation)
-             576:     72(ptr) AccessChain 27(data) 49 38
-             577:   20(ivec4) Load 576
-             578:   81(ivec3) VectorShuffle 577 577 0 1 2
-             579:   81(ivec3) GroupNonUniformBitwiseOr 34 Reduce 578
-             580:     72(ptr) AccessChain 27(data) 575 38
-             581:   20(ivec4) Load 580
-             582:   20(ivec4) VectorShuffle 581 579 4 5 6 3
-                              Store 580 582
-             583:      6(int) Load 8(invocation)
-             584:     72(ptr) AccessChain 27(data) 59 38
-             585:   20(ivec4) Load 584
-             586:   20(ivec4) GroupNonUniformBitwiseOr 34 Reduce 585
-             587:     72(ptr) AccessChain 27(data) 583 38
-                              Store 587 586
-             588:      6(int) Load 8(invocation)
-             589:     95(ptr) AccessChain 27(data) 29 49 30
-             590:      6(int) Load 589
-             591:      6(int) GroupNonUniformBitwiseOr 34 Reduce 590
-             592:     95(ptr) AccessChain 27(data) 588 49 30
-                              Store 592 591
-             593:      6(int) Load 8(invocation)
-             594:    102(ptr) AccessChain 27(data) 38 49
-             595:   21(ivec4) Load 594
-             596:  101(ivec2) VectorShuffle 595 595 0 1
-             597:  101(ivec2) GroupNonUniformBitwiseOr 34 Reduce 596
-             598:    102(ptr) AccessChain 27(data) 593 49
-             599:   21(ivec4) Load 598
-             600:   21(ivec4) VectorShuffle 599 597 4 5 2 3
-                              Store 598 600
-             601:      6(int) Load 8(invocation)
-             602:    102(ptr) AccessChain 27(data) 49 49
-             603:   21(ivec4) Load 602
-             604:  111(ivec3) VectorShuffle 603 603 0 1 2
-             605:  111(ivec3) GroupNonUniformBitwiseOr 34 Reduce 604
-             606:    102(ptr) AccessChain 27(data) 601 49
-             607:   21(ivec4) Load 606
-             608:   21(ivec4) VectorShuffle 607 605 4 5 6 3
-                              Store 606 608
-             609:      6(int) Load 8(invocation)
-             610:    102(ptr) AccessChain 27(data) 59 49
-             611:   21(ivec4) Load 610
-             612:   21(ivec4) GroupNonUniformBitwiseOr 34 Reduce 611
-             613:    102(ptr) AccessChain 27(data) 609 49
-                              Store 613 612
+             568:    112(ptr) AccessChain 27(data) 38 51
+             569:   21(ivec4) Load 568
+             570:  111(ivec2) VectorShuffle 569 569 0 1
+             571:  111(ivec2) GroupNonUniformBitwiseAnd 34 Reduce 570
+             572:    105(ptr) AccessChain 27(data) 567 51 30
+             573:      6(int) CompositeExtract 571 0
+                              Store 572 573
+             574:    105(ptr) AccessChain 27(data) 567 51 47
+             575:      6(int) CompositeExtract 571 1
+                              Store 574 575
+             576:      6(int) Load 8(invocation)
+             577:    112(ptr) AccessChain 27(data) 51 51
+             578:   21(ivec4) Load 577
+             579:  122(ivec3) VectorShuffle 578 578 0 1 2
+             580:  122(ivec3) GroupNonUniformBitwiseAnd 34 Reduce 579
+             581:    105(ptr) AccessChain 27(data) 576 51 30
+             582:      6(int) CompositeExtract 580 0
+                              Store 581 582
+             583:    105(ptr) AccessChain 27(data) 576 51 47
+             584:      6(int) CompositeExtract 580 1
+                              Store 583 584
+             585:    105(ptr) AccessChain 27(data) 576 51 61
+             586:      6(int) CompositeExtract 580 2
+                              Store 585 586
+             587:      6(int) Load 8(invocation)
+             588:    112(ptr) AccessChain 27(data) 65 51
+             589:   21(ivec4) Load 588
+             590:   21(ivec4) GroupNonUniformBitwiseAnd 34 Reduce 589
+             591:    112(ptr) AccessChain 27(data) 587 51
+                              Store 591 590
+             592:      6(int) Load 8(invocation)
+             593:     71(ptr) AccessChain 27(data) 29 38 30
+             594:     19(int) Load 593
+             596:   595(bool) SLessThan 594 29
+             597:   595(bool) GroupNonUniformLogicalAnd 34 Reduce 596
+             598:     19(int) Select 597 38 29
+             599:     71(ptr) AccessChain 27(data) 592 38 30
+                              Store 599 598
+             600:      6(int) Load 8(invocation)
+             601:     78(ptr) AccessChain 27(data) 38 38
+             602:   20(ivec4) Load 601
+             603:   77(ivec2) VectorShuffle 602 602 0 1
+             606:  605(bvec2) SLessThan 603 604
+             607:  605(bvec2) GroupNonUniformLogicalAnd 34 Reduce 606
+             609:   77(ivec2) Select 607 608 604
+             610:     71(ptr) AccessChain 27(data) 600 38 30
+             611:     19(int) CompositeExtract 609 0
+                              Store 610 611
+             612:     71(ptr) AccessChain 27(data) 600 38 47
+             613:     19(int) CompositeExtract 609 1
+                              Store 612 613
              614:      6(int) Load 8(invocation)
-             615:     65(ptr) AccessChain 27(data) 29 38 30
-             616:     19(int) Load 615
-             617:   521(bool) SLessThan 616 29
-             618:   521(bool) GroupNonUniformLogicalOr 34 Reduce 617
-             619:     19(int) Select 618 38 29
-             620:     65(ptr) AccessChain 27(data) 614 38 30
-                              Store 620 619
-             621:      6(int) Load 8(invocation)
-             622:     72(ptr) AccessChain 27(data) 38 38
-             623:   20(ivec4) Load 622
-             624:   71(ivec2) VectorShuffle 623 623 0 1
-             625:  531(bvec2) SLessThan 624 530
-             626:  531(bvec2) GroupNonUniformLogicalOr 34 Reduce 625
-             627:   71(ivec2) Select 626 534 530
-             628:     72(ptr) AccessChain 27(data) 621 38
-             629:   20(ivec4) Load 628
-             630:   20(ivec4) VectorShuffle 629 627 4 5 2 3
-                              Store 628 630
-             631:      6(int) Load 8(invocation)
-             632:     72(ptr) AccessChain 27(data) 38 38
-             633:   20(ivec4) Load 632
-             634:   81(ivec3) VectorShuffle 633 633 0 1 2
-             635:  544(bvec3) SLessThan 634 543
-             636:  544(bvec3) GroupNonUniformLogicalOr 34 Reduce 635
-             637:   81(ivec3) Select 636 547 543
-             638:     72(ptr) AccessChain 27(data) 631 38
-             639:   20(ivec4) Load 638
-             640:   20(ivec4) VectorShuffle 639 637 4 5 6 3
-                              Store 638 640
-             641:      6(int) Load 8(invocation)
-             642:     72(ptr) AccessChain 27(data) 38 38
-             643:   20(ivec4) Load 642
-             644:  556(bvec4) SLessThan 643 555
-             645:  556(bvec4) GroupNonUniformLogicalOr 34 Reduce 644
-             646:   20(ivec4) Select 645 559 555
-             647:     72(ptr) AccessChain 27(data) 641 38
-                              Store 647 646
-             648:      6(int) Load 8(invocation)
-             649:     65(ptr) AccessChain 27(data) 29 38 30
-             650:     19(int) Load 649
-             651:     19(int) GroupNonUniformBitwiseXor 34 Reduce 650
-             652:     65(ptr) AccessChain 27(data) 648 38 30
-                              Store 652 651
-             653:      6(int) Load 8(invocation)
-             654:     72(ptr) AccessChain 27(data) 38 38
-             655:   20(ivec4) Load 654
-             656:   71(ivec2) VectorShuffle 655 655 0 1
-             657:   71(ivec2) GroupNonUniformBitwiseXor 34 Reduce 656
-             658:     72(ptr) AccessChain 27(data) 653 38
-             659:   20(ivec4) Load 658
-             660:   20(ivec4) VectorShuffle 659 657 4 5 2 3
-                              Store 658 660
-             661:      6(int) Load 8(invocation)
-             662:     72(ptr) AccessChain 27(data) 49 38
-             663:   20(ivec4) Load 662
-             664:   81(ivec3) VectorShuffle 663 663 0 1 2
-             665:   81(ivec3) GroupNonUniformBitwiseXor 34 Reduce 664
-             666:     72(ptr) AccessChain 27(data) 661 38
+             615:     78(ptr) AccessChain 27(data) 38 38
+             616:   20(ivec4) Load 615
+             617:   88(ivec3) VectorShuffle 616 616 0 1 2
+             620:  619(bvec3) SLessThan 617 618
+             621:  619(bvec3) GroupNonUniformLogicalAnd 34 Reduce 620
+             623:   88(ivec3) Select 621 622 618
+             624:     71(ptr) AccessChain 27(data) 614 38 30
+             625:     19(int) CompositeExtract 623 0
+                              Store 624 625
+             626:     71(ptr) AccessChain 27(data) 614 38 47
+             627:     19(int) CompositeExtract 623 1
+                              Store 626 627
+             628:     71(ptr) AccessChain 27(data) 614 38 61
+             629:     19(int) CompositeExtract 623 2
+                              Store 628 629
+             630:      6(int) Load 8(invocation)
+             631:     78(ptr) AccessChain 27(data) 38 38
+             632:   20(ivec4) Load 631
+             635:  634(bvec4) SLessThan 632 633
+             636:  634(bvec4) GroupNonUniformLogicalAnd 34 Reduce 635
+             638:   20(ivec4) Select 636 637 633
+             639:     78(ptr) AccessChain 27(data) 630 38
+                              Store 639 638
+             640:      6(int) Load 8(invocation)
+             641:     71(ptr) AccessChain 27(data) 29 38 30
+             642:     19(int) Load 641
+             643:     19(int) GroupNonUniformBitwiseOr 34 Reduce 642
+             644:     71(ptr) AccessChain 27(data) 640 38 30
+                              Store 644 643
+             645:      6(int) Load 8(invocation)
+             646:     78(ptr) AccessChain 27(data) 38 38
+             647:   20(ivec4) Load 646
+             648:   77(ivec2) VectorShuffle 647 647 0 1
+             649:   77(ivec2) GroupNonUniformBitwiseOr 34 Reduce 648
+             650:     71(ptr) AccessChain 27(data) 645 38 30
+             651:     19(int) CompositeExtract 649 0
+                              Store 650 651
+             652:     71(ptr) AccessChain 27(data) 645 38 47
+             653:     19(int) CompositeExtract 649 1
+                              Store 652 653
+             654:      6(int) Load 8(invocation)
+             655:     78(ptr) AccessChain 27(data) 51 38
+             656:   20(ivec4) Load 655
+             657:   88(ivec3) VectorShuffle 656 656 0 1 2
+             658:   88(ivec3) GroupNonUniformBitwiseOr 34 Reduce 657
+             659:     71(ptr) AccessChain 27(data) 654 38 30
+             660:     19(int) CompositeExtract 658 0
+                              Store 659 660
+             661:     71(ptr) AccessChain 27(data) 654 38 47
+             662:     19(int) CompositeExtract 658 1
+                              Store 661 662
+             663:     71(ptr) AccessChain 27(data) 654 38 61
+             664:     19(int) CompositeExtract 658 2
+                              Store 663 664
+             665:      6(int) Load 8(invocation)
+             666:     78(ptr) AccessChain 27(data) 65 38
              667:   20(ivec4) Load 666
-             668:   20(ivec4) VectorShuffle 667 665 4 5 6 3
-                              Store 666 668
-             669:      6(int) Load 8(invocation)
-             670:     72(ptr) AccessChain 27(data) 59 38
-             671:   20(ivec4) Load 670
-             672:   20(ivec4) GroupNonUniformBitwiseXor 34 Reduce 671
-             673:     72(ptr) AccessChain 27(data) 669 38
-                              Store 673 672
-             674:      6(int) Load 8(invocation)
-             675:     95(ptr) AccessChain 27(data) 29 49 30
-             676:      6(int) Load 675
-             677:      6(int) GroupNonUniformBitwiseXor 34 Reduce 676
-             678:     95(ptr) AccessChain 27(data) 674 49 30
-                              Store 678 677
-             679:      6(int) Load 8(invocation)
-             680:    102(ptr) AccessChain 27(data) 38 49
-             681:   21(ivec4) Load 680
-             682:  101(ivec2) VectorShuffle 681 681 0 1
-             683:  101(ivec2) GroupNonUniformBitwiseXor 34 Reduce 682
-             684:    102(ptr) AccessChain 27(data) 679 49
-             685:   21(ivec4) Load 684
-             686:   21(ivec4) VectorShuffle 685 683 4 5 2 3
-                              Store 684 686
-             687:      6(int) Load 8(invocation)
-             688:    102(ptr) AccessChain 27(data) 49 49
-             689:   21(ivec4) Load 688
-             690:  111(ivec3) VectorShuffle 689 689 0 1 2
-             691:  111(ivec3) GroupNonUniformBitwiseXor 34 Reduce 690
-             692:    102(ptr) AccessChain 27(data) 687 49
-             693:   21(ivec4) Load 692
-             694:   21(ivec4) VectorShuffle 693 691 4 5 6 3
-                              Store 692 694
+             668:   20(ivec4) GroupNonUniformBitwiseOr 34 Reduce 667
+             669:     78(ptr) AccessChain 27(data) 665 38
+                              Store 669 668
+             670:      6(int) Load 8(invocation)
+             671:    105(ptr) AccessChain 27(data) 29 51 30
+             672:      6(int) Load 671
+             673:      6(int) GroupNonUniformBitwiseOr 34 Reduce 672
+             674:    105(ptr) AccessChain 27(data) 670 51 30
+                              Store 674 673
+             675:      6(int) Load 8(invocation)
+             676:    112(ptr) AccessChain 27(data) 38 51
+             677:   21(ivec4) Load 676
+             678:  111(ivec2) VectorShuffle 677 677 0 1
+             679:  111(ivec2) GroupNonUniformBitwiseOr 34 Reduce 678
+             680:    105(ptr) AccessChain 27(data) 675 51 30
+             681:      6(int) CompositeExtract 679 0
+                              Store 680 681
+             682:    105(ptr) AccessChain 27(data) 675 51 47
+             683:      6(int) CompositeExtract 679 1
+                              Store 682 683
+             684:      6(int) Load 8(invocation)
+             685:    112(ptr) AccessChain 27(data) 51 51
+             686:   21(ivec4) Load 685
+             687:  122(ivec3) VectorShuffle 686 686 0 1 2
+             688:  122(ivec3) GroupNonUniformBitwiseOr 34 Reduce 687
+             689:    105(ptr) AccessChain 27(data) 684 51 30
+             690:      6(int) CompositeExtract 688 0
+                              Store 689 690
+             691:    105(ptr) AccessChain 27(data) 684 51 47
+             692:      6(int) CompositeExtract 688 1
+                              Store 691 692
+             693:    105(ptr) AccessChain 27(data) 684 51 61
+             694:      6(int) CompositeExtract 688 2
+                              Store 693 694
              695:      6(int) Load 8(invocation)
-             696:    102(ptr) AccessChain 27(data) 59 49
+             696:    112(ptr) AccessChain 27(data) 65 51
              697:   21(ivec4) Load 696
-             698:   21(ivec4) GroupNonUniformBitwiseXor 34 Reduce 697
-             699:    102(ptr) AccessChain 27(data) 695 49
+             698:   21(ivec4) GroupNonUniformBitwiseOr 34 Reduce 697
+             699:    112(ptr) AccessChain 27(data) 695 51
                               Store 699 698
              700:      6(int) Load 8(invocation)
-             701:     65(ptr) AccessChain 27(data) 29 38 30
+             701:     71(ptr) AccessChain 27(data) 29 38 30
              702:     19(int) Load 701
-             703:   521(bool) SLessThan 702 29
-             704:   521(bool) GroupNonUniformLogicalXor 34 Reduce 703
+             703:   595(bool) SLessThan 702 29
+             704:   595(bool) GroupNonUniformLogicalOr 34 Reduce 703
              705:     19(int) Select 704 38 29
-             706:     65(ptr) AccessChain 27(data) 700 38 30
+             706:     71(ptr) AccessChain 27(data) 700 38 30
                               Store 706 705
              707:      6(int) Load 8(invocation)
-             708:     72(ptr) AccessChain 27(data) 38 38
+             708:     78(ptr) AccessChain 27(data) 38 38
              709:   20(ivec4) Load 708
-             710:   71(ivec2) VectorShuffle 709 709 0 1
-             711:  531(bvec2) SLessThan 710 530
-             712:  531(bvec2) GroupNonUniformLogicalXor 34 Reduce 711
-             713:   71(ivec2) Select 712 534 530
-             714:     72(ptr) AccessChain 27(data) 707 38
-             715:   20(ivec4) Load 714
-             716:   20(ivec4) VectorShuffle 715 713 4 5 2 3
-                              Store 714 716
-             717:      6(int) Load 8(invocation)
-             718:     72(ptr) AccessChain 27(data) 38 38
-             719:   20(ivec4) Load 718
-             720:   81(ivec3) VectorShuffle 719 719 0 1 2
-             721:  544(bvec3) SLessThan 720 543
-             722:  544(bvec3) GroupNonUniformLogicalXor 34 Reduce 721
-             723:   81(ivec3) Select 722 547 543
-             724:     72(ptr) AccessChain 27(data) 717 38
-             725:   20(ivec4) Load 724
-             726:   20(ivec4) VectorShuffle 725 723 4 5 6 3
-                              Store 724 726
-             727:      6(int) Load 8(invocation)
-             728:     72(ptr) AccessChain 27(data) 38 38
-             729:   20(ivec4) Load 728
-             730:  556(bvec4) SLessThan 729 555
-             731:  556(bvec4) GroupNonUniformLogicalXor 34 Reduce 730
-             732:   20(ivec4) Select 731 559 555
-             733:     72(ptr) AccessChain 27(data) 727 38
-                              Store 733 732
-             734:      6(int) Load 8(invocation)
-             735:     31(ptr) AccessChain 27(data) 29 29 30
-             736:   17(float) Load 735
-             737:   17(float) GroupNonUniformFAdd 34 InclusiveScan 736
-             738:     31(ptr) AccessChain 27(data) 734 29 30
-                              Store 738 737
-             739:      6(int) Load 8(invocation)
-             740:     40(ptr) AccessChain 27(data) 38 29
-             741:   18(fvec4) Load 740
-             742:   39(fvec2) VectorShuffle 741 741 0 1
-             743:   39(fvec2) GroupNonUniformFAdd 34 InclusiveScan 742
-             744:     40(ptr) AccessChain 27(data) 739 29
-             745:   18(fvec4) Load 744
-             746:   18(fvec4) VectorShuffle 745 743 4 5 2 3
-                              Store 744 746
-             747:      6(int) Load 8(invocation)
-             748:     40(ptr) AccessChain 27(data) 49 29
-             749:   18(fvec4) Load 748
-             750:   50(fvec3) VectorShuffle 749 749 0 1 2
-             751:   50(fvec3) GroupNonUniformFAdd 34 InclusiveScan 750
-             752:     40(ptr) AccessChain 27(data) 747 29
-             753:   18(fvec4) Load 752
-             754:   18(fvec4) VectorShuffle 753 751 4 5 6 3
-                              Store 752 754
-             755:      6(int) Load 8(invocation)
-             756:     40(ptr) AccessChain 27(data) 59 29
-             757:   18(fvec4) Load 756
-             758:   18(fvec4) GroupNonUniformFAdd 34 InclusiveScan 757
-             759:     40(ptr) AccessChain 27(data) 755 29
-                              Store 759 758
-             760:      6(int) Load 8(invocation)
-             761:     65(ptr) AccessChain 27(data) 29 38 30
-             762:     19(int) Load 761
-             763:     19(int) GroupNonUniformIAdd 34 InclusiveScan 762
-             764:     65(ptr) AccessChain 27(data) 760 38 30
-                              Store 764 763
-             765:      6(int) Load 8(invocation)
-             766:     72(ptr) AccessChain 27(data) 38 38
-             767:   20(ivec4) Load 766
-             768:   71(ivec2) VectorShuffle 767 767 0 1
-             769:   71(ivec2) GroupNonUniformIAdd 34 InclusiveScan 768
-             770:     72(ptr) AccessChain 27(data) 765 38
-             771:   20(ivec4) Load 770
-             772:   20(ivec4) VectorShuffle 771 769 4 5 2 3
-                              Store 770 772
+             710:   77(ivec2) VectorShuffle 709 709 0 1
+             711:  605(bvec2) SLessThan 710 604
+             712:  605(bvec2) GroupNonUniformLogicalOr 34 Reduce 711
+             713:   77(ivec2) Select 712 608 604
+             714:     71(ptr) AccessChain 27(data) 707 38 30
+             715:     19(int) CompositeExtract 713 0
+                              Store 714 715
+             716:     71(ptr) AccessChain 27(data) 707 38 47
+             717:     19(int) CompositeExtract 713 1
+                              Store 716 717
+             718:      6(int) Load 8(invocation)
+             719:     78(ptr) AccessChain 27(data) 38 38
+             720:   20(ivec4) Load 719
+             721:   88(ivec3) VectorShuffle 720 720 0 1 2
+             722:  619(bvec3) SLessThan 721 618
+             723:  619(bvec3) GroupNonUniformLogicalOr 34 Reduce 722
+             724:   88(ivec3) Select 723 622 618
+             725:     71(ptr) AccessChain 27(data) 718 38 30
+             726:     19(int) CompositeExtract 724 0
+                              Store 725 726
+             727:     71(ptr) AccessChain 27(data) 718 38 47
+             728:     19(int) CompositeExtract 724 1
+                              Store 727 728
+             729:     71(ptr) AccessChain 27(data) 718 38 61
+             730:     19(int) CompositeExtract 724 2
+                              Store 729 730
+             731:      6(int) Load 8(invocation)
+             732:     78(ptr) AccessChain 27(data) 38 38
+             733:   20(ivec4) Load 732
+             734:  634(bvec4) SLessThan 733 633
+             735:  634(bvec4) GroupNonUniformLogicalOr 34 Reduce 734
+             736:   20(ivec4) Select 735 637 633
+             737:     78(ptr) AccessChain 27(data) 731 38
+                              Store 737 736
+             738:      6(int) Load 8(invocation)
+             739:     71(ptr) AccessChain 27(data) 29 38 30
+             740:     19(int) Load 739
+             741:     19(int) GroupNonUniformBitwiseXor 34 Reduce 740
+             742:     71(ptr) AccessChain 27(data) 738 38 30
+                              Store 742 741
+             743:      6(int) Load 8(invocation)
+             744:     78(ptr) AccessChain 27(data) 38 38
+             745:   20(ivec4) Load 744
+             746:   77(ivec2) VectorShuffle 745 745 0 1
+             747:   77(ivec2) GroupNonUniformBitwiseXor 34 Reduce 746
+             748:     71(ptr) AccessChain 27(data) 743 38 30
+             749:     19(int) CompositeExtract 747 0
+                              Store 748 749
+             750:     71(ptr) AccessChain 27(data) 743 38 47
+             751:     19(int) CompositeExtract 747 1
+                              Store 750 751
+             752:      6(int) Load 8(invocation)
+             753:     78(ptr) AccessChain 27(data) 51 38
+             754:   20(ivec4) Load 753
+             755:   88(ivec3) VectorShuffle 754 754 0 1 2
+             756:   88(ivec3) GroupNonUniformBitwiseXor 34 Reduce 755
+             757:     71(ptr) AccessChain 27(data) 752 38 30
+             758:     19(int) CompositeExtract 756 0
+                              Store 757 758
+             759:     71(ptr) AccessChain 27(data) 752 38 47
+             760:     19(int) CompositeExtract 756 1
+                              Store 759 760
+             761:     71(ptr) AccessChain 27(data) 752 38 61
+             762:     19(int) CompositeExtract 756 2
+                              Store 761 762
+             763:      6(int) Load 8(invocation)
+             764:     78(ptr) AccessChain 27(data) 65 38
+             765:   20(ivec4) Load 764
+             766:   20(ivec4) GroupNonUniformBitwiseXor 34 Reduce 765
+             767:     78(ptr) AccessChain 27(data) 763 38
+                              Store 767 766
+             768:      6(int) Load 8(invocation)
+             769:    105(ptr) AccessChain 27(data) 29 51 30
+             770:      6(int) Load 769
+             771:      6(int) GroupNonUniformBitwiseXor 34 Reduce 770
+             772:    105(ptr) AccessChain 27(data) 768 51 30
+                              Store 772 771
              773:      6(int) Load 8(invocation)
-             774:     72(ptr) AccessChain 27(data) 49 38
-             775:   20(ivec4) Load 774
-             776:   81(ivec3) VectorShuffle 775 775 0 1 2
-             777:   81(ivec3) GroupNonUniformIAdd 34 InclusiveScan 776
-             778:     72(ptr) AccessChain 27(data) 773 38
-             779:   20(ivec4) Load 778
-             780:   20(ivec4) VectorShuffle 779 777 4 5 6 3
-                              Store 778 780
-             781:      6(int) Load 8(invocation)
-             782:     72(ptr) AccessChain 27(data) 59 38
-             783:   20(ivec4) Load 782
-             784:   20(ivec4) GroupNonUniformIAdd 34 InclusiveScan 783
-             785:     72(ptr) AccessChain 27(data) 781 38
-                              Store 785 784
-             786:      6(int) Load 8(invocation)
-             787:     95(ptr) AccessChain 27(data) 29 49 30
-             788:      6(int) Load 787
-             789:      6(int) GroupNonUniformIAdd 34 InclusiveScan 788
-             790:     95(ptr) AccessChain 27(data) 786 49 30
-                              Store 790 789
-             791:      6(int) Load 8(invocation)
-             792:    102(ptr) AccessChain 27(data) 38 49
-             793:   21(ivec4) Load 792
-             794:  101(ivec2) VectorShuffle 793 793 0 1
-             795:  101(ivec2) GroupNonUniformIAdd 34 InclusiveScan 794
-             796:    102(ptr) AccessChain 27(data) 791 49
-             797:   21(ivec4) Load 796
-             798:   21(ivec4) VectorShuffle 797 795 4 5 2 3
-                              Store 796 798
-             799:      6(int) Load 8(invocation)
-             800:    102(ptr) AccessChain 27(data) 49 49
-             801:   21(ivec4) Load 800
-             802:  111(ivec3) VectorShuffle 801 801 0 1 2
-             803:  111(ivec3) GroupNonUniformIAdd 34 InclusiveScan 802
-             804:    102(ptr) AccessChain 27(data) 799 49
-             805:   21(ivec4) Load 804
-             806:   21(ivec4) VectorShuffle 805 803 4 5 6 3
-                              Store 804 806
-             807:      6(int) Load 8(invocation)
-             808:    102(ptr) AccessChain 27(data) 59 49
-             809:   21(ivec4) Load 808
-             810:   21(ivec4) GroupNonUniformIAdd 34 InclusiveScan 809
-             811:    102(ptr) AccessChain 27(data) 807 49
-                              Store 811 810
-             812:      6(int) Load 8(invocation)
-             813:    125(ptr) AccessChain 27(data) 29 59 30
-             814:22(float64_t) Load 813
-             815:22(float64_t) GroupNonUniformFAdd 34 InclusiveScan 814
-             816:    125(ptr) AccessChain 27(data) 812 59 30
-                              Store 816 815
-             817:      6(int) Load 8(invocation)
-             818:    132(ptr) AccessChain 27(data) 38 59
-             819: 23(f64vec4) Load 818
-             820:131(f64vec2) VectorShuffle 819 819 0 1
-             821:131(f64vec2) GroupNonUniformFAdd 34 InclusiveScan 820
-             822:    132(ptr) AccessChain 27(data) 817 59
-             823: 23(f64vec4) Load 822
-             824: 23(f64vec4) VectorShuffle 823 821 4 5 2 3
-                              Store 822 824
-             825:      6(int) Load 8(invocation)
-             826:    132(ptr) AccessChain 27(data) 49 59
-             827: 23(f64vec4) Load 826
-             828:141(f64vec3) VectorShuffle 827 827 0 1 2
-             829:141(f64vec3) GroupNonUniformFAdd 34 InclusiveScan 828
-             830:    132(ptr) AccessChain 27(data) 825 59
-             831: 23(f64vec4) Load 830
-             832: 23(f64vec4) VectorShuffle 831 829 4 5 6 3
-                              Store 830 832
-             833:      6(int) Load 8(invocation)
-             834:    132(ptr) AccessChain 27(data) 59 59
-             835: 23(f64vec4) Load 834
-             836: 23(f64vec4) GroupNonUniformFAdd 34 InclusiveScan 835
-             837:    132(ptr) AccessChain 27(data) 833 59
-                              Store 837 836
-             838:      6(int) Load 8(invocation)
-             839:     31(ptr) AccessChain 27(data) 29 29 30
-             840:   17(float) Load 839
-             841:   17(float) GroupNonUniformFMul 34 InclusiveScan 840
-             842:     31(ptr) AccessChain 27(data) 838 29 30
-                              Store 842 841
-             843:      6(int) Load 8(invocation)
-             844:     40(ptr) AccessChain 27(data) 38 29
-             845:   18(fvec4) Load 844
-             846:   39(fvec2) VectorShuffle 845 845 0 1
-             847:   39(fvec2) GroupNonUniformFMul 34 InclusiveScan 846
-             848:     40(ptr) AccessChain 27(data) 843 29
-             849:   18(fvec4) Load 848
-             850:   18(fvec4) VectorShuffle 849 847 4 5 2 3
-                              Store 848 850
-             851:      6(int) Load 8(invocation)
-             852:     40(ptr) AccessChain 27(data) 49 29
-             853:   18(fvec4) Load 852
-             854:   50(fvec3) VectorShuffle 853 853 0 1 2
-             855:   50(fvec3) GroupNonUniformFMul 34 InclusiveScan 854
-             856:     40(ptr) AccessChain 27(data) 851 29
-             857:   18(fvec4) Load 856
-             858:   18(fvec4) VectorShuffle 857 855 4 5 6 3
-                              Store 856 858
-             859:      6(int) Load 8(invocation)
-             860:     40(ptr) AccessChain 27(data) 59 29
-             861:   18(fvec4) Load 860
-             862:   18(fvec4) GroupNonUniformFMul 34 InclusiveScan 861
-             863:     40(ptr) AccessChain 27(data) 859 29
-                              Store 863 862
-             864:      6(int) Load 8(invocation)
-             865:     65(ptr) AccessChain 27(data) 29 38 30
-             866:     19(int) Load 865
-             867:     19(int) GroupNonUniformIMul 34 InclusiveScan 866
-             868:     65(ptr) AccessChain 27(data) 864 38 30
-                              Store 868 867
-             869:      6(int) Load 8(invocation)
-             870:     72(ptr) AccessChain 27(data) 38 38
-             871:   20(ivec4) Load 870
-             872:   71(ivec2) VectorShuffle 871 871 0 1
-             873:   71(ivec2) GroupNonUniformIMul 34 InclusiveScan 872
-             874:     72(ptr) AccessChain 27(data) 869 38
-             875:   20(ivec4) Load 874
-             876:   20(ivec4) VectorShuffle 875 873 4 5 2 3
-                              Store 874 876
-             877:      6(int) Load 8(invocation)
-             878:     72(ptr) AccessChain 27(data) 49 38
-             879:   20(ivec4) Load 878
-             880:   81(ivec3) VectorShuffle 879 879 0 1 2
-             881:   81(ivec3) GroupNonUniformIMul 34 InclusiveScan 880
-             882:     72(ptr) AccessChain 27(data) 877 38
-             883:   20(ivec4) Load 882
-             884:   20(ivec4) VectorShuffle 883 881 4 5 6 3
-                              Store 882 884
-             885:      6(int) Load 8(invocation)
-             886:     72(ptr) AccessChain 27(data) 59 38
-             887:   20(ivec4) Load 886
-             888:   20(ivec4) GroupNonUniformIMul 34 InclusiveScan 887
-             889:     72(ptr) AccessChain 27(data) 885 38
-                              Store 889 888
-             890:      6(int) Load 8(invocation)
-             891:     95(ptr) AccessChain 27(data) 29 49 30
-             892:      6(int) Load 891
-             893:      6(int) GroupNonUniformIMul 34 InclusiveScan 892
-             894:     95(ptr) AccessChain 27(data) 890 49 30
-                              Store 894 893
-             895:      6(int) Load 8(invocation)
-             896:    102(ptr) AccessChain 27(data) 38 49
-             897:   21(ivec4) Load 896
-             898:  101(ivec2) VectorShuffle 897 897 0 1
-             899:  101(ivec2) GroupNonUniformIMul 34 InclusiveScan 898
-             900:    102(ptr) AccessChain 27(data) 895 49
-             901:   21(ivec4) Load 900
-             902:   21(ivec4) VectorShuffle 901 899 4 5 2 3
-                              Store 900 902
-             903:      6(int) Load 8(invocation)
-             904:    102(ptr) AccessChain 27(data) 49 49
-             905:   21(ivec4) Load 904
-             906:  111(ivec3) VectorShuffle 905 905 0 1 2
-             907:  111(ivec3) GroupNonUniformIMul 34 InclusiveScan 906
-             908:    102(ptr) AccessChain 27(data) 903 49
-             909:   21(ivec4) Load 908
-             910:   21(ivec4) VectorShuffle 909 907 4 5 6 3
-                              Store 908 910
-             911:      6(int) Load 8(invocation)
-             912:    102(ptr) AccessChain 27(data) 59 49
-             913:   21(ivec4) Load 912
-             914:   21(ivec4) GroupNonUniformIMul 34 InclusiveScan 913
-             915:    102(ptr) AccessChain 27(data) 911 49
-                              Store 915 914
-             916:      6(int) Load 8(invocation)
-             917:    125(ptr) AccessChain 27(data) 29 59 30
-             918:22(float64_t) Load 917
-             919:22(float64_t) GroupNonUniformFMul 34 InclusiveScan 918
-             920:    125(ptr) AccessChain 27(data) 916 59 30
-                              Store 920 919
+             774:    112(ptr) AccessChain 27(data) 38 51
+             775:   21(ivec4) Load 774
+             776:  111(ivec2) VectorShuffle 775 775 0 1
+             777:  111(ivec2) GroupNonUniformBitwiseXor 34 Reduce 776
+             778:    105(ptr) AccessChain 27(data) 773 51 30
+             779:      6(int) CompositeExtract 777 0
+                              Store 778 779
+             780:    105(ptr) AccessChain 27(data) 773 51 47
+             781:      6(int) CompositeExtract 777 1
+                              Store 780 781
+             782:      6(int) Load 8(invocation)
+             783:    112(ptr) AccessChain 27(data) 51 51
+             784:   21(ivec4) Load 783
+             785:  122(ivec3) VectorShuffle 784 784 0 1 2
+             786:  122(ivec3) GroupNonUniformBitwiseXor 34 Reduce 785
+             787:    105(ptr) AccessChain 27(data) 782 51 30
+             788:      6(int) CompositeExtract 786 0
+                              Store 787 788
+             789:    105(ptr) AccessChain 27(data) 782 51 47
+             790:      6(int) CompositeExtract 786 1
+                              Store 789 790
+             791:    105(ptr) AccessChain 27(data) 782 51 61
+             792:      6(int) CompositeExtract 786 2
+                              Store 791 792
+             793:      6(int) Load 8(invocation)
+             794:    112(ptr) AccessChain 27(data) 65 51
+             795:   21(ivec4) Load 794
+             796:   21(ivec4) GroupNonUniformBitwiseXor 34 Reduce 795
+             797:    112(ptr) AccessChain 27(data) 793 51
+                              Store 797 796
+             798:      6(int) Load 8(invocation)
+             799:     71(ptr) AccessChain 27(data) 29 38 30
+             800:     19(int) Load 799
+             801:   595(bool) SLessThan 800 29
+             802:   595(bool) GroupNonUniformLogicalXor 34 Reduce 801
+             803:     19(int) Select 802 38 29
+             804:     71(ptr) AccessChain 27(data) 798 38 30
+                              Store 804 803
+             805:      6(int) Load 8(invocation)
+             806:     78(ptr) AccessChain 27(data) 38 38
+             807:   20(ivec4) Load 806
+             808:   77(ivec2) VectorShuffle 807 807 0 1
+             809:  605(bvec2) SLessThan 808 604
+             810:  605(bvec2) GroupNonUniformLogicalXor 34 Reduce 809
+             811:   77(ivec2) Select 810 608 604
+             812:     71(ptr) AccessChain 27(data) 805 38 30
+             813:     19(int) CompositeExtract 811 0
+                              Store 812 813
+             814:     71(ptr) AccessChain 27(data) 805 38 47
+             815:     19(int) CompositeExtract 811 1
+                              Store 814 815
+             816:      6(int) Load 8(invocation)
+             817:     78(ptr) AccessChain 27(data) 38 38
+             818:   20(ivec4) Load 817
+             819:   88(ivec3) VectorShuffle 818 818 0 1 2
+             820:  619(bvec3) SLessThan 819 618
+             821:  619(bvec3) GroupNonUniformLogicalXor 34 Reduce 820
+             822:   88(ivec3) Select 821 622 618
+             823:     71(ptr) AccessChain 27(data) 816 38 30
+             824:     19(int) CompositeExtract 822 0
+                              Store 823 824
+             825:     71(ptr) AccessChain 27(data) 816 38 47
+             826:     19(int) CompositeExtract 822 1
+                              Store 825 826
+             827:     71(ptr) AccessChain 27(data) 816 38 61
+             828:     19(int) CompositeExtract 822 2
+                              Store 827 828
+             829:      6(int) Load 8(invocation)
+             830:     78(ptr) AccessChain 27(data) 38 38
+             831:   20(ivec4) Load 830
+             832:  634(bvec4) SLessThan 831 633
+             833:  634(bvec4) GroupNonUniformLogicalXor 34 Reduce 832
+             834:   20(ivec4) Select 833 637 633
+             835:     78(ptr) AccessChain 27(data) 829 38
+                              Store 835 834
+             836:      6(int) Load 8(invocation)
+             837:     31(ptr) AccessChain 27(data) 29 29 30
+             838:   17(float) Load 837
+             839:   17(float) GroupNonUniformFAdd 34 InclusiveScan 838
+             840:     31(ptr) AccessChain 27(data) 836 29 30
+                              Store 840 839
+             841:      6(int) Load 8(invocation)
+             842:     40(ptr) AccessChain 27(data) 38 29
+             843:   18(fvec4) Load 842
+             844:   39(fvec2) VectorShuffle 843 843 0 1
+             845:   39(fvec2) GroupNonUniformFAdd 34 InclusiveScan 844
+             846:     31(ptr) AccessChain 27(data) 841 29 30
+             847:   17(float) CompositeExtract 845 0
+                              Store 846 847
+             848:     31(ptr) AccessChain 27(data) 841 29 47
+             849:   17(float) CompositeExtract 845 1
+                              Store 848 849
+             850:      6(int) Load 8(invocation)
+             851:     40(ptr) AccessChain 27(data) 51 29
+             852:   18(fvec4) Load 851
+             853:   52(fvec3) VectorShuffle 852 852 0 1 2
+             854:   52(fvec3) GroupNonUniformFAdd 34 InclusiveScan 853
+             855:     31(ptr) AccessChain 27(data) 850 29 30
+             856:   17(float) CompositeExtract 854 0
+                              Store 855 856
+             857:     31(ptr) AccessChain 27(data) 850 29 47
+             858:   17(float) CompositeExtract 854 1
+                              Store 857 858
+             859:     31(ptr) AccessChain 27(data) 850 29 61
+             860:   17(float) CompositeExtract 854 2
+                              Store 859 860
+             861:      6(int) Load 8(invocation)
+             862:     40(ptr) AccessChain 27(data) 65 29
+             863:   18(fvec4) Load 862
+             864:   18(fvec4) GroupNonUniformFAdd 34 InclusiveScan 863
+             865:     40(ptr) AccessChain 27(data) 861 29
+                              Store 865 864
+             866:      6(int) Load 8(invocation)
+             867:     71(ptr) AccessChain 27(data) 29 38 30
+             868:     19(int) Load 867
+             869:     19(int) GroupNonUniformIAdd 34 InclusiveScan 868
+             870:     71(ptr) AccessChain 27(data) 866 38 30
+                              Store 870 869
+             871:      6(int) Load 8(invocation)
+             872:     78(ptr) AccessChain 27(data) 38 38
+             873:   20(ivec4) Load 872
+             874:   77(ivec2) VectorShuffle 873 873 0 1
+             875:   77(ivec2) GroupNonUniformIAdd 34 InclusiveScan 874
+             876:     71(ptr) AccessChain 27(data) 871 38 30
+             877:     19(int) CompositeExtract 875 0
+                              Store 876 877
+             878:     71(ptr) AccessChain 27(data) 871 38 47
+             879:     19(int) CompositeExtract 875 1
+                              Store 878 879
+             880:      6(int) Load 8(invocation)
+             881:     78(ptr) AccessChain 27(data) 51 38
+             882:   20(ivec4) Load 881
+             883:   88(ivec3) VectorShuffle 882 882 0 1 2
+             884:   88(ivec3) GroupNonUniformIAdd 34 InclusiveScan 883
+             885:     71(ptr) AccessChain 27(data) 880 38 30
+             886:     19(int) CompositeExtract 884 0
+                              Store 885 886
+             887:     71(ptr) AccessChain 27(data) 880 38 47
+             888:     19(int) CompositeExtract 884 1
+                              Store 887 888
+             889:     71(ptr) AccessChain 27(data) 880 38 61
+             890:     19(int) CompositeExtract 884 2
+                              Store 889 890
+             891:      6(int) Load 8(invocation)
+             892:     78(ptr) AccessChain 27(data) 65 38
+             893:   20(ivec4) Load 892
+             894:   20(ivec4) GroupNonUniformIAdd 34 InclusiveScan 893
+             895:     78(ptr) AccessChain 27(data) 891 38
+                              Store 895 894
+             896:      6(int) Load 8(invocation)
+             897:    105(ptr) AccessChain 27(data) 29 51 30
+             898:      6(int) Load 897
+             899:      6(int) GroupNonUniformIAdd 34 InclusiveScan 898
+             900:    105(ptr) AccessChain 27(data) 896 51 30
+                              Store 900 899
+             901:      6(int) Load 8(invocation)
+             902:    112(ptr) AccessChain 27(data) 38 51
+             903:   21(ivec4) Load 902
+             904:  111(ivec2) VectorShuffle 903 903 0 1
+             905:  111(ivec2) GroupNonUniformIAdd 34 InclusiveScan 904
+             906:    105(ptr) AccessChain 27(data) 901 51 30
+             907:      6(int) CompositeExtract 905 0
+                              Store 906 907
+             908:    105(ptr) AccessChain 27(data) 901 51 47
+             909:      6(int) CompositeExtract 905 1
+                              Store 908 909
+             910:      6(int) Load 8(invocation)
+             911:    112(ptr) AccessChain 27(data) 51 51
+             912:   21(ivec4) Load 911
+             913:  122(ivec3) VectorShuffle 912 912 0 1 2
+             914:  122(ivec3) GroupNonUniformIAdd 34 InclusiveScan 913
+             915:    105(ptr) AccessChain 27(data) 910 51 30
+             916:      6(int) CompositeExtract 914 0
+                              Store 915 916
+             917:    105(ptr) AccessChain 27(data) 910 51 47
+             918:      6(int) CompositeExtract 914 1
+                              Store 917 918
+             919:    105(ptr) AccessChain 27(data) 910 51 61
+             920:      6(int) CompositeExtract 914 2
+                              Store 919 920
              921:      6(int) Load 8(invocation)
-             922:    132(ptr) AccessChain 27(data) 38 59
-             923: 23(f64vec4) Load 922
-             924:131(f64vec2) VectorShuffle 923 923 0 1
-             925:131(f64vec2) GroupNonUniformFMul 34 InclusiveScan 924
-             926:    132(ptr) AccessChain 27(data) 921 59
-             927: 23(f64vec4) Load 926
-             928: 23(f64vec4) VectorShuffle 927 925 4 5 2 3
-                              Store 926 928
-             929:      6(int) Load 8(invocation)
-             930:    132(ptr) AccessChain 27(data) 49 59
-             931: 23(f64vec4) Load 930
-             932:141(f64vec3) VectorShuffle 931 931 0 1 2
-             933:141(f64vec3) GroupNonUniformFMul 34 InclusiveScan 932
-             934:    132(ptr) AccessChain 27(data) 929 59
-             935: 23(f64vec4) Load 934
-             936: 23(f64vec4) VectorShuffle 935 933 4 5 6 3
-                              Store 934 936
-             937:      6(int) Load 8(invocation)
-             938:    132(ptr) AccessChain 27(data) 59 59
-             939: 23(f64vec4) Load 938
-             940: 23(f64vec4) GroupNonUniformFMul 34 InclusiveScan 939
-             941:    132(ptr) AccessChain 27(data) 937 59
-                              Store 941 940
-             942:      6(int) Load 8(invocation)
-             943:     31(ptr) AccessChain 27(data) 29 29 30
-             944:   17(float) Load 943
-             945:   17(float) GroupNonUniformFMin 34 InclusiveScan 944
-             946:     31(ptr) AccessChain 27(data) 942 29 30
-                              Store 946 945
-             947:      6(int) Load 8(invocation)
-             948:     40(ptr) AccessChain 27(data) 38 29
-             949:   18(fvec4) Load 948
-             950:   39(fvec2) VectorShuffle 949 949 0 1
-             951:   39(fvec2) GroupNonUniformFMin 34 InclusiveScan 950
-             952:     40(ptr) AccessChain 27(data) 947 29
-             953:   18(fvec4) Load 952
-             954:   18(fvec4) VectorShuffle 953 951 4 5 2 3
-                              Store 952 954
-             955:      6(int) Load 8(invocation)
-             956:     40(ptr) AccessChain 27(data) 49 29
-             957:   18(fvec4) Load 956
-             958:   50(fvec3) VectorShuffle 957 957 0 1 2
-             959:   50(fvec3) GroupNonUniformFMin 34 InclusiveScan 958
-             960:     40(ptr) AccessChain 27(data) 955 29
-             961:   18(fvec4) Load 960
-             962:   18(fvec4) VectorShuffle 961 959 4 5 6 3
-                              Store 960 962
-             963:      6(int) Load 8(invocation)
-             964:     40(ptr) AccessChain 27(data) 59 29
-             965:   18(fvec4) Load 964
-             966:   18(fvec4) GroupNonUniformFMin 34 InclusiveScan 965
-             967:     40(ptr) AccessChain 27(data) 963 29
-                              Store 967 966
-             968:      6(int) Load 8(invocation)
-             969:     65(ptr) AccessChain 27(data) 29 38 30
-             970:     19(int) Load 969
-             971:     19(int) GroupNonUniformSMin 34 InclusiveScan 970
-             972:     65(ptr) AccessChain 27(data) 968 38 30
-                              Store 972 971
-             973:      6(int) Load 8(invocation)
-             974:     72(ptr) AccessChain 27(data) 38 38
-             975:   20(ivec4) Load 974
-             976:   71(ivec2) VectorShuffle 975 975 0 1
-             977:   71(ivec2) GroupNonUniformSMin 34 InclusiveScan 976
-             978:     72(ptr) AccessChain 27(data) 973 38
-             979:   20(ivec4) Load 978
-             980:   20(ivec4) VectorShuffle 979 977 4 5 2 3
-                              Store 978 980
+             922:    112(ptr) AccessChain 27(data) 65 51
+             923:   21(ivec4) Load 922
+             924:   21(ivec4) GroupNonUniformIAdd 34 InclusiveScan 923
+             925:    112(ptr) AccessChain 27(data) 921 51
+                              Store 925 924
+             926:      6(int) Load 8(invocation)
+             927:    139(ptr) AccessChain 27(data) 29 65 30
+             928:22(float64_t) Load 927
+             929:22(float64_t) GroupNonUniformFAdd 34 InclusiveScan 928
+             930:    139(ptr) AccessChain 27(data) 926 65 30
+                              Store 930 929
+             931:      6(int) Load 8(invocation)
+             932:    146(ptr) AccessChain 27(data) 38 65
+             933: 23(f64vec4) Load 932
+             934:145(f64vec2) VectorShuffle 933 933 0 1
+             935:145(f64vec2) GroupNonUniformFAdd 34 InclusiveScan 934
+             936:    139(ptr) AccessChain 27(data) 931 65 30
+             937:22(float64_t) CompositeExtract 935 0
+                              Store 936 937
+             938:    139(ptr) AccessChain 27(data) 931 65 47
+             939:22(float64_t) CompositeExtract 935 1
+                              Store 938 939
+             940:      6(int) Load 8(invocation)
+             941:    146(ptr) AccessChain 27(data) 51 65
+             942: 23(f64vec4) Load 941
+             943:156(f64vec3) VectorShuffle 942 942 0 1 2
+             944:156(f64vec3) GroupNonUniformFAdd 34 InclusiveScan 943
+             945:    139(ptr) AccessChain 27(data) 940 65 30
+             946:22(float64_t) CompositeExtract 944 0
+                              Store 945 946
+             947:    139(ptr) AccessChain 27(data) 940 65 47
+             948:22(float64_t) CompositeExtract 944 1
+                              Store 947 948
+             949:    139(ptr) AccessChain 27(data) 940 65 61
+             950:22(float64_t) CompositeExtract 944 2
+                              Store 949 950
+             951:      6(int) Load 8(invocation)
+             952:    146(ptr) AccessChain 27(data) 65 65
+             953: 23(f64vec4) Load 952
+             954: 23(f64vec4) GroupNonUniformFAdd 34 InclusiveScan 953
+             955:    146(ptr) AccessChain 27(data) 951 65
+                              Store 955 954
+             956:      6(int) Load 8(invocation)
+             957:     31(ptr) AccessChain 27(data) 29 29 30
+             958:   17(float) Load 957
+             959:   17(float) GroupNonUniformFMul 34 InclusiveScan 958
+             960:     31(ptr) AccessChain 27(data) 956 29 30
+                              Store 960 959
+             961:      6(int) Load 8(invocation)
+             962:     40(ptr) AccessChain 27(data) 38 29
+             963:   18(fvec4) Load 962
+             964:   39(fvec2) VectorShuffle 963 963 0 1
+             965:   39(fvec2) GroupNonUniformFMul 34 InclusiveScan 964
+             966:     31(ptr) AccessChain 27(data) 961 29 30
+             967:   17(float) CompositeExtract 965 0
+                              Store 966 967
+             968:     31(ptr) AccessChain 27(data) 961 29 47
+             969:   17(float) CompositeExtract 965 1
+                              Store 968 969
+             970:      6(int) Load 8(invocation)
+             971:     40(ptr) AccessChain 27(data) 51 29
+             972:   18(fvec4) Load 971
+             973:   52(fvec3) VectorShuffle 972 972 0 1 2
+             974:   52(fvec3) GroupNonUniformFMul 34 InclusiveScan 973
+             975:     31(ptr) AccessChain 27(data) 970 29 30
+             976:   17(float) CompositeExtract 974 0
+                              Store 975 976
+             977:     31(ptr) AccessChain 27(data) 970 29 47
+             978:   17(float) CompositeExtract 974 1
+                              Store 977 978
+             979:     31(ptr) AccessChain 27(data) 970 29 61
+             980:   17(float) CompositeExtract 974 2
+                              Store 979 980
              981:      6(int) Load 8(invocation)
-             982:     72(ptr) AccessChain 27(data) 49 38
-             983:   20(ivec4) Load 982
-             984:   81(ivec3) VectorShuffle 983 983 0 1 2
-             985:   81(ivec3) GroupNonUniformSMin 34 InclusiveScan 984
-             986:     72(ptr) AccessChain 27(data) 981 38
-             987:   20(ivec4) Load 986
-             988:   20(ivec4) VectorShuffle 987 985 4 5 6 3
-                              Store 986 988
-             989:      6(int) Load 8(invocation)
-             990:     72(ptr) AccessChain 27(data) 59 38
-             991:   20(ivec4) Load 990
-             992:   20(ivec4) GroupNonUniformSMin 34 InclusiveScan 991
-             993:     72(ptr) AccessChain 27(data) 989 38
-                              Store 993 992
-             994:      6(int) Load 8(invocation)
-             995:     95(ptr) AccessChain 27(data) 29 49 30
-             996:      6(int) Load 995
-             997:      6(int) GroupNonUniformUMin 34 InclusiveScan 996
-             998:     95(ptr) AccessChain 27(data) 994 49 30
-                              Store 998 997
-             999:      6(int) Load 8(invocation)
-            1000:    102(ptr) AccessChain 27(data) 38 49
-            1001:   21(ivec4) Load 1000
-            1002:  101(ivec2) VectorShuffle 1001 1001 0 1
-            1003:  101(ivec2) GroupNonUniformUMin 34 InclusiveScan 1002
-            1004:    102(ptr) AccessChain 27(data) 999 49
-            1005:   21(ivec4) Load 1004
-            1006:   21(ivec4) VectorShuffle 1005 1003 4 5 2 3
-                              Store 1004 1006
-            1007:      6(int) Load 8(invocation)
-            1008:    102(ptr) AccessChain 27(data) 49 49
-            1009:   21(ivec4) Load 1008
-            1010:  111(ivec3) VectorShuffle 1009 1009 0 1 2
-            1011:  111(ivec3) GroupNonUniformUMin 34 InclusiveScan 1010
-            1012:    102(ptr) AccessChain 27(data) 1007 49
-            1013:   21(ivec4) Load 1012
-            1014:   21(ivec4) VectorShuffle 1013 1011 4 5 6 3
-                              Store 1012 1014
-            1015:      6(int) Load 8(invocation)
-            1016:    102(ptr) AccessChain 27(data) 59 49
-            1017:   21(ivec4) Load 1016
-            1018:   21(ivec4) GroupNonUniformUMin 34 InclusiveScan 1017
-            1019:    102(ptr) AccessChain 27(data) 1015 49
-                              Store 1019 1018
-            1020:      6(int) Load 8(invocation)
-            1021:    125(ptr) AccessChain 27(data) 29 59 30
-            1022:22(float64_t) Load 1021
-            1023:22(float64_t) GroupNonUniformFMin 34 InclusiveScan 1022
-            1024:    125(ptr) AccessChain 27(data) 1020 59 30
-                              Store 1024 1023
-            1025:      6(int) Load 8(invocation)
-            1026:    132(ptr) AccessChain 27(data) 38 59
-            1027: 23(f64vec4) Load 1026
-            1028:131(f64vec2) VectorShuffle 1027 1027 0 1
-            1029:131(f64vec2) GroupNonUniformFMin 34 InclusiveScan 1028
-            1030:    132(ptr) AccessChain 27(data) 1025 59
-            1031: 23(f64vec4) Load 1030
-            1032: 23(f64vec4) VectorShuffle 1031 1029 4 5 2 3
-                              Store 1030 1032
-            1033:      6(int) Load 8(invocation)
-            1034:    132(ptr) AccessChain 27(data) 49 59
-            1035: 23(f64vec4) Load 1034
-            1036:141(f64vec3) VectorShuffle 1035 1035 0 1 2
-            1037:141(f64vec3) GroupNonUniformFMin 34 InclusiveScan 1036
-            1038:    132(ptr) AccessChain 27(data) 1033 59
-            1039: 23(f64vec4) Load 1038
-            1040: 23(f64vec4) VectorShuffle 1039 1037 4 5 6 3
-                              Store 1038 1040
+             982:     40(ptr) AccessChain 27(data) 65 29
+             983:   18(fvec4) Load 982
+             984:   18(fvec4) GroupNonUniformFMul 34 InclusiveScan 983
+             985:     40(ptr) AccessChain 27(data) 981 29
+                              Store 985 984
+             986:      6(int) Load 8(invocation)
+             987:     71(ptr) AccessChain 27(data) 29 38 30
+             988:     19(int) Load 987
+             989:     19(int) GroupNonUniformIMul 34 InclusiveScan 988
+             990:     71(ptr) AccessChain 27(data) 986 38 30
+                              Store 990 989
+             991:      6(int) Load 8(invocation)
+             992:     78(ptr) AccessChain 27(data) 38 38
+             993:   20(ivec4) Load 992
+             994:   77(ivec2) VectorShuffle 993 993 0 1
+             995:   77(ivec2) GroupNonUniformIMul 34 InclusiveScan 994
+             996:     71(ptr) AccessChain 27(data) 991 38 30
+             997:     19(int) CompositeExtract 995 0
+                              Store 996 997
+             998:     71(ptr) AccessChain 27(data) 991 38 47
+             999:     19(int) CompositeExtract 995 1
+                              Store 998 999
+            1000:      6(int) Load 8(invocation)
+            1001:     78(ptr) AccessChain 27(data) 51 38
+            1002:   20(ivec4) Load 1001
+            1003:   88(ivec3) VectorShuffle 1002 1002 0 1 2
+            1004:   88(ivec3) GroupNonUniformIMul 34 InclusiveScan 1003
+            1005:     71(ptr) AccessChain 27(data) 1000 38 30
+            1006:     19(int) CompositeExtract 1004 0
+                              Store 1005 1006
+            1007:     71(ptr) AccessChain 27(data) 1000 38 47
+            1008:     19(int) CompositeExtract 1004 1
+                              Store 1007 1008
+            1009:     71(ptr) AccessChain 27(data) 1000 38 61
+            1010:     19(int) CompositeExtract 1004 2
+                              Store 1009 1010
+            1011:      6(int) Load 8(invocation)
+            1012:     78(ptr) AccessChain 27(data) 65 38
+            1013:   20(ivec4) Load 1012
+            1014:   20(ivec4) GroupNonUniformIMul 34 InclusiveScan 1013
+            1015:     78(ptr) AccessChain 27(data) 1011 38
+                              Store 1015 1014
+            1016:      6(int) Load 8(invocation)
+            1017:    105(ptr) AccessChain 27(data) 29 51 30
+            1018:      6(int) Load 1017
+            1019:      6(int) GroupNonUniformIMul 34 InclusiveScan 1018
+            1020:    105(ptr) AccessChain 27(data) 1016 51 30
+                              Store 1020 1019
+            1021:      6(int) Load 8(invocation)
+            1022:    112(ptr) AccessChain 27(data) 38 51
+            1023:   21(ivec4) Load 1022
+            1024:  111(ivec2) VectorShuffle 1023 1023 0 1
+            1025:  111(ivec2) GroupNonUniformIMul 34 InclusiveScan 1024
+            1026:    105(ptr) AccessChain 27(data) 1021 51 30
+            1027:      6(int) CompositeExtract 1025 0
+                              Store 1026 1027
+            1028:    105(ptr) AccessChain 27(data) 1021 51 47
+            1029:      6(int) CompositeExtract 1025 1
+                              Store 1028 1029
+            1030:      6(int) Load 8(invocation)
+            1031:    112(ptr) AccessChain 27(data) 51 51
+            1032:   21(ivec4) Load 1031
+            1033:  122(ivec3) VectorShuffle 1032 1032 0 1 2
+            1034:  122(ivec3) GroupNonUniformIMul 34 InclusiveScan 1033
+            1035:    105(ptr) AccessChain 27(data) 1030 51 30
+            1036:      6(int) CompositeExtract 1034 0
+                              Store 1035 1036
+            1037:    105(ptr) AccessChain 27(data) 1030 51 47
+            1038:      6(int) CompositeExtract 1034 1
+                              Store 1037 1038
+            1039:    105(ptr) AccessChain 27(data) 1030 51 61
+            1040:      6(int) CompositeExtract 1034 2
+                              Store 1039 1040
             1041:      6(int) Load 8(invocation)
-            1042:    132(ptr) AccessChain 27(data) 59 59
-            1043: 23(f64vec4) Load 1042
-            1044: 23(f64vec4) GroupNonUniformFMin 34 InclusiveScan 1043
-            1045:    132(ptr) AccessChain 27(data) 1041 59
+            1042:    112(ptr) AccessChain 27(data) 65 51
+            1043:   21(ivec4) Load 1042
+            1044:   21(ivec4) GroupNonUniformIMul 34 InclusiveScan 1043
+            1045:    112(ptr) AccessChain 27(data) 1041 51
                               Store 1045 1044
             1046:      6(int) Load 8(invocation)
-            1047:     31(ptr) AccessChain 27(data) 29 29 30
-            1048:   17(float) Load 1047
-            1049:   17(float) GroupNonUniformFMax 34 InclusiveScan 1048
-            1050:     31(ptr) AccessChain 27(data) 1046 29 30
+            1047:    139(ptr) AccessChain 27(data) 29 65 30
+            1048:22(float64_t) Load 1047
+            1049:22(float64_t) GroupNonUniformFMul 34 InclusiveScan 1048
+            1050:    139(ptr) AccessChain 27(data) 1046 65 30
                               Store 1050 1049
             1051:      6(int) Load 8(invocation)
-            1052:     40(ptr) AccessChain 27(data) 38 29
-            1053:   18(fvec4) Load 1052
-            1054:   39(fvec2) VectorShuffle 1053 1053 0 1
-            1055:   39(fvec2) GroupNonUniformFMax 34 InclusiveScan 1054
-            1056:     40(ptr) AccessChain 27(data) 1051 29
-            1057:   18(fvec4) Load 1056
-            1058:   18(fvec4) VectorShuffle 1057 1055 4 5 2 3
-                              Store 1056 1058
-            1059:      6(int) Load 8(invocation)
-            1060:     40(ptr) AccessChain 27(data) 49 29
-            1061:   18(fvec4) Load 1060
-            1062:   50(fvec3) VectorShuffle 1061 1061 0 1 2
-            1063:   50(fvec3) GroupNonUniformFMax 34 InclusiveScan 1062
-            1064:     40(ptr) AccessChain 27(data) 1059 29
-            1065:   18(fvec4) Load 1064
-            1066:   18(fvec4) VectorShuffle 1065 1063 4 5 6 3
-                              Store 1064 1066
-            1067:      6(int) Load 8(invocation)
-            1068:     40(ptr) AccessChain 27(data) 59 29
-            1069:   18(fvec4) Load 1068
-            1070:   18(fvec4) GroupNonUniformFMax 34 InclusiveScan 1069
-            1071:     40(ptr) AccessChain 27(data) 1067 29
-                              Store 1071 1070
-            1072:      6(int) Load 8(invocation)
-            1073:     65(ptr) AccessChain 27(data) 29 38 30
-            1074:     19(int) Load 1073
-            1075:     19(int) GroupNonUniformSMax 34 InclusiveScan 1074
-            1076:     65(ptr) AccessChain 27(data) 1072 38 30
-                              Store 1076 1075
-            1077:      6(int) Load 8(invocation)
-            1078:     72(ptr) AccessChain 27(data) 38 38
-            1079:   20(ivec4) Load 1078
-            1080:   71(ivec2) VectorShuffle 1079 1079 0 1
-            1081:   71(ivec2) GroupNonUniformSMax 34 InclusiveScan 1080
-            1082:     72(ptr) AccessChain 27(data) 1077 38
-            1083:   20(ivec4) Load 1082
-            1084:   20(ivec4) VectorShuffle 1083 1081 4 5 2 3
-                              Store 1082 1084
-            1085:      6(int) Load 8(invocation)
-            1086:     72(ptr) AccessChain 27(data) 49 38
-            1087:   20(ivec4) Load 1086
-            1088:   81(ivec3) VectorShuffle 1087 1087 0 1 2
-            1089:   81(ivec3) GroupNonUniformSMax 34 InclusiveScan 1088
-            1090:     72(ptr) AccessChain 27(data) 1085 38
-            1091:   20(ivec4) Load 1090
-            1092:   20(ivec4) VectorShuffle 1091 1089 4 5 6 3
-                              Store 1090 1092
-            1093:      6(int) Load 8(invocation)
-            1094:     72(ptr) AccessChain 27(data) 59 38
-            1095:   20(ivec4) Load 1094
-            1096:   20(ivec4) GroupNonUniformSMax 34 InclusiveScan 1095
-            1097:     72(ptr) AccessChain 27(data) 1093 38
-                              Store 1097 1096
-            1098:      6(int) Load 8(invocation)
-            1099:     95(ptr) AccessChain 27(data) 29 49 30
-            1100:      6(int) Load 1099
-            1101:      6(int) GroupNonUniformUMax 34 InclusiveScan 1100
-            1102:     95(ptr) AccessChain 27(data) 1098 49 30
-                              Store 1102 1101
-            1103:      6(int) Load 8(invocation)
-            1104:    102(ptr) AccessChain 27(data) 38 49
-            1105:   21(ivec4) Load 1104
-            1106:  101(ivec2) VectorShuffle 1105 1105 0 1
-            1107:  101(ivec2) GroupNonUniformUMax 34 InclusiveScan 1106
-            1108:    102(ptr) AccessChain 27(data) 1103 49
-            1109:   21(ivec4) Load 1108
-            1110:   21(ivec4) VectorShuffle 1109 1107 4 5 2 3
-                              Store 1108 1110
+            1052:    146(ptr) AccessChain 27(data) 38 65
+            1053: 23(f64vec4) Load 1052
+            1054:145(f64vec2) VectorShuffle 1053 1053 0 1
+            1055:145(f64vec2) GroupNonUniformFMul 34 InclusiveScan 1054
+            1056:    139(ptr) AccessChain 27(data) 1051 65 30
+            1057:22(float64_t) CompositeExtract 1055 0
+                              Store 1056 1057
+            1058:    139(ptr) AccessChain 27(data) 1051 65 47
+            1059:22(float64_t) CompositeExtract 1055 1
+                              Store 1058 1059
+            1060:      6(int) Load 8(invocation)
+            1061:    146(ptr) AccessChain 27(data) 51 65
+            1062: 23(f64vec4) Load 1061
+            1063:156(f64vec3) VectorShuffle 1062 1062 0 1 2
+            1064:156(f64vec3) GroupNonUniformFMul 34 InclusiveScan 1063
+            1065:    139(ptr) AccessChain 27(data) 1060 65 30
+            1066:22(float64_t) CompositeExtract 1064 0
+                              Store 1065 1066
+            1067:    139(ptr) AccessChain 27(data) 1060 65 47
+            1068:22(float64_t) CompositeExtract 1064 1
+                              Store 1067 1068
+            1069:    139(ptr) AccessChain 27(data) 1060 65 61
+            1070:22(float64_t) CompositeExtract 1064 2
+                              Store 1069 1070
+            1071:      6(int) Load 8(invocation)
+            1072:    146(ptr) AccessChain 27(data) 65 65
+            1073: 23(f64vec4) Load 1072
+            1074: 23(f64vec4) GroupNonUniformFMul 34 InclusiveScan 1073
+            1075:    146(ptr) AccessChain 27(data) 1071 65
+                              Store 1075 1074
+            1076:      6(int) Load 8(invocation)
+            1077:     31(ptr) AccessChain 27(data) 29 29 30
+            1078:   17(float) Load 1077
+            1079:   17(float) GroupNonUniformFMin 34 InclusiveScan 1078
+            1080:     31(ptr) AccessChain 27(data) 1076 29 30
+                              Store 1080 1079
+            1081:      6(int) Load 8(invocation)
+            1082:     40(ptr) AccessChain 27(data) 38 29
+            1083:   18(fvec4) Load 1082
+            1084:   39(fvec2) VectorShuffle 1083 1083 0 1
+            1085:   39(fvec2) GroupNonUniformFMin 34 InclusiveScan 1084
+            1086:     31(ptr) AccessChain 27(data) 1081 29 30
+            1087:   17(float) CompositeExtract 1085 0
+                              Store 1086 1087
+            1088:     31(ptr) AccessChain 27(data) 1081 29 47
+            1089:   17(float) CompositeExtract 1085 1
+                              Store 1088 1089
+            1090:      6(int) Load 8(invocation)
+            1091:     40(ptr) AccessChain 27(data) 51 29
+            1092:   18(fvec4) Load 1091
+            1093:   52(fvec3) VectorShuffle 1092 1092 0 1 2
+            1094:   52(fvec3) GroupNonUniformFMin 34 InclusiveScan 1093
+            1095:     31(ptr) AccessChain 27(data) 1090 29 30
+            1096:   17(float) CompositeExtract 1094 0
+                              Store 1095 1096
+            1097:     31(ptr) AccessChain 27(data) 1090 29 47
+            1098:   17(float) CompositeExtract 1094 1
+                              Store 1097 1098
+            1099:     31(ptr) AccessChain 27(data) 1090 29 61
+            1100:   17(float) CompositeExtract 1094 2
+                              Store 1099 1100
+            1101:      6(int) Load 8(invocation)
+            1102:     40(ptr) AccessChain 27(data) 65 29
+            1103:   18(fvec4) Load 1102
+            1104:   18(fvec4) GroupNonUniformFMin 34 InclusiveScan 1103
+            1105:     40(ptr) AccessChain 27(data) 1101 29
+                              Store 1105 1104
+            1106:      6(int) Load 8(invocation)
+            1107:     71(ptr) AccessChain 27(data) 29 38 30
+            1108:     19(int) Load 1107
+            1109:     19(int) GroupNonUniformSMin 34 InclusiveScan 1108
+            1110:     71(ptr) AccessChain 27(data) 1106 38 30
+                              Store 1110 1109
             1111:      6(int) Load 8(invocation)
-            1112:    102(ptr) AccessChain 27(data) 49 49
-            1113:   21(ivec4) Load 1112
-            1114:  111(ivec3) VectorShuffle 1113 1113 0 1 2
-            1115:  111(ivec3) GroupNonUniformUMax 34 InclusiveScan 1114
-            1116:    102(ptr) AccessChain 27(data) 1111 49
-            1117:   21(ivec4) Load 1116
-            1118:   21(ivec4) VectorShuffle 1117 1115 4 5 6 3
-                              Store 1116 1118
-            1119:      6(int) Load 8(invocation)
-            1120:    102(ptr) AccessChain 27(data) 59 49
-            1121:   21(ivec4) Load 1120
-            1122:   21(ivec4) GroupNonUniformUMax 34 InclusiveScan 1121
-            1123:    102(ptr) AccessChain 27(data) 1119 49
-                              Store 1123 1122
-            1124:      6(int) Load 8(invocation)
-            1125:    125(ptr) AccessChain 27(data) 29 59 30
-            1126:22(float64_t) Load 1125
-            1127:22(float64_t) GroupNonUniformFMax 34 InclusiveScan 1126
-            1128:    125(ptr) AccessChain 27(data) 1124 59 30
-                              Store 1128 1127
-            1129:      6(int) Load 8(invocation)
-            1130:    132(ptr) AccessChain 27(data) 38 59
-            1131: 23(f64vec4) Load 1130
-            1132:131(f64vec2) VectorShuffle 1131 1131 0 1
-            1133:131(f64vec2) GroupNonUniformFMax 34 InclusiveScan 1132
-            1134:    132(ptr) AccessChain 27(data) 1129 59
-            1135: 23(f64vec4) Load 1134
-            1136: 23(f64vec4) VectorShuffle 1135 1133 4 5 2 3
-                              Store 1134 1136
-            1137:      6(int) Load 8(invocation)
-            1138:    132(ptr) AccessChain 27(data) 49 59
-            1139: 23(f64vec4) Load 1138
-            1140:141(f64vec3) VectorShuffle 1139 1139 0 1 2
-            1141:141(f64vec3) GroupNonUniformFMax 34 InclusiveScan 1140
-            1142:    132(ptr) AccessChain 27(data) 1137 59
-            1143: 23(f64vec4) Load 1142
-            1144: 23(f64vec4) VectorShuffle 1143 1141 4 5 6 3
-                              Store 1142 1144
-            1145:      6(int) Load 8(invocation)
-            1146:    132(ptr) AccessChain 27(data) 59 59
-            1147: 23(f64vec4) Load 1146
-            1148: 23(f64vec4) GroupNonUniformFMax 34 InclusiveScan 1147
-            1149:    132(ptr) AccessChain 27(data) 1145 59
-                              Store 1149 1148
+            1112:     78(ptr) AccessChain 27(data) 38 38
+            1113:   20(ivec4) Load 1112
+            1114:   77(ivec2) VectorShuffle 1113 1113 0 1
+            1115:   77(ivec2) GroupNonUniformSMin 34 InclusiveScan 1114
+            1116:     71(ptr) AccessChain 27(data) 1111 38 30
+            1117:     19(int) CompositeExtract 1115 0
+                              Store 1116 1117
+            1118:     71(ptr) AccessChain 27(data) 1111 38 47
+            1119:     19(int) CompositeExtract 1115 1
+                              Store 1118 1119
+            1120:      6(int) Load 8(invocation)
+            1121:     78(ptr) AccessChain 27(data) 51 38
+            1122:   20(ivec4) Load 1121
+            1123:   88(ivec3) VectorShuffle 1122 1122 0 1 2
+            1124:   88(ivec3) GroupNonUniformSMin 34 InclusiveScan 1123
+            1125:     71(ptr) AccessChain 27(data) 1120 38 30
+            1126:     19(int) CompositeExtract 1124 0
+                              Store 1125 1126
+            1127:     71(ptr) AccessChain 27(data) 1120 38 47
+            1128:     19(int) CompositeExtract 1124 1
+                              Store 1127 1128
+            1129:     71(ptr) AccessChain 27(data) 1120 38 61
+            1130:     19(int) CompositeExtract 1124 2
+                              Store 1129 1130
+            1131:      6(int) Load 8(invocation)
+            1132:     78(ptr) AccessChain 27(data) 65 38
+            1133:   20(ivec4) Load 1132
+            1134:   20(ivec4) GroupNonUniformSMin 34 InclusiveScan 1133
+            1135:     78(ptr) AccessChain 27(data) 1131 38
+                              Store 1135 1134
+            1136:      6(int) Load 8(invocation)
+            1137:    105(ptr) AccessChain 27(data) 29 51 30
+            1138:      6(int) Load 1137
+            1139:      6(int) GroupNonUniformUMin 34 InclusiveScan 1138
+            1140:    105(ptr) AccessChain 27(data) 1136 51 30
+                              Store 1140 1139
+            1141:      6(int) Load 8(invocation)
+            1142:    112(ptr) AccessChain 27(data) 38 51
+            1143:   21(ivec4) Load 1142
+            1144:  111(ivec2) VectorShuffle 1143 1143 0 1
+            1145:  111(ivec2) GroupNonUniformUMin 34 InclusiveScan 1144
+            1146:    105(ptr) AccessChain 27(data) 1141 51 30
+            1147:      6(int) CompositeExtract 1145 0
+                              Store 1146 1147
+            1148:    105(ptr) AccessChain 27(data) 1141 51 47
+            1149:      6(int) CompositeExtract 1145 1
+                              Store 1148 1149
             1150:      6(int) Load 8(invocation)
-            1151:     65(ptr) AccessChain 27(data) 29 38 30
-            1152:     19(int) Load 1151
-            1153:     19(int) GroupNonUniformBitwiseAnd 34 InclusiveScan 1152
-            1154:     65(ptr) AccessChain 27(data) 1150 38 30
-                              Store 1154 1153
-            1155:      6(int) Load 8(invocation)
-            1156:     72(ptr) AccessChain 27(data) 38 38
-            1157:   20(ivec4) Load 1156
-            1158:   71(ivec2) VectorShuffle 1157 1157 0 1
-            1159:   71(ivec2) GroupNonUniformBitwiseAnd 34 InclusiveScan 1158
-            1160:     72(ptr) AccessChain 27(data) 1155 38
-            1161:   20(ivec4) Load 1160
-            1162:   20(ivec4) VectorShuffle 1161 1159 4 5 2 3
-                              Store 1160 1162
-            1163:      6(int) Load 8(invocation)
-            1164:     72(ptr) AccessChain 27(data) 49 38
-            1165:   20(ivec4) Load 1164
-            1166:   81(ivec3) VectorShuffle 1165 1165 0 1 2
-            1167:   81(ivec3) GroupNonUniformBitwiseAnd 34 InclusiveScan 1166
-            1168:     72(ptr) AccessChain 27(data) 1163 38
-            1169:   20(ivec4) Load 1168
-            1170:   20(ivec4) VectorShuffle 1169 1167 4 5 6 3
-                              Store 1168 1170
+            1151:    112(ptr) AccessChain 27(data) 51 51
+            1152:   21(ivec4) Load 1151
+            1153:  122(ivec3) VectorShuffle 1152 1152 0 1 2
+            1154:  122(ivec3) GroupNonUniformUMin 34 InclusiveScan 1153
+            1155:    105(ptr) AccessChain 27(data) 1150 51 30
+            1156:      6(int) CompositeExtract 1154 0
+                              Store 1155 1156
+            1157:    105(ptr) AccessChain 27(data) 1150 51 47
+            1158:      6(int) CompositeExtract 1154 1
+                              Store 1157 1158
+            1159:    105(ptr) AccessChain 27(data) 1150 51 61
+            1160:      6(int) CompositeExtract 1154 2
+                              Store 1159 1160
+            1161:      6(int) Load 8(invocation)
+            1162:    112(ptr) AccessChain 27(data) 65 51
+            1163:   21(ivec4) Load 1162
+            1164:   21(ivec4) GroupNonUniformUMin 34 InclusiveScan 1163
+            1165:    112(ptr) AccessChain 27(data) 1161 51
+                              Store 1165 1164
+            1166:      6(int) Load 8(invocation)
+            1167:    139(ptr) AccessChain 27(data) 29 65 30
+            1168:22(float64_t) Load 1167
+            1169:22(float64_t) GroupNonUniformFMin 34 InclusiveScan 1168
+            1170:    139(ptr) AccessChain 27(data) 1166 65 30
+                              Store 1170 1169
             1171:      6(int) Load 8(invocation)
-            1172:     72(ptr) AccessChain 27(data) 59 38
-            1173:   20(ivec4) Load 1172
-            1174:   20(ivec4) GroupNonUniformBitwiseAnd 34 InclusiveScan 1173
-            1175:     72(ptr) AccessChain 27(data) 1171 38
-                              Store 1175 1174
-            1176:      6(int) Load 8(invocation)
-            1177:     95(ptr) AccessChain 27(data) 29 49 30
-            1178:      6(int) Load 1177
-            1179:      6(int) GroupNonUniformBitwiseAnd 34 InclusiveScan 1178
-            1180:     95(ptr) AccessChain 27(data) 1176 49 30
-                              Store 1180 1179
-            1181:      6(int) Load 8(invocation)
-            1182:    102(ptr) AccessChain 27(data) 38 49
-            1183:   21(ivec4) Load 1182
-            1184:  101(ivec2) VectorShuffle 1183 1183 0 1
-            1185:  101(ivec2) GroupNonUniformBitwiseAnd 34 InclusiveScan 1184
-            1186:    102(ptr) AccessChain 27(data) 1181 49
-            1187:   21(ivec4) Load 1186
-            1188:   21(ivec4) VectorShuffle 1187 1185 4 5 2 3
-                              Store 1186 1188
-            1189:      6(int) Load 8(invocation)
-            1190:    102(ptr) AccessChain 27(data) 49 49
-            1191:   21(ivec4) Load 1190
-            1192:  111(ivec3) VectorShuffle 1191 1191 0 1 2
-            1193:  111(ivec3) GroupNonUniformBitwiseAnd 34 InclusiveScan 1192
-            1194:    102(ptr) AccessChain 27(data) 1189 49
-            1195:   21(ivec4) Load 1194
-            1196:   21(ivec4) VectorShuffle 1195 1193 4 5 6 3
-                              Store 1194 1196
-            1197:      6(int) Load 8(invocation)
-            1198:    102(ptr) AccessChain 27(data) 59 49
-            1199:   21(ivec4) Load 1198
-            1200:   21(ivec4) GroupNonUniformBitwiseAnd 34 InclusiveScan 1199
-            1201:    102(ptr) AccessChain 27(data) 1197 49
-                              Store 1201 1200
-            1202:      6(int) Load 8(invocation)
-            1203:     65(ptr) AccessChain 27(data) 29 38 30
-            1204:     19(int) Load 1203
-            1205:   521(bool) SLessThan 1204 29
-            1206:   521(bool) GroupNonUniformLogicalAnd 34 InclusiveScan 1205
-            1207:     19(int) Select 1206 38 29
-            1208:     65(ptr) AccessChain 27(data) 1202 38 30
-                              Store 1208 1207
-            1209:      6(int) Load 8(invocation)
-            1210:     72(ptr) AccessChain 27(data) 38 38
-            1211:   20(ivec4) Load 1210
-            1212:   71(ivec2) VectorShuffle 1211 1211 0 1
-            1213:  531(bvec2) SLessThan 1212 530
-            1214:  531(bvec2) GroupNonUniformLogicalAnd 34 InclusiveScan 1213
-            1215:   71(ivec2) Select 1214 534 530
-            1216:     72(ptr) AccessChain 27(data) 1209 38
-            1217:   20(ivec4) Load 1216
-            1218:   20(ivec4) VectorShuffle 1217 1215 4 5 2 3
-                              Store 1216 1218
-            1219:      6(int) Load 8(invocation)
-            1220:     72(ptr) AccessChain 27(data) 38 38
-            1221:   20(ivec4) Load 1220
-            1222:   81(ivec3) VectorShuffle 1221 1221 0 1 2
-            1223:  544(bvec3) SLessThan 1222 543
-            1224:  544(bvec3) GroupNonUniformLogicalAnd 34 InclusiveScan 1223
-            1225:   81(ivec3) Select 1224 547 543
-            1226:     72(ptr) AccessChain 27(data) 1219 38
-            1227:   20(ivec4) Load 1226
-            1228:   20(ivec4) VectorShuffle 1227 1225 4 5 6 3
-                              Store 1226 1228
-            1229:      6(int) Load 8(invocation)
-            1230:     72(ptr) AccessChain 27(data) 38 38
-            1231:   20(ivec4) Load 1230
-            1232:  556(bvec4) SLessThan 1231 555
-            1233:  556(bvec4) GroupNonUniformLogicalAnd 34 InclusiveScan 1232
-            1234:   20(ivec4) Select 1233 559 555
-            1235:     72(ptr) AccessChain 27(data) 1229 38
-                              Store 1235 1234
-            1236:      6(int) Load 8(invocation)
-            1237:     65(ptr) AccessChain 27(data) 29 38 30
-            1238:     19(int) Load 1237
-            1239:     19(int) GroupNonUniformBitwiseOr 34 InclusiveScan 1238
-            1240:     65(ptr) AccessChain 27(data) 1236 38 30
-                              Store 1240 1239
-            1241:      6(int) Load 8(invocation)
-            1242:     72(ptr) AccessChain 27(data) 38 38
-            1243:   20(ivec4) Load 1242
-            1244:   71(ivec2) VectorShuffle 1243 1243 0 1
-            1245:   71(ivec2) GroupNonUniformBitwiseOr 34 InclusiveScan 1244
-            1246:     72(ptr) AccessChain 27(data) 1241 38
-            1247:   20(ivec4) Load 1246
-            1248:   20(ivec4) VectorShuffle 1247 1245 4 5 2 3
-                              Store 1246 1248
-            1249:      6(int) Load 8(invocation)
-            1250:     72(ptr) AccessChain 27(data) 49 38
-            1251:   20(ivec4) Load 1250
-            1252:   81(ivec3) VectorShuffle 1251 1251 0 1 2
-            1253:   81(ivec3) GroupNonUniformBitwiseOr 34 InclusiveScan 1252
-            1254:     72(ptr) AccessChain 27(data) 1249 38
-            1255:   20(ivec4) Load 1254
-            1256:   20(ivec4) VectorShuffle 1255 1253 4 5 6 3
-                              Store 1254 1256
-            1257:      6(int) Load 8(invocation)
-            1258:     72(ptr) AccessChain 27(data) 59 38
-            1259:   20(ivec4) Load 1258
-            1260:   20(ivec4) GroupNonUniformBitwiseOr 34 InclusiveScan 1259
-            1261:     72(ptr) AccessChain 27(data) 1257 38
-                              Store 1261 1260
-            1262:      6(int) Load 8(invocation)
-            1263:     95(ptr) AccessChain 27(data) 29 49 30
-            1264:      6(int) Load 1263
-            1265:      6(int) GroupNonUniformBitwiseOr 34 InclusiveScan 1264
-            1266:     95(ptr) AccessChain 27(data) 1262 49 30
-                              Store 1266 1265
-            1267:      6(int) Load 8(invocation)
-            1268:    102(ptr) AccessChain 27(data) 38 49
-            1269:   21(ivec4) Load 1268
-            1270:  101(ivec2) VectorShuffle 1269 1269 0 1
-            1271:  101(ivec2) GroupNonUniformBitwiseOr 34 InclusiveScan 1270
-            1272:    102(ptr) AccessChain 27(data) 1267 49
-            1273:   21(ivec4) Load 1272
-            1274:   21(ivec4) VectorShuffle 1273 1271 4 5 2 3
-                              Store 1272 1274
-            1275:      6(int) Load 8(invocation)
-            1276:    102(ptr) AccessChain 27(data) 49 49
-            1277:   21(ivec4) Load 1276
-            1278:  111(ivec3) VectorShuffle 1277 1277 0 1 2
-            1279:  111(ivec3) GroupNonUniformBitwiseOr 34 InclusiveScan 1278
-            1280:    102(ptr) AccessChain 27(data) 1275 49
-            1281:   21(ivec4) Load 1280
-            1282:   21(ivec4) VectorShuffle 1281 1279 4 5 6 3
-                              Store 1280 1282
-            1283:      6(int) Load 8(invocation)
-            1284:    102(ptr) AccessChain 27(data) 59 49
-            1285:   21(ivec4) Load 1284
-            1286:   21(ivec4) GroupNonUniformBitwiseOr 34 InclusiveScan 1285
-            1287:    102(ptr) AccessChain 27(data) 1283 49
-                              Store 1287 1286
-            1288:      6(int) Load 8(invocation)
-            1289:     65(ptr) AccessChain 27(data) 29 38 30
-            1290:     19(int) Load 1289
-            1291:   521(bool) SLessThan 1290 29
-            1292:   521(bool) GroupNonUniformLogicalOr 34 InclusiveScan 1291
-            1293:     19(int) Select 1292 38 29
-            1294:     65(ptr) AccessChain 27(data) 1288 38 30
-                              Store 1294 1293
-            1295:      6(int) Load 8(invocation)
-            1296:     72(ptr) AccessChain 27(data) 38 38
-            1297:   20(ivec4) Load 1296
-            1298:   71(ivec2) VectorShuffle 1297 1297 0 1
-            1299:  531(bvec2) SLessThan 1298 530
-            1300:  531(bvec2) GroupNonUniformLogicalOr 34 InclusiveScan 1299
-            1301:   71(ivec2) Select 1300 534 530
-            1302:     72(ptr) AccessChain 27(data) 1295 38
-            1303:   20(ivec4) Load 1302
-            1304:   20(ivec4) VectorShuffle 1303 1301 4 5 2 3
-                              Store 1302 1304
-            1305:      6(int) Load 8(invocation)
-            1306:     72(ptr) AccessChain 27(data) 38 38
-            1307:   20(ivec4) Load 1306
-            1308:   81(ivec3) VectorShuffle 1307 1307 0 1 2
-            1309:  544(bvec3) SLessThan 1308 543
-            1310:  544(bvec3) GroupNonUniformLogicalOr 34 InclusiveScan 1309
-            1311:   81(ivec3) Select 1310 547 543
-            1312:     72(ptr) AccessChain 27(data) 1305 38
-            1313:   20(ivec4) Load 1312
-            1314:   20(ivec4) VectorShuffle 1313 1311 4 5 6 3
-                              Store 1312 1314
-            1315:      6(int) Load 8(invocation)
-            1316:     72(ptr) AccessChain 27(data) 38 38
-            1317:   20(ivec4) Load 1316
-            1318:  556(bvec4) SLessThan 1317 555
-            1319:  556(bvec4) GroupNonUniformLogicalOr 34 InclusiveScan 1318
-            1320:   20(ivec4) Select 1319 559 555
-            1321:     72(ptr) AccessChain 27(data) 1315 38
-                              Store 1321 1320
-            1322:      6(int) Load 8(invocation)
-            1323:     65(ptr) AccessChain 27(data) 29 38 30
-            1324:     19(int) Load 1323
-            1325:     19(int) GroupNonUniformBitwiseXor 34 InclusiveScan 1324
-            1326:     65(ptr) AccessChain 27(data) 1322 38 30
-                              Store 1326 1325
-            1327:      6(int) Load 8(invocation)
-            1328:     72(ptr) AccessChain 27(data) 38 38
-            1329:   20(ivec4) Load 1328
-            1330:   71(ivec2) VectorShuffle 1329 1329 0 1
-            1331:   71(ivec2) GroupNonUniformBitwiseXor 34 InclusiveScan 1330
-            1332:     72(ptr) AccessChain 27(data) 1327 38
-            1333:   20(ivec4) Load 1332
-            1334:   20(ivec4) VectorShuffle 1333 1331 4 5 2 3
-                              Store 1332 1334
-            1335:      6(int) Load 8(invocation)
-            1336:     72(ptr) AccessChain 27(data) 49 38
-            1337:   20(ivec4) Load 1336
-            1338:   81(ivec3) VectorShuffle 1337 1337 0 1 2
-            1339:   81(ivec3) GroupNonUniformBitwiseXor 34 InclusiveScan 1338
-            1340:     72(ptr) AccessChain 27(data) 1335 38
-            1341:   20(ivec4) Load 1340
-            1342:   20(ivec4) VectorShuffle 1341 1339 4 5 6 3
-                              Store 1340 1342
-            1343:      6(int) Load 8(invocation)
-            1344:     72(ptr) AccessChain 27(data) 59 38
-            1345:   20(ivec4) Load 1344
-            1346:   20(ivec4) GroupNonUniformBitwiseXor 34 InclusiveScan 1345
-            1347:     72(ptr) AccessChain 27(data) 1343 38
-                              Store 1347 1346
-            1348:      6(int) Load 8(invocation)
-            1349:     95(ptr) AccessChain 27(data) 29 49 30
-            1350:      6(int) Load 1349
-            1351:      6(int) GroupNonUniformBitwiseXor 34 InclusiveScan 1350
-            1352:     95(ptr) AccessChain 27(data) 1348 49 30
-                              Store 1352 1351
-            1353:      6(int) Load 8(invocation)
-            1354:    102(ptr) AccessChain 27(data) 38 49
-            1355:   21(ivec4) Load 1354
-            1356:  101(ivec2) VectorShuffle 1355 1355 0 1
-            1357:  101(ivec2) GroupNonUniformBitwiseXor 34 InclusiveScan 1356
-            1358:    102(ptr) AccessChain 27(data) 1353 49
-            1359:   21(ivec4) Load 1358
-            1360:   21(ivec4) VectorShuffle 1359 1357 4 5 2 3
-                              Store 1358 1360
-            1361:      6(int) Load 8(invocation)
-            1362:    102(ptr) AccessChain 27(data) 49 49
-            1363:   21(ivec4) Load 1362
-            1364:  111(ivec3) VectorShuffle 1363 1363 0 1 2
-            1365:  111(ivec3) GroupNonUniformBitwiseXor 34 InclusiveScan 1364
-            1366:    102(ptr) AccessChain 27(data) 1361 49
-            1367:   21(ivec4) Load 1366
-            1368:   21(ivec4) VectorShuffle 1367 1365 4 5 6 3
-                              Store 1366 1368
-            1369:      6(int) Load 8(invocation)
-            1370:    102(ptr) AccessChain 27(data) 59 49
-            1371:   21(ivec4) Load 1370
-            1372:   21(ivec4) GroupNonUniformBitwiseXor 34 InclusiveScan 1371
-            1373:    102(ptr) AccessChain 27(data) 1369 49
-                              Store 1373 1372
-            1374:      6(int) Load 8(invocation)
-            1375:     65(ptr) AccessChain 27(data) 29 38 30
-            1376:     19(int) Load 1375
-            1377:   521(bool) SLessThan 1376 29
-            1378:   521(bool) GroupNonUniformLogicalXor 34 InclusiveScan 1377
-            1379:     19(int) Select 1378 38 29
-            1380:     65(ptr) AccessChain 27(data) 1374 38 30
-                              Store 1380 1379
-            1381:      6(int) Load 8(invocation)
-            1382:     72(ptr) AccessChain 27(data) 38 38
-            1383:   20(ivec4) Load 1382
-            1384:   71(ivec2) VectorShuffle 1383 1383 0 1
-            1385:  531(bvec2) SLessThan 1384 530
-            1386:  531(bvec2) GroupNonUniformLogicalXor 34 InclusiveScan 1385
-            1387:   71(ivec2) Select 1386 534 530
-            1388:     72(ptr) AccessChain 27(data) 1381 38
-            1389:   20(ivec4) Load 1388
-            1390:   20(ivec4) VectorShuffle 1389 1387 4 5 2 3
-                              Store 1388 1390
-            1391:      6(int) Load 8(invocation)
-            1392:     72(ptr) AccessChain 27(data) 38 38
-            1393:   20(ivec4) Load 1392
-            1394:   81(ivec3) VectorShuffle 1393 1393 0 1 2
-            1395:  544(bvec3) SLessThan 1394 543
-            1396:  544(bvec3) GroupNonUniformLogicalXor 34 InclusiveScan 1395
-            1397:   81(ivec3) Select 1396 547 543
-            1398:     72(ptr) AccessChain 27(data) 1391 38
-            1399:   20(ivec4) Load 1398
-            1400:   20(ivec4) VectorShuffle 1399 1397 4 5 6 3
-                              Store 1398 1400
-            1401:      6(int) Load 8(invocation)
-            1402:     72(ptr) AccessChain 27(data) 38 38
-            1403:   20(ivec4) Load 1402
-            1404:  556(bvec4) SLessThan 1403 555
-            1405:  556(bvec4) GroupNonUniformLogicalXor 34 InclusiveScan 1404
-            1406:   20(ivec4) Select 1405 559 555
-            1407:     72(ptr) AccessChain 27(data) 1401 38
-                              Store 1407 1406
-            1408:      6(int) Load 8(invocation)
-            1409:     31(ptr) AccessChain 27(data) 29 29 30
-            1410:   17(float) Load 1409
-            1411:   17(float) GroupNonUniformFAdd 34 ExclusiveScan 1410
-            1412:     31(ptr) AccessChain 27(data) 1408 29 30
-                              Store 1412 1411
-            1413:      6(int) Load 8(invocation)
-            1414:     40(ptr) AccessChain 27(data) 38 29
-            1415:   18(fvec4) Load 1414
-            1416:   39(fvec2) VectorShuffle 1415 1415 0 1
-            1417:   39(fvec2) GroupNonUniformFAdd 34 ExclusiveScan 1416
-            1418:     40(ptr) AccessChain 27(data) 1413 29
-            1419:   18(fvec4) Load 1418
-            1420:   18(fvec4) VectorShuffle 1419 1417 4 5 2 3
-                              Store 1418 1420
-            1421:      6(int) Load 8(invocation)
-            1422:     40(ptr) AccessChain 27(data) 49 29
-            1423:   18(fvec4) Load 1422
-            1424:   50(fvec3) VectorShuffle 1423 1423 0 1 2
-            1425:   50(fvec3) GroupNonUniformFAdd 34 ExclusiveScan 1424
-            1426:     40(ptr) AccessChain 27(data) 1421 29
-            1427:   18(fvec4) Load 1426
-            1428:   18(fvec4) VectorShuffle 1427 1425 4 5 6 3
-                              Store 1426 1428
-            1429:      6(int) Load 8(invocation)
-            1430:     40(ptr) AccessChain 27(data) 59 29
-            1431:   18(fvec4) Load 1430
-            1432:   18(fvec4) GroupNonUniformFAdd 34 ExclusiveScan 1431
-            1433:     40(ptr) AccessChain 27(data) 1429 29
-                              Store 1433 1432
-            1434:      6(int) Load 8(invocation)
-            1435:     65(ptr) AccessChain 27(data) 29 38 30
-            1436:     19(int) Load 1435
-            1437:     19(int) GroupNonUniformIAdd 34 ExclusiveScan 1436
-            1438:     65(ptr) AccessChain 27(data) 1434 38 30
-                              Store 1438 1437
+            1172:    146(ptr) AccessChain 27(data) 38 65
+            1173: 23(f64vec4) Load 1172
+            1174:145(f64vec2) VectorShuffle 1173 1173 0 1
+            1175:145(f64vec2) GroupNonUniformFMin 34 InclusiveScan 1174
+            1176:    139(ptr) AccessChain 27(data) 1171 65 30
+            1177:22(float64_t) CompositeExtract 1175 0
+                              Store 1176 1177
+            1178:    139(ptr) AccessChain 27(data) 1171 65 47
+            1179:22(float64_t) CompositeExtract 1175 1
+                              Store 1178 1179
+            1180:      6(int) Load 8(invocation)
+            1181:    146(ptr) AccessChain 27(data) 51 65
+            1182: 23(f64vec4) Load 1181
+            1183:156(f64vec3) VectorShuffle 1182 1182 0 1 2
+            1184:156(f64vec3) GroupNonUniformFMin 34 InclusiveScan 1183
+            1185:    139(ptr) AccessChain 27(data) 1180 65 30
+            1186:22(float64_t) CompositeExtract 1184 0
+                              Store 1185 1186
+            1187:    139(ptr) AccessChain 27(data) 1180 65 47
+            1188:22(float64_t) CompositeExtract 1184 1
+                              Store 1187 1188
+            1189:    139(ptr) AccessChain 27(data) 1180 65 61
+            1190:22(float64_t) CompositeExtract 1184 2
+                              Store 1189 1190
+            1191:      6(int) Load 8(invocation)
+            1192:    146(ptr) AccessChain 27(data) 65 65
+            1193: 23(f64vec4) Load 1192
+            1194: 23(f64vec4) GroupNonUniformFMin 34 InclusiveScan 1193
+            1195:    146(ptr) AccessChain 27(data) 1191 65
+                              Store 1195 1194
+            1196:      6(int) Load 8(invocation)
+            1197:     31(ptr) AccessChain 27(data) 29 29 30
+            1198:   17(float) Load 1197
+            1199:   17(float) GroupNonUniformFMax 34 InclusiveScan 1198
+            1200:     31(ptr) AccessChain 27(data) 1196 29 30
+                              Store 1200 1199
+            1201:      6(int) Load 8(invocation)
+            1202:     40(ptr) AccessChain 27(data) 38 29
+            1203:   18(fvec4) Load 1202
+            1204:   39(fvec2) VectorShuffle 1203 1203 0 1
+            1205:   39(fvec2) GroupNonUniformFMax 34 InclusiveScan 1204
+            1206:     31(ptr) AccessChain 27(data) 1201 29 30
+            1207:   17(float) CompositeExtract 1205 0
+                              Store 1206 1207
+            1208:     31(ptr) AccessChain 27(data) 1201 29 47
+            1209:   17(float) CompositeExtract 1205 1
+                              Store 1208 1209
+            1210:      6(int) Load 8(invocation)
+            1211:     40(ptr) AccessChain 27(data) 51 29
+            1212:   18(fvec4) Load 1211
+            1213:   52(fvec3) VectorShuffle 1212 1212 0 1 2
+            1214:   52(fvec3) GroupNonUniformFMax 34 InclusiveScan 1213
+            1215:     31(ptr) AccessChain 27(data) 1210 29 30
+            1216:   17(float) CompositeExtract 1214 0
+                              Store 1215 1216
+            1217:     31(ptr) AccessChain 27(data) 1210 29 47
+            1218:   17(float) CompositeExtract 1214 1
+                              Store 1217 1218
+            1219:     31(ptr) AccessChain 27(data) 1210 29 61
+            1220:   17(float) CompositeExtract 1214 2
+                              Store 1219 1220
+            1221:      6(int) Load 8(invocation)
+            1222:     40(ptr) AccessChain 27(data) 65 29
+            1223:   18(fvec4) Load 1222
+            1224:   18(fvec4) GroupNonUniformFMax 34 InclusiveScan 1223
+            1225:     40(ptr) AccessChain 27(data) 1221 29
+                              Store 1225 1224
+            1226:      6(int) Load 8(invocation)
+            1227:     71(ptr) AccessChain 27(data) 29 38 30
+            1228:     19(int) Load 1227
+            1229:     19(int) GroupNonUniformSMax 34 InclusiveScan 1228
+            1230:     71(ptr) AccessChain 27(data) 1226 38 30
+                              Store 1230 1229
+            1231:      6(int) Load 8(invocation)
+            1232:     78(ptr) AccessChain 27(data) 38 38
+            1233:   20(ivec4) Load 1232
+            1234:   77(ivec2) VectorShuffle 1233 1233 0 1
+            1235:   77(ivec2) GroupNonUniformSMax 34 InclusiveScan 1234
+            1236:     71(ptr) AccessChain 27(data) 1231 38 30
+            1237:     19(int) CompositeExtract 1235 0
+                              Store 1236 1237
+            1238:     71(ptr) AccessChain 27(data) 1231 38 47
+            1239:     19(int) CompositeExtract 1235 1
+                              Store 1238 1239
+            1240:      6(int) Load 8(invocation)
+            1241:     78(ptr) AccessChain 27(data) 51 38
+            1242:   20(ivec4) Load 1241
+            1243:   88(ivec3) VectorShuffle 1242 1242 0 1 2
+            1244:   88(ivec3) GroupNonUniformSMax 34 InclusiveScan 1243
+            1245:     71(ptr) AccessChain 27(data) 1240 38 30
+            1246:     19(int) CompositeExtract 1244 0
+                              Store 1245 1246
+            1247:     71(ptr) AccessChain 27(data) 1240 38 47
+            1248:     19(int) CompositeExtract 1244 1
+                              Store 1247 1248
+            1249:     71(ptr) AccessChain 27(data) 1240 38 61
+            1250:     19(int) CompositeExtract 1244 2
+                              Store 1249 1250
+            1251:      6(int) Load 8(invocation)
+            1252:     78(ptr) AccessChain 27(data) 65 38
+            1253:   20(ivec4) Load 1252
+            1254:   20(ivec4) GroupNonUniformSMax 34 InclusiveScan 1253
+            1255:     78(ptr) AccessChain 27(data) 1251 38
+                              Store 1255 1254
+            1256:      6(int) Load 8(invocation)
+            1257:    105(ptr) AccessChain 27(data) 29 51 30
+            1258:      6(int) Load 1257
+            1259:      6(int) GroupNonUniformUMax 34 InclusiveScan 1258
+            1260:    105(ptr) AccessChain 27(data) 1256 51 30
+                              Store 1260 1259
+            1261:      6(int) Load 8(invocation)
+            1262:    112(ptr) AccessChain 27(data) 38 51
+            1263:   21(ivec4) Load 1262
+            1264:  111(ivec2) VectorShuffle 1263 1263 0 1
+            1265:  111(ivec2) GroupNonUniformUMax 34 InclusiveScan 1264
+            1266:    105(ptr) AccessChain 27(data) 1261 51 30
+            1267:      6(int) CompositeExtract 1265 0
+                              Store 1266 1267
+            1268:    105(ptr) AccessChain 27(data) 1261 51 47
+            1269:      6(int) CompositeExtract 1265 1
+                              Store 1268 1269
+            1270:      6(int) Load 8(invocation)
+            1271:    112(ptr) AccessChain 27(data) 51 51
+            1272:   21(ivec4) Load 1271
+            1273:  122(ivec3) VectorShuffle 1272 1272 0 1 2
+            1274:  122(ivec3) GroupNonUniformUMax 34 InclusiveScan 1273
+            1275:    105(ptr) AccessChain 27(data) 1270 51 30
+            1276:      6(int) CompositeExtract 1274 0
+                              Store 1275 1276
+            1277:    105(ptr) AccessChain 27(data) 1270 51 47
+            1278:      6(int) CompositeExtract 1274 1
+                              Store 1277 1278
+            1279:    105(ptr) AccessChain 27(data) 1270 51 61
+            1280:      6(int) CompositeExtract 1274 2
+                              Store 1279 1280
+            1281:      6(int) Load 8(invocation)
+            1282:    112(ptr) AccessChain 27(data) 65 51
+            1283:   21(ivec4) Load 1282
+            1284:   21(ivec4) GroupNonUniformUMax 34 InclusiveScan 1283
+            1285:    112(ptr) AccessChain 27(data) 1281 51
+                              Store 1285 1284
+            1286:      6(int) Load 8(invocation)
+            1287:    139(ptr) AccessChain 27(data) 29 65 30
+            1288:22(float64_t) Load 1287
+            1289:22(float64_t) GroupNonUniformFMax 34 InclusiveScan 1288
+            1290:    139(ptr) AccessChain 27(data) 1286 65 30
+                              Store 1290 1289
+            1291:      6(int) Load 8(invocation)
+            1292:    146(ptr) AccessChain 27(data) 38 65
+            1293: 23(f64vec4) Load 1292
+            1294:145(f64vec2) VectorShuffle 1293 1293 0 1
+            1295:145(f64vec2) GroupNonUniformFMax 34 InclusiveScan 1294
+            1296:    139(ptr) AccessChain 27(data) 1291 65 30
+            1297:22(float64_t) CompositeExtract 1295 0
+                              Store 1296 1297
+            1298:    139(ptr) AccessChain 27(data) 1291 65 47
+            1299:22(float64_t) CompositeExtract 1295 1
+                              Store 1298 1299
+            1300:      6(int) Load 8(invocation)
+            1301:    146(ptr) AccessChain 27(data) 51 65
+            1302: 23(f64vec4) Load 1301
+            1303:156(f64vec3) VectorShuffle 1302 1302 0 1 2
+            1304:156(f64vec3) GroupNonUniformFMax 34 InclusiveScan 1303
+            1305:    139(ptr) AccessChain 27(data) 1300 65 30
+            1306:22(float64_t) CompositeExtract 1304 0
+                              Store 1305 1306
+            1307:    139(ptr) AccessChain 27(data) 1300 65 47
+            1308:22(float64_t) CompositeExtract 1304 1
+                              Store 1307 1308
+            1309:    139(ptr) AccessChain 27(data) 1300 65 61
+            1310:22(float64_t) CompositeExtract 1304 2
+                              Store 1309 1310
+            1311:      6(int) Load 8(invocation)
+            1312:    146(ptr) AccessChain 27(data) 65 65
+            1313: 23(f64vec4) Load 1312
+            1314: 23(f64vec4) GroupNonUniformFMax 34 InclusiveScan 1313
+            1315:    146(ptr) AccessChain 27(data) 1311 65
+                              Store 1315 1314
+            1316:      6(int) Load 8(invocation)
+            1317:     71(ptr) AccessChain 27(data) 29 38 30
+            1318:     19(int) Load 1317
+            1319:     19(int) GroupNonUniformBitwiseAnd 34 InclusiveScan 1318
+            1320:     71(ptr) AccessChain 27(data) 1316 38 30
+                              Store 1320 1319
+            1321:      6(int) Load 8(invocation)
+            1322:     78(ptr) AccessChain 27(data) 38 38
+            1323:   20(ivec4) Load 1322
+            1324:   77(ivec2) VectorShuffle 1323 1323 0 1
+            1325:   77(ivec2) GroupNonUniformBitwiseAnd 34 InclusiveScan 1324
+            1326:     71(ptr) AccessChain 27(data) 1321 38 30
+            1327:     19(int) CompositeExtract 1325 0
+                              Store 1326 1327
+            1328:     71(ptr) AccessChain 27(data) 1321 38 47
+            1329:     19(int) CompositeExtract 1325 1
+                              Store 1328 1329
+            1330:      6(int) Load 8(invocation)
+            1331:     78(ptr) AccessChain 27(data) 51 38
+            1332:   20(ivec4) Load 1331
+            1333:   88(ivec3) VectorShuffle 1332 1332 0 1 2
+            1334:   88(ivec3) GroupNonUniformBitwiseAnd 34 InclusiveScan 1333
+            1335:     71(ptr) AccessChain 27(data) 1330 38 30
+            1336:     19(int) CompositeExtract 1334 0
+                              Store 1335 1336
+            1337:     71(ptr) AccessChain 27(data) 1330 38 47
+            1338:     19(int) CompositeExtract 1334 1
+                              Store 1337 1338
+            1339:     71(ptr) AccessChain 27(data) 1330 38 61
+            1340:     19(int) CompositeExtract 1334 2
+                              Store 1339 1340
+            1341:      6(int) Load 8(invocation)
+            1342:     78(ptr) AccessChain 27(data) 65 38
+            1343:   20(ivec4) Load 1342
+            1344:   20(ivec4) GroupNonUniformBitwiseAnd 34 InclusiveScan 1343
+            1345:     78(ptr) AccessChain 27(data) 1341 38
+                              Store 1345 1344
+            1346:      6(int) Load 8(invocation)
+            1347:    105(ptr) AccessChain 27(data) 29 51 30
+            1348:      6(int) Load 1347
+            1349:      6(int) GroupNonUniformBitwiseAnd 34 InclusiveScan 1348
+            1350:    105(ptr) AccessChain 27(data) 1346 51 30
+                              Store 1350 1349
+            1351:      6(int) Load 8(invocation)
+            1352:    112(ptr) AccessChain 27(data) 38 51
+            1353:   21(ivec4) Load 1352
+            1354:  111(ivec2) VectorShuffle 1353 1353 0 1
+            1355:  111(ivec2) GroupNonUniformBitwiseAnd 34 InclusiveScan 1354
+            1356:    105(ptr) AccessChain 27(data) 1351 51 30
+            1357:      6(int) CompositeExtract 1355 0
+                              Store 1356 1357
+            1358:    105(ptr) AccessChain 27(data) 1351 51 47
+            1359:      6(int) CompositeExtract 1355 1
+                              Store 1358 1359
+            1360:      6(int) Load 8(invocation)
+            1361:    112(ptr) AccessChain 27(data) 51 51
+            1362:   21(ivec4) Load 1361
+            1363:  122(ivec3) VectorShuffle 1362 1362 0 1 2
+            1364:  122(ivec3) GroupNonUniformBitwiseAnd 34 InclusiveScan 1363
+            1365:    105(ptr) AccessChain 27(data) 1360 51 30
+            1366:      6(int) CompositeExtract 1364 0
+                              Store 1365 1366
+            1367:    105(ptr) AccessChain 27(data) 1360 51 47
+            1368:      6(int) CompositeExtract 1364 1
+                              Store 1367 1368
+            1369:    105(ptr) AccessChain 27(data) 1360 51 61
+            1370:      6(int) CompositeExtract 1364 2
+                              Store 1369 1370
+            1371:      6(int) Load 8(invocation)
+            1372:    112(ptr) AccessChain 27(data) 65 51
+            1373:   21(ivec4) Load 1372
+            1374:   21(ivec4) GroupNonUniformBitwiseAnd 34 InclusiveScan 1373
+            1375:    112(ptr) AccessChain 27(data) 1371 51
+                              Store 1375 1374
+            1376:      6(int) Load 8(invocation)
+            1377:     71(ptr) AccessChain 27(data) 29 38 30
+            1378:     19(int) Load 1377
+            1379:   595(bool) SLessThan 1378 29
+            1380:   595(bool) GroupNonUniformLogicalAnd 34 InclusiveScan 1379
+            1381:     19(int) Select 1380 38 29
+            1382:     71(ptr) AccessChain 27(data) 1376 38 30
+                              Store 1382 1381
+            1383:      6(int) Load 8(invocation)
+            1384:     78(ptr) AccessChain 27(data) 38 38
+            1385:   20(ivec4) Load 1384
+            1386:   77(ivec2) VectorShuffle 1385 1385 0 1
+            1387:  605(bvec2) SLessThan 1386 604
+            1388:  605(bvec2) GroupNonUniformLogicalAnd 34 InclusiveScan 1387
+            1389:   77(ivec2) Select 1388 608 604
+            1390:     71(ptr) AccessChain 27(data) 1383 38 30
+            1391:     19(int) CompositeExtract 1389 0
+                              Store 1390 1391
+            1392:     71(ptr) AccessChain 27(data) 1383 38 47
+            1393:     19(int) CompositeExtract 1389 1
+                              Store 1392 1393
+            1394:      6(int) Load 8(invocation)
+            1395:     78(ptr) AccessChain 27(data) 38 38
+            1396:   20(ivec4) Load 1395
+            1397:   88(ivec3) VectorShuffle 1396 1396 0 1 2
+            1398:  619(bvec3) SLessThan 1397 618
+            1399:  619(bvec3) GroupNonUniformLogicalAnd 34 InclusiveScan 1398
+            1400:   88(ivec3) Select 1399 622 618
+            1401:     71(ptr) AccessChain 27(data) 1394 38 30
+            1402:     19(int) CompositeExtract 1400 0
+                              Store 1401 1402
+            1403:     71(ptr) AccessChain 27(data) 1394 38 47
+            1404:     19(int) CompositeExtract 1400 1
+                              Store 1403 1404
+            1405:     71(ptr) AccessChain 27(data) 1394 38 61
+            1406:     19(int) CompositeExtract 1400 2
+                              Store 1405 1406
+            1407:      6(int) Load 8(invocation)
+            1408:     78(ptr) AccessChain 27(data) 38 38
+            1409:   20(ivec4) Load 1408
+            1410:  634(bvec4) SLessThan 1409 633
+            1411:  634(bvec4) GroupNonUniformLogicalAnd 34 InclusiveScan 1410
+            1412:   20(ivec4) Select 1411 637 633
+            1413:     78(ptr) AccessChain 27(data) 1407 38
+                              Store 1413 1412
+            1414:      6(int) Load 8(invocation)
+            1415:     71(ptr) AccessChain 27(data) 29 38 30
+            1416:     19(int) Load 1415
+            1417:     19(int) GroupNonUniformBitwiseOr 34 InclusiveScan 1416
+            1418:     71(ptr) AccessChain 27(data) 1414 38 30
+                              Store 1418 1417
+            1419:      6(int) Load 8(invocation)
+            1420:     78(ptr) AccessChain 27(data) 38 38
+            1421:   20(ivec4) Load 1420
+            1422:   77(ivec2) VectorShuffle 1421 1421 0 1
+            1423:   77(ivec2) GroupNonUniformBitwiseOr 34 InclusiveScan 1422
+            1424:     71(ptr) AccessChain 27(data) 1419 38 30
+            1425:     19(int) CompositeExtract 1423 0
+                              Store 1424 1425
+            1426:     71(ptr) AccessChain 27(data) 1419 38 47
+            1427:     19(int) CompositeExtract 1423 1
+                              Store 1426 1427
+            1428:      6(int) Load 8(invocation)
+            1429:     78(ptr) AccessChain 27(data) 51 38
+            1430:   20(ivec4) Load 1429
+            1431:   88(ivec3) VectorShuffle 1430 1430 0 1 2
+            1432:   88(ivec3) GroupNonUniformBitwiseOr 34 InclusiveScan 1431
+            1433:     71(ptr) AccessChain 27(data) 1428 38 30
+            1434:     19(int) CompositeExtract 1432 0
+                              Store 1433 1434
+            1435:     71(ptr) AccessChain 27(data) 1428 38 47
+            1436:     19(int) CompositeExtract 1432 1
+                              Store 1435 1436
+            1437:     71(ptr) AccessChain 27(data) 1428 38 61
+            1438:     19(int) CompositeExtract 1432 2
+                              Store 1437 1438
             1439:      6(int) Load 8(invocation)
-            1440:     72(ptr) AccessChain 27(data) 38 38
+            1440:     78(ptr) AccessChain 27(data) 65 38
             1441:   20(ivec4) Load 1440
-            1442:   71(ivec2) VectorShuffle 1441 1441 0 1
-            1443:   71(ivec2) GroupNonUniformIAdd 34 ExclusiveScan 1442
-            1444:     72(ptr) AccessChain 27(data) 1439 38
-            1445:   20(ivec4) Load 1444
-            1446:   20(ivec4) VectorShuffle 1445 1443 4 5 2 3
-                              Store 1444 1446
-            1447:      6(int) Load 8(invocation)
-            1448:     72(ptr) AccessChain 27(data) 49 38
-            1449:   20(ivec4) Load 1448
-            1450:   81(ivec3) VectorShuffle 1449 1449 0 1 2
-            1451:   81(ivec3) GroupNonUniformIAdd 34 ExclusiveScan 1450
-            1452:     72(ptr) AccessChain 27(data) 1447 38
-            1453:   20(ivec4) Load 1452
-            1454:   20(ivec4) VectorShuffle 1453 1451 4 5 6 3
-                              Store 1452 1454
-            1455:      6(int) Load 8(invocation)
-            1456:     72(ptr) AccessChain 27(data) 59 38
-            1457:   20(ivec4) Load 1456
-            1458:   20(ivec4) GroupNonUniformIAdd 34 ExclusiveScan 1457
-            1459:     72(ptr) AccessChain 27(data) 1455 38
-                              Store 1459 1458
-            1460:      6(int) Load 8(invocation)
-            1461:     95(ptr) AccessChain 27(data) 29 49 30
-            1462:      6(int) Load 1461
-            1463:      6(int) GroupNonUniformIAdd 34 ExclusiveScan 1462
-            1464:     95(ptr) AccessChain 27(data) 1460 49 30
-                              Store 1464 1463
-            1465:      6(int) Load 8(invocation)
-            1466:    102(ptr) AccessChain 27(data) 38 49
-            1467:   21(ivec4) Load 1466
-            1468:  101(ivec2) VectorShuffle 1467 1467 0 1
-            1469:  101(ivec2) GroupNonUniformIAdd 34 ExclusiveScan 1468
-            1470:    102(ptr) AccessChain 27(data) 1465 49
+            1442:   20(ivec4) GroupNonUniformBitwiseOr 34 InclusiveScan 1441
+            1443:     78(ptr) AccessChain 27(data) 1439 38
+                              Store 1443 1442
+            1444:      6(int) Load 8(invocation)
+            1445:    105(ptr) AccessChain 27(data) 29 51 30
+            1446:      6(int) Load 1445
+            1447:      6(int) GroupNonUniformBitwiseOr 34 InclusiveScan 1446
+            1448:    105(ptr) AccessChain 27(data) 1444 51 30
+                              Store 1448 1447
+            1449:      6(int) Load 8(invocation)
+            1450:    112(ptr) AccessChain 27(data) 38 51
+            1451:   21(ivec4) Load 1450
+            1452:  111(ivec2) VectorShuffle 1451 1451 0 1
+            1453:  111(ivec2) GroupNonUniformBitwiseOr 34 InclusiveScan 1452
+            1454:    105(ptr) AccessChain 27(data) 1449 51 30
+            1455:      6(int) CompositeExtract 1453 0
+                              Store 1454 1455
+            1456:    105(ptr) AccessChain 27(data) 1449 51 47
+            1457:      6(int) CompositeExtract 1453 1
+                              Store 1456 1457
+            1458:      6(int) Load 8(invocation)
+            1459:    112(ptr) AccessChain 27(data) 51 51
+            1460:   21(ivec4) Load 1459
+            1461:  122(ivec3) VectorShuffle 1460 1460 0 1 2
+            1462:  122(ivec3) GroupNonUniformBitwiseOr 34 InclusiveScan 1461
+            1463:    105(ptr) AccessChain 27(data) 1458 51 30
+            1464:      6(int) CompositeExtract 1462 0
+                              Store 1463 1464
+            1465:    105(ptr) AccessChain 27(data) 1458 51 47
+            1466:      6(int) CompositeExtract 1462 1
+                              Store 1465 1466
+            1467:    105(ptr) AccessChain 27(data) 1458 51 61
+            1468:      6(int) CompositeExtract 1462 2
+                              Store 1467 1468
+            1469:      6(int) Load 8(invocation)
+            1470:    112(ptr) AccessChain 27(data) 65 51
             1471:   21(ivec4) Load 1470
-            1472:   21(ivec4) VectorShuffle 1471 1469 4 5 2 3
-                              Store 1470 1472
-            1473:      6(int) Load 8(invocation)
-            1474:    102(ptr) AccessChain 27(data) 49 49
-            1475:   21(ivec4) Load 1474
-            1476:  111(ivec3) VectorShuffle 1475 1475 0 1 2
-            1477:  111(ivec3) GroupNonUniformIAdd 34 ExclusiveScan 1476
-            1478:    102(ptr) AccessChain 27(data) 1473 49
-            1479:   21(ivec4) Load 1478
-            1480:   21(ivec4) VectorShuffle 1479 1477 4 5 6 3
-                              Store 1478 1480
+            1472:   21(ivec4) GroupNonUniformBitwiseOr 34 InclusiveScan 1471
+            1473:    112(ptr) AccessChain 27(data) 1469 51
+                              Store 1473 1472
+            1474:      6(int) Load 8(invocation)
+            1475:     71(ptr) AccessChain 27(data) 29 38 30
+            1476:     19(int) Load 1475
+            1477:   595(bool) SLessThan 1476 29
+            1478:   595(bool) GroupNonUniformLogicalOr 34 InclusiveScan 1477
+            1479:     19(int) Select 1478 38 29
+            1480:     71(ptr) AccessChain 27(data) 1474 38 30
+                              Store 1480 1479
             1481:      6(int) Load 8(invocation)
-            1482:    102(ptr) AccessChain 27(data) 59 49
-            1483:   21(ivec4) Load 1482
-            1484:   21(ivec4) GroupNonUniformIAdd 34 ExclusiveScan 1483
-            1485:    102(ptr) AccessChain 27(data) 1481 49
-                              Store 1485 1484
-            1486:      6(int) Load 8(invocation)
-            1487:    125(ptr) AccessChain 27(data) 29 59 30
-            1488:22(float64_t) Load 1487
-            1489:22(float64_t) GroupNonUniformFAdd 34 ExclusiveScan 1488
-            1490:    125(ptr) AccessChain 27(data) 1486 59 30
-                              Store 1490 1489
-            1491:      6(int) Load 8(invocation)
-            1492:    132(ptr) AccessChain 27(data) 38 59
-            1493: 23(f64vec4) Load 1492
-            1494:131(f64vec2) VectorShuffle 1493 1493 0 1
-            1495:131(f64vec2) GroupNonUniformFAdd 34 ExclusiveScan 1494
-            1496:    132(ptr) AccessChain 27(data) 1491 59
-            1497: 23(f64vec4) Load 1496
-            1498: 23(f64vec4) VectorShuffle 1497 1495 4 5 2 3
-                              Store 1496 1498
-            1499:      6(int) Load 8(invocation)
-            1500:    132(ptr) AccessChain 27(data) 49 59
-            1501: 23(f64vec4) Load 1500
-            1502:141(f64vec3) VectorShuffle 1501 1501 0 1 2
-            1503:141(f64vec3) GroupNonUniformFAdd 34 ExclusiveScan 1502
-            1504:    132(ptr) AccessChain 27(data) 1499 59
-            1505: 23(f64vec4) Load 1504
-            1506: 23(f64vec4) VectorShuffle 1505 1503 4 5 6 3
-                              Store 1504 1506
-            1507:      6(int) Load 8(invocation)
-            1508:    132(ptr) AccessChain 27(data) 59 59
-            1509: 23(f64vec4) Load 1508
-            1510: 23(f64vec4) GroupNonUniformFAdd 34 ExclusiveScan 1509
-            1511:    132(ptr) AccessChain 27(data) 1507 59
+            1482:     78(ptr) AccessChain 27(data) 38 38
+            1483:   20(ivec4) Load 1482
+            1484:   77(ivec2) VectorShuffle 1483 1483 0 1
+            1485:  605(bvec2) SLessThan 1484 604
+            1486:  605(bvec2) GroupNonUniformLogicalOr 34 InclusiveScan 1485
+            1487:   77(ivec2) Select 1486 608 604
+            1488:     71(ptr) AccessChain 27(data) 1481 38 30
+            1489:     19(int) CompositeExtract 1487 0
+                              Store 1488 1489
+            1490:     71(ptr) AccessChain 27(data) 1481 38 47
+            1491:     19(int) CompositeExtract 1487 1
+                              Store 1490 1491
+            1492:      6(int) Load 8(invocation)
+            1493:     78(ptr) AccessChain 27(data) 38 38
+            1494:   20(ivec4) Load 1493
+            1495:   88(ivec3) VectorShuffle 1494 1494 0 1 2
+            1496:  619(bvec3) SLessThan 1495 618
+            1497:  619(bvec3) GroupNonUniformLogicalOr 34 InclusiveScan 1496
+            1498:   88(ivec3) Select 1497 622 618
+            1499:     71(ptr) AccessChain 27(data) 1492 38 30
+            1500:     19(int) CompositeExtract 1498 0
+                              Store 1499 1500
+            1501:     71(ptr) AccessChain 27(data) 1492 38 47
+            1502:     19(int) CompositeExtract 1498 1
+                              Store 1501 1502
+            1503:     71(ptr) AccessChain 27(data) 1492 38 61
+            1504:     19(int) CompositeExtract 1498 2
+                              Store 1503 1504
+            1505:      6(int) Load 8(invocation)
+            1506:     78(ptr) AccessChain 27(data) 38 38
+            1507:   20(ivec4) Load 1506
+            1508:  634(bvec4) SLessThan 1507 633
+            1509:  634(bvec4) GroupNonUniformLogicalOr 34 InclusiveScan 1508
+            1510:   20(ivec4) Select 1509 637 633
+            1511:     78(ptr) AccessChain 27(data) 1505 38
                               Store 1511 1510
             1512:      6(int) Load 8(invocation)
-            1513:     31(ptr) AccessChain 27(data) 29 29 30
-            1514:   17(float) Load 1513
-            1515:   17(float) GroupNonUniformFMul 34 ExclusiveScan 1514
-            1516:     31(ptr) AccessChain 27(data) 1512 29 30
+            1513:     71(ptr) AccessChain 27(data) 29 38 30
+            1514:     19(int) Load 1513
+            1515:     19(int) GroupNonUniformBitwiseXor 34 InclusiveScan 1514
+            1516:     71(ptr) AccessChain 27(data) 1512 38 30
                               Store 1516 1515
             1517:      6(int) Load 8(invocation)
-            1518:     40(ptr) AccessChain 27(data) 38 29
-            1519:   18(fvec4) Load 1518
-            1520:   39(fvec2) VectorShuffle 1519 1519 0 1
-            1521:   39(fvec2) GroupNonUniformFMul 34 ExclusiveScan 1520
-            1522:     40(ptr) AccessChain 27(data) 1517 29
-            1523:   18(fvec4) Load 1522
-            1524:   18(fvec4) VectorShuffle 1523 1521 4 5 2 3
-                              Store 1522 1524
-            1525:      6(int) Load 8(invocation)
-            1526:     40(ptr) AccessChain 27(data) 49 29
-            1527:   18(fvec4) Load 1526
-            1528:   50(fvec3) VectorShuffle 1527 1527 0 1 2
-            1529:   50(fvec3) GroupNonUniformFMul 34 ExclusiveScan 1528
-            1530:     40(ptr) AccessChain 27(data) 1525 29
-            1531:   18(fvec4) Load 1530
-            1532:   18(fvec4) VectorShuffle 1531 1529 4 5 6 3
-                              Store 1530 1532
-            1533:      6(int) Load 8(invocation)
-            1534:     40(ptr) AccessChain 27(data) 59 29
-            1535:   18(fvec4) Load 1534
-            1536:   18(fvec4) GroupNonUniformFMul 34 ExclusiveScan 1535
-            1537:     40(ptr) AccessChain 27(data) 1533 29
-                              Store 1537 1536
-            1538:      6(int) Load 8(invocation)
-            1539:     65(ptr) AccessChain 27(data) 29 38 30
-            1540:     19(int) Load 1539
-            1541:     19(int) GroupNonUniformIMul 34 ExclusiveScan 1540
-            1542:     65(ptr) AccessChain 27(data) 1538 38 30
-                              Store 1542 1541
-            1543:      6(int) Load 8(invocation)
-            1544:     72(ptr) AccessChain 27(data) 38 38
-            1545:   20(ivec4) Load 1544
-            1546:   71(ivec2) VectorShuffle 1545 1545 0 1
-            1547:   71(ivec2) GroupNonUniformIMul 34 ExclusiveScan 1546
-            1548:     72(ptr) AccessChain 27(data) 1543 38
-            1549:   20(ivec4) Load 1548
-            1550:   20(ivec4) VectorShuffle 1549 1547 4 5 2 3
-                              Store 1548 1550
-            1551:      6(int) Load 8(invocation)
-            1552:     72(ptr) AccessChain 27(data) 49 38
-            1553:   20(ivec4) Load 1552
-            1554:   81(ivec3) VectorShuffle 1553 1553 0 1 2
-            1555:   81(ivec3) GroupNonUniformIMul 34 ExclusiveScan 1554
-            1556:     72(ptr) AccessChain 27(data) 1551 38
-            1557:   20(ivec4) Load 1556
-            1558:   20(ivec4) VectorShuffle 1557 1555 4 5 6 3
-                              Store 1556 1558
-            1559:      6(int) Load 8(invocation)
-            1560:     72(ptr) AccessChain 27(data) 59 38
-            1561:   20(ivec4) Load 1560
-            1562:   20(ivec4) GroupNonUniformIMul 34 ExclusiveScan 1561
-            1563:     72(ptr) AccessChain 27(data) 1559 38
-                              Store 1563 1562
-            1564:      6(int) Load 8(invocation)
-            1565:     95(ptr) AccessChain 27(data) 29 49 30
-            1566:      6(int) Load 1565
-            1567:      6(int) GroupNonUniformIMul 34 ExclusiveScan 1566
-            1568:     95(ptr) AccessChain 27(data) 1564 49 30
-                              Store 1568 1567
-            1569:      6(int) Load 8(invocation)
-            1570:    102(ptr) AccessChain 27(data) 38 49
-            1571:   21(ivec4) Load 1570
-            1572:  101(ivec2) VectorShuffle 1571 1571 0 1
-            1573:  101(ivec2) GroupNonUniformIMul 34 ExclusiveScan 1572
-            1574:    102(ptr) AccessChain 27(data) 1569 49
-            1575:   21(ivec4) Load 1574
-            1576:   21(ivec4) VectorShuffle 1575 1573 4 5 2 3
-                              Store 1574 1576
-            1577:      6(int) Load 8(invocation)
-            1578:    102(ptr) AccessChain 27(data) 49 49
-            1579:   21(ivec4) Load 1578
-            1580:  111(ivec3) VectorShuffle 1579 1579 0 1 2
-            1581:  111(ivec3) GroupNonUniformIMul 34 ExclusiveScan 1580
-            1582:    102(ptr) AccessChain 27(data) 1577 49
-            1583:   21(ivec4) Load 1582
-            1584:   21(ivec4) VectorShuffle 1583 1581 4 5 6 3
-                              Store 1582 1584
-            1585:      6(int) Load 8(invocation)
-            1586:    102(ptr) AccessChain 27(data) 59 49
-            1587:   21(ivec4) Load 1586
-            1588:   21(ivec4) GroupNonUniformIMul 34 ExclusiveScan 1587
-            1589:    102(ptr) AccessChain 27(data) 1585 49
-                              Store 1589 1588
+            1518:     78(ptr) AccessChain 27(data) 38 38
+            1519:   20(ivec4) Load 1518
+            1520:   77(ivec2) VectorShuffle 1519 1519 0 1
+            1521:   77(ivec2) GroupNonUniformBitwiseXor 34 InclusiveScan 1520
+            1522:     71(ptr) AccessChain 27(data) 1517 38 30
+            1523:     19(int) CompositeExtract 1521 0
+                              Store 1522 1523
+            1524:     71(ptr) AccessChain 27(data) 1517 38 47
+            1525:     19(int) CompositeExtract 1521 1
+                              Store 1524 1525
+            1526:      6(int) Load 8(invocation)
+            1527:     78(ptr) AccessChain 27(data) 51 38
+            1528:   20(ivec4) Load 1527
+            1529:   88(ivec3) VectorShuffle 1528 1528 0 1 2
+            1530:   88(ivec3) GroupNonUniformBitwiseXor 34 InclusiveScan 1529
+            1531:     71(ptr) AccessChain 27(data) 1526 38 30
+            1532:     19(int) CompositeExtract 1530 0
+                              Store 1531 1532
+            1533:     71(ptr) AccessChain 27(data) 1526 38 47
+            1534:     19(int) CompositeExtract 1530 1
+                              Store 1533 1534
+            1535:     71(ptr) AccessChain 27(data) 1526 38 61
+            1536:     19(int) CompositeExtract 1530 2
+                              Store 1535 1536
+            1537:      6(int) Load 8(invocation)
+            1538:     78(ptr) AccessChain 27(data) 65 38
+            1539:   20(ivec4) Load 1538
+            1540:   20(ivec4) GroupNonUniformBitwiseXor 34 InclusiveScan 1539
+            1541:     78(ptr) AccessChain 27(data) 1537 38
+                              Store 1541 1540
+            1542:      6(int) Load 8(invocation)
+            1543:    105(ptr) AccessChain 27(data) 29 51 30
+            1544:      6(int) Load 1543
+            1545:      6(int) GroupNonUniformBitwiseXor 34 InclusiveScan 1544
+            1546:    105(ptr) AccessChain 27(data) 1542 51 30
+                              Store 1546 1545
+            1547:      6(int) Load 8(invocation)
+            1548:    112(ptr) AccessChain 27(data) 38 51
+            1549:   21(ivec4) Load 1548
+            1550:  111(ivec2) VectorShuffle 1549 1549 0 1
+            1551:  111(ivec2) GroupNonUniformBitwiseXor 34 InclusiveScan 1550
+            1552:    105(ptr) AccessChain 27(data) 1547 51 30
+            1553:      6(int) CompositeExtract 1551 0
+                              Store 1552 1553
+            1554:    105(ptr) AccessChain 27(data) 1547 51 47
+            1555:      6(int) CompositeExtract 1551 1
+                              Store 1554 1555
+            1556:      6(int) Load 8(invocation)
+            1557:    112(ptr) AccessChain 27(data) 51 51
+            1558:   21(ivec4) Load 1557
+            1559:  122(ivec3) VectorShuffle 1558 1558 0 1 2
+            1560:  122(ivec3) GroupNonUniformBitwiseXor 34 InclusiveScan 1559
+            1561:    105(ptr) AccessChain 27(data) 1556 51 30
+            1562:      6(int) CompositeExtract 1560 0
+                              Store 1561 1562
+            1563:    105(ptr) AccessChain 27(data) 1556 51 47
+            1564:      6(int) CompositeExtract 1560 1
+                              Store 1563 1564
+            1565:    105(ptr) AccessChain 27(data) 1556 51 61
+            1566:      6(int) CompositeExtract 1560 2
+                              Store 1565 1566
+            1567:      6(int) Load 8(invocation)
+            1568:    112(ptr) AccessChain 27(data) 65 51
+            1569:   21(ivec4) Load 1568
+            1570:   21(ivec4) GroupNonUniformBitwiseXor 34 InclusiveScan 1569
+            1571:    112(ptr) AccessChain 27(data) 1567 51
+                              Store 1571 1570
+            1572:      6(int) Load 8(invocation)
+            1573:     71(ptr) AccessChain 27(data) 29 38 30
+            1574:     19(int) Load 1573
+            1575:   595(bool) SLessThan 1574 29
+            1576:   595(bool) GroupNonUniformLogicalXor 34 InclusiveScan 1575
+            1577:     19(int) Select 1576 38 29
+            1578:     71(ptr) AccessChain 27(data) 1572 38 30
+                              Store 1578 1577
+            1579:      6(int) Load 8(invocation)
+            1580:     78(ptr) AccessChain 27(data) 38 38
+            1581:   20(ivec4) Load 1580
+            1582:   77(ivec2) VectorShuffle 1581 1581 0 1
+            1583:  605(bvec2) SLessThan 1582 604
+            1584:  605(bvec2) GroupNonUniformLogicalXor 34 InclusiveScan 1583
+            1585:   77(ivec2) Select 1584 608 604
+            1586:     71(ptr) AccessChain 27(data) 1579 38 30
+            1587:     19(int) CompositeExtract 1585 0
+                              Store 1586 1587
+            1588:     71(ptr) AccessChain 27(data) 1579 38 47
+            1589:     19(int) CompositeExtract 1585 1
+                              Store 1588 1589
             1590:      6(int) Load 8(invocation)
-            1591:    125(ptr) AccessChain 27(data) 29 59 30
-            1592:22(float64_t) Load 1591
-            1593:22(float64_t) GroupNonUniformFMul 34 ExclusiveScan 1592
-            1594:    125(ptr) AccessChain 27(data) 1590 59 30
-                              Store 1594 1593
-            1595:      6(int) Load 8(invocation)
-            1596:    132(ptr) AccessChain 27(data) 38 59
-            1597: 23(f64vec4) Load 1596
-            1598:131(f64vec2) VectorShuffle 1597 1597 0 1
-            1599:131(f64vec2) GroupNonUniformFMul 34 ExclusiveScan 1598
-            1600:    132(ptr) AccessChain 27(data) 1595 59
-            1601: 23(f64vec4) Load 1600
-            1602: 23(f64vec4) VectorShuffle 1601 1599 4 5 2 3
-                              Store 1600 1602
+            1591:     78(ptr) AccessChain 27(data) 38 38
+            1592:   20(ivec4) Load 1591
+            1593:   88(ivec3) VectorShuffle 1592 1592 0 1 2
+            1594:  619(bvec3) SLessThan 1593 618
+            1595:  619(bvec3) GroupNonUniformLogicalXor 34 InclusiveScan 1594
+            1596:   88(ivec3) Select 1595 622 618
+            1597:     71(ptr) AccessChain 27(data) 1590 38 30
+            1598:     19(int) CompositeExtract 1596 0
+                              Store 1597 1598
+            1599:     71(ptr) AccessChain 27(data) 1590 38 47
+            1600:     19(int) CompositeExtract 1596 1
+                              Store 1599 1600
+            1601:     71(ptr) AccessChain 27(data) 1590 38 61
+            1602:     19(int) CompositeExtract 1596 2
+                              Store 1601 1602
             1603:      6(int) Load 8(invocation)
-            1604:    132(ptr) AccessChain 27(data) 49 59
-            1605: 23(f64vec4) Load 1604
-            1606:141(f64vec3) VectorShuffle 1605 1605 0 1 2
-            1607:141(f64vec3) GroupNonUniformFMul 34 ExclusiveScan 1606
-            1608:    132(ptr) AccessChain 27(data) 1603 59
-            1609: 23(f64vec4) Load 1608
-            1610: 23(f64vec4) VectorShuffle 1609 1607 4 5 6 3
-                              Store 1608 1610
-            1611:      6(int) Load 8(invocation)
-            1612:    132(ptr) AccessChain 27(data) 59 59
-            1613: 23(f64vec4) Load 1612
-            1614: 23(f64vec4) GroupNonUniformFMul 34 ExclusiveScan 1613
-            1615:    132(ptr) AccessChain 27(data) 1611 59
-                              Store 1615 1614
-            1616:      6(int) Load 8(invocation)
-            1617:     31(ptr) AccessChain 27(data) 29 29 30
-            1618:   17(float) Load 1617
-            1619:   17(float) GroupNonUniformFMin 34 ExclusiveScan 1618
-            1620:     31(ptr) AccessChain 27(data) 1616 29 30
-                              Store 1620 1619
-            1621:      6(int) Load 8(invocation)
-            1622:     40(ptr) AccessChain 27(data) 38 29
-            1623:   18(fvec4) Load 1622
-            1624:   39(fvec2) VectorShuffle 1623 1623 0 1
-            1625:   39(fvec2) GroupNonUniformFMin 34 ExclusiveScan 1624
-            1626:     40(ptr) AccessChain 27(data) 1621 29
-            1627:   18(fvec4) Load 1626
-            1628:   18(fvec4) VectorShuffle 1627 1625 4 5 2 3
-                              Store 1626 1628
-            1629:      6(int) Load 8(invocation)
-            1630:     40(ptr) AccessChain 27(data) 49 29
-            1631:   18(fvec4) Load 1630
-            1632:   50(fvec3) VectorShuffle 1631 1631 0 1 2
-            1633:   50(fvec3) GroupNonUniformFMin 34 ExclusiveScan 1632
-            1634:     40(ptr) AccessChain 27(data) 1629 29
-            1635:   18(fvec4) Load 1634
-            1636:   18(fvec4) VectorShuffle 1635 1633 4 5 6 3
-                              Store 1634 1636
-            1637:      6(int) Load 8(invocation)
-            1638:     40(ptr) AccessChain 27(data) 59 29
-            1639:   18(fvec4) Load 1638
-            1640:   18(fvec4) GroupNonUniformFMin 34 ExclusiveScan 1639
-            1641:     40(ptr) AccessChain 27(data) 1637 29
-                              Store 1641 1640
-            1642:      6(int) Load 8(invocation)
-            1643:     65(ptr) AccessChain 27(data) 29 38 30
-            1644:     19(int) Load 1643
-            1645:     19(int) GroupNonUniformSMin 34 ExclusiveScan 1644
-            1646:     65(ptr) AccessChain 27(data) 1642 38 30
-                              Store 1646 1645
-            1647:      6(int) Load 8(invocation)
-            1648:     72(ptr) AccessChain 27(data) 38 38
-            1649:   20(ivec4) Load 1648
-            1650:   71(ivec2) VectorShuffle 1649 1649 0 1
-            1651:   71(ivec2) GroupNonUniformSMin 34 ExclusiveScan 1650
-            1652:     72(ptr) AccessChain 27(data) 1647 38
-            1653:   20(ivec4) Load 1652
-            1654:   20(ivec4) VectorShuffle 1653 1651 4 5 2 3
-                              Store 1652 1654
-            1655:      6(int) Load 8(invocation)
-            1656:     72(ptr) AccessChain 27(data) 49 38
-            1657:   20(ivec4) Load 1656
-            1658:   81(ivec3) VectorShuffle 1657 1657 0 1 2
-            1659:   81(ivec3) GroupNonUniformSMin 34 ExclusiveScan 1658
-            1660:     72(ptr) AccessChain 27(data) 1655 38
-            1661:   20(ivec4) Load 1660
-            1662:   20(ivec4) VectorShuffle 1661 1659 4 5 6 3
-                              Store 1660 1662
-            1663:      6(int) Load 8(invocation)
-            1664:     72(ptr) AccessChain 27(data) 59 38
-            1665:   20(ivec4) Load 1664
-            1666:   20(ivec4) GroupNonUniformSMin 34 ExclusiveScan 1665
-            1667:     72(ptr) AccessChain 27(data) 1663 38
-                              Store 1667 1666
-            1668:      6(int) Load 8(invocation)
-            1669:     95(ptr) AccessChain 27(data) 29 49 30
-            1670:      6(int) Load 1669
-            1671:      6(int) GroupNonUniformUMin 34 ExclusiveScan 1670
-            1672:     95(ptr) AccessChain 27(data) 1668 49 30
-                              Store 1672 1671
-            1673:      6(int) Load 8(invocation)
-            1674:    102(ptr) AccessChain 27(data) 38 49
-            1675:   21(ivec4) Load 1674
-            1676:  101(ivec2) VectorShuffle 1675 1675 0 1
-            1677:  101(ivec2) GroupNonUniformUMin 34 ExclusiveScan 1676
-            1678:    102(ptr) AccessChain 27(data) 1673 49
-            1679:   21(ivec4) Load 1678
-            1680:   21(ivec4) VectorShuffle 1679 1677 4 5 2 3
-                              Store 1678 1680
-            1681:      6(int) Load 8(invocation)
-            1682:    102(ptr) AccessChain 27(data) 49 49
-            1683:   21(ivec4) Load 1682
-            1684:  111(ivec3) VectorShuffle 1683 1683 0 1 2
-            1685:  111(ivec3) GroupNonUniformUMin 34 ExclusiveScan 1684
-            1686:    102(ptr) AccessChain 27(data) 1681 49
-            1687:   21(ivec4) Load 1686
-            1688:   21(ivec4) VectorShuffle 1687 1685 4 5 6 3
-                              Store 1686 1688
-            1689:      6(int) Load 8(invocation)
-            1690:    102(ptr) AccessChain 27(data) 59 49
-            1691:   21(ivec4) Load 1690
-            1692:   21(ivec4) GroupNonUniformUMin 34 ExclusiveScan 1691
-            1693:    102(ptr) AccessChain 27(data) 1689 49
-                              Store 1693 1692
-            1694:      6(int) Load 8(invocation)
-            1695:    125(ptr) AccessChain 27(data) 29 59 30
-            1696:22(float64_t) Load 1695
-            1697:22(float64_t) GroupNonUniformFMin 34 ExclusiveScan 1696
-            1698:    125(ptr) AccessChain 27(data) 1694 59 30
-                              Store 1698 1697
-            1699:      6(int) Load 8(invocation)
-            1700:    132(ptr) AccessChain 27(data) 38 59
-            1701: 23(f64vec4) Load 1700
-            1702:131(f64vec2) VectorShuffle 1701 1701 0 1
-            1703:131(f64vec2) GroupNonUniformFMin 34 ExclusiveScan 1702
-            1704:    132(ptr) AccessChain 27(data) 1699 59
-            1705: 23(f64vec4) Load 1704
-            1706: 23(f64vec4) VectorShuffle 1705 1703 4 5 2 3
-                              Store 1704 1706
-            1707:      6(int) Load 8(invocation)
-            1708:    132(ptr) AccessChain 27(data) 49 59
-            1709: 23(f64vec4) Load 1708
-            1710:141(f64vec3) VectorShuffle 1709 1709 0 1 2
-            1711:141(f64vec3) GroupNonUniformFMin 34 ExclusiveScan 1710
-            1712:    132(ptr) AccessChain 27(data) 1707 59
-            1713: 23(f64vec4) Load 1712
-            1714: 23(f64vec4) VectorShuffle 1713 1711 4 5 6 3
-                              Store 1712 1714
-            1715:      6(int) Load 8(invocation)
-            1716:    132(ptr) AccessChain 27(data) 59 59
-            1717: 23(f64vec4) Load 1716
-            1718: 23(f64vec4) GroupNonUniformFMin 34 ExclusiveScan 1717
-            1719:    132(ptr) AccessChain 27(data) 1715 59
-                              Store 1719 1718
-            1720:      6(int) Load 8(invocation)
-            1721:     31(ptr) AccessChain 27(data) 29 29 30
-            1722:   17(float) Load 1721
-            1723:   17(float) GroupNonUniformFMax 34 ExclusiveScan 1722
-            1724:     31(ptr) AccessChain 27(data) 1720 29 30
-                              Store 1724 1723
+            1604:     78(ptr) AccessChain 27(data) 38 38
+            1605:   20(ivec4) Load 1604
+            1606:  634(bvec4) SLessThan 1605 633
+            1607:  634(bvec4) GroupNonUniformLogicalXor 34 InclusiveScan 1606
+            1608:   20(ivec4) Select 1607 637 633
+            1609:     78(ptr) AccessChain 27(data) 1603 38
+                              Store 1609 1608
+            1610:      6(int) Load 8(invocation)
+            1611:     31(ptr) AccessChain 27(data) 29 29 30
+            1612:   17(float) Load 1611
+            1613:   17(float) GroupNonUniformFAdd 34 ExclusiveScan 1612
+            1614:     31(ptr) AccessChain 27(data) 1610 29 30
+                              Store 1614 1613
+            1615:      6(int) Load 8(invocation)
+            1616:     40(ptr) AccessChain 27(data) 38 29
+            1617:   18(fvec4) Load 1616
+            1618:   39(fvec2) VectorShuffle 1617 1617 0 1
+            1619:   39(fvec2) GroupNonUniformFAdd 34 ExclusiveScan 1618
+            1620:     31(ptr) AccessChain 27(data) 1615 29 30
+            1621:   17(float) CompositeExtract 1619 0
+                              Store 1620 1621
+            1622:     31(ptr) AccessChain 27(data) 1615 29 47
+            1623:   17(float) CompositeExtract 1619 1
+                              Store 1622 1623
+            1624:      6(int) Load 8(invocation)
+            1625:     40(ptr) AccessChain 27(data) 51 29
+            1626:   18(fvec4) Load 1625
+            1627:   52(fvec3) VectorShuffle 1626 1626 0 1 2
+            1628:   52(fvec3) GroupNonUniformFAdd 34 ExclusiveScan 1627
+            1629:     31(ptr) AccessChain 27(data) 1624 29 30
+            1630:   17(float) CompositeExtract 1628 0
+                              Store 1629 1630
+            1631:     31(ptr) AccessChain 27(data) 1624 29 47
+            1632:   17(float) CompositeExtract 1628 1
+                              Store 1631 1632
+            1633:     31(ptr) AccessChain 27(data) 1624 29 61
+            1634:   17(float) CompositeExtract 1628 2
+                              Store 1633 1634
+            1635:      6(int) Load 8(invocation)
+            1636:     40(ptr) AccessChain 27(data) 65 29
+            1637:   18(fvec4) Load 1636
+            1638:   18(fvec4) GroupNonUniformFAdd 34 ExclusiveScan 1637
+            1639:     40(ptr) AccessChain 27(data) 1635 29
+                              Store 1639 1638
+            1640:      6(int) Load 8(invocation)
+            1641:     71(ptr) AccessChain 27(data) 29 38 30
+            1642:     19(int) Load 1641
+            1643:     19(int) GroupNonUniformIAdd 34 ExclusiveScan 1642
+            1644:     71(ptr) AccessChain 27(data) 1640 38 30
+                              Store 1644 1643
+            1645:      6(int) Load 8(invocation)
+            1646:     78(ptr) AccessChain 27(data) 38 38
+            1647:   20(ivec4) Load 1646
+            1648:   77(ivec2) VectorShuffle 1647 1647 0 1
+            1649:   77(ivec2) GroupNonUniformIAdd 34 ExclusiveScan 1648
+            1650:     71(ptr) AccessChain 27(data) 1645 38 30
+            1651:     19(int) CompositeExtract 1649 0
+                              Store 1650 1651
+            1652:     71(ptr) AccessChain 27(data) 1645 38 47
+            1653:     19(int) CompositeExtract 1649 1
+                              Store 1652 1653
+            1654:      6(int) Load 8(invocation)
+            1655:     78(ptr) AccessChain 27(data) 51 38
+            1656:   20(ivec4) Load 1655
+            1657:   88(ivec3) VectorShuffle 1656 1656 0 1 2
+            1658:   88(ivec3) GroupNonUniformIAdd 34 ExclusiveScan 1657
+            1659:     71(ptr) AccessChain 27(data) 1654 38 30
+            1660:     19(int) CompositeExtract 1658 0
+                              Store 1659 1660
+            1661:     71(ptr) AccessChain 27(data) 1654 38 47
+            1662:     19(int) CompositeExtract 1658 1
+                              Store 1661 1662
+            1663:     71(ptr) AccessChain 27(data) 1654 38 61
+            1664:     19(int) CompositeExtract 1658 2
+                              Store 1663 1664
+            1665:      6(int) Load 8(invocation)
+            1666:     78(ptr) AccessChain 27(data) 65 38
+            1667:   20(ivec4) Load 1666
+            1668:   20(ivec4) GroupNonUniformIAdd 34 ExclusiveScan 1667
+            1669:     78(ptr) AccessChain 27(data) 1665 38
+                              Store 1669 1668
+            1670:      6(int) Load 8(invocation)
+            1671:    105(ptr) AccessChain 27(data) 29 51 30
+            1672:      6(int) Load 1671
+            1673:      6(int) GroupNonUniformIAdd 34 ExclusiveScan 1672
+            1674:    105(ptr) AccessChain 27(data) 1670 51 30
+                              Store 1674 1673
+            1675:      6(int) Load 8(invocation)
+            1676:    112(ptr) AccessChain 27(data) 38 51
+            1677:   21(ivec4) Load 1676
+            1678:  111(ivec2) VectorShuffle 1677 1677 0 1
+            1679:  111(ivec2) GroupNonUniformIAdd 34 ExclusiveScan 1678
+            1680:    105(ptr) AccessChain 27(data) 1675 51 30
+            1681:      6(int) CompositeExtract 1679 0
+                              Store 1680 1681
+            1682:    105(ptr) AccessChain 27(data) 1675 51 47
+            1683:      6(int) CompositeExtract 1679 1
+                              Store 1682 1683
+            1684:      6(int) Load 8(invocation)
+            1685:    112(ptr) AccessChain 27(data) 51 51
+            1686:   21(ivec4) Load 1685
+            1687:  122(ivec3) VectorShuffle 1686 1686 0 1 2
+            1688:  122(ivec3) GroupNonUniformIAdd 34 ExclusiveScan 1687
+            1689:    105(ptr) AccessChain 27(data) 1684 51 30
+            1690:      6(int) CompositeExtract 1688 0
+                              Store 1689 1690
+            1691:    105(ptr) AccessChain 27(data) 1684 51 47
+            1692:      6(int) CompositeExtract 1688 1
+                              Store 1691 1692
+            1693:    105(ptr) AccessChain 27(data) 1684 51 61
+            1694:      6(int) CompositeExtract 1688 2
+                              Store 1693 1694
+            1695:      6(int) Load 8(invocation)
+            1696:    112(ptr) AccessChain 27(data) 65 51
+            1697:   21(ivec4) Load 1696
+            1698:   21(ivec4) GroupNonUniformIAdd 34 ExclusiveScan 1697
+            1699:    112(ptr) AccessChain 27(data) 1695 51
+                              Store 1699 1698
+            1700:      6(int) Load 8(invocation)
+            1701:    139(ptr) AccessChain 27(data) 29 65 30
+            1702:22(float64_t) Load 1701
+            1703:22(float64_t) GroupNonUniformFAdd 34 ExclusiveScan 1702
+            1704:    139(ptr) AccessChain 27(data) 1700 65 30
+                              Store 1704 1703
+            1705:      6(int) Load 8(invocation)
+            1706:    146(ptr) AccessChain 27(data) 38 65
+            1707: 23(f64vec4) Load 1706
+            1708:145(f64vec2) VectorShuffle 1707 1707 0 1
+            1709:145(f64vec2) GroupNonUniformFAdd 34 ExclusiveScan 1708
+            1710:    139(ptr) AccessChain 27(data) 1705 65 30
+            1711:22(float64_t) CompositeExtract 1709 0
+                              Store 1710 1711
+            1712:    139(ptr) AccessChain 27(data) 1705 65 47
+            1713:22(float64_t) CompositeExtract 1709 1
+                              Store 1712 1713
+            1714:      6(int) Load 8(invocation)
+            1715:    146(ptr) AccessChain 27(data) 51 65
+            1716: 23(f64vec4) Load 1715
+            1717:156(f64vec3) VectorShuffle 1716 1716 0 1 2
+            1718:156(f64vec3) GroupNonUniformFAdd 34 ExclusiveScan 1717
+            1719:    139(ptr) AccessChain 27(data) 1714 65 30
+            1720:22(float64_t) CompositeExtract 1718 0
+                              Store 1719 1720
+            1721:    139(ptr) AccessChain 27(data) 1714 65 47
+            1722:22(float64_t) CompositeExtract 1718 1
+                              Store 1721 1722
+            1723:    139(ptr) AccessChain 27(data) 1714 65 61
+            1724:22(float64_t) CompositeExtract 1718 2
+                              Store 1723 1724
             1725:      6(int) Load 8(invocation)
-            1726:     40(ptr) AccessChain 27(data) 38 29
-            1727:   18(fvec4) Load 1726
-            1728:   39(fvec2) VectorShuffle 1727 1727 0 1
-            1729:   39(fvec2) GroupNonUniformFMax 34 ExclusiveScan 1728
-            1730:     40(ptr) AccessChain 27(data) 1725 29
-            1731:   18(fvec4) Load 1730
-            1732:   18(fvec4) VectorShuffle 1731 1729 4 5 2 3
-                              Store 1730 1732
-            1733:      6(int) Load 8(invocation)
-            1734:     40(ptr) AccessChain 27(data) 49 29
-            1735:   18(fvec4) Load 1734
-            1736:   50(fvec3) VectorShuffle 1735 1735 0 1 2
-            1737:   50(fvec3) GroupNonUniformFMax 34 ExclusiveScan 1736
-            1738:     40(ptr) AccessChain 27(data) 1733 29
-            1739:   18(fvec4) Load 1738
-            1740:   18(fvec4) VectorShuffle 1739 1737 4 5 6 3
-                              Store 1738 1740
-            1741:      6(int) Load 8(invocation)
-            1742:     40(ptr) AccessChain 27(data) 59 29
-            1743:   18(fvec4) Load 1742
-            1744:   18(fvec4) GroupNonUniformFMax 34 ExclusiveScan 1743
-            1745:     40(ptr) AccessChain 27(data) 1741 29
-                              Store 1745 1744
-            1746:      6(int) Load 8(invocation)
-            1747:     65(ptr) AccessChain 27(data) 29 38 30
-            1748:     19(int) Load 1747
-            1749:     19(int) GroupNonUniformSMax 34 ExclusiveScan 1748
-            1750:     65(ptr) AccessChain 27(data) 1746 38 30
-                              Store 1750 1749
-            1751:      6(int) Load 8(invocation)
-            1752:     72(ptr) AccessChain 27(data) 38 38
-            1753:   20(ivec4) Load 1752
-            1754:   71(ivec2) VectorShuffle 1753 1753 0 1
-            1755:   71(ivec2) GroupNonUniformSMax 34 ExclusiveScan 1754
-            1756:     72(ptr) AccessChain 27(data) 1751 38
-            1757:   20(ivec4) Load 1756
-            1758:   20(ivec4) VectorShuffle 1757 1755 4 5 2 3
-                              Store 1756 1758
-            1759:      6(int) Load 8(invocation)
-            1760:     72(ptr) AccessChain 27(data) 49 38
-            1761:   20(ivec4) Load 1760
-            1762:   81(ivec3) VectorShuffle 1761 1761 0 1 2
-            1763:   81(ivec3) GroupNonUniformSMax 34 ExclusiveScan 1762
-            1764:     72(ptr) AccessChain 27(data) 1759 38
-            1765:   20(ivec4) Load 1764
-            1766:   20(ivec4) VectorShuffle 1765 1763 4 5 6 3
-                              Store 1764 1766
-            1767:      6(int) Load 8(invocation)
-            1768:     72(ptr) AccessChain 27(data) 59 38
-            1769:   20(ivec4) Load 1768
-            1770:   20(ivec4) GroupNonUniformSMax 34 ExclusiveScan 1769
-            1771:     72(ptr) AccessChain 27(data) 1767 38
-                              Store 1771 1770
-            1772:      6(int) Load 8(invocation)
-            1773:     95(ptr) AccessChain 27(data) 29 49 30
-            1774:      6(int) Load 1773
-            1775:      6(int) GroupNonUniformUMax 34 ExclusiveScan 1774
-            1776:     95(ptr) AccessChain 27(data) 1772 49 30
-                              Store 1776 1775
-            1777:      6(int) Load 8(invocation)
-            1778:    102(ptr) AccessChain 27(data) 38 49
-            1779:   21(ivec4) Load 1778
-            1780:  101(ivec2) VectorShuffle 1779 1779 0 1
-            1781:  101(ivec2) GroupNonUniformUMax 34 ExclusiveScan 1780
-            1782:    102(ptr) AccessChain 27(data) 1777 49
-            1783:   21(ivec4) Load 1782
-            1784:   21(ivec4) VectorShuffle 1783 1781 4 5 2 3
-                              Store 1782 1784
+            1726:    146(ptr) AccessChain 27(data) 65 65
+            1727: 23(f64vec4) Load 1726
+            1728: 23(f64vec4) GroupNonUniformFAdd 34 ExclusiveScan 1727
+            1729:    146(ptr) AccessChain 27(data) 1725 65
+                              Store 1729 1728
+            1730:      6(int) Load 8(invocation)
+            1731:     31(ptr) AccessChain 27(data) 29 29 30
+            1732:   17(float) Load 1731
+            1733:   17(float) GroupNonUniformFMul 34 ExclusiveScan 1732
+            1734:     31(ptr) AccessChain 27(data) 1730 29 30
+                              Store 1734 1733
+            1735:      6(int) Load 8(invocation)
+            1736:     40(ptr) AccessChain 27(data) 38 29
+            1737:   18(fvec4) Load 1736
+            1738:   39(fvec2) VectorShuffle 1737 1737 0 1
+            1739:   39(fvec2) GroupNonUniformFMul 34 ExclusiveScan 1738
+            1740:     31(ptr) AccessChain 27(data) 1735 29 30
+            1741:   17(float) CompositeExtract 1739 0
+                              Store 1740 1741
+            1742:     31(ptr) AccessChain 27(data) 1735 29 47
+            1743:   17(float) CompositeExtract 1739 1
+                              Store 1742 1743
+            1744:      6(int) Load 8(invocation)
+            1745:     40(ptr) AccessChain 27(data) 51 29
+            1746:   18(fvec4) Load 1745
+            1747:   52(fvec3) VectorShuffle 1746 1746 0 1 2
+            1748:   52(fvec3) GroupNonUniformFMul 34 ExclusiveScan 1747
+            1749:     31(ptr) AccessChain 27(data) 1744 29 30
+            1750:   17(float) CompositeExtract 1748 0
+                              Store 1749 1750
+            1751:     31(ptr) AccessChain 27(data) 1744 29 47
+            1752:   17(float) CompositeExtract 1748 1
+                              Store 1751 1752
+            1753:     31(ptr) AccessChain 27(data) 1744 29 61
+            1754:   17(float) CompositeExtract 1748 2
+                              Store 1753 1754
+            1755:      6(int) Load 8(invocation)
+            1756:     40(ptr) AccessChain 27(data) 65 29
+            1757:   18(fvec4) Load 1756
+            1758:   18(fvec4) GroupNonUniformFMul 34 ExclusiveScan 1757
+            1759:     40(ptr) AccessChain 27(data) 1755 29
+                              Store 1759 1758
+            1760:      6(int) Load 8(invocation)
+            1761:     71(ptr) AccessChain 27(data) 29 38 30
+            1762:     19(int) Load 1761
+            1763:     19(int) GroupNonUniformIMul 34 ExclusiveScan 1762
+            1764:     71(ptr) AccessChain 27(data) 1760 38 30
+                              Store 1764 1763
+            1765:      6(int) Load 8(invocation)
+            1766:     78(ptr) AccessChain 27(data) 38 38
+            1767:   20(ivec4) Load 1766
+            1768:   77(ivec2) VectorShuffle 1767 1767 0 1
+            1769:   77(ivec2) GroupNonUniformIMul 34 ExclusiveScan 1768
+            1770:     71(ptr) AccessChain 27(data) 1765 38 30
+            1771:     19(int) CompositeExtract 1769 0
+                              Store 1770 1771
+            1772:     71(ptr) AccessChain 27(data) 1765 38 47
+            1773:     19(int) CompositeExtract 1769 1
+                              Store 1772 1773
+            1774:      6(int) Load 8(invocation)
+            1775:     78(ptr) AccessChain 27(data) 51 38
+            1776:   20(ivec4) Load 1775
+            1777:   88(ivec3) VectorShuffle 1776 1776 0 1 2
+            1778:   88(ivec3) GroupNonUniformIMul 34 ExclusiveScan 1777
+            1779:     71(ptr) AccessChain 27(data) 1774 38 30
+            1780:     19(int) CompositeExtract 1778 0
+                              Store 1779 1780
+            1781:     71(ptr) AccessChain 27(data) 1774 38 47
+            1782:     19(int) CompositeExtract 1778 1
+                              Store 1781 1782
+            1783:     71(ptr) AccessChain 27(data) 1774 38 61
+            1784:     19(int) CompositeExtract 1778 2
+                              Store 1783 1784
             1785:      6(int) Load 8(invocation)
-            1786:    102(ptr) AccessChain 27(data) 49 49
-            1787:   21(ivec4) Load 1786
-            1788:  111(ivec3) VectorShuffle 1787 1787 0 1 2
-            1789:  111(ivec3) GroupNonUniformUMax 34 ExclusiveScan 1788
-            1790:    102(ptr) AccessChain 27(data) 1785 49
-            1791:   21(ivec4) Load 1790
-            1792:   21(ivec4) VectorShuffle 1791 1789 4 5 6 3
-                              Store 1790 1792
-            1793:      6(int) Load 8(invocation)
-            1794:    102(ptr) AccessChain 27(data) 59 49
-            1795:   21(ivec4) Load 1794
-            1796:   21(ivec4) GroupNonUniformUMax 34 ExclusiveScan 1795
-            1797:    102(ptr) AccessChain 27(data) 1793 49
-                              Store 1797 1796
-            1798:      6(int) Load 8(invocation)
-            1799:    125(ptr) AccessChain 27(data) 29 59 30
-            1800:22(float64_t) Load 1799
-            1801:22(float64_t) GroupNonUniformFMax 34 ExclusiveScan 1800
-            1802:    125(ptr) AccessChain 27(data) 1798 59 30
-                              Store 1802 1801
-            1803:      6(int) Load 8(invocation)
-            1804:    132(ptr) AccessChain 27(data) 38 59
-            1805: 23(f64vec4) Load 1804
-            1806:131(f64vec2) VectorShuffle 1805 1805 0 1
-            1807:131(f64vec2) GroupNonUniformFMax 34 ExclusiveScan 1806
-            1808:    132(ptr) AccessChain 27(data) 1803 59
-            1809: 23(f64vec4) Load 1808
-            1810: 23(f64vec4) VectorShuffle 1809 1807 4 5 2 3
-                              Store 1808 1810
-            1811:      6(int) Load 8(invocation)
-            1812:    132(ptr) AccessChain 27(data) 49 59
-            1813: 23(f64vec4) Load 1812
-            1814:141(f64vec3) VectorShuffle 1813 1813 0 1 2
-            1815:141(f64vec3) GroupNonUniformFMax 34 ExclusiveScan 1814
-            1816:    132(ptr) AccessChain 27(data) 1811 59
-            1817: 23(f64vec4) Load 1816
-            1818: 23(f64vec4) VectorShuffle 1817 1815 4 5 6 3
-                              Store 1816 1818
-            1819:      6(int) Load 8(invocation)
-            1820:    132(ptr) AccessChain 27(data) 59 59
-            1821: 23(f64vec4) Load 1820
-            1822: 23(f64vec4) GroupNonUniformFMax 34 ExclusiveScan 1821
-            1823:    132(ptr) AccessChain 27(data) 1819 59
-                              Store 1823 1822
-            1824:      6(int) Load 8(invocation)
-            1825:     65(ptr) AccessChain 27(data) 29 38 30
-            1826:     19(int) Load 1825
-            1827:     19(int) GroupNonUniformBitwiseAnd 34 ExclusiveScan 1826
-            1828:     65(ptr) AccessChain 27(data) 1824 38 30
-                              Store 1828 1827
-            1829:      6(int) Load 8(invocation)
-            1830:     72(ptr) AccessChain 27(data) 38 38
-            1831:   20(ivec4) Load 1830
-            1832:   71(ivec2) VectorShuffle 1831 1831 0 1
-            1833:   71(ivec2) GroupNonUniformBitwiseAnd 34 ExclusiveScan 1832
-            1834:     72(ptr) AccessChain 27(data) 1829 38
-            1835:   20(ivec4) Load 1834
-            1836:   20(ivec4) VectorShuffle 1835 1833 4 5 2 3
-                              Store 1834 1836
-            1837:      6(int) Load 8(invocation)
-            1838:     72(ptr) AccessChain 27(data) 49 38
-            1839:   20(ivec4) Load 1838
-            1840:   81(ivec3) VectorShuffle 1839 1839 0 1 2
-            1841:   81(ivec3) GroupNonUniformBitwiseAnd 34 ExclusiveScan 1840
-            1842:     72(ptr) AccessChain 27(data) 1837 38
-            1843:   20(ivec4) Load 1842
-            1844:   20(ivec4) VectorShuffle 1843 1841 4 5 6 3
-                              Store 1842 1844
+            1786:     78(ptr) AccessChain 27(data) 65 38
+            1787:   20(ivec4) Load 1786
+            1788:   20(ivec4) GroupNonUniformIMul 34 ExclusiveScan 1787
+            1789:     78(ptr) AccessChain 27(data) 1785 38
+                              Store 1789 1788
+            1790:      6(int) Load 8(invocation)
+            1791:    105(ptr) AccessChain 27(data) 29 51 30
+            1792:      6(int) Load 1791
+            1793:      6(int) GroupNonUniformIMul 34 ExclusiveScan 1792
+            1794:    105(ptr) AccessChain 27(data) 1790 51 30
+                              Store 1794 1793
+            1795:      6(int) Load 8(invocation)
+            1796:    112(ptr) AccessChain 27(data) 38 51
+            1797:   21(ivec4) Load 1796
+            1798:  111(ivec2) VectorShuffle 1797 1797 0 1
+            1799:  111(ivec2) GroupNonUniformIMul 34 ExclusiveScan 1798
+            1800:    105(ptr) AccessChain 27(data) 1795 51 30
+            1801:      6(int) CompositeExtract 1799 0
+                              Store 1800 1801
+            1802:    105(ptr) AccessChain 27(data) 1795 51 47
+            1803:      6(int) CompositeExtract 1799 1
+                              Store 1802 1803
+            1804:      6(int) Load 8(invocation)
+            1805:    112(ptr) AccessChain 27(data) 51 51
+            1806:   21(ivec4) Load 1805
+            1807:  122(ivec3) VectorShuffle 1806 1806 0 1 2
+            1808:  122(ivec3) GroupNonUniformIMul 34 ExclusiveScan 1807
+            1809:    105(ptr) AccessChain 27(data) 1804 51 30
+            1810:      6(int) CompositeExtract 1808 0
+                              Store 1809 1810
+            1811:    105(ptr) AccessChain 27(data) 1804 51 47
+            1812:      6(int) CompositeExtract 1808 1
+                              Store 1811 1812
+            1813:    105(ptr) AccessChain 27(data) 1804 51 61
+            1814:      6(int) CompositeExtract 1808 2
+                              Store 1813 1814
+            1815:      6(int) Load 8(invocation)
+            1816:    112(ptr) AccessChain 27(data) 65 51
+            1817:   21(ivec4) Load 1816
+            1818:   21(ivec4) GroupNonUniformIMul 34 ExclusiveScan 1817
+            1819:    112(ptr) AccessChain 27(data) 1815 51
+                              Store 1819 1818
+            1820:      6(int) Load 8(invocation)
+            1821:    139(ptr) AccessChain 27(data) 29 65 30
+            1822:22(float64_t) Load 1821
+            1823:22(float64_t) GroupNonUniformFMul 34 ExclusiveScan 1822
+            1824:    139(ptr) AccessChain 27(data) 1820 65 30
+                              Store 1824 1823
+            1825:      6(int) Load 8(invocation)
+            1826:    146(ptr) AccessChain 27(data) 38 65
+            1827: 23(f64vec4) Load 1826
+            1828:145(f64vec2) VectorShuffle 1827 1827 0 1
+            1829:145(f64vec2) GroupNonUniformFMul 34 ExclusiveScan 1828
+            1830:    139(ptr) AccessChain 27(data) 1825 65 30
+            1831:22(float64_t) CompositeExtract 1829 0
+                              Store 1830 1831
+            1832:    139(ptr) AccessChain 27(data) 1825 65 47
+            1833:22(float64_t) CompositeExtract 1829 1
+                              Store 1832 1833
+            1834:      6(int) Load 8(invocation)
+            1835:    146(ptr) AccessChain 27(data) 51 65
+            1836: 23(f64vec4) Load 1835
+            1837:156(f64vec3) VectorShuffle 1836 1836 0 1 2
+            1838:156(f64vec3) GroupNonUniformFMul 34 ExclusiveScan 1837
+            1839:    139(ptr) AccessChain 27(data) 1834 65 30
+            1840:22(float64_t) CompositeExtract 1838 0
+                              Store 1839 1840
+            1841:    139(ptr) AccessChain 27(data) 1834 65 47
+            1842:22(float64_t) CompositeExtract 1838 1
+                              Store 1841 1842
+            1843:    139(ptr) AccessChain 27(data) 1834 65 61
+            1844:22(float64_t) CompositeExtract 1838 2
+                              Store 1843 1844
             1845:      6(int) Load 8(invocation)
-            1846:     72(ptr) AccessChain 27(data) 59 38
-            1847:   20(ivec4) Load 1846
-            1848:   20(ivec4) GroupNonUniformBitwiseAnd 34 ExclusiveScan 1847
-            1849:     72(ptr) AccessChain 27(data) 1845 38
+            1846:    146(ptr) AccessChain 27(data) 65 65
+            1847: 23(f64vec4) Load 1846
+            1848: 23(f64vec4) GroupNonUniformFMul 34 ExclusiveScan 1847
+            1849:    146(ptr) AccessChain 27(data) 1845 65
                               Store 1849 1848
             1850:      6(int) Load 8(invocation)
-            1851:     95(ptr) AccessChain 27(data) 29 49 30
-            1852:      6(int) Load 1851
-            1853:      6(int) GroupNonUniformBitwiseAnd 34 ExclusiveScan 1852
-            1854:     95(ptr) AccessChain 27(data) 1850 49 30
+            1851:     31(ptr) AccessChain 27(data) 29 29 30
+            1852:   17(float) Load 1851
+            1853:   17(float) GroupNonUniformFMin 34 ExclusiveScan 1852
+            1854:     31(ptr) AccessChain 27(data) 1850 29 30
                               Store 1854 1853
             1855:      6(int) Load 8(invocation)
-            1856:    102(ptr) AccessChain 27(data) 38 49
-            1857:   21(ivec4) Load 1856
-            1858:  101(ivec2) VectorShuffle 1857 1857 0 1
-            1859:  101(ivec2) GroupNonUniformBitwiseAnd 34 ExclusiveScan 1858
-            1860:    102(ptr) AccessChain 27(data) 1855 49
-            1861:   21(ivec4) Load 1860
-            1862:   21(ivec4) VectorShuffle 1861 1859 4 5 2 3
-                              Store 1860 1862
-            1863:      6(int) Load 8(invocation)
-            1864:    102(ptr) AccessChain 27(data) 49 49
-            1865:   21(ivec4) Load 1864
-            1866:  111(ivec3) VectorShuffle 1865 1865 0 1 2
-            1867:  111(ivec3) GroupNonUniformBitwiseAnd 34 ExclusiveScan 1866
-            1868:    102(ptr) AccessChain 27(data) 1863 49
-            1869:   21(ivec4) Load 1868
-            1870:   21(ivec4) VectorShuffle 1869 1867 4 5 6 3
-                              Store 1868 1870
-            1871:      6(int) Load 8(invocation)
-            1872:    102(ptr) AccessChain 27(data) 59 49
-            1873:   21(ivec4) Load 1872
-            1874:   21(ivec4) GroupNonUniformBitwiseAnd 34 ExclusiveScan 1873
-            1875:    102(ptr) AccessChain 27(data) 1871 49
-                              Store 1875 1874
-            1876:      6(int) Load 8(invocation)
-            1877:     65(ptr) AccessChain 27(data) 29 38 30
-            1878:     19(int) Load 1877
-            1879:   521(bool) SLessThan 1878 29
-            1880:   521(bool) GroupNonUniformLogicalAnd 34 ExclusiveScan 1879
-            1881:     19(int) Select 1880 38 29
-            1882:     65(ptr) AccessChain 27(data) 1876 38 30
-                              Store 1882 1881
-            1883:      6(int) Load 8(invocation)
-            1884:     72(ptr) AccessChain 27(data) 38 38
-            1885:   20(ivec4) Load 1884
-            1886:   71(ivec2) VectorShuffle 1885 1885 0 1
-            1887:  531(bvec2) SLessThan 1886 530
-            1888:  531(bvec2) GroupNonUniformLogicalAnd 34 ExclusiveScan 1887
-            1889:   71(ivec2) Select 1888 534 530
-            1890:     72(ptr) AccessChain 27(data) 1883 38
-            1891:   20(ivec4) Load 1890
-            1892:   20(ivec4) VectorShuffle 1891 1889 4 5 2 3
-                              Store 1890 1892
-            1893:      6(int) Load 8(invocation)
-            1894:     72(ptr) AccessChain 27(data) 38 38
-            1895:   20(ivec4) Load 1894
-            1896:   81(ivec3) VectorShuffle 1895 1895 0 1 2
-            1897:  544(bvec3) SLessThan 1896 543
-            1898:  544(bvec3) GroupNonUniformLogicalAnd 34 ExclusiveScan 1897
-            1899:   81(ivec3) Select 1898 547 543
-            1900:     72(ptr) AccessChain 27(data) 1893 38
-            1901:   20(ivec4) Load 1900
-            1902:   20(ivec4) VectorShuffle 1901 1899 4 5 6 3
-                              Store 1900 1902
-            1903:      6(int) Load 8(invocation)
-            1904:     72(ptr) AccessChain 27(data) 38 38
-            1905:   20(ivec4) Load 1904
-            1906:  556(bvec4) SLessThan 1905 555
-            1907:  556(bvec4) GroupNonUniformLogicalAnd 34 ExclusiveScan 1906
-            1908:   20(ivec4) Select 1907 559 555
-            1909:     72(ptr) AccessChain 27(data) 1903 38
+            1856:     40(ptr) AccessChain 27(data) 38 29
+            1857:   18(fvec4) Load 1856
+            1858:   39(fvec2) VectorShuffle 1857 1857 0 1
+            1859:   39(fvec2) GroupNonUniformFMin 34 ExclusiveScan 1858
+            1860:     31(ptr) AccessChain 27(data) 1855 29 30
+            1861:   17(float) CompositeExtract 1859 0
+                              Store 1860 1861
+            1862:     31(ptr) AccessChain 27(data) 1855 29 47
+            1863:   17(float) CompositeExtract 1859 1
+                              Store 1862 1863
+            1864:      6(int) Load 8(invocation)
+            1865:     40(ptr) AccessChain 27(data) 51 29
+            1866:   18(fvec4) Load 1865
+            1867:   52(fvec3) VectorShuffle 1866 1866 0 1 2
+            1868:   52(fvec3) GroupNonUniformFMin 34 ExclusiveScan 1867
+            1869:     31(ptr) AccessChain 27(data) 1864 29 30
+            1870:   17(float) CompositeExtract 1868 0
+                              Store 1869 1870
+            1871:     31(ptr) AccessChain 27(data) 1864 29 47
+            1872:   17(float) CompositeExtract 1868 1
+                              Store 1871 1872
+            1873:     31(ptr) AccessChain 27(data) 1864 29 61
+            1874:   17(float) CompositeExtract 1868 2
+                              Store 1873 1874
+            1875:      6(int) Load 8(invocation)
+            1876:     40(ptr) AccessChain 27(data) 65 29
+            1877:   18(fvec4) Load 1876
+            1878:   18(fvec4) GroupNonUniformFMin 34 ExclusiveScan 1877
+            1879:     40(ptr) AccessChain 27(data) 1875 29
+                              Store 1879 1878
+            1880:      6(int) Load 8(invocation)
+            1881:     71(ptr) AccessChain 27(data) 29 38 30
+            1882:     19(int) Load 1881
+            1883:     19(int) GroupNonUniformSMin 34 ExclusiveScan 1882
+            1884:     71(ptr) AccessChain 27(data) 1880 38 30
+                              Store 1884 1883
+            1885:      6(int) Load 8(invocation)
+            1886:     78(ptr) AccessChain 27(data) 38 38
+            1887:   20(ivec4) Load 1886
+            1888:   77(ivec2) VectorShuffle 1887 1887 0 1
+            1889:   77(ivec2) GroupNonUniformSMin 34 ExclusiveScan 1888
+            1890:     71(ptr) AccessChain 27(data) 1885 38 30
+            1891:     19(int) CompositeExtract 1889 0
+                              Store 1890 1891
+            1892:     71(ptr) AccessChain 27(data) 1885 38 47
+            1893:     19(int) CompositeExtract 1889 1
+                              Store 1892 1893
+            1894:      6(int) Load 8(invocation)
+            1895:     78(ptr) AccessChain 27(data) 51 38
+            1896:   20(ivec4) Load 1895
+            1897:   88(ivec3) VectorShuffle 1896 1896 0 1 2
+            1898:   88(ivec3) GroupNonUniformSMin 34 ExclusiveScan 1897
+            1899:     71(ptr) AccessChain 27(data) 1894 38 30
+            1900:     19(int) CompositeExtract 1898 0
+                              Store 1899 1900
+            1901:     71(ptr) AccessChain 27(data) 1894 38 47
+            1902:     19(int) CompositeExtract 1898 1
+                              Store 1901 1902
+            1903:     71(ptr) AccessChain 27(data) 1894 38 61
+            1904:     19(int) CompositeExtract 1898 2
+                              Store 1903 1904
+            1905:      6(int) Load 8(invocation)
+            1906:     78(ptr) AccessChain 27(data) 65 38
+            1907:   20(ivec4) Load 1906
+            1908:   20(ivec4) GroupNonUniformSMin 34 ExclusiveScan 1907
+            1909:     78(ptr) AccessChain 27(data) 1905 38
                               Store 1909 1908
             1910:      6(int) Load 8(invocation)
-            1911:     65(ptr) AccessChain 27(data) 29 38 30
-            1912:     19(int) Load 1911
-            1913:     19(int) GroupNonUniformBitwiseOr 34 ExclusiveScan 1912
-            1914:     65(ptr) AccessChain 27(data) 1910 38 30
+            1911:    105(ptr) AccessChain 27(data) 29 51 30
+            1912:      6(int) Load 1911
+            1913:      6(int) GroupNonUniformUMin 34 ExclusiveScan 1912
+            1914:    105(ptr) AccessChain 27(data) 1910 51 30
                               Store 1914 1913
             1915:      6(int) Load 8(invocation)
-            1916:     72(ptr) AccessChain 27(data) 38 38
-            1917:   20(ivec4) Load 1916
-            1918:   71(ivec2) VectorShuffle 1917 1917 0 1
-            1919:   71(ivec2) GroupNonUniformBitwiseOr 34 ExclusiveScan 1918
-            1920:     72(ptr) AccessChain 27(data) 1915 38
-            1921:   20(ivec4) Load 1920
-            1922:   20(ivec4) VectorShuffle 1921 1919 4 5 2 3
-                              Store 1920 1922
-            1923:      6(int) Load 8(invocation)
-            1924:     72(ptr) AccessChain 27(data) 49 38
-            1925:   20(ivec4) Load 1924
-            1926:   81(ivec3) VectorShuffle 1925 1925 0 1 2
-            1927:   81(ivec3) GroupNonUniformBitwiseOr 34 ExclusiveScan 1926
-            1928:     72(ptr) AccessChain 27(data) 1923 38
-            1929:   20(ivec4) Load 1928
-            1930:   20(ivec4) VectorShuffle 1929 1927 4 5 6 3
-                              Store 1928 1930
-            1931:      6(int) Load 8(invocation)
-            1932:     72(ptr) AccessChain 27(data) 59 38
-            1933:   20(ivec4) Load 1932
-            1934:   20(ivec4) GroupNonUniformBitwiseOr 34 ExclusiveScan 1933
-            1935:     72(ptr) AccessChain 27(data) 1931 38
-                              Store 1935 1934
-            1936:      6(int) Load 8(invocation)
-            1937:     95(ptr) AccessChain 27(data) 29 49 30
-            1938:      6(int) Load 1937
-            1939:      6(int) GroupNonUniformBitwiseOr 34 ExclusiveScan 1938
-            1940:     95(ptr) AccessChain 27(data) 1936 49 30
-                              Store 1940 1939
-            1941:      6(int) Load 8(invocation)
-            1942:    102(ptr) AccessChain 27(data) 38 49
-            1943:   21(ivec4) Load 1942
-            1944:  101(ivec2) VectorShuffle 1943 1943 0 1
-            1945:  101(ivec2) GroupNonUniformBitwiseOr 34 ExclusiveScan 1944
-            1946:    102(ptr) AccessChain 27(data) 1941 49
-            1947:   21(ivec4) Load 1946
-            1948:   21(ivec4) VectorShuffle 1947 1945 4 5 2 3
-                              Store 1946 1948
-            1949:      6(int) Load 8(invocation)
-            1950:    102(ptr) AccessChain 27(data) 49 49
-            1951:   21(ivec4) Load 1950
-            1952:  111(ivec3) VectorShuffle 1951 1951 0 1 2
-            1953:  111(ivec3) GroupNonUniformBitwiseOr 34 ExclusiveScan 1952
-            1954:    102(ptr) AccessChain 27(data) 1949 49
-            1955:   21(ivec4) Load 1954
-            1956:   21(ivec4) VectorShuffle 1955 1953 4 5 6 3
-                              Store 1954 1956
-            1957:      6(int) Load 8(invocation)
-            1958:    102(ptr) AccessChain 27(data) 59 49
-            1959:   21(ivec4) Load 1958
-            1960:   21(ivec4) GroupNonUniformBitwiseOr 34 ExclusiveScan 1959
-            1961:    102(ptr) AccessChain 27(data) 1957 49
-                              Store 1961 1960
-            1962:      6(int) Load 8(invocation)
-            1963:     65(ptr) AccessChain 27(data) 29 38 30
-            1964:     19(int) Load 1963
-            1965:   521(bool) SLessThan 1964 29
-            1966:   521(bool) GroupNonUniformLogicalOr 34 ExclusiveScan 1965
-            1967:     19(int) Select 1966 38 29
-            1968:     65(ptr) AccessChain 27(data) 1962 38 30
-                              Store 1968 1967
-            1969:      6(int) Load 8(invocation)
-            1970:     72(ptr) AccessChain 27(data) 38 38
-            1971:   20(ivec4) Load 1970
-            1972:   71(ivec2) VectorShuffle 1971 1971 0 1
-            1973:  531(bvec2) SLessThan 1972 530
-            1974:  531(bvec2) GroupNonUniformLogicalOr 34 ExclusiveScan 1973
-            1975:   71(ivec2) Select 1974 534 530
-            1976:     72(ptr) AccessChain 27(data) 1969 38
-            1977:   20(ivec4) Load 1976
-            1978:   20(ivec4) VectorShuffle 1977 1975 4 5 2 3
-                              Store 1976 1978
-            1979:      6(int) Load 8(invocation)
-            1980:     72(ptr) AccessChain 27(data) 38 38
-            1981:   20(ivec4) Load 1980
-            1982:   81(ivec3) VectorShuffle 1981 1981 0 1 2
-            1983:  544(bvec3) SLessThan 1982 543
-            1984:  544(bvec3) GroupNonUniformLogicalOr 34 ExclusiveScan 1983
-            1985:   81(ivec3) Select 1984 547 543
-            1986:     72(ptr) AccessChain 27(data) 1979 38
-            1987:   20(ivec4) Load 1986
-            1988:   20(ivec4) VectorShuffle 1987 1985 4 5 6 3
-                              Store 1986 1988
-            1989:      6(int) Load 8(invocation)
-            1990:     72(ptr) AccessChain 27(data) 38 38
-            1991:   20(ivec4) Load 1990
-            1992:  556(bvec4) SLessThan 1991 555
-            1993:  556(bvec4) GroupNonUniformLogicalOr 34 ExclusiveScan 1992
-            1994:   20(ivec4) Select 1993 559 555
-            1995:     72(ptr) AccessChain 27(data) 1989 38
-                              Store 1995 1994
-            1996:      6(int) Load 8(invocation)
-            1997:     65(ptr) AccessChain 27(data) 29 38 30
-            1998:     19(int) Load 1997
-            1999:     19(int) GroupNonUniformBitwiseXor 34 ExclusiveScan 1998
-            2000:     65(ptr) AccessChain 27(data) 1996 38 30
-                              Store 2000 1999
-            2001:      6(int) Load 8(invocation)
-            2002:     72(ptr) AccessChain 27(data) 38 38
-            2003:   20(ivec4) Load 2002
-            2004:   71(ivec2) VectorShuffle 2003 2003 0 1
-            2005:   71(ivec2) GroupNonUniformBitwiseXor 34 ExclusiveScan 2004
-            2006:     72(ptr) AccessChain 27(data) 2001 38
+            1916:    112(ptr) AccessChain 27(data) 38 51
+            1917:   21(ivec4) Load 1916
+            1918:  111(ivec2) VectorShuffle 1917 1917 0 1
+            1919:  111(ivec2) GroupNonUniformUMin 34 ExclusiveScan 1918
+            1920:    105(ptr) AccessChain 27(data) 1915 51 30
+            1921:      6(int) CompositeExtract 1919 0
+                              Store 1920 1921
+            1922:    105(ptr) AccessChain 27(data) 1915 51 47
+            1923:      6(int) CompositeExtract 1919 1
+                              Store 1922 1923
+            1924:      6(int) Load 8(invocation)
+            1925:    112(ptr) AccessChain 27(data) 51 51
+            1926:   21(ivec4) Load 1925
+            1927:  122(ivec3) VectorShuffle 1926 1926 0 1 2
+            1928:  122(ivec3) GroupNonUniformUMin 34 ExclusiveScan 1927
+            1929:    105(ptr) AccessChain 27(data) 1924 51 30
+            1930:      6(int) CompositeExtract 1928 0
+                              Store 1929 1930
+            1931:    105(ptr) AccessChain 27(data) 1924 51 47
+            1932:      6(int) CompositeExtract 1928 1
+                              Store 1931 1932
+            1933:    105(ptr) AccessChain 27(data) 1924 51 61
+            1934:      6(int) CompositeExtract 1928 2
+                              Store 1933 1934
+            1935:      6(int) Load 8(invocation)
+            1936:    112(ptr) AccessChain 27(data) 65 51
+            1937:   21(ivec4) Load 1936
+            1938:   21(ivec4) GroupNonUniformUMin 34 ExclusiveScan 1937
+            1939:    112(ptr) AccessChain 27(data) 1935 51
+                              Store 1939 1938
+            1940:      6(int) Load 8(invocation)
+            1941:    139(ptr) AccessChain 27(data) 29 65 30
+            1942:22(float64_t) Load 1941
+            1943:22(float64_t) GroupNonUniformFMin 34 ExclusiveScan 1942
+            1944:    139(ptr) AccessChain 27(data) 1940 65 30
+                              Store 1944 1943
+            1945:      6(int) Load 8(invocation)
+            1946:    146(ptr) AccessChain 27(data) 38 65
+            1947: 23(f64vec4) Load 1946
+            1948:145(f64vec2) VectorShuffle 1947 1947 0 1
+            1949:145(f64vec2) GroupNonUniformFMin 34 ExclusiveScan 1948
+            1950:    139(ptr) AccessChain 27(data) 1945 65 30
+            1951:22(float64_t) CompositeExtract 1949 0
+                              Store 1950 1951
+            1952:    139(ptr) AccessChain 27(data) 1945 65 47
+            1953:22(float64_t) CompositeExtract 1949 1
+                              Store 1952 1953
+            1954:      6(int) Load 8(invocation)
+            1955:    146(ptr) AccessChain 27(data) 51 65
+            1956: 23(f64vec4) Load 1955
+            1957:156(f64vec3) VectorShuffle 1956 1956 0 1 2
+            1958:156(f64vec3) GroupNonUniformFMin 34 ExclusiveScan 1957
+            1959:    139(ptr) AccessChain 27(data) 1954 65 30
+            1960:22(float64_t) CompositeExtract 1958 0
+                              Store 1959 1960
+            1961:    139(ptr) AccessChain 27(data) 1954 65 47
+            1962:22(float64_t) CompositeExtract 1958 1
+                              Store 1961 1962
+            1963:    139(ptr) AccessChain 27(data) 1954 65 61
+            1964:22(float64_t) CompositeExtract 1958 2
+                              Store 1963 1964
+            1965:      6(int) Load 8(invocation)
+            1966:    146(ptr) AccessChain 27(data) 65 65
+            1967: 23(f64vec4) Load 1966
+            1968: 23(f64vec4) GroupNonUniformFMin 34 ExclusiveScan 1967
+            1969:    146(ptr) AccessChain 27(data) 1965 65
+                              Store 1969 1968
+            1970:      6(int) Load 8(invocation)
+            1971:     31(ptr) AccessChain 27(data) 29 29 30
+            1972:   17(float) Load 1971
+            1973:   17(float) GroupNonUniformFMax 34 ExclusiveScan 1972
+            1974:     31(ptr) AccessChain 27(data) 1970 29 30
+                              Store 1974 1973
+            1975:      6(int) Load 8(invocation)
+            1976:     40(ptr) AccessChain 27(data) 38 29
+            1977:   18(fvec4) Load 1976
+            1978:   39(fvec2) VectorShuffle 1977 1977 0 1
+            1979:   39(fvec2) GroupNonUniformFMax 34 ExclusiveScan 1978
+            1980:     31(ptr) AccessChain 27(data) 1975 29 30
+            1981:   17(float) CompositeExtract 1979 0
+                              Store 1980 1981
+            1982:     31(ptr) AccessChain 27(data) 1975 29 47
+            1983:   17(float) CompositeExtract 1979 1
+                              Store 1982 1983
+            1984:      6(int) Load 8(invocation)
+            1985:     40(ptr) AccessChain 27(data) 51 29
+            1986:   18(fvec4) Load 1985
+            1987:   52(fvec3) VectorShuffle 1986 1986 0 1 2
+            1988:   52(fvec3) GroupNonUniformFMax 34 ExclusiveScan 1987
+            1989:     31(ptr) AccessChain 27(data) 1984 29 30
+            1990:   17(float) CompositeExtract 1988 0
+                              Store 1989 1990
+            1991:     31(ptr) AccessChain 27(data) 1984 29 47
+            1992:   17(float) CompositeExtract 1988 1
+                              Store 1991 1992
+            1993:     31(ptr) AccessChain 27(data) 1984 29 61
+            1994:   17(float) CompositeExtract 1988 2
+                              Store 1993 1994
+            1995:      6(int) Load 8(invocation)
+            1996:     40(ptr) AccessChain 27(data) 65 29
+            1997:   18(fvec4) Load 1996
+            1998:   18(fvec4) GroupNonUniformFMax 34 ExclusiveScan 1997
+            1999:     40(ptr) AccessChain 27(data) 1995 29
+                              Store 1999 1998
+            2000:      6(int) Load 8(invocation)
+            2001:     71(ptr) AccessChain 27(data) 29 38 30
+            2002:     19(int) Load 2001
+            2003:     19(int) GroupNonUniformSMax 34 ExclusiveScan 2002
+            2004:     71(ptr) AccessChain 27(data) 2000 38 30
+                              Store 2004 2003
+            2005:      6(int) Load 8(invocation)
+            2006:     78(ptr) AccessChain 27(data) 38 38
             2007:   20(ivec4) Load 2006
-            2008:   20(ivec4) VectorShuffle 2007 2005 4 5 2 3
-                              Store 2006 2008
-            2009:      6(int) Load 8(invocation)
-            2010:     72(ptr) AccessChain 27(data) 49 38
-            2011:   20(ivec4) Load 2010
-            2012:   81(ivec3) VectorShuffle 2011 2011 0 1 2
-            2013:   81(ivec3) GroupNonUniformBitwiseXor 34 ExclusiveScan 2012
-            2014:     72(ptr) AccessChain 27(data) 2009 38
-            2015:   20(ivec4) Load 2014
-            2016:   20(ivec4) VectorShuffle 2015 2013 4 5 6 3
-                              Store 2014 2016
-            2017:      6(int) Load 8(invocation)
-            2018:     72(ptr) AccessChain 27(data) 59 38
-            2019:   20(ivec4) Load 2018
-            2020:   20(ivec4) GroupNonUniformBitwiseXor 34 ExclusiveScan 2019
-            2021:     72(ptr) AccessChain 27(data) 2017 38
-                              Store 2021 2020
-            2022:      6(int) Load 8(invocation)
-            2023:     95(ptr) AccessChain 27(data) 29 49 30
-            2024:      6(int) Load 2023
-            2025:      6(int) GroupNonUniformBitwiseXor 34 ExclusiveScan 2024
-            2026:     95(ptr) AccessChain 27(data) 2022 49 30
-                              Store 2026 2025
-            2027:      6(int) Load 8(invocation)
-            2028:    102(ptr) AccessChain 27(data) 38 49
-            2029:   21(ivec4) Load 2028
-            2030:  101(ivec2) VectorShuffle 2029 2029 0 1
-            2031:  101(ivec2) GroupNonUniformBitwiseXor 34 ExclusiveScan 2030
-            2032:    102(ptr) AccessChain 27(data) 2027 49
-            2033:   21(ivec4) Load 2032
-            2034:   21(ivec4) VectorShuffle 2033 2031 4 5 2 3
-                              Store 2032 2034
+            2008:   77(ivec2) VectorShuffle 2007 2007 0 1
+            2009:   77(ivec2) GroupNonUniformSMax 34 ExclusiveScan 2008
+            2010:     71(ptr) AccessChain 27(data) 2005 38 30
+            2011:     19(int) CompositeExtract 2009 0
+                              Store 2010 2011
+            2012:     71(ptr) AccessChain 27(data) 2005 38 47
+            2013:     19(int) CompositeExtract 2009 1
+                              Store 2012 2013
+            2014:      6(int) Load 8(invocation)
+            2015:     78(ptr) AccessChain 27(data) 51 38
+            2016:   20(ivec4) Load 2015
+            2017:   88(ivec3) VectorShuffle 2016 2016 0 1 2
+            2018:   88(ivec3) GroupNonUniformSMax 34 ExclusiveScan 2017
+            2019:     71(ptr) AccessChain 27(data) 2014 38 30
+            2020:     19(int) CompositeExtract 2018 0
+                              Store 2019 2020
+            2021:     71(ptr) AccessChain 27(data) 2014 38 47
+            2022:     19(int) CompositeExtract 2018 1
+                              Store 2021 2022
+            2023:     71(ptr) AccessChain 27(data) 2014 38 61
+            2024:     19(int) CompositeExtract 2018 2
+                              Store 2023 2024
+            2025:      6(int) Load 8(invocation)
+            2026:     78(ptr) AccessChain 27(data) 65 38
+            2027:   20(ivec4) Load 2026
+            2028:   20(ivec4) GroupNonUniformSMax 34 ExclusiveScan 2027
+            2029:     78(ptr) AccessChain 27(data) 2025 38
+                              Store 2029 2028
+            2030:      6(int) Load 8(invocation)
+            2031:    105(ptr) AccessChain 27(data) 29 51 30
+            2032:      6(int) Load 2031
+            2033:      6(int) GroupNonUniformUMax 34 ExclusiveScan 2032
+            2034:    105(ptr) AccessChain 27(data) 2030 51 30
+                              Store 2034 2033
             2035:      6(int) Load 8(invocation)
-            2036:    102(ptr) AccessChain 27(data) 49 49
+            2036:    112(ptr) AccessChain 27(data) 38 51
             2037:   21(ivec4) Load 2036
-            2038:  111(ivec3) VectorShuffle 2037 2037 0 1 2
-            2039:  111(ivec3) GroupNonUniformBitwiseXor 34 ExclusiveScan 2038
-            2040:    102(ptr) AccessChain 27(data) 2035 49
-            2041:   21(ivec4) Load 2040
-            2042:   21(ivec4) VectorShuffle 2041 2039 4 5 6 3
-                              Store 2040 2042
-            2043:      6(int) Load 8(invocation)
-            2044:    102(ptr) AccessChain 27(data) 59 49
-            2045:   21(ivec4) Load 2044
-            2046:   21(ivec4) GroupNonUniformBitwiseXor 34 ExclusiveScan 2045
-            2047:    102(ptr) AccessChain 27(data) 2043 49
-                              Store 2047 2046
-            2048:      6(int) Load 8(invocation)
-            2049:     65(ptr) AccessChain 27(data) 29 38 30
-            2050:     19(int) Load 2049
-            2051:   521(bool) SLessThan 2050 29
-            2052:   521(bool) GroupNonUniformLogicalXor 34 ExclusiveScan 2051
-            2053:     19(int) Select 2052 38 29
-            2054:     65(ptr) AccessChain 27(data) 2048 38 30
-                              Store 2054 2053
+            2038:  111(ivec2) VectorShuffle 2037 2037 0 1
+            2039:  111(ivec2) GroupNonUniformUMax 34 ExclusiveScan 2038
+            2040:    105(ptr) AccessChain 27(data) 2035 51 30
+            2041:      6(int) CompositeExtract 2039 0
+                              Store 2040 2041
+            2042:    105(ptr) AccessChain 27(data) 2035 51 47
+            2043:      6(int) CompositeExtract 2039 1
+                              Store 2042 2043
+            2044:      6(int) Load 8(invocation)
+            2045:    112(ptr) AccessChain 27(data) 51 51
+            2046:   21(ivec4) Load 2045
+            2047:  122(ivec3) VectorShuffle 2046 2046 0 1 2
+            2048:  122(ivec3) GroupNonUniformUMax 34 ExclusiveScan 2047
+            2049:    105(ptr) AccessChain 27(data) 2044 51 30
+            2050:      6(int) CompositeExtract 2048 0
+                              Store 2049 2050
+            2051:    105(ptr) AccessChain 27(data) 2044 51 47
+            2052:      6(int) CompositeExtract 2048 1
+                              Store 2051 2052
+            2053:    105(ptr) AccessChain 27(data) 2044 51 61
+            2054:      6(int) CompositeExtract 2048 2
+                              Store 2053 2054
             2055:      6(int) Load 8(invocation)
-            2056:     72(ptr) AccessChain 27(data) 38 38
-            2057:   20(ivec4) Load 2056
-            2058:   71(ivec2) VectorShuffle 2057 2057 0 1
-            2059:  531(bvec2) SLessThan 2058 530
-            2060:  531(bvec2) GroupNonUniformLogicalXor 34 ExclusiveScan 2059
-            2061:   71(ivec2) Select 2060 534 530
-            2062:     72(ptr) AccessChain 27(data) 2055 38
-            2063:   20(ivec4) Load 2062
-            2064:   20(ivec4) VectorShuffle 2063 2061 4 5 2 3
-                              Store 2062 2064
+            2056:    112(ptr) AccessChain 27(data) 65 51
+            2057:   21(ivec4) Load 2056
+            2058:   21(ivec4) GroupNonUniformUMax 34 ExclusiveScan 2057
+            2059:    112(ptr) AccessChain 27(data) 2055 51
+                              Store 2059 2058
+            2060:      6(int) Load 8(invocation)
+            2061:    139(ptr) AccessChain 27(data) 29 65 30
+            2062:22(float64_t) Load 2061
+            2063:22(float64_t) GroupNonUniformFMax 34 ExclusiveScan 2062
+            2064:    139(ptr) AccessChain 27(data) 2060 65 30
+                              Store 2064 2063
             2065:      6(int) Load 8(invocation)
-            2066:     72(ptr) AccessChain 27(data) 38 38
-            2067:   20(ivec4) Load 2066
-            2068:   81(ivec3) VectorShuffle 2067 2067 0 1 2
-            2069:  544(bvec3) SLessThan 2068 543
-            2070:  544(bvec3) GroupNonUniformLogicalXor 34 ExclusiveScan 2069
-            2071:   81(ivec3) Select 2070 547 543
-            2072:     72(ptr) AccessChain 27(data) 2065 38
-            2073:   20(ivec4) Load 2072
-            2074:   20(ivec4) VectorShuffle 2073 2071 4 5 6 3
-                              Store 2072 2074
-            2075:      6(int) Load 8(invocation)
-            2076:     72(ptr) AccessChain 27(data) 38 38
-            2077:   20(ivec4) Load 2076
-            2078:  556(bvec4) SLessThan 2077 555
-            2079:  556(bvec4) GroupNonUniformLogicalXor 34 ExclusiveScan 2078
-            2080:   20(ivec4) Select 2079 559 555
-            2081:     72(ptr) AccessChain 27(data) 2075 38
-                              Store 2081 2080
+            2066:    146(ptr) AccessChain 27(data) 38 65
+            2067: 23(f64vec4) Load 2066
+            2068:145(f64vec2) VectorShuffle 2067 2067 0 1
+            2069:145(f64vec2) GroupNonUniformFMax 34 ExclusiveScan 2068
+            2070:    139(ptr) AccessChain 27(data) 2065 65 30
+            2071:22(float64_t) CompositeExtract 2069 0
+                              Store 2070 2071
+            2072:    139(ptr) AccessChain 27(data) 2065 65 47
+            2073:22(float64_t) CompositeExtract 2069 1
+                              Store 2072 2073
+            2074:      6(int) Load 8(invocation)
+            2075:    146(ptr) AccessChain 27(data) 51 65
+            2076: 23(f64vec4) Load 2075
+            2077:156(f64vec3) VectorShuffle 2076 2076 0 1 2
+            2078:156(f64vec3) GroupNonUniformFMax 34 ExclusiveScan 2077
+            2079:    139(ptr) AccessChain 27(data) 2074 65 30
+            2080:22(float64_t) CompositeExtract 2078 0
+                              Store 2079 2080
+            2081:    139(ptr) AccessChain 27(data) 2074 65 47
+            2082:22(float64_t) CompositeExtract 2078 1
+                              Store 2081 2082
+            2083:    139(ptr) AccessChain 27(data) 2074 65 61
+            2084:22(float64_t) CompositeExtract 2078 2
+                              Store 2083 2084
+            2085:      6(int) Load 8(invocation)
+            2086:    146(ptr) AccessChain 27(data) 65 65
+            2087: 23(f64vec4) Load 2086
+            2088: 23(f64vec4) GroupNonUniformFMax 34 ExclusiveScan 2087
+            2089:    146(ptr) AccessChain 27(data) 2085 65
+                              Store 2089 2088
+            2090:      6(int) Load 8(invocation)
+            2091:     71(ptr) AccessChain 27(data) 29 38 30
+            2092:     19(int) Load 2091
+            2093:     19(int) GroupNonUniformBitwiseAnd 34 ExclusiveScan 2092
+            2094:     71(ptr) AccessChain 27(data) 2090 38 30
+                              Store 2094 2093
+            2095:      6(int) Load 8(invocation)
+            2096:     78(ptr) AccessChain 27(data) 38 38
+            2097:   20(ivec4) Load 2096
+            2098:   77(ivec2) VectorShuffle 2097 2097 0 1
+            2099:   77(ivec2) GroupNonUniformBitwiseAnd 34 ExclusiveScan 2098
+            2100:     71(ptr) AccessChain 27(data) 2095 38 30
+            2101:     19(int) CompositeExtract 2099 0
+                              Store 2100 2101
+            2102:     71(ptr) AccessChain 27(data) 2095 38 47
+            2103:     19(int) CompositeExtract 2099 1
+                              Store 2102 2103
+            2104:      6(int) Load 8(invocation)
+            2105:     78(ptr) AccessChain 27(data) 51 38
+            2106:   20(ivec4) Load 2105
+            2107:   88(ivec3) VectorShuffle 2106 2106 0 1 2
+            2108:   88(ivec3) GroupNonUniformBitwiseAnd 34 ExclusiveScan 2107
+            2109:     71(ptr) AccessChain 27(data) 2104 38 30
+            2110:     19(int) CompositeExtract 2108 0
+                              Store 2109 2110
+            2111:     71(ptr) AccessChain 27(data) 2104 38 47
+            2112:     19(int) CompositeExtract 2108 1
+                              Store 2111 2112
+            2113:     71(ptr) AccessChain 27(data) 2104 38 61
+            2114:     19(int) CompositeExtract 2108 2
+                              Store 2113 2114
+            2115:      6(int) Load 8(invocation)
+            2116:     78(ptr) AccessChain 27(data) 65 38
+            2117:   20(ivec4) Load 2116
+            2118:   20(ivec4) GroupNonUniformBitwiseAnd 34 ExclusiveScan 2117
+            2119:     78(ptr) AccessChain 27(data) 2115 38
+                              Store 2119 2118
+            2120:      6(int) Load 8(invocation)
+            2121:    105(ptr) AccessChain 27(data) 29 51 30
+            2122:      6(int) Load 2121
+            2123:      6(int) GroupNonUniformBitwiseAnd 34 ExclusiveScan 2122
+            2124:    105(ptr) AccessChain 27(data) 2120 51 30
+                              Store 2124 2123
+            2125:      6(int) Load 8(invocation)
+            2126:    112(ptr) AccessChain 27(data) 38 51
+            2127:   21(ivec4) Load 2126
+            2128:  111(ivec2) VectorShuffle 2127 2127 0 1
+            2129:  111(ivec2) GroupNonUniformBitwiseAnd 34 ExclusiveScan 2128
+            2130:    105(ptr) AccessChain 27(data) 2125 51 30
+            2131:      6(int) CompositeExtract 2129 0
+                              Store 2130 2131
+            2132:    105(ptr) AccessChain 27(data) 2125 51 47
+            2133:      6(int) CompositeExtract 2129 1
+                              Store 2132 2133
+            2134:      6(int) Load 8(invocation)
+            2135:    112(ptr) AccessChain 27(data) 51 51
+            2136:   21(ivec4) Load 2135
+            2137:  122(ivec3) VectorShuffle 2136 2136 0 1 2
+            2138:  122(ivec3) GroupNonUniformBitwiseAnd 34 ExclusiveScan 2137
+            2139:    105(ptr) AccessChain 27(data) 2134 51 30
+            2140:      6(int) CompositeExtract 2138 0
+                              Store 2139 2140
+            2141:    105(ptr) AccessChain 27(data) 2134 51 47
+            2142:      6(int) CompositeExtract 2138 1
+                              Store 2141 2142
+            2143:    105(ptr) AccessChain 27(data) 2134 51 61
+            2144:      6(int) CompositeExtract 2138 2
+                              Store 2143 2144
+            2145:      6(int) Load 8(invocation)
+            2146:    112(ptr) AccessChain 27(data) 65 51
+            2147:   21(ivec4) Load 2146
+            2148:   21(ivec4) GroupNonUniformBitwiseAnd 34 ExclusiveScan 2147
+            2149:    112(ptr) AccessChain 27(data) 2145 51
+                              Store 2149 2148
+            2150:      6(int) Load 8(invocation)
+            2151:     71(ptr) AccessChain 27(data) 29 38 30
+            2152:     19(int) Load 2151
+            2153:   595(bool) SLessThan 2152 29
+            2154:   595(bool) GroupNonUniformLogicalAnd 34 ExclusiveScan 2153
+            2155:     19(int) Select 2154 38 29
+            2156:     71(ptr) AccessChain 27(data) 2150 38 30
+                              Store 2156 2155
+            2157:      6(int) Load 8(invocation)
+            2158:     78(ptr) AccessChain 27(data) 38 38
+            2159:   20(ivec4) Load 2158
+            2160:   77(ivec2) VectorShuffle 2159 2159 0 1
+            2161:  605(bvec2) SLessThan 2160 604
+            2162:  605(bvec2) GroupNonUniformLogicalAnd 34 ExclusiveScan 2161
+            2163:   77(ivec2) Select 2162 608 604
+            2164:     71(ptr) AccessChain 27(data) 2157 38 30
+            2165:     19(int) CompositeExtract 2163 0
+                              Store 2164 2165
+            2166:     71(ptr) AccessChain 27(data) 2157 38 47
+            2167:     19(int) CompositeExtract 2163 1
+                              Store 2166 2167
+            2168:      6(int) Load 8(invocation)
+            2169:     78(ptr) AccessChain 27(data) 38 38
+            2170:   20(ivec4) Load 2169
+            2171:   88(ivec3) VectorShuffle 2170 2170 0 1 2
+            2172:  619(bvec3) SLessThan 2171 618
+            2173:  619(bvec3) GroupNonUniformLogicalAnd 34 ExclusiveScan 2172
+            2174:   88(ivec3) Select 2173 622 618
+            2175:     71(ptr) AccessChain 27(data) 2168 38 30
+            2176:     19(int) CompositeExtract 2174 0
+                              Store 2175 2176
+            2177:     71(ptr) AccessChain 27(data) 2168 38 47
+            2178:     19(int) CompositeExtract 2174 1
+                              Store 2177 2178
+            2179:     71(ptr) AccessChain 27(data) 2168 38 61
+            2180:     19(int) CompositeExtract 2174 2
+                              Store 2179 2180
+            2181:      6(int) Load 8(invocation)
+            2182:     78(ptr) AccessChain 27(data) 38 38
+            2183:   20(ivec4) Load 2182
+            2184:  634(bvec4) SLessThan 2183 633
+            2185:  634(bvec4) GroupNonUniformLogicalAnd 34 ExclusiveScan 2184
+            2186:   20(ivec4) Select 2185 637 633
+            2187:     78(ptr) AccessChain 27(data) 2181 38
+                              Store 2187 2186
+            2188:      6(int) Load 8(invocation)
+            2189:     71(ptr) AccessChain 27(data) 29 38 30
+            2190:     19(int) Load 2189
+            2191:     19(int) GroupNonUniformBitwiseOr 34 ExclusiveScan 2190
+            2192:     71(ptr) AccessChain 27(data) 2188 38 30
+                              Store 2192 2191
+            2193:      6(int) Load 8(invocation)
+            2194:     78(ptr) AccessChain 27(data) 38 38
+            2195:   20(ivec4) Load 2194
+            2196:   77(ivec2) VectorShuffle 2195 2195 0 1
+            2197:   77(ivec2) GroupNonUniformBitwiseOr 34 ExclusiveScan 2196
+            2198:     71(ptr) AccessChain 27(data) 2193 38 30
+            2199:     19(int) CompositeExtract 2197 0
+                              Store 2198 2199
+            2200:     71(ptr) AccessChain 27(data) 2193 38 47
+            2201:     19(int) CompositeExtract 2197 1
+                              Store 2200 2201
+            2202:      6(int) Load 8(invocation)
+            2203:     78(ptr) AccessChain 27(data) 51 38
+            2204:   20(ivec4) Load 2203
+            2205:   88(ivec3) VectorShuffle 2204 2204 0 1 2
+            2206:   88(ivec3) GroupNonUniformBitwiseOr 34 ExclusiveScan 2205
+            2207:     71(ptr) AccessChain 27(data) 2202 38 30
+            2208:     19(int) CompositeExtract 2206 0
+                              Store 2207 2208
+            2209:     71(ptr) AccessChain 27(data) 2202 38 47
+            2210:     19(int) CompositeExtract 2206 1
+                              Store 2209 2210
+            2211:     71(ptr) AccessChain 27(data) 2202 38 61
+            2212:     19(int) CompositeExtract 2206 2
+                              Store 2211 2212
+            2213:      6(int) Load 8(invocation)
+            2214:     78(ptr) AccessChain 27(data) 65 38
+            2215:   20(ivec4) Load 2214
+            2216:   20(ivec4) GroupNonUniformBitwiseOr 34 ExclusiveScan 2215
+            2217:     78(ptr) AccessChain 27(data) 2213 38
+                              Store 2217 2216
+            2218:      6(int) Load 8(invocation)
+            2219:    105(ptr) AccessChain 27(data) 29 51 30
+            2220:      6(int) Load 2219
+            2221:      6(int) GroupNonUniformBitwiseOr 34 ExclusiveScan 2220
+            2222:    105(ptr) AccessChain 27(data) 2218 51 30
+                              Store 2222 2221
+            2223:      6(int) Load 8(invocation)
+            2224:    112(ptr) AccessChain 27(data) 38 51
+            2225:   21(ivec4) Load 2224
+            2226:  111(ivec2) VectorShuffle 2225 2225 0 1
+            2227:  111(ivec2) GroupNonUniformBitwiseOr 34 ExclusiveScan 2226
+            2228:    105(ptr) AccessChain 27(data) 2223 51 30
+            2229:      6(int) CompositeExtract 2227 0
+                              Store 2228 2229
+            2230:    105(ptr) AccessChain 27(data) 2223 51 47
+            2231:      6(int) CompositeExtract 2227 1
+                              Store 2230 2231
+            2232:      6(int) Load 8(invocation)
+            2233:    112(ptr) AccessChain 27(data) 51 51
+            2234:   21(ivec4) Load 2233
+            2235:  122(ivec3) VectorShuffle 2234 2234 0 1 2
+            2236:  122(ivec3) GroupNonUniformBitwiseOr 34 ExclusiveScan 2235
+            2237:    105(ptr) AccessChain 27(data) 2232 51 30
+            2238:      6(int) CompositeExtract 2236 0
+                              Store 2237 2238
+            2239:    105(ptr) AccessChain 27(data) 2232 51 47
+            2240:      6(int) CompositeExtract 2236 1
+                              Store 2239 2240
+            2241:    105(ptr) AccessChain 27(data) 2232 51 61
+            2242:      6(int) CompositeExtract 2236 2
+                              Store 2241 2242
+            2243:      6(int) Load 8(invocation)
+            2244:    112(ptr) AccessChain 27(data) 65 51
+            2245:   21(ivec4) Load 2244
+            2246:   21(ivec4) GroupNonUniformBitwiseOr 34 ExclusiveScan 2245
+            2247:    112(ptr) AccessChain 27(data) 2243 51
+                              Store 2247 2246
+            2248:      6(int) Load 8(invocation)
+            2249:     71(ptr) AccessChain 27(data) 29 38 30
+            2250:     19(int) Load 2249
+            2251:   595(bool) SLessThan 2250 29
+            2252:   595(bool) GroupNonUniformLogicalOr 34 ExclusiveScan 2251
+            2253:     19(int) Select 2252 38 29
+            2254:     71(ptr) AccessChain 27(data) 2248 38 30
+                              Store 2254 2253
+            2255:      6(int) Load 8(invocation)
+            2256:     78(ptr) AccessChain 27(data) 38 38
+            2257:   20(ivec4) Load 2256
+            2258:   77(ivec2) VectorShuffle 2257 2257 0 1
+            2259:  605(bvec2) SLessThan 2258 604
+            2260:  605(bvec2) GroupNonUniformLogicalOr 34 ExclusiveScan 2259
+            2261:   77(ivec2) Select 2260 608 604
+            2262:     71(ptr) AccessChain 27(data) 2255 38 30
+            2263:     19(int) CompositeExtract 2261 0
+                              Store 2262 2263
+            2264:     71(ptr) AccessChain 27(data) 2255 38 47
+            2265:     19(int) CompositeExtract 2261 1
+                              Store 2264 2265
+            2266:      6(int) Load 8(invocation)
+            2267:     78(ptr) AccessChain 27(data) 38 38
+            2268:   20(ivec4) Load 2267
+            2269:   88(ivec3) VectorShuffle 2268 2268 0 1 2
+            2270:  619(bvec3) SLessThan 2269 618
+            2271:  619(bvec3) GroupNonUniformLogicalOr 34 ExclusiveScan 2270
+            2272:   88(ivec3) Select 2271 622 618
+            2273:     71(ptr) AccessChain 27(data) 2266 38 30
+            2274:     19(int) CompositeExtract 2272 0
+                              Store 2273 2274
+            2275:     71(ptr) AccessChain 27(data) 2266 38 47
+            2276:     19(int) CompositeExtract 2272 1
+                              Store 2275 2276
+            2277:     71(ptr) AccessChain 27(data) 2266 38 61
+            2278:     19(int) CompositeExtract 2272 2
+                              Store 2277 2278
+            2279:      6(int) Load 8(invocation)
+            2280:     78(ptr) AccessChain 27(data) 38 38
+            2281:   20(ivec4) Load 2280
+            2282:  634(bvec4) SLessThan 2281 633
+            2283:  634(bvec4) GroupNonUniformLogicalOr 34 ExclusiveScan 2282
+            2284:   20(ivec4) Select 2283 637 633
+            2285:     78(ptr) AccessChain 27(data) 2279 38
+                              Store 2285 2284
+            2286:      6(int) Load 8(invocation)
+            2287:     71(ptr) AccessChain 27(data) 29 38 30
+            2288:     19(int) Load 2287
+            2289:     19(int) GroupNonUniformBitwiseXor 34 ExclusiveScan 2288
+            2290:     71(ptr) AccessChain 27(data) 2286 38 30
+                              Store 2290 2289
+            2291:      6(int) Load 8(invocation)
+            2292:     78(ptr) AccessChain 27(data) 38 38
+            2293:   20(ivec4) Load 2292
+            2294:   77(ivec2) VectorShuffle 2293 2293 0 1
+            2295:   77(ivec2) GroupNonUniformBitwiseXor 34 ExclusiveScan 2294
+            2296:     71(ptr) AccessChain 27(data) 2291 38 30
+            2297:     19(int) CompositeExtract 2295 0
+                              Store 2296 2297
+            2298:     71(ptr) AccessChain 27(data) 2291 38 47
+            2299:     19(int) CompositeExtract 2295 1
+                              Store 2298 2299
+            2300:      6(int) Load 8(invocation)
+            2301:     78(ptr) AccessChain 27(data) 51 38
+            2302:   20(ivec4) Load 2301
+            2303:   88(ivec3) VectorShuffle 2302 2302 0 1 2
+            2304:   88(ivec3) GroupNonUniformBitwiseXor 34 ExclusiveScan 2303
+            2305:     71(ptr) AccessChain 27(data) 2300 38 30
+            2306:     19(int) CompositeExtract 2304 0
+                              Store 2305 2306
+            2307:     71(ptr) AccessChain 27(data) 2300 38 47
+            2308:     19(int) CompositeExtract 2304 1
+                              Store 2307 2308
+            2309:     71(ptr) AccessChain 27(data) 2300 38 61
+            2310:     19(int) CompositeExtract 2304 2
+                              Store 2309 2310
+            2311:      6(int) Load 8(invocation)
+            2312:     78(ptr) AccessChain 27(data) 65 38
+            2313:   20(ivec4) Load 2312
+            2314:   20(ivec4) GroupNonUniformBitwiseXor 34 ExclusiveScan 2313
+            2315:     78(ptr) AccessChain 27(data) 2311 38
+                              Store 2315 2314
+            2316:      6(int) Load 8(invocation)
+            2317:    105(ptr) AccessChain 27(data) 29 51 30
+            2318:      6(int) Load 2317
+            2319:      6(int) GroupNonUniformBitwiseXor 34 ExclusiveScan 2318
+            2320:    105(ptr) AccessChain 27(data) 2316 51 30
+                              Store 2320 2319
+            2321:      6(int) Load 8(invocation)
+            2322:    112(ptr) AccessChain 27(data) 38 51
+            2323:   21(ivec4) Load 2322
+            2324:  111(ivec2) VectorShuffle 2323 2323 0 1
+            2325:  111(ivec2) GroupNonUniformBitwiseXor 34 ExclusiveScan 2324
+            2326:    105(ptr) AccessChain 27(data) 2321 51 30
+            2327:      6(int) CompositeExtract 2325 0
+                              Store 2326 2327
+            2328:    105(ptr) AccessChain 27(data) 2321 51 47
+            2329:      6(int) CompositeExtract 2325 1
+                              Store 2328 2329
+            2330:      6(int) Load 8(invocation)
+            2331:    112(ptr) AccessChain 27(data) 51 51
+            2332:   21(ivec4) Load 2331
+            2333:  122(ivec3) VectorShuffle 2332 2332 0 1 2
+            2334:  122(ivec3) GroupNonUniformBitwiseXor 34 ExclusiveScan 2333
+            2335:    105(ptr) AccessChain 27(data) 2330 51 30
+            2336:      6(int) CompositeExtract 2334 0
+                              Store 2335 2336
+            2337:    105(ptr) AccessChain 27(data) 2330 51 47
+            2338:      6(int) CompositeExtract 2334 1
+                              Store 2337 2338
+            2339:    105(ptr) AccessChain 27(data) 2330 51 61
+            2340:      6(int) CompositeExtract 2334 2
+                              Store 2339 2340
+            2341:      6(int) Load 8(invocation)
+            2342:    112(ptr) AccessChain 27(data) 65 51
+            2343:   21(ivec4) Load 2342
+            2344:   21(ivec4) GroupNonUniformBitwiseXor 34 ExclusiveScan 2343
+            2345:    112(ptr) AccessChain 27(data) 2341 51
+                              Store 2345 2344
+            2346:      6(int) Load 8(invocation)
+            2347:     71(ptr) AccessChain 27(data) 29 38 30
+            2348:     19(int) Load 2347
+            2349:   595(bool) SLessThan 2348 29
+            2350:   595(bool) GroupNonUniformLogicalXor 34 ExclusiveScan 2349
+            2351:     19(int) Select 2350 38 29
+            2352:     71(ptr) AccessChain 27(data) 2346 38 30
+                              Store 2352 2351
+            2353:      6(int) Load 8(invocation)
+            2354:     78(ptr) AccessChain 27(data) 38 38
+            2355:   20(ivec4) Load 2354
+            2356:   77(ivec2) VectorShuffle 2355 2355 0 1
+            2357:  605(bvec2) SLessThan 2356 604
+            2358:  605(bvec2) GroupNonUniformLogicalXor 34 ExclusiveScan 2357
+            2359:   77(ivec2) Select 2358 608 604
+            2360:     71(ptr) AccessChain 27(data) 2353 38 30
+            2361:     19(int) CompositeExtract 2359 0
+                              Store 2360 2361
+            2362:     71(ptr) AccessChain 27(data) 2353 38 47
+            2363:     19(int) CompositeExtract 2359 1
+                              Store 2362 2363
+            2364:      6(int) Load 8(invocation)
+            2365:     78(ptr) AccessChain 27(data) 38 38
+            2366:   20(ivec4) Load 2365
+            2367:   88(ivec3) VectorShuffle 2366 2366 0 1 2
+            2368:  619(bvec3) SLessThan 2367 618
+            2369:  619(bvec3) GroupNonUniformLogicalXor 34 ExclusiveScan 2368
+            2370:   88(ivec3) Select 2369 622 618
+            2371:     71(ptr) AccessChain 27(data) 2364 38 30
+            2372:     19(int) CompositeExtract 2370 0
+                              Store 2371 2372
+            2373:     71(ptr) AccessChain 27(data) 2364 38 47
+            2374:     19(int) CompositeExtract 2370 1
+                              Store 2373 2374
+            2375:     71(ptr) AccessChain 27(data) 2364 38 61
+            2376:     19(int) CompositeExtract 2370 2
+                              Store 2375 2376
+            2377:      6(int) Load 8(invocation)
+            2378:     78(ptr) AccessChain 27(data) 38 38
+            2379:   20(ivec4) Load 2378
+            2380:  634(bvec4) SLessThan 2379 633
+            2381:  634(bvec4) GroupNonUniformLogicalXor 34 ExclusiveScan 2380
+            2382:   20(ivec4) Select 2381 637 633
+            2383:     78(ptr) AccessChain 27(data) 2377 38
+                              Store 2383 2382
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.subgroupBallot.comp.out b/Test/baseResults/spv.subgroupBallot.comp.out
index 0e83773..65cfa7a 100644
--- a/Test/baseResults/spv.subgroupBallot.comp.out
+++ b/Test/baseResults/spv.subgroupBallot.comp.out
@@ -1,7 +1,7 @@
 spv.subgroupBallot.comp
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 397
+// Id's are bound by 437
 
                               Capability Shader
                               Capability Float64
@@ -51,7 +51,7 @@
                               Decorate 46(Buffers) Block
                               Decorate 49(data) DescriptorSet 0
                               Decorate 49(data) Binding 0
-                              Decorate 396 BuiltIn WorkgroupSize
+                              Decorate 436 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -93,28 +93,28 @@
               96:             TypePointer StorageBuffer 40(float)
              102:             TypeVector 40(float) 2
              103:             TypePointer StorageBuffer 41(fvec4)
-             112:             TypeVector 40(float) 3
-             121:     42(int) Constant 3
-             127:             TypePointer StorageBuffer 42(int)
-             133:             TypeVector 42(int) 2
-             134:             TypePointer StorageBuffer 43(ivec4)
-             143:             TypeVector 42(int) 3
-             162:             TypeVector 6(int) 2
-             171:             TypeVector 6(int) 3
-             185:             TypePointer StorageBuffer 44(float64_t)
-             191:             TypeVector 44(float64_t) 2
-             192:             TypePointer StorageBuffer 45(f64vec4)
-             201:             TypeVector 44(float64_t) 3
-             225:  133(ivec2) ConstantComposite 61 61
-             226:             TypeVector 36(bool) 2
-             229:  133(ivec2) ConstantComposite 60 60
-             238:  143(ivec3) ConstantComposite 61 61 61
-             239:             TypeVector 36(bool) 3
-             242:  143(ivec3) ConstantComposite 60 60 60
-             250:   43(ivec4) ConstantComposite 61 61 61 61
-             253:   43(ivec4) ConstantComposite 60 60 60 60
-             395:      6(int) Constant 8
-             396:  171(ivec3) ConstantComposite 395 395 64
+             113:             TypeVector 40(float) 3
+             125:     42(int) Constant 3
+             131:             TypePointer StorageBuffer 42(int)
+             137:             TypeVector 42(int) 2
+             138:             TypePointer StorageBuffer 43(ivec4)
+             148:             TypeVector 42(int) 3
+             170:             TypeVector 6(int) 2
+             180:             TypeVector 6(int) 3
+             197:             TypePointer StorageBuffer 44(float64_t)
+             203:             TypeVector 44(float64_t) 2
+             204:             TypePointer StorageBuffer 45(f64vec4)
+             214:             TypeVector 44(float64_t) 3
+             241:  137(ivec2) ConstantComposite 61 61
+             242:             TypeVector 36(bool) 2
+             245:  137(ivec2) ConstantComposite 60 60
+             255:  148(ivec3) ConstantComposite 61 61 61
+             256:             TypeVector 36(bool) 3
+             259:  148(ivec3) ConstantComposite 60 60 60
+             270:   43(ivec4) ConstantComposite 61 61 61 61
+             273:   43(ivec4) ConstantComposite 60 60 60 60
+             435:      6(int) Constant 8
+             436:  180(ivec3) ConstantComposite 435 435 64
          4(main):           2 Function None 3
                5:             Label
    8(invocation):      7(ptr) Variable Function
@@ -179,7 +179,7 @@
               87:             Label
               92:    36(bool) Phi 85 5 91 86
                               SelectionMerge 94 None
-                              BranchConditional 92 93 256
+                              BranchConditional 92 93 276
               93:               Label
               95:      6(int)   Load 8(invocation)
               97:     96(ptr)   AccessChain 49(data) 61 61 54
@@ -192,313 +192,383 @@
              105:   41(fvec4)   Load 104
              106:  102(fvec2)   VectorShuffle 105 105 0 1
              107:  102(fvec2)   GroupNonUniformBroadcast 38 106 38
-             108:    103(ptr)   AccessChain 49(data) 101 61
-             109:   41(fvec4)   Load 108
-             110:   41(fvec4)   VectorShuffle 109 107 4 5 2 3
-                                Store 108 110
-             111:      6(int)   Load 8(invocation)
-             113:    103(ptr)   AccessChain 49(data) 51 61
-             114:   41(fvec4)   Load 113
-             115:  112(fvec3)   VectorShuffle 114 114 0 1 2
-             116:  112(fvec3)   GroupNonUniformBroadcast 38 115 38
-             117:    103(ptr)   AccessChain 49(data) 111 61
-             118:   41(fvec4)   Load 117
-             119:   41(fvec4)   VectorShuffle 118 116 4 5 6 3
-                                Store 117 119
-             120:      6(int)   Load 8(invocation)
-             122:    103(ptr)   AccessChain 49(data) 121 61
-             123:   41(fvec4)   Load 122
-             124:   41(fvec4)   GroupNonUniformBroadcast 38 123 38
-             125:    103(ptr)   AccessChain 49(data) 120 61
-                                Store 125 124
-             126:      6(int)   Load 8(invocation)
-             128:    127(ptr)   AccessChain 49(data) 61 60 54
-             129:     42(int)   Load 128
-             130:     42(int)   GroupNonUniformBroadcast 38 129 72
-             131:    127(ptr)   AccessChain 49(data) 126 60 54
-                                Store 131 130
-             132:      6(int)   Load 8(invocation)
-             135:    134(ptr)   AccessChain 49(data) 60 60
-             136:   43(ivec4)   Load 135
-             137:  133(ivec2)   VectorShuffle 136 136 0 1
-             138:  133(ivec2)   GroupNonUniformBroadcast 38 137 72
-             139:    134(ptr)   AccessChain 49(data) 132 60
+             108:     96(ptr)   AccessChain 49(data) 101 61 54
+             109:   40(float)   CompositeExtract 107 0
+                                Store 108 109
+             110:     96(ptr)   AccessChain 49(data) 101 61 64
+             111:   40(float)   CompositeExtract 107 1
+                                Store 110 111
+             112:      6(int)   Load 8(invocation)
+             114:    103(ptr)   AccessChain 49(data) 51 61
+             115:   41(fvec4)   Load 114
+             116:  113(fvec3)   VectorShuffle 115 115 0 1 2
+             117:  113(fvec3)   GroupNonUniformBroadcast 38 116 38
+             118:     96(ptr)   AccessChain 49(data) 112 61 54
+             119:   40(float)   CompositeExtract 117 0
+                                Store 118 119
+             120:     96(ptr)   AccessChain 49(data) 112 61 64
+             121:   40(float)   CompositeExtract 117 1
+                                Store 120 121
+             122:     96(ptr)   AccessChain 49(data) 112 61 72
+             123:   40(float)   CompositeExtract 117 2
+                                Store 122 123
+             124:      6(int)   Load 8(invocation)
+             126:    103(ptr)   AccessChain 49(data) 125 61
+             127:   41(fvec4)   Load 126
+             128:   41(fvec4)   GroupNonUniformBroadcast 38 127 38
+             129:    103(ptr)   AccessChain 49(data) 124 61
+                                Store 129 128
+             130:      6(int)   Load 8(invocation)
+             132:    131(ptr)   AccessChain 49(data) 61 60 54
+             133:     42(int)   Load 132
+             134:     42(int)   GroupNonUniformBroadcast 38 133 72
+             135:    131(ptr)   AccessChain 49(data) 130 60 54
+                                Store 135 134
+             136:      6(int)   Load 8(invocation)
+             139:    138(ptr)   AccessChain 49(data) 60 60
              140:   43(ivec4)   Load 139
-             141:   43(ivec4)   VectorShuffle 140 138 4 5 2 3
-                                Store 139 141
-             142:      6(int)   Load 8(invocation)
-             144:    134(ptr)   AccessChain 49(data) 51 60
-             145:   43(ivec4)   Load 144
-             146:  143(ivec3)   VectorShuffle 145 145 0 1 2
-             147:  143(ivec3)   GroupNonUniformBroadcast 38 146 72
-             148:    134(ptr)   AccessChain 49(data) 142 60
-             149:   43(ivec4)   Load 148
-             150:   43(ivec4)   VectorShuffle 149 147 4 5 6 3
-                                Store 148 150
-             151:      6(int)   Load 8(invocation)
-             152:    134(ptr)   AccessChain 49(data) 121 60
-             153:   43(ivec4)   Load 152
-             154:   43(ivec4)   GroupNonUniformBroadcast 38 153 72
-             155:    134(ptr)   AccessChain 49(data) 151 60
-                                Store 155 154
-             156:      6(int)   Load 8(invocation)
-             157:     55(ptr)   AccessChain 49(data) 61 51 54
-             158:      6(int)   Load 157
-             159:      6(int)   GroupNonUniformBroadcast 38 158 64
-             160:     55(ptr)   AccessChain 49(data) 156 51 54
-                                Store 160 159
-             161:      6(int)   Load 8(invocation)
-             163:     88(ptr)   AccessChain 49(data) 60 51
-             164:   17(ivec4)   Load 163
-             165:  162(ivec2)   VectorShuffle 164 164 0 1
-             166:  162(ivec2)   GroupNonUniformBroadcast 38 165 64
-             167:     88(ptr)   AccessChain 49(data) 161 51
-             168:   17(ivec4)   Load 167
-             169:   17(ivec4)   VectorShuffle 168 166 4 5 2 3
-                                Store 167 169
-             170:      6(int)   Load 8(invocation)
-             172:     88(ptr)   AccessChain 49(data) 51 51
-             173:   17(ivec4)   Load 172
-             174:  171(ivec3)   VectorShuffle 173 173 0 1 2
-             175:  171(ivec3)   GroupNonUniformBroadcast 38 174 64
-             176:     88(ptr)   AccessChain 49(data) 170 51
-             177:   17(ivec4)   Load 176
-             178:   17(ivec4)   VectorShuffle 177 175 4 5 6 3
-                                Store 176 178
+             141:  137(ivec2)   VectorShuffle 140 140 0 1
+             142:  137(ivec2)   GroupNonUniformBroadcast 38 141 72
+             143:    131(ptr)   AccessChain 49(data) 136 60 54
+             144:     42(int)   CompositeExtract 142 0
+                                Store 143 144
+             145:    131(ptr)   AccessChain 49(data) 136 60 64
+             146:     42(int)   CompositeExtract 142 1
+                                Store 145 146
+             147:      6(int)   Load 8(invocation)
+             149:    138(ptr)   AccessChain 49(data) 51 60
+             150:   43(ivec4)   Load 149
+             151:  148(ivec3)   VectorShuffle 150 150 0 1 2
+             152:  148(ivec3)   GroupNonUniformBroadcast 38 151 72
+             153:    131(ptr)   AccessChain 49(data) 147 60 54
+             154:     42(int)   CompositeExtract 152 0
+                                Store 153 154
+             155:    131(ptr)   AccessChain 49(data) 147 60 64
+             156:     42(int)   CompositeExtract 152 1
+                                Store 155 156
+             157:    131(ptr)   AccessChain 49(data) 147 60 72
+             158:     42(int)   CompositeExtract 152 2
+                                Store 157 158
+             159:      6(int)   Load 8(invocation)
+             160:    138(ptr)   AccessChain 49(data) 125 60
+             161:   43(ivec4)   Load 160
+             162:   43(ivec4)   GroupNonUniformBroadcast 38 161 72
+             163:    138(ptr)   AccessChain 49(data) 159 60
+                                Store 163 162
+             164:      6(int)   Load 8(invocation)
+             165:     55(ptr)   AccessChain 49(data) 61 51 54
+             166:      6(int)   Load 165
+             167:      6(int)   GroupNonUniformBroadcast 38 166 64
+             168:     55(ptr)   AccessChain 49(data) 164 51 54
+                                Store 168 167
+             169:      6(int)   Load 8(invocation)
+             171:     88(ptr)   AccessChain 49(data) 60 51
+             172:   17(ivec4)   Load 171
+             173:  170(ivec2)   VectorShuffle 172 172 0 1
+             174:  170(ivec2)   GroupNonUniformBroadcast 38 173 64
+             175:     55(ptr)   AccessChain 49(data) 169 51 54
+             176:      6(int)   CompositeExtract 174 0
+                                Store 175 176
+             177:     55(ptr)   AccessChain 49(data) 169 51 64
+             178:      6(int)   CompositeExtract 174 1
+                                Store 177 178
              179:      6(int)   Load 8(invocation)
-             180:     88(ptr)   AccessChain 49(data) 121 51
-             181:   17(ivec4)   Load 180
-             182:   17(ivec4)   GroupNonUniformBroadcast 38 181 64
-             183:     88(ptr)   AccessChain 49(data) 179 51
-                                Store 183 182
-             184:      6(int)   Load 8(invocation)
-             186:    185(ptr)   AccessChain 49(data) 61 121 54
-             187:44(float64_t)   Load 186
-             188:44(float64_t)   GroupNonUniformBroadcast 38 187 54
-             189:    185(ptr)   AccessChain 49(data) 184 121 54
-                                Store 189 188
-             190:      6(int)   Load 8(invocation)
-             193:    192(ptr)   AccessChain 49(data) 60 121
-             194: 45(f64vec4)   Load 193
-             195:191(f64vec2)   VectorShuffle 194 194 0 1
-             196:191(f64vec2)   GroupNonUniformBroadcast 38 195 54
-             197:    192(ptr)   AccessChain 49(data) 190 121
-             198: 45(f64vec4)   Load 197
-             199: 45(f64vec4)   VectorShuffle 198 196 4 5 2 3
-                                Store 197 199
-             200:      6(int)   Load 8(invocation)
-             202:    192(ptr)   AccessChain 49(data) 51 121
-             203: 45(f64vec4)   Load 202
-             204:201(f64vec3)   VectorShuffle 203 203 0 1 2
-             205:201(f64vec3)   GroupNonUniformBroadcast 38 204 54
-             206:    192(ptr)   AccessChain 49(data) 200 121
-             207: 45(f64vec4)   Load 206
-             208: 45(f64vec4)   VectorShuffle 207 205 4 5 6 3
-                                Store 206 208
-             209:      6(int)   Load 8(invocation)
-             210:    192(ptr)   AccessChain 49(data) 121 121
-             211: 45(f64vec4)   Load 210
-             212: 45(f64vec4)   GroupNonUniformBroadcast 38 211 54
-             213:    192(ptr)   AccessChain 49(data) 209 121
-                                Store 213 212
-             214:      6(int)   Load 8(invocation)
-             215:    127(ptr)   AccessChain 49(data) 61 60 54
-             216:     42(int)   Load 215
-             217:    36(bool)   SLessThan 216 61
-             218:    36(bool)   GroupNonUniformBroadcast 38 217 64
-             219:     42(int)   Select 218 60 61
-             220:    127(ptr)   AccessChain 49(data) 214 60 54
-                                Store 220 219
-             221:      6(int)   Load 8(invocation)
-             222:    134(ptr)   AccessChain 49(data) 60 60
-             223:   43(ivec4)   Load 222
-             224:  133(ivec2)   VectorShuffle 223 223 0 1
-             227:  226(bvec2)   SLessThan 224 225
-             228:  226(bvec2)   GroupNonUniformBroadcast 38 227 64
-             230:  133(ivec2)   Select 228 229 225
-             231:    134(ptr)   AccessChain 49(data) 221 60
-             232:   43(ivec4)   Load 231
-             233:   43(ivec4)   VectorShuffle 232 230 4 5 2 3
-                                Store 231 233
-             234:      6(int)   Load 8(invocation)
-             235:    134(ptr)   AccessChain 49(data) 60 60
-             236:   43(ivec4)   Load 235
-             237:  143(ivec3)   VectorShuffle 236 236 0 1 2
-             240:  239(bvec3)   SLessThan 237 238
-             241:  239(bvec3)   GroupNonUniformBroadcast 38 240 64
-             243:  143(ivec3)   Select 241 242 238
-             244:    134(ptr)   AccessChain 49(data) 234 60
-             245:   43(ivec4)   Load 244
-             246:   43(ivec4)   VectorShuffle 245 243 4 5 6 3
-                                Store 244 246
-             247:      6(int)   Load 8(invocation)
-             248:    134(ptr)   AccessChain 49(data) 60 60
-             249:   43(ivec4)   Load 248
-             251:   83(bvec4)   SLessThan 249 250
-             252:   83(bvec4)   GroupNonUniformBroadcast 38 251 64
-             254:   43(ivec4)   Select 252 253 250
-             255:    134(ptr)   AccessChain 49(data) 247 60
-                                Store 255 254
+             181:     88(ptr)   AccessChain 49(data) 51 51
+             182:   17(ivec4)   Load 181
+             183:  180(ivec3)   VectorShuffle 182 182 0 1 2
+             184:  180(ivec3)   GroupNonUniformBroadcast 38 183 64
+             185:     55(ptr)   AccessChain 49(data) 179 51 54
+             186:      6(int)   CompositeExtract 184 0
+                                Store 185 186
+             187:     55(ptr)   AccessChain 49(data) 179 51 64
+             188:      6(int)   CompositeExtract 184 1
+                                Store 187 188
+             189:     55(ptr)   AccessChain 49(data) 179 51 72
+             190:      6(int)   CompositeExtract 184 2
+                                Store 189 190
+             191:      6(int)   Load 8(invocation)
+             192:     88(ptr)   AccessChain 49(data) 125 51
+             193:   17(ivec4)   Load 192
+             194:   17(ivec4)   GroupNonUniformBroadcast 38 193 64
+             195:     88(ptr)   AccessChain 49(data) 191 51
+                                Store 195 194
+             196:      6(int)   Load 8(invocation)
+             198:    197(ptr)   AccessChain 49(data) 61 125 54
+             199:44(float64_t)   Load 198
+             200:44(float64_t)   GroupNonUniformBroadcast 38 199 54
+             201:    197(ptr)   AccessChain 49(data) 196 125 54
+                                Store 201 200
+             202:      6(int)   Load 8(invocation)
+             205:    204(ptr)   AccessChain 49(data) 60 125
+             206: 45(f64vec4)   Load 205
+             207:203(f64vec2)   VectorShuffle 206 206 0 1
+             208:203(f64vec2)   GroupNonUniformBroadcast 38 207 54
+             209:    197(ptr)   AccessChain 49(data) 202 125 54
+             210:44(float64_t)   CompositeExtract 208 0
+                                Store 209 210
+             211:    197(ptr)   AccessChain 49(data) 202 125 64
+             212:44(float64_t)   CompositeExtract 208 1
+                                Store 211 212
+             213:      6(int)   Load 8(invocation)
+             215:    204(ptr)   AccessChain 49(data) 51 125
+             216: 45(f64vec4)   Load 215
+             217:214(f64vec3)   VectorShuffle 216 216 0 1 2
+             218:214(f64vec3)   GroupNonUniformBroadcast 38 217 54
+             219:    197(ptr)   AccessChain 49(data) 213 125 54
+             220:44(float64_t)   CompositeExtract 218 0
+                                Store 219 220
+             221:    197(ptr)   AccessChain 49(data) 213 125 64
+             222:44(float64_t)   CompositeExtract 218 1
+                                Store 221 222
+             223:    197(ptr)   AccessChain 49(data) 213 125 72
+             224:44(float64_t)   CompositeExtract 218 2
+                                Store 223 224
+             225:      6(int)   Load 8(invocation)
+             226:    204(ptr)   AccessChain 49(data) 125 125
+             227: 45(f64vec4)   Load 226
+             228: 45(f64vec4)   GroupNonUniformBroadcast 38 227 54
+             229:    204(ptr)   AccessChain 49(data) 225 125
+                                Store 229 228
+             230:      6(int)   Load 8(invocation)
+             231:    131(ptr)   AccessChain 49(data) 61 60 54
+             232:     42(int)   Load 231
+             233:    36(bool)   SLessThan 232 61
+             234:    36(bool)   GroupNonUniformBroadcast 38 233 64
+             235:     42(int)   Select 234 60 61
+             236:    131(ptr)   AccessChain 49(data) 230 60 54
+                                Store 236 235
+             237:      6(int)   Load 8(invocation)
+             238:    138(ptr)   AccessChain 49(data) 60 60
+             239:   43(ivec4)   Load 238
+             240:  137(ivec2)   VectorShuffle 239 239 0 1
+             243:  242(bvec2)   SLessThan 240 241
+             244:  242(bvec2)   GroupNonUniformBroadcast 38 243 64
+             246:  137(ivec2)   Select 244 245 241
+             247:    131(ptr)   AccessChain 49(data) 237 60 54
+             248:     42(int)   CompositeExtract 246 0
+                                Store 247 248
+             249:    131(ptr)   AccessChain 49(data) 237 60 64
+             250:     42(int)   CompositeExtract 246 1
+                                Store 249 250
+             251:      6(int)   Load 8(invocation)
+             252:    138(ptr)   AccessChain 49(data) 60 60
+             253:   43(ivec4)   Load 252
+             254:  148(ivec3)   VectorShuffle 253 253 0 1 2
+             257:  256(bvec3)   SLessThan 254 255
+             258:  256(bvec3)   GroupNonUniformBroadcast 38 257 64
+             260:  148(ivec3)   Select 258 259 255
+             261:    131(ptr)   AccessChain 49(data) 251 60 54
+             262:     42(int)   CompositeExtract 260 0
+                                Store 261 262
+             263:    131(ptr)   AccessChain 49(data) 251 60 64
+             264:     42(int)   CompositeExtract 260 1
+                                Store 263 264
+             265:    131(ptr)   AccessChain 49(data) 251 60 72
+             266:     42(int)   CompositeExtract 260 2
+                                Store 265 266
+             267:      6(int)   Load 8(invocation)
+             268:    138(ptr)   AccessChain 49(data) 60 60
+             269:   43(ivec4)   Load 268
+             271:   83(bvec4)   SLessThan 269 270
+             272:   83(bvec4)   GroupNonUniformBroadcast 38 271 64
+             274:   43(ivec4)   Select 272 273 270
+             275:    138(ptr)   AccessChain 49(data) 267 60
+                                Store 275 274
                                 Branch 94
-             256:               Label
-             257:      6(int)   Load 8(invocation)
-             258:     96(ptr)   AccessChain 49(data) 61 61 54
-             259:   40(float)   Load 258
-             260:   40(float)   GroupNonUniformBroadcastFirst 38 259
-             261:     96(ptr)   AccessChain 49(data) 257 61 54
-                                Store 261 260
-             262:      6(int)   Load 8(invocation)
-             263:    103(ptr)   AccessChain 49(data) 60 61
-             264:   41(fvec4)   Load 263
-             265:  102(fvec2)   VectorShuffle 264 264 0 1
-             266:  102(fvec2)   GroupNonUniformBroadcastFirst 38 265
-             267:    103(ptr)   AccessChain 49(data) 262 61
-             268:   41(fvec4)   Load 267
-             269:   41(fvec4)   VectorShuffle 268 266 4 5 2 3
-                                Store 267 269
-             270:      6(int)   Load 8(invocation)
-             271:    103(ptr)   AccessChain 49(data) 51 61
-             272:   41(fvec4)   Load 271
-             273:  112(fvec3)   VectorShuffle 272 272 0 1 2
-             274:  112(fvec3)   GroupNonUniformBroadcastFirst 38 273
-             275:    103(ptr)   AccessChain 49(data) 270 61
-             276:   41(fvec4)   Load 275
-             277:   41(fvec4)   VectorShuffle 276 274 4 5 6 3
-                                Store 275 277
-             278:      6(int)   Load 8(invocation)
-             279:    103(ptr)   AccessChain 49(data) 121 61
-             280:   41(fvec4)   Load 279
-             281:   41(fvec4)   GroupNonUniformBroadcastFirst 38 280
-             282:    103(ptr)   AccessChain 49(data) 278 61
-                                Store 282 281
-             283:      6(int)   Load 8(invocation)
-             284:    127(ptr)   AccessChain 49(data) 61 60 54
-             285:     42(int)   Load 284
-             286:     42(int)   GroupNonUniformBroadcastFirst 38 285
-             287:    127(ptr)   AccessChain 49(data) 283 60 54
-                                Store 287 286
-             288:      6(int)   Load 8(invocation)
-             289:    134(ptr)   AccessChain 49(data) 60 60
-             290:   43(ivec4)   Load 289
-             291:  133(ivec2)   VectorShuffle 290 290 0 1
-             292:  133(ivec2)   GroupNonUniformBroadcastFirst 38 291
-             293:    134(ptr)   AccessChain 49(data) 288 60
-             294:   43(ivec4)   Load 293
-             295:   43(ivec4)   VectorShuffle 294 292 4 5 2 3
-                                Store 293 295
-             296:      6(int)   Load 8(invocation)
-             297:    134(ptr)   AccessChain 49(data) 51 60
-             298:   43(ivec4)   Load 297
-             299:  143(ivec3)   VectorShuffle 298 298 0 1 2
-             300:  143(ivec3)   GroupNonUniformBroadcastFirst 38 299
-             301:    134(ptr)   AccessChain 49(data) 296 60
-             302:   43(ivec4)   Load 301
-             303:   43(ivec4)   VectorShuffle 302 300 4 5 6 3
-                                Store 301 303
-             304:      6(int)   Load 8(invocation)
-             305:    134(ptr)   AccessChain 49(data) 121 60
-             306:   43(ivec4)   Load 305
-             307:   43(ivec4)   GroupNonUniformBroadcastFirst 38 306
-             308:    134(ptr)   AccessChain 49(data) 304 60
-                                Store 308 307
-             309:      6(int)   Load 8(invocation)
-             310:     55(ptr)   AccessChain 49(data) 61 51 54
-             311:      6(int)   Load 310
-             312:      6(int)   GroupNonUniformBroadcastFirst 38 311
-             313:     55(ptr)   AccessChain 49(data) 309 51 54
-                                Store 313 312
-             314:      6(int)   Load 8(invocation)
-             315:     88(ptr)   AccessChain 49(data) 60 51
-             316:   17(ivec4)   Load 315
-             317:  162(ivec2)   VectorShuffle 316 316 0 1
-             318:  162(ivec2)   GroupNonUniformBroadcastFirst 38 317
-             319:     88(ptr)   AccessChain 49(data) 314 51
-             320:   17(ivec4)   Load 319
-             321:   17(ivec4)   VectorShuffle 320 318 4 5 2 3
-                                Store 319 321
-             322:      6(int)   Load 8(invocation)
-             323:     88(ptr)   AccessChain 49(data) 51 51
-             324:   17(ivec4)   Load 323
-             325:  171(ivec3)   VectorShuffle 324 324 0 1 2
-             326:  171(ivec3)   GroupNonUniformBroadcastFirst 38 325
-             327:     88(ptr)   AccessChain 49(data) 322 51
-             328:   17(ivec4)   Load 327
-             329:   17(ivec4)   VectorShuffle 328 326 4 5 6 3
-                                Store 327 329
-             330:      6(int)   Load 8(invocation)
-             331:     88(ptr)   AccessChain 49(data) 121 51
-             332:   17(ivec4)   Load 331
-             333:   17(ivec4)   GroupNonUniformBroadcastFirst 38 332
-             334:     88(ptr)   AccessChain 49(data) 330 51
-                                Store 334 333
-             335:      6(int)   Load 8(invocation)
-             336:    185(ptr)   AccessChain 49(data) 61 121 54
-             337:44(float64_t)   Load 336
-             338:44(float64_t)   GroupNonUniformBroadcastFirst 38 337
-             339:    185(ptr)   AccessChain 49(data) 335 121 54
-                                Store 339 338
-             340:      6(int)   Load 8(invocation)
-             341:    192(ptr)   AccessChain 49(data) 60 121
-             342: 45(f64vec4)   Load 341
-             343:191(f64vec2)   VectorShuffle 342 342 0 1
-             344:191(f64vec2)   GroupNonUniformBroadcastFirst 38 343
-             345:    192(ptr)   AccessChain 49(data) 340 121
-             346: 45(f64vec4)   Load 345
-             347: 45(f64vec4)   VectorShuffle 346 344 4 5 2 3
-                                Store 345 347
-             348:      6(int)   Load 8(invocation)
-             349:    192(ptr)   AccessChain 49(data) 51 121
-             350: 45(f64vec4)   Load 349
-             351:201(f64vec3)   VectorShuffle 350 350 0 1 2
-             352:201(f64vec3)   GroupNonUniformBroadcastFirst 38 351
-             353:    192(ptr)   AccessChain 49(data) 348 121
-             354: 45(f64vec4)   Load 353
-             355: 45(f64vec4)   VectorShuffle 354 352 4 5 6 3
-                                Store 353 355
-             356:      6(int)   Load 8(invocation)
-             357:    192(ptr)   AccessChain 49(data) 121 121
-             358: 45(f64vec4)   Load 357
-             359: 45(f64vec4)   GroupNonUniformBroadcastFirst 38 358
-             360:    192(ptr)   AccessChain 49(data) 356 121
-                                Store 360 359
-             361:      6(int)   Load 8(invocation)
-             362:    127(ptr)   AccessChain 49(data) 61 60 54
-             363:     42(int)   Load 362
-             364:    36(bool)   SLessThan 363 61
-             365:    36(bool)   GroupNonUniformBroadcastFirst 38 364
-             366:     42(int)   Select 365 60 61
-             367:    127(ptr)   AccessChain 49(data) 361 60 54
-                                Store 367 366
-             368:      6(int)   Load 8(invocation)
-             369:    134(ptr)   AccessChain 49(data) 60 60
-             370:   43(ivec4)   Load 369
-             371:  133(ivec2)   VectorShuffle 370 370 0 1
-             372:  226(bvec2)   SLessThan 371 225
-             373:  226(bvec2)   GroupNonUniformBroadcastFirst 38 372
-             374:  133(ivec2)   Select 373 229 225
-             375:    134(ptr)   AccessChain 49(data) 368 60
-             376:   43(ivec4)   Load 375
-             377:   43(ivec4)   VectorShuffle 376 374 4 5 2 3
-                                Store 375 377
-             378:      6(int)   Load 8(invocation)
-             379:    134(ptr)   AccessChain 49(data) 60 60
-             380:   43(ivec4)   Load 379
-             381:  143(ivec3)   VectorShuffle 380 380 0 1 2
-             382:  239(bvec3)   SLessThan 381 238
-             383:  239(bvec3)   GroupNonUniformBroadcastFirst 38 382
-             384:  143(ivec3)   Select 383 242 238
-             385:    134(ptr)   AccessChain 49(data) 378 60
-             386:   43(ivec4)   Load 385
-             387:   43(ivec4)   VectorShuffle 386 384 4 5 6 3
-                                Store 385 387
-             388:      6(int)   Load 8(invocation)
-             389:    134(ptr)   AccessChain 49(data) 60 60
-             390:   43(ivec4)   Load 389
-             391:   83(bvec4)   SLessThan 390 250
-             392:   83(bvec4)   GroupNonUniformBroadcastFirst 38 391
-             393:   43(ivec4)   Select 392 253 250
-             394:    134(ptr)   AccessChain 49(data) 388 60
-                                Store 394 393
+             276:               Label
+             277:      6(int)   Load 8(invocation)
+             278:     96(ptr)   AccessChain 49(data) 61 61 54
+             279:   40(float)   Load 278
+             280:   40(float)   GroupNonUniformBroadcastFirst 38 279
+             281:     96(ptr)   AccessChain 49(data) 277 61 54
+                                Store 281 280
+             282:      6(int)   Load 8(invocation)
+             283:    103(ptr)   AccessChain 49(data) 60 61
+             284:   41(fvec4)   Load 283
+             285:  102(fvec2)   VectorShuffle 284 284 0 1
+             286:  102(fvec2)   GroupNonUniformBroadcastFirst 38 285
+             287:     96(ptr)   AccessChain 49(data) 282 61 54
+             288:   40(float)   CompositeExtract 286 0
+                                Store 287 288
+             289:     96(ptr)   AccessChain 49(data) 282 61 64
+             290:   40(float)   CompositeExtract 286 1
+                                Store 289 290
+             291:      6(int)   Load 8(invocation)
+             292:    103(ptr)   AccessChain 49(data) 51 61
+             293:   41(fvec4)   Load 292
+             294:  113(fvec3)   VectorShuffle 293 293 0 1 2
+             295:  113(fvec3)   GroupNonUniformBroadcastFirst 38 294
+             296:     96(ptr)   AccessChain 49(data) 291 61 54
+             297:   40(float)   CompositeExtract 295 0
+                                Store 296 297
+             298:     96(ptr)   AccessChain 49(data) 291 61 64
+             299:   40(float)   CompositeExtract 295 1
+                                Store 298 299
+             300:     96(ptr)   AccessChain 49(data) 291 61 72
+             301:   40(float)   CompositeExtract 295 2
+                                Store 300 301
+             302:      6(int)   Load 8(invocation)
+             303:    103(ptr)   AccessChain 49(data) 125 61
+             304:   41(fvec4)   Load 303
+             305:   41(fvec4)   GroupNonUniformBroadcastFirst 38 304
+             306:    103(ptr)   AccessChain 49(data) 302 61
+                                Store 306 305
+             307:      6(int)   Load 8(invocation)
+             308:    131(ptr)   AccessChain 49(data) 61 60 54
+             309:     42(int)   Load 308
+             310:     42(int)   GroupNonUniformBroadcastFirst 38 309
+             311:    131(ptr)   AccessChain 49(data) 307 60 54
+                                Store 311 310
+             312:      6(int)   Load 8(invocation)
+             313:    138(ptr)   AccessChain 49(data) 60 60
+             314:   43(ivec4)   Load 313
+             315:  137(ivec2)   VectorShuffle 314 314 0 1
+             316:  137(ivec2)   GroupNonUniformBroadcastFirst 38 315
+             317:    131(ptr)   AccessChain 49(data) 312 60 54
+             318:     42(int)   CompositeExtract 316 0
+                                Store 317 318
+             319:    131(ptr)   AccessChain 49(data) 312 60 64
+             320:     42(int)   CompositeExtract 316 1
+                                Store 319 320
+             321:      6(int)   Load 8(invocation)
+             322:    138(ptr)   AccessChain 49(data) 51 60
+             323:   43(ivec4)   Load 322
+             324:  148(ivec3)   VectorShuffle 323 323 0 1 2
+             325:  148(ivec3)   GroupNonUniformBroadcastFirst 38 324
+             326:    131(ptr)   AccessChain 49(data) 321 60 54
+             327:     42(int)   CompositeExtract 325 0
+                                Store 326 327
+             328:    131(ptr)   AccessChain 49(data) 321 60 64
+             329:     42(int)   CompositeExtract 325 1
+                                Store 328 329
+             330:    131(ptr)   AccessChain 49(data) 321 60 72
+             331:     42(int)   CompositeExtract 325 2
+                                Store 330 331
+             332:      6(int)   Load 8(invocation)
+             333:    138(ptr)   AccessChain 49(data) 125 60
+             334:   43(ivec4)   Load 333
+             335:   43(ivec4)   GroupNonUniformBroadcastFirst 38 334
+             336:    138(ptr)   AccessChain 49(data) 332 60
+                                Store 336 335
+             337:      6(int)   Load 8(invocation)
+             338:     55(ptr)   AccessChain 49(data) 61 51 54
+             339:      6(int)   Load 338
+             340:      6(int)   GroupNonUniformBroadcastFirst 38 339
+             341:     55(ptr)   AccessChain 49(data) 337 51 54
+                                Store 341 340
+             342:      6(int)   Load 8(invocation)
+             343:     88(ptr)   AccessChain 49(data) 60 51
+             344:   17(ivec4)   Load 343
+             345:  170(ivec2)   VectorShuffle 344 344 0 1
+             346:  170(ivec2)   GroupNonUniformBroadcastFirst 38 345
+             347:     55(ptr)   AccessChain 49(data) 342 51 54
+             348:      6(int)   CompositeExtract 346 0
+                                Store 347 348
+             349:     55(ptr)   AccessChain 49(data) 342 51 64
+             350:      6(int)   CompositeExtract 346 1
+                                Store 349 350
+             351:      6(int)   Load 8(invocation)
+             352:     88(ptr)   AccessChain 49(data) 51 51
+             353:   17(ivec4)   Load 352
+             354:  180(ivec3)   VectorShuffle 353 353 0 1 2
+             355:  180(ivec3)   GroupNonUniformBroadcastFirst 38 354
+             356:     55(ptr)   AccessChain 49(data) 351 51 54
+             357:      6(int)   CompositeExtract 355 0
+                                Store 356 357
+             358:     55(ptr)   AccessChain 49(data) 351 51 64
+             359:      6(int)   CompositeExtract 355 1
+                                Store 358 359
+             360:     55(ptr)   AccessChain 49(data) 351 51 72
+             361:      6(int)   CompositeExtract 355 2
+                                Store 360 361
+             362:      6(int)   Load 8(invocation)
+             363:     88(ptr)   AccessChain 49(data) 125 51
+             364:   17(ivec4)   Load 363
+             365:   17(ivec4)   GroupNonUniformBroadcastFirst 38 364
+             366:     88(ptr)   AccessChain 49(data) 362 51
+                                Store 366 365
+             367:      6(int)   Load 8(invocation)
+             368:    197(ptr)   AccessChain 49(data) 61 125 54
+             369:44(float64_t)   Load 368
+             370:44(float64_t)   GroupNonUniformBroadcastFirst 38 369
+             371:    197(ptr)   AccessChain 49(data) 367 125 54
+                                Store 371 370
+             372:      6(int)   Load 8(invocation)
+             373:    204(ptr)   AccessChain 49(data) 60 125
+             374: 45(f64vec4)   Load 373
+             375:203(f64vec2)   VectorShuffle 374 374 0 1
+             376:203(f64vec2)   GroupNonUniformBroadcastFirst 38 375
+             377:    197(ptr)   AccessChain 49(data) 372 125 54
+             378:44(float64_t)   CompositeExtract 376 0
+                                Store 377 378
+             379:    197(ptr)   AccessChain 49(data) 372 125 64
+             380:44(float64_t)   CompositeExtract 376 1
+                                Store 379 380
+             381:      6(int)   Load 8(invocation)
+             382:    204(ptr)   AccessChain 49(data) 51 125
+             383: 45(f64vec4)   Load 382
+             384:214(f64vec3)   VectorShuffle 383 383 0 1 2
+             385:214(f64vec3)   GroupNonUniformBroadcastFirst 38 384
+             386:    197(ptr)   AccessChain 49(data) 381 125 54
+             387:44(float64_t)   CompositeExtract 385 0
+                                Store 386 387
+             388:    197(ptr)   AccessChain 49(data) 381 125 64
+             389:44(float64_t)   CompositeExtract 385 1
+                                Store 388 389
+             390:    197(ptr)   AccessChain 49(data) 381 125 72
+             391:44(float64_t)   CompositeExtract 385 2
+                                Store 390 391
+             392:      6(int)   Load 8(invocation)
+             393:    204(ptr)   AccessChain 49(data) 125 125
+             394: 45(f64vec4)   Load 393
+             395: 45(f64vec4)   GroupNonUniformBroadcastFirst 38 394
+             396:    204(ptr)   AccessChain 49(data) 392 125
+                                Store 396 395
+             397:      6(int)   Load 8(invocation)
+             398:    131(ptr)   AccessChain 49(data) 61 60 54
+             399:     42(int)   Load 398
+             400:    36(bool)   SLessThan 399 61
+             401:    36(bool)   GroupNonUniformBroadcastFirst 38 400
+             402:     42(int)   Select 401 60 61
+             403:    131(ptr)   AccessChain 49(data) 397 60 54
+                                Store 403 402
+             404:      6(int)   Load 8(invocation)
+             405:    138(ptr)   AccessChain 49(data) 60 60
+             406:   43(ivec4)   Load 405
+             407:  137(ivec2)   VectorShuffle 406 406 0 1
+             408:  242(bvec2)   SLessThan 407 241
+             409:  242(bvec2)   GroupNonUniformBroadcastFirst 38 408
+             410:  137(ivec2)   Select 409 245 241
+             411:    131(ptr)   AccessChain 49(data) 404 60 54
+             412:     42(int)   CompositeExtract 410 0
+                                Store 411 412
+             413:    131(ptr)   AccessChain 49(data) 404 60 64
+             414:     42(int)   CompositeExtract 410 1
+                                Store 413 414
+             415:      6(int)   Load 8(invocation)
+             416:    138(ptr)   AccessChain 49(data) 60 60
+             417:   43(ivec4)   Load 416
+             418:  148(ivec3)   VectorShuffle 417 417 0 1 2
+             419:  256(bvec3)   SLessThan 418 255
+             420:  256(bvec3)   GroupNonUniformBroadcastFirst 38 419
+             421:  148(ivec3)   Select 420 259 255
+             422:    131(ptr)   AccessChain 49(data) 415 60 54
+             423:     42(int)   CompositeExtract 421 0
+                                Store 422 423
+             424:    131(ptr)   AccessChain 49(data) 415 60 64
+             425:     42(int)   CompositeExtract 421 1
+                                Store 424 425
+             426:    131(ptr)   AccessChain 49(data) 415 60 72
+             427:     42(int)   CompositeExtract 421 2
+                                Store 426 427
+             428:      6(int)   Load 8(invocation)
+             429:    138(ptr)   AccessChain 49(data) 60 60
+             430:   43(ivec4)   Load 429
+             431:   83(bvec4)   SLessThan 430 270
+             432:   83(bvec4)   GroupNonUniformBroadcastFirst 38 431
+             433:   43(ivec4)   Select 432 273 270
+             434:    138(ptr)   AccessChain 49(data) 428 60
+                                Store 434 433
                                 Branch 94
               94:             Label
                               Return
diff --git a/Test/baseResults/spv.subgroupClustered.comp.out b/Test/baseResults/spv.subgroupClustered.comp.out
index 297fcec..a2e486d 100644
--- a/Test/baseResults/spv.subgroupClustered.comp.out
+++ b/Test/baseResults/spv.subgroupClustered.comp.out
@@ -1,7 +1,7 @@
 spv.subgroupClustered.comp
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 737
+// Id's are bound by 838
 
                               Capability Shader
                               Capability Float64
@@ -39,7 +39,7 @@
                               Decorate 24(Buffers) Block
                               Decorate 27(data) DescriptorSet 0
                               Decorate 27(data) Binding 0
-                              Decorate 736 BuiltIn WorkgroupSize
+                              Decorate 837 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -67,33 +67,34 @@
               39:     19(int) Constant 1
               40:             TypeVector 17(float) 2
               41:             TypePointer StorageBuffer 18(fvec4)
-              50:     19(int) Constant 2
-              51:             TypeVector 17(float) 3
-              60:     19(int) Constant 3
-              66:             TypePointer StorageBuffer 19(int)
-              72:             TypeVector 19(int) 2
-              73:             TypePointer StorageBuffer 20(ivec4)
-              82:             TypeVector 19(int) 3
-              96:             TypePointer StorageBuffer 6(int)
-             102:             TypeVector 6(int) 2
-             103:             TypePointer StorageBuffer 21(ivec4)
-             112:             TypeVector 6(int) 3
-             126:             TypePointer StorageBuffer 22(float64_t)
-             132:             TypeVector 22(float64_t) 2
-             133:             TypePointer StorageBuffer 23(f64vec4)
-             142:             TypeVector 22(float64_t) 3
-             522:             TypeBool
-             531:   72(ivec2) ConstantComposite 29 29
-             532:             TypeVector 522(bool) 2
-             535:   72(ivec2) ConstantComposite 39 39
-             544:   82(ivec3) ConstantComposite 29 29 29
-             545:             TypeVector 522(bool) 3
-             548:   82(ivec3) ConstantComposite 39 39 39
-             556:   20(ivec4) ConstantComposite 29 29 29 29
-             557:             TypeVector 522(bool) 4
-             560:   20(ivec4) ConstantComposite 39 39 39 39
-             735:      6(int) Constant 8
-             736:  112(ivec3) ConstantComposite 735 34 34
+              51:     19(int) Constant 2
+              52:             TypeVector 17(float) 3
+              61:      6(int) Constant 2
+              65:     19(int) Constant 3
+              71:             TypePointer StorageBuffer 19(int)
+              77:             TypeVector 19(int) 2
+              78:             TypePointer StorageBuffer 20(ivec4)
+              88:             TypeVector 19(int) 3
+             105:             TypePointer StorageBuffer 6(int)
+             111:             TypeVector 6(int) 2
+             112:             TypePointer StorageBuffer 21(ivec4)
+             122:             TypeVector 6(int) 3
+             139:             TypePointer StorageBuffer 22(float64_t)
+             145:             TypeVector 22(float64_t) 2
+             146:             TypePointer StorageBuffer 23(f64vec4)
+             156:             TypeVector 22(float64_t) 3
+             595:             TypeBool
+             604:   77(ivec2) ConstantComposite 29 29
+             605:             TypeVector 595(bool) 2
+             608:   77(ivec2) ConstantComposite 39 39
+             618:   88(ivec3) ConstantComposite 29 29 29
+             619:             TypeVector 595(bool) 3
+             622:   88(ivec3) ConstantComposite 39 39 39
+             633:   20(ivec4) ConstantComposite 29 29 29 29
+             634:             TypeVector 595(bool) 4
+             637:   20(ivec4) ConstantComposite 39 39 39 39
+             836:      6(int) Constant 8
+             837:  122(ivec3) ConstantComposite 836 34 34
          4(main):           2 Function None 3
                5:             Label
    8(invocation):      7(ptr) Variable Function
@@ -113,768 +114,943 @@
               43:   18(fvec4) Load 42
               44:   40(fvec2) VectorShuffle 43 43 0 1
               45:   40(fvec2) GroupNonUniformFAdd 35 ClusteredReduce 44 34
-              46:     41(ptr) AccessChain 27(data) 38 29
-              47:   18(fvec4) Load 46
-              48:   18(fvec4) VectorShuffle 47 45 4 5 2 3
-                              Store 46 48
-              49:      6(int) Load 8(invocation)
-              52:     41(ptr) AccessChain 27(data) 50 29
-              53:   18(fvec4) Load 52
-              54:   51(fvec3) VectorShuffle 53 53 0 1 2
-              55:   51(fvec3) GroupNonUniformFAdd 35 ClusteredReduce 54 34
-              56:     41(ptr) AccessChain 27(data) 49 29
-              57:   18(fvec4) Load 56
-              58:   18(fvec4) VectorShuffle 57 55 4 5 6 3
-                              Store 56 58
-              59:      6(int) Load 8(invocation)
-              61:     41(ptr) AccessChain 27(data) 60 29
-              62:   18(fvec4) Load 61
-              63:   18(fvec4) GroupNonUniformFAdd 35 ClusteredReduce 62 34
-              64:     41(ptr) AccessChain 27(data) 59 29
-                              Store 64 63
-              65:      6(int) Load 8(invocation)
-              67:     66(ptr) AccessChain 27(data) 29 39 30
-              68:     19(int) Load 67
-              69:     19(int) GroupNonUniformIAdd 35 ClusteredReduce 68 34
-              70:     66(ptr) AccessChain 27(data) 65 39 30
-                              Store 70 69
-              71:      6(int) Load 8(invocation)
-              74:     73(ptr) AccessChain 27(data) 39 39
-              75:   20(ivec4) Load 74
-              76:   72(ivec2) VectorShuffle 75 75 0 1
-              77:   72(ivec2) GroupNonUniformIAdd 35 ClusteredReduce 76 34
-              78:     73(ptr) AccessChain 27(data) 71 39
-              79:   20(ivec4) Load 78
-              80:   20(ivec4) VectorShuffle 79 77 4 5 2 3
-                              Store 78 80
-              81:      6(int) Load 8(invocation)
-              83:     73(ptr) AccessChain 27(data) 50 39
-              84:   20(ivec4) Load 83
-              85:   82(ivec3) VectorShuffle 84 84 0 1 2
-              86:   82(ivec3) GroupNonUniformIAdd 35 ClusteredReduce 85 34
-              87:     73(ptr) AccessChain 27(data) 81 39
-              88:   20(ivec4) Load 87
-              89:   20(ivec4) VectorShuffle 88 86 4 5 6 3
-                              Store 87 89
-              90:      6(int) Load 8(invocation)
-              91:     73(ptr) AccessChain 27(data) 60 39
-              92:   20(ivec4) Load 91
-              93:   20(ivec4) GroupNonUniformIAdd 35 ClusteredReduce 92 34
-              94:     73(ptr) AccessChain 27(data) 90 39
-                              Store 94 93
-              95:      6(int) Load 8(invocation)
-              97:     96(ptr) AccessChain 27(data) 29 50 30
-              98:      6(int) Load 97
-              99:      6(int) GroupNonUniformIAdd 35 ClusteredReduce 98 34
-             100:     96(ptr) AccessChain 27(data) 95 50 30
-                              Store 100 99
-             101:      6(int) Load 8(invocation)
-             104:    103(ptr) AccessChain 27(data) 39 50
-             105:   21(ivec4) Load 104
-             106:  102(ivec2) VectorShuffle 105 105 0 1
-             107:  102(ivec2) GroupNonUniformIAdd 35 ClusteredReduce 106 34
-             108:    103(ptr) AccessChain 27(data) 101 50
-             109:   21(ivec4) Load 108
-             110:   21(ivec4) VectorShuffle 109 107 4 5 2 3
-                              Store 108 110
-             111:      6(int) Load 8(invocation)
-             113:    103(ptr) AccessChain 27(data) 50 50
+              46:     31(ptr) AccessChain 27(data) 38 29 30
+              47:   17(float) CompositeExtract 45 0
+                              Store 46 47
+              48:     31(ptr) AccessChain 27(data) 38 29 34
+              49:   17(float) CompositeExtract 45 1
+                              Store 48 49
+              50:      6(int) Load 8(invocation)
+              53:     41(ptr) AccessChain 27(data) 51 29
+              54:   18(fvec4) Load 53
+              55:   52(fvec3) VectorShuffle 54 54 0 1 2
+              56:   52(fvec3) GroupNonUniformFAdd 35 ClusteredReduce 55 34
+              57:     31(ptr) AccessChain 27(data) 50 29 30
+              58:   17(float) CompositeExtract 56 0
+                              Store 57 58
+              59:     31(ptr) AccessChain 27(data) 50 29 34
+              60:   17(float) CompositeExtract 56 1
+                              Store 59 60
+              62:     31(ptr) AccessChain 27(data) 50 29 61
+              63:   17(float) CompositeExtract 56 2
+                              Store 62 63
+              64:      6(int) Load 8(invocation)
+              66:     41(ptr) AccessChain 27(data) 65 29
+              67:   18(fvec4) Load 66
+              68:   18(fvec4) GroupNonUniformFAdd 35 ClusteredReduce 67 34
+              69:     41(ptr) AccessChain 27(data) 64 29
+                              Store 69 68
+              70:      6(int) Load 8(invocation)
+              72:     71(ptr) AccessChain 27(data) 29 39 30
+              73:     19(int) Load 72
+              74:     19(int) GroupNonUniformIAdd 35 ClusteredReduce 73 34
+              75:     71(ptr) AccessChain 27(data) 70 39 30
+                              Store 75 74
+              76:      6(int) Load 8(invocation)
+              79:     78(ptr) AccessChain 27(data) 39 39
+              80:   20(ivec4) Load 79
+              81:   77(ivec2) VectorShuffle 80 80 0 1
+              82:   77(ivec2) GroupNonUniformIAdd 35 ClusteredReduce 81 34
+              83:     71(ptr) AccessChain 27(data) 76 39 30
+              84:     19(int) CompositeExtract 82 0
+                              Store 83 84
+              85:     71(ptr) AccessChain 27(data) 76 39 34
+              86:     19(int) CompositeExtract 82 1
+                              Store 85 86
+              87:      6(int) Load 8(invocation)
+              89:     78(ptr) AccessChain 27(data) 51 39
+              90:   20(ivec4) Load 89
+              91:   88(ivec3) VectorShuffle 90 90 0 1 2
+              92:   88(ivec3) GroupNonUniformIAdd 35 ClusteredReduce 91 34
+              93:     71(ptr) AccessChain 27(data) 87 39 30
+              94:     19(int) CompositeExtract 92 0
+                              Store 93 94
+              95:     71(ptr) AccessChain 27(data) 87 39 34
+              96:     19(int) CompositeExtract 92 1
+                              Store 95 96
+              97:     71(ptr) AccessChain 27(data) 87 39 61
+              98:     19(int) CompositeExtract 92 2
+                              Store 97 98
+              99:      6(int) Load 8(invocation)
+             100:     78(ptr) AccessChain 27(data) 65 39
+             101:   20(ivec4) Load 100
+             102:   20(ivec4) GroupNonUniformIAdd 35 ClusteredReduce 101 34
+             103:     78(ptr) AccessChain 27(data) 99 39
+                              Store 103 102
+             104:      6(int) Load 8(invocation)
+             106:    105(ptr) AccessChain 27(data) 29 51 30
+             107:      6(int) Load 106
+             108:      6(int) GroupNonUniformIAdd 35 ClusteredReduce 107 34
+             109:    105(ptr) AccessChain 27(data) 104 51 30
+                              Store 109 108
+             110:      6(int) Load 8(invocation)
+             113:    112(ptr) AccessChain 27(data) 39 51
              114:   21(ivec4) Load 113
-             115:  112(ivec3) VectorShuffle 114 114 0 1 2
-             116:  112(ivec3) GroupNonUniformIAdd 35 ClusteredReduce 115 34
-             117:    103(ptr) AccessChain 27(data) 111 50
-             118:   21(ivec4) Load 117
-             119:   21(ivec4) VectorShuffle 118 116 4 5 6 3
-                              Store 117 119
-             120:      6(int) Load 8(invocation)
-             121:    103(ptr) AccessChain 27(data) 60 50
-             122:   21(ivec4) Load 121
-             123:   21(ivec4) GroupNonUniformIAdd 35 ClusteredReduce 122 34
-             124:    103(ptr) AccessChain 27(data) 120 50
-                              Store 124 123
-             125:      6(int) Load 8(invocation)
-             127:    126(ptr) AccessChain 27(data) 29 60 30
-             128:22(float64_t) Load 127
-             129:22(float64_t) GroupNonUniformFAdd 35 ClusteredReduce 128 34
-             130:    126(ptr) AccessChain 27(data) 125 60 30
-                              Store 130 129
-             131:      6(int) Load 8(invocation)
-             134:    133(ptr) AccessChain 27(data) 39 60
-             135: 23(f64vec4) Load 134
-             136:132(f64vec2) VectorShuffle 135 135 0 1
-             137:132(f64vec2) GroupNonUniformFAdd 35 ClusteredReduce 136 34
-             138:    133(ptr) AccessChain 27(data) 131 60
-             139: 23(f64vec4) Load 138
-             140: 23(f64vec4) VectorShuffle 139 137 4 5 2 3
-                              Store 138 140
-             141:      6(int) Load 8(invocation)
-             143:    133(ptr) AccessChain 27(data) 50 60
-             144: 23(f64vec4) Load 143
-             145:142(f64vec3) VectorShuffle 144 144 0 1 2
-             146:142(f64vec3) GroupNonUniformFAdd 35 ClusteredReduce 145 34
-             147:    133(ptr) AccessChain 27(data) 141 60
+             115:  111(ivec2) VectorShuffle 114 114 0 1
+             116:  111(ivec2) GroupNonUniformIAdd 35 ClusteredReduce 115 34
+             117:    105(ptr) AccessChain 27(data) 110 51 30
+             118:      6(int) CompositeExtract 116 0
+                              Store 117 118
+             119:    105(ptr) AccessChain 27(data) 110 51 34
+             120:      6(int) CompositeExtract 116 1
+                              Store 119 120
+             121:      6(int) Load 8(invocation)
+             123:    112(ptr) AccessChain 27(data) 51 51
+             124:   21(ivec4) Load 123
+             125:  122(ivec3) VectorShuffle 124 124 0 1 2
+             126:  122(ivec3) GroupNonUniformIAdd 35 ClusteredReduce 125 34
+             127:    105(ptr) AccessChain 27(data) 121 51 30
+             128:      6(int) CompositeExtract 126 0
+                              Store 127 128
+             129:    105(ptr) AccessChain 27(data) 121 51 34
+             130:      6(int) CompositeExtract 126 1
+                              Store 129 130
+             131:    105(ptr) AccessChain 27(data) 121 51 61
+             132:      6(int) CompositeExtract 126 2
+                              Store 131 132
+             133:      6(int) Load 8(invocation)
+             134:    112(ptr) AccessChain 27(data) 65 51
+             135:   21(ivec4) Load 134
+             136:   21(ivec4) GroupNonUniformIAdd 35 ClusteredReduce 135 34
+             137:    112(ptr) AccessChain 27(data) 133 51
+                              Store 137 136
+             138:      6(int) Load 8(invocation)
+             140:    139(ptr) AccessChain 27(data) 29 65 30
+             141:22(float64_t) Load 140
+             142:22(float64_t) GroupNonUniformFAdd 35 ClusteredReduce 141 34
+             143:    139(ptr) AccessChain 27(data) 138 65 30
+                              Store 143 142
+             144:      6(int) Load 8(invocation)
+             147:    146(ptr) AccessChain 27(data) 39 65
              148: 23(f64vec4) Load 147
-             149: 23(f64vec4) VectorShuffle 148 146 4 5 6 3
-                              Store 147 149
-             150:      6(int) Load 8(invocation)
-             151:    133(ptr) AccessChain 27(data) 60 60
-             152: 23(f64vec4) Load 151
-             153: 23(f64vec4) GroupNonUniformFAdd 35 ClusteredReduce 152 34
-             154:    133(ptr) AccessChain 27(data) 150 60
-                              Store 154 153
+             149:145(f64vec2) VectorShuffle 148 148 0 1
+             150:145(f64vec2) GroupNonUniformFAdd 35 ClusteredReduce 149 34
+             151:    139(ptr) AccessChain 27(data) 144 65 30
+             152:22(float64_t) CompositeExtract 150 0
+                              Store 151 152
+             153:    139(ptr) AccessChain 27(data) 144 65 34
+             154:22(float64_t) CompositeExtract 150 1
+                              Store 153 154
              155:      6(int) Load 8(invocation)
-             156:     31(ptr) AccessChain 27(data) 29 29 30
-             157:   17(float) Load 156
-             158:   17(float) GroupNonUniformFMul 35 ClusteredReduce 157 34
-             159:     31(ptr) AccessChain 27(data) 155 29 30
-                              Store 159 158
-             160:      6(int) Load 8(invocation)
-             161:     41(ptr) AccessChain 27(data) 39 29
-             162:   18(fvec4) Load 161
-             163:   40(fvec2) VectorShuffle 162 162 0 1
-             164:   40(fvec2) GroupNonUniformFMul 35 ClusteredReduce 163 34
-             165:     41(ptr) AccessChain 27(data) 160 29
-             166:   18(fvec4) Load 165
-             167:   18(fvec4) VectorShuffle 166 164 4 5 2 3
-                              Store 165 167
-             168:      6(int) Load 8(invocation)
-             169:     41(ptr) AccessChain 27(data) 50 29
-             170:   18(fvec4) Load 169
-             171:   51(fvec3) VectorShuffle 170 170 0 1 2
-             172:   51(fvec3) GroupNonUniformFMul 35 ClusteredReduce 171 34
-             173:     41(ptr) AccessChain 27(data) 168 29
-             174:   18(fvec4) Load 173
-             175:   18(fvec4) VectorShuffle 174 172 4 5 6 3
-                              Store 173 175
-             176:      6(int) Load 8(invocation)
-             177:     41(ptr) AccessChain 27(data) 60 29
-             178:   18(fvec4) Load 177
-             179:   18(fvec4) GroupNonUniformFMul 35 ClusteredReduce 178 34
-             180:     41(ptr) AccessChain 27(data) 176 29
-                              Store 180 179
-             181:      6(int) Load 8(invocation)
-             182:     66(ptr) AccessChain 27(data) 29 39 30
-             183:     19(int) Load 182
-             184:     19(int) GroupNonUniformIMul 35 ClusteredReduce 183 34
-             185:     66(ptr) AccessChain 27(data) 181 39 30
-                              Store 185 184
+             157:    146(ptr) AccessChain 27(data) 51 65
+             158: 23(f64vec4) Load 157
+             159:156(f64vec3) VectorShuffle 158 158 0 1 2
+             160:156(f64vec3) GroupNonUniformFAdd 35 ClusteredReduce 159 34
+             161:    139(ptr) AccessChain 27(data) 155 65 30
+             162:22(float64_t) CompositeExtract 160 0
+                              Store 161 162
+             163:    139(ptr) AccessChain 27(data) 155 65 34
+             164:22(float64_t) CompositeExtract 160 1
+                              Store 163 164
+             165:    139(ptr) AccessChain 27(data) 155 65 61
+             166:22(float64_t) CompositeExtract 160 2
+                              Store 165 166
+             167:      6(int) Load 8(invocation)
+             168:    146(ptr) AccessChain 27(data) 65 65
+             169: 23(f64vec4) Load 168
+             170: 23(f64vec4) GroupNonUniformFAdd 35 ClusteredReduce 169 34
+             171:    146(ptr) AccessChain 27(data) 167 65
+                              Store 171 170
+             172:      6(int) Load 8(invocation)
+             173:     31(ptr) AccessChain 27(data) 29 29 30
+             174:   17(float) Load 173
+             175:   17(float) GroupNonUniformFMul 35 ClusteredReduce 174 34
+             176:     31(ptr) AccessChain 27(data) 172 29 30
+                              Store 176 175
+             177:      6(int) Load 8(invocation)
+             178:     41(ptr) AccessChain 27(data) 39 29
+             179:   18(fvec4) Load 178
+             180:   40(fvec2) VectorShuffle 179 179 0 1
+             181:   40(fvec2) GroupNonUniformFMul 35 ClusteredReduce 180 34
+             182:     31(ptr) AccessChain 27(data) 177 29 30
+             183:   17(float) CompositeExtract 181 0
+                              Store 182 183
+             184:     31(ptr) AccessChain 27(data) 177 29 34
+             185:   17(float) CompositeExtract 181 1
+                              Store 184 185
              186:      6(int) Load 8(invocation)
-             187:     73(ptr) AccessChain 27(data) 39 39
-             188:   20(ivec4) Load 187
-             189:   72(ivec2) VectorShuffle 188 188 0 1
-             190:   72(ivec2) GroupNonUniformIMul 35 ClusteredReduce 189 34
-             191:     73(ptr) AccessChain 27(data) 186 39
-             192:   20(ivec4) Load 191
-             193:   20(ivec4) VectorShuffle 192 190 4 5 2 3
-                              Store 191 193
-             194:      6(int) Load 8(invocation)
-             195:     73(ptr) AccessChain 27(data) 50 39
-             196:   20(ivec4) Load 195
-             197:   82(ivec3) VectorShuffle 196 196 0 1 2
-             198:   82(ivec3) GroupNonUniformIMul 35 ClusteredReduce 197 34
-             199:     73(ptr) AccessChain 27(data) 194 39
-             200:   20(ivec4) Load 199
-             201:   20(ivec4) VectorShuffle 200 198 4 5 6 3
-                              Store 199 201
+             187:     41(ptr) AccessChain 27(data) 51 29
+             188:   18(fvec4) Load 187
+             189:   52(fvec3) VectorShuffle 188 188 0 1 2
+             190:   52(fvec3) GroupNonUniformFMul 35 ClusteredReduce 189 34
+             191:     31(ptr) AccessChain 27(data) 186 29 30
+             192:   17(float) CompositeExtract 190 0
+                              Store 191 192
+             193:     31(ptr) AccessChain 27(data) 186 29 34
+             194:   17(float) CompositeExtract 190 1
+                              Store 193 194
+             195:     31(ptr) AccessChain 27(data) 186 29 61
+             196:   17(float) CompositeExtract 190 2
+                              Store 195 196
+             197:      6(int) Load 8(invocation)
+             198:     41(ptr) AccessChain 27(data) 65 29
+             199:   18(fvec4) Load 198
+             200:   18(fvec4) GroupNonUniformFMul 35 ClusteredReduce 199 34
+             201:     41(ptr) AccessChain 27(data) 197 29
+                              Store 201 200
              202:      6(int) Load 8(invocation)
-             203:     73(ptr) AccessChain 27(data) 60 39
-             204:   20(ivec4) Load 203
-             205:   20(ivec4) GroupNonUniformIMul 35 ClusteredReduce 204 34
-             206:     73(ptr) AccessChain 27(data) 202 39
+             203:     71(ptr) AccessChain 27(data) 29 39 30
+             204:     19(int) Load 203
+             205:     19(int) GroupNonUniformIMul 35 ClusteredReduce 204 34
+             206:     71(ptr) AccessChain 27(data) 202 39 30
                               Store 206 205
              207:      6(int) Load 8(invocation)
-             208:     96(ptr) AccessChain 27(data) 29 50 30
-             209:      6(int) Load 208
-             210:      6(int) GroupNonUniformIMul 35 ClusteredReduce 209 34
-             211:     96(ptr) AccessChain 27(data) 207 50 30
-                              Store 211 210
-             212:      6(int) Load 8(invocation)
-             213:    103(ptr) AccessChain 27(data) 39 50
-             214:   21(ivec4) Load 213
-             215:  102(ivec2) VectorShuffle 214 214 0 1
-             216:  102(ivec2) GroupNonUniformIMul 35 ClusteredReduce 215 34
-             217:    103(ptr) AccessChain 27(data) 212 50
-             218:   21(ivec4) Load 217
-             219:   21(ivec4) VectorShuffle 218 216 4 5 2 3
-                              Store 217 219
-             220:      6(int) Load 8(invocation)
-             221:    103(ptr) AccessChain 27(data) 50 50
-             222:   21(ivec4) Load 221
-             223:  112(ivec3) VectorShuffle 222 222 0 1 2
-             224:  112(ivec3) GroupNonUniformIMul 35 ClusteredReduce 223 34
-             225:    103(ptr) AccessChain 27(data) 220 50
-             226:   21(ivec4) Load 225
-             227:   21(ivec4) VectorShuffle 226 224 4 5 6 3
-                              Store 225 227
-             228:      6(int) Load 8(invocation)
-             229:    103(ptr) AccessChain 27(data) 60 50
-             230:   21(ivec4) Load 229
-             231:   21(ivec4) GroupNonUniformIMul 35 ClusteredReduce 230 34
-             232:    103(ptr) AccessChain 27(data) 228 50
-                              Store 232 231
-             233:      6(int) Load 8(invocation)
-             234:    126(ptr) AccessChain 27(data) 29 60 30
-             235:22(float64_t) Load 234
-             236:22(float64_t) GroupNonUniformFMul 35 ClusteredReduce 235 34
-             237:    126(ptr) AccessChain 27(data) 233 60 30
-                              Store 237 236
-             238:      6(int) Load 8(invocation)
-             239:    133(ptr) AccessChain 27(data) 39 60
-             240: 23(f64vec4) Load 239
-             241:132(f64vec2) VectorShuffle 240 240 0 1
-             242:132(f64vec2) GroupNonUniformFMul 35 ClusteredReduce 241 34
-             243:    133(ptr) AccessChain 27(data) 238 60
-             244: 23(f64vec4) Load 243
-             245: 23(f64vec4) VectorShuffle 244 242 4 5 2 3
-                              Store 243 245
+             208:     78(ptr) AccessChain 27(data) 39 39
+             209:   20(ivec4) Load 208
+             210:   77(ivec2) VectorShuffle 209 209 0 1
+             211:   77(ivec2) GroupNonUniformIMul 35 ClusteredReduce 210 34
+             212:     71(ptr) AccessChain 27(data) 207 39 30
+             213:     19(int) CompositeExtract 211 0
+                              Store 212 213
+             214:     71(ptr) AccessChain 27(data) 207 39 34
+             215:     19(int) CompositeExtract 211 1
+                              Store 214 215
+             216:      6(int) Load 8(invocation)
+             217:     78(ptr) AccessChain 27(data) 51 39
+             218:   20(ivec4) Load 217
+             219:   88(ivec3) VectorShuffle 218 218 0 1 2
+             220:   88(ivec3) GroupNonUniformIMul 35 ClusteredReduce 219 34
+             221:     71(ptr) AccessChain 27(data) 216 39 30
+             222:     19(int) CompositeExtract 220 0
+                              Store 221 222
+             223:     71(ptr) AccessChain 27(data) 216 39 34
+             224:     19(int) CompositeExtract 220 1
+                              Store 223 224
+             225:     71(ptr) AccessChain 27(data) 216 39 61
+             226:     19(int) CompositeExtract 220 2
+                              Store 225 226
+             227:      6(int) Load 8(invocation)
+             228:     78(ptr) AccessChain 27(data) 65 39
+             229:   20(ivec4) Load 228
+             230:   20(ivec4) GroupNonUniformIMul 35 ClusteredReduce 229 34
+             231:     78(ptr) AccessChain 27(data) 227 39
+                              Store 231 230
+             232:      6(int) Load 8(invocation)
+             233:    105(ptr) AccessChain 27(data) 29 51 30
+             234:      6(int) Load 233
+             235:      6(int) GroupNonUniformIMul 35 ClusteredReduce 234 34
+             236:    105(ptr) AccessChain 27(data) 232 51 30
+                              Store 236 235
+             237:      6(int) Load 8(invocation)
+             238:    112(ptr) AccessChain 27(data) 39 51
+             239:   21(ivec4) Load 238
+             240:  111(ivec2) VectorShuffle 239 239 0 1
+             241:  111(ivec2) GroupNonUniformIMul 35 ClusteredReduce 240 34
+             242:    105(ptr) AccessChain 27(data) 237 51 30
+             243:      6(int) CompositeExtract 241 0
+                              Store 242 243
+             244:    105(ptr) AccessChain 27(data) 237 51 34
+             245:      6(int) CompositeExtract 241 1
+                              Store 244 245
              246:      6(int) Load 8(invocation)
-             247:    133(ptr) AccessChain 27(data) 50 60
-             248: 23(f64vec4) Load 247
-             249:142(f64vec3) VectorShuffle 248 248 0 1 2
-             250:142(f64vec3) GroupNonUniformFMul 35 ClusteredReduce 249 34
-             251:    133(ptr) AccessChain 27(data) 246 60
-             252: 23(f64vec4) Load 251
-             253: 23(f64vec4) VectorShuffle 252 250 4 5 6 3
-                              Store 251 253
-             254:      6(int) Load 8(invocation)
-             255:    133(ptr) AccessChain 27(data) 60 60
-             256: 23(f64vec4) Load 255
-             257: 23(f64vec4) GroupNonUniformFMul 35 ClusteredReduce 256 34
-             258:    133(ptr) AccessChain 27(data) 254 60
-                              Store 258 257
-             259:      6(int) Load 8(invocation)
-             260:     31(ptr) AccessChain 27(data) 29 29 30
-             261:   17(float) Load 260
-             262:   17(float) GroupNonUniformFMin 35 ClusteredReduce 261 34
-             263:     31(ptr) AccessChain 27(data) 259 29 30
-                              Store 263 262
-             264:      6(int) Load 8(invocation)
-             265:     41(ptr) AccessChain 27(data) 39 29
-             266:   18(fvec4) Load 265
-             267:   40(fvec2) VectorShuffle 266 266 0 1
-             268:   40(fvec2) GroupNonUniformFMin 35 ClusteredReduce 267 34
-             269:     41(ptr) AccessChain 27(data) 264 29
-             270:   18(fvec4) Load 269
-             271:   18(fvec4) VectorShuffle 270 268 4 5 2 3
-                              Store 269 271
-             272:      6(int) Load 8(invocation)
-             273:     41(ptr) AccessChain 27(data) 50 29
-             274:   18(fvec4) Load 273
-             275:   51(fvec3) VectorShuffle 274 274 0 1 2
-             276:   51(fvec3) GroupNonUniformFMin 35 ClusteredReduce 275 34
-             277:     41(ptr) AccessChain 27(data) 272 29
-             278:   18(fvec4) Load 277
-             279:   18(fvec4) VectorShuffle 278 276 4 5 6 3
-                              Store 277 279
-             280:      6(int) Load 8(invocation)
-             281:     41(ptr) AccessChain 27(data) 60 29
-             282:   18(fvec4) Load 281
-             283:   18(fvec4) GroupNonUniformFMin 35 ClusteredReduce 282 34
-             284:     41(ptr) AccessChain 27(data) 280 29
-                              Store 284 283
-             285:      6(int) Load 8(invocation)
-             286:     66(ptr) AccessChain 27(data) 29 39 30
-             287:     19(int) Load 286
-             288:     19(int) GroupNonUniformSMin 35 ClusteredReduce 287 34
-             289:     66(ptr) AccessChain 27(data) 285 39 30
-                              Store 289 288
-             290:      6(int) Load 8(invocation)
-             291:     73(ptr) AccessChain 27(data) 39 39
-             292:   20(ivec4) Load 291
-             293:   72(ivec2) VectorShuffle 292 292 0 1
-             294:   72(ivec2) GroupNonUniformSMin 35 ClusteredReduce 293 34
-             295:     73(ptr) AccessChain 27(data) 290 39
-             296:   20(ivec4) Load 295
-             297:   20(ivec4) VectorShuffle 296 294 4 5 2 3
-                              Store 295 297
-             298:      6(int) Load 8(invocation)
-             299:     73(ptr) AccessChain 27(data) 50 39
-             300:   20(ivec4) Load 299
-             301:   82(ivec3) VectorShuffle 300 300 0 1 2
-             302:   82(ivec3) GroupNonUniformSMin 35 ClusteredReduce 301 34
-             303:     73(ptr) AccessChain 27(data) 298 39
-             304:   20(ivec4) Load 303
-             305:   20(ivec4) VectorShuffle 304 302 4 5 6 3
-                              Store 303 305
+             247:    112(ptr) AccessChain 27(data) 51 51
+             248:   21(ivec4) Load 247
+             249:  122(ivec3) VectorShuffle 248 248 0 1 2
+             250:  122(ivec3) GroupNonUniformIMul 35 ClusteredReduce 249 34
+             251:    105(ptr) AccessChain 27(data) 246 51 30
+             252:      6(int) CompositeExtract 250 0
+                              Store 251 252
+             253:    105(ptr) AccessChain 27(data) 246 51 34
+             254:      6(int) CompositeExtract 250 1
+                              Store 253 254
+             255:    105(ptr) AccessChain 27(data) 246 51 61
+             256:      6(int) CompositeExtract 250 2
+                              Store 255 256
+             257:      6(int) Load 8(invocation)
+             258:    112(ptr) AccessChain 27(data) 65 51
+             259:   21(ivec4) Load 258
+             260:   21(ivec4) GroupNonUniformIMul 35 ClusteredReduce 259 34
+             261:    112(ptr) AccessChain 27(data) 257 51
+                              Store 261 260
+             262:      6(int) Load 8(invocation)
+             263:    139(ptr) AccessChain 27(data) 29 65 30
+             264:22(float64_t) Load 263
+             265:22(float64_t) GroupNonUniformFMul 35 ClusteredReduce 264 34
+             266:    139(ptr) AccessChain 27(data) 262 65 30
+                              Store 266 265
+             267:      6(int) Load 8(invocation)
+             268:    146(ptr) AccessChain 27(data) 39 65
+             269: 23(f64vec4) Load 268
+             270:145(f64vec2) VectorShuffle 269 269 0 1
+             271:145(f64vec2) GroupNonUniformFMul 35 ClusteredReduce 270 34
+             272:    139(ptr) AccessChain 27(data) 267 65 30
+             273:22(float64_t) CompositeExtract 271 0
+                              Store 272 273
+             274:    139(ptr) AccessChain 27(data) 267 65 34
+             275:22(float64_t) CompositeExtract 271 1
+                              Store 274 275
+             276:      6(int) Load 8(invocation)
+             277:    146(ptr) AccessChain 27(data) 51 65
+             278: 23(f64vec4) Load 277
+             279:156(f64vec3) VectorShuffle 278 278 0 1 2
+             280:156(f64vec3) GroupNonUniformFMul 35 ClusteredReduce 279 34
+             281:    139(ptr) AccessChain 27(data) 276 65 30
+             282:22(float64_t) CompositeExtract 280 0
+                              Store 281 282
+             283:    139(ptr) AccessChain 27(data) 276 65 34
+             284:22(float64_t) CompositeExtract 280 1
+                              Store 283 284
+             285:    139(ptr) AccessChain 27(data) 276 65 61
+             286:22(float64_t) CompositeExtract 280 2
+                              Store 285 286
+             287:      6(int) Load 8(invocation)
+             288:    146(ptr) AccessChain 27(data) 65 65
+             289: 23(f64vec4) Load 288
+             290: 23(f64vec4) GroupNonUniformFMul 35 ClusteredReduce 289 34
+             291:    146(ptr) AccessChain 27(data) 287 65
+                              Store 291 290
+             292:      6(int) Load 8(invocation)
+             293:     31(ptr) AccessChain 27(data) 29 29 30
+             294:   17(float) Load 293
+             295:   17(float) GroupNonUniformFMin 35 ClusteredReduce 294 34
+             296:     31(ptr) AccessChain 27(data) 292 29 30
+                              Store 296 295
+             297:      6(int) Load 8(invocation)
+             298:     41(ptr) AccessChain 27(data) 39 29
+             299:   18(fvec4) Load 298
+             300:   40(fvec2) VectorShuffle 299 299 0 1
+             301:   40(fvec2) GroupNonUniformFMin 35 ClusteredReduce 300 34
+             302:     31(ptr) AccessChain 27(data) 297 29 30
+             303:   17(float) CompositeExtract 301 0
+                              Store 302 303
+             304:     31(ptr) AccessChain 27(data) 297 29 34
+             305:   17(float) CompositeExtract 301 1
+                              Store 304 305
              306:      6(int) Load 8(invocation)
-             307:     73(ptr) AccessChain 27(data) 60 39
-             308:   20(ivec4) Load 307
-             309:   20(ivec4) GroupNonUniformSMin 35 ClusteredReduce 308 34
-             310:     73(ptr) AccessChain 27(data) 306 39
-                              Store 310 309
-             311:      6(int) Load 8(invocation)
-             312:     96(ptr) AccessChain 27(data) 29 50 30
-             313:      6(int) Load 312
-             314:      6(int) GroupNonUniformUMin 35 ClusteredReduce 313 34
-             315:     96(ptr) AccessChain 27(data) 311 50 30
-                              Store 315 314
-             316:      6(int) Load 8(invocation)
-             317:    103(ptr) AccessChain 27(data) 39 50
-             318:   21(ivec4) Load 317
-             319:  102(ivec2) VectorShuffle 318 318 0 1
-             320:  102(ivec2) GroupNonUniformUMin 35 ClusteredReduce 319 34
-             321:    103(ptr) AccessChain 27(data) 316 50
-             322:   21(ivec4) Load 321
-             323:   21(ivec4) VectorShuffle 322 320 4 5 2 3
-                              Store 321 323
-             324:      6(int) Load 8(invocation)
-             325:    103(ptr) AccessChain 27(data) 50 50
-             326:   21(ivec4) Load 325
-             327:  112(ivec3) VectorShuffle 326 326 0 1 2
-             328:  112(ivec3) GroupNonUniformUMin 35 ClusteredReduce 327 34
-             329:    103(ptr) AccessChain 27(data) 324 50
-             330:   21(ivec4) Load 329
-             331:   21(ivec4) VectorShuffle 330 328 4 5 6 3
-                              Store 329 331
-             332:      6(int) Load 8(invocation)
-             333:    103(ptr) AccessChain 27(data) 60 50
-             334:   21(ivec4) Load 333
-             335:   21(ivec4) GroupNonUniformUMin 35 ClusteredReduce 334 34
-             336:    103(ptr) AccessChain 27(data) 332 50
-                              Store 336 335
-             337:      6(int) Load 8(invocation)
-             338:    126(ptr) AccessChain 27(data) 29 60 30
-             339:22(float64_t) Load 338
-             340:22(float64_t) GroupNonUniformFMin 35 ClusteredReduce 339 34
-             341:    126(ptr) AccessChain 27(data) 337 60 30
-                              Store 341 340
-             342:      6(int) Load 8(invocation)
-             343:    133(ptr) AccessChain 27(data) 39 60
-             344: 23(f64vec4) Load 343
-             345:132(f64vec2) VectorShuffle 344 344 0 1
-             346:132(f64vec2) GroupNonUniformFMin 35 ClusteredReduce 345 34
-             347:    133(ptr) AccessChain 27(data) 342 60
-             348: 23(f64vec4) Load 347
-             349: 23(f64vec4) VectorShuffle 348 346 4 5 2 3
-                              Store 347 349
-             350:      6(int) Load 8(invocation)
-             351:    133(ptr) AccessChain 27(data) 50 60
-             352: 23(f64vec4) Load 351
-             353:142(f64vec3) VectorShuffle 352 352 0 1 2
-             354:142(f64vec3) GroupNonUniformFMin 35 ClusteredReduce 353 34
-             355:    133(ptr) AccessChain 27(data) 350 60
-             356: 23(f64vec4) Load 355
-             357: 23(f64vec4) VectorShuffle 356 354 4 5 6 3
-                              Store 355 357
-             358:      6(int) Load 8(invocation)
-             359:    133(ptr) AccessChain 27(data) 60 60
-             360: 23(f64vec4) Load 359
-             361: 23(f64vec4) GroupNonUniformFMin 35 ClusteredReduce 360 34
-             362:    133(ptr) AccessChain 27(data) 358 60
-                              Store 362 361
-             363:      6(int) Load 8(invocation)
-             364:     31(ptr) AccessChain 27(data) 29 29 30
-             365:   17(float) Load 364
-             366:   17(float) GroupNonUniformFMax 35 ClusteredReduce 365 34
-             367:     31(ptr) AccessChain 27(data) 363 29 30
-                              Store 367 366
-             368:      6(int) Load 8(invocation)
-             369:     41(ptr) AccessChain 27(data) 39 29
-             370:   18(fvec4) Load 369
-             371:   40(fvec2) VectorShuffle 370 370 0 1
-             372:   40(fvec2) GroupNonUniformFMax 35 ClusteredReduce 371 34
-             373:     41(ptr) AccessChain 27(data) 368 29
-             374:   18(fvec4) Load 373
-             375:   18(fvec4) VectorShuffle 374 372 4 5 2 3
-                              Store 373 375
-             376:      6(int) Load 8(invocation)
-             377:     41(ptr) AccessChain 27(data) 50 29
-             378:   18(fvec4) Load 377
-             379:   51(fvec3) VectorShuffle 378 378 0 1 2
-             380:   51(fvec3) GroupNonUniformFMax 35 ClusteredReduce 379 34
-             381:     41(ptr) AccessChain 27(data) 376 29
-             382:   18(fvec4) Load 381
-             383:   18(fvec4) VectorShuffle 382 380 4 5 6 3
-                              Store 381 383
-             384:      6(int) Load 8(invocation)
-             385:     41(ptr) AccessChain 27(data) 60 29
-             386:   18(fvec4) Load 385
-             387:   18(fvec4) GroupNonUniformFMax 35 ClusteredReduce 386 34
-             388:     41(ptr) AccessChain 27(data) 384 29
-                              Store 388 387
-             389:      6(int) Load 8(invocation)
-             390:     66(ptr) AccessChain 27(data) 29 39 30
-             391:     19(int) Load 390
-             392:     19(int) GroupNonUniformSMax 35 ClusteredReduce 391 34
-             393:     66(ptr) AccessChain 27(data) 389 39 30
-                              Store 393 392
-             394:      6(int) Load 8(invocation)
-             395:     73(ptr) AccessChain 27(data) 39 39
-             396:   20(ivec4) Load 395
-             397:   72(ivec2) VectorShuffle 396 396 0 1
-             398:   72(ivec2) GroupNonUniformSMax 35 ClusteredReduce 397 34
-             399:     73(ptr) AccessChain 27(data) 394 39
-             400:   20(ivec4) Load 399
-             401:   20(ivec4) VectorShuffle 400 398 4 5 2 3
-                              Store 399 401
-             402:      6(int) Load 8(invocation)
-             403:     73(ptr) AccessChain 27(data) 50 39
-             404:   20(ivec4) Load 403
-             405:   82(ivec3) VectorShuffle 404 404 0 1 2
-             406:   82(ivec3) GroupNonUniformSMax 35 ClusteredReduce 405 34
-             407:     73(ptr) AccessChain 27(data) 402 39
-             408:   20(ivec4) Load 407
-             409:   20(ivec4) VectorShuffle 408 406 4 5 6 3
-                              Store 407 409
-             410:      6(int) Load 8(invocation)
-             411:     73(ptr) AccessChain 27(data) 60 39
-             412:   20(ivec4) Load 411
-             413:   20(ivec4) GroupNonUniformSMax 35 ClusteredReduce 412 34
-             414:     73(ptr) AccessChain 27(data) 410 39
-                              Store 414 413
-             415:      6(int) Load 8(invocation)
-             416:     96(ptr) AccessChain 27(data) 29 50 30
-             417:      6(int) Load 416
-             418:      6(int) GroupNonUniformUMax 35 ClusteredReduce 417 34
-             419:     96(ptr) AccessChain 27(data) 415 50 30
-                              Store 419 418
-             420:      6(int) Load 8(invocation)
-             421:    103(ptr) AccessChain 27(data) 39 50
-             422:   21(ivec4) Load 421
-             423:  102(ivec2) VectorShuffle 422 422 0 1
-             424:  102(ivec2) GroupNonUniformUMax 35 ClusteredReduce 423 34
-             425:    103(ptr) AccessChain 27(data) 420 50
-             426:   21(ivec4) Load 425
-             427:   21(ivec4) VectorShuffle 426 424 4 5 2 3
-                              Store 425 427
-             428:      6(int) Load 8(invocation)
-             429:    103(ptr) AccessChain 27(data) 50 50
-             430:   21(ivec4) Load 429
-             431:  112(ivec3) VectorShuffle 430 430 0 1 2
-             432:  112(ivec3) GroupNonUniformUMax 35 ClusteredReduce 431 34
-             433:    103(ptr) AccessChain 27(data) 428 50
-             434:   21(ivec4) Load 433
-             435:   21(ivec4) VectorShuffle 434 432 4 5 6 3
-                              Store 433 435
-             436:      6(int) Load 8(invocation)
-             437:    103(ptr) AccessChain 27(data) 60 50
-             438:   21(ivec4) Load 437
-             439:   21(ivec4) GroupNonUniformUMax 35 ClusteredReduce 438 34
-             440:    103(ptr) AccessChain 27(data) 436 50
-                              Store 440 439
-             441:      6(int) Load 8(invocation)
-             442:    126(ptr) AccessChain 27(data) 29 60 30
-             443:22(float64_t) Load 442
-             444:22(float64_t) GroupNonUniformFMax 35 ClusteredReduce 443 34
-             445:    126(ptr) AccessChain 27(data) 441 60 30
-                              Store 445 444
-             446:      6(int) Load 8(invocation)
-             447:    133(ptr) AccessChain 27(data) 39 60
-             448: 23(f64vec4) Load 447
-             449:132(f64vec2) VectorShuffle 448 448 0 1
-             450:132(f64vec2) GroupNonUniformFMax 35 ClusteredReduce 449 34
-             451:    133(ptr) AccessChain 27(data) 446 60
-             452: 23(f64vec4) Load 451
-             453: 23(f64vec4) VectorShuffle 452 450 4 5 2 3
-                              Store 451 453
-             454:      6(int) Load 8(invocation)
-             455:    133(ptr) AccessChain 27(data) 50 60
-             456: 23(f64vec4) Load 455
-             457:142(f64vec3) VectorShuffle 456 456 0 1 2
-             458:142(f64vec3) GroupNonUniformFMax 35 ClusteredReduce 457 34
-             459:    133(ptr) AccessChain 27(data) 454 60
-             460: 23(f64vec4) Load 459
-             461: 23(f64vec4) VectorShuffle 460 458 4 5 6 3
-                              Store 459 461
-             462:      6(int) Load 8(invocation)
-             463:    133(ptr) AccessChain 27(data) 60 60
-             464: 23(f64vec4) Load 463
-             465: 23(f64vec4) GroupNonUniformFMax 35 ClusteredReduce 464 34
-             466:    133(ptr) AccessChain 27(data) 462 60
-                              Store 466 465
+             307:     41(ptr) AccessChain 27(data) 51 29
+             308:   18(fvec4) Load 307
+             309:   52(fvec3) VectorShuffle 308 308 0 1 2
+             310:   52(fvec3) GroupNonUniformFMin 35 ClusteredReduce 309 34
+             311:     31(ptr) AccessChain 27(data) 306 29 30
+             312:   17(float) CompositeExtract 310 0
+                              Store 311 312
+             313:     31(ptr) AccessChain 27(data) 306 29 34
+             314:   17(float) CompositeExtract 310 1
+                              Store 313 314
+             315:     31(ptr) AccessChain 27(data) 306 29 61
+             316:   17(float) CompositeExtract 310 2
+                              Store 315 316
+             317:      6(int) Load 8(invocation)
+             318:     41(ptr) AccessChain 27(data) 65 29
+             319:   18(fvec4) Load 318
+             320:   18(fvec4) GroupNonUniformFMin 35 ClusteredReduce 319 34
+             321:     41(ptr) AccessChain 27(data) 317 29
+                              Store 321 320
+             322:      6(int) Load 8(invocation)
+             323:     71(ptr) AccessChain 27(data) 29 39 30
+             324:     19(int) Load 323
+             325:     19(int) GroupNonUniformSMin 35 ClusteredReduce 324 34
+             326:     71(ptr) AccessChain 27(data) 322 39 30
+                              Store 326 325
+             327:      6(int) Load 8(invocation)
+             328:     78(ptr) AccessChain 27(data) 39 39
+             329:   20(ivec4) Load 328
+             330:   77(ivec2) VectorShuffle 329 329 0 1
+             331:   77(ivec2) GroupNonUniformSMin 35 ClusteredReduce 330 34
+             332:     71(ptr) AccessChain 27(data) 327 39 30
+             333:     19(int) CompositeExtract 331 0
+                              Store 332 333
+             334:     71(ptr) AccessChain 27(data) 327 39 34
+             335:     19(int) CompositeExtract 331 1
+                              Store 334 335
+             336:      6(int) Load 8(invocation)
+             337:     78(ptr) AccessChain 27(data) 51 39
+             338:   20(ivec4) Load 337
+             339:   88(ivec3) VectorShuffle 338 338 0 1 2
+             340:   88(ivec3) GroupNonUniformSMin 35 ClusteredReduce 339 34
+             341:     71(ptr) AccessChain 27(data) 336 39 30
+             342:     19(int) CompositeExtract 340 0
+                              Store 341 342
+             343:     71(ptr) AccessChain 27(data) 336 39 34
+             344:     19(int) CompositeExtract 340 1
+                              Store 343 344
+             345:     71(ptr) AccessChain 27(data) 336 39 61
+             346:     19(int) CompositeExtract 340 2
+                              Store 345 346
+             347:      6(int) Load 8(invocation)
+             348:     78(ptr) AccessChain 27(data) 65 39
+             349:   20(ivec4) Load 348
+             350:   20(ivec4) GroupNonUniformSMin 35 ClusteredReduce 349 34
+             351:     78(ptr) AccessChain 27(data) 347 39
+                              Store 351 350
+             352:      6(int) Load 8(invocation)
+             353:    105(ptr) AccessChain 27(data) 29 51 30
+             354:      6(int) Load 353
+             355:      6(int) GroupNonUniformUMin 35 ClusteredReduce 354 34
+             356:    105(ptr) AccessChain 27(data) 352 51 30
+                              Store 356 355
+             357:      6(int) Load 8(invocation)
+             358:    112(ptr) AccessChain 27(data) 39 51
+             359:   21(ivec4) Load 358
+             360:  111(ivec2) VectorShuffle 359 359 0 1
+             361:  111(ivec2) GroupNonUniformUMin 35 ClusteredReduce 360 34
+             362:    105(ptr) AccessChain 27(data) 357 51 30
+             363:      6(int) CompositeExtract 361 0
+                              Store 362 363
+             364:    105(ptr) AccessChain 27(data) 357 51 34
+             365:      6(int) CompositeExtract 361 1
+                              Store 364 365
+             366:      6(int) Load 8(invocation)
+             367:    112(ptr) AccessChain 27(data) 51 51
+             368:   21(ivec4) Load 367
+             369:  122(ivec3) VectorShuffle 368 368 0 1 2
+             370:  122(ivec3) GroupNonUniformUMin 35 ClusteredReduce 369 34
+             371:    105(ptr) AccessChain 27(data) 366 51 30
+             372:      6(int) CompositeExtract 370 0
+                              Store 371 372
+             373:    105(ptr) AccessChain 27(data) 366 51 34
+             374:      6(int) CompositeExtract 370 1
+                              Store 373 374
+             375:    105(ptr) AccessChain 27(data) 366 51 61
+             376:      6(int) CompositeExtract 370 2
+                              Store 375 376
+             377:      6(int) Load 8(invocation)
+             378:    112(ptr) AccessChain 27(data) 65 51
+             379:   21(ivec4) Load 378
+             380:   21(ivec4) GroupNonUniformUMin 35 ClusteredReduce 379 34
+             381:    112(ptr) AccessChain 27(data) 377 51
+                              Store 381 380
+             382:      6(int) Load 8(invocation)
+             383:    139(ptr) AccessChain 27(data) 29 65 30
+             384:22(float64_t) Load 383
+             385:22(float64_t) GroupNonUniformFMin 35 ClusteredReduce 384 34
+             386:    139(ptr) AccessChain 27(data) 382 65 30
+                              Store 386 385
+             387:      6(int) Load 8(invocation)
+             388:    146(ptr) AccessChain 27(data) 39 65
+             389: 23(f64vec4) Load 388
+             390:145(f64vec2) VectorShuffle 389 389 0 1
+             391:145(f64vec2) GroupNonUniformFMin 35 ClusteredReduce 390 34
+             392:    139(ptr) AccessChain 27(data) 387 65 30
+             393:22(float64_t) CompositeExtract 391 0
+                              Store 392 393
+             394:    139(ptr) AccessChain 27(data) 387 65 34
+             395:22(float64_t) CompositeExtract 391 1
+                              Store 394 395
+             396:      6(int) Load 8(invocation)
+             397:    146(ptr) AccessChain 27(data) 51 65
+             398: 23(f64vec4) Load 397
+             399:156(f64vec3) VectorShuffle 398 398 0 1 2
+             400:156(f64vec3) GroupNonUniformFMin 35 ClusteredReduce 399 34
+             401:    139(ptr) AccessChain 27(data) 396 65 30
+             402:22(float64_t) CompositeExtract 400 0
+                              Store 401 402
+             403:    139(ptr) AccessChain 27(data) 396 65 34
+             404:22(float64_t) CompositeExtract 400 1
+                              Store 403 404
+             405:    139(ptr) AccessChain 27(data) 396 65 61
+             406:22(float64_t) CompositeExtract 400 2
+                              Store 405 406
+             407:      6(int) Load 8(invocation)
+             408:    146(ptr) AccessChain 27(data) 65 65
+             409: 23(f64vec4) Load 408
+             410: 23(f64vec4) GroupNonUniformFMin 35 ClusteredReduce 409 34
+             411:    146(ptr) AccessChain 27(data) 407 65
+                              Store 411 410
+             412:      6(int) Load 8(invocation)
+             413:     31(ptr) AccessChain 27(data) 29 29 30
+             414:   17(float) Load 413
+             415:   17(float) GroupNonUniformFMax 35 ClusteredReduce 414 34
+             416:     31(ptr) AccessChain 27(data) 412 29 30
+                              Store 416 415
+             417:      6(int) Load 8(invocation)
+             418:     41(ptr) AccessChain 27(data) 39 29
+             419:   18(fvec4) Load 418
+             420:   40(fvec2) VectorShuffle 419 419 0 1
+             421:   40(fvec2) GroupNonUniformFMax 35 ClusteredReduce 420 34
+             422:     31(ptr) AccessChain 27(data) 417 29 30
+             423:   17(float) CompositeExtract 421 0
+                              Store 422 423
+             424:     31(ptr) AccessChain 27(data) 417 29 34
+             425:   17(float) CompositeExtract 421 1
+                              Store 424 425
+             426:      6(int) Load 8(invocation)
+             427:     41(ptr) AccessChain 27(data) 51 29
+             428:   18(fvec4) Load 427
+             429:   52(fvec3) VectorShuffle 428 428 0 1 2
+             430:   52(fvec3) GroupNonUniformFMax 35 ClusteredReduce 429 34
+             431:     31(ptr) AccessChain 27(data) 426 29 30
+             432:   17(float) CompositeExtract 430 0
+                              Store 431 432
+             433:     31(ptr) AccessChain 27(data) 426 29 34
+             434:   17(float) CompositeExtract 430 1
+                              Store 433 434
+             435:     31(ptr) AccessChain 27(data) 426 29 61
+             436:   17(float) CompositeExtract 430 2
+                              Store 435 436
+             437:      6(int) Load 8(invocation)
+             438:     41(ptr) AccessChain 27(data) 65 29
+             439:   18(fvec4) Load 438
+             440:   18(fvec4) GroupNonUniformFMax 35 ClusteredReduce 439 34
+             441:     41(ptr) AccessChain 27(data) 437 29
+                              Store 441 440
+             442:      6(int) Load 8(invocation)
+             443:     71(ptr) AccessChain 27(data) 29 39 30
+             444:     19(int) Load 443
+             445:     19(int) GroupNonUniformSMax 35 ClusteredReduce 444 34
+             446:     71(ptr) AccessChain 27(data) 442 39 30
+                              Store 446 445
+             447:      6(int) Load 8(invocation)
+             448:     78(ptr) AccessChain 27(data) 39 39
+             449:   20(ivec4) Load 448
+             450:   77(ivec2) VectorShuffle 449 449 0 1
+             451:   77(ivec2) GroupNonUniformSMax 35 ClusteredReduce 450 34
+             452:     71(ptr) AccessChain 27(data) 447 39 30
+             453:     19(int) CompositeExtract 451 0
+                              Store 452 453
+             454:     71(ptr) AccessChain 27(data) 447 39 34
+             455:     19(int) CompositeExtract 451 1
+                              Store 454 455
+             456:      6(int) Load 8(invocation)
+             457:     78(ptr) AccessChain 27(data) 51 39
+             458:   20(ivec4) Load 457
+             459:   88(ivec3) VectorShuffle 458 458 0 1 2
+             460:   88(ivec3) GroupNonUniformSMax 35 ClusteredReduce 459 34
+             461:     71(ptr) AccessChain 27(data) 456 39 30
+             462:     19(int) CompositeExtract 460 0
+                              Store 461 462
+             463:     71(ptr) AccessChain 27(data) 456 39 34
+             464:     19(int) CompositeExtract 460 1
+                              Store 463 464
+             465:     71(ptr) AccessChain 27(data) 456 39 61
+             466:     19(int) CompositeExtract 460 2
+                              Store 465 466
              467:      6(int) Load 8(invocation)
-             468:     66(ptr) AccessChain 27(data) 29 39 30
-             469:     19(int) Load 468
-             470:     19(int) GroupNonUniformBitwiseAnd 35 ClusteredReduce 469 34
-             471:     66(ptr) AccessChain 27(data) 467 39 30
+             468:     78(ptr) AccessChain 27(data) 65 39
+             469:   20(ivec4) Load 468
+             470:   20(ivec4) GroupNonUniformSMax 35 ClusteredReduce 469 34
+             471:     78(ptr) AccessChain 27(data) 467 39
                               Store 471 470
              472:      6(int) Load 8(invocation)
-             473:     73(ptr) AccessChain 27(data) 39 39
-             474:   20(ivec4) Load 473
-             475:   72(ivec2) VectorShuffle 474 474 0 1
-             476:   72(ivec2) GroupNonUniformBitwiseAnd 35 ClusteredReduce 475 34
-             477:     73(ptr) AccessChain 27(data) 472 39
-             478:   20(ivec4) Load 477
-             479:   20(ivec4) VectorShuffle 478 476 4 5 2 3
-                              Store 477 479
-             480:      6(int) Load 8(invocation)
-             481:     73(ptr) AccessChain 27(data) 50 39
-             482:   20(ivec4) Load 481
-             483:   82(ivec3) VectorShuffle 482 482 0 1 2
-             484:   82(ivec3) GroupNonUniformBitwiseAnd 35 ClusteredReduce 483 34
-             485:     73(ptr) AccessChain 27(data) 480 39
-             486:   20(ivec4) Load 485
-             487:   20(ivec4) VectorShuffle 486 484 4 5 6 3
-                              Store 485 487
-             488:      6(int) Load 8(invocation)
-             489:     73(ptr) AccessChain 27(data) 60 39
-             490:   20(ivec4) Load 489
-             491:   20(ivec4) GroupNonUniformBitwiseAnd 35 ClusteredReduce 490 34
-             492:     73(ptr) AccessChain 27(data) 488 39
-                              Store 492 491
-             493:      6(int) Load 8(invocation)
-             494:     96(ptr) AccessChain 27(data) 29 50 30
-             495:      6(int) Load 494
-             496:      6(int) GroupNonUniformBitwiseAnd 35 ClusteredReduce 495 34
-             497:     96(ptr) AccessChain 27(data) 493 50 30
-                              Store 497 496
-             498:      6(int) Load 8(invocation)
-             499:    103(ptr) AccessChain 27(data) 39 50
-             500:   21(ivec4) Load 499
-             501:  102(ivec2) VectorShuffle 500 500 0 1
-             502:  102(ivec2) GroupNonUniformBitwiseAnd 35 ClusteredReduce 501 34
-             503:    103(ptr) AccessChain 27(data) 498 50
-             504:   21(ivec4) Load 503
-             505:   21(ivec4) VectorShuffle 504 502 4 5 2 3
-                              Store 503 505
-             506:      6(int) Load 8(invocation)
-             507:    103(ptr) AccessChain 27(data) 50 50
-             508:   21(ivec4) Load 507
-             509:  112(ivec3) VectorShuffle 508 508 0 1 2
-             510:  112(ivec3) GroupNonUniformBitwiseAnd 35 ClusteredReduce 509 34
-             511:    103(ptr) AccessChain 27(data) 506 50
-             512:   21(ivec4) Load 511
-             513:   21(ivec4) VectorShuffle 512 510 4 5 6 3
-                              Store 511 513
-             514:      6(int) Load 8(invocation)
-             515:    103(ptr) AccessChain 27(data) 60 50
-             516:   21(ivec4) Load 515
-             517:   21(ivec4) GroupNonUniformBitwiseAnd 35 ClusteredReduce 516 34
-             518:    103(ptr) AccessChain 27(data) 514 50
-                              Store 518 517
-             519:      6(int) Load 8(invocation)
-             520:     66(ptr) AccessChain 27(data) 29 39 30
-             521:     19(int) Load 520
-             523:   522(bool) SLessThan 521 29
-             524:   522(bool) GroupNonUniformLogicalAnd 35 ClusteredReduce 523 34
-             525:     19(int) Select 524 39 29
-             526:     66(ptr) AccessChain 27(data) 519 39 30
-                              Store 526 525
+             473:    105(ptr) AccessChain 27(data) 29 51 30
+             474:      6(int) Load 473
+             475:      6(int) GroupNonUniformUMax 35 ClusteredReduce 474 34
+             476:    105(ptr) AccessChain 27(data) 472 51 30
+                              Store 476 475
+             477:      6(int) Load 8(invocation)
+             478:    112(ptr) AccessChain 27(data) 39 51
+             479:   21(ivec4) Load 478
+             480:  111(ivec2) VectorShuffle 479 479 0 1
+             481:  111(ivec2) GroupNonUniformUMax 35 ClusteredReduce 480 34
+             482:    105(ptr) AccessChain 27(data) 477 51 30
+             483:      6(int) CompositeExtract 481 0
+                              Store 482 483
+             484:    105(ptr) AccessChain 27(data) 477 51 34
+             485:      6(int) CompositeExtract 481 1
+                              Store 484 485
+             486:      6(int) Load 8(invocation)
+             487:    112(ptr) AccessChain 27(data) 51 51
+             488:   21(ivec4) Load 487
+             489:  122(ivec3) VectorShuffle 488 488 0 1 2
+             490:  122(ivec3) GroupNonUniformUMax 35 ClusteredReduce 489 34
+             491:    105(ptr) AccessChain 27(data) 486 51 30
+             492:      6(int) CompositeExtract 490 0
+                              Store 491 492
+             493:    105(ptr) AccessChain 27(data) 486 51 34
+             494:      6(int) CompositeExtract 490 1
+                              Store 493 494
+             495:    105(ptr) AccessChain 27(data) 486 51 61
+             496:      6(int) CompositeExtract 490 2
+                              Store 495 496
+             497:      6(int) Load 8(invocation)
+             498:    112(ptr) AccessChain 27(data) 65 51
+             499:   21(ivec4) Load 498
+             500:   21(ivec4) GroupNonUniformUMax 35 ClusteredReduce 499 34
+             501:    112(ptr) AccessChain 27(data) 497 51
+                              Store 501 500
+             502:      6(int) Load 8(invocation)
+             503:    139(ptr) AccessChain 27(data) 29 65 30
+             504:22(float64_t) Load 503
+             505:22(float64_t) GroupNonUniformFMax 35 ClusteredReduce 504 34
+             506:    139(ptr) AccessChain 27(data) 502 65 30
+                              Store 506 505
+             507:      6(int) Load 8(invocation)
+             508:    146(ptr) AccessChain 27(data) 39 65
+             509: 23(f64vec4) Load 508
+             510:145(f64vec2) VectorShuffle 509 509 0 1
+             511:145(f64vec2) GroupNonUniformFMax 35 ClusteredReduce 510 34
+             512:    139(ptr) AccessChain 27(data) 507 65 30
+             513:22(float64_t) CompositeExtract 511 0
+                              Store 512 513
+             514:    139(ptr) AccessChain 27(data) 507 65 34
+             515:22(float64_t) CompositeExtract 511 1
+                              Store 514 515
+             516:      6(int) Load 8(invocation)
+             517:    146(ptr) AccessChain 27(data) 51 65
+             518: 23(f64vec4) Load 517
+             519:156(f64vec3) VectorShuffle 518 518 0 1 2
+             520:156(f64vec3) GroupNonUniformFMax 35 ClusteredReduce 519 34
+             521:    139(ptr) AccessChain 27(data) 516 65 30
+             522:22(float64_t) CompositeExtract 520 0
+                              Store 521 522
+             523:    139(ptr) AccessChain 27(data) 516 65 34
+             524:22(float64_t) CompositeExtract 520 1
+                              Store 523 524
+             525:    139(ptr) AccessChain 27(data) 516 65 61
+             526:22(float64_t) CompositeExtract 520 2
+                              Store 525 526
              527:      6(int) Load 8(invocation)
-             528:     73(ptr) AccessChain 27(data) 39 39
-             529:   20(ivec4) Load 528
-             530:   72(ivec2) VectorShuffle 529 529 0 1
-             533:  532(bvec2) SLessThan 530 531
-             534:  532(bvec2) GroupNonUniformLogicalAnd 35 ClusteredReduce 533 34
-             536:   72(ivec2) Select 534 535 531
-             537:     73(ptr) AccessChain 27(data) 527 39
-             538:   20(ivec4) Load 537
-             539:   20(ivec4) VectorShuffle 538 536 4 5 2 3
-                              Store 537 539
-             540:      6(int) Load 8(invocation)
-             541:     73(ptr) AccessChain 27(data) 39 39
-             542:   20(ivec4) Load 541
-             543:   82(ivec3) VectorShuffle 542 542 0 1 2
-             546:  545(bvec3) SLessThan 543 544
-             547:  545(bvec3) GroupNonUniformLogicalAnd 35 ClusteredReduce 546 34
-             549:   82(ivec3) Select 547 548 544
-             550:     73(ptr) AccessChain 27(data) 540 39
-             551:   20(ivec4) Load 550
-             552:   20(ivec4) VectorShuffle 551 549 4 5 6 3
-                              Store 550 552
-             553:      6(int) Load 8(invocation)
-             554:     73(ptr) AccessChain 27(data) 39 39
-             555:   20(ivec4) Load 554
-             558:  557(bvec4) SLessThan 555 556
-             559:  557(bvec4) GroupNonUniformLogicalAnd 35 ClusteredReduce 558 34
-             561:   20(ivec4) Select 559 560 556
-             562:     73(ptr) AccessChain 27(data) 553 39
-                              Store 562 561
-             563:      6(int) Load 8(invocation)
-             564:     66(ptr) AccessChain 27(data) 29 39 30
-             565:     19(int) Load 564
-             566:     19(int) GroupNonUniformBitwiseOr 35 ClusteredReduce 565 34
-             567:     66(ptr) AccessChain 27(data) 563 39 30
-                              Store 567 566
-             568:      6(int) Load 8(invocation)
-             569:     73(ptr) AccessChain 27(data) 39 39
-             570:   20(ivec4) Load 569
-             571:   72(ivec2) VectorShuffle 570 570 0 1
-             572:   72(ivec2) GroupNonUniformBitwiseOr 35 ClusteredReduce 571 34
-             573:     73(ptr) AccessChain 27(data) 568 39
-             574:   20(ivec4) Load 573
-             575:   20(ivec4) VectorShuffle 574 572 4 5 2 3
-                              Store 573 575
+             528:    146(ptr) AccessChain 27(data) 65 65
+             529: 23(f64vec4) Load 528
+             530: 23(f64vec4) GroupNonUniformFMax 35 ClusteredReduce 529 34
+             531:    146(ptr) AccessChain 27(data) 527 65
+                              Store 531 530
+             532:      6(int) Load 8(invocation)
+             533:     71(ptr) AccessChain 27(data) 29 39 30
+             534:     19(int) Load 533
+             535:     19(int) GroupNonUniformBitwiseAnd 35 ClusteredReduce 534 34
+             536:     71(ptr) AccessChain 27(data) 532 39 30
+                              Store 536 535
+             537:      6(int) Load 8(invocation)
+             538:     78(ptr) AccessChain 27(data) 39 39
+             539:   20(ivec4) Load 538
+             540:   77(ivec2) VectorShuffle 539 539 0 1
+             541:   77(ivec2) GroupNonUniformBitwiseAnd 35 ClusteredReduce 540 34
+             542:     71(ptr) AccessChain 27(data) 537 39 30
+             543:     19(int) CompositeExtract 541 0
+                              Store 542 543
+             544:     71(ptr) AccessChain 27(data) 537 39 34
+             545:     19(int) CompositeExtract 541 1
+                              Store 544 545
+             546:      6(int) Load 8(invocation)
+             547:     78(ptr) AccessChain 27(data) 51 39
+             548:   20(ivec4) Load 547
+             549:   88(ivec3) VectorShuffle 548 548 0 1 2
+             550:   88(ivec3) GroupNonUniformBitwiseAnd 35 ClusteredReduce 549 34
+             551:     71(ptr) AccessChain 27(data) 546 39 30
+             552:     19(int) CompositeExtract 550 0
+                              Store 551 552
+             553:     71(ptr) AccessChain 27(data) 546 39 34
+             554:     19(int) CompositeExtract 550 1
+                              Store 553 554
+             555:     71(ptr) AccessChain 27(data) 546 39 61
+             556:     19(int) CompositeExtract 550 2
+                              Store 555 556
+             557:      6(int) Load 8(invocation)
+             558:     78(ptr) AccessChain 27(data) 65 39
+             559:   20(ivec4) Load 558
+             560:   20(ivec4) GroupNonUniformBitwiseAnd 35 ClusteredReduce 559 34
+             561:     78(ptr) AccessChain 27(data) 557 39
+                              Store 561 560
+             562:      6(int) Load 8(invocation)
+             563:    105(ptr) AccessChain 27(data) 29 51 30
+             564:      6(int) Load 563
+             565:      6(int) GroupNonUniformBitwiseAnd 35 ClusteredReduce 564 34
+             566:    105(ptr) AccessChain 27(data) 562 51 30
+                              Store 566 565
+             567:      6(int) Load 8(invocation)
+             568:    112(ptr) AccessChain 27(data) 39 51
+             569:   21(ivec4) Load 568
+             570:  111(ivec2) VectorShuffle 569 569 0 1
+             571:  111(ivec2) GroupNonUniformBitwiseAnd 35 ClusteredReduce 570 34
+             572:    105(ptr) AccessChain 27(data) 567 51 30
+             573:      6(int) CompositeExtract 571 0
+                              Store 572 573
+             574:    105(ptr) AccessChain 27(data) 567 51 34
+             575:      6(int) CompositeExtract 571 1
+                              Store 574 575
              576:      6(int) Load 8(invocation)
-             577:     73(ptr) AccessChain 27(data) 50 39
-             578:   20(ivec4) Load 577
-             579:   82(ivec3) VectorShuffle 578 578 0 1 2
-             580:   82(ivec3) GroupNonUniformBitwiseOr 35 ClusteredReduce 579 34
-             581:     73(ptr) AccessChain 27(data) 576 39
-             582:   20(ivec4) Load 581
-             583:   20(ivec4) VectorShuffle 582 580 4 5 6 3
-                              Store 581 583
-             584:      6(int) Load 8(invocation)
-             585:     73(ptr) AccessChain 27(data) 60 39
-             586:   20(ivec4) Load 585
-             587:   20(ivec4) GroupNonUniformBitwiseOr 35 ClusteredReduce 586 34
-             588:     73(ptr) AccessChain 27(data) 584 39
-                              Store 588 587
-             589:      6(int) Load 8(invocation)
-             590:     96(ptr) AccessChain 27(data) 29 50 30
-             591:      6(int) Load 590
-             592:      6(int) GroupNonUniformBitwiseOr 35 ClusteredReduce 591 34
-             593:     96(ptr) AccessChain 27(data) 589 50 30
-                              Store 593 592
-             594:      6(int) Load 8(invocation)
-             595:    103(ptr) AccessChain 27(data) 39 50
-             596:   21(ivec4) Load 595
-             597:  102(ivec2) VectorShuffle 596 596 0 1
-             598:  102(ivec2) GroupNonUniformBitwiseOr 35 ClusteredReduce 597 34
-             599:    103(ptr) AccessChain 27(data) 594 50
-             600:   21(ivec4) Load 599
-             601:   21(ivec4) VectorShuffle 600 598 4 5 2 3
-                              Store 599 601
-             602:      6(int) Load 8(invocation)
-             603:    103(ptr) AccessChain 27(data) 50 50
-             604:   21(ivec4) Load 603
-             605:  112(ivec3) VectorShuffle 604 604 0 1 2
-             606:  112(ivec3) GroupNonUniformBitwiseOr 35 ClusteredReduce 605 34
-             607:    103(ptr) AccessChain 27(data) 602 50
-             608:   21(ivec4) Load 607
-             609:   21(ivec4) VectorShuffle 608 606 4 5 6 3
-                              Store 607 609
-             610:      6(int) Load 8(invocation)
-             611:    103(ptr) AccessChain 27(data) 60 50
-             612:   21(ivec4) Load 611
-             613:   21(ivec4) GroupNonUniformBitwiseOr 35 ClusteredReduce 612 34
-             614:    103(ptr) AccessChain 27(data) 610 50
-                              Store 614 613
-             615:      6(int) Load 8(invocation)
-             616:     66(ptr) AccessChain 27(data) 29 39 30
-             617:     19(int) Load 616
-             618:   522(bool) SLessThan 617 29
-             619:   522(bool) GroupNonUniformLogicalOr 35 ClusteredReduce 618 34
-             620:     19(int) Select 619 39 29
-             621:     66(ptr) AccessChain 27(data) 615 39 30
-                              Store 621 620
-             622:      6(int) Load 8(invocation)
-             623:     73(ptr) AccessChain 27(data) 39 39
-             624:   20(ivec4) Load 623
-             625:   72(ivec2) VectorShuffle 624 624 0 1
-             626:  532(bvec2) SLessThan 625 531
-             627:  532(bvec2) GroupNonUniformLogicalOr 35 ClusteredReduce 626 34
-             628:   72(ivec2) Select 627 535 531
-             629:     73(ptr) AccessChain 27(data) 622 39
-             630:   20(ivec4) Load 629
-             631:   20(ivec4) VectorShuffle 630 628 4 5 2 3
-                              Store 629 631
-             632:      6(int) Load 8(invocation)
-             633:     73(ptr) AccessChain 27(data) 39 39
-             634:   20(ivec4) Load 633
-             635:   82(ivec3) VectorShuffle 634 634 0 1 2
-             636:  545(bvec3) SLessThan 635 544
-             637:  545(bvec3) GroupNonUniformLogicalOr 35 ClusteredReduce 636 34
-             638:   82(ivec3) Select 637 548 544
-             639:     73(ptr) AccessChain 27(data) 632 39
-             640:   20(ivec4) Load 639
-             641:   20(ivec4) VectorShuffle 640 638 4 5 6 3
-                              Store 639 641
-             642:      6(int) Load 8(invocation)
-             643:     73(ptr) AccessChain 27(data) 39 39
-             644:   20(ivec4) Load 643
-             645:  557(bvec4) SLessThan 644 556
-             646:  557(bvec4) GroupNonUniformLogicalOr 35 ClusteredReduce 645 34
-             647:   20(ivec4) Select 646 560 556
-             648:     73(ptr) AccessChain 27(data) 642 39
-                              Store 648 647
-             649:      6(int) Load 8(invocation)
-             650:     66(ptr) AccessChain 27(data) 29 39 30
-             651:     19(int) Load 650
-             652:     19(int) GroupNonUniformBitwiseXor 35 ClusteredReduce 651 34
-             653:     66(ptr) AccessChain 27(data) 649 39 30
-                              Store 653 652
+             577:    112(ptr) AccessChain 27(data) 51 51
+             578:   21(ivec4) Load 577
+             579:  122(ivec3) VectorShuffle 578 578 0 1 2
+             580:  122(ivec3) GroupNonUniformBitwiseAnd 35 ClusteredReduce 579 34
+             581:    105(ptr) AccessChain 27(data) 576 51 30
+             582:      6(int) CompositeExtract 580 0
+                              Store 581 582
+             583:    105(ptr) AccessChain 27(data) 576 51 34
+             584:      6(int) CompositeExtract 580 1
+                              Store 583 584
+             585:    105(ptr) AccessChain 27(data) 576 51 61
+             586:      6(int) CompositeExtract 580 2
+                              Store 585 586
+             587:      6(int) Load 8(invocation)
+             588:    112(ptr) AccessChain 27(data) 65 51
+             589:   21(ivec4) Load 588
+             590:   21(ivec4) GroupNonUniformBitwiseAnd 35 ClusteredReduce 589 34
+             591:    112(ptr) AccessChain 27(data) 587 51
+                              Store 591 590
+             592:      6(int) Load 8(invocation)
+             593:     71(ptr) AccessChain 27(data) 29 39 30
+             594:     19(int) Load 593
+             596:   595(bool) SLessThan 594 29
+             597:   595(bool) GroupNonUniformLogicalAnd 35 ClusteredReduce 596 34
+             598:     19(int) Select 597 39 29
+             599:     71(ptr) AccessChain 27(data) 592 39 30
+                              Store 599 598
+             600:      6(int) Load 8(invocation)
+             601:     78(ptr) AccessChain 27(data) 39 39
+             602:   20(ivec4) Load 601
+             603:   77(ivec2) VectorShuffle 602 602 0 1
+             606:  605(bvec2) SLessThan 603 604
+             607:  605(bvec2) GroupNonUniformLogicalAnd 35 ClusteredReduce 606 34
+             609:   77(ivec2) Select 607 608 604
+             610:     71(ptr) AccessChain 27(data) 600 39 30
+             611:     19(int) CompositeExtract 609 0
+                              Store 610 611
+             612:     71(ptr) AccessChain 27(data) 600 39 34
+             613:     19(int) CompositeExtract 609 1
+                              Store 612 613
+             614:      6(int) Load 8(invocation)
+             615:     78(ptr) AccessChain 27(data) 39 39
+             616:   20(ivec4) Load 615
+             617:   88(ivec3) VectorShuffle 616 616 0 1 2
+             620:  619(bvec3) SLessThan 617 618
+             621:  619(bvec3) GroupNonUniformLogicalAnd 35 ClusteredReduce 620 34
+             623:   88(ivec3) Select 621 622 618
+             624:     71(ptr) AccessChain 27(data) 614 39 30
+             625:     19(int) CompositeExtract 623 0
+                              Store 624 625
+             626:     71(ptr) AccessChain 27(data) 614 39 34
+             627:     19(int) CompositeExtract 623 1
+                              Store 626 627
+             628:     71(ptr) AccessChain 27(data) 614 39 61
+             629:     19(int) CompositeExtract 623 2
+                              Store 628 629
+             630:      6(int) Load 8(invocation)
+             631:     78(ptr) AccessChain 27(data) 39 39
+             632:   20(ivec4) Load 631
+             635:  634(bvec4) SLessThan 632 633
+             636:  634(bvec4) GroupNonUniformLogicalAnd 35 ClusteredReduce 635 34
+             638:   20(ivec4) Select 636 637 633
+             639:     78(ptr) AccessChain 27(data) 630 39
+                              Store 639 638
+             640:      6(int) Load 8(invocation)
+             641:     71(ptr) AccessChain 27(data) 29 39 30
+             642:     19(int) Load 641
+             643:     19(int) GroupNonUniformBitwiseOr 35 ClusteredReduce 642 34
+             644:     71(ptr) AccessChain 27(data) 640 39 30
+                              Store 644 643
+             645:      6(int) Load 8(invocation)
+             646:     78(ptr) AccessChain 27(data) 39 39
+             647:   20(ivec4) Load 646
+             648:   77(ivec2) VectorShuffle 647 647 0 1
+             649:   77(ivec2) GroupNonUniformBitwiseOr 35 ClusteredReduce 648 34
+             650:     71(ptr) AccessChain 27(data) 645 39 30
+             651:     19(int) CompositeExtract 649 0
+                              Store 650 651
+             652:     71(ptr) AccessChain 27(data) 645 39 34
+             653:     19(int) CompositeExtract 649 1
+                              Store 652 653
              654:      6(int) Load 8(invocation)
-             655:     73(ptr) AccessChain 27(data) 39 39
+             655:     78(ptr) AccessChain 27(data) 51 39
              656:   20(ivec4) Load 655
-             657:   72(ivec2) VectorShuffle 656 656 0 1
-             658:   72(ivec2) GroupNonUniformBitwiseXor 35 ClusteredReduce 657 34
-             659:     73(ptr) AccessChain 27(data) 654 39
-             660:   20(ivec4) Load 659
-             661:   20(ivec4) VectorShuffle 660 658 4 5 2 3
-                              Store 659 661
-             662:      6(int) Load 8(invocation)
-             663:     73(ptr) AccessChain 27(data) 50 39
-             664:   20(ivec4) Load 663
-             665:   82(ivec3) VectorShuffle 664 664 0 1 2
-             666:   82(ivec3) GroupNonUniformBitwiseXor 35 ClusteredReduce 665 34
-             667:     73(ptr) AccessChain 27(data) 662 39
-             668:   20(ivec4) Load 667
-             669:   20(ivec4) VectorShuffle 668 666 4 5 6 3
-                              Store 667 669
+             657:   88(ivec3) VectorShuffle 656 656 0 1 2
+             658:   88(ivec3) GroupNonUniformBitwiseOr 35 ClusteredReduce 657 34
+             659:     71(ptr) AccessChain 27(data) 654 39 30
+             660:     19(int) CompositeExtract 658 0
+                              Store 659 660
+             661:     71(ptr) AccessChain 27(data) 654 39 34
+             662:     19(int) CompositeExtract 658 1
+                              Store 661 662
+             663:     71(ptr) AccessChain 27(data) 654 39 61
+             664:     19(int) CompositeExtract 658 2
+                              Store 663 664
+             665:      6(int) Load 8(invocation)
+             666:     78(ptr) AccessChain 27(data) 65 39
+             667:   20(ivec4) Load 666
+             668:   20(ivec4) GroupNonUniformBitwiseOr 35 ClusteredReduce 667 34
+             669:     78(ptr) AccessChain 27(data) 665 39
+                              Store 669 668
              670:      6(int) Load 8(invocation)
-             671:     73(ptr) AccessChain 27(data) 60 39
-             672:   20(ivec4) Load 671
-             673:   20(ivec4) GroupNonUniformBitwiseXor 35 ClusteredReduce 672 34
-             674:     73(ptr) AccessChain 27(data) 670 39
+             671:    105(ptr) AccessChain 27(data) 29 51 30
+             672:      6(int) Load 671
+             673:      6(int) GroupNonUniformBitwiseOr 35 ClusteredReduce 672 34
+             674:    105(ptr) AccessChain 27(data) 670 51 30
                               Store 674 673
              675:      6(int) Load 8(invocation)
-             676:     96(ptr) AccessChain 27(data) 29 50 30
-             677:      6(int) Load 676
-             678:      6(int) GroupNonUniformBitwiseXor 35 ClusteredReduce 677 34
-             679:     96(ptr) AccessChain 27(data) 675 50 30
-                              Store 679 678
-             680:      6(int) Load 8(invocation)
-             681:    103(ptr) AccessChain 27(data) 39 50
-             682:   21(ivec4) Load 681
-             683:  102(ivec2) VectorShuffle 682 682 0 1
-             684:  102(ivec2) GroupNonUniformBitwiseXor 35 ClusteredReduce 683 34
-             685:    103(ptr) AccessChain 27(data) 680 50
+             676:    112(ptr) AccessChain 27(data) 39 51
+             677:   21(ivec4) Load 676
+             678:  111(ivec2) VectorShuffle 677 677 0 1
+             679:  111(ivec2) GroupNonUniformBitwiseOr 35 ClusteredReduce 678 34
+             680:    105(ptr) AccessChain 27(data) 675 51 30
+             681:      6(int) CompositeExtract 679 0
+                              Store 680 681
+             682:    105(ptr) AccessChain 27(data) 675 51 34
+             683:      6(int) CompositeExtract 679 1
+                              Store 682 683
+             684:      6(int) Load 8(invocation)
+             685:    112(ptr) AccessChain 27(data) 51 51
              686:   21(ivec4) Load 685
-             687:   21(ivec4) VectorShuffle 686 684 4 5 2 3
-                              Store 685 687
-             688:      6(int) Load 8(invocation)
-             689:    103(ptr) AccessChain 27(data) 50 50
-             690:   21(ivec4) Load 689
-             691:  112(ivec3) VectorShuffle 690 690 0 1 2
-             692:  112(ivec3) GroupNonUniformBitwiseXor 35 ClusteredReduce 691 34
-             693:    103(ptr) AccessChain 27(data) 688 50
-             694:   21(ivec4) Load 693
-             695:   21(ivec4) VectorShuffle 694 692 4 5 6 3
-                              Store 693 695
-             696:      6(int) Load 8(invocation)
-             697:    103(ptr) AccessChain 27(data) 60 50
-             698:   21(ivec4) Load 697
-             699:   21(ivec4) GroupNonUniformBitwiseXor 35 ClusteredReduce 698 34
-             700:    103(ptr) AccessChain 27(data) 696 50
-                              Store 700 699
-             701:      6(int) Load 8(invocation)
-             702:     66(ptr) AccessChain 27(data) 29 39 30
-             703:     19(int) Load 702
-             704:   522(bool) SLessThan 703 29
-             705:   522(bool) GroupNonUniformLogicalXor 35 ClusteredReduce 704 34
-             706:     19(int) Select 705 39 29
-             707:     66(ptr) AccessChain 27(data) 701 39 30
-                              Store 707 706
-             708:      6(int) Load 8(invocation)
-             709:     73(ptr) AccessChain 27(data) 39 39
-             710:   20(ivec4) Load 709
-             711:   72(ivec2) VectorShuffle 710 710 0 1
-             712:  532(bvec2) SLessThan 711 531
-             713:  532(bvec2) GroupNonUniformLogicalXor 35 ClusteredReduce 712 34
-             714:   72(ivec2) Select 713 535 531
-             715:     73(ptr) AccessChain 27(data) 708 39
-             716:   20(ivec4) Load 715
-             717:   20(ivec4) VectorShuffle 716 714 4 5 2 3
-                              Store 715 717
+             687:  122(ivec3) VectorShuffle 686 686 0 1 2
+             688:  122(ivec3) GroupNonUniformBitwiseOr 35 ClusteredReduce 687 34
+             689:    105(ptr) AccessChain 27(data) 684 51 30
+             690:      6(int) CompositeExtract 688 0
+                              Store 689 690
+             691:    105(ptr) AccessChain 27(data) 684 51 34
+             692:      6(int) CompositeExtract 688 1
+                              Store 691 692
+             693:    105(ptr) AccessChain 27(data) 684 51 61
+             694:      6(int) CompositeExtract 688 2
+                              Store 693 694
+             695:      6(int) Load 8(invocation)
+             696:    112(ptr) AccessChain 27(data) 65 51
+             697:   21(ivec4) Load 696
+             698:   21(ivec4) GroupNonUniformBitwiseOr 35 ClusteredReduce 697 34
+             699:    112(ptr) AccessChain 27(data) 695 51
+                              Store 699 698
+             700:      6(int) Load 8(invocation)
+             701:     71(ptr) AccessChain 27(data) 29 39 30
+             702:     19(int) Load 701
+             703:   595(bool) SLessThan 702 29
+             704:   595(bool) GroupNonUniformLogicalOr 35 ClusteredReduce 703 34
+             705:     19(int) Select 704 39 29
+             706:     71(ptr) AccessChain 27(data) 700 39 30
+                              Store 706 705
+             707:      6(int) Load 8(invocation)
+             708:     78(ptr) AccessChain 27(data) 39 39
+             709:   20(ivec4) Load 708
+             710:   77(ivec2) VectorShuffle 709 709 0 1
+             711:  605(bvec2) SLessThan 710 604
+             712:  605(bvec2) GroupNonUniformLogicalOr 35 ClusteredReduce 711 34
+             713:   77(ivec2) Select 712 608 604
+             714:     71(ptr) AccessChain 27(data) 707 39 30
+             715:     19(int) CompositeExtract 713 0
+                              Store 714 715
+             716:     71(ptr) AccessChain 27(data) 707 39 34
+             717:     19(int) CompositeExtract 713 1
+                              Store 716 717
              718:      6(int) Load 8(invocation)
-             719:     73(ptr) AccessChain 27(data) 39 39
+             719:     78(ptr) AccessChain 27(data) 39 39
              720:   20(ivec4) Load 719
-             721:   82(ivec3) VectorShuffle 720 720 0 1 2
-             722:  545(bvec3) SLessThan 721 544
-             723:  545(bvec3) GroupNonUniformLogicalXor 35 ClusteredReduce 722 34
-             724:   82(ivec3) Select 723 548 544
-             725:     73(ptr) AccessChain 27(data) 718 39
-             726:   20(ivec4) Load 725
-             727:   20(ivec4) VectorShuffle 726 724 4 5 6 3
-                              Store 725 727
-             728:      6(int) Load 8(invocation)
-             729:     73(ptr) AccessChain 27(data) 39 39
-             730:   20(ivec4) Load 729
-             731:  557(bvec4) SLessThan 730 556
-             732:  557(bvec4) GroupNonUniformLogicalXor 35 ClusteredReduce 731 34
-             733:   20(ivec4) Select 732 560 556
-             734:     73(ptr) AccessChain 27(data) 728 39
-                              Store 734 733
+             721:   88(ivec3) VectorShuffle 720 720 0 1 2
+             722:  619(bvec3) SLessThan 721 618
+             723:  619(bvec3) GroupNonUniformLogicalOr 35 ClusteredReduce 722 34
+             724:   88(ivec3) Select 723 622 618
+             725:     71(ptr) AccessChain 27(data) 718 39 30
+             726:     19(int) CompositeExtract 724 0
+                              Store 725 726
+             727:     71(ptr) AccessChain 27(data) 718 39 34
+             728:     19(int) CompositeExtract 724 1
+                              Store 727 728
+             729:     71(ptr) AccessChain 27(data) 718 39 61
+             730:     19(int) CompositeExtract 724 2
+                              Store 729 730
+             731:      6(int) Load 8(invocation)
+             732:     78(ptr) AccessChain 27(data) 39 39
+             733:   20(ivec4) Load 732
+             734:  634(bvec4) SLessThan 733 633
+             735:  634(bvec4) GroupNonUniformLogicalOr 35 ClusteredReduce 734 34
+             736:   20(ivec4) Select 735 637 633
+             737:     78(ptr) AccessChain 27(data) 731 39
+                              Store 737 736
+             738:      6(int) Load 8(invocation)
+             739:     71(ptr) AccessChain 27(data) 29 39 30
+             740:     19(int) Load 739
+             741:     19(int) GroupNonUniformBitwiseXor 35 ClusteredReduce 740 34
+             742:     71(ptr) AccessChain 27(data) 738 39 30
+                              Store 742 741
+             743:      6(int) Load 8(invocation)
+             744:     78(ptr) AccessChain 27(data) 39 39
+             745:   20(ivec4) Load 744
+             746:   77(ivec2) VectorShuffle 745 745 0 1
+             747:   77(ivec2) GroupNonUniformBitwiseXor 35 ClusteredReduce 746 34
+             748:     71(ptr) AccessChain 27(data) 743 39 30
+             749:     19(int) CompositeExtract 747 0
+                              Store 748 749
+             750:     71(ptr) AccessChain 27(data) 743 39 34
+             751:     19(int) CompositeExtract 747 1
+                              Store 750 751
+             752:      6(int) Load 8(invocation)
+             753:     78(ptr) AccessChain 27(data) 51 39
+             754:   20(ivec4) Load 753
+             755:   88(ivec3) VectorShuffle 754 754 0 1 2
+             756:   88(ivec3) GroupNonUniformBitwiseXor 35 ClusteredReduce 755 34
+             757:     71(ptr) AccessChain 27(data) 752 39 30
+             758:     19(int) CompositeExtract 756 0
+                              Store 757 758
+             759:     71(ptr) AccessChain 27(data) 752 39 34
+             760:     19(int) CompositeExtract 756 1
+                              Store 759 760
+             761:     71(ptr) AccessChain 27(data) 752 39 61
+             762:     19(int) CompositeExtract 756 2
+                              Store 761 762
+             763:      6(int) Load 8(invocation)
+             764:     78(ptr) AccessChain 27(data) 65 39
+             765:   20(ivec4) Load 764
+             766:   20(ivec4) GroupNonUniformBitwiseXor 35 ClusteredReduce 765 34
+             767:     78(ptr) AccessChain 27(data) 763 39
+                              Store 767 766
+             768:      6(int) Load 8(invocation)
+             769:    105(ptr) AccessChain 27(data) 29 51 30
+             770:      6(int) Load 769
+             771:      6(int) GroupNonUniformBitwiseXor 35 ClusteredReduce 770 34
+             772:    105(ptr) AccessChain 27(data) 768 51 30
+                              Store 772 771
+             773:      6(int) Load 8(invocation)
+             774:    112(ptr) AccessChain 27(data) 39 51
+             775:   21(ivec4) Load 774
+             776:  111(ivec2) VectorShuffle 775 775 0 1
+             777:  111(ivec2) GroupNonUniformBitwiseXor 35 ClusteredReduce 776 34
+             778:    105(ptr) AccessChain 27(data) 773 51 30
+             779:      6(int) CompositeExtract 777 0
+                              Store 778 779
+             780:    105(ptr) AccessChain 27(data) 773 51 34
+             781:      6(int) CompositeExtract 777 1
+                              Store 780 781
+             782:      6(int) Load 8(invocation)
+             783:    112(ptr) AccessChain 27(data) 51 51
+             784:   21(ivec4) Load 783
+             785:  122(ivec3) VectorShuffle 784 784 0 1 2
+             786:  122(ivec3) GroupNonUniformBitwiseXor 35 ClusteredReduce 785 34
+             787:    105(ptr) AccessChain 27(data) 782 51 30
+             788:      6(int) CompositeExtract 786 0
+                              Store 787 788
+             789:    105(ptr) AccessChain 27(data) 782 51 34
+             790:      6(int) CompositeExtract 786 1
+                              Store 789 790
+             791:    105(ptr) AccessChain 27(data) 782 51 61
+             792:      6(int) CompositeExtract 786 2
+                              Store 791 792
+             793:      6(int) Load 8(invocation)
+             794:    112(ptr) AccessChain 27(data) 65 51
+             795:   21(ivec4) Load 794
+             796:   21(ivec4) GroupNonUniformBitwiseXor 35 ClusteredReduce 795 34
+             797:    112(ptr) AccessChain 27(data) 793 51
+                              Store 797 796
+             798:      6(int) Load 8(invocation)
+             799:     71(ptr) AccessChain 27(data) 29 39 30
+             800:     19(int) Load 799
+             801:   595(bool) SLessThan 800 29
+             802:   595(bool) GroupNonUniformLogicalXor 35 ClusteredReduce 801 34
+             803:     19(int) Select 802 39 29
+             804:     71(ptr) AccessChain 27(data) 798 39 30
+                              Store 804 803
+             805:      6(int) Load 8(invocation)
+             806:     78(ptr) AccessChain 27(data) 39 39
+             807:   20(ivec4) Load 806
+             808:   77(ivec2) VectorShuffle 807 807 0 1
+             809:  605(bvec2) SLessThan 808 604
+             810:  605(bvec2) GroupNonUniformLogicalXor 35 ClusteredReduce 809 34
+             811:   77(ivec2) Select 810 608 604
+             812:     71(ptr) AccessChain 27(data) 805 39 30
+             813:     19(int) CompositeExtract 811 0
+                              Store 812 813
+             814:     71(ptr) AccessChain 27(data) 805 39 34
+             815:     19(int) CompositeExtract 811 1
+                              Store 814 815
+             816:      6(int) Load 8(invocation)
+             817:     78(ptr) AccessChain 27(data) 39 39
+             818:   20(ivec4) Load 817
+             819:   88(ivec3) VectorShuffle 818 818 0 1 2
+             820:  619(bvec3) SLessThan 819 618
+             821:  619(bvec3) GroupNonUniformLogicalXor 35 ClusteredReduce 820 34
+             822:   88(ivec3) Select 821 622 618
+             823:     71(ptr) AccessChain 27(data) 816 39 30
+             824:     19(int) CompositeExtract 822 0
+                              Store 823 824
+             825:     71(ptr) AccessChain 27(data) 816 39 34
+             826:     19(int) CompositeExtract 822 1
+                              Store 825 826
+             827:     71(ptr) AccessChain 27(data) 816 39 61
+             828:     19(int) CompositeExtract 822 2
+                              Store 827 828
+             829:      6(int) Load 8(invocation)
+             830:     78(ptr) AccessChain 27(data) 39 39
+             831:   20(ivec4) Load 830
+             832:  634(bvec4) SLessThan 831 633
+             833:  634(bvec4) GroupNonUniformLogicalXor 35 ClusteredReduce 832 34
+             834:   20(ivec4) Select 833 637 633
+             835:     78(ptr) AccessChain 27(data) 829 39
+                              Store 835 834
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out
index 1406bd1..828ce61 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out
@@ -1,7 +1,7 @@
 spv.subgroupExtendedTypesArithmetic.comp
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 3665
+// Id's are bound by 4218
 
                               Capability Shader
                               Capability Float16
@@ -59,7 +59,7 @@
                               Decorate 31(Buffers) Block
                               Decorate 34(data) DescriptorSet 0
                               Decorate 34(data) Binding 0
-                              Decorate 3664 BuiltIn WorkgroupSize
+                              Decorate 4217 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -94,40 +94,41 @@
               46:     36(int) Constant 1
               47:             TypeVector 17(int8_t) 2
               48:             TypePointer StorageBuffer 18(i8vec4)
-              57:     36(int) Constant 2
-              58:             TypeVector 17(int8_t) 3
-              67:     36(int) Constant 3
-             593:             TypePointer StorageBuffer 19(int8_t)
-             599:             TypeVector 19(int8_t) 2
-             600:             TypePointer StorageBuffer 20(i8vec4)
-             609:             TypeVector 19(int8_t) 3
-            1143:             TypePointer StorageBuffer 21(int16_t)
-            1149:             TypeVector 21(int16_t) 2
-            1150:             TypePointer StorageBuffer 22(i16vec4)
-            1159:             TypeVector 21(int16_t) 3
-            1693:             TypePointer StorageBuffer 23(int16_t)
-            1699:             TypeVector 23(int16_t) 2
-            1700:             TypePointer StorageBuffer 24(i16vec4)
-            1709:             TypeVector 23(int16_t) 3
-            2243:     36(int) Constant 4
-            2244:             TypePointer StorageBuffer 25(int64_t)
-            2250:             TypeVector 25(int64_t) 2
-            2251:             TypePointer StorageBuffer 26(i64vec4)
-            2260:             TypeVector 25(int64_t) 3
-            2794:     36(int) Constant 5
-            2795:             TypePointer StorageBuffer 27(int64_t)
-            2801:             TypeVector 27(int64_t) 2
-            2802:             TypePointer StorageBuffer 28(i64vec4)
-            2811:             TypeVector 27(int64_t) 3
-            3345:     36(int) Constant 6
-            3346:             TypePointer StorageBuffer 29(float16_t)
-            3352:             TypeVector 29(float16_t) 2
-            3353:             TypePointer StorageBuffer 30(f16vec4)
-            3362:             TypeVector 29(float16_t) 3
-            3661:             TypeVector 6(int) 3
-            3662:      6(int) Constant 8
-            3663:      6(int) Constant 1
-            3664: 3661(ivec3) ConstantComposite 3662 3663 3663
+              55:      6(int) Constant 1
+              59:     36(int) Constant 2
+              60:             TypeVector 17(int8_t) 3
+              69:      6(int) Constant 2
+              73:     36(int) Constant 3
+             679:             TypePointer StorageBuffer 19(int8_t)
+             685:             TypeVector 19(int8_t) 2
+             686:             TypePointer StorageBuffer 20(i8vec4)
+             696:             TypeVector 19(int8_t) 3
+            1313:             TypePointer StorageBuffer 21(int16_t)
+            1319:             TypeVector 21(int16_t) 2
+            1320:             TypePointer StorageBuffer 22(i16vec4)
+            1330:             TypeVector 21(int16_t) 3
+            1947:             TypePointer StorageBuffer 23(int16_t)
+            1953:             TypeVector 23(int16_t) 2
+            1954:             TypePointer StorageBuffer 24(i16vec4)
+            1964:             TypeVector 23(int16_t) 3
+            2581:     36(int) Constant 4
+            2582:             TypePointer StorageBuffer 25(int64_t)
+            2588:             TypeVector 25(int64_t) 2
+            2589:             TypePointer StorageBuffer 26(i64vec4)
+            2599:             TypeVector 25(int64_t) 3
+            3216:     36(int) Constant 5
+            3217:             TypePointer StorageBuffer 27(int64_t)
+            3223:             TypeVector 27(int64_t) 2
+            3224:             TypePointer StorageBuffer 28(i64vec4)
+            3234:             TypeVector 27(int64_t) 3
+            3851:     36(int) Constant 6
+            3852:             TypePointer StorageBuffer 29(float16_t)
+            3858:             TypeVector 29(float16_t) 2
+            3859:             TypePointer StorageBuffer 30(f16vec4)
+            3869:             TypeVector 29(float16_t) 3
+            4215:             TypeVector 6(int) 3
+            4216:      6(int) Constant 8
+            4217: 4215(ivec3) ConstantComposite 4216 55 55
          4(main):           2 Function None 3
                5:             Label
    8(invocation):      7(ptr) Variable Function
@@ -147,4134 +148,5100 @@
               50:  18(i8vec4) Load 49
               51:  47(i8vec2) VectorShuffle 50 50 0 1
               52:  47(i8vec2) GroupNonUniformIAdd 42 Reduce 51
-              53:     48(ptr) AccessChain 34(data) 45 37
-              54:  18(i8vec4) Load 53
-              55:  18(i8vec4) VectorShuffle 54 52 4 5 2 3
-                              Store 53 55
-              56:      6(int) Load 8(invocation)
-              59:     48(ptr) AccessChain 34(data) 57 37
-              60:  18(i8vec4) Load 59
-              61:  58(i8vec3) VectorShuffle 60 60 0 1 2
-              62:  58(i8vec3) GroupNonUniformIAdd 42 Reduce 61
-              63:     48(ptr) AccessChain 34(data) 56 37
-              64:  18(i8vec4) Load 63
-              65:  18(i8vec4) VectorShuffle 64 62 4 5 6 3
-                              Store 63 65
-              66:      6(int) Load 8(invocation)
-              68:     48(ptr) AccessChain 34(data) 67 37
-              69:  18(i8vec4) Load 68
-              70:  18(i8vec4) GroupNonUniformIAdd 42 Reduce 69
-              71:     48(ptr) AccessChain 34(data) 66 37
-                              Store 71 70
+              53:     39(ptr) AccessChain 34(data) 45 37 38
+              54:  17(int8_t) CompositeExtract 52 0
+                              Store 53 54
+              56:     39(ptr) AccessChain 34(data) 45 37 55
+              57:  17(int8_t) CompositeExtract 52 1
+                              Store 56 57
+              58:      6(int) Load 8(invocation)
+              61:     48(ptr) AccessChain 34(data) 59 37
+              62:  18(i8vec4) Load 61
+              63:  60(i8vec3) VectorShuffle 62 62 0 1 2
+              64:  60(i8vec3) GroupNonUniformIAdd 42 Reduce 63
+              65:     39(ptr) AccessChain 34(data) 58 37 38
+              66:  17(int8_t) CompositeExtract 64 0
+                              Store 65 66
+              67:     39(ptr) AccessChain 34(data) 58 37 55
+              68:  17(int8_t) CompositeExtract 64 1
+                              Store 67 68
+              70:     39(ptr) AccessChain 34(data) 58 37 69
+              71:  17(int8_t) CompositeExtract 64 2
+                              Store 70 71
               72:      6(int) Load 8(invocation)
-              73:     39(ptr) AccessChain 34(data) 37 37 38
-              74:  17(int8_t) Load 73
-              75:  17(int8_t) GroupNonUniformIMul 42 Reduce 74
-              76:     39(ptr) AccessChain 34(data) 72 37 38
-                              Store 76 75
-              77:      6(int) Load 8(invocation)
-              78:     48(ptr) AccessChain 34(data) 46 37
-              79:  18(i8vec4) Load 78
-              80:  47(i8vec2) VectorShuffle 79 79 0 1
-              81:  47(i8vec2) GroupNonUniformIMul 42 Reduce 80
-              82:     48(ptr) AccessChain 34(data) 77 37
-              83:  18(i8vec4) Load 82
-              84:  18(i8vec4) VectorShuffle 83 81 4 5 2 3
-                              Store 82 84
-              85:      6(int) Load 8(invocation)
-              86:     48(ptr) AccessChain 34(data) 57 37
-              87:  18(i8vec4) Load 86
-              88:  58(i8vec3) VectorShuffle 87 87 0 1 2
-              89:  58(i8vec3) GroupNonUniformIMul 42 Reduce 88
-              90:     48(ptr) AccessChain 34(data) 85 37
-              91:  18(i8vec4) Load 90
-              92:  18(i8vec4) VectorShuffle 91 89 4 5 6 3
-                              Store 90 92
-              93:      6(int) Load 8(invocation)
-              94:     48(ptr) AccessChain 34(data) 67 37
-              95:  18(i8vec4) Load 94
-              96:  18(i8vec4) GroupNonUniformIMul 42 Reduce 95
-              97:     48(ptr) AccessChain 34(data) 93 37
-                              Store 97 96
-              98:      6(int) Load 8(invocation)
-              99:     39(ptr) AccessChain 34(data) 37 37 38
-             100:  17(int8_t) Load 99
-             101:  17(int8_t) GroupNonUniformSMin 42 Reduce 100
-             102:     39(ptr) AccessChain 34(data) 98 37 38
-                              Store 102 101
+              74:     48(ptr) AccessChain 34(data) 73 37
+              75:  18(i8vec4) Load 74
+              76:  18(i8vec4) GroupNonUniformIAdd 42 Reduce 75
+              77:     48(ptr) AccessChain 34(data) 72 37
+                              Store 77 76
+              78:      6(int) Load 8(invocation)
+              79:     39(ptr) AccessChain 34(data) 37 37 38
+              80:  17(int8_t) Load 79
+              81:  17(int8_t) GroupNonUniformIMul 42 Reduce 80
+              82:     39(ptr) AccessChain 34(data) 78 37 38
+                              Store 82 81
+              83:      6(int) Load 8(invocation)
+              84:     48(ptr) AccessChain 34(data) 46 37
+              85:  18(i8vec4) Load 84
+              86:  47(i8vec2) VectorShuffle 85 85 0 1
+              87:  47(i8vec2) GroupNonUniformIMul 42 Reduce 86
+              88:     39(ptr) AccessChain 34(data) 83 37 38
+              89:  17(int8_t) CompositeExtract 87 0
+                              Store 88 89
+              90:     39(ptr) AccessChain 34(data) 83 37 55
+              91:  17(int8_t) CompositeExtract 87 1
+                              Store 90 91
+              92:      6(int) Load 8(invocation)
+              93:     48(ptr) AccessChain 34(data) 59 37
+              94:  18(i8vec4) Load 93
+              95:  60(i8vec3) VectorShuffle 94 94 0 1 2
+              96:  60(i8vec3) GroupNonUniformIMul 42 Reduce 95
+              97:     39(ptr) AccessChain 34(data) 92 37 38
+              98:  17(int8_t) CompositeExtract 96 0
+                              Store 97 98
+              99:     39(ptr) AccessChain 34(data) 92 37 55
+             100:  17(int8_t) CompositeExtract 96 1
+                              Store 99 100
+             101:     39(ptr) AccessChain 34(data) 92 37 69
+             102:  17(int8_t) CompositeExtract 96 2
+                              Store 101 102
              103:      6(int) Load 8(invocation)
-             104:     48(ptr) AccessChain 34(data) 46 37
+             104:     48(ptr) AccessChain 34(data) 73 37
              105:  18(i8vec4) Load 104
-             106:  47(i8vec2) VectorShuffle 105 105 0 1
-             107:  47(i8vec2) GroupNonUniformSMin 42 Reduce 106
-             108:     48(ptr) AccessChain 34(data) 103 37
-             109:  18(i8vec4) Load 108
-             110:  18(i8vec4) VectorShuffle 109 107 4 5 2 3
-                              Store 108 110
-             111:      6(int) Load 8(invocation)
-             112:     48(ptr) AccessChain 34(data) 57 37
-             113:  18(i8vec4) Load 112
-             114:  58(i8vec3) VectorShuffle 113 113 0 1 2
-             115:  58(i8vec3) GroupNonUniformSMin 42 Reduce 114
-             116:     48(ptr) AccessChain 34(data) 111 37
-             117:  18(i8vec4) Load 116
-             118:  18(i8vec4) VectorShuffle 117 115 4 5 6 3
-                              Store 116 118
-             119:      6(int) Load 8(invocation)
-             120:     48(ptr) AccessChain 34(data) 67 37
-             121:  18(i8vec4) Load 120
-             122:  18(i8vec4) GroupNonUniformSMin 42 Reduce 121
-             123:     48(ptr) AccessChain 34(data) 119 37
-                              Store 123 122
-             124:      6(int) Load 8(invocation)
-             125:     39(ptr) AccessChain 34(data) 37 37 38
-             126:  17(int8_t) Load 125
-             127:  17(int8_t) GroupNonUniformSMax 42 Reduce 126
-             128:     39(ptr) AccessChain 34(data) 124 37 38
-                              Store 128 127
-             129:      6(int) Load 8(invocation)
-             130:     48(ptr) AccessChain 34(data) 46 37
-             131:  18(i8vec4) Load 130
-             132:  47(i8vec2) VectorShuffle 131 131 0 1
-             133:  47(i8vec2) GroupNonUniformSMax 42 Reduce 132
-             134:     48(ptr) AccessChain 34(data) 129 37
+             106:  18(i8vec4) GroupNonUniformIMul 42 Reduce 105
+             107:     48(ptr) AccessChain 34(data) 103 37
+                              Store 107 106
+             108:      6(int) Load 8(invocation)
+             109:     39(ptr) AccessChain 34(data) 37 37 38
+             110:  17(int8_t) Load 109
+             111:  17(int8_t) GroupNonUniformSMin 42 Reduce 110
+             112:     39(ptr) AccessChain 34(data) 108 37 38
+                              Store 112 111
+             113:      6(int) Load 8(invocation)
+             114:     48(ptr) AccessChain 34(data) 46 37
+             115:  18(i8vec4) Load 114
+             116:  47(i8vec2) VectorShuffle 115 115 0 1
+             117:  47(i8vec2) GroupNonUniformSMin 42 Reduce 116
+             118:     39(ptr) AccessChain 34(data) 113 37 38
+             119:  17(int8_t) CompositeExtract 117 0
+                              Store 118 119
+             120:     39(ptr) AccessChain 34(data) 113 37 55
+             121:  17(int8_t) CompositeExtract 117 1
+                              Store 120 121
+             122:      6(int) Load 8(invocation)
+             123:     48(ptr) AccessChain 34(data) 59 37
+             124:  18(i8vec4) Load 123
+             125:  60(i8vec3) VectorShuffle 124 124 0 1 2
+             126:  60(i8vec3) GroupNonUniformSMin 42 Reduce 125
+             127:     39(ptr) AccessChain 34(data) 122 37 38
+             128:  17(int8_t) CompositeExtract 126 0
+                              Store 127 128
+             129:     39(ptr) AccessChain 34(data) 122 37 55
+             130:  17(int8_t) CompositeExtract 126 1
+                              Store 129 130
+             131:     39(ptr) AccessChain 34(data) 122 37 69
+             132:  17(int8_t) CompositeExtract 126 2
+                              Store 131 132
+             133:      6(int) Load 8(invocation)
+             134:     48(ptr) AccessChain 34(data) 73 37
              135:  18(i8vec4) Load 134
-             136:  18(i8vec4) VectorShuffle 135 133 4 5 2 3
-                              Store 134 136
-             137:      6(int) Load 8(invocation)
-             138:     48(ptr) AccessChain 34(data) 57 37
-             139:  18(i8vec4) Load 138
-             140:  58(i8vec3) VectorShuffle 139 139 0 1 2
-             141:  58(i8vec3) GroupNonUniformSMax 42 Reduce 140
-             142:     48(ptr) AccessChain 34(data) 137 37
-             143:  18(i8vec4) Load 142
-             144:  18(i8vec4) VectorShuffle 143 141 4 5 6 3
-                              Store 142 144
-             145:      6(int) Load 8(invocation)
-             146:     48(ptr) AccessChain 34(data) 67 37
-             147:  18(i8vec4) Load 146
-             148:  18(i8vec4) GroupNonUniformSMax 42 Reduce 147
-             149:     48(ptr) AccessChain 34(data) 145 37
-                              Store 149 148
-             150:      6(int) Load 8(invocation)
-             151:     39(ptr) AccessChain 34(data) 37 37 38
-             152:  17(int8_t) Load 151
-             153:  17(int8_t) GroupNonUniformBitwiseAnd 42 Reduce 152
-             154:     39(ptr) AccessChain 34(data) 150 37 38
-                              Store 154 153
-             155:      6(int) Load 8(invocation)
-             156:     48(ptr) AccessChain 34(data) 46 37
-             157:  18(i8vec4) Load 156
-             158:  47(i8vec2) VectorShuffle 157 157 0 1
-             159:  47(i8vec2) GroupNonUniformBitwiseAnd 42 Reduce 158
-             160:     48(ptr) AccessChain 34(data) 155 37
-             161:  18(i8vec4) Load 160
-             162:  18(i8vec4) VectorShuffle 161 159 4 5 2 3
-                              Store 160 162
+             136:  18(i8vec4) GroupNonUniformSMin 42 Reduce 135
+             137:     48(ptr) AccessChain 34(data) 133 37
+                              Store 137 136
+             138:      6(int) Load 8(invocation)
+             139:     39(ptr) AccessChain 34(data) 37 37 38
+             140:  17(int8_t) Load 139
+             141:  17(int8_t) GroupNonUniformSMax 42 Reduce 140
+             142:     39(ptr) AccessChain 34(data) 138 37 38
+                              Store 142 141
+             143:      6(int) Load 8(invocation)
+             144:     48(ptr) AccessChain 34(data) 46 37
+             145:  18(i8vec4) Load 144
+             146:  47(i8vec2) VectorShuffle 145 145 0 1
+             147:  47(i8vec2) GroupNonUniformSMax 42 Reduce 146
+             148:     39(ptr) AccessChain 34(data) 143 37 38
+             149:  17(int8_t) CompositeExtract 147 0
+                              Store 148 149
+             150:     39(ptr) AccessChain 34(data) 143 37 55
+             151:  17(int8_t) CompositeExtract 147 1
+                              Store 150 151
+             152:      6(int) Load 8(invocation)
+             153:     48(ptr) AccessChain 34(data) 59 37
+             154:  18(i8vec4) Load 153
+             155:  60(i8vec3) VectorShuffle 154 154 0 1 2
+             156:  60(i8vec3) GroupNonUniformSMax 42 Reduce 155
+             157:     39(ptr) AccessChain 34(data) 152 37 38
+             158:  17(int8_t) CompositeExtract 156 0
+                              Store 157 158
+             159:     39(ptr) AccessChain 34(data) 152 37 55
+             160:  17(int8_t) CompositeExtract 156 1
+                              Store 159 160
+             161:     39(ptr) AccessChain 34(data) 152 37 69
+             162:  17(int8_t) CompositeExtract 156 2
+                              Store 161 162
              163:      6(int) Load 8(invocation)
-             164:     48(ptr) AccessChain 34(data) 57 37
+             164:     48(ptr) AccessChain 34(data) 73 37
              165:  18(i8vec4) Load 164
-             166:  58(i8vec3) VectorShuffle 165 165 0 1 2
-             167:  58(i8vec3) GroupNonUniformBitwiseAnd 42 Reduce 166
-             168:     48(ptr) AccessChain 34(data) 163 37
-             169:  18(i8vec4) Load 168
-             170:  18(i8vec4) VectorShuffle 169 167 4 5 6 3
-                              Store 168 170
-             171:      6(int) Load 8(invocation)
-             172:     48(ptr) AccessChain 34(data) 67 37
-             173:  18(i8vec4) Load 172
-             174:  18(i8vec4) GroupNonUniformBitwiseAnd 42 Reduce 173
-             175:     48(ptr) AccessChain 34(data) 171 37
-                              Store 175 174
-             176:      6(int) Load 8(invocation)
-             177:     39(ptr) AccessChain 34(data) 37 37 38
-             178:  17(int8_t) Load 177
-             179:  17(int8_t) GroupNonUniformBitwiseOr 42 Reduce 178
-             180:     39(ptr) AccessChain 34(data) 176 37 38
-                              Store 180 179
-             181:      6(int) Load 8(invocation)
-             182:     48(ptr) AccessChain 34(data) 46 37
-             183:  18(i8vec4) Load 182
-             184:  47(i8vec2) VectorShuffle 183 183 0 1
-             185:  47(i8vec2) GroupNonUniformBitwiseOr 42 Reduce 184
-             186:     48(ptr) AccessChain 34(data) 181 37
-             187:  18(i8vec4) Load 186
-             188:  18(i8vec4) VectorShuffle 187 185 4 5 2 3
-                              Store 186 188
-             189:      6(int) Load 8(invocation)
-             190:     48(ptr) AccessChain 34(data) 57 37
-             191:  18(i8vec4) Load 190
-             192:  58(i8vec3) VectorShuffle 191 191 0 1 2
-             193:  58(i8vec3) GroupNonUniformBitwiseOr 42 Reduce 192
-             194:     48(ptr) AccessChain 34(data) 189 37
+             166:  18(i8vec4) GroupNonUniformSMax 42 Reduce 165
+             167:     48(ptr) AccessChain 34(data) 163 37
+                              Store 167 166
+             168:      6(int) Load 8(invocation)
+             169:     39(ptr) AccessChain 34(data) 37 37 38
+             170:  17(int8_t) Load 169
+             171:  17(int8_t) GroupNonUniformBitwiseAnd 42 Reduce 170
+             172:     39(ptr) AccessChain 34(data) 168 37 38
+                              Store 172 171
+             173:      6(int) Load 8(invocation)
+             174:     48(ptr) AccessChain 34(data) 46 37
+             175:  18(i8vec4) Load 174
+             176:  47(i8vec2) VectorShuffle 175 175 0 1
+             177:  47(i8vec2) GroupNonUniformBitwiseAnd 42 Reduce 176
+             178:     39(ptr) AccessChain 34(data) 173 37 38
+             179:  17(int8_t) CompositeExtract 177 0
+                              Store 178 179
+             180:     39(ptr) AccessChain 34(data) 173 37 55
+             181:  17(int8_t) CompositeExtract 177 1
+                              Store 180 181
+             182:      6(int) Load 8(invocation)
+             183:     48(ptr) AccessChain 34(data) 59 37
+             184:  18(i8vec4) Load 183
+             185:  60(i8vec3) VectorShuffle 184 184 0 1 2
+             186:  60(i8vec3) GroupNonUniformBitwiseAnd 42 Reduce 185
+             187:     39(ptr) AccessChain 34(data) 182 37 38
+             188:  17(int8_t) CompositeExtract 186 0
+                              Store 187 188
+             189:     39(ptr) AccessChain 34(data) 182 37 55
+             190:  17(int8_t) CompositeExtract 186 1
+                              Store 189 190
+             191:     39(ptr) AccessChain 34(data) 182 37 69
+             192:  17(int8_t) CompositeExtract 186 2
+                              Store 191 192
+             193:      6(int) Load 8(invocation)
+             194:     48(ptr) AccessChain 34(data) 73 37
              195:  18(i8vec4) Load 194
-             196:  18(i8vec4) VectorShuffle 195 193 4 5 6 3
-                              Store 194 196
-             197:      6(int) Load 8(invocation)
-             198:     48(ptr) AccessChain 34(data) 67 37
-             199:  18(i8vec4) Load 198
-             200:  18(i8vec4) GroupNonUniformBitwiseOr 42 Reduce 199
-             201:     48(ptr) AccessChain 34(data) 197 37
-                              Store 201 200
-             202:      6(int) Load 8(invocation)
-             203:     39(ptr) AccessChain 34(data) 37 37 38
-             204:  17(int8_t) Load 203
-             205:  17(int8_t) GroupNonUniformBitwiseXor 42 Reduce 204
-             206:     39(ptr) AccessChain 34(data) 202 37 38
-                              Store 206 205
-             207:      6(int) Load 8(invocation)
-             208:     48(ptr) AccessChain 34(data) 46 37
-             209:  18(i8vec4) Load 208
-             210:  47(i8vec2) VectorShuffle 209 209 0 1
-             211:  47(i8vec2) GroupNonUniformBitwiseXor 42 Reduce 210
-             212:     48(ptr) AccessChain 34(data) 207 37
-             213:  18(i8vec4) Load 212
-             214:  18(i8vec4) VectorShuffle 213 211 4 5 2 3
-                              Store 212 214
-             215:      6(int) Load 8(invocation)
-             216:     48(ptr) AccessChain 34(data) 57 37
-             217:  18(i8vec4) Load 216
-             218:  58(i8vec3) VectorShuffle 217 217 0 1 2
-             219:  58(i8vec3) GroupNonUniformBitwiseXor 42 Reduce 218
-             220:     48(ptr) AccessChain 34(data) 215 37
-             221:  18(i8vec4) Load 220
-             222:  18(i8vec4) VectorShuffle 221 219 4 5 6 3
-                              Store 220 222
+             196:  18(i8vec4) GroupNonUniformBitwiseAnd 42 Reduce 195
+             197:     48(ptr) AccessChain 34(data) 193 37
+                              Store 197 196
+             198:      6(int) Load 8(invocation)
+             199:     39(ptr) AccessChain 34(data) 37 37 38
+             200:  17(int8_t) Load 199
+             201:  17(int8_t) GroupNonUniformBitwiseOr 42 Reduce 200
+             202:     39(ptr) AccessChain 34(data) 198 37 38
+                              Store 202 201
+             203:      6(int) Load 8(invocation)
+             204:     48(ptr) AccessChain 34(data) 46 37
+             205:  18(i8vec4) Load 204
+             206:  47(i8vec2) VectorShuffle 205 205 0 1
+             207:  47(i8vec2) GroupNonUniformBitwiseOr 42 Reduce 206
+             208:     39(ptr) AccessChain 34(data) 203 37 38
+             209:  17(int8_t) CompositeExtract 207 0
+                              Store 208 209
+             210:     39(ptr) AccessChain 34(data) 203 37 55
+             211:  17(int8_t) CompositeExtract 207 1
+                              Store 210 211
+             212:      6(int) Load 8(invocation)
+             213:     48(ptr) AccessChain 34(data) 59 37
+             214:  18(i8vec4) Load 213
+             215:  60(i8vec3) VectorShuffle 214 214 0 1 2
+             216:  60(i8vec3) GroupNonUniformBitwiseOr 42 Reduce 215
+             217:     39(ptr) AccessChain 34(data) 212 37 38
+             218:  17(int8_t) CompositeExtract 216 0
+                              Store 217 218
+             219:     39(ptr) AccessChain 34(data) 212 37 55
+             220:  17(int8_t) CompositeExtract 216 1
+                              Store 219 220
+             221:     39(ptr) AccessChain 34(data) 212 37 69
+             222:  17(int8_t) CompositeExtract 216 2
+                              Store 221 222
              223:      6(int) Load 8(invocation)
-             224:     48(ptr) AccessChain 34(data) 67 37
+             224:     48(ptr) AccessChain 34(data) 73 37
              225:  18(i8vec4) Load 224
-             226:  18(i8vec4) GroupNonUniformBitwiseXor 42 Reduce 225
+             226:  18(i8vec4) GroupNonUniformBitwiseOr 42 Reduce 225
              227:     48(ptr) AccessChain 34(data) 223 37
                               Store 227 226
              228:      6(int) Load 8(invocation)
              229:     39(ptr) AccessChain 34(data) 37 37 38
              230:  17(int8_t) Load 229
-             231:  17(int8_t) GroupNonUniformIAdd 42 InclusiveScan 230
+             231:  17(int8_t) GroupNonUniformBitwiseXor 42 Reduce 230
              232:     39(ptr) AccessChain 34(data) 228 37 38
                               Store 232 231
              233:      6(int) Load 8(invocation)
              234:     48(ptr) AccessChain 34(data) 46 37
              235:  18(i8vec4) Load 234
              236:  47(i8vec2) VectorShuffle 235 235 0 1
-             237:  47(i8vec2) GroupNonUniformIAdd 42 InclusiveScan 236
-             238:     48(ptr) AccessChain 34(data) 233 37
-             239:  18(i8vec4) Load 238
-             240:  18(i8vec4) VectorShuffle 239 237 4 5 2 3
-                              Store 238 240
-             241:      6(int) Load 8(invocation)
-             242:     48(ptr) AccessChain 34(data) 57 37
-             243:  18(i8vec4) Load 242
-             244:  58(i8vec3) VectorShuffle 243 243 0 1 2
-             245:  58(i8vec3) GroupNonUniformIAdd 42 InclusiveScan 244
-             246:     48(ptr) AccessChain 34(data) 241 37
-             247:  18(i8vec4) Load 246
-             248:  18(i8vec4) VectorShuffle 247 245 4 5 6 3
-                              Store 246 248
-             249:      6(int) Load 8(invocation)
-             250:     48(ptr) AccessChain 34(data) 67 37
-             251:  18(i8vec4) Load 250
-             252:  18(i8vec4) GroupNonUniformIAdd 42 InclusiveScan 251
-             253:     48(ptr) AccessChain 34(data) 249 37
-                              Store 253 252
-             254:      6(int) Load 8(invocation)
-             255:     39(ptr) AccessChain 34(data) 37 37 38
-             256:  17(int8_t) Load 255
-             257:  17(int8_t) GroupNonUniformIMul 42 InclusiveScan 256
-             258:     39(ptr) AccessChain 34(data) 254 37 38
-                              Store 258 257
-             259:      6(int) Load 8(invocation)
-             260:     48(ptr) AccessChain 34(data) 46 37
-             261:  18(i8vec4) Load 260
-             262:  47(i8vec2) VectorShuffle 261 261 0 1
-             263:  47(i8vec2) GroupNonUniformIMul 42 InclusiveScan 262
-             264:     48(ptr) AccessChain 34(data) 259 37
+             237:  47(i8vec2) GroupNonUniformBitwiseXor 42 Reduce 236
+             238:     39(ptr) AccessChain 34(data) 233 37 38
+             239:  17(int8_t) CompositeExtract 237 0
+                              Store 238 239
+             240:     39(ptr) AccessChain 34(data) 233 37 55
+             241:  17(int8_t) CompositeExtract 237 1
+                              Store 240 241
+             242:      6(int) Load 8(invocation)
+             243:     48(ptr) AccessChain 34(data) 59 37
+             244:  18(i8vec4) Load 243
+             245:  60(i8vec3) VectorShuffle 244 244 0 1 2
+             246:  60(i8vec3) GroupNonUniformBitwiseXor 42 Reduce 245
+             247:     39(ptr) AccessChain 34(data) 242 37 38
+             248:  17(int8_t) CompositeExtract 246 0
+                              Store 247 248
+             249:     39(ptr) AccessChain 34(data) 242 37 55
+             250:  17(int8_t) CompositeExtract 246 1
+                              Store 249 250
+             251:     39(ptr) AccessChain 34(data) 242 37 69
+             252:  17(int8_t) CompositeExtract 246 2
+                              Store 251 252
+             253:      6(int) Load 8(invocation)
+             254:     48(ptr) AccessChain 34(data) 73 37
+             255:  18(i8vec4) Load 254
+             256:  18(i8vec4) GroupNonUniformBitwiseXor 42 Reduce 255
+             257:     48(ptr) AccessChain 34(data) 253 37
+                              Store 257 256
+             258:      6(int) Load 8(invocation)
+             259:     39(ptr) AccessChain 34(data) 37 37 38
+             260:  17(int8_t) Load 259
+             261:  17(int8_t) GroupNonUniformIAdd 42 InclusiveScan 260
+             262:     39(ptr) AccessChain 34(data) 258 37 38
+                              Store 262 261
+             263:      6(int) Load 8(invocation)
+             264:     48(ptr) AccessChain 34(data) 46 37
              265:  18(i8vec4) Load 264
-             266:  18(i8vec4) VectorShuffle 265 263 4 5 2 3
-                              Store 264 266
-             267:      6(int) Load 8(invocation)
-             268:     48(ptr) AccessChain 34(data) 57 37
-             269:  18(i8vec4) Load 268
-             270:  58(i8vec3) VectorShuffle 269 269 0 1 2
-             271:  58(i8vec3) GroupNonUniformIMul 42 InclusiveScan 270
-             272:     48(ptr) AccessChain 34(data) 267 37
-             273:  18(i8vec4) Load 272
-             274:  18(i8vec4) VectorShuffle 273 271 4 5 6 3
-                              Store 272 274
-             275:      6(int) Load 8(invocation)
-             276:     48(ptr) AccessChain 34(data) 67 37
-             277:  18(i8vec4) Load 276
-             278:  18(i8vec4) GroupNonUniformIMul 42 InclusiveScan 277
-             279:     48(ptr) AccessChain 34(data) 275 37
-                              Store 279 278
-             280:      6(int) Load 8(invocation)
-             281:     39(ptr) AccessChain 34(data) 37 37 38
-             282:  17(int8_t) Load 281
-             283:  17(int8_t) GroupNonUniformSMin 42 InclusiveScan 282
-             284:     39(ptr) AccessChain 34(data) 280 37 38
-                              Store 284 283
-             285:      6(int) Load 8(invocation)
-             286:     48(ptr) AccessChain 34(data) 46 37
-             287:  18(i8vec4) Load 286
-             288:  47(i8vec2) VectorShuffle 287 287 0 1
-             289:  47(i8vec2) GroupNonUniformSMin 42 InclusiveScan 288
-             290:     48(ptr) AccessChain 34(data) 285 37
-             291:  18(i8vec4) Load 290
-             292:  18(i8vec4) VectorShuffle 291 289 4 5 2 3
-                              Store 290 292
+             266:  47(i8vec2) VectorShuffle 265 265 0 1
+             267:  47(i8vec2) GroupNonUniformIAdd 42 InclusiveScan 266
+             268:     39(ptr) AccessChain 34(data) 263 37 38
+             269:  17(int8_t) CompositeExtract 267 0
+                              Store 268 269
+             270:     39(ptr) AccessChain 34(data) 263 37 55
+             271:  17(int8_t) CompositeExtract 267 1
+                              Store 270 271
+             272:      6(int) Load 8(invocation)
+             273:     48(ptr) AccessChain 34(data) 59 37
+             274:  18(i8vec4) Load 273
+             275:  60(i8vec3) VectorShuffle 274 274 0 1 2
+             276:  60(i8vec3) GroupNonUniformIAdd 42 InclusiveScan 275
+             277:     39(ptr) AccessChain 34(data) 272 37 38
+             278:  17(int8_t) CompositeExtract 276 0
+                              Store 277 278
+             279:     39(ptr) AccessChain 34(data) 272 37 55
+             280:  17(int8_t) CompositeExtract 276 1
+                              Store 279 280
+             281:     39(ptr) AccessChain 34(data) 272 37 69
+             282:  17(int8_t) CompositeExtract 276 2
+                              Store 281 282
+             283:      6(int) Load 8(invocation)
+             284:     48(ptr) AccessChain 34(data) 73 37
+             285:  18(i8vec4) Load 284
+             286:  18(i8vec4) GroupNonUniformIAdd 42 InclusiveScan 285
+             287:     48(ptr) AccessChain 34(data) 283 37
+                              Store 287 286
+             288:      6(int) Load 8(invocation)
+             289:     39(ptr) AccessChain 34(data) 37 37 38
+             290:  17(int8_t) Load 289
+             291:  17(int8_t) GroupNonUniformIMul 42 InclusiveScan 290
+             292:     39(ptr) AccessChain 34(data) 288 37 38
+                              Store 292 291
              293:      6(int) Load 8(invocation)
-             294:     48(ptr) AccessChain 34(data) 57 37
+             294:     48(ptr) AccessChain 34(data) 46 37
              295:  18(i8vec4) Load 294
-             296:  58(i8vec3) VectorShuffle 295 295 0 1 2
-             297:  58(i8vec3) GroupNonUniformSMin 42 InclusiveScan 296
-             298:     48(ptr) AccessChain 34(data) 293 37
-             299:  18(i8vec4) Load 298
-             300:  18(i8vec4) VectorShuffle 299 297 4 5 6 3
-                              Store 298 300
-             301:      6(int) Load 8(invocation)
-             302:     48(ptr) AccessChain 34(data) 67 37
-             303:  18(i8vec4) Load 302
-             304:  18(i8vec4) GroupNonUniformSMin 42 InclusiveScan 303
-             305:     48(ptr) AccessChain 34(data) 301 37
-                              Store 305 304
-             306:      6(int) Load 8(invocation)
-             307:     39(ptr) AccessChain 34(data) 37 37 38
-             308:  17(int8_t) Load 307
-             309:  17(int8_t) GroupNonUniformSMax 42 InclusiveScan 308
-             310:     39(ptr) AccessChain 34(data) 306 37 38
-                              Store 310 309
-             311:      6(int) Load 8(invocation)
-             312:     48(ptr) AccessChain 34(data) 46 37
-             313:  18(i8vec4) Load 312
-             314:  47(i8vec2) VectorShuffle 313 313 0 1
-             315:  47(i8vec2) GroupNonUniformSMax 42 InclusiveScan 314
-             316:     48(ptr) AccessChain 34(data) 311 37
-             317:  18(i8vec4) Load 316
-             318:  18(i8vec4) VectorShuffle 317 315 4 5 2 3
-                              Store 316 318
-             319:      6(int) Load 8(invocation)
-             320:     48(ptr) AccessChain 34(data) 57 37
-             321:  18(i8vec4) Load 320
-             322:  58(i8vec3) VectorShuffle 321 321 0 1 2
-             323:  58(i8vec3) GroupNonUniformSMax 42 InclusiveScan 322
-             324:     48(ptr) AccessChain 34(data) 319 37
+             296:  47(i8vec2) VectorShuffle 295 295 0 1
+             297:  47(i8vec2) GroupNonUniformIMul 42 InclusiveScan 296
+             298:     39(ptr) AccessChain 34(data) 293 37 38
+             299:  17(int8_t) CompositeExtract 297 0
+                              Store 298 299
+             300:     39(ptr) AccessChain 34(data) 293 37 55
+             301:  17(int8_t) CompositeExtract 297 1
+                              Store 300 301
+             302:      6(int) Load 8(invocation)
+             303:     48(ptr) AccessChain 34(data) 59 37
+             304:  18(i8vec4) Load 303
+             305:  60(i8vec3) VectorShuffle 304 304 0 1 2
+             306:  60(i8vec3) GroupNonUniformIMul 42 InclusiveScan 305
+             307:     39(ptr) AccessChain 34(data) 302 37 38
+             308:  17(int8_t) CompositeExtract 306 0
+                              Store 307 308
+             309:     39(ptr) AccessChain 34(data) 302 37 55
+             310:  17(int8_t) CompositeExtract 306 1
+                              Store 309 310
+             311:     39(ptr) AccessChain 34(data) 302 37 69
+             312:  17(int8_t) CompositeExtract 306 2
+                              Store 311 312
+             313:      6(int) Load 8(invocation)
+             314:     48(ptr) AccessChain 34(data) 73 37
+             315:  18(i8vec4) Load 314
+             316:  18(i8vec4) GroupNonUniformIMul 42 InclusiveScan 315
+             317:     48(ptr) AccessChain 34(data) 313 37
+                              Store 317 316
+             318:      6(int) Load 8(invocation)
+             319:     39(ptr) AccessChain 34(data) 37 37 38
+             320:  17(int8_t) Load 319
+             321:  17(int8_t) GroupNonUniformSMin 42 InclusiveScan 320
+             322:     39(ptr) AccessChain 34(data) 318 37 38
+                              Store 322 321
+             323:      6(int) Load 8(invocation)
+             324:     48(ptr) AccessChain 34(data) 46 37
              325:  18(i8vec4) Load 324
-             326:  18(i8vec4) VectorShuffle 325 323 4 5 6 3
-                              Store 324 326
-             327:      6(int) Load 8(invocation)
-             328:     48(ptr) AccessChain 34(data) 67 37
-             329:  18(i8vec4) Load 328
-             330:  18(i8vec4) GroupNonUniformSMax 42 InclusiveScan 329
-             331:     48(ptr) AccessChain 34(data) 327 37
-                              Store 331 330
+             326:  47(i8vec2) VectorShuffle 325 325 0 1
+             327:  47(i8vec2) GroupNonUniformSMin 42 InclusiveScan 326
+             328:     39(ptr) AccessChain 34(data) 323 37 38
+             329:  17(int8_t) CompositeExtract 327 0
+                              Store 328 329
+             330:     39(ptr) AccessChain 34(data) 323 37 55
+             331:  17(int8_t) CompositeExtract 327 1
+                              Store 330 331
              332:      6(int) Load 8(invocation)
-             333:     39(ptr) AccessChain 34(data) 37 37 38
-             334:  17(int8_t) Load 333
-             335:  17(int8_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 334
-             336:     39(ptr) AccessChain 34(data) 332 37 38
-                              Store 336 335
-             337:      6(int) Load 8(invocation)
-             338:     48(ptr) AccessChain 34(data) 46 37
-             339:  18(i8vec4) Load 338
-             340:  47(i8vec2) VectorShuffle 339 339 0 1
-             341:  47(i8vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 340
-             342:     48(ptr) AccessChain 34(data) 337 37
-             343:  18(i8vec4) Load 342
-             344:  18(i8vec4) VectorShuffle 343 341 4 5 2 3
-                              Store 342 344
-             345:      6(int) Load 8(invocation)
-             346:     48(ptr) AccessChain 34(data) 57 37
-             347:  18(i8vec4) Load 346
-             348:  58(i8vec3) VectorShuffle 347 347 0 1 2
-             349:  58(i8vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 348
-             350:     48(ptr) AccessChain 34(data) 345 37
-             351:  18(i8vec4) Load 350
-             352:  18(i8vec4) VectorShuffle 351 349 4 5 6 3
-                              Store 350 352
+             333:     48(ptr) AccessChain 34(data) 59 37
+             334:  18(i8vec4) Load 333
+             335:  60(i8vec3) VectorShuffle 334 334 0 1 2
+             336:  60(i8vec3) GroupNonUniformSMin 42 InclusiveScan 335
+             337:     39(ptr) AccessChain 34(data) 332 37 38
+             338:  17(int8_t) CompositeExtract 336 0
+                              Store 337 338
+             339:     39(ptr) AccessChain 34(data) 332 37 55
+             340:  17(int8_t) CompositeExtract 336 1
+                              Store 339 340
+             341:     39(ptr) AccessChain 34(data) 332 37 69
+             342:  17(int8_t) CompositeExtract 336 2
+                              Store 341 342
+             343:      6(int) Load 8(invocation)
+             344:     48(ptr) AccessChain 34(data) 73 37
+             345:  18(i8vec4) Load 344
+             346:  18(i8vec4) GroupNonUniformSMin 42 InclusiveScan 345
+             347:     48(ptr) AccessChain 34(data) 343 37
+                              Store 347 346
+             348:      6(int) Load 8(invocation)
+             349:     39(ptr) AccessChain 34(data) 37 37 38
+             350:  17(int8_t) Load 349
+             351:  17(int8_t) GroupNonUniformSMax 42 InclusiveScan 350
+             352:     39(ptr) AccessChain 34(data) 348 37 38
+                              Store 352 351
              353:      6(int) Load 8(invocation)
-             354:     48(ptr) AccessChain 34(data) 67 37
+             354:     48(ptr) AccessChain 34(data) 46 37
              355:  18(i8vec4) Load 354
-             356:  18(i8vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 355
-             357:     48(ptr) AccessChain 34(data) 353 37
-                              Store 357 356
-             358:      6(int) Load 8(invocation)
-             359:     39(ptr) AccessChain 34(data) 37 37 38
-             360:  17(int8_t) Load 359
-             361:  17(int8_t) GroupNonUniformBitwiseOr 42 InclusiveScan 360
-             362:     39(ptr) AccessChain 34(data) 358 37 38
-                              Store 362 361
-             363:      6(int) Load 8(invocation)
-             364:     48(ptr) AccessChain 34(data) 46 37
-             365:  18(i8vec4) Load 364
-             366:  47(i8vec2) VectorShuffle 365 365 0 1
-             367:  47(i8vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 366
-             368:     48(ptr) AccessChain 34(data) 363 37
-             369:  18(i8vec4) Load 368
-             370:  18(i8vec4) VectorShuffle 369 367 4 5 2 3
-                              Store 368 370
-             371:      6(int) Load 8(invocation)
-             372:     48(ptr) AccessChain 34(data) 57 37
-             373:  18(i8vec4) Load 372
-             374:  58(i8vec3) VectorShuffle 373 373 0 1 2
-             375:  58(i8vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 374
-             376:     48(ptr) AccessChain 34(data) 371 37
-             377:  18(i8vec4) Load 376
-             378:  18(i8vec4) VectorShuffle 377 375 4 5 6 3
-                              Store 376 378
-             379:      6(int) Load 8(invocation)
-             380:     48(ptr) AccessChain 34(data) 67 37
-             381:  18(i8vec4) Load 380
-             382:  18(i8vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 381
-             383:     48(ptr) AccessChain 34(data) 379 37
-                              Store 383 382
-             384:      6(int) Load 8(invocation)
-             385:     39(ptr) AccessChain 34(data) 37 37 38
-             386:  17(int8_t) Load 385
-             387:  17(int8_t) GroupNonUniformBitwiseXor 42 InclusiveScan 386
-             388:     39(ptr) AccessChain 34(data) 384 37 38
-                              Store 388 387
-             389:      6(int) Load 8(invocation)
-             390:     48(ptr) AccessChain 34(data) 46 37
-             391:  18(i8vec4) Load 390
-             392:  47(i8vec2) VectorShuffle 391 391 0 1
-             393:  47(i8vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 392
-             394:     48(ptr) AccessChain 34(data) 389 37
-             395:  18(i8vec4) Load 394
-             396:  18(i8vec4) VectorShuffle 395 393 4 5 2 3
-                              Store 394 396
-             397:      6(int) Load 8(invocation)
-             398:     48(ptr) AccessChain 34(data) 57 37
-             399:  18(i8vec4) Load 398
-             400:  58(i8vec3) VectorShuffle 399 399 0 1 2
-             401:  58(i8vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 400
-             402:     48(ptr) AccessChain 34(data) 397 37
-             403:  18(i8vec4) Load 402
-             404:  18(i8vec4) VectorShuffle 403 401 4 5 6 3
-                              Store 402 404
-             405:      6(int) Load 8(invocation)
-             406:     48(ptr) AccessChain 34(data) 67 37
-             407:  18(i8vec4) Load 406
-             408:  18(i8vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 407
-             409:     48(ptr) AccessChain 34(data) 405 37
-                              Store 409 408
-             410:      6(int) Load 8(invocation)
-             411:     39(ptr) AccessChain 34(data) 37 37 38
-             412:  17(int8_t) Load 411
-             413:  17(int8_t) GroupNonUniformIAdd 42 ExclusiveScan 412
-             414:     39(ptr) AccessChain 34(data) 410 37 38
-                              Store 414 413
-             415:      6(int) Load 8(invocation)
-             416:     48(ptr) AccessChain 34(data) 46 37
-             417:  18(i8vec4) Load 416
-             418:  47(i8vec2) VectorShuffle 417 417 0 1
-             419:  47(i8vec2) GroupNonUniformIAdd 42 ExclusiveScan 418
-             420:     48(ptr) AccessChain 34(data) 415 37
-             421:  18(i8vec4) Load 420
-             422:  18(i8vec4) VectorShuffle 421 419 4 5 2 3
-                              Store 420 422
-             423:      6(int) Load 8(invocation)
-             424:     48(ptr) AccessChain 34(data) 57 37
-             425:  18(i8vec4) Load 424
-             426:  58(i8vec3) VectorShuffle 425 425 0 1 2
-             427:  58(i8vec3) GroupNonUniformIAdd 42 ExclusiveScan 426
-             428:     48(ptr) AccessChain 34(data) 423 37
-             429:  18(i8vec4) Load 428
-             430:  18(i8vec4) VectorShuffle 429 427 4 5 6 3
-                              Store 428 430
-             431:      6(int) Load 8(invocation)
-             432:     48(ptr) AccessChain 34(data) 67 37
-             433:  18(i8vec4) Load 432
-             434:  18(i8vec4) GroupNonUniformIAdd 42 ExclusiveScan 433
-             435:     48(ptr) AccessChain 34(data) 431 37
-                              Store 435 434
-             436:      6(int) Load 8(invocation)
-             437:     39(ptr) AccessChain 34(data) 37 37 38
-             438:  17(int8_t) Load 437
-             439:  17(int8_t) GroupNonUniformIMul 42 ExclusiveScan 438
-             440:     39(ptr) AccessChain 34(data) 436 37 38
-                              Store 440 439
-             441:      6(int) Load 8(invocation)
-             442:     48(ptr) AccessChain 34(data) 46 37
-             443:  18(i8vec4) Load 442
-             444:  47(i8vec2) VectorShuffle 443 443 0 1
-             445:  47(i8vec2) GroupNonUniformIMul 42 ExclusiveScan 444
-             446:     48(ptr) AccessChain 34(data) 441 37
-             447:  18(i8vec4) Load 446
-             448:  18(i8vec4) VectorShuffle 447 445 4 5 2 3
-                              Store 446 448
-             449:      6(int) Load 8(invocation)
-             450:     48(ptr) AccessChain 34(data) 57 37
-             451:  18(i8vec4) Load 450
-             452:  58(i8vec3) VectorShuffle 451 451 0 1 2
-             453:  58(i8vec3) GroupNonUniformIMul 42 ExclusiveScan 452
-             454:     48(ptr) AccessChain 34(data) 449 37
-             455:  18(i8vec4) Load 454
-             456:  18(i8vec4) VectorShuffle 455 453 4 5 6 3
-                              Store 454 456
-             457:      6(int) Load 8(invocation)
-             458:     48(ptr) AccessChain 34(data) 67 37
-             459:  18(i8vec4) Load 458
-             460:  18(i8vec4) GroupNonUniformIMul 42 ExclusiveScan 459
-             461:     48(ptr) AccessChain 34(data) 457 37
-                              Store 461 460
-             462:      6(int) Load 8(invocation)
-             463:     39(ptr) AccessChain 34(data) 37 37 38
-             464:  17(int8_t) Load 463
-             465:  17(int8_t) GroupNonUniformSMin 42 ExclusiveScan 464
-             466:     39(ptr) AccessChain 34(data) 462 37 38
-                              Store 466 465
-             467:      6(int) Load 8(invocation)
-             468:     48(ptr) AccessChain 34(data) 46 37
-             469:  18(i8vec4) Load 468
-             470:  47(i8vec2) VectorShuffle 469 469 0 1
-             471:  47(i8vec2) GroupNonUniformSMin 42 ExclusiveScan 470
-             472:     48(ptr) AccessChain 34(data) 467 37
-             473:  18(i8vec4) Load 472
-             474:  18(i8vec4) VectorShuffle 473 471 4 5 2 3
-                              Store 472 474
-             475:      6(int) Load 8(invocation)
-             476:     48(ptr) AccessChain 34(data) 57 37
-             477:  18(i8vec4) Load 476
-             478:  58(i8vec3) VectorShuffle 477 477 0 1 2
-             479:  58(i8vec3) GroupNonUniformSMin 42 ExclusiveScan 478
-             480:     48(ptr) AccessChain 34(data) 475 37
-             481:  18(i8vec4) Load 480
-             482:  18(i8vec4) VectorShuffle 481 479 4 5 6 3
-                              Store 480 482
-             483:      6(int) Load 8(invocation)
-             484:     48(ptr) AccessChain 34(data) 67 37
-             485:  18(i8vec4) Load 484
-             486:  18(i8vec4) GroupNonUniformSMin 42 ExclusiveScan 485
-             487:     48(ptr) AccessChain 34(data) 483 37
-                              Store 487 486
-             488:      6(int) Load 8(invocation)
-             489:     39(ptr) AccessChain 34(data) 37 37 38
-             490:  17(int8_t) Load 489
-             491:  17(int8_t) GroupNonUniformSMax 42 ExclusiveScan 490
-             492:     39(ptr) AccessChain 34(data) 488 37 38
-                              Store 492 491
+             356:  47(i8vec2) VectorShuffle 355 355 0 1
+             357:  47(i8vec2) GroupNonUniformSMax 42 InclusiveScan 356
+             358:     39(ptr) AccessChain 34(data) 353 37 38
+             359:  17(int8_t) CompositeExtract 357 0
+                              Store 358 359
+             360:     39(ptr) AccessChain 34(data) 353 37 55
+             361:  17(int8_t) CompositeExtract 357 1
+                              Store 360 361
+             362:      6(int) Load 8(invocation)
+             363:     48(ptr) AccessChain 34(data) 59 37
+             364:  18(i8vec4) Load 363
+             365:  60(i8vec3) VectorShuffle 364 364 0 1 2
+             366:  60(i8vec3) GroupNonUniformSMax 42 InclusiveScan 365
+             367:     39(ptr) AccessChain 34(data) 362 37 38
+             368:  17(int8_t) CompositeExtract 366 0
+                              Store 367 368
+             369:     39(ptr) AccessChain 34(data) 362 37 55
+             370:  17(int8_t) CompositeExtract 366 1
+                              Store 369 370
+             371:     39(ptr) AccessChain 34(data) 362 37 69
+             372:  17(int8_t) CompositeExtract 366 2
+                              Store 371 372
+             373:      6(int) Load 8(invocation)
+             374:     48(ptr) AccessChain 34(data) 73 37
+             375:  18(i8vec4) Load 374
+             376:  18(i8vec4) GroupNonUniformSMax 42 InclusiveScan 375
+             377:     48(ptr) AccessChain 34(data) 373 37
+                              Store 377 376
+             378:      6(int) Load 8(invocation)
+             379:     39(ptr) AccessChain 34(data) 37 37 38
+             380:  17(int8_t) Load 379
+             381:  17(int8_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 380
+             382:     39(ptr) AccessChain 34(data) 378 37 38
+                              Store 382 381
+             383:      6(int) Load 8(invocation)
+             384:     48(ptr) AccessChain 34(data) 46 37
+             385:  18(i8vec4) Load 384
+             386:  47(i8vec2) VectorShuffle 385 385 0 1
+             387:  47(i8vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 386
+             388:     39(ptr) AccessChain 34(data) 383 37 38
+             389:  17(int8_t) CompositeExtract 387 0
+                              Store 388 389
+             390:     39(ptr) AccessChain 34(data) 383 37 55
+             391:  17(int8_t) CompositeExtract 387 1
+                              Store 390 391
+             392:      6(int) Load 8(invocation)
+             393:     48(ptr) AccessChain 34(data) 59 37
+             394:  18(i8vec4) Load 393
+             395:  60(i8vec3) VectorShuffle 394 394 0 1 2
+             396:  60(i8vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 395
+             397:     39(ptr) AccessChain 34(data) 392 37 38
+             398:  17(int8_t) CompositeExtract 396 0
+                              Store 397 398
+             399:     39(ptr) AccessChain 34(data) 392 37 55
+             400:  17(int8_t) CompositeExtract 396 1
+                              Store 399 400
+             401:     39(ptr) AccessChain 34(data) 392 37 69
+             402:  17(int8_t) CompositeExtract 396 2
+                              Store 401 402
+             403:      6(int) Load 8(invocation)
+             404:     48(ptr) AccessChain 34(data) 73 37
+             405:  18(i8vec4) Load 404
+             406:  18(i8vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 405
+             407:     48(ptr) AccessChain 34(data) 403 37
+                              Store 407 406
+             408:      6(int) Load 8(invocation)
+             409:     39(ptr) AccessChain 34(data) 37 37 38
+             410:  17(int8_t) Load 409
+             411:  17(int8_t) GroupNonUniformBitwiseOr 42 InclusiveScan 410
+             412:     39(ptr) AccessChain 34(data) 408 37 38
+                              Store 412 411
+             413:      6(int) Load 8(invocation)
+             414:     48(ptr) AccessChain 34(data) 46 37
+             415:  18(i8vec4) Load 414
+             416:  47(i8vec2) VectorShuffle 415 415 0 1
+             417:  47(i8vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 416
+             418:     39(ptr) AccessChain 34(data) 413 37 38
+             419:  17(int8_t) CompositeExtract 417 0
+                              Store 418 419
+             420:     39(ptr) AccessChain 34(data) 413 37 55
+             421:  17(int8_t) CompositeExtract 417 1
+                              Store 420 421
+             422:      6(int) Load 8(invocation)
+             423:     48(ptr) AccessChain 34(data) 59 37
+             424:  18(i8vec4) Load 423
+             425:  60(i8vec3) VectorShuffle 424 424 0 1 2
+             426:  60(i8vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 425
+             427:     39(ptr) AccessChain 34(data) 422 37 38
+             428:  17(int8_t) CompositeExtract 426 0
+                              Store 427 428
+             429:     39(ptr) AccessChain 34(data) 422 37 55
+             430:  17(int8_t) CompositeExtract 426 1
+                              Store 429 430
+             431:     39(ptr) AccessChain 34(data) 422 37 69
+             432:  17(int8_t) CompositeExtract 426 2
+                              Store 431 432
+             433:      6(int) Load 8(invocation)
+             434:     48(ptr) AccessChain 34(data) 73 37
+             435:  18(i8vec4) Load 434
+             436:  18(i8vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 435
+             437:     48(ptr) AccessChain 34(data) 433 37
+                              Store 437 436
+             438:      6(int) Load 8(invocation)
+             439:     39(ptr) AccessChain 34(data) 37 37 38
+             440:  17(int8_t) Load 439
+             441:  17(int8_t) GroupNonUniformBitwiseXor 42 InclusiveScan 440
+             442:     39(ptr) AccessChain 34(data) 438 37 38
+                              Store 442 441
+             443:      6(int) Load 8(invocation)
+             444:     48(ptr) AccessChain 34(data) 46 37
+             445:  18(i8vec4) Load 444
+             446:  47(i8vec2) VectorShuffle 445 445 0 1
+             447:  47(i8vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 446
+             448:     39(ptr) AccessChain 34(data) 443 37 38
+             449:  17(int8_t) CompositeExtract 447 0
+                              Store 448 449
+             450:     39(ptr) AccessChain 34(data) 443 37 55
+             451:  17(int8_t) CompositeExtract 447 1
+                              Store 450 451
+             452:      6(int) Load 8(invocation)
+             453:     48(ptr) AccessChain 34(data) 59 37
+             454:  18(i8vec4) Load 453
+             455:  60(i8vec3) VectorShuffle 454 454 0 1 2
+             456:  60(i8vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 455
+             457:     39(ptr) AccessChain 34(data) 452 37 38
+             458:  17(int8_t) CompositeExtract 456 0
+                              Store 457 458
+             459:     39(ptr) AccessChain 34(data) 452 37 55
+             460:  17(int8_t) CompositeExtract 456 1
+                              Store 459 460
+             461:     39(ptr) AccessChain 34(data) 452 37 69
+             462:  17(int8_t) CompositeExtract 456 2
+                              Store 461 462
+             463:      6(int) Load 8(invocation)
+             464:     48(ptr) AccessChain 34(data) 73 37
+             465:  18(i8vec4) Load 464
+             466:  18(i8vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 465
+             467:     48(ptr) AccessChain 34(data) 463 37
+                              Store 467 466
+             468:      6(int) Load 8(invocation)
+             469:     39(ptr) AccessChain 34(data) 37 37 38
+             470:  17(int8_t) Load 469
+             471:  17(int8_t) GroupNonUniformIAdd 42 ExclusiveScan 470
+             472:     39(ptr) AccessChain 34(data) 468 37 38
+                              Store 472 471
+             473:      6(int) Load 8(invocation)
+             474:     48(ptr) AccessChain 34(data) 46 37
+             475:  18(i8vec4) Load 474
+             476:  47(i8vec2) VectorShuffle 475 475 0 1
+             477:  47(i8vec2) GroupNonUniformIAdd 42 ExclusiveScan 476
+             478:     39(ptr) AccessChain 34(data) 473 37 38
+             479:  17(int8_t) CompositeExtract 477 0
+                              Store 478 479
+             480:     39(ptr) AccessChain 34(data) 473 37 55
+             481:  17(int8_t) CompositeExtract 477 1
+                              Store 480 481
+             482:      6(int) Load 8(invocation)
+             483:     48(ptr) AccessChain 34(data) 59 37
+             484:  18(i8vec4) Load 483
+             485:  60(i8vec3) VectorShuffle 484 484 0 1 2
+             486:  60(i8vec3) GroupNonUniformIAdd 42 ExclusiveScan 485
+             487:     39(ptr) AccessChain 34(data) 482 37 38
+             488:  17(int8_t) CompositeExtract 486 0
+                              Store 487 488
+             489:     39(ptr) AccessChain 34(data) 482 37 55
+             490:  17(int8_t) CompositeExtract 486 1
+                              Store 489 490
+             491:     39(ptr) AccessChain 34(data) 482 37 69
+             492:  17(int8_t) CompositeExtract 486 2
+                              Store 491 492
              493:      6(int) Load 8(invocation)
-             494:     48(ptr) AccessChain 34(data) 46 37
+             494:     48(ptr) AccessChain 34(data) 73 37
              495:  18(i8vec4) Load 494
-             496:  47(i8vec2) VectorShuffle 495 495 0 1
-             497:  47(i8vec2) GroupNonUniformSMax 42 ExclusiveScan 496
-             498:     48(ptr) AccessChain 34(data) 493 37
-             499:  18(i8vec4) Load 498
-             500:  18(i8vec4) VectorShuffle 499 497 4 5 2 3
-                              Store 498 500
-             501:      6(int) Load 8(invocation)
-             502:     48(ptr) AccessChain 34(data) 57 37
-             503:  18(i8vec4) Load 502
-             504:  58(i8vec3) VectorShuffle 503 503 0 1 2
-             505:  58(i8vec3) GroupNonUniformSMax 42 ExclusiveScan 504
-             506:     48(ptr) AccessChain 34(data) 501 37
-             507:  18(i8vec4) Load 506
-             508:  18(i8vec4) VectorShuffle 507 505 4 5 6 3
-                              Store 506 508
-             509:      6(int) Load 8(invocation)
-             510:     48(ptr) AccessChain 34(data) 67 37
-             511:  18(i8vec4) Load 510
-             512:  18(i8vec4) GroupNonUniformSMax 42 ExclusiveScan 511
-             513:     48(ptr) AccessChain 34(data) 509 37
-                              Store 513 512
-             514:      6(int) Load 8(invocation)
-             515:     39(ptr) AccessChain 34(data) 37 37 38
-             516:  17(int8_t) Load 515
-             517:  17(int8_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 516
-             518:     39(ptr) AccessChain 34(data) 514 37 38
-                              Store 518 517
-             519:      6(int) Load 8(invocation)
-             520:     48(ptr) AccessChain 34(data) 46 37
-             521:  18(i8vec4) Load 520
-             522:  47(i8vec2) VectorShuffle 521 521 0 1
-             523:  47(i8vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 522
-             524:     48(ptr) AccessChain 34(data) 519 37
+             496:  18(i8vec4) GroupNonUniformIAdd 42 ExclusiveScan 495
+             497:     48(ptr) AccessChain 34(data) 493 37
+                              Store 497 496
+             498:      6(int) Load 8(invocation)
+             499:     39(ptr) AccessChain 34(data) 37 37 38
+             500:  17(int8_t) Load 499
+             501:  17(int8_t) GroupNonUniformIMul 42 ExclusiveScan 500
+             502:     39(ptr) AccessChain 34(data) 498 37 38
+                              Store 502 501
+             503:      6(int) Load 8(invocation)
+             504:     48(ptr) AccessChain 34(data) 46 37
+             505:  18(i8vec4) Load 504
+             506:  47(i8vec2) VectorShuffle 505 505 0 1
+             507:  47(i8vec2) GroupNonUniformIMul 42 ExclusiveScan 506
+             508:     39(ptr) AccessChain 34(data) 503 37 38
+             509:  17(int8_t) CompositeExtract 507 0
+                              Store 508 509
+             510:     39(ptr) AccessChain 34(data) 503 37 55
+             511:  17(int8_t) CompositeExtract 507 1
+                              Store 510 511
+             512:      6(int) Load 8(invocation)
+             513:     48(ptr) AccessChain 34(data) 59 37
+             514:  18(i8vec4) Load 513
+             515:  60(i8vec3) VectorShuffle 514 514 0 1 2
+             516:  60(i8vec3) GroupNonUniformIMul 42 ExclusiveScan 515
+             517:     39(ptr) AccessChain 34(data) 512 37 38
+             518:  17(int8_t) CompositeExtract 516 0
+                              Store 517 518
+             519:     39(ptr) AccessChain 34(data) 512 37 55
+             520:  17(int8_t) CompositeExtract 516 1
+                              Store 519 520
+             521:     39(ptr) AccessChain 34(data) 512 37 69
+             522:  17(int8_t) CompositeExtract 516 2
+                              Store 521 522
+             523:      6(int) Load 8(invocation)
+             524:     48(ptr) AccessChain 34(data) 73 37
              525:  18(i8vec4) Load 524
-             526:  18(i8vec4) VectorShuffle 525 523 4 5 2 3
-                              Store 524 526
-             527:      6(int) Load 8(invocation)
-             528:     48(ptr) AccessChain 34(data) 57 37
-             529:  18(i8vec4) Load 528
-             530:  58(i8vec3) VectorShuffle 529 529 0 1 2
-             531:  58(i8vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 530
-             532:     48(ptr) AccessChain 34(data) 527 37
-             533:  18(i8vec4) Load 532
-             534:  18(i8vec4) VectorShuffle 533 531 4 5 6 3
-                              Store 532 534
-             535:      6(int) Load 8(invocation)
-             536:     48(ptr) AccessChain 34(data) 67 37
-             537:  18(i8vec4) Load 536
-             538:  18(i8vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 537
-             539:     48(ptr) AccessChain 34(data) 535 37
-                              Store 539 538
-             540:      6(int) Load 8(invocation)
-             541:     39(ptr) AccessChain 34(data) 37 37 38
-             542:  17(int8_t) Load 541
-             543:  17(int8_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 542
-             544:     39(ptr) AccessChain 34(data) 540 37 38
-                              Store 544 543
-             545:      6(int) Load 8(invocation)
-             546:     48(ptr) AccessChain 34(data) 46 37
-             547:  18(i8vec4) Load 546
-             548:  47(i8vec2) VectorShuffle 547 547 0 1
-             549:  47(i8vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 548
-             550:     48(ptr) AccessChain 34(data) 545 37
-             551:  18(i8vec4) Load 550
-             552:  18(i8vec4) VectorShuffle 551 549 4 5 2 3
-                              Store 550 552
+             526:  18(i8vec4) GroupNonUniformIMul 42 ExclusiveScan 525
+             527:     48(ptr) AccessChain 34(data) 523 37
+                              Store 527 526
+             528:      6(int) Load 8(invocation)
+             529:     39(ptr) AccessChain 34(data) 37 37 38
+             530:  17(int8_t) Load 529
+             531:  17(int8_t) GroupNonUniformSMin 42 ExclusiveScan 530
+             532:     39(ptr) AccessChain 34(data) 528 37 38
+                              Store 532 531
+             533:      6(int) Load 8(invocation)
+             534:     48(ptr) AccessChain 34(data) 46 37
+             535:  18(i8vec4) Load 534
+             536:  47(i8vec2) VectorShuffle 535 535 0 1
+             537:  47(i8vec2) GroupNonUniformSMin 42 ExclusiveScan 536
+             538:     39(ptr) AccessChain 34(data) 533 37 38
+             539:  17(int8_t) CompositeExtract 537 0
+                              Store 538 539
+             540:     39(ptr) AccessChain 34(data) 533 37 55
+             541:  17(int8_t) CompositeExtract 537 1
+                              Store 540 541
+             542:      6(int) Load 8(invocation)
+             543:     48(ptr) AccessChain 34(data) 59 37
+             544:  18(i8vec4) Load 543
+             545:  60(i8vec3) VectorShuffle 544 544 0 1 2
+             546:  60(i8vec3) GroupNonUniformSMin 42 ExclusiveScan 545
+             547:     39(ptr) AccessChain 34(data) 542 37 38
+             548:  17(int8_t) CompositeExtract 546 0
+                              Store 547 548
+             549:     39(ptr) AccessChain 34(data) 542 37 55
+             550:  17(int8_t) CompositeExtract 546 1
+                              Store 549 550
+             551:     39(ptr) AccessChain 34(data) 542 37 69
+             552:  17(int8_t) CompositeExtract 546 2
+                              Store 551 552
              553:      6(int) Load 8(invocation)
-             554:     48(ptr) AccessChain 34(data) 57 37
+             554:     48(ptr) AccessChain 34(data) 73 37
              555:  18(i8vec4) Load 554
-             556:  58(i8vec3) VectorShuffle 555 555 0 1 2
-             557:  58(i8vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 556
-             558:     48(ptr) AccessChain 34(data) 553 37
-             559:  18(i8vec4) Load 558
-             560:  18(i8vec4) VectorShuffle 559 557 4 5 6 3
-                              Store 558 560
-             561:      6(int) Load 8(invocation)
-             562:     48(ptr) AccessChain 34(data) 67 37
-             563:  18(i8vec4) Load 562
-             564:  18(i8vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 563
-             565:     48(ptr) AccessChain 34(data) 561 37
-                              Store 565 564
-             566:      6(int) Load 8(invocation)
-             567:     39(ptr) AccessChain 34(data) 37 37 38
-             568:  17(int8_t) Load 567
-             569:  17(int8_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 568
-             570:     39(ptr) AccessChain 34(data) 566 37 38
-                              Store 570 569
-             571:      6(int) Load 8(invocation)
-             572:     48(ptr) AccessChain 34(data) 46 37
-             573:  18(i8vec4) Load 572
-             574:  47(i8vec2) VectorShuffle 573 573 0 1
-             575:  47(i8vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 574
-             576:     48(ptr) AccessChain 34(data) 571 37
-             577:  18(i8vec4) Load 576
-             578:  18(i8vec4) VectorShuffle 577 575 4 5 2 3
-                              Store 576 578
-             579:      6(int) Load 8(invocation)
-             580:     48(ptr) AccessChain 34(data) 57 37
-             581:  18(i8vec4) Load 580
-             582:  58(i8vec3) VectorShuffle 581 581 0 1 2
-             583:  58(i8vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 582
-             584:     48(ptr) AccessChain 34(data) 579 37
+             556:  18(i8vec4) GroupNonUniformSMin 42 ExclusiveScan 555
+             557:     48(ptr) AccessChain 34(data) 553 37
+                              Store 557 556
+             558:      6(int) Load 8(invocation)
+             559:     39(ptr) AccessChain 34(data) 37 37 38
+             560:  17(int8_t) Load 559
+             561:  17(int8_t) GroupNonUniformSMax 42 ExclusiveScan 560
+             562:     39(ptr) AccessChain 34(data) 558 37 38
+                              Store 562 561
+             563:      6(int) Load 8(invocation)
+             564:     48(ptr) AccessChain 34(data) 46 37
+             565:  18(i8vec4) Load 564
+             566:  47(i8vec2) VectorShuffle 565 565 0 1
+             567:  47(i8vec2) GroupNonUniformSMax 42 ExclusiveScan 566
+             568:     39(ptr) AccessChain 34(data) 563 37 38
+             569:  17(int8_t) CompositeExtract 567 0
+                              Store 568 569
+             570:     39(ptr) AccessChain 34(data) 563 37 55
+             571:  17(int8_t) CompositeExtract 567 1
+                              Store 570 571
+             572:      6(int) Load 8(invocation)
+             573:     48(ptr) AccessChain 34(data) 59 37
+             574:  18(i8vec4) Load 573
+             575:  60(i8vec3) VectorShuffle 574 574 0 1 2
+             576:  60(i8vec3) GroupNonUniformSMax 42 ExclusiveScan 575
+             577:     39(ptr) AccessChain 34(data) 572 37 38
+             578:  17(int8_t) CompositeExtract 576 0
+                              Store 577 578
+             579:     39(ptr) AccessChain 34(data) 572 37 55
+             580:  17(int8_t) CompositeExtract 576 1
+                              Store 579 580
+             581:     39(ptr) AccessChain 34(data) 572 37 69
+             582:  17(int8_t) CompositeExtract 576 2
+                              Store 581 582
+             583:      6(int) Load 8(invocation)
+             584:     48(ptr) AccessChain 34(data) 73 37
              585:  18(i8vec4) Load 584
-             586:  18(i8vec4) VectorShuffle 585 583 4 5 6 3
-                              Store 584 586
-             587:      6(int) Load 8(invocation)
-             588:     48(ptr) AccessChain 34(data) 67 37
-             589:  18(i8vec4) Load 588
-             590:  18(i8vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 589
-             591:     48(ptr) AccessChain 34(data) 587 37
-                              Store 591 590
-             592:      6(int) Load 8(invocation)
-             594:    593(ptr) AccessChain 34(data) 37 46 38
-             595:  19(int8_t) Load 594
-             596:  19(int8_t) GroupNonUniformIAdd 42 Reduce 595
-             597:    593(ptr) AccessChain 34(data) 592 46 38
-                              Store 597 596
-             598:      6(int) Load 8(invocation)
-             601:    600(ptr) AccessChain 34(data) 46 46
-             602:  20(i8vec4) Load 601
-             603: 599(i8vec2) VectorShuffle 602 602 0 1
-             604: 599(i8vec2) GroupNonUniformIAdd 42 Reduce 603
-             605:    600(ptr) AccessChain 34(data) 598 46
-             606:  20(i8vec4) Load 605
-             607:  20(i8vec4) VectorShuffle 606 604 4 5 2 3
-                              Store 605 607
-             608:      6(int) Load 8(invocation)
-             610:    600(ptr) AccessChain 34(data) 57 46
-             611:  20(i8vec4) Load 610
-             612: 609(i8vec3) VectorShuffle 611 611 0 1 2
-             613: 609(i8vec3) GroupNonUniformIAdd 42 Reduce 612
-             614:    600(ptr) AccessChain 34(data) 608 46
-             615:  20(i8vec4) Load 614
-             616:  20(i8vec4) VectorShuffle 615 613 4 5 6 3
-                              Store 614 616
-             617:      6(int) Load 8(invocation)
-             618:    600(ptr) AccessChain 34(data) 67 46
-             619:  20(i8vec4) Load 618
-             620:  20(i8vec4) GroupNonUniformIAdd 42 Reduce 619
-             621:    600(ptr) AccessChain 34(data) 617 46
-                              Store 621 620
-             622:      6(int) Load 8(invocation)
-             623:    593(ptr) AccessChain 34(data) 37 46 38
-             624:  19(int8_t) Load 623
-             625:  19(int8_t) GroupNonUniformIMul 42 Reduce 624
-             626:    593(ptr) AccessChain 34(data) 622 46 38
-                              Store 626 625
-             627:      6(int) Load 8(invocation)
-             628:    600(ptr) AccessChain 34(data) 46 46
-             629:  20(i8vec4) Load 628
-             630: 599(i8vec2) VectorShuffle 629 629 0 1
-             631: 599(i8vec2) GroupNonUniformIMul 42 Reduce 630
-             632:    600(ptr) AccessChain 34(data) 627 46
-             633:  20(i8vec4) Load 632
-             634:  20(i8vec4) VectorShuffle 633 631 4 5 2 3
-                              Store 632 634
-             635:      6(int) Load 8(invocation)
-             636:    600(ptr) AccessChain 34(data) 57 46
-             637:  20(i8vec4) Load 636
-             638: 609(i8vec3) VectorShuffle 637 637 0 1 2
-             639: 609(i8vec3) GroupNonUniformIMul 42 Reduce 638
-             640:    600(ptr) AccessChain 34(data) 635 46
-             641:  20(i8vec4) Load 640
-             642:  20(i8vec4) VectorShuffle 641 639 4 5 6 3
-                              Store 640 642
+             586:  18(i8vec4) GroupNonUniformSMax 42 ExclusiveScan 585
+             587:     48(ptr) AccessChain 34(data) 583 37
+                              Store 587 586
+             588:      6(int) Load 8(invocation)
+             589:     39(ptr) AccessChain 34(data) 37 37 38
+             590:  17(int8_t) Load 589
+             591:  17(int8_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 590
+             592:     39(ptr) AccessChain 34(data) 588 37 38
+                              Store 592 591
+             593:      6(int) Load 8(invocation)
+             594:     48(ptr) AccessChain 34(data) 46 37
+             595:  18(i8vec4) Load 594
+             596:  47(i8vec2) VectorShuffle 595 595 0 1
+             597:  47(i8vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 596
+             598:     39(ptr) AccessChain 34(data) 593 37 38
+             599:  17(int8_t) CompositeExtract 597 0
+                              Store 598 599
+             600:     39(ptr) AccessChain 34(data) 593 37 55
+             601:  17(int8_t) CompositeExtract 597 1
+                              Store 600 601
+             602:      6(int) Load 8(invocation)
+             603:     48(ptr) AccessChain 34(data) 59 37
+             604:  18(i8vec4) Load 603
+             605:  60(i8vec3) VectorShuffle 604 604 0 1 2
+             606:  60(i8vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 605
+             607:     39(ptr) AccessChain 34(data) 602 37 38
+             608:  17(int8_t) CompositeExtract 606 0
+                              Store 607 608
+             609:     39(ptr) AccessChain 34(data) 602 37 55
+             610:  17(int8_t) CompositeExtract 606 1
+                              Store 609 610
+             611:     39(ptr) AccessChain 34(data) 602 37 69
+             612:  17(int8_t) CompositeExtract 606 2
+                              Store 611 612
+             613:      6(int) Load 8(invocation)
+             614:     48(ptr) AccessChain 34(data) 73 37
+             615:  18(i8vec4) Load 614
+             616:  18(i8vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 615
+             617:     48(ptr) AccessChain 34(data) 613 37
+                              Store 617 616
+             618:      6(int) Load 8(invocation)
+             619:     39(ptr) AccessChain 34(data) 37 37 38
+             620:  17(int8_t) Load 619
+             621:  17(int8_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 620
+             622:     39(ptr) AccessChain 34(data) 618 37 38
+                              Store 622 621
+             623:      6(int) Load 8(invocation)
+             624:     48(ptr) AccessChain 34(data) 46 37
+             625:  18(i8vec4) Load 624
+             626:  47(i8vec2) VectorShuffle 625 625 0 1
+             627:  47(i8vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 626
+             628:     39(ptr) AccessChain 34(data) 623 37 38
+             629:  17(int8_t) CompositeExtract 627 0
+                              Store 628 629
+             630:     39(ptr) AccessChain 34(data) 623 37 55
+             631:  17(int8_t) CompositeExtract 627 1
+                              Store 630 631
+             632:      6(int) Load 8(invocation)
+             633:     48(ptr) AccessChain 34(data) 59 37
+             634:  18(i8vec4) Load 633
+             635:  60(i8vec3) VectorShuffle 634 634 0 1 2
+             636:  60(i8vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 635
+             637:     39(ptr) AccessChain 34(data) 632 37 38
+             638:  17(int8_t) CompositeExtract 636 0
+                              Store 637 638
+             639:     39(ptr) AccessChain 34(data) 632 37 55
+             640:  17(int8_t) CompositeExtract 636 1
+                              Store 639 640
+             641:     39(ptr) AccessChain 34(data) 632 37 69
+             642:  17(int8_t) CompositeExtract 636 2
+                              Store 641 642
              643:      6(int) Load 8(invocation)
-             644:    600(ptr) AccessChain 34(data) 67 46
-             645:  20(i8vec4) Load 644
-             646:  20(i8vec4) GroupNonUniformIMul 42 Reduce 645
-             647:    600(ptr) AccessChain 34(data) 643 46
+             644:     48(ptr) AccessChain 34(data) 73 37
+             645:  18(i8vec4) Load 644
+             646:  18(i8vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 645
+             647:     48(ptr) AccessChain 34(data) 643 37
                               Store 647 646
              648:      6(int) Load 8(invocation)
-             649:    593(ptr) AccessChain 34(data) 37 46 38
-             650:  19(int8_t) Load 649
-             651:  19(int8_t) GroupNonUniformUMin 42 Reduce 650
-             652:    593(ptr) AccessChain 34(data) 648 46 38
+             649:     39(ptr) AccessChain 34(data) 37 37 38
+             650:  17(int8_t) Load 649
+             651:  17(int8_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 650
+             652:     39(ptr) AccessChain 34(data) 648 37 38
                               Store 652 651
              653:      6(int) Load 8(invocation)
-             654:    600(ptr) AccessChain 34(data) 46 46
-             655:  20(i8vec4) Load 654
-             656: 599(i8vec2) VectorShuffle 655 655 0 1
-             657: 599(i8vec2) GroupNonUniformUMin 42 Reduce 656
-             658:    600(ptr) AccessChain 34(data) 653 46
-             659:  20(i8vec4) Load 658
-             660:  20(i8vec4) VectorShuffle 659 657 4 5 2 3
-                              Store 658 660
-             661:      6(int) Load 8(invocation)
-             662:    600(ptr) AccessChain 34(data) 57 46
-             663:  20(i8vec4) Load 662
-             664: 609(i8vec3) VectorShuffle 663 663 0 1 2
-             665: 609(i8vec3) GroupNonUniformUMin 42 Reduce 664
-             666:    600(ptr) AccessChain 34(data) 661 46
-             667:  20(i8vec4) Load 666
-             668:  20(i8vec4) VectorShuffle 667 665 4 5 6 3
-                              Store 666 668
-             669:      6(int) Load 8(invocation)
-             670:    600(ptr) AccessChain 34(data) 67 46
-             671:  20(i8vec4) Load 670
-             672:  20(i8vec4) GroupNonUniformUMin 42 Reduce 671
-             673:    600(ptr) AccessChain 34(data) 669 46
-                              Store 673 672
-             674:      6(int) Load 8(invocation)
-             675:    593(ptr) AccessChain 34(data) 37 46 38
-             676:  19(int8_t) Load 675
-             677:  19(int8_t) GroupNonUniformUMax 42 Reduce 676
-             678:    593(ptr) AccessChain 34(data) 674 46 38
-                              Store 678 677
-             679:      6(int) Load 8(invocation)
-             680:    600(ptr) AccessChain 34(data) 46 46
-             681:  20(i8vec4) Load 680
-             682: 599(i8vec2) VectorShuffle 681 681 0 1
-             683: 599(i8vec2) GroupNonUniformUMax 42 Reduce 682
-             684:    600(ptr) AccessChain 34(data) 679 46
-             685:  20(i8vec4) Load 684
-             686:  20(i8vec4) VectorShuffle 685 683 4 5 2 3
-                              Store 684 686
-             687:      6(int) Load 8(invocation)
-             688:    600(ptr) AccessChain 34(data) 57 46
-             689:  20(i8vec4) Load 688
-             690: 609(i8vec3) VectorShuffle 689 689 0 1 2
-             691: 609(i8vec3) GroupNonUniformUMax 42 Reduce 690
-             692:    600(ptr) AccessChain 34(data) 687 46
-             693:  20(i8vec4) Load 692
-             694:  20(i8vec4) VectorShuffle 693 691 4 5 6 3
-                              Store 692 694
+             654:     48(ptr) AccessChain 34(data) 46 37
+             655:  18(i8vec4) Load 654
+             656:  47(i8vec2) VectorShuffle 655 655 0 1
+             657:  47(i8vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 656
+             658:     39(ptr) AccessChain 34(data) 653 37 38
+             659:  17(int8_t) CompositeExtract 657 0
+                              Store 658 659
+             660:     39(ptr) AccessChain 34(data) 653 37 55
+             661:  17(int8_t) CompositeExtract 657 1
+                              Store 660 661
+             662:      6(int) Load 8(invocation)
+             663:     48(ptr) AccessChain 34(data) 59 37
+             664:  18(i8vec4) Load 663
+             665:  60(i8vec3) VectorShuffle 664 664 0 1 2
+             666:  60(i8vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 665
+             667:     39(ptr) AccessChain 34(data) 662 37 38
+             668:  17(int8_t) CompositeExtract 666 0
+                              Store 667 668
+             669:     39(ptr) AccessChain 34(data) 662 37 55
+             670:  17(int8_t) CompositeExtract 666 1
+                              Store 669 670
+             671:     39(ptr) AccessChain 34(data) 662 37 69
+             672:  17(int8_t) CompositeExtract 666 2
+                              Store 671 672
+             673:      6(int) Load 8(invocation)
+             674:     48(ptr) AccessChain 34(data) 73 37
+             675:  18(i8vec4) Load 674
+             676:  18(i8vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 675
+             677:     48(ptr) AccessChain 34(data) 673 37
+                              Store 677 676
+             678:      6(int) Load 8(invocation)
+             680:    679(ptr) AccessChain 34(data) 37 46 38
+             681:  19(int8_t) Load 680
+             682:  19(int8_t) GroupNonUniformIAdd 42 Reduce 681
+             683:    679(ptr) AccessChain 34(data) 678 46 38
+                              Store 683 682
+             684:      6(int) Load 8(invocation)
+             687:    686(ptr) AccessChain 34(data) 46 46
+             688:  20(i8vec4) Load 687
+             689: 685(i8vec2) VectorShuffle 688 688 0 1
+             690: 685(i8vec2) GroupNonUniformIAdd 42 Reduce 689
+             691:    679(ptr) AccessChain 34(data) 684 46 38
+             692:  19(int8_t) CompositeExtract 690 0
+                              Store 691 692
+             693:    679(ptr) AccessChain 34(data) 684 46 55
+             694:  19(int8_t) CompositeExtract 690 1
+                              Store 693 694
              695:      6(int) Load 8(invocation)
-             696:    600(ptr) AccessChain 34(data) 67 46
-             697:  20(i8vec4) Load 696
-             698:  20(i8vec4) GroupNonUniformUMax 42 Reduce 697
-             699:    600(ptr) AccessChain 34(data) 695 46
-                              Store 699 698
-             700:      6(int) Load 8(invocation)
-             701:    593(ptr) AccessChain 34(data) 37 46 38
-             702:  19(int8_t) Load 701
-             703:  19(int8_t) GroupNonUniformBitwiseAnd 42 Reduce 702
-             704:    593(ptr) AccessChain 34(data) 700 46 38
-                              Store 704 703
-             705:      6(int) Load 8(invocation)
-             706:    600(ptr) AccessChain 34(data) 46 46
-             707:  20(i8vec4) Load 706
-             708: 599(i8vec2) VectorShuffle 707 707 0 1
-             709: 599(i8vec2) GroupNonUniformBitwiseAnd 42 Reduce 708
-             710:    600(ptr) AccessChain 34(data) 705 46
-             711:  20(i8vec4) Load 710
-             712:  20(i8vec4) VectorShuffle 711 709 4 5 2 3
-                              Store 710 712
-             713:      6(int) Load 8(invocation)
-             714:    600(ptr) AccessChain 34(data) 57 46
-             715:  20(i8vec4) Load 714
-             716: 609(i8vec3) VectorShuffle 715 715 0 1 2
-             717: 609(i8vec3) GroupNonUniformBitwiseAnd 42 Reduce 716
-             718:    600(ptr) AccessChain 34(data) 713 46
+             697:    686(ptr) AccessChain 34(data) 59 46
+             698:  20(i8vec4) Load 697
+             699: 696(i8vec3) VectorShuffle 698 698 0 1 2
+             700: 696(i8vec3) GroupNonUniformIAdd 42 Reduce 699
+             701:    679(ptr) AccessChain 34(data) 695 46 38
+             702:  19(int8_t) CompositeExtract 700 0
+                              Store 701 702
+             703:    679(ptr) AccessChain 34(data) 695 46 55
+             704:  19(int8_t) CompositeExtract 700 1
+                              Store 703 704
+             705:    679(ptr) AccessChain 34(data) 695 46 69
+             706:  19(int8_t) CompositeExtract 700 2
+                              Store 705 706
+             707:      6(int) Load 8(invocation)
+             708:    686(ptr) AccessChain 34(data) 73 46
+             709:  20(i8vec4) Load 708
+             710:  20(i8vec4) GroupNonUniformIAdd 42 Reduce 709
+             711:    686(ptr) AccessChain 34(data) 707 46
+                              Store 711 710
+             712:      6(int) Load 8(invocation)
+             713:    679(ptr) AccessChain 34(data) 37 46 38
+             714:  19(int8_t) Load 713
+             715:  19(int8_t) GroupNonUniformIMul 42 Reduce 714
+             716:    679(ptr) AccessChain 34(data) 712 46 38
+                              Store 716 715
+             717:      6(int) Load 8(invocation)
+             718:    686(ptr) AccessChain 34(data) 46 46
              719:  20(i8vec4) Load 718
-             720:  20(i8vec4) VectorShuffle 719 717 4 5 6 3
-                              Store 718 720
-             721:      6(int) Load 8(invocation)
-             722:    600(ptr) AccessChain 34(data) 67 46
-             723:  20(i8vec4) Load 722
-             724:  20(i8vec4) GroupNonUniformBitwiseAnd 42 Reduce 723
-             725:    600(ptr) AccessChain 34(data) 721 46
-                              Store 725 724
+             720: 685(i8vec2) VectorShuffle 719 719 0 1
+             721: 685(i8vec2) GroupNonUniformIMul 42 Reduce 720
+             722:    679(ptr) AccessChain 34(data) 717 46 38
+             723:  19(int8_t) CompositeExtract 721 0
+                              Store 722 723
+             724:    679(ptr) AccessChain 34(data) 717 46 55
+             725:  19(int8_t) CompositeExtract 721 1
+                              Store 724 725
              726:      6(int) Load 8(invocation)
-             727:    593(ptr) AccessChain 34(data) 37 46 38
-             728:  19(int8_t) Load 727
-             729:  19(int8_t) GroupNonUniformBitwiseOr 42 Reduce 728
-             730:    593(ptr) AccessChain 34(data) 726 46 38
-                              Store 730 729
-             731:      6(int) Load 8(invocation)
-             732:    600(ptr) AccessChain 34(data) 46 46
-             733:  20(i8vec4) Load 732
-             734: 599(i8vec2) VectorShuffle 733 733 0 1
-             735: 599(i8vec2) GroupNonUniformBitwiseOr 42 Reduce 734
-             736:    600(ptr) AccessChain 34(data) 731 46
-             737:  20(i8vec4) Load 736
-             738:  20(i8vec4) VectorShuffle 737 735 4 5 2 3
-                              Store 736 738
-             739:      6(int) Load 8(invocation)
-             740:    600(ptr) AccessChain 34(data) 57 46
-             741:  20(i8vec4) Load 740
-             742: 609(i8vec3) VectorShuffle 741 741 0 1 2
-             743: 609(i8vec3) GroupNonUniformBitwiseOr 42 Reduce 742
-             744:    600(ptr) AccessChain 34(data) 739 46
-             745:  20(i8vec4) Load 744
-             746:  20(i8vec4) VectorShuffle 745 743 4 5 6 3
-                              Store 744 746
+             727:    686(ptr) AccessChain 34(data) 59 46
+             728:  20(i8vec4) Load 727
+             729: 696(i8vec3) VectorShuffle 728 728 0 1 2
+             730: 696(i8vec3) GroupNonUniformIMul 42 Reduce 729
+             731:    679(ptr) AccessChain 34(data) 726 46 38
+             732:  19(int8_t) CompositeExtract 730 0
+                              Store 731 732
+             733:    679(ptr) AccessChain 34(data) 726 46 55
+             734:  19(int8_t) CompositeExtract 730 1
+                              Store 733 734
+             735:    679(ptr) AccessChain 34(data) 726 46 69
+             736:  19(int8_t) CompositeExtract 730 2
+                              Store 735 736
+             737:      6(int) Load 8(invocation)
+             738:    686(ptr) AccessChain 34(data) 73 46
+             739:  20(i8vec4) Load 738
+             740:  20(i8vec4) GroupNonUniformIMul 42 Reduce 739
+             741:    686(ptr) AccessChain 34(data) 737 46
+                              Store 741 740
+             742:      6(int) Load 8(invocation)
+             743:    679(ptr) AccessChain 34(data) 37 46 38
+             744:  19(int8_t) Load 743
+             745:  19(int8_t) GroupNonUniformUMin 42 Reduce 744
+             746:    679(ptr) AccessChain 34(data) 742 46 38
+                              Store 746 745
              747:      6(int) Load 8(invocation)
-             748:    600(ptr) AccessChain 34(data) 67 46
+             748:    686(ptr) AccessChain 34(data) 46 46
              749:  20(i8vec4) Load 748
-             750:  20(i8vec4) GroupNonUniformBitwiseOr 42 Reduce 749
-             751:    600(ptr) AccessChain 34(data) 747 46
-                              Store 751 750
-             752:      6(int) Load 8(invocation)
-             753:    593(ptr) AccessChain 34(data) 37 46 38
-             754:  19(int8_t) Load 753
-             755:  19(int8_t) GroupNonUniformBitwiseXor 42 Reduce 754
-             756:    593(ptr) AccessChain 34(data) 752 46 38
-                              Store 756 755
-             757:      6(int) Load 8(invocation)
-             758:    600(ptr) AccessChain 34(data) 46 46
-             759:  20(i8vec4) Load 758
-             760: 599(i8vec2) VectorShuffle 759 759 0 1
-             761: 599(i8vec2) GroupNonUniformBitwiseXor 42 Reduce 760
-             762:    600(ptr) AccessChain 34(data) 757 46
-             763:  20(i8vec4) Load 762
-             764:  20(i8vec4) VectorShuffle 763 761 4 5 2 3
-                              Store 762 764
-             765:      6(int) Load 8(invocation)
-             766:    600(ptr) AccessChain 34(data) 57 46
-             767:  20(i8vec4) Load 766
-             768: 609(i8vec3) VectorShuffle 767 767 0 1 2
-             769: 609(i8vec3) GroupNonUniformBitwiseXor 42 Reduce 768
-             770:    600(ptr) AccessChain 34(data) 765 46
-             771:  20(i8vec4) Load 770
-             772:  20(i8vec4) VectorShuffle 771 769 4 5 6 3
-                              Store 770 772
-             773:      6(int) Load 8(invocation)
-             774:    600(ptr) AccessChain 34(data) 67 46
-             775:  20(i8vec4) Load 774
-             776:  20(i8vec4) GroupNonUniformBitwiseXor 42 Reduce 775
-             777:    600(ptr) AccessChain 34(data) 773 46
-                              Store 777 776
-             778:      6(int) Load 8(invocation)
-             779:    593(ptr) AccessChain 34(data) 37 46 38
-             780:  19(int8_t) Load 779
-             781:  19(int8_t) GroupNonUniformIAdd 42 InclusiveScan 780
-             782:    593(ptr) AccessChain 34(data) 778 46 38
-                              Store 782 781
-             783:      6(int) Load 8(invocation)
-             784:    600(ptr) AccessChain 34(data) 46 46
-             785:  20(i8vec4) Load 784
-             786: 599(i8vec2) VectorShuffle 785 785 0 1
-             787: 599(i8vec2) GroupNonUniformIAdd 42 InclusiveScan 786
-             788:    600(ptr) AccessChain 34(data) 783 46
-             789:  20(i8vec4) Load 788
-             790:  20(i8vec4) VectorShuffle 789 787 4 5 2 3
-                              Store 788 790
-             791:      6(int) Load 8(invocation)
-             792:    600(ptr) AccessChain 34(data) 57 46
-             793:  20(i8vec4) Load 792
-             794: 609(i8vec3) VectorShuffle 793 793 0 1 2
-             795: 609(i8vec3) GroupNonUniformIAdd 42 InclusiveScan 794
-             796:    600(ptr) AccessChain 34(data) 791 46
-             797:  20(i8vec4) Load 796
-             798:  20(i8vec4) VectorShuffle 797 795 4 5 6 3
-                              Store 796 798
-             799:      6(int) Load 8(invocation)
-             800:    600(ptr) AccessChain 34(data) 67 46
-             801:  20(i8vec4) Load 800
-             802:  20(i8vec4) GroupNonUniformIAdd 42 InclusiveScan 801
-             803:    600(ptr) AccessChain 34(data) 799 46
-                              Store 803 802
-             804:      6(int) Load 8(invocation)
-             805:    593(ptr) AccessChain 34(data) 37 46 38
-             806:  19(int8_t) Load 805
-             807:  19(int8_t) GroupNonUniformIMul 42 InclusiveScan 806
-             808:    593(ptr) AccessChain 34(data) 804 46 38
-                              Store 808 807
-             809:      6(int) Load 8(invocation)
-             810:    600(ptr) AccessChain 34(data) 46 46
-             811:  20(i8vec4) Load 810
-             812: 599(i8vec2) VectorShuffle 811 811 0 1
-             813: 599(i8vec2) GroupNonUniformIMul 42 InclusiveScan 812
-             814:    600(ptr) AccessChain 34(data) 809 46
-             815:  20(i8vec4) Load 814
-             816:  20(i8vec4) VectorShuffle 815 813 4 5 2 3
-                              Store 814 816
-             817:      6(int) Load 8(invocation)
-             818:    600(ptr) AccessChain 34(data) 57 46
-             819:  20(i8vec4) Load 818
-             820: 609(i8vec3) VectorShuffle 819 819 0 1 2
-             821: 609(i8vec3) GroupNonUniformIMul 42 InclusiveScan 820
-             822:    600(ptr) AccessChain 34(data) 817 46
-             823:  20(i8vec4) Load 822
-             824:  20(i8vec4) VectorShuffle 823 821 4 5 6 3
-                              Store 822 824
-             825:      6(int) Load 8(invocation)
-             826:    600(ptr) AccessChain 34(data) 67 46
-             827:  20(i8vec4) Load 826
-             828:  20(i8vec4) GroupNonUniformIMul 42 InclusiveScan 827
-             829:    600(ptr) AccessChain 34(data) 825 46
-                              Store 829 828
-             830:      6(int) Load 8(invocation)
-             831:    593(ptr) AccessChain 34(data) 37 46 38
-             832:  19(int8_t) Load 831
-             833:  19(int8_t) GroupNonUniformUMin 42 InclusiveScan 832
-             834:    593(ptr) AccessChain 34(data) 830 46 38
-                              Store 834 833
-             835:      6(int) Load 8(invocation)
-             836:    600(ptr) AccessChain 34(data) 46 46
-             837:  20(i8vec4) Load 836
-             838: 599(i8vec2) VectorShuffle 837 837 0 1
-             839: 599(i8vec2) GroupNonUniformUMin 42 InclusiveScan 838
-             840:    600(ptr) AccessChain 34(data) 835 46
-             841:  20(i8vec4) Load 840
-             842:  20(i8vec4) VectorShuffle 841 839 4 5 2 3
-                              Store 840 842
-             843:      6(int) Load 8(invocation)
-             844:    600(ptr) AccessChain 34(data) 57 46
-             845:  20(i8vec4) Load 844
-             846: 609(i8vec3) VectorShuffle 845 845 0 1 2
-             847: 609(i8vec3) GroupNonUniformUMin 42 InclusiveScan 846
-             848:    600(ptr) AccessChain 34(data) 843 46
-             849:  20(i8vec4) Load 848
-             850:  20(i8vec4) VectorShuffle 849 847 4 5 6 3
-                              Store 848 850
-             851:      6(int) Load 8(invocation)
-             852:    600(ptr) AccessChain 34(data) 67 46
-             853:  20(i8vec4) Load 852
-             854:  20(i8vec4) GroupNonUniformUMin 42 InclusiveScan 853
-             855:    600(ptr) AccessChain 34(data) 851 46
-                              Store 855 854
-             856:      6(int) Load 8(invocation)
-             857:    593(ptr) AccessChain 34(data) 37 46 38
-             858:  19(int8_t) Load 857
-             859:  19(int8_t) GroupNonUniformUMax 42 InclusiveScan 858
-             860:    593(ptr) AccessChain 34(data) 856 46 38
-                              Store 860 859
-             861:      6(int) Load 8(invocation)
-             862:    600(ptr) AccessChain 34(data) 46 46
-             863:  20(i8vec4) Load 862
-             864: 599(i8vec2) VectorShuffle 863 863 0 1
-             865: 599(i8vec2) GroupNonUniformUMax 42 InclusiveScan 864
-             866:    600(ptr) AccessChain 34(data) 861 46
-             867:  20(i8vec4) Load 866
-             868:  20(i8vec4) VectorShuffle 867 865 4 5 2 3
-                              Store 866 868
-             869:      6(int) Load 8(invocation)
-             870:    600(ptr) AccessChain 34(data) 57 46
-             871:  20(i8vec4) Load 870
-             872: 609(i8vec3) VectorShuffle 871 871 0 1 2
-             873: 609(i8vec3) GroupNonUniformUMax 42 InclusiveScan 872
-             874:    600(ptr) AccessChain 34(data) 869 46
-             875:  20(i8vec4) Load 874
-             876:  20(i8vec4) VectorShuffle 875 873 4 5 6 3
-                              Store 874 876
-             877:      6(int) Load 8(invocation)
-             878:    600(ptr) AccessChain 34(data) 67 46
-             879:  20(i8vec4) Load 878
-             880:  20(i8vec4) GroupNonUniformUMax 42 InclusiveScan 879
-             881:    600(ptr) AccessChain 34(data) 877 46
-                              Store 881 880
-             882:      6(int) Load 8(invocation)
-             883:    593(ptr) AccessChain 34(data) 37 46 38
-             884:  19(int8_t) Load 883
-             885:  19(int8_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 884
-             886:    593(ptr) AccessChain 34(data) 882 46 38
-                              Store 886 885
+             750: 685(i8vec2) VectorShuffle 749 749 0 1
+             751: 685(i8vec2) GroupNonUniformUMin 42 Reduce 750
+             752:    679(ptr) AccessChain 34(data) 747 46 38
+             753:  19(int8_t) CompositeExtract 751 0
+                              Store 752 753
+             754:    679(ptr) AccessChain 34(data) 747 46 55
+             755:  19(int8_t) CompositeExtract 751 1
+                              Store 754 755
+             756:      6(int) Load 8(invocation)
+             757:    686(ptr) AccessChain 34(data) 59 46
+             758:  20(i8vec4) Load 757
+             759: 696(i8vec3) VectorShuffle 758 758 0 1 2
+             760: 696(i8vec3) GroupNonUniformUMin 42 Reduce 759
+             761:    679(ptr) AccessChain 34(data) 756 46 38
+             762:  19(int8_t) CompositeExtract 760 0
+                              Store 761 762
+             763:    679(ptr) AccessChain 34(data) 756 46 55
+             764:  19(int8_t) CompositeExtract 760 1
+                              Store 763 764
+             765:    679(ptr) AccessChain 34(data) 756 46 69
+             766:  19(int8_t) CompositeExtract 760 2
+                              Store 765 766
+             767:      6(int) Load 8(invocation)
+             768:    686(ptr) AccessChain 34(data) 73 46
+             769:  20(i8vec4) Load 768
+             770:  20(i8vec4) GroupNonUniformUMin 42 Reduce 769
+             771:    686(ptr) AccessChain 34(data) 767 46
+                              Store 771 770
+             772:      6(int) Load 8(invocation)
+             773:    679(ptr) AccessChain 34(data) 37 46 38
+             774:  19(int8_t) Load 773
+             775:  19(int8_t) GroupNonUniformUMax 42 Reduce 774
+             776:    679(ptr) AccessChain 34(data) 772 46 38
+                              Store 776 775
+             777:      6(int) Load 8(invocation)
+             778:    686(ptr) AccessChain 34(data) 46 46
+             779:  20(i8vec4) Load 778
+             780: 685(i8vec2) VectorShuffle 779 779 0 1
+             781: 685(i8vec2) GroupNonUniformUMax 42 Reduce 780
+             782:    679(ptr) AccessChain 34(data) 777 46 38
+             783:  19(int8_t) CompositeExtract 781 0
+                              Store 782 783
+             784:    679(ptr) AccessChain 34(data) 777 46 55
+             785:  19(int8_t) CompositeExtract 781 1
+                              Store 784 785
+             786:      6(int) Load 8(invocation)
+             787:    686(ptr) AccessChain 34(data) 59 46
+             788:  20(i8vec4) Load 787
+             789: 696(i8vec3) VectorShuffle 788 788 0 1 2
+             790: 696(i8vec3) GroupNonUniformUMax 42 Reduce 789
+             791:    679(ptr) AccessChain 34(data) 786 46 38
+             792:  19(int8_t) CompositeExtract 790 0
+                              Store 791 792
+             793:    679(ptr) AccessChain 34(data) 786 46 55
+             794:  19(int8_t) CompositeExtract 790 1
+                              Store 793 794
+             795:    679(ptr) AccessChain 34(data) 786 46 69
+             796:  19(int8_t) CompositeExtract 790 2
+                              Store 795 796
+             797:      6(int) Load 8(invocation)
+             798:    686(ptr) AccessChain 34(data) 73 46
+             799:  20(i8vec4) Load 798
+             800:  20(i8vec4) GroupNonUniformUMax 42 Reduce 799
+             801:    686(ptr) AccessChain 34(data) 797 46
+                              Store 801 800
+             802:      6(int) Load 8(invocation)
+             803:    679(ptr) AccessChain 34(data) 37 46 38
+             804:  19(int8_t) Load 803
+             805:  19(int8_t) GroupNonUniformBitwiseAnd 42 Reduce 804
+             806:    679(ptr) AccessChain 34(data) 802 46 38
+                              Store 806 805
+             807:      6(int) Load 8(invocation)
+             808:    686(ptr) AccessChain 34(data) 46 46
+             809:  20(i8vec4) Load 808
+             810: 685(i8vec2) VectorShuffle 809 809 0 1
+             811: 685(i8vec2) GroupNonUniformBitwiseAnd 42 Reduce 810
+             812:    679(ptr) AccessChain 34(data) 807 46 38
+             813:  19(int8_t) CompositeExtract 811 0
+                              Store 812 813
+             814:    679(ptr) AccessChain 34(data) 807 46 55
+             815:  19(int8_t) CompositeExtract 811 1
+                              Store 814 815
+             816:      6(int) Load 8(invocation)
+             817:    686(ptr) AccessChain 34(data) 59 46
+             818:  20(i8vec4) Load 817
+             819: 696(i8vec3) VectorShuffle 818 818 0 1 2
+             820: 696(i8vec3) GroupNonUniformBitwiseAnd 42 Reduce 819
+             821:    679(ptr) AccessChain 34(data) 816 46 38
+             822:  19(int8_t) CompositeExtract 820 0
+                              Store 821 822
+             823:    679(ptr) AccessChain 34(data) 816 46 55
+             824:  19(int8_t) CompositeExtract 820 1
+                              Store 823 824
+             825:    679(ptr) AccessChain 34(data) 816 46 69
+             826:  19(int8_t) CompositeExtract 820 2
+                              Store 825 826
+             827:      6(int) Load 8(invocation)
+             828:    686(ptr) AccessChain 34(data) 73 46
+             829:  20(i8vec4) Load 828
+             830:  20(i8vec4) GroupNonUniformBitwiseAnd 42 Reduce 829
+             831:    686(ptr) AccessChain 34(data) 827 46
+                              Store 831 830
+             832:      6(int) Load 8(invocation)
+             833:    679(ptr) AccessChain 34(data) 37 46 38
+             834:  19(int8_t) Load 833
+             835:  19(int8_t) GroupNonUniformBitwiseOr 42 Reduce 834
+             836:    679(ptr) AccessChain 34(data) 832 46 38
+                              Store 836 835
+             837:      6(int) Load 8(invocation)
+             838:    686(ptr) AccessChain 34(data) 46 46
+             839:  20(i8vec4) Load 838
+             840: 685(i8vec2) VectorShuffle 839 839 0 1
+             841: 685(i8vec2) GroupNonUniformBitwiseOr 42 Reduce 840
+             842:    679(ptr) AccessChain 34(data) 837 46 38
+             843:  19(int8_t) CompositeExtract 841 0
+                              Store 842 843
+             844:    679(ptr) AccessChain 34(data) 837 46 55
+             845:  19(int8_t) CompositeExtract 841 1
+                              Store 844 845
+             846:      6(int) Load 8(invocation)
+             847:    686(ptr) AccessChain 34(data) 59 46
+             848:  20(i8vec4) Load 847
+             849: 696(i8vec3) VectorShuffle 848 848 0 1 2
+             850: 696(i8vec3) GroupNonUniformBitwiseOr 42 Reduce 849
+             851:    679(ptr) AccessChain 34(data) 846 46 38
+             852:  19(int8_t) CompositeExtract 850 0
+                              Store 851 852
+             853:    679(ptr) AccessChain 34(data) 846 46 55
+             854:  19(int8_t) CompositeExtract 850 1
+                              Store 853 854
+             855:    679(ptr) AccessChain 34(data) 846 46 69
+             856:  19(int8_t) CompositeExtract 850 2
+                              Store 855 856
+             857:      6(int) Load 8(invocation)
+             858:    686(ptr) AccessChain 34(data) 73 46
+             859:  20(i8vec4) Load 858
+             860:  20(i8vec4) GroupNonUniformBitwiseOr 42 Reduce 859
+             861:    686(ptr) AccessChain 34(data) 857 46
+                              Store 861 860
+             862:      6(int) Load 8(invocation)
+             863:    679(ptr) AccessChain 34(data) 37 46 38
+             864:  19(int8_t) Load 863
+             865:  19(int8_t) GroupNonUniformBitwiseXor 42 Reduce 864
+             866:    679(ptr) AccessChain 34(data) 862 46 38
+                              Store 866 865
+             867:      6(int) Load 8(invocation)
+             868:    686(ptr) AccessChain 34(data) 46 46
+             869:  20(i8vec4) Load 868
+             870: 685(i8vec2) VectorShuffle 869 869 0 1
+             871: 685(i8vec2) GroupNonUniformBitwiseXor 42 Reduce 870
+             872:    679(ptr) AccessChain 34(data) 867 46 38
+             873:  19(int8_t) CompositeExtract 871 0
+                              Store 872 873
+             874:    679(ptr) AccessChain 34(data) 867 46 55
+             875:  19(int8_t) CompositeExtract 871 1
+                              Store 874 875
+             876:      6(int) Load 8(invocation)
+             877:    686(ptr) AccessChain 34(data) 59 46
+             878:  20(i8vec4) Load 877
+             879: 696(i8vec3) VectorShuffle 878 878 0 1 2
+             880: 696(i8vec3) GroupNonUniformBitwiseXor 42 Reduce 879
+             881:    679(ptr) AccessChain 34(data) 876 46 38
+             882:  19(int8_t) CompositeExtract 880 0
+                              Store 881 882
+             883:    679(ptr) AccessChain 34(data) 876 46 55
+             884:  19(int8_t) CompositeExtract 880 1
+                              Store 883 884
+             885:    679(ptr) AccessChain 34(data) 876 46 69
+             886:  19(int8_t) CompositeExtract 880 2
+                              Store 885 886
              887:      6(int) Load 8(invocation)
-             888:    600(ptr) AccessChain 34(data) 46 46
+             888:    686(ptr) AccessChain 34(data) 73 46
              889:  20(i8vec4) Load 888
-             890: 599(i8vec2) VectorShuffle 889 889 0 1
-             891: 599(i8vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 890
-             892:    600(ptr) AccessChain 34(data) 887 46
-             893:  20(i8vec4) Load 892
-             894:  20(i8vec4) VectorShuffle 893 891 4 5 2 3
-                              Store 892 894
-             895:      6(int) Load 8(invocation)
-             896:    600(ptr) AccessChain 34(data) 57 46
-             897:  20(i8vec4) Load 896
-             898: 609(i8vec3) VectorShuffle 897 897 0 1 2
-             899: 609(i8vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 898
-             900:    600(ptr) AccessChain 34(data) 895 46
-             901:  20(i8vec4) Load 900
-             902:  20(i8vec4) VectorShuffle 901 899 4 5 6 3
-                              Store 900 902
-             903:      6(int) Load 8(invocation)
-             904:    600(ptr) AccessChain 34(data) 67 46
-             905:  20(i8vec4) Load 904
-             906:  20(i8vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 905
-             907:    600(ptr) AccessChain 34(data) 903 46
-                              Store 907 906
-             908:      6(int) Load 8(invocation)
-             909:    593(ptr) AccessChain 34(data) 37 46 38
-             910:  19(int8_t) Load 909
-             911:  19(int8_t) GroupNonUniformBitwiseOr 42 InclusiveScan 910
-             912:    593(ptr) AccessChain 34(data) 908 46 38
-                              Store 912 911
-             913:      6(int) Load 8(invocation)
-             914:    600(ptr) AccessChain 34(data) 46 46
-             915:  20(i8vec4) Load 914
-             916: 599(i8vec2) VectorShuffle 915 915 0 1
-             917: 599(i8vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 916
-             918:    600(ptr) AccessChain 34(data) 913 46
+             890:  20(i8vec4) GroupNonUniformBitwiseXor 42 Reduce 889
+             891:    686(ptr) AccessChain 34(data) 887 46
+                              Store 891 890
+             892:      6(int) Load 8(invocation)
+             893:    679(ptr) AccessChain 34(data) 37 46 38
+             894:  19(int8_t) Load 893
+             895:  19(int8_t) GroupNonUniformIAdd 42 InclusiveScan 894
+             896:    679(ptr) AccessChain 34(data) 892 46 38
+                              Store 896 895
+             897:      6(int) Load 8(invocation)
+             898:    686(ptr) AccessChain 34(data) 46 46
+             899:  20(i8vec4) Load 898
+             900: 685(i8vec2) VectorShuffle 899 899 0 1
+             901: 685(i8vec2) GroupNonUniformIAdd 42 InclusiveScan 900
+             902:    679(ptr) AccessChain 34(data) 897 46 38
+             903:  19(int8_t) CompositeExtract 901 0
+                              Store 902 903
+             904:    679(ptr) AccessChain 34(data) 897 46 55
+             905:  19(int8_t) CompositeExtract 901 1
+                              Store 904 905
+             906:      6(int) Load 8(invocation)
+             907:    686(ptr) AccessChain 34(data) 59 46
+             908:  20(i8vec4) Load 907
+             909: 696(i8vec3) VectorShuffle 908 908 0 1 2
+             910: 696(i8vec3) GroupNonUniformIAdd 42 InclusiveScan 909
+             911:    679(ptr) AccessChain 34(data) 906 46 38
+             912:  19(int8_t) CompositeExtract 910 0
+                              Store 911 912
+             913:    679(ptr) AccessChain 34(data) 906 46 55
+             914:  19(int8_t) CompositeExtract 910 1
+                              Store 913 914
+             915:    679(ptr) AccessChain 34(data) 906 46 69
+             916:  19(int8_t) CompositeExtract 910 2
+                              Store 915 916
+             917:      6(int) Load 8(invocation)
+             918:    686(ptr) AccessChain 34(data) 73 46
              919:  20(i8vec4) Load 918
-             920:  20(i8vec4) VectorShuffle 919 917 4 5 2 3
-                              Store 918 920
-             921:      6(int) Load 8(invocation)
-             922:    600(ptr) AccessChain 34(data) 57 46
-             923:  20(i8vec4) Load 922
-             924: 609(i8vec3) VectorShuffle 923 923 0 1 2
-             925: 609(i8vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 924
-             926:    600(ptr) AccessChain 34(data) 921 46
-             927:  20(i8vec4) Load 926
-             928:  20(i8vec4) VectorShuffle 927 925 4 5 6 3
-                              Store 926 928
-             929:      6(int) Load 8(invocation)
-             930:    600(ptr) AccessChain 34(data) 67 46
-             931:  20(i8vec4) Load 930
-             932:  20(i8vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 931
-             933:    600(ptr) AccessChain 34(data) 929 46
-                              Store 933 932
-             934:      6(int) Load 8(invocation)
-             935:    593(ptr) AccessChain 34(data) 37 46 38
-             936:  19(int8_t) Load 935
-             937:  19(int8_t) GroupNonUniformBitwiseXor 42 InclusiveScan 936
-             938:    593(ptr) AccessChain 34(data) 934 46 38
-                              Store 938 937
-             939:      6(int) Load 8(invocation)
-             940:    600(ptr) AccessChain 34(data) 46 46
-             941:  20(i8vec4) Load 940
-             942: 599(i8vec2) VectorShuffle 941 941 0 1
-             943: 599(i8vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 942
-             944:    600(ptr) AccessChain 34(data) 939 46
-             945:  20(i8vec4) Load 944
-             946:  20(i8vec4) VectorShuffle 945 943 4 5 2 3
-                              Store 944 946
+             920:  20(i8vec4) GroupNonUniformIAdd 42 InclusiveScan 919
+             921:    686(ptr) AccessChain 34(data) 917 46
+                              Store 921 920
+             922:      6(int) Load 8(invocation)
+             923:    679(ptr) AccessChain 34(data) 37 46 38
+             924:  19(int8_t) Load 923
+             925:  19(int8_t) GroupNonUniformIMul 42 InclusiveScan 924
+             926:    679(ptr) AccessChain 34(data) 922 46 38
+                              Store 926 925
+             927:      6(int) Load 8(invocation)
+             928:    686(ptr) AccessChain 34(data) 46 46
+             929:  20(i8vec4) Load 928
+             930: 685(i8vec2) VectorShuffle 929 929 0 1
+             931: 685(i8vec2) GroupNonUniformIMul 42 InclusiveScan 930
+             932:    679(ptr) AccessChain 34(data) 927 46 38
+             933:  19(int8_t) CompositeExtract 931 0
+                              Store 932 933
+             934:    679(ptr) AccessChain 34(data) 927 46 55
+             935:  19(int8_t) CompositeExtract 931 1
+                              Store 934 935
+             936:      6(int) Load 8(invocation)
+             937:    686(ptr) AccessChain 34(data) 59 46
+             938:  20(i8vec4) Load 937
+             939: 696(i8vec3) VectorShuffle 938 938 0 1 2
+             940: 696(i8vec3) GroupNonUniformIMul 42 InclusiveScan 939
+             941:    679(ptr) AccessChain 34(data) 936 46 38
+             942:  19(int8_t) CompositeExtract 940 0
+                              Store 941 942
+             943:    679(ptr) AccessChain 34(data) 936 46 55
+             944:  19(int8_t) CompositeExtract 940 1
+                              Store 943 944
+             945:    679(ptr) AccessChain 34(data) 936 46 69
+             946:  19(int8_t) CompositeExtract 940 2
+                              Store 945 946
              947:      6(int) Load 8(invocation)
-             948:    600(ptr) AccessChain 34(data) 57 46
+             948:    686(ptr) AccessChain 34(data) 73 46
              949:  20(i8vec4) Load 948
-             950: 609(i8vec3) VectorShuffle 949 949 0 1 2
-             951: 609(i8vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 950
-             952:    600(ptr) AccessChain 34(data) 947 46
-             953:  20(i8vec4) Load 952
-             954:  20(i8vec4) VectorShuffle 953 951 4 5 6 3
-                              Store 952 954
-             955:      6(int) Load 8(invocation)
-             956:    600(ptr) AccessChain 34(data) 67 46
-             957:  20(i8vec4) Load 956
-             958:  20(i8vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 957
-             959:    600(ptr) AccessChain 34(data) 955 46
-                              Store 959 958
-             960:      6(int) Load 8(invocation)
-             961:    593(ptr) AccessChain 34(data) 37 46 38
-             962:  19(int8_t) Load 961
-             963:  19(int8_t) GroupNonUniformIAdd 42 ExclusiveScan 962
-             964:    593(ptr) AccessChain 34(data) 960 46 38
-                              Store 964 963
-             965:      6(int) Load 8(invocation)
-             966:    600(ptr) AccessChain 34(data) 46 46
-             967:  20(i8vec4) Load 966
-             968: 599(i8vec2) VectorShuffle 967 967 0 1
-             969: 599(i8vec2) GroupNonUniformIAdd 42 ExclusiveScan 968
-             970:    600(ptr) AccessChain 34(data) 965 46
-             971:  20(i8vec4) Load 970
-             972:  20(i8vec4) VectorShuffle 971 969 4 5 2 3
-                              Store 970 972
-             973:      6(int) Load 8(invocation)
-             974:    600(ptr) AccessChain 34(data) 57 46
-             975:  20(i8vec4) Load 974
-             976: 609(i8vec3) VectorShuffle 975 975 0 1 2
-             977: 609(i8vec3) GroupNonUniformIAdd 42 ExclusiveScan 976
-             978:    600(ptr) AccessChain 34(data) 973 46
+             950:  20(i8vec4) GroupNonUniformIMul 42 InclusiveScan 949
+             951:    686(ptr) AccessChain 34(data) 947 46
+                              Store 951 950
+             952:      6(int) Load 8(invocation)
+             953:    679(ptr) AccessChain 34(data) 37 46 38
+             954:  19(int8_t) Load 953
+             955:  19(int8_t) GroupNonUniformUMin 42 InclusiveScan 954
+             956:    679(ptr) AccessChain 34(data) 952 46 38
+                              Store 956 955
+             957:      6(int) Load 8(invocation)
+             958:    686(ptr) AccessChain 34(data) 46 46
+             959:  20(i8vec4) Load 958
+             960: 685(i8vec2) VectorShuffle 959 959 0 1
+             961: 685(i8vec2) GroupNonUniformUMin 42 InclusiveScan 960
+             962:    679(ptr) AccessChain 34(data) 957 46 38
+             963:  19(int8_t) CompositeExtract 961 0
+                              Store 962 963
+             964:    679(ptr) AccessChain 34(data) 957 46 55
+             965:  19(int8_t) CompositeExtract 961 1
+                              Store 964 965
+             966:      6(int) Load 8(invocation)
+             967:    686(ptr) AccessChain 34(data) 59 46
+             968:  20(i8vec4) Load 967
+             969: 696(i8vec3) VectorShuffle 968 968 0 1 2
+             970: 696(i8vec3) GroupNonUniformUMin 42 InclusiveScan 969
+             971:    679(ptr) AccessChain 34(data) 966 46 38
+             972:  19(int8_t) CompositeExtract 970 0
+                              Store 971 972
+             973:    679(ptr) AccessChain 34(data) 966 46 55
+             974:  19(int8_t) CompositeExtract 970 1
+                              Store 973 974
+             975:    679(ptr) AccessChain 34(data) 966 46 69
+             976:  19(int8_t) CompositeExtract 970 2
+                              Store 975 976
+             977:      6(int) Load 8(invocation)
+             978:    686(ptr) AccessChain 34(data) 73 46
              979:  20(i8vec4) Load 978
-             980:  20(i8vec4) VectorShuffle 979 977 4 5 6 3
-                              Store 978 980
-             981:      6(int) Load 8(invocation)
-             982:    600(ptr) AccessChain 34(data) 67 46
-             983:  20(i8vec4) Load 982
-             984:  20(i8vec4) GroupNonUniformIAdd 42 ExclusiveScan 983
-             985:    600(ptr) AccessChain 34(data) 981 46
-                              Store 985 984
-             986:      6(int) Load 8(invocation)
-             987:    593(ptr) AccessChain 34(data) 37 46 38
-             988:  19(int8_t) Load 987
-             989:  19(int8_t) GroupNonUniformIMul 42 ExclusiveScan 988
-             990:    593(ptr) AccessChain 34(data) 986 46 38
-                              Store 990 989
-             991:      6(int) Load 8(invocation)
-             992:    600(ptr) AccessChain 34(data) 46 46
-             993:  20(i8vec4) Load 992
-             994: 599(i8vec2) VectorShuffle 993 993 0 1
-             995: 599(i8vec2) GroupNonUniformIMul 42 ExclusiveScan 994
-             996:    600(ptr) AccessChain 34(data) 991 46
-             997:  20(i8vec4) Load 996
-             998:  20(i8vec4) VectorShuffle 997 995 4 5 2 3
-                              Store 996 998
-             999:      6(int) Load 8(invocation)
-            1000:    600(ptr) AccessChain 34(data) 57 46
-            1001:  20(i8vec4) Load 1000
-            1002: 609(i8vec3) VectorShuffle 1001 1001 0 1 2
-            1003: 609(i8vec3) GroupNonUniformIMul 42 ExclusiveScan 1002
-            1004:    600(ptr) AccessChain 34(data) 999 46
-            1005:  20(i8vec4) Load 1004
-            1006:  20(i8vec4) VectorShuffle 1005 1003 4 5 6 3
-                              Store 1004 1006
+             980:  20(i8vec4) GroupNonUniformUMin 42 InclusiveScan 979
+             981:    686(ptr) AccessChain 34(data) 977 46
+                              Store 981 980
+             982:      6(int) Load 8(invocation)
+             983:    679(ptr) AccessChain 34(data) 37 46 38
+             984:  19(int8_t) Load 983
+             985:  19(int8_t) GroupNonUniformUMax 42 InclusiveScan 984
+             986:    679(ptr) AccessChain 34(data) 982 46 38
+                              Store 986 985
+             987:      6(int) Load 8(invocation)
+             988:    686(ptr) AccessChain 34(data) 46 46
+             989:  20(i8vec4) Load 988
+             990: 685(i8vec2) VectorShuffle 989 989 0 1
+             991: 685(i8vec2) GroupNonUniformUMax 42 InclusiveScan 990
+             992:    679(ptr) AccessChain 34(data) 987 46 38
+             993:  19(int8_t) CompositeExtract 991 0
+                              Store 992 993
+             994:    679(ptr) AccessChain 34(data) 987 46 55
+             995:  19(int8_t) CompositeExtract 991 1
+                              Store 994 995
+             996:      6(int) Load 8(invocation)
+             997:    686(ptr) AccessChain 34(data) 59 46
+             998:  20(i8vec4) Load 997
+             999: 696(i8vec3) VectorShuffle 998 998 0 1 2
+            1000: 696(i8vec3) GroupNonUniformUMax 42 InclusiveScan 999
+            1001:    679(ptr) AccessChain 34(data) 996 46 38
+            1002:  19(int8_t) CompositeExtract 1000 0
+                              Store 1001 1002
+            1003:    679(ptr) AccessChain 34(data) 996 46 55
+            1004:  19(int8_t) CompositeExtract 1000 1
+                              Store 1003 1004
+            1005:    679(ptr) AccessChain 34(data) 996 46 69
+            1006:  19(int8_t) CompositeExtract 1000 2
+                              Store 1005 1006
             1007:      6(int) Load 8(invocation)
-            1008:    600(ptr) AccessChain 34(data) 67 46
+            1008:    686(ptr) AccessChain 34(data) 73 46
             1009:  20(i8vec4) Load 1008
-            1010:  20(i8vec4) GroupNonUniformIMul 42 ExclusiveScan 1009
-            1011:    600(ptr) AccessChain 34(data) 1007 46
+            1010:  20(i8vec4) GroupNonUniformUMax 42 InclusiveScan 1009
+            1011:    686(ptr) AccessChain 34(data) 1007 46
                               Store 1011 1010
             1012:      6(int) Load 8(invocation)
-            1013:    593(ptr) AccessChain 34(data) 37 46 38
+            1013:    679(ptr) AccessChain 34(data) 37 46 38
             1014:  19(int8_t) Load 1013
-            1015:  19(int8_t) GroupNonUniformUMin 42 ExclusiveScan 1014
-            1016:    593(ptr) AccessChain 34(data) 1012 46 38
+            1015:  19(int8_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 1014
+            1016:    679(ptr) AccessChain 34(data) 1012 46 38
                               Store 1016 1015
             1017:      6(int) Load 8(invocation)
-            1018:    600(ptr) AccessChain 34(data) 46 46
+            1018:    686(ptr) AccessChain 34(data) 46 46
             1019:  20(i8vec4) Load 1018
-            1020: 599(i8vec2) VectorShuffle 1019 1019 0 1
-            1021: 599(i8vec2) GroupNonUniformUMin 42 ExclusiveScan 1020
-            1022:    600(ptr) AccessChain 34(data) 1017 46
-            1023:  20(i8vec4) Load 1022
-            1024:  20(i8vec4) VectorShuffle 1023 1021 4 5 2 3
-                              Store 1022 1024
-            1025:      6(int) Load 8(invocation)
-            1026:    600(ptr) AccessChain 34(data) 57 46
-            1027:  20(i8vec4) Load 1026
-            1028: 609(i8vec3) VectorShuffle 1027 1027 0 1 2
-            1029: 609(i8vec3) GroupNonUniformUMin 42 ExclusiveScan 1028
-            1030:    600(ptr) AccessChain 34(data) 1025 46
-            1031:  20(i8vec4) Load 1030
-            1032:  20(i8vec4) VectorShuffle 1031 1029 4 5 6 3
-                              Store 1030 1032
-            1033:      6(int) Load 8(invocation)
-            1034:    600(ptr) AccessChain 34(data) 67 46
-            1035:  20(i8vec4) Load 1034
-            1036:  20(i8vec4) GroupNonUniformUMin 42 ExclusiveScan 1035
-            1037:    600(ptr) AccessChain 34(data) 1033 46
-                              Store 1037 1036
-            1038:      6(int) Load 8(invocation)
-            1039:    593(ptr) AccessChain 34(data) 37 46 38
-            1040:  19(int8_t) Load 1039
-            1041:  19(int8_t) GroupNonUniformUMax 42 ExclusiveScan 1040
-            1042:    593(ptr) AccessChain 34(data) 1038 46 38
-                              Store 1042 1041
-            1043:      6(int) Load 8(invocation)
-            1044:    600(ptr) AccessChain 34(data) 46 46
-            1045:  20(i8vec4) Load 1044
-            1046: 599(i8vec2) VectorShuffle 1045 1045 0 1
-            1047: 599(i8vec2) GroupNonUniformUMax 42 ExclusiveScan 1046
-            1048:    600(ptr) AccessChain 34(data) 1043 46
+            1020: 685(i8vec2) VectorShuffle 1019 1019 0 1
+            1021: 685(i8vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 1020
+            1022:    679(ptr) AccessChain 34(data) 1017 46 38
+            1023:  19(int8_t) CompositeExtract 1021 0
+                              Store 1022 1023
+            1024:    679(ptr) AccessChain 34(data) 1017 46 55
+            1025:  19(int8_t) CompositeExtract 1021 1
+                              Store 1024 1025
+            1026:      6(int) Load 8(invocation)
+            1027:    686(ptr) AccessChain 34(data) 59 46
+            1028:  20(i8vec4) Load 1027
+            1029: 696(i8vec3) VectorShuffle 1028 1028 0 1 2
+            1030: 696(i8vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 1029
+            1031:    679(ptr) AccessChain 34(data) 1026 46 38
+            1032:  19(int8_t) CompositeExtract 1030 0
+                              Store 1031 1032
+            1033:    679(ptr) AccessChain 34(data) 1026 46 55
+            1034:  19(int8_t) CompositeExtract 1030 1
+                              Store 1033 1034
+            1035:    679(ptr) AccessChain 34(data) 1026 46 69
+            1036:  19(int8_t) CompositeExtract 1030 2
+                              Store 1035 1036
+            1037:      6(int) Load 8(invocation)
+            1038:    686(ptr) AccessChain 34(data) 73 46
+            1039:  20(i8vec4) Load 1038
+            1040:  20(i8vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 1039
+            1041:    686(ptr) AccessChain 34(data) 1037 46
+                              Store 1041 1040
+            1042:      6(int) Load 8(invocation)
+            1043:    679(ptr) AccessChain 34(data) 37 46 38
+            1044:  19(int8_t) Load 1043
+            1045:  19(int8_t) GroupNonUniformBitwiseOr 42 InclusiveScan 1044
+            1046:    679(ptr) AccessChain 34(data) 1042 46 38
+                              Store 1046 1045
+            1047:      6(int) Load 8(invocation)
+            1048:    686(ptr) AccessChain 34(data) 46 46
             1049:  20(i8vec4) Load 1048
-            1050:  20(i8vec4) VectorShuffle 1049 1047 4 5 2 3
-                              Store 1048 1050
-            1051:      6(int) Load 8(invocation)
-            1052:    600(ptr) AccessChain 34(data) 57 46
-            1053:  20(i8vec4) Load 1052
-            1054: 609(i8vec3) VectorShuffle 1053 1053 0 1 2
-            1055: 609(i8vec3) GroupNonUniformUMax 42 ExclusiveScan 1054
-            1056:    600(ptr) AccessChain 34(data) 1051 46
-            1057:  20(i8vec4) Load 1056
-            1058:  20(i8vec4) VectorShuffle 1057 1055 4 5 6 3
-                              Store 1056 1058
-            1059:      6(int) Load 8(invocation)
-            1060:    600(ptr) AccessChain 34(data) 67 46
-            1061:  20(i8vec4) Load 1060
-            1062:  20(i8vec4) GroupNonUniformUMax 42 ExclusiveScan 1061
-            1063:    600(ptr) AccessChain 34(data) 1059 46
-                              Store 1063 1062
-            1064:      6(int) Load 8(invocation)
-            1065:    593(ptr) AccessChain 34(data) 37 46 38
-            1066:  19(int8_t) Load 1065
-            1067:  19(int8_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1066
-            1068:    593(ptr) AccessChain 34(data) 1064 46 38
-                              Store 1068 1067
-            1069:      6(int) Load 8(invocation)
-            1070:    600(ptr) AccessChain 34(data) 46 46
-            1071:  20(i8vec4) Load 1070
-            1072: 599(i8vec2) VectorShuffle 1071 1071 0 1
-            1073: 599(i8vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1072
-            1074:    600(ptr) AccessChain 34(data) 1069 46
-            1075:  20(i8vec4) Load 1074
-            1076:  20(i8vec4) VectorShuffle 1075 1073 4 5 2 3
-                              Store 1074 1076
+            1050: 685(i8vec2) VectorShuffle 1049 1049 0 1
+            1051: 685(i8vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 1050
+            1052:    679(ptr) AccessChain 34(data) 1047 46 38
+            1053:  19(int8_t) CompositeExtract 1051 0
+                              Store 1052 1053
+            1054:    679(ptr) AccessChain 34(data) 1047 46 55
+            1055:  19(int8_t) CompositeExtract 1051 1
+                              Store 1054 1055
+            1056:      6(int) Load 8(invocation)
+            1057:    686(ptr) AccessChain 34(data) 59 46
+            1058:  20(i8vec4) Load 1057
+            1059: 696(i8vec3) VectorShuffle 1058 1058 0 1 2
+            1060: 696(i8vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 1059
+            1061:    679(ptr) AccessChain 34(data) 1056 46 38
+            1062:  19(int8_t) CompositeExtract 1060 0
+                              Store 1061 1062
+            1063:    679(ptr) AccessChain 34(data) 1056 46 55
+            1064:  19(int8_t) CompositeExtract 1060 1
+                              Store 1063 1064
+            1065:    679(ptr) AccessChain 34(data) 1056 46 69
+            1066:  19(int8_t) CompositeExtract 1060 2
+                              Store 1065 1066
+            1067:      6(int) Load 8(invocation)
+            1068:    686(ptr) AccessChain 34(data) 73 46
+            1069:  20(i8vec4) Load 1068
+            1070:  20(i8vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 1069
+            1071:    686(ptr) AccessChain 34(data) 1067 46
+                              Store 1071 1070
+            1072:      6(int) Load 8(invocation)
+            1073:    679(ptr) AccessChain 34(data) 37 46 38
+            1074:  19(int8_t) Load 1073
+            1075:  19(int8_t) GroupNonUniformBitwiseXor 42 InclusiveScan 1074
+            1076:    679(ptr) AccessChain 34(data) 1072 46 38
+                              Store 1076 1075
             1077:      6(int) Load 8(invocation)
-            1078:    600(ptr) AccessChain 34(data) 57 46
+            1078:    686(ptr) AccessChain 34(data) 46 46
             1079:  20(i8vec4) Load 1078
-            1080: 609(i8vec3) VectorShuffle 1079 1079 0 1 2
-            1081: 609(i8vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1080
-            1082:    600(ptr) AccessChain 34(data) 1077 46
-            1083:  20(i8vec4) Load 1082
-            1084:  20(i8vec4) VectorShuffle 1083 1081 4 5 6 3
-                              Store 1082 1084
-            1085:      6(int) Load 8(invocation)
-            1086:    600(ptr) AccessChain 34(data) 67 46
-            1087:  20(i8vec4) Load 1086
-            1088:  20(i8vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1087
-            1089:    600(ptr) AccessChain 34(data) 1085 46
-                              Store 1089 1088
-            1090:      6(int) Load 8(invocation)
-            1091:    593(ptr) AccessChain 34(data) 37 46 38
-            1092:  19(int8_t) Load 1091
-            1093:  19(int8_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 1092
-            1094:    593(ptr) AccessChain 34(data) 1090 46 38
-                              Store 1094 1093
-            1095:      6(int) Load 8(invocation)
-            1096:    600(ptr) AccessChain 34(data) 46 46
-            1097:  20(i8vec4) Load 1096
-            1098: 599(i8vec2) VectorShuffle 1097 1097 0 1
-            1099: 599(i8vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 1098
-            1100:    600(ptr) AccessChain 34(data) 1095 46
-            1101:  20(i8vec4) Load 1100
-            1102:  20(i8vec4) VectorShuffle 1101 1099 4 5 2 3
-                              Store 1100 1102
-            1103:      6(int) Load 8(invocation)
-            1104:    600(ptr) AccessChain 34(data) 57 46
-            1105:  20(i8vec4) Load 1104
-            1106: 609(i8vec3) VectorShuffle 1105 1105 0 1 2
-            1107: 609(i8vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 1106
-            1108:    600(ptr) AccessChain 34(data) 1103 46
+            1080: 685(i8vec2) VectorShuffle 1079 1079 0 1
+            1081: 685(i8vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 1080
+            1082:    679(ptr) AccessChain 34(data) 1077 46 38
+            1083:  19(int8_t) CompositeExtract 1081 0
+                              Store 1082 1083
+            1084:    679(ptr) AccessChain 34(data) 1077 46 55
+            1085:  19(int8_t) CompositeExtract 1081 1
+                              Store 1084 1085
+            1086:      6(int) Load 8(invocation)
+            1087:    686(ptr) AccessChain 34(data) 59 46
+            1088:  20(i8vec4) Load 1087
+            1089: 696(i8vec3) VectorShuffle 1088 1088 0 1 2
+            1090: 696(i8vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 1089
+            1091:    679(ptr) AccessChain 34(data) 1086 46 38
+            1092:  19(int8_t) CompositeExtract 1090 0
+                              Store 1091 1092
+            1093:    679(ptr) AccessChain 34(data) 1086 46 55
+            1094:  19(int8_t) CompositeExtract 1090 1
+                              Store 1093 1094
+            1095:    679(ptr) AccessChain 34(data) 1086 46 69
+            1096:  19(int8_t) CompositeExtract 1090 2
+                              Store 1095 1096
+            1097:      6(int) Load 8(invocation)
+            1098:    686(ptr) AccessChain 34(data) 73 46
+            1099:  20(i8vec4) Load 1098
+            1100:  20(i8vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 1099
+            1101:    686(ptr) AccessChain 34(data) 1097 46
+                              Store 1101 1100
+            1102:      6(int) Load 8(invocation)
+            1103:    679(ptr) AccessChain 34(data) 37 46 38
+            1104:  19(int8_t) Load 1103
+            1105:  19(int8_t) GroupNonUniformIAdd 42 ExclusiveScan 1104
+            1106:    679(ptr) AccessChain 34(data) 1102 46 38
+                              Store 1106 1105
+            1107:      6(int) Load 8(invocation)
+            1108:    686(ptr) AccessChain 34(data) 46 46
             1109:  20(i8vec4) Load 1108
-            1110:  20(i8vec4) VectorShuffle 1109 1107 4 5 6 3
-                              Store 1108 1110
-            1111:      6(int) Load 8(invocation)
-            1112:    600(ptr) AccessChain 34(data) 67 46
-            1113:  20(i8vec4) Load 1112
-            1114:  20(i8vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 1113
-            1115:    600(ptr) AccessChain 34(data) 1111 46
-                              Store 1115 1114
+            1110: 685(i8vec2) VectorShuffle 1109 1109 0 1
+            1111: 685(i8vec2) GroupNonUniformIAdd 42 ExclusiveScan 1110
+            1112:    679(ptr) AccessChain 34(data) 1107 46 38
+            1113:  19(int8_t) CompositeExtract 1111 0
+                              Store 1112 1113
+            1114:    679(ptr) AccessChain 34(data) 1107 46 55
+            1115:  19(int8_t) CompositeExtract 1111 1
+                              Store 1114 1115
             1116:      6(int) Load 8(invocation)
-            1117:    593(ptr) AccessChain 34(data) 37 46 38
-            1118:  19(int8_t) Load 1117
-            1119:  19(int8_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 1118
-            1120:    593(ptr) AccessChain 34(data) 1116 46 38
-                              Store 1120 1119
-            1121:      6(int) Load 8(invocation)
-            1122:    600(ptr) AccessChain 34(data) 46 46
-            1123:  20(i8vec4) Load 1122
-            1124: 599(i8vec2) VectorShuffle 1123 1123 0 1
-            1125: 599(i8vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 1124
-            1126:    600(ptr) AccessChain 34(data) 1121 46
-            1127:  20(i8vec4) Load 1126
-            1128:  20(i8vec4) VectorShuffle 1127 1125 4 5 2 3
-                              Store 1126 1128
-            1129:      6(int) Load 8(invocation)
-            1130:    600(ptr) AccessChain 34(data) 57 46
-            1131:  20(i8vec4) Load 1130
-            1132: 609(i8vec3) VectorShuffle 1131 1131 0 1 2
-            1133: 609(i8vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 1132
-            1134:    600(ptr) AccessChain 34(data) 1129 46
-            1135:  20(i8vec4) Load 1134
-            1136:  20(i8vec4) VectorShuffle 1135 1133 4 5 6 3
-                              Store 1134 1136
+            1117:    686(ptr) AccessChain 34(data) 59 46
+            1118:  20(i8vec4) Load 1117
+            1119: 696(i8vec3) VectorShuffle 1118 1118 0 1 2
+            1120: 696(i8vec3) GroupNonUniformIAdd 42 ExclusiveScan 1119
+            1121:    679(ptr) AccessChain 34(data) 1116 46 38
+            1122:  19(int8_t) CompositeExtract 1120 0
+                              Store 1121 1122
+            1123:    679(ptr) AccessChain 34(data) 1116 46 55
+            1124:  19(int8_t) CompositeExtract 1120 1
+                              Store 1123 1124
+            1125:    679(ptr) AccessChain 34(data) 1116 46 69
+            1126:  19(int8_t) CompositeExtract 1120 2
+                              Store 1125 1126
+            1127:      6(int) Load 8(invocation)
+            1128:    686(ptr) AccessChain 34(data) 73 46
+            1129:  20(i8vec4) Load 1128
+            1130:  20(i8vec4) GroupNonUniformIAdd 42 ExclusiveScan 1129
+            1131:    686(ptr) AccessChain 34(data) 1127 46
+                              Store 1131 1130
+            1132:      6(int) Load 8(invocation)
+            1133:    679(ptr) AccessChain 34(data) 37 46 38
+            1134:  19(int8_t) Load 1133
+            1135:  19(int8_t) GroupNonUniformIMul 42 ExclusiveScan 1134
+            1136:    679(ptr) AccessChain 34(data) 1132 46 38
+                              Store 1136 1135
             1137:      6(int) Load 8(invocation)
-            1138:    600(ptr) AccessChain 34(data) 67 46
+            1138:    686(ptr) AccessChain 34(data) 46 46
             1139:  20(i8vec4) Load 1138
-            1140:  20(i8vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 1139
-            1141:    600(ptr) AccessChain 34(data) 1137 46
-                              Store 1141 1140
-            1142:      6(int) Load 8(invocation)
-            1144:   1143(ptr) AccessChain 34(data) 37 57 38
-            1145: 21(int16_t) Load 1144
-            1146: 21(int16_t) GroupNonUniformIAdd 42 Reduce 1145
-            1147:   1143(ptr) AccessChain 34(data) 1142 57 38
-                              Store 1147 1146
-            1148:      6(int) Load 8(invocation)
-            1151:   1150(ptr) AccessChain 34(data) 46 57
-            1152: 22(i16vec4) Load 1151
-            1153:1149(i16vec2) VectorShuffle 1152 1152 0 1
-            1154:1149(i16vec2) GroupNonUniformIAdd 42 Reduce 1153
-            1155:   1150(ptr) AccessChain 34(data) 1148 57
-            1156: 22(i16vec4) Load 1155
-            1157: 22(i16vec4) VectorShuffle 1156 1154 4 5 2 3
-                              Store 1155 1157
-            1158:      6(int) Load 8(invocation)
-            1160:   1150(ptr) AccessChain 34(data) 57 57
-            1161: 22(i16vec4) Load 1160
-            1162:1159(i16vec3) VectorShuffle 1161 1161 0 1 2
-            1163:1159(i16vec3) GroupNonUniformIAdd 42 Reduce 1162
-            1164:   1150(ptr) AccessChain 34(data) 1158 57
-            1165: 22(i16vec4) Load 1164
-            1166: 22(i16vec4) VectorShuffle 1165 1163 4 5 6 3
-                              Store 1164 1166
+            1140: 685(i8vec2) VectorShuffle 1139 1139 0 1
+            1141: 685(i8vec2) GroupNonUniformIMul 42 ExclusiveScan 1140
+            1142:    679(ptr) AccessChain 34(data) 1137 46 38
+            1143:  19(int8_t) CompositeExtract 1141 0
+                              Store 1142 1143
+            1144:    679(ptr) AccessChain 34(data) 1137 46 55
+            1145:  19(int8_t) CompositeExtract 1141 1
+                              Store 1144 1145
+            1146:      6(int) Load 8(invocation)
+            1147:    686(ptr) AccessChain 34(data) 59 46
+            1148:  20(i8vec4) Load 1147
+            1149: 696(i8vec3) VectorShuffle 1148 1148 0 1 2
+            1150: 696(i8vec3) GroupNonUniformIMul 42 ExclusiveScan 1149
+            1151:    679(ptr) AccessChain 34(data) 1146 46 38
+            1152:  19(int8_t) CompositeExtract 1150 0
+                              Store 1151 1152
+            1153:    679(ptr) AccessChain 34(data) 1146 46 55
+            1154:  19(int8_t) CompositeExtract 1150 1
+                              Store 1153 1154
+            1155:    679(ptr) AccessChain 34(data) 1146 46 69
+            1156:  19(int8_t) CompositeExtract 1150 2
+                              Store 1155 1156
+            1157:      6(int) Load 8(invocation)
+            1158:    686(ptr) AccessChain 34(data) 73 46
+            1159:  20(i8vec4) Load 1158
+            1160:  20(i8vec4) GroupNonUniformIMul 42 ExclusiveScan 1159
+            1161:    686(ptr) AccessChain 34(data) 1157 46
+                              Store 1161 1160
+            1162:      6(int) Load 8(invocation)
+            1163:    679(ptr) AccessChain 34(data) 37 46 38
+            1164:  19(int8_t) Load 1163
+            1165:  19(int8_t) GroupNonUniformUMin 42 ExclusiveScan 1164
+            1166:    679(ptr) AccessChain 34(data) 1162 46 38
+                              Store 1166 1165
             1167:      6(int) Load 8(invocation)
-            1168:   1150(ptr) AccessChain 34(data) 67 57
-            1169: 22(i16vec4) Load 1168
-            1170: 22(i16vec4) GroupNonUniformIAdd 42 Reduce 1169
-            1171:   1150(ptr) AccessChain 34(data) 1167 57
-                              Store 1171 1170
-            1172:      6(int) Load 8(invocation)
-            1173:   1143(ptr) AccessChain 34(data) 37 57 38
-            1174: 21(int16_t) Load 1173
-            1175: 21(int16_t) GroupNonUniformIMul 42 Reduce 1174
-            1176:   1143(ptr) AccessChain 34(data) 1172 57 38
-                              Store 1176 1175
-            1177:      6(int) Load 8(invocation)
-            1178:   1150(ptr) AccessChain 34(data) 46 57
-            1179: 22(i16vec4) Load 1178
-            1180:1149(i16vec2) VectorShuffle 1179 1179 0 1
-            1181:1149(i16vec2) GroupNonUniformIMul 42 Reduce 1180
-            1182:   1150(ptr) AccessChain 34(data) 1177 57
-            1183: 22(i16vec4) Load 1182
-            1184: 22(i16vec4) VectorShuffle 1183 1181 4 5 2 3
-                              Store 1182 1184
-            1185:      6(int) Load 8(invocation)
-            1186:   1150(ptr) AccessChain 34(data) 57 57
-            1187: 22(i16vec4) Load 1186
-            1188:1159(i16vec3) VectorShuffle 1187 1187 0 1 2
-            1189:1159(i16vec3) GroupNonUniformIMul 42 Reduce 1188
-            1190:   1150(ptr) AccessChain 34(data) 1185 57
-            1191: 22(i16vec4) Load 1190
-            1192: 22(i16vec4) VectorShuffle 1191 1189 4 5 6 3
-                              Store 1190 1192
-            1193:      6(int) Load 8(invocation)
-            1194:   1150(ptr) AccessChain 34(data) 67 57
-            1195: 22(i16vec4) Load 1194
-            1196: 22(i16vec4) GroupNonUniformIMul 42 Reduce 1195
-            1197:   1150(ptr) AccessChain 34(data) 1193 57
-                              Store 1197 1196
-            1198:      6(int) Load 8(invocation)
-            1199:   1143(ptr) AccessChain 34(data) 37 57 38
-            1200: 21(int16_t) Load 1199
-            1201: 21(int16_t) GroupNonUniformSMin 42 Reduce 1200
-            1202:   1143(ptr) AccessChain 34(data) 1198 57 38
-                              Store 1202 1201
-            1203:      6(int) Load 8(invocation)
-            1204:   1150(ptr) AccessChain 34(data) 46 57
-            1205: 22(i16vec4) Load 1204
-            1206:1149(i16vec2) VectorShuffle 1205 1205 0 1
-            1207:1149(i16vec2) GroupNonUniformSMin 42 Reduce 1206
-            1208:   1150(ptr) AccessChain 34(data) 1203 57
-            1209: 22(i16vec4) Load 1208
-            1210: 22(i16vec4) VectorShuffle 1209 1207 4 5 2 3
-                              Store 1208 1210
-            1211:      6(int) Load 8(invocation)
-            1212:   1150(ptr) AccessChain 34(data) 57 57
-            1213: 22(i16vec4) Load 1212
-            1214:1159(i16vec3) VectorShuffle 1213 1213 0 1 2
-            1215:1159(i16vec3) GroupNonUniformSMin 42 Reduce 1214
-            1216:   1150(ptr) AccessChain 34(data) 1211 57
-            1217: 22(i16vec4) Load 1216
-            1218: 22(i16vec4) VectorShuffle 1217 1215 4 5 6 3
-                              Store 1216 1218
-            1219:      6(int) Load 8(invocation)
-            1220:   1150(ptr) AccessChain 34(data) 67 57
-            1221: 22(i16vec4) Load 1220
-            1222: 22(i16vec4) GroupNonUniformSMin 42 Reduce 1221
-            1223:   1150(ptr) AccessChain 34(data) 1219 57
-                              Store 1223 1222
-            1224:      6(int) Load 8(invocation)
-            1225:   1143(ptr) AccessChain 34(data) 37 57 38
-            1226: 21(int16_t) Load 1225
-            1227: 21(int16_t) GroupNonUniformSMax 42 Reduce 1226
-            1228:   1143(ptr) AccessChain 34(data) 1224 57 38
-                              Store 1228 1227
-            1229:      6(int) Load 8(invocation)
-            1230:   1150(ptr) AccessChain 34(data) 46 57
-            1231: 22(i16vec4) Load 1230
-            1232:1149(i16vec2) VectorShuffle 1231 1231 0 1
-            1233:1149(i16vec2) GroupNonUniformSMax 42 Reduce 1232
-            1234:   1150(ptr) AccessChain 34(data) 1229 57
-            1235: 22(i16vec4) Load 1234
-            1236: 22(i16vec4) VectorShuffle 1235 1233 4 5 2 3
-                              Store 1234 1236
-            1237:      6(int) Load 8(invocation)
-            1238:   1150(ptr) AccessChain 34(data) 57 57
-            1239: 22(i16vec4) Load 1238
-            1240:1159(i16vec3) VectorShuffle 1239 1239 0 1 2
-            1241:1159(i16vec3) GroupNonUniformSMax 42 Reduce 1240
-            1242:   1150(ptr) AccessChain 34(data) 1237 57
-            1243: 22(i16vec4) Load 1242
-            1244: 22(i16vec4) VectorShuffle 1243 1241 4 5 6 3
-                              Store 1242 1244
-            1245:      6(int) Load 8(invocation)
-            1246:   1150(ptr) AccessChain 34(data) 67 57
-            1247: 22(i16vec4) Load 1246
-            1248: 22(i16vec4) GroupNonUniformSMax 42 Reduce 1247
-            1249:   1150(ptr) AccessChain 34(data) 1245 57
-                              Store 1249 1248
-            1250:      6(int) Load 8(invocation)
-            1251:   1143(ptr) AccessChain 34(data) 37 57 38
-            1252: 21(int16_t) Load 1251
-            1253: 21(int16_t) GroupNonUniformBitwiseAnd 42 Reduce 1252
-            1254:   1143(ptr) AccessChain 34(data) 1250 57 38
-                              Store 1254 1253
-            1255:      6(int) Load 8(invocation)
-            1256:   1150(ptr) AccessChain 34(data) 46 57
-            1257: 22(i16vec4) Load 1256
-            1258:1149(i16vec2) VectorShuffle 1257 1257 0 1
-            1259:1149(i16vec2) GroupNonUniformBitwiseAnd 42 Reduce 1258
-            1260:   1150(ptr) AccessChain 34(data) 1255 57
-            1261: 22(i16vec4) Load 1260
-            1262: 22(i16vec4) VectorShuffle 1261 1259 4 5 2 3
-                              Store 1260 1262
-            1263:      6(int) Load 8(invocation)
-            1264:   1150(ptr) AccessChain 34(data) 57 57
-            1265: 22(i16vec4) Load 1264
-            1266:1159(i16vec3) VectorShuffle 1265 1265 0 1 2
-            1267:1159(i16vec3) GroupNonUniformBitwiseAnd 42 Reduce 1266
-            1268:   1150(ptr) AccessChain 34(data) 1263 57
-            1269: 22(i16vec4) Load 1268
-            1270: 22(i16vec4) VectorShuffle 1269 1267 4 5 6 3
-                              Store 1268 1270
-            1271:      6(int) Load 8(invocation)
-            1272:   1150(ptr) AccessChain 34(data) 67 57
-            1273: 22(i16vec4) Load 1272
-            1274: 22(i16vec4) GroupNonUniformBitwiseAnd 42 Reduce 1273
-            1275:   1150(ptr) AccessChain 34(data) 1271 57
-                              Store 1275 1274
-            1276:      6(int) Load 8(invocation)
-            1277:   1143(ptr) AccessChain 34(data) 37 57 38
-            1278: 21(int16_t) Load 1277
-            1279: 21(int16_t) GroupNonUniformBitwiseOr 42 Reduce 1278
-            1280:   1143(ptr) AccessChain 34(data) 1276 57 38
-                              Store 1280 1279
-            1281:      6(int) Load 8(invocation)
-            1282:   1150(ptr) AccessChain 34(data) 46 57
-            1283: 22(i16vec4) Load 1282
-            1284:1149(i16vec2) VectorShuffle 1283 1283 0 1
-            1285:1149(i16vec2) GroupNonUniformBitwiseOr 42 Reduce 1284
-            1286:   1150(ptr) AccessChain 34(data) 1281 57
-            1287: 22(i16vec4) Load 1286
-            1288: 22(i16vec4) VectorShuffle 1287 1285 4 5 2 3
-                              Store 1286 1288
-            1289:      6(int) Load 8(invocation)
-            1290:   1150(ptr) AccessChain 34(data) 57 57
-            1291: 22(i16vec4) Load 1290
-            1292:1159(i16vec3) VectorShuffle 1291 1291 0 1 2
-            1293:1159(i16vec3) GroupNonUniformBitwiseOr 42 Reduce 1292
-            1294:   1150(ptr) AccessChain 34(data) 1289 57
-            1295: 22(i16vec4) Load 1294
-            1296: 22(i16vec4) VectorShuffle 1295 1293 4 5 6 3
-                              Store 1294 1296
-            1297:      6(int) Load 8(invocation)
-            1298:   1150(ptr) AccessChain 34(data) 67 57
-            1299: 22(i16vec4) Load 1298
-            1300: 22(i16vec4) GroupNonUniformBitwiseOr 42 Reduce 1299
-            1301:   1150(ptr) AccessChain 34(data) 1297 57
-                              Store 1301 1300
-            1302:      6(int) Load 8(invocation)
-            1303:   1143(ptr) AccessChain 34(data) 37 57 38
-            1304: 21(int16_t) Load 1303
-            1305: 21(int16_t) GroupNonUniformBitwiseXor 42 Reduce 1304
-            1306:   1143(ptr) AccessChain 34(data) 1302 57 38
-                              Store 1306 1305
+            1168:    686(ptr) AccessChain 34(data) 46 46
+            1169:  20(i8vec4) Load 1168
+            1170: 685(i8vec2) VectorShuffle 1169 1169 0 1
+            1171: 685(i8vec2) GroupNonUniformUMin 42 ExclusiveScan 1170
+            1172:    679(ptr) AccessChain 34(data) 1167 46 38
+            1173:  19(int8_t) CompositeExtract 1171 0
+                              Store 1172 1173
+            1174:    679(ptr) AccessChain 34(data) 1167 46 55
+            1175:  19(int8_t) CompositeExtract 1171 1
+                              Store 1174 1175
+            1176:      6(int) Load 8(invocation)
+            1177:    686(ptr) AccessChain 34(data) 59 46
+            1178:  20(i8vec4) Load 1177
+            1179: 696(i8vec3) VectorShuffle 1178 1178 0 1 2
+            1180: 696(i8vec3) GroupNonUniformUMin 42 ExclusiveScan 1179
+            1181:    679(ptr) AccessChain 34(data) 1176 46 38
+            1182:  19(int8_t) CompositeExtract 1180 0
+                              Store 1181 1182
+            1183:    679(ptr) AccessChain 34(data) 1176 46 55
+            1184:  19(int8_t) CompositeExtract 1180 1
+                              Store 1183 1184
+            1185:    679(ptr) AccessChain 34(data) 1176 46 69
+            1186:  19(int8_t) CompositeExtract 1180 2
+                              Store 1185 1186
+            1187:      6(int) Load 8(invocation)
+            1188:    686(ptr) AccessChain 34(data) 73 46
+            1189:  20(i8vec4) Load 1188
+            1190:  20(i8vec4) GroupNonUniformUMin 42 ExclusiveScan 1189
+            1191:    686(ptr) AccessChain 34(data) 1187 46
+                              Store 1191 1190
+            1192:      6(int) Load 8(invocation)
+            1193:    679(ptr) AccessChain 34(data) 37 46 38
+            1194:  19(int8_t) Load 1193
+            1195:  19(int8_t) GroupNonUniformUMax 42 ExclusiveScan 1194
+            1196:    679(ptr) AccessChain 34(data) 1192 46 38
+                              Store 1196 1195
+            1197:      6(int) Load 8(invocation)
+            1198:    686(ptr) AccessChain 34(data) 46 46
+            1199:  20(i8vec4) Load 1198
+            1200: 685(i8vec2) VectorShuffle 1199 1199 0 1
+            1201: 685(i8vec2) GroupNonUniformUMax 42 ExclusiveScan 1200
+            1202:    679(ptr) AccessChain 34(data) 1197 46 38
+            1203:  19(int8_t) CompositeExtract 1201 0
+                              Store 1202 1203
+            1204:    679(ptr) AccessChain 34(data) 1197 46 55
+            1205:  19(int8_t) CompositeExtract 1201 1
+                              Store 1204 1205
+            1206:      6(int) Load 8(invocation)
+            1207:    686(ptr) AccessChain 34(data) 59 46
+            1208:  20(i8vec4) Load 1207
+            1209: 696(i8vec3) VectorShuffle 1208 1208 0 1 2
+            1210: 696(i8vec3) GroupNonUniformUMax 42 ExclusiveScan 1209
+            1211:    679(ptr) AccessChain 34(data) 1206 46 38
+            1212:  19(int8_t) CompositeExtract 1210 0
+                              Store 1211 1212
+            1213:    679(ptr) AccessChain 34(data) 1206 46 55
+            1214:  19(int8_t) CompositeExtract 1210 1
+                              Store 1213 1214
+            1215:    679(ptr) AccessChain 34(data) 1206 46 69
+            1216:  19(int8_t) CompositeExtract 1210 2
+                              Store 1215 1216
+            1217:      6(int) Load 8(invocation)
+            1218:    686(ptr) AccessChain 34(data) 73 46
+            1219:  20(i8vec4) Load 1218
+            1220:  20(i8vec4) GroupNonUniformUMax 42 ExclusiveScan 1219
+            1221:    686(ptr) AccessChain 34(data) 1217 46
+                              Store 1221 1220
+            1222:      6(int) Load 8(invocation)
+            1223:    679(ptr) AccessChain 34(data) 37 46 38
+            1224:  19(int8_t) Load 1223
+            1225:  19(int8_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1224
+            1226:    679(ptr) AccessChain 34(data) 1222 46 38
+                              Store 1226 1225
+            1227:      6(int) Load 8(invocation)
+            1228:    686(ptr) AccessChain 34(data) 46 46
+            1229:  20(i8vec4) Load 1228
+            1230: 685(i8vec2) VectorShuffle 1229 1229 0 1
+            1231: 685(i8vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1230
+            1232:    679(ptr) AccessChain 34(data) 1227 46 38
+            1233:  19(int8_t) CompositeExtract 1231 0
+                              Store 1232 1233
+            1234:    679(ptr) AccessChain 34(data) 1227 46 55
+            1235:  19(int8_t) CompositeExtract 1231 1
+                              Store 1234 1235
+            1236:      6(int) Load 8(invocation)
+            1237:    686(ptr) AccessChain 34(data) 59 46
+            1238:  20(i8vec4) Load 1237
+            1239: 696(i8vec3) VectorShuffle 1238 1238 0 1 2
+            1240: 696(i8vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1239
+            1241:    679(ptr) AccessChain 34(data) 1236 46 38
+            1242:  19(int8_t) CompositeExtract 1240 0
+                              Store 1241 1242
+            1243:    679(ptr) AccessChain 34(data) 1236 46 55
+            1244:  19(int8_t) CompositeExtract 1240 1
+                              Store 1243 1244
+            1245:    679(ptr) AccessChain 34(data) 1236 46 69
+            1246:  19(int8_t) CompositeExtract 1240 2
+                              Store 1245 1246
+            1247:      6(int) Load 8(invocation)
+            1248:    686(ptr) AccessChain 34(data) 73 46
+            1249:  20(i8vec4) Load 1248
+            1250:  20(i8vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1249
+            1251:    686(ptr) AccessChain 34(data) 1247 46
+                              Store 1251 1250
+            1252:      6(int) Load 8(invocation)
+            1253:    679(ptr) AccessChain 34(data) 37 46 38
+            1254:  19(int8_t) Load 1253
+            1255:  19(int8_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 1254
+            1256:    679(ptr) AccessChain 34(data) 1252 46 38
+                              Store 1256 1255
+            1257:      6(int) Load 8(invocation)
+            1258:    686(ptr) AccessChain 34(data) 46 46
+            1259:  20(i8vec4) Load 1258
+            1260: 685(i8vec2) VectorShuffle 1259 1259 0 1
+            1261: 685(i8vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 1260
+            1262:    679(ptr) AccessChain 34(data) 1257 46 38
+            1263:  19(int8_t) CompositeExtract 1261 0
+                              Store 1262 1263
+            1264:    679(ptr) AccessChain 34(data) 1257 46 55
+            1265:  19(int8_t) CompositeExtract 1261 1
+                              Store 1264 1265
+            1266:      6(int) Load 8(invocation)
+            1267:    686(ptr) AccessChain 34(data) 59 46
+            1268:  20(i8vec4) Load 1267
+            1269: 696(i8vec3) VectorShuffle 1268 1268 0 1 2
+            1270: 696(i8vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 1269
+            1271:    679(ptr) AccessChain 34(data) 1266 46 38
+            1272:  19(int8_t) CompositeExtract 1270 0
+                              Store 1271 1272
+            1273:    679(ptr) AccessChain 34(data) 1266 46 55
+            1274:  19(int8_t) CompositeExtract 1270 1
+                              Store 1273 1274
+            1275:    679(ptr) AccessChain 34(data) 1266 46 69
+            1276:  19(int8_t) CompositeExtract 1270 2
+                              Store 1275 1276
+            1277:      6(int) Load 8(invocation)
+            1278:    686(ptr) AccessChain 34(data) 73 46
+            1279:  20(i8vec4) Load 1278
+            1280:  20(i8vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 1279
+            1281:    686(ptr) AccessChain 34(data) 1277 46
+                              Store 1281 1280
+            1282:      6(int) Load 8(invocation)
+            1283:    679(ptr) AccessChain 34(data) 37 46 38
+            1284:  19(int8_t) Load 1283
+            1285:  19(int8_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 1284
+            1286:    679(ptr) AccessChain 34(data) 1282 46 38
+                              Store 1286 1285
+            1287:      6(int) Load 8(invocation)
+            1288:    686(ptr) AccessChain 34(data) 46 46
+            1289:  20(i8vec4) Load 1288
+            1290: 685(i8vec2) VectorShuffle 1289 1289 0 1
+            1291: 685(i8vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 1290
+            1292:    679(ptr) AccessChain 34(data) 1287 46 38
+            1293:  19(int8_t) CompositeExtract 1291 0
+                              Store 1292 1293
+            1294:    679(ptr) AccessChain 34(data) 1287 46 55
+            1295:  19(int8_t) CompositeExtract 1291 1
+                              Store 1294 1295
+            1296:      6(int) Load 8(invocation)
+            1297:    686(ptr) AccessChain 34(data) 59 46
+            1298:  20(i8vec4) Load 1297
+            1299: 696(i8vec3) VectorShuffle 1298 1298 0 1 2
+            1300: 696(i8vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 1299
+            1301:    679(ptr) AccessChain 34(data) 1296 46 38
+            1302:  19(int8_t) CompositeExtract 1300 0
+                              Store 1301 1302
+            1303:    679(ptr) AccessChain 34(data) 1296 46 55
+            1304:  19(int8_t) CompositeExtract 1300 1
+                              Store 1303 1304
+            1305:    679(ptr) AccessChain 34(data) 1296 46 69
+            1306:  19(int8_t) CompositeExtract 1300 2
+                              Store 1305 1306
             1307:      6(int) Load 8(invocation)
-            1308:   1150(ptr) AccessChain 34(data) 46 57
-            1309: 22(i16vec4) Load 1308
-            1310:1149(i16vec2) VectorShuffle 1309 1309 0 1
-            1311:1149(i16vec2) GroupNonUniformBitwiseXor 42 Reduce 1310
-            1312:   1150(ptr) AccessChain 34(data) 1307 57
-            1313: 22(i16vec4) Load 1312
-            1314: 22(i16vec4) VectorShuffle 1313 1311 4 5 2 3
-                              Store 1312 1314
-            1315:      6(int) Load 8(invocation)
-            1316:   1150(ptr) AccessChain 34(data) 57 57
-            1317: 22(i16vec4) Load 1316
-            1318:1159(i16vec3) VectorShuffle 1317 1317 0 1 2
-            1319:1159(i16vec3) GroupNonUniformBitwiseXor 42 Reduce 1318
-            1320:   1150(ptr) AccessChain 34(data) 1315 57
-            1321: 22(i16vec4) Load 1320
-            1322: 22(i16vec4) VectorShuffle 1321 1319 4 5 6 3
-                              Store 1320 1322
-            1323:      6(int) Load 8(invocation)
-            1324:   1150(ptr) AccessChain 34(data) 67 57
-            1325: 22(i16vec4) Load 1324
-            1326: 22(i16vec4) GroupNonUniformBitwiseXor 42 Reduce 1325
-            1327:   1150(ptr) AccessChain 34(data) 1323 57
-                              Store 1327 1326
-            1328:      6(int) Load 8(invocation)
-            1329:   1143(ptr) AccessChain 34(data) 37 57 38
-            1330: 21(int16_t) Load 1329
-            1331: 21(int16_t) GroupNonUniformIAdd 42 InclusiveScan 1330
-            1332:   1143(ptr) AccessChain 34(data) 1328 57 38
-                              Store 1332 1331
-            1333:      6(int) Load 8(invocation)
-            1334:   1150(ptr) AccessChain 34(data) 46 57
-            1335: 22(i16vec4) Load 1334
-            1336:1149(i16vec2) VectorShuffle 1335 1335 0 1
-            1337:1149(i16vec2) GroupNonUniformIAdd 42 InclusiveScan 1336
-            1338:   1150(ptr) AccessChain 34(data) 1333 57
-            1339: 22(i16vec4) Load 1338
-            1340: 22(i16vec4) VectorShuffle 1339 1337 4 5 2 3
-                              Store 1338 1340
+            1308:    686(ptr) AccessChain 34(data) 73 46
+            1309:  20(i8vec4) Load 1308
+            1310:  20(i8vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 1309
+            1311:    686(ptr) AccessChain 34(data) 1307 46
+                              Store 1311 1310
+            1312:      6(int) Load 8(invocation)
+            1314:   1313(ptr) AccessChain 34(data) 37 59 38
+            1315: 21(int16_t) Load 1314
+            1316: 21(int16_t) GroupNonUniformIAdd 42 Reduce 1315
+            1317:   1313(ptr) AccessChain 34(data) 1312 59 38
+                              Store 1317 1316
+            1318:      6(int) Load 8(invocation)
+            1321:   1320(ptr) AccessChain 34(data) 46 59
+            1322: 22(i16vec4) Load 1321
+            1323:1319(i16vec2) VectorShuffle 1322 1322 0 1
+            1324:1319(i16vec2) GroupNonUniformIAdd 42 Reduce 1323
+            1325:   1313(ptr) AccessChain 34(data) 1318 59 38
+            1326: 21(int16_t) CompositeExtract 1324 0
+                              Store 1325 1326
+            1327:   1313(ptr) AccessChain 34(data) 1318 59 55
+            1328: 21(int16_t) CompositeExtract 1324 1
+                              Store 1327 1328
+            1329:      6(int) Load 8(invocation)
+            1331:   1320(ptr) AccessChain 34(data) 59 59
+            1332: 22(i16vec4) Load 1331
+            1333:1330(i16vec3) VectorShuffle 1332 1332 0 1 2
+            1334:1330(i16vec3) GroupNonUniformIAdd 42 Reduce 1333
+            1335:   1313(ptr) AccessChain 34(data) 1329 59 38
+            1336: 21(int16_t) CompositeExtract 1334 0
+                              Store 1335 1336
+            1337:   1313(ptr) AccessChain 34(data) 1329 59 55
+            1338: 21(int16_t) CompositeExtract 1334 1
+                              Store 1337 1338
+            1339:   1313(ptr) AccessChain 34(data) 1329 59 69
+            1340: 21(int16_t) CompositeExtract 1334 2
+                              Store 1339 1340
             1341:      6(int) Load 8(invocation)
-            1342:   1150(ptr) AccessChain 34(data) 57 57
+            1342:   1320(ptr) AccessChain 34(data) 73 59
             1343: 22(i16vec4) Load 1342
-            1344:1159(i16vec3) VectorShuffle 1343 1343 0 1 2
-            1345:1159(i16vec3) GroupNonUniformIAdd 42 InclusiveScan 1344
-            1346:   1150(ptr) AccessChain 34(data) 1341 57
-            1347: 22(i16vec4) Load 1346
-            1348: 22(i16vec4) VectorShuffle 1347 1345 4 5 6 3
-                              Store 1346 1348
-            1349:      6(int) Load 8(invocation)
-            1350:   1150(ptr) AccessChain 34(data) 67 57
-            1351: 22(i16vec4) Load 1350
-            1352: 22(i16vec4) GroupNonUniformIAdd 42 InclusiveScan 1351
-            1353:   1150(ptr) AccessChain 34(data) 1349 57
-                              Store 1353 1352
-            1354:      6(int) Load 8(invocation)
-            1355:   1143(ptr) AccessChain 34(data) 37 57 38
-            1356: 21(int16_t) Load 1355
-            1357: 21(int16_t) GroupNonUniformIMul 42 InclusiveScan 1356
-            1358:   1143(ptr) AccessChain 34(data) 1354 57 38
-                              Store 1358 1357
-            1359:      6(int) Load 8(invocation)
-            1360:   1150(ptr) AccessChain 34(data) 46 57
-            1361: 22(i16vec4) Load 1360
-            1362:1149(i16vec2) VectorShuffle 1361 1361 0 1
-            1363:1149(i16vec2) GroupNonUniformIMul 42 InclusiveScan 1362
-            1364:   1150(ptr) AccessChain 34(data) 1359 57
-            1365: 22(i16vec4) Load 1364
-            1366: 22(i16vec4) VectorShuffle 1365 1363 4 5 2 3
-                              Store 1364 1366
-            1367:      6(int) Load 8(invocation)
-            1368:   1150(ptr) AccessChain 34(data) 57 57
-            1369: 22(i16vec4) Load 1368
-            1370:1159(i16vec3) VectorShuffle 1369 1369 0 1 2
-            1371:1159(i16vec3) GroupNonUniformIMul 42 InclusiveScan 1370
-            1372:   1150(ptr) AccessChain 34(data) 1367 57
+            1344: 22(i16vec4) GroupNonUniformIAdd 42 Reduce 1343
+            1345:   1320(ptr) AccessChain 34(data) 1341 59
+                              Store 1345 1344
+            1346:      6(int) Load 8(invocation)
+            1347:   1313(ptr) AccessChain 34(data) 37 59 38
+            1348: 21(int16_t) Load 1347
+            1349: 21(int16_t) GroupNonUniformIMul 42 Reduce 1348
+            1350:   1313(ptr) AccessChain 34(data) 1346 59 38
+                              Store 1350 1349
+            1351:      6(int) Load 8(invocation)
+            1352:   1320(ptr) AccessChain 34(data) 46 59
+            1353: 22(i16vec4) Load 1352
+            1354:1319(i16vec2) VectorShuffle 1353 1353 0 1
+            1355:1319(i16vec2) GroupNonUniformIMul 42 Reduce 1354
+            1356:   1313(ptr) AccessChain 34(data) 1351 59 38
+            1357: 21(int16_t) CompositeExtract 1355 0
+                              Store 1356 1357
+            1358:   1313(ptr) AccessChain 34(data) 1351 59 55
+            1359: 21(int16_t) CompositeExtract 1355 1
+                              Store 1358 1359
+            1360:      6(int) Load 8(invocation)
+            1361:   1320(ptr) AccessChain 34(data) 59 59
+            1362: 22(i16vec4) Load 1361
+            1363:1330(i16vec3) VectorShuffle 1362 1362 0 1 2
+            1364:1330(i16vec3) GroupNonUniformIMul 42 Reduce 1363
+            1365:   1313(ptr) AccessChain 34(data) 1360 59 38
+            1366: 21(int16_t) CompositeExtract 1364 0
+                              Store 1365 1366
+            1367:   1313(ptr) AccessChain 34(data) 1360 59 55
+            1368: 21(int16_t) CompositeExtract 1364 1
+                              Store 1367 1368
+            1369:   1313(ptr) AccessChain 34(data) 1360 59 69
+            1370: 21(int16_t) CompositeExtract 1364 2
+                              Store 1369 1370
+            1371:      6(int) Load 8(invocation)
+            1372:   1320(ptr) AccessChain 34(data) 73 59
             1373: 22(i16vec4) Load 1372
-            1374: 22(i16vec4) VectorShuffle 1373 1371 4 5 6 3
-                              Store 1372 1374
-            1375:      6(int) Load 8(invocation)
-            1376:   1150(ptr) AccessChain 34(data) 67 57
-            1377: 22(i16vec4) Load 1376
-            1378: 22(i16vec4) GroupNonUniformIMul 42 InclusiveScan 1377
-            1379:   1150(ptr) AccessChain 34(data) 1375 57
-                              Store 1379 1378
-            1380:      6(int) Load 8(invocation)
-            1381:   1143(ptr) AccessChain 34(data) 37 57 38
-            1382: 21(int16_t) Load 1381
-            1383: 21(int16_t) GroupNonUniformSMin 42 InclusiveScan 1382
-            1384:   1143(ptr) AccessChain 34(data) 1380 57 38
-                              Store 1384 1383
-            1385:      6(int) Load 8(invocation)
-            1386:   1150(ptr) AccessChain 34(data) 46 57
-            1387: 22(i16vec4) Load 1386
-            1388:1149(i16vec2) VectorShuffle 1387 1387 0 1
-            1389:1149(i16vec2) GroupNonUniformSMin 42 InclusiveScan 1388
-            1390:   1150(ptr) AccessChain 34(data) 1385 57
-            1391: 22(i16vec4) Load 1390
-            1392: 22(i16vec4) VectorShuffle 1391 1389 4 5 2 3
-                              Store 1390 1392
-            1393:      6(int) Load 8(invocation)
-            1394:   1150(ptr) AccessChain 34(data) 57 57
-            1395: 22(i16vec4) Load 1394
-            1396:1159(i16vec3) VectorShuffle 1395 1395 0 1 2
-            1397:1159(i16vec3) GroupNonUniformSMin 42 InclusiveScan 1396
-            1398:   1150(ptr) AccessChain 34(data) 1393 57
-            1399: 22(i16vec4) Load 1398
-            1400: 22(i16vec4) VectorShuffle 1399 1397 4 5 6 3
-                              Store 1398 1400
+            1374: 22(i16vec4) GroupNonUniformIMul 42 Reduce 1373
+            1375:   1320(ptr) AccessChain 34(data) 1371 59
+                              Store 1375 1374
+            1376:      6(int) Load 8(invocation)
+            1377:   1313(ptr) AccessChain 34(data) 37 59 38
+            1378: 21(int16_t) Load 1377
+            1379: 21(int16_t) GroupNonUniformSMin 42 Reduce 1378
+            1380:   1313(ptr) AccessChain 34(data) 1376 59 38
+                              Store 1380 1379
+            1381:      6(int) Load 8(invocation)
+            1382:   1320(ptr) AccessChain 34(data) 46 59
+            1383: 22(i16vec4) Load 1382
+            1384:1319(i16vec2) VectorShuffle 1383 1383 0 1
+            1385:1319(i16vec2) GroupNonUniformSMin 42 Reduce 1384
+            1386:   1313(ptr) AccessChain 34(data) 1381 59 38
+            1387: 21(int16_t) CompositeExtract 1385 0
+                              Store 1386 1387
+            1388:   1313(ptr) AccessChain 34(data) 1381 59 55
+            1389: 21(int16_t) CompositeExtract 1385 1
+                              Store 1388 1389
+            1390:      6(int) Load 8(invocation)
+            1391:   1320(ptr) AccessChain 34(data) 59 59
+            1392: 22(i16vec4) Load 1391
+            1393:1330(i16vec3) VectorShuffle 1392 1392 0 1 2
+            1394:1330(i16vec3) GroupNonUniformSMin 42 Reduce 1393
+            1395:   1313(ptr) AccessChain 34(data) 1390 59 38
+            1396: 21(int16_t) CompositeExtract 1394 0
+                              Store 1395 1396
+            1397:   1313(ptr) AccessChain 34(data) 1390 59 55
+            1398: 21(int16_t) CompositeExtract 1394 1
+                              Store 1397 1398
+            1399:   1313(ptr) AccessChain 34(data) 1390 59 69
+            1400: 21(int16_t) CompositeExtract 1394 2
+                              Store 1399 1400
             1401:      6(int) Load 8(invocation)
-            1402:   1150(ptr) AccessChain 34(data) 67 57
+            1402:   1320(ptr) AccessChain 34(data) 73 59
             1403: 22(i16vec4) Load 1402
-            1404: 22(i16vec4) GroupNonUniformSMin 42 InclusiveScan 1403
-            1405:   1150(ptr) AccessChain 34(data) 1401 57
+            1404: 22(i16vec4) GroupNonUniformSMin 42 Reduce 1403
+            1405:   1320(ptr) AccessChain 34(data) 1401 59
                               Store 1405 1404
             1406:      6(int) Load 8(invocation)
-            1407:   1143(ptr) AccessChain 34(data) 37 57 38
+            1407:   1313(ptr) AccessChain 34(data) 37 59 38
             1408: 21(int16_t) Load 1407
-            1409: 21(int16_t) GroupNonUniformSMax 42 InclusiveScan 1408
-            1410:   1143(ptr) AccessChain 34(data) 1406 57 38
+            1409: 21(int16_t) GroupNonUniformSMax 42 Reduce 1408
+            1410:   1313(ptr) AccessChain 34(data) 1406 59 38
                               Store 1410 1409
             1411:      6(int) Load 8(invocation)
-            1412:   1150(ptr) AccessChain 34(data) 46 57
+            1412:   1320(ptr) AccessChain 34(data) 46 59
             1413: 22(i16vec4) Load 1412
-            1414:1149(i16vec2) VectorShuffle 1413 1413 0 1
-            1415:1149(i16vec2) GroupNonUniformSMax 42 InclusiveScan 1414
-            1416:   1150(ptr) AccessChain 34(data) 1411 57
-            1417: 22(i16vec4) Load 1416
-            1418: 22(i16vec4) VectorShuffle 1417 1415 4 5 2 3
-                              Store 1416 1418
-            1419:      6(int) Load 8(invocation)
-            1420:   1150(ptr) AccessChain 34(data) 57 57
-            1421: 22(i16vec4) Load 1420
-            1422:1159(i16vec3) VectorShuffle 1421 1421 0 1 2
-            1423:1159(i16vec3) GroupNonUniformSMax 42 InclusiveScan 1422
-            1424:   1150(ptr) AccessChain 34(data) 1419 57
-            1425: 22(i16vec4) Load 1424
-            1426: 22(i16vec4) VectorShuffle 1425 1423 4 5 6 3
-                              Store 1424 1426
-            1427:      6(int) Load 8(invocation)
-            1428:   1150(ptr) AccessChain 34(data) 67 57
-            1429: 22(i16vec4) Load 1428
-            1430: 22(i16vec4) GroupNonUniformSMax 42 InclusiveScan 1429
-            1431:   1150(ptr) AccessChain 34(data) 1427 57
-                              Store 1431 1430
-            1432:      6(int) Load 8(invocation)
-            1433:   1143(ptr) AccessChain 34(data) 37 57 38
-            1434: 21(int16_t) Load 1433
-            1435: 21(int16_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 1434
-            1436:   1143(ptr) AccessChain 34(data) 1432 57 38
-                              Store 1436 1435
-            1437:      6(int) Load 8(invocation)
-            1438:   1150(ptr) AccessChain 34(data) 46 57
-            1439: 22(i16vec4) Load 1438
-            1440:1149(i16vec2) VectorShuffle 1439 1439 0 1
-            1441:1149(i16vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 1440
-            1442:   1150(ptr) AccessChain 34(data) 1437 57
+            1414:1319(i16vec2) VectorShuffle 1413 1413 0 1
+            1415:1319(i16vec2) GroupNonUniformSMax 42 Reduce 1414
+            1416:   1313(ptr) AccessChain 34(data) 1411 59 38
+            1417: 21(int16_t) CompositeExtract 1415 0
+                              Store 1416 1417
+            1418:   1313(ptr) AccessChain 34(data) 1411 59 55
+            1419: 21(int16_t) CompositeExtract 1415 1
+                              Store 1418 1419
+            1420:      6(int) Load 8(invocation)
+            1421:   1320(ptr) AccessChain 34(data) 59 59
+            1422: 22(i16vec4) Load 1421
+            1423:1330(i16vec3) VectorShuffle 1422 1422 0 1 2
+            1424:1330(i16vec3) GroupNonUniformSMax 42 Reduce 1423
+            1425:   1313(ptr) AccessChain 34(data) 1420 59 38
+            1426: 21(int16_t) CompositeExtract 1424 0
+                              Store 1425 1426
+            1427:   1313(ptr) AccessChain 34(data) 1420 59 55
+            1428: 21(int16_t) CompositeExtract 1424 1
+                              Store 1427 1428
+            1429:   1313(ptr) AccessChain 34(data) 1420 59 69
+            1430: 21(int16_t) CompositeExtract 1424 2
+                              Store 1429 1430
+            1431:      6(int) Load 8(invocation)
+            1432:   1320(ptr) AccessChain 34(data) 73 59
+            1433: 22(i16vec4) Load 1432
+            1434: 22(i16vec4) GroupNonUniformSMax 42 Reduce 1433
+            1435:   1320(ptr) AccessChain 34(data) 1431 59
+                              Store 1435 1434
+            1436:      6(int) Load 8(invocation)
+            1437:   1313(ptr) AccessChain 34(data) 37 59 38
+            1438: 21(int16_t) Load 1437
+            1439: 21(int16_t) GroupNonUniformBitwiseAnd 42 Reduce 1438
+            1440:   1313(ptr) AccessChain 34(data) 1436 59 38
+                              Store 1440 1439
+            1441:      6(int) Load 8(invocation)
+            1442:   1320(ptr) AccessChain 34(data) 46 59
             1443: 22(i16vec4) Load 1442
-            1444: 22(i16vec4) VectorShuffle 1443 1441 4 5 2 3
-                              Store 1442 1444
-            1445:      6(int) Load 8(invocation)
-            1446:   1150(ptr) AccessChain 34(data) 57 57
-            1447: 22(i16vec4) Load 1446
-            1448:1159(i16vec3) VectorShuffle 1447 1447 0 1 2
-            1449:1159(i16vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 1448
-            1450:   1150(ptr) AccessChain 34(data) 1445 57
-            1451: 22(i16vec4) Load 1450
-            1452: 22(i16vec4) VectorShuffle 1451 1449 4 5 6 3
-                              Store 1450 1452
-            1453:      6(int) Load 8(invocation)
-            1454:   1150(ptr) AccessChain 34(data) 67 57
-            1455: 22(i16vec4) Load 1454
-            1456: 22(i16vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 1455
-            1457:   1150(ptr) AccessChain 34(data) 1453 57
-                              Store 1457 1456
-            1458:      6(int) Load 8(invocation)
-            1459:   1143(ptr) AccessChain 34(data) 37 57 38
-            1460: 21(int16_t) Load 1459
-            1461: 21(int16_t) GroupNonUniformBitwiseOr 42 InclusiveScan 1460
-            1462:   1143(ptr) AccessChain 34(data) 1458 57 38
-                              Store 1462 1461
-            1463:      6(int) Load 8(invocation)
-            1464:   1150(ptr) AccessChain 34(data) 46 57
-            1465: 22(i16vec4) Load 1464
-            1466:1149(i16vec2) VectorShuffle 1465 1465 0 1
-            1467:1149(i16vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 1466
-            1468:   1150(ptr) AccessChain 34(data) 1463 57
-            1469: 22(i16vec4) Load 1468
-            1470: 22(i16vec4) VectorShuffle 1469 1467 4 5 2 3
-                              Store 1468 1470
+            1444:1319(i16vec2) VectorShuffle 1443 1443 0 1
+            1445:1319(i16vec2) GroupNonUniformBitwiseAnd 42 Reduce 1444
+            1446:   1313(ptr) AccessChain 34(data) 1441 59 38
+            1447: 21(int16_t) CompositeExtract 1445 0
+                              Store 1446 1447
+            1448:   1313(ptr) AccessChain 34(data) 1441 59 55
+            1449: 21(int16_t) CompositeExtract 1445 1
+                              Store 1448 1449
+            1450:      6(int) Load 8(invocation)
+            1451:   1320(ptr) AccessChain 34(data) 59 59
+            1452: 22(i16vec4) Load 1451
+            1453:1330(i16vec3) VectorShuffle 1452 1452 0 1 2
+            1454:1330(i16vec3) GroupNonUniformBitwiseAnd 42 Reduce 1453
+            1455:   1313(ptr) AccessChain 34(data) 1450 59 38
+            1456: 21(int16_t) CompositeExtract 1454 0
+                              Store 1455 1456
+            1457:   1313(ptr) AccessChain 34(data) 1450 59 55
+            1458: 21(int16_t) CompositeExtract 1454 1
+                              Store 1457 1458
+            1459:   1313(ptr) AccessChain 34(data) 1450 59 69
+            1460: 21(int16_t) CompositeExtract 1454 2
+                              Store 1459 1460
+            1461:      6(int) Load 8(invocation)
+            1462:   1320(ptr) AccessChain 34(data) 73 59
+            1463: 22(i16vec4) Load 1462
+            1464: 22(i16vec4) GroupNonUniformBitwiseAnd 42 Reduce 1463
+            1465:   1320(ptr) AccessChain 34(data) 1461 59
+                              Store 1465 1464
+            1466:      6(int) Load 8(invocation)
+            1467:   1313(ptr) AccessChain 34(data) 37 59 38
+            1468: 21(int16_t) Load 1467
+            1469: 21(int16_t) GroupNonUniformBitwiseOr 42 Reduce 1468
+            1470:   1313(ptr) AccessChain 34(data) 1466 59 38
+                              Store 1470 1469
             1471:      6(int) Load 8(invocation)
-            1472:   1150(ptr) AccessChain 34(data) 57 57
+            1472:   1320(ptr) AccessChain 34(data) 46 59
             1473: 22(i16vec4) Load 1472
-            1474:1159(i16vec3) VectorShuffle 1473 1473 0 1 2
-            1475:1159(i16vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 1474
-            1476:   1150(ptr) AccessChain 34(data) 1471 57
-            1477: 22(i16vec4) Load 1476
-            1478: 22(i16vec4) VectorShuffle 1477 1475 4 5 6 3
-                              Store 1476 1478
-            1479:      6(int) Load 8(invocation)
-            1480:   1150(ptr) AccessChain 34(data) 67 57
-            1481: 22(i16vec4) Load 1480
-            1482: 22(i16vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 1481
-            1483:   1150(ptr) AccessChain 34(data) 1479 57
-                              Store 1483 1482
-            1484:      6(int) Load 8(invocation)
-            1485:   1143(ptr) AccessChain 34(data) 37 57 38
-            1486: 21(int16_t) Load 1485
-            1487: 21(int16_t) GroupNonUniformBitwiseXor 42 InclusiveScan 1486
-            1488:   1143(ptr) AccessChain 34(data) 1484 57 38
-                              Store 1488 1487
-            1489:      6(int) Load 8(invocation)
-            1490:   1150(ptr) AccessChain 34(data) 46 57
-            1491: 22(i16vec4) Load 1490
-            1492:1149(i16vec2) VectorShuffle 1491 1491 0 1
-            1493:1149(i16vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 1492
-            1494:   1150(ptr) AccessChain 34(data) 1489 57
-            1495: 22(i16vec4) Load 1494
-            1496: 22(i16vec4) VectorShuffle 1495 1493 4 5 2 3
-                              Store 1494 1496
-            1497:      6(int) Load 8(invocation)
-            1498:   1150(ptr) AccessChain 34(data) 57 57
-            1499: 22(i16vec4) Load 1498
-            1500:1159(i16vec3) VectorShuffle 1499 1499 0 1 2
-            1501:1159(i16vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 1500
-            1502:   1150(ptr) AccessChain 34(data) 1497 57
+            1474:1319(i16vec2) VectorShuffle 1473 1473 0 1
+            1475:1319(i16vec2) GroupNonUniformBitwiseOr 42 Reduce 1474
+            1476:   1313(ptr) AccessChain 34(data) 1471 59 38
+            1477: 21(int16_t) CompositeExtract 1475 0
+                              Store 1476 1477
+            1478:   1313(ptr) AccessChain 34(data) 1471 59 55
+            1479: 21(int16_t) CompositeExtract 1475 1
+                              Store 1478 1479
+            1480:      6(int) Load 8(invocation)
+            1481:   1320(ptr) AccessChain 34(data) 59 59
+            1482: 22(i16vec4) Load 1481
+            1483:1330(i16vec3) VectorShuffle 1482 1482 0 1 2
+            1484:1330(i16vec3) GroupNonUniformBitwiseOr 42 Reduce 1483
+            1485:   1313(ptr) AccessChain 34(data) 1480 59 38
+            1486: 21(int16_t) CompositeExtract 1484 0
+                              Store 1485 1486
+            1487:   1313(ptr) AccessChain 34(data) 1480 59 55
+            1488: 21(int16_t) CompositeExtract 1484 1
+                              Store 1487 1488
+            1489:   1313(ptr) AccessChain 34(data) 1480 59 69
+            1490: 21(int16_t) CompositeExtract 1484 2
+                              Store 1489 1490
+            1491:      6(int) Load 8(invocation)
+            1492:   1320(ptr) AccessChain 34(data) 73 59
+            1493: 22(i16vec4) Load 1492
+            1494: 22(i16vec4) GroupNonUniformBitwiseOr 42 Reduce 1493
+            1495:   1320(ptr) AccessChain 34(data) 1491 59
+                              Store 1495 1494
+            1496:      6(int) Load 8(invocation)
+            1497:   1313(ptr) AccessChain 34(data) 37 59 38
+            1498: 21(int16_t) Load 1497
+            1499: 21(int16_t) GroupNonUniformBitwiseXor 42 Reduce 1498
+            1500:   1313(ptr) AccessChain 34(data) 1496 59 38
+                              Store 1500 1499
+            1501:      6(int) Load 8(invocation)
+            1502:   1320(ptr) AccessChain 34(data) 46 59
             1503: 22(i16vec4) Load 1502
-            1504: 22(i16vec4) VectorShuffle 1503 1501 4 5 6 3
-                              Store 1502 1504
-            1505:      6(int) Load 8(invocation)
-            1506:   1150(ptr) AccessChain 34(data) 67 57
-            1507: 22(i16vec4) Load 1506
-            1508: 22(i16vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 1507
-            1509:   1150(ptr) AccessChain 34(data) 1505 57
-                              Store 1509 1508
+            1504:1319(i16vec2) VectorShuffle 1503 1503 0 1
+            1505:1319(i16vec2) GroupNonUniformBitwiseXor 42 Reduce 1504
+            1506:   1313(ptr) AccessChain 34(data) 1501 59 38
+            1507: 21(int16_t) CompositeExtract 1505 0
+                              Store 1506 1507
+            1508:   1313(ptr) AccessChain 34(data) 1501 59 55
+            1509: 21(int16_t) CompositeExtract 1505 1
+                              Store 1508 1509
             1510:      6(int) Load 8(invocation)
-            1511:   1143(ptr) AccessChain 34(data) 37 57 38
-            1512: 21(int16_t) Load 1511
-            1513: 21(int16_t) GroupNonUniformIAdd 42 ExclusiveScan 1512
-            1514:   1143(ptr) AccessChain 34(data) 1510 57 38
-                              Store 1514 1513
-            1515:      6(int) Load 8(invocation)
-            1516:   1150(ptr) AccessChain 34(data) 46 57
-            1517: 22(i16vec4) Load 1516
-            1518:1149(i16vec2) VectorShuffle 1517 1517 0 1
-            1519:1149(i16vec2) GroupNonUniformIAdd 42 ExclusiveScan 1518
-            1520:   1150(ptr) AccessChain 34(data) 1515 57
-            1521: 22(i16vec4) Load 1520
-            1522: 22(i16vec4) VectorShuffle 1521 1519 4 5 2 3
-                              Store 1520 1522
-            1523:      6(int) Load 8(invocation)
-            1524:   1150(ptr) AccessChain 34(data) 57 57
-            1525: 22(i16vec4) Load 1524
-            1526:1159(i16vec3) VectorShuffle 1525 1525 0 1 2
-            1527:1159(i16vec3) GroupNonUniformIAdd 42 ExclusiveScan 1526
-            1528:   1150(ptr) AccessChain 34(data) 1523 57
-            1529: 22(i16vec4) Load 1528
-            1530: 22(i16vec4) VectorShuffle 1529 1527 4 5 6 3
-                              Store 1528 1530
+            1511:   1320(ptr) AccessChain 34(data) 59 59
+            1512: 22(i16vec4) Load 1511
+            1513:1330(i16vec3) VectorShuffle 1512 1512 0 1 2
+            1514:1330(i16vec3) GroupNonUniformBitwiseXor 42 Reduce 1513
+            1515:   1313(ptr) AccessChain 34(data) 1510 59 38
+            1516: 21(int16_t) CompositeExtract 1514 0
+                              Store 1515 1516
+            1517:   1313(ptr) AccessChain 34(data) 1510 59 55
+            1518: 21(int16_t) CompositeExtract 1514 1
+                              Store 1517 1518
+            1519:   1313(ptr) AccessChain 34(data) 1510 59 69
+            1520: 21(int16_t) CompositeExtract 1514 2
+                              Store 1519 1520
+            1521:      6(int) Load 8(invocation)
+            1522:   1320(ptr) AccessChain 34(data) 73 59
+            1523: 22(i16vec4) Load 1522
+            1524: 22(i16vec4) GroupNonUniformBitwiseXor 42 Reduce 1523
+            1525:   1320(ptr) AccessChain 34(data) 1521 59
+                              Store 1525 1524
+            1526:      6(int) Load 8(invocation)
+            1527:   1313(ptr) AccessChain 34(data) 37 59 38
+            1528: 21(int16_t) Load 1527
+            1529: 21(int16_t) GroupNonUniformIAdd 42 InclusiveScan 1528
+            1530:   1313(ptr) AccessChain 34(data) 1526 59 38
+                              Store 1530 1529
             1531:      6(int) Load 8(invocation)
-            1532:   1150(ptr) AccessChain 34(data) 67 57
+            1532:   1320(ptr) AccessChain 34(data) 46 59
             1533: 22(i16vec4) Load 1532
-            1534: 22(i16vec4) GroupNonUniformIAdd 42 ExclusiveScan 1533
-            1535:   1150(ptr) AccessChain 34(data) 1531 57
-                              Store 1535 1534
-            1536:      6(int) Load 8(invocation)
-            1537:   1143(ptr) AccessChain 34(data) 37 57 38
-            1538: 21(int16_t) Load 1537
-            1539: 21(int16_t) GroupNonUniformIMul 42 ExclusiveScan 1538
-            1540:   1143(ptr) AccessChain 34(data) 1536 57 38
-                              Store 1540 1539
-            1541:      6(int) Load 8(invocation)
-            1542:   1150(ptr) AccessChain 34(data) 46 57
-            1543: 22(i16vec4) Load 1542
-            1544:1149(i16vec2) VectorShuffle 1543 1543 0 1
-            1545:1149(i16vec2) GroupNonUniformIMul 42 ExclusiveScan 1544
-            1546:   1150(ptr) AccessChain 34(data) 1541 57
-            1547: 22(i16vec4) Load 1546
-            1548: 22(i16vec4) VectorShuffle 1547 1545 4 5 2 3
-                              Store 1546 1548
-            1549:      6(int) Load 8(invocation)
-            1550:   1150(ptr) AccessChain 34(data) 57 57
-            1551: 22(i16vec4) Load 1550
-            1552:1159(i16vec3) VectorShuffle 1551 1551 0 1 2
-            1553:1159(i16vec3) GroupNonUniformIMul 42 ExclusiveScan 1552
-            1554:   1150(ptr) AccessChain 34(data) 1549 57
-            1555: 22(i16vec4) Load 1554
-            1556: 22(i16vec4) VectorShuffle 1555 1553 4 5 6 3
-                              Store 1554 1556
-            1557:      6(int) Load 8(invocation)
-            1558:   1150(ptr) AccessChain 34(data) 67 57
-            1559: 22(i16vec4) Load 1558
-            1560: 22(i16vec4) GroupNonUniformIMul 42 ExclusiveScan 1559
-            1561:   1150(ptr) AccessChain 34(data) 1557 57
-                              Store 1561 1560
-            1562:      6(int) Load 8(invocation)
-            1563:   1143(ptr) AccessChain 34(data) 37 57 38
-            1564: 21(int16_t) Load 1563
-            1565: 21(int16_t) GroupNonUniformSMin 42 ExclusiveScan 1564
-            1566:   1143(ptr) AccessChain 34(data) 1562 57 38
-                              Store 1566 1565
-            1567:      6(int) Load 8(invocation)
-            1568:   1150(ptr) AccessChain 34(data) 46 57
-            1569: 22(i16vec4) Load 1568
-            1570:1149(i16vec2) VectorShuffle 1569 1569 0 1
-            1571:1149(i16vec2) GroupNonUniformSMin 42 ExclusiveScan 1570
-            1572:   1150(ptr) AccessChain 34(data) 1567 57
-            1573: 22(i16vec4) Load 1572
-            1574: 22(i16vec4) VectorShuffle 1573 1571 4 5 2 3
-                              Store 1572 1574
-            1575:      6(int) Load 8(invocation)
-            1576:   1150(ptr) AccessChain 34(data) 57 57
-            1577: 22(i16vec4) Load 1576
-            1578:1159(i16vec3) VectorShuffle 1577 1577 0 1 2
-            1579:1159(i16vec3) GroupNonUniformSMin 42 ExclusiveScan 1578
-            1580:   1150(ptr) AccessChain 34(data) 1575 57
-            1581: 22(i16vec4) Load 1580
-            1582: 22(i16vec4) VectorShuffle 1581 1579 4 5 6 3
-                              Store 1580 1582
-            1583:      6(int) Load 8(invocation)
-            1584:   1150(ptr) AccessChain 34(data) 67 57
-            1585: 22(i16vec4) Load 1584
-            1586: 22(i16vec4) GroupNonUniformSMin 42 ExclusiveScan 1585
-            1587:   1150(ptr) AccessChain 34(data) 1583 57
-                              Store 1587 1586
-            1588:      6(int) Load 8(invocation)
-            1589:   1143(ptr) AccessChain 34(data) 37 57 38
-            1590: 21(int16_t) Load 1589
-            1591: 21(int16_t) GroupNonUniformSMax 42 ExclusiveScan 1590
-            1592:   1143(ptr) AccessChain 34(data) 1588 57 38
-                              Store 1592 1591
-            1593:      6(int) Load 8(invocation)
-            1594:   1150(ptr) AccessChain 34(data) 46 57
-            1595: 22(i16vec4) Load 1594
-            1596:1149(i16vec2) VectorShuffle 1595 1595 0 1
-            1597:1149(i16vec2) GroupNonUniformSMax 42 ExclusiveScan 1596
-            1598:   1150(ptr) AccessChain 34(data) 1593 57
-            1599: 22(i16vec4) Load 1598
-            1600: 22(i16vec4) VectorShuffle 1599 1597 4 5 2 3
-                              Store 1598 1600
-            1601:      6(int) Load 8(invocation)
-            1602:   1150(ptr) AccessChain 34(data) 57 57
-            1603: 22(i16vec4) Load 1602
-            1604:1159(i16vec3) VectorShuffle 1603 1603 0 1 2
-            1605:1159(i16vec3) GroupNonUniformSMax 42 ExclusiveScan 1604
-            1606:   1150(ptr) AccessChain 34(data) 1601 57
-            1607: 22(i16vec4) Load 1606
-            1608: 22(i16vec4) VectorShuffle 1607 1605 4 5 6 3
-                              Store 1606 1608
-            1609:      6(int) Load 8(invocation)
-            1610:   1150(ptr) AccessChain 34(data) 67 57
-            1611: 22(i16vec4) Load 1610
-            1612: 22(i16vec4) GroupNonUniformSMax 42 ExclusiveScan 1611
-            1613:   1150(ptr) AccessChain 34(data) 1609 57
-                              Store 1613 1612
-            1614:      6(int) Load 8(invocation)
-            1615:   1143(ptr) AccessChain 34(data) 37 57 38
-            1616: 21(int16_t) Load 1615
-            1617: 21(int16_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1616
-            1618:   1143(ptr) AccessChain 34(data) 1614 57 38
-                              Store 1618 1617
-            1619:      6(int) Load 8(invocation)
-            1620:   1150(ptr) AccessChain 34(data) 46 57
-            1621: 22(i16vec4) Load 1620
-            1622:1149(i16vec2) VectorShuffle 1621 1621 0 1
-            1623:1149(i16vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1622
-            1624:   1150(ptr) AccessChain 34(data) 1619 57
-            1625: 22(i16vec4) Load 1624
-            1626: 22(i16vec4) VectorShuffle 1625 1623 4 5 2 3
-                              Store 1624 1626
-            1627:      6(int) Load 8(invocation)
-            1628:   1150(ptr) AccessChain 34(data) 57 57
-            1629: 22(i16vec4) Load 1628
-            1630:1159(i16vec3) VectorShuffle 1629 1629 0 1 2
-            1631:1159(i16vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1630
-            1632:   1150(ptr) AccessChain 34(data) 1627 57
-            1633: 22(i16vec4) Load 1632
-            1634: 22(i16vec4) VectorShuffle 1633 1631 4 5 6 3
-                              Store 1632 1634
-            1635:      6(int) Load 8(invocation)
-            1636:   1150(ptr) AccessChain 34(data) 67 57
-            1637: 22(i16vec4) Load 1636
-            1638: 22(i16vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1637
-            1639:   1150(ptr) AccessChain 34(data) 1635 57
-                              Store 1639 1638
-            1640:      6(int) Load 8(invocation)
-            1641:   1143(ptr) AccessChain 34(data) 37 57 38
-            1642: 21(int16_t) Load 1641
-            1643: 21(int16_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 1642
-            1644:   1143(ptr) AccessChain 34(data) 1640 57 38
-                              Store 1644 1643
-            1645:      6(int) Load 8(invocation)
-            1646:   1150(ptr) AccessChain 34(data) 46 57
-            1647: 22(i16vec4) Load 1646
-            1648:1149(i16vec2) VectorShuffle 1647 1647 0 1
-            1649:1149(i16vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 1648
-            1650:   1150(ptr) AccessChain 34(data) 1645 57
-            1651: 22(i16vec4) Load 1650
-            1652: 22(i16vec4) VectorShuffle 1651 1649 4 5 2 3
-                              Store 1650 1652
-            1653:      6(int) Load 8(invocation)
-            1654:   1150(ptr) AccessChain 34(data) 57 57
-            1655: 22(i16vec4) Load 1654
-            1656:1159(i16vec3) VectorShuffle 1655 1655 0 1 2
-            1657:1159(i16vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 1656
-            1658:   1150(ptr) AccessChain 34(data) 1653 57
-            1659: 22(i16vec4) Load 1658
-            1660: 22(i16vec4) VectorShuffle 1659 1657 4 5 6 3
-                              Store 1658 1660
-            1661:      6(int) Load 8(invocation)
-            1662:   1150(ptr) AccessChain 34(data) 67 57
-            1663: 22(i16vec4) Load 1662
-            1664: 22(i16vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 1663
-            1665:   1150(ptr) AccessChain 34(data) 1661 57
-                              Store 1665 1664
-            1666:      6(int) Load 8(invocation)
-            1667:   1143(ptr) AccessChain 34(data) 37 57 38
-            1668: 21(int16_t) Load 1667
-            1669: 21(int16_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 1668
-            1670:   1143(ptr) AccessChain 34(data) 1666 57 38
-                              Store 1670 1669
+            1534:1319(i16vec2) VectorShuffle 1533 1533 0 1
+            1535:1319(i16vec2) GroupNonUniformIAdd 42 InclusiveScan 1534
+            1536:   1313(ptr) AccessChain 34(data) 1531 59 38
+            1537: 21(int16_t) CompositeExtract 1535 0
+                              Store 1536 1537
+            1538:   1313(ptr) AccessChain 34(data) 1531 59 55
+            1539: 21(int16_t) CompositeExtract 1535 1
+                              Store 1538 1539
+            1540:      6(int) Load 8(invocation)
+            1541:   1320(ptr) AccessChain 34(data) 59 59
+            1542: 22(i16vec4) Load 1541
+            1543:1330(i16vec3) VectorShuffle 1542 1542 0 1 2
+            1544:1330(i16vec3) GroupNonUniformIAdd 42 InclusiveScan 1543
+            1545:   1313(ptr) AccessChain 34(data) 1540 59 38
+            1546: 21(int16_t) CompositeExtract 1544 0
+                              Store 1545 1546
+            1547:   1313(ptr) AccessChain 34(data) 1540 59 55
+            1548: 21(int16_t) CompositeExtract 1544 1
+                              Store 1547 1548
+            1549:   1313(ptr) AccessChain 34(data) 1540 59 69
+            1550: 21(int16_t) CompositeExtract 1544 2
+                              Store 1549 1550
+            1551:      6(int) Load 8(invocation)
+            1552:   1320(ptr) AccessChain 34(data) 73 59
+            1553: 22(i16vec4) Load 1552
+            1554: 22(i16vec4) GroupNonUniformIAdd 42 InclusiveScan 1553
+            1555:   1320(ptr) AccessChain 34(data) 1551 59
+                              Store 1555 1554
+            1556:      6(int) Load 8(invocation)
+            1557:   1313(ptr) AccessChain 34(data) 37 59 38
+            1558: 21(int16_t) Load 1557
+            1559: 21(int16_t) GroupNonUniformIMul 42 InclusiveScan 1558
+            1560:   1313(ptr) AccessChain 34(data) 1556 59 38
+                              Store 1560 1559
+            1561:      6(int) Load 8(invocation)
+            1562:   1320(ptr) AccessChain 34(data) 46 59
+            1563: 22(i16vec4) Load 1562
+            1564:1319(i16vec2) VectorShuffle 1563 1563 0 1
+            1565:1319(i16vec2) GroupNonUniformIMul 42 InclusiveScan 1564
+            1566:   1313(ptr) AccessChain 34(data) 1561 59 38
+            1567: 21(int16_t) CompositeExtract 1565 0
+                              Store 1566 1567
+            1568:   1313(ptr) AccessChain 34(data) 1561 59 55
+            1569: 21(int16_t) CompositeExtract 1565 1
+                              Store 1568 1569
+            1570:      6(int) Load 8(invocation)
+            1571:   1320(ptr) AccessChain 34(data) 59 59
+            1572: 22(i16vec4) Load 1571
+            1573:1330(i16vec3) VectorShuffle 1572 1572 0 1 2
+            1574:1330(i16vec3) GroupNonUniformIMul 42 InclusiveScan 1573
+            1575:   1313(ptr) AccessChain 34(data) 1570 59 38
+            1576: 21(int16_t) CompositeExtract 1574 0
+                              Store 1575 1576
+            1577:   1313(ptr) AccessChain 34(data) 1570 59 55
+            1578: 21(int16_t) CompositeExtract 1574 1
+                              Store 1577 1578
+            1579:   1313(ptr) AccessChain 34(data) 1570 59 69
+            1580: 21(int16_t) CompositeExtract 1574 2
+                              Store 1579 1580
+            1581:      6(int) Load 8(invocation)
+            1582:   1320(ptr) AccessChain 34(data) 73 59
+            1583: 22(i16vec4) Load 1582
+            1584: 22(i16vec4) GroupNonUniformIMul 42 InclusiveScan 1583
+            1585:   1320(ptr) AccessChain 34(data) 1581 59
+                              Store 1585 1584
+            1586:      6(int) Load 8(invocation)
+            1587:   1313(ptr) AccessChain 34(data) 37 59 38
+            1588: 21(int16_t) Load 1587
+            1589: 21(int16_t) GroupNonUniformSMin 42 InclusiveScan 1588
+            1590:   1313(ptr) AccessChain 34(data) 1586 59 38
+                              Store 1590 1589
+            1591:      6(int) Load 8(invocation)
+            1592:   1320(ptr) AccessChain 34(data) 46 59
+            1593: 22(i16vec4) Load 1592
+            1594:1319(i16vec2) VectorShuffle 1593 1593 0 1
+            1595:1319(i16vec2) GroupNonUniformSMin 42 InclusiveScan 1594
+            1596:   1313(ptr) AccessChain 34(data) 1591 59 38
+            1597: 21(int16_t) CompositeExtract 1595 0
+                              Store 1596 1597
+            1598:   1313(ptr) AccessChain 34(data) 1591 59 55
+            1599: 21(int16_t) CompositeExtract 1595 1
+                              Store 1598 1599
+            1600:      6(int) Load 8(invocation)
+            1601:   1320(ptr) AccessChain 34(data) 59 59
+            1602: 22(i16vec4) Load 1601
+            1603:1330(i16vec3) VectorShuffle 1602 1602 0 1 2
+            1604:1330(i16vec3) GroupNonUniformSMin 42 InclusiveScan 1603
+            1605:   1313(ptr) AccessChain 34(data) 1600 59 38
+            1606: 21(int16_t) CompositeExtract 1604 0
+                              Store 1605 1606
+            1607:   1313(ptr) AccessChain 34(data) 1600 59 55
+            1608: 21(int16_t) CompositeExtract 1604 1
+                              Store 1607 1608
+            1609:   1313(ptr) AccessChain 34(data) 1600 59 69
+            1610: 21(int16_t) CompositeExtract 1604 2
+                              Store 1609 1610
+            1611:      6(int) Load 8(invocation)
+            1612:   1320(ptr) AccessChain 34(data) 73 59
+            1613: 22(i16vec4) Load 1612
+            1614: 22(i16vec4) GroupNonUniformSMin 42 InclusiveScan 1613
+            1615:   1320(ptr) AccessChain 34(data) 1611 59
+                              Store 1615 1614
+            1616:      6(int) Load 8(invocation)
+            1617:   1313(ptr) AccessChain 34(data) 37 59 38
+            1618: 21(int16_t) Load 1617
+            1619: 21(int16_t) GroupNonUniformSMax 42 InclusiveScan 1618
+            1620:   1313(ptr) AccessChain 34(data) 1616 59 38
+                              Store 1620 1619
+            1621:      6(int) Load 8(invocation)
+            1622:   1320(ptr) AccessChain 34(data) 46 59
+            1623: 22(i16vec4) Load 1622
+            1624:1319(i16vec2) VectorShuffle 1623 1623 0 1
+            1625:1319(i16vec2) GroupNonUniformSMax 42 InclusiveScan 1624
+            1626:   1313(ptr) AccessChain 34(data) 1621 59 38
+            1627: 21(int16_t) CompositeExtract 1625 0
+                              Store 1626 1627
+            1628:   1313(ptr) AccessChain 34(data) 1621 59 55
+            1629: 21(int16_t) CompositeExtract 1625 1
+                              Store 1628 1629
+            1630:      6(int) Load 8(invocation)
+            1631:   1320(ptr) AccessChain 34(data) 59 59
+            1632: 22(i16vec4) Load 1631
+            1633:1330(i16vec3) VectorShuffle 1632 1632 0 1 2
+            1634:1330(i16vec3) GroupNonUniformSMax 42 InclusiveScan 1633
+            1635:   1313(ptr) AccessChain 34(data) 1630 59 38
+            1636: 21(int16_t) CompositeExtract 1634 0
+                              Store 1635 1636
+            1637:   1313(ptr) AccessChain 34(data) 1630 59 55
+            1638: 21(int16_t) CompositeExtract 1634 1
+                              Store 1637 1638
+            1639:   1313(ptr) AccessChain 34(data) 1630 59 69
+            1640: 21(int16_t) CompositeExtract 1634 2
+                              Store 1639 1640
+            1641:      6(int) Load 8(invocation)
+            1642:   1320(ptr) AccessChain 34(data) 73 59
+            1643: 22(i16vec4) Load 1642
+            1644: 22(i16vec4) GroupNonUniformSMax 42 InclusiveScan 1643
+            1645:   1320(ptr) AccessChain 34(data) 1641 59
+                              Store 1645 1644
+            1646:      6(int) Load 8(invocation)
+            1647:   1313(ptr) AccessChain 34(data) 37 59 38
+            1648: 21(int16_t) Load 1647
+            1649: 21(int16_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 1648
+            1650:   1313(ptr) AccessChain 34(data) 1646 59 38
+                              Store 1650 1649
+            1651:      6(int) Load 8(invocation)
+            1652:   1320(ptr) AccessChain 34(data) 46 59
+            1653: 22(i16vec4) Load 1652
+            1654:1319(i16vec2) VectorShuffle 1653 1653 0 1
+            1655:1319(i16vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 1654
+            1656:   1313(ptr) AccessChain 34(data) 1651 59 38
+            1657: 21(int16_t) CompositeExtract 1655 0
+                              Store 1656 1657
+            1658:   1313(ptr) AccessChain 34(data) 1651 59 55
+            1659: 21(int16_t) CompositeExtract 1655 1
+                              Store 1658 1659
+            1660:      6(int) Load 8(invocation)
+            1661:   1320(ptr) AccessChain 34(data) 59 59
+            1662: 22(i16vec4) Load 1661
+            1663:1330(i16vec3) VectorShuffle 1662 1662 0 1 2
+            1664:1330(i16vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 1663
+            1665:   1313(ptr) AccessChain 34(data) 1660 59 38
+            1666: 21(int16_t) CompositeExtract 1664 0
+                              Store 1665 1666
+            1667:   1313(ptr) AccessChain 34(data) 1660 59 55
+            1668: 21(int16_t) CompositeExtract 1664 1
+                              Store 1667 1668
+            1669:   1313(ptr) AccessChain 34(data) 1660 59 69
+            1670: 21(int16_t) CompositeExtract 1664 2
+                              Store 1669 1670
             1671:      6(int) Load 8(invocation)
-            1672:   1150(ptr) AccessChain 34(data) 46 57
+            1672:   1320(ptr) AccessChain 34(data) 73 59
             1673: 22(i16vec4) Load 1672
-            1674:1149(i16vec2) VectorShuffle 1673 1673 0 1
-            1675:1149(i16vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 1674
-            1676:   1150(ptr) AccessChain 34(data) 1671 57
-            1677: 22(i16vec4) Load 1676
-            1678: 22(i16vec4) VectorShuffle 1677 1675 4 5 2 3
-                              Store 1676 1678
-            1679:      6(int) Load 8(invocation)
-            1680:   1150(ptr) AccessChain 34(data) 57 57
-            1681: 22(i16vec4) Load 1680
-            1682:1159(i16vec3) VectorShuffle 1681 1681 0 1 2
-            1683:1159(i16vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 1682
-            1684:   1150(ptr) AccessChain 34(data) 1679 57
-            1685: 22(i16vec4) Load 1684
-            1686: 22(i16vec4) VectorShuffle 1685 1683 4 5 6 3
-                              Store 1684 1686
-            1687:      6(int) Load 8(invocation)
-            1688:   1150(ptr) AccessChain 34(data) 67 57
-            1689: 22(i16vec4) Load 1688
-            1690: 22(i16vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 1689
-            1691:   1150(ptr) AccessChain 34(data) 1687 57
-                              Store 1691 1690
-            1692:      6(int) Load 8(invocation)
-            1694:   1693(ptr) AccessChain 34(data) 37 67 38
-            1695: 23(int16_t) Load 1694
-            1696: 23(int16_t) GroupNonUniformIAdd 42 Reduce 1695
-            1697:   1693(ptr) AccessChain 34(data) 1692 67 38
-                              Store 1697 1696
-            1698:      6(int) Load 8(invocation)
-            1701:   1700(ptr) AccessChain 34(data) 46 67
-            1702: 24(i16vec4) Load 1701
-            1703:1699(i16vec2) VectorShuffle 1702 1702 0 1
-            1704:1699(i16vec2) GroupNonUniformIAdd 42 Reduce 1703
-            1705:   1700(ptr) AccessChain 34(data) 1698 67
-            1706: 24(i16vec4) Load 1705
-            1707: 24(i16vec4) VectorShuffle 1706 1704 4 5 2 3
-                              Store 1705 1707
-            1708:      6(int) Load 8(invocation)
-            1710:   1700(ptr) AccessChain 34(data) 57 67
-            1711: 24(i16vec4) Load 1710
-            1712:1709(i16vec3) VectorShuffle 1711 1711 0 1 2
-            1713:1709(i16vec3) GroupNonUniformIAdd 42 Reduce 1712
-            1714:   1700(ptr) AccessChain 34(data) 1708 67
-            1715: 24(i16vec4) Load 1714
-            1716: 24(i16vec4) VectorShuffle 1715 1713 4 5 6 3
-                              Store 1714 1716
-            1717:      6(int) Load 8(invocation)
-            1718:   1700(ptr) AccessChain 34(data) 67 67
-            1719: 24(i16vec4) Load 1718
-            1720: 24(i16vec4) GroupNonUniformIAdd 42 Reduce 1719
-            1721:   1700(ptr) AccessChain 34(data) 1717 67
-                              Store 1721 1720
-            1722:      6(int) Load 8(invocation)
-            1723:   1693(ptr) AccessChain 34(data) 37 67 38
-            1724: 23(int16_t) Load 1723
-            1725: 23(int16_t) GroupNonUniformIMul 42 Reduce 1724
-            1726:   1693(ptr) AccessChain 34(data) 1722 67 38
-                              Store 1726 1725
-            1727:      6(int) Load 8(invocation)
-            1728:   1700(ptr) AccessChain 34(data) 46 67
-            1729: 24(i16vec4) Load 1728
-            1730:1699(i16vec2) VectorShuffle 1729 1729 0 1
-            1731:1699(i16vec2) GroupNonUniformIMul 42 Reduce 1730
-            1732:   1700(ptr) AccessChain 34(data) 1727 67
-            1733: 24(i16vec4) Load 1732
-            1734: 24(i16vec4) VectorShuffle 1733 1731 4 5 2 3
-                              Store 1732 1734
-            1735:      6(int) Load 8(invocation)
-            1736:   1700(ptr) AccessChain 34(data) 57 67
-            1737: 24(i16vec4) Load 1736
-            1738:1709(i16vec3) VectorShuffle 1737 1737 0 1 2
-            1739:1709(i16vec3) GroupNonUniformIMul 42 Reduce 1738
-            1740:   1700(ptr) AccessChain 34(data) 1735 67
-            1741: 24(i16vec4) Load 1740
-            1742: 24(i16vec4) VectorShuffle 1741 1739 4 5 6 3
-                              Store 1740 1742
-            1743:      6(int) Load 8(invocation)
-            1744:   1700(ptr) AccessChain 34(data) 67 67
-            1745: 24(i16vec4) Load 1744
-            1746: 24(i16vec4) GroupNonUniformIMul 42 Reduce 1745
-            1747:   1700(ptr) AccessChain 34(data) 1743 67
-                              Store 1747 1746
-            1748:      6(int) Load 8(invocation)
-            1749:   1693(ptr) AccessChain 34(data) 37 67 38
-            1750: 23(int16_t) Load 1749
-            1751: 23(int16_t) GroupNonUniformUMin 42 Reduce 1750
-            1752:   1693(ptr) AccessChain 34(data) 1748 67 38
-                              Store 1752 1751
-            1753:      6(int) Load 8(invocation)
-            1754:   1700(ptr) AccessChain 34(data) 46 67
-            1755: 24(i16vec4) Load 1754
-            1756:1699(i16vec2) VectorShuffle 1755 1755 0 1
-            1757:1699(i16vec2) GroupNonUniformUMin 42 Reduce 1756
-            1758:   1700(ptr) AccessChain 34(data) 1753 67
-            1759: 24(i16vec4) Load 1758
-            1760: 24(i16vec4) VectorShuffle 1759 1757 4 5 2 3
-                              Store 1758 1760
+            1674: 22(i16vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 1673
+            1675:   1320(ptr) AccessChain 34(data) 1671 59
+                              Store 1675 1674
+            1676:      6(int) Load 8(invocation)
+            1677:   1313(ptr) AccessChain 34(data) 37 59 38
+            1678: 21(int16_t) Load 1677
+            1679: 21(int16_t) GroupNonUniformBitwiseOr 42 InclusiveScan 1678
+            1680:   1313(ptr) AccessChain 34(data) 1676 59 38
+                              Store 1680 1679
+            1681:      6(int) Load 8(invocation)
+            1682:   1320(ptr) AccessChain 34(data) 46 59
+            1683: 22(i16vec4) Load 1682
+            1684:1319(i16vec2) VectorShuffle 1683 1683 0 1
+            1685:1319(i16vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 1684
+            1686:   1313(ptr) AccessChain 34(data) 1681 59 38
+            1687: 21(int16_t) CompositeExtract 1685 0
+                              Store 1686 1687
+            1688:   1313(ptr) AccessChain 34(data) 1681 59 55
+            1689: 21(int16_t) CompositeExtract 1685 1
+                              Store 1688 1689
+            1690:      6(int) Load 8(invocation)
+            1691:   1320(ptr) AccessChain 34(data) 59 59
+            1692: 22(i16vec4) Load 1691
+            1693:1330(i16vec3) VectorShuffle 1692 1692 0 1 2
+            1694:1330(i16vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 1693
+            1695:   1313(ptr) AccessChain 34(data) 1690 59 38
+            1696: 21(int16_t) CompositeExtract 1694 0
+                              Store 1695 1696
+            1697:   1313(ptr) AccessChain 34(data) 1690 59 55
+            1698: 21(int16_t) CompositeExtract 1694 1
+                              Store 1697 1698
+            1699:   1313(ptr) AccessChain 34(data) 1690 59 69
+            1700: 21(int16_t) CompositeExtract 1694 2
+                              Store 1699 1700
+            1701:      6(int) Load 8(invocation)
+            1702:   1320(ptr) AccessChain 34(data) 73 59
+            1703: 22(i16vec4) Load 1702
+            1704: 22(i16vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 1703
+            1705:   1320(ptr) AccessChain 34(data) 1701 59
+                              Store 1705 1704
+            1706:      6(int) Load 8(invocation)
+            1707:   1313(ptr) AccessChain 34(data) 37 59 38
+            1708: 21(int16_t) Load 1707
+            1709: 21(int16_t) GroupNonUniformBitwiseXor 42 InclusiveScan 1708
+            1710:   1313(ptr) AccessChain 34(data) 1706 59 38
+                              Store 1710 1709
+            1711:      6(int) Load 8(invocation)
+            1712:   1320(ptr) AccessChain 34(data) 46 59
+            1713: 22(i16vec4) Load 1712
+            1714:1319(i16vec2) VectorShuffle 1713 1713 0 1
+            1715:1319(i16vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 1714
+            1716:   1313(ptr) AccessChain 34(data) 1711 59 38
+            1717: 21(int16_t) CompositeExtract 1715 0
+                              Store 1716 1717
+            1718:   1313(ptr) AccessChain 34(data) 1711 59 55
+            1719: 21(int16_t) CompositeExtract 1715 1
+                              Store 1718 1719
+            1720:      6(int) Load 8(invocation)
+            1721:   1320(ptr) AccessChain 34(data) 59 59
+            1722: 22(i16vec4) Load 1721
+            1723:1330(i16vec3) VectorShuffle 1722 1722 0 1 2
+            1724:1330(i16vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 1723
+            1725:   1313(ptr) AccessChain 34(data) 1720 59 38
+            1726: 21(int16_t) CompositeExtract 1724 0
+                              Store 1725 1726
+            1727:   1313(ptr) AccessChain 34(data) 1720 59 55
+            1728: 21(int16_t) CompositeExtract 1724 1
+                              Store 1727 1728
+            1729:   1313(ptr) AccessChain 34(data) 1720 59 69
+            1730: 21(int16_t) CompositeExtract 1724 2
+                              Store 1729 1730
+            1731:      6(int) Load 8(invocation)
+            1732:   1320(ptr) AccessChain 34(data) 73 59
+            1733: 22(i16vec4) Load 1732
+            1734: 22(i16vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 1733
+            1735:   1320(ptr) AccessChain 34(data) 1731 59
+                              Store 1735 1734
+            1736:      6(int) Load 8(invocation)
+            1737:   1313(ptr) AccessChain 34(data) 37 59 38
+            1738: 21(int16_t) Load 1737
+            1739: 21(int16_t) GroupNonUniformIAdd 42 ExclusiveScan 1738
+            1740:   1313(ptr) AccessChain 34(data) 1736 59 38
+                              Store 1740 1739
+            1741:      6(int) Load 8(invocation)
+            1742:   1320(ptr) AccessChain 34(data) 46 59
+            1743: 22(i16vec4) Load 1742
+            1744:1319(i16vec2) VectorShuffle 1743 1743 0 1
+            1745:1319(i16vec2) GroupNonUniformIAdd 42 ExclusiveScan 1744
+            1746:   1313(ptr) AccessChain 34(data) 1741 59 38
+            1747: 21(int16_t) CompositeExtract 1745 0
+                              Store 1746 1747
+            1748:   1313(ptr) AccessChain 34(data) 1741 59 55
+            1749: 21(int16_t) CompositeExtract 1745 1
+                              Store 1748 1749
+            1750:      6(int) Load 8(invocation)
+            1751:   1320(ptr) AccessChain 34(data) 59 59
+            1752: 22(i16vec4) Load 1751
+            1753:1330(i16vec3) VectorShuffle 1752 1752 0 1 2
+            1754:1330(i16vec3) GroupNonUniformIAdd 42 ExclusiveScan 1753
+            1755:   1313(ptr) AccessChain 34(data) 1750 59 38
+            1756: 21(int16_t) CompositeExtract 1754 0
+                              Store 1755 1756
+            1757:   1313(ptr) AccessChain 34(data) 1750 59 55
+            1758: 21(int16_t) CompositeExtract 1754 1
+                              Store 1757 1758
+            1759:   1313(ptr) AccessChain 34(data) 1750 59 69
+            1760: 21(int16_t) CompositeExtract 1754 2
+                              Store 1759 1760
             1761:      6(int) Load 8(invocation)
-            1762:   1700(ptr) AccessChain 34(data) 57 67
-            1763: 24(i16vec4) Load 1762
-            1764:1709(i16vec3) VectorShuffle 1763 1763 0 1 2
-            1765:1709(i16vec3) GroupNonUniformUMin 42 Reduce 1764
-            1766:   1700(ptr) AccessChain 34(data) 1761 67
-            1767: 24(i16vec4) Load 1766
-            1768: 24(i16vec4) VectorShuffle 1767 1765 4 5 6 3
-                              Store 1766 1768
-            1769:      6(int) Load 8(invocation)
-            1770:   1700(ptr) AccessChain 34(data) 67 67
-            1771: 24(i16vec4) Load 1770
-            1772: 24(i16vec4) GroupNonUniformUMin 42 Reduce 1771
-            1773:   1700(ptr) AccessChain 34(data) 1769 67
-                              Store 1773 1772
-            1774:      6(int) Load 8(invocation)
-            1775:   1693(ptr) AccessChain 34(data) 37 67 38
-            1776: 23(int16_t) Load 1775
-            1777: 23(int16_t) GroupNonUniformUMax 42 Reduce 1776
-            1778:   1693(ptr) AccessChain 34(data) 1774 67 38
-                              Store 1778 1777
-            1779:      6(int) Load 8(invocation)
-            1780:   1700(ptr) AccessChain 34(data) 46 67
-            1781: 24(i16vec4) Load 1780
-            1782:1699(i16vec2) VectorShuffle 1781 1781 0 1
-            1783:1699(i16vec2) GroupNonUniformUMax 42 Reduce 1782
-            1784:   1700(ptr) AccessChain 34(data) 1779 67
-            1785: 24(i16vec4) Load 1784
-            1786: 24(i16vec4) VectorShuffle 1785 1783 4 5 2 3
-                              Store 1784 1786
-            1787:      6(int) Load 8(invocation)
-            1788:   1700(ptr) AccessChain 34(data) 57 67
-            1789: 24(i16vec4) Load 1788
-            1790:1709(i16vec3) VectorShuffle 1789 1789 0 1 2
-            1791:1709(i16vec3) GroupNonUniformUMax 42 Reduce 1790
-            1792:   1700(ptr) AccessChain 34(data) 1787 67
-            1793: 24(i16vec4) Load 1792
-            1794: 24(i16vec4) VectorShuffle 1793 1791 4 5 6 3
-                              Store 1792 1794
-            1795:      6(int) Load 8(invocation)
-            1796:   1700(ptr) AccessChain 34(data) 67 67
-            1797: 24(i16vec4) Load 1796
-            1798: 24(i16vec4) GroupNonUniformUMax 42 Reduce 1797
-            1799:   1700(ptr) AccessChain 34(data) 1795 67
-                              Store 1799 1798
-            1800:      6(int) Load 8(invocation)
-            1801:   1693(ptr) AccessChain 34(data) 37 67 38
-            1802: 23(int16_t) Load 1801
-            1803: 23(int16_t) GroupNonUniformBitwiseAnd 42 Reduce 1802
-            1804:   1693(ptr) AccessChain 34(data) 1800 67 38
-                              Store 1804 1803
-            1805:      6(int) Load 8(invocation)
-            1806:   1700(ptr) AccessChain 34(data) 46 67
-            1807: 24(i16vec4) Load 1806
-            1808:1699(i16vec2) VectorShuffle 1807 1807 0 1
-            1809:1699(i16vec2) GroupNonUniformBitwiseAnd 42 Reduce 1808
-            1810:   1700(ptr) AccessChain 34(data) 1805 67
-            1811: 24(i16vec4) Load 1810
-            1812: 24(i16vec4) VectorShuffle 1811 1809 4 5 2 3
-                              Store 1810 1812
-            1813:      6(int) Load 8(invocation)
-            1814:   1700(ptr) AccessChain 34(data) 57 67
-            1815: 24(i16vec4) Load 1814
-            1816:1709(i16vec3) VectorShuffle 1815 1815 0 1 2
-            1817:1709(i16vec3) GroupNonUniformBitwiseAnd 42 Reduce 1816
-            1818:   1700(ptr) AccessChain 34(data) 1813 67
-            1819: 24(i16vec4) Load 1818
-            1820: 24(i16vec4) VectorShuffle 1819 1817 4 5 6 3
-                              Store 1818 1820
+            1762:   1320(ptr) AccessChain 34(data) 73 59
+            1763: 22(i16vec4) Load 1762
+            1764: 22(i16vec4) GroupNonUniformIAdd 42 ExclusiveScan 1763
+            1765:   1320(ptr) AccessChain 34(data) 1761 59
+                              Store 1765 1764
+            1766:      6(int) Load 8(invocation)
+            1767:   1313(ptr) AccessChain 34(data) 37 59 38
+            1768: 21(int16_t) Load 1767
+            1769: 21(int16_t) GroupNonUniformIMul 42 ExclusiveScan 1768
+            1770:   1313(ptr) AccessChain 34(data) 1766 59 38
+                              Store 1770 1769
+            1771:      6(int) Load 8(invocation)
+            1772:   1320(ptr) AccessChain 34(data) 46 59
+            1773: 22(i16vec4) Load 1772
+            1774:1319(i16vec2) VectorShuffle 1773 1773 0 1
+            1775:1319(i16vec2) GroupNonUniformIMul 42 ExclusiveScan 1774
+            1776:   1313(ptr) AccessChain 34(data) 1771 59 38
+            1777: 21(int16_t) CompositeExtract 1775 0
+                              Store 1776 1777
+            1778:   1313(ptr) AccessChain 34(data) 1771 59 55
+            1779: 21(int16_t) CompositeExtract 1775 1
+                              Store 1778 1779
+            1780:      6(int) Load 8(invocation)
+            1781:   1320(ptr) AccessChain 34(data) 59 59
+            1782: 22(i16vec4) Load 1781
+            1783:1330(i16vec3) VectorShuffle 1782 1782 0 1 2
+            1784:1330(i16vec3) GroupNonUniformIMul 42 ExclusiveScan 1783
+            1785:   1313(ptr) AccessChain 34(data) 1780 59 38
+            1786: 21(int16_t) CompositeExtract 1784 0
+                              Store 1785 1786
+            1787:   1313(ptr) AccessChain 34(data) 1780 59 55
+            1788: 21(int16_t) CompositeExtract 1784 1
+                              Store 1787 1788
+            1789:   1313(ptr) AccessChain 34(data) 1780 59 69
+            1790: 21(int16_t) CompositeExtract 1784 2
+                              Store 1789 1790
+            1791:      6(int) Load 8(invocation)
+            1792:   1320(ptr) AccessChain 34(data) 73 59
+            1793: 22(i16vec4) Load 1792
+            1794: 22(i16vec4) GroupNonUniformIMul 42 ExclusiveScan 1793
+            1795:   1320(ptr) AccessChain 34(data) 1791 59
+                              Store 1795 1794
+            1796:      6(int) Load 8(invocation)
+            1797:   1313(ptr) AccessChain 34(data) 37 59 38
+            1798: 21(int16_t) Load 1797
+            1799: 21(int16_t) GroupNonUniformSMin 42 ExclusiveScan 1798
+            1800:   1313(ptr) AccessChain 34(data) 1796 59 38
+                              Store 1800 1799
+            1801:      6(int) Load 8(invocation)
+            1802:   1320(ptr) AccessChain 34(data) 46 59
+            1803: 22(i16vec4) Load 1802
+            1804:1319(i16vec2) VectorShuffle 1803 1803 0 1
+            1805:1319(i16vec2) GroupNonUniformSMin 42 ExclusiveScan 1804
+            1806:   1313(ptr) AccessChain 34(data) 1801 59 38
+            1807: 21(int16_t) CompositeExtract 1805 0
+                              Store 1806 1807
+            1808:   1313(ptr) AccessChain 34(data) 1801 59 55
+            1809: 21(int16_t) CompositeExtract 1805 1
+                              Store 1808 1809
+            1810:      6(int) Load 8(invocation)
+            1811:   1320(ptr) AccessChain 34(data) 59 59
+            1812: 22(i16vec4) Load 1811
+            1813:1330(i16vec3) VectorShuffle 1812 1812 0 1 2
+            1814:1330(i16vec3) GroupNonUniformSMin 42 ExclusiveScan 1813
+            1815:   1313(ptr) AccessChain 34(data) 1810 59 38
+            1816: 21(int16_t) CompositeExtract 1814 0
+                              Store 1815 1816
+            1817:   1313(ptr) AccessChain 34(data) 1810 59 55
+            1818: 21(int16_t) CompositeExtract 1814 1
+                              Store 1817 1818
+            1819:   1313(ptr) AccessChain 34(data) 1810 59 69
+            1820: 21(int16_t) CompositeExtract 1814 2
+                              Store 1819 1820
             1821:      6(int) Load 8(invocation)
-            1822:   1700(ptr) AccessChain 34(data) 67 67
-            1823: 24(i16vec4) Load 1822
-            1824: 24(i16vec4) GroupNonUniformBitwiseAnd 42 Reduce 1823
-            1825:   1700(ptr) AccessChain 34(data) 1821 67
+            1822:   1320(ptr) AccessChain 34(data) 73 59
+            1823: 22(i16vec4) Load 1822
+            1824: 22(i16vec4) GroupNonUniformSMin 42 ExclusiveScan 1823
+            1825:   1320(ptr) AccessChain 34(data) 1821 59
                               Store 1825 1824
             1826:      6(int) Load 8(invocation)
-            1827:   1693(ptr) AccessChain 34(data) 37 67 38
-            1828: 23(int16_t) Load 1827
-            1829: 23(int16_t) GroupNonUniformBitwiseOr 42 Reduce 1828
-            1830:   1693(ptr) AccessChain 34(data) 1826 67 38
+            1827:   1313(ptr) AccessChain 34(data) 37 59 38
+            1828: 21(int16_t) Load 1827
+            1829: 21(int16_t) GroupNonUniformSMax 42 ExclusiveScan 1828
+            1830:   1313(ptr) AccessChain 34(data) 1826 59 38
                               Store 1830 1829
             1831:      6(int) Load 8(invocation)
-            1832:   1700(ptr) AccessChain 34(data) 46 67
-            1833: 24(i16vec4) Load 1832
-            1834:1699(i16vec2) VectorShuffle 1833 1833 0 1
-            1835:1699(i16vec2) GroupNonUniformBitwiseOr 42 Reduce 1834
-            1836:   1700(ptr) AccessChain 34(data) 1831 67
-            1837: 24(i16vec4) Load 1836
-            1838: 24(i16vec4) VectorShuffle 1837 1835 4 5 2 3
-                              Store 1836 1838
-            1839:      6(int) Load 8(invocation)
-            1840:   1700(ptr) AccessChain 34(data) 57 67
-            1841: 24(i16vec4) Load 1840
-            1842:1709(i16vec3) VectorShuffle 1841 1841 0 1 2
-            1843:1709(i16vec3) GroupNonUniformBitwiseOr 42 Reduce 1842
-            1844:   1700(ptr) AccessChain 34(data) 1839 67
-            1845: 24(i16vec4) Load 1844
-            1846: 24(i16vec4) VectorShuffle 1845 1843 4 5 6 3
-                              Store 1844 1846
-            1847:      6(int) Load 8(invocation)
-            1848:   1700(ptr) AccessChain 34(data) 67 67
-            1849: 24(i16vec4) Load 1848
-            1850: 24(i16vec4) GroupNonUniformBitwiseOr 42 Reduce 1849
-            1851:   1700(ptr) AccessChain 34(data) 1847 67
-                              Store 1851 1850
-            1852:      6(int) Load 8(invocation)
-            1853:   1693(ptr) AccessChain 34(data) 37 67 38
-            1854: 23(int16_t) Load 1853
-            1855: 23(int16_t) GroupNonUniformBitwiseXor 42 Reduce 1854
-            1856:   1693(ptr) AccessChain 34(data) 1852 67 38
-                              Store 1856 1855
-            1857:      6(int) Load 8(invocation)
-            1858:   1700(ptr) AccessChain 34(data) 46 67
-            1859: 24(i16vec4) Load 1858
-            1860:1699(i16vec2) VectorShuffle 1859 1859 0 1
-            1861:1699(i16vec2) GroupNonUniformBitwiseXor 42 Reduce 1860
-            1862:   1700(ptr) AccessChain 34(data) 1857 67
-            1863: 24(i16vec4) Load 1862
-            1864: 24(i16vec4) VectorShuffle 1863 1861 4 5 2 3
-                              Store 1862 1864
-            1865:      6(int) Load 8(invocation)
-            1866:   1700(ptr) AccessChain 34(data) 57 67
-            1867: 24(i16vec4) Load 1866
-            1868:1709(i16vec3) VectorShuffle 1867 1867 0 1 2
-            1869:1709(i16vec3) GroupNonUniformBitwiseXor 42 Reduce 1868
-            1870:   1700(ptr) AccessChain 34(data) 1865 67
-            1871: 24(i16vec4) Load 1870
-            1872: 24(i16vec4) VectorShuffle 1871 1869 4 5 6 3
-                              Store 1870 1872
-            1873:      6(int) Load 8(invocation)
-            1874:   1700(ptr) AccessChain 34(data) 67 67
-            1875: 24(i16vec4) Load 1874
-            1876: 24(i16vec4) GroupNonUniformBitwiseXor 42 Reduce 1875
-            1877:   1700(ptr) AccessChain 34(data) 1873 67
-                              Store 1877 1876
-            1878:      6(int) Load 8(invocation)
-            1879:   1693(ptr) AccessChain 34(data) 37 67 38
-            1880: 23(int16_t) Load 1879
-            1881: 23(int16_t) GroupNonUniformIAdd 42 InclusiveScan 1880
-            1882:   1693(ptr) AccessChain 34(data) 1878 67 38
-                              Store 1882 1881
-            1883:      6(int) Load 8(invocation)
-            1884:   1700(ptr) AccessChain 34(data) 46 67
-            1885: 24(i16vec4) Load 1884
-            1886:1699(i16vec2) VectorShuffle 1885 1885 0 1
-            1887:1699(i16vec2) GroupNonUniformIAdd 42 InclusiveScan 1886
-            1888:   1700(ptr) AccessChain 34(data) 1883 67
-            1889: 24(i16vec4) Load 1888
-            1890: 24(i16vec4) VectorShuffle 1889 1887 4 5 2 3
-                              Store 1888 1890
+            1832:   1320(ptr) AccessChain 34(data) 46 59
+            1833: 22(i16vec4) Load 1832
+            1834:1319(i16vec2) VectorShuffle 1833 1833 0 1
+            1835:1319(i16vec2) GroupNonUniformSMax 42 ExclusiveScan 1834
+            1836:   1313(ptr) AccessChain 34(data) 1831 59 38
+            1837: 21(int16_t) CompositeExtract 1835 0
+                              Store 1836 1837
+            1838:   1313(ptr) AccessChain 34(data) 1831 59 55
+            1839: 21(int16_t) CompositeExtract 1835 1
+                              Store 1838 1839
+            1840:      6(int) Load 8(invocation)
+            1841:   1320(ptr) AccessChain 34(data) 59 59
+            1842: 22(i16vec4) Load 1841
+            1843:1330(i16vec3) VectorShuffle 1842 1842 0 1 2
+            1844:1330(i16vec3) GroupNonUniformSMax 42 ExclusiveScan 1843
+            1845:   1313(ptr) AccessChain 34(data) 1840 59 38
+            1846: 21(int16_t) CompositeExtract 1844 0
+                              Store 1845 1846
+            1847:   1313(ptr) AccessChain 34(data) 1840 59 55
+            1848: 21(int16_t) CompositeExtract 1844 1
+                              Store 1847 1848
+            1849:   1313(ptr) AccessChain 34(data) 1840 59 69
+            1850: 21(int16_t) CompositeExtract 1844 2
+                              Store 1849 1850
+            1851:      6(int) Load 8(invocation)
+            1852:   1320(ptr) AccessChain 34(data) 73 59
+            1853: 22(i16vec4) Load 1852
+            1854: 22(i16vec4) GroupNonUniformSMax 42 ExclusiveScan 1853
+            1855:   1320(ptr) AccessChain 34(data) 1851 59
+                              Store 1855 1854
+            1856:      6(int) Load 8(invocation)
+            1857:   1313(ptr) AccessChain 34(data) 37 59 38
+            1858: 21(int16_t) Load 1857
+            1859: 21(int16_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1858
+            1860:   1313(ptr) AccessChain 34(data) 1856 59 38
+                              Store 1860 1859
+            1861:      6(int) Load 8(invocation)
+            1862:   1320(ptr) AccessChain 34(data) 46 59
+            1863: 22(i16vec4) Load 1862
+            1864:1319(i16vec2) VectorShuffle 1863 1863 0 1
+            1865:1319(i16vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1864
+            1866:   1313(ptr) AccessChain 34(data) 1861 59 38
+            1867: 21(int16_t) CompositeExtract 1865 0
+                              Store 1866 1867
+            1868:   1313(ptr) AccessChain 34(data) 1861 59 55
+            1869: 21(int16_t) CompositeExtract 1865 1
+                              Store 1868 1869
+            1870:      6(int) Load 8(invocation)
+            1871:   1320(ptr) AccessChain 34(data) 59 59
+            1872: 22(i16vec4) Load 1871
+            1873:1330(i16vec3) VectorShuffle 1872 1872 0 1 2
+            1874:1330(i16vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1873
+            1875:   1313(ptr) AccessChain 34(data) 1870 59 38
+            1876: 21(int16_t) CompositeExtract 1874 0
+                              Store 1875 1876
+            1877:   1313(ptr) AccessChain 34(data) 1870 59 55
+            1878: 21(int16_t) CompositeExtract 1874 1
+                              Store 1877 1878
+            1879:   1313(ptr) AccessChain 34(data) 1870 59 69
+            1880: 21(int16_t) CompositeExtract 1874 2
+                              Store 1879 1880
+            1881:      6(int) Load 8(invocation)
+            1882:   1320(ptr) AccessChain 34(data) 73 59
+            1883: 22(i16vec4) Load 1882
+            1884: 22(i16vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 1883
+            1885:   1320(ptr) AccessChain 34(data) 1881 59
+                              Store 1885 1884
+            1886:      6(int) Load 8(invocation)
+            1887:   1313(ptr) AccessChain 34(data) 37 59 38
+            1888: 21(int16_t) Load 1887
+            1889: 21(int16_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 1888
+            1890:   1313(ptr) AccessChain 34(data) 1886 59 38
+                              Store 1890 1889
             1891:      6(int) Load 8(invocation)
-            1892:   1700(ptr) AccessChain 34(data) 57 67
-            1893: 24(i16vec4) Load 1892
-            1894:1709(i16vec3) VectorShuffle 1893 1893 0 1 2
-            1895:1709(i16vec3) GroupNonUniformIAdd 42 InclusiveScan 1894
-            1896:   1700(ptr) AccessChain 34(data) 1891 67
-            1897: 24(i16vec4) Load 1896
-            1898: 24(i16vec4) VectorShuffle 1897 1895 4 5 6 3
-                              Store 1896 1898
-            1899:      6(int) Load 8(invocation)
-            1900:   1700(ptr) AccessChain 34(data) 67 67
-            1901: 24(i16vec4) Load 1900
-            1902: 24(i16vec4) GroupNonUniformIAdd 42 InclusiveScan 1901
-            1903:   1700(ptr) AccessChain 34(data) 1899 67
-                              Store 1903 1902
-            1904:      6(int) Load 8(invocation)
-            1905:   1693(ptr) AccessChain 34(data) 37 67 38
-            1906: 23(int16_t) Load 1905
-            1907: 23(int16_t) GroupNonUniformIMul 42 InclusiveScan 1906
-            1908:   1693(ptr) AccessChain 34(data) 1904 67 38
-                              Store 1908 1907
-            1909:      6(int) Load 8(invocation)
-            1910:   1700(ptr) AccessChain 34(data) 46 67
-            1911: 24(i16vec4) Load 1910
-            1912:1699(i16vec2) VectorShuffle 1911 1911 0 1
-            1913:1699(i16vec2) GroupNonUniformIMul 42 InclusiveScan 1912
-            1914:   1700(ptr) AccessChain 34(data) 1909 67
-            1915: 24(i16vec4) Load 1914
-            1916: 24(i16vec4) VectorShuffle 1915 1913 4 5 2 3
-                              Store 1914 1916
-            1917:      6(int) Load 8(invocation)
-            1918:   1700(ptr) AccessChain 34(data) 57 67
-            1919: 24(i16vec4) Load 1918
-            1920:1709(i16vec3) VectorShuffle 1919 1919 0 1 2
-            1921:1709(i16vec3) GroupNonUniformIMul 42 InclusiveScan 1920
-            1922:   1700(ptr) AccessChain 34(data) 1917 67
-            1923: 24(i16vec4) Load 1922
-            1924: 24(i16vec4) VectorShuffle 1923 1921 4 5 6 3
-                              Store 1922 1924
-            1925:      6(int) Load 8(invocation)
-            1926:   1700(ptr) AccessChain 34(data) 67 67
-            1927: 24(i16vec4) Load 1926
-            1928: 24(i16vec4) GroupNonUniformIMul 42 InclusiveScan 1927
-            1929:   1700(ptr) AccessChain 34(data) 1925 67
-                              Store 1929 1928
+            1892:   1320(ptr) AccessChain 34(data) 46 59
+            1893: 22(i16vec4) Load 1892
+            1894:1319(i16vec2) VectorShuffle 1893 1893 0 1
+            1895:1319(i16vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 1894
+            1896:   1313(ptr) AccessChain 34(data) 1891 59 38
+            1897: 21(int16_t) CompositeExtract 1895 0
+                              Store 1896 1897
+            1898:   1313(ptr) AccessChain 34(data) 1891 59 55
+            1899: 21(int16_t) CompositeExtract 1895 1
+                              Store 1898 1899
+            1900:      6(int) Load 8(invocation)
+            1901:   1320(ptr) AccessChain 34(data) 59 59
+            1902: 22(i16vec4) Load 1901
+            1903:1330(i16vec3) VectorShuffle 1902 1902 0 1 2
+            1904:1330(i16vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 1903
+            1905:   1313(ptr) AccessChain 34(data) 1900 59 38
+            1906: 21(int16_t) CompositeExtract 1904 0
+                              Store 1905 1906
+            1907:   1313(ptr) AccessChain 34(data) 1900 59 55
+            1908: 21(int16_t) CompositeExtract 1904 1
+                              Store 1907 1908
+            1909:   1313(ptr) AccessChain 34(data) 1900 59 69
+            1910: 21(int16_t) CompositeExtract 1904 2
+                              Store 1909 1910
+            1911:      6(int) Load 8(invocation)
+            1912:   1320(ptr) AccessChain 34(data) 73 59
+            1913: 22(i16vec4) Load 1912
+            1914: 22(i16vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 1913
+            1915:   1320(ptr) AccessChain 34(data) 1911 59
+                              Store 1915 1914
+            1916:      6(int) Load 8(invocation)
+            1917:   1313(ptr) AccessChain 34(data) 37 59 38
+            1918: 21(int16_t) Load 1917
+            1919: 21(int16_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 1918
+            1920:   1313(ptr) AccessChain 34(data) 1916 59 38
+                              Store 1920 1919
+            1921:      6(int) Load 8(invocation)
+            1922:   1320(ptr) AccessChain 34(data) 46 59
+            1923: 22(i16vec4) Load 1922
+            1924:1319(i16vec2) VectorShuffle 1923 1923 0 1
+            1925:1319(i16vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 1924
+            1926:   1313(ptr) AccessChain 34(data) 1921 59 38
+            1927: 21(int16_t) CompositeExtract 1925 0
+                              Store 1926 1927
+            1928:   1313(ptr) AccessChain 34(data) 1921 59 55
+            1929: 21(int16_t) CompositeExtract 1925 1
+                              Store 1928 1929
             1930:      6(int) Load 8(invocation)
-            1931:   1693(ptr) AccessChain 34(data) 37 67 38
-            1932: 23(int16_t) Load 1931
-            1933: 23(int16_t) GroupNonUniformUMin 42 InclusiveScan 1932
-            1934:   1693(ptr) AccessChain 34(data) 1930 67 38
-                              Store 1934 1933
-            1935:      6(int) Load 8(invocation)
-            1936:   1700(ptr) AccessChain 34(data) 46 67
-            1937: 24(i16vec4) Load 1936
-            1938:1699(i16vec2) VectorShuffle 1937 1937 0 1
-            1939:1699(i16vec2) GroupNonUniformUMin 42 InclusiveScan 1938
-            1940:   1700(ptr) AccessChain 34(data) 1935 67
-            1941: 24(i16vec4) Load 1940
-            1942: 24(i16vec4) VectorShuffle 1941 1939 4 5 2 3
-                              Store 1940 1942
-            1943:      6(int) Load 8(invocation)
-            1944:   1700(ptr) AccessChain 34(data) 57 67
-            1945: 24(i16vec4) Load 1944
-            1946:1709(i16vec3) VectorShuffle 1945 1945 0 1 2
-            1947:1709(i16vec3) GroupNonUniformUMin 42 InclusiveScan 1946
-            1948:   1700(ptr) AccessChain 34(data) 1943 67
-            1949: 24(i16vec4) Load 1948
-            1950: 24(i16vec4) VectorShuffle 1949 1947 4 5 6 3
-                              Store 1948 1950
-            1951:      6(int) Load 8(invocation)
-            1952:   1700(ptr) AccessChain 34(data) 67 67
-            1953: 24(i16vec4) Load 1952
-            1954: 24(i16vec4) GroupNonUniformUMin 42 InclusiveScan 1953
-            1955:   1700(ptr) AccessChain 34(data) 1951 67
-                              Store 1955 1954
-            1956:      6(int) Load 8(invocation)
-            1957:   1693(ptr) AccessChain 34(data) 37 67 38
-            1958: 23(int16_t) Load 1957
-            1959: 23(int16_t) GroupNonUniformUMax 42 InclusiveScan 1958
-            1960:   1693(ptr) AccessChain 34(data) 1956 67 38
-                              Store 1960 1959
-            1961:      6(int) Load 8(invocation)
-            1962:   1700(ptr) AccessChain 34(data) 46 67
-            1963: 24(i16vec4) Load 1962
-            1964:1699(i16vec2) VectorShuffle 1963 1963 0 1
-            1965:1699(i16vec2) GroupNonUniformUMax 42 InclusiveScan 1964
-            1966:   1700(ptr) AccessChain 34(data) 1961 67
-            1967: 24(i16vec4) Load 1966
-            1968: 24(i16vec4) VectorShuffle 1967 1965 4 5 2 3
-                              Store 1966 1968
-            1969:      6(int) Load 8(invocation)
-            1970:   1700(ptr) AccessChain 34(data) 57 67
-            1971: 24(i16vec4) Load 1970
-            1972:1709(i16vec3) VectorShuffle 1971 1971 0 1 2
-            1973:1709(i16vec3) GroupNonUniformUMax 42 InclusiveScan 1972
-            1974:   1700(ptr) AccessChain 34(data) 1969 67
-            1975: 24(i16vec4) Load 1974
-            1976: 24(i16vec4) VectorShuffle 1975 1973 4 5 6 3
-                              Store 1974 1976
-            1977:      6(int) Load 8(invocation)
-            1978:   1700(ptr) AccessChain 34(data) 67 67
-            1979: 24(i16vec4) Load 1978
-            1980: 24(i16vec4) GroupNonUniformUMax 42 InclusiveScan 1979
-            1981:   1700(ptr) AccessChain 34(data) 1977 67
-                              Store 1981 1980
-            1982:      6(int) Load 8(invocation)
-            1983:   1693(ptr) AccessChain 34(data) 37 67 38
-            1984: 23(int16_t) Load 1983
-            1985: 23(int16_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 1984
-            1986:   1693(ptr) AccessChain 34(data) 1982 67 38
-                              Store 1986 1985
-            1987:      6(int) Load 8(invocation)
-            1988:   1700(ptr) AccessChain 34(data) 46 67
-            1989: 24(i16vec4) Load 1988
-            1990:1699(i16vec2) VectorShuffle 1989 1989 0 1
-            1991:1699(i16vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 1990
-            1992:   1700(ptr) AccessChain 34(data) 1987 67
-            1993: 24(i16vec4) Load 1992
-            1994: 24(i16vec4) VectorShuffle 1993 1991 4 5 2 3
-                              Store 1992 1994
-            1995:      6(int) Load 8(invocation)
-            1996:   1700(ptr) AccessChain 34(data) 57 67
-            1997: 24(i16vec4) Load 1996
-            1998:1709(i16vec3) VectorShuffle 1997 1997 0 1 2
-            1999:1709(i16vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 1998
-            2000:   1700(ptr) AccessChain 34(data) 1995 67
-            2001: 24(i16vec4) Load 2000
-            2002: 24(i16vec4) VectorShuffle 2001 1999 4 5 6 3
-                              Store 2000 2002
-            2003:      6(int) Load 8(invocation)
-            2004:   1700(ptr) AccessChain 34(data) 67 67
-            2005: 24(i16vec4) Load 2004
-            2006: 24(i16vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 2005
-            2007:   1700(ptr) AccessChain 34(data) 2003 67
-                              Store 2007 2006
-            2008:      6(int) Load 8(invocation)
-            2009:   1693(ptr) AccessChain 34(data) 37 67 38
-            2010: 23(int16_t) Load 2009
-            2011: 23(int16_t) GroupNonUniformBitwiseOr 42 InclusiveScan 2010
-            2012:   1693(ptr) AccessChain 34(data) 2008 67 38
-                              Store 2012 2011
-            2013:      6(int) Load 8(invocation)
-            2014:   1700(ptr) AccessChain 34(data) 46 67
-            2015: 24(i16vec4) Load 2014
-            2016:1699(i16vec2) VectorShuffle 2015 2015 0 1
-            2017:1699(i16vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 2016
-            2018:   1700(ptr) AccessChain 34(data) 2013 67
-            2019: 24(i16vec4) Load 2018
-            2020: 24(i16vec4) VectorShuffle 2019 2017 4 5 2 3
-                              Store 2018 2020
-            2021:      6(int) Load 8(invocation)
-            2022:   1700(ptr) AccessChain 34(data) 57 67
-            2023: 24(i16vec4) Load 2022
-            2024:1709(i16vec3) VectorShuffle 2023 2023 0 1 2
-            2025:1709(i16vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 2024
-            2026:   1700(ptr) AccessChain 34(data) 2021 67
-            2027: 24(i16vec4) Load 2026
-            2028: 24(i16vec4) VectorShuffle 2027 2025 4 5 6 3
-                              Store 2026 2028
-            2029:      6(int) Load 8(invocation)
-            2030:   1700(ptr) AccessChain 34(data) 67 67
-            2031: 24(i16vec4) Load 2030
-            2032: 24(i16vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 2031
-            2033:   1700(ptr) AccessChain 34(data) 2029 67
-                              Store 2033 2032
-            2034:      6(int) Load 8(invocation)
-            2035:   1693(ptr) AccessChain 34(data) 37 67 38
-            2036: 23(int16_t) Load 2035
-            2037: 23(int16_t) GroupNonUniformBitwiseXor 42 InclusiveScan 2036
-            2038:   1693(ptr) AccessChain 34(data) 2034 67 38
-                              Store 2038 2037
-            2039:      6(int) Load 8(invocation)
-            2040:   1700(ptr) AccessChain 34(data) 46 67
-            2041: 24(i16vec4) Load 2040
-            2042:1699(i16vec2) VectorShuffle 2041 2041 0 1
-            2043:1699(i16vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 2042
-            2044:   1700(ptr) AccessChain 34(data) 2039 67
-            2045: 24(i16vec4) Load 2044
-            2046: 24(i16vec4) VectorShuffle 2045 2043 4 5 2 3
-                              Store 2044 2046
-            2047:      6(int) Load 8(invocation)
-            2048:   1700(ptr) AccessChain 34(data) 57 67
-            2049: 24(i16vec4) Load 2048
-            2050:1709(i16vec3) VectorShuffle 2049 2049 0 1 2
-            2051:1709(i16vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 2050
-            2052:   1700(ptr) AccessChain 34(data) 2047 67
-            2053: 24(i16vec4) Load 2052
-            2054: 24(i16vec4) VectorShuffle 2053 2051 4 5 6 3
-                              Store 2052 2054
-            2055:      6(int) Load 8(invocation)
-            2056:   1700(ptr) AccessChain 34(data) 67 67
-            2057: 24(i16vec4) Load 2056
-            2058: 24(i16vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 2057
-            2059:   1700(ptr) AccessChain 34(data) 2055 67
-                              Store 2059 2058
-            2060:      6(int) Load 8(invocation)
-            2061:   1693(ptr) AccessChain 34(data) 37 67 38
-            2062: 23(int16_t) Load 2061
-            2063: 23(int16_t) GroupNonUniformIAdd 42 ExclusiveScan 2062
-            2064:   1693(ptr) AccessChain 34(data) 2060 67 38
-                              Store 2064 2063
+            1931:   1320(ptr) AccessChain 34(data) 59 59
+            1932: 22(i16vec4) Load 1931
+            1933:1330(i16vec3) VectorShuffle 1932 1932 0 1 2
+            1934:1330(i16vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 1933
+            1935:   1313(ptr) AccessChain 34(data) 1930 59 38
+            1936: 21(int16_t) CompositeExtract 1934 0
+                              Store 1935 1936
+            1937:   1313(ptr) AccessChain 34(data) 1930 59 55
+            1938: 21(int16_t) CompositeExtract 1934 1
+                              Store 1937 1938
+            1939:   1313(ptr) AccessChain 34(data) 1930 59 69
+            1940: 21(int16_t) CompositeExtract 1934 2
+                              Store 1939 1940
+            1941:      6(int) Load 8(invocation)
+            1942:   1320(ptr) AccessChain 34(data) 73 59
+            1943: 22(i16vec4) Load 1942
+            1944: 22(i16vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 1943
+            1945:   1320(ptr) AccessChain 34(data) 1941 59
+                              Store 1945 1944
+            1946:      6(int) Load 8(invocation)
+            1948:   1947(ptr) AccessChain 34(data) 37 73 38
+            1949: 23(int16_t) Load 1948
+            1950: 23(int16_t) GroupNonUniformIAdd 42 Reduce 1949
+            1951:   1947(ptr) AccessChain 34(data) 1946 73 38
+                              Store 1951 1950
+            1952:      6(int) Load 8(invocation)
+            1955:   1954(ptr) AccessChain 34(data) 46 73
+            1956: 24(i16vec4) Load 1955
+            1957:1953(i16vec2) VectorShuffle 1956 1956 0 1
+            1958:1953(i16vec2) GroupNonUniformIAdd 42 Reduce 1957
+            1959:   1947(ptr) AccessChain 34(data) 1952 73 38
+            1960: 23(int16_t) CompositeExtract 1958 0
+                              Store 1959 1960
+            1961:   1947(ptr) AccessChain 34(data) 1952 73 55
+            1962: 23(int16_t) CompositeExtract 1958 1
+                              Store 1961 1962
+            1963:      6(int) Load 8(invocation)
+            1965:   1954(ptr) AccessChain 34(data) 59 73
+            1966: 24(i16vec4) Load 1965
+            1967:1964(i16vec3) VectorShuffle 1966 1966 0 1 2
+            1968:1964(i16vec3) GroupNonUniformIAdd 42 Reduce 1967
+            1969:   1947(ptr) AccessChain 34(data) 1963 73 38
+            1970: 23(int16_t) CompositeExtract 1968 0
+                              Store 1969 1970
+            1971:   1947(ptr) AccessChain 34(data) 1963 73 55
+            1972: 23(int16_t) CompositeExtract 1968 1
+                              Store 1971 1972
+            1973:   1947(ptr) AccessChain 34(data) 1963 73 69
+            1974: 23(int16_t) CompositeExtract 1968 2
+                              Store 1973 1974
+            1975:      6(int) Load 8(invocation)
+            1976:   1954(ptr) AccessChain 34(data) 73 73
+            1977: 24(i16vec4) Load 1976
+            1978: 24(i16vec4) GroupNonUniformIAdd 42 Reduce 1977
+            1979:   1954(ptr) AccessChain 34(data) 1975 73
+                              Store 1979 1978
+            1980:      6(int) Load 8(invocation)
+            1981:   1947(ptr) AccessChain 34(data) 37 73 38
+            1982: 23(int16_t) Load 1981
+            1983: 23(int16_t) GroupNonUniformIMul 42 Reduce 1982
+            1984:   1947(ptr) AccessChain 34(data) 1980 73 38
+                              Store 1984 1983
+            1985:      6(int) Load 8(invocation)
+            1986:   1954(ptr) AccessChain 34(data) 46 73
+            1987: 24(i16vec4) Load 1986
+            1988:1953(i16vec2) VectorShuffle 1987 1987 0 1
+            1989:1953(i16vec2) GroupNonUniformIMul 42 Reduce 1988
+            1990:   1947(ptr) AccessChain 34(data) 1985 73 38
+            1991: 23(int16_t) CompositeExtract 1989 0
+                              Store 1990 1991
+            1992:   1947(ptr) AccessChain 34(data) 1985 73 55
+            1993: 23(int16_t) CompositeExtract 1989 1
+                              Store 1992 1993
+            1994:      6(int) Load 8(invocation)
+            1995:   1954(ptr) AccessChain 34(data) 59 73
+            1996: 24(i16vec4) Load 1995
+            1997:1964(i16vec3) VectorShuffle 1996 1996 0 1 2
+            1998:1964(i16vec3) GroupNonUniformIMul 42 Reduce 1997
+            1999:   1947(ptr) AccessChain 34(data) 1994 73 38
+            2000: 23(int16_t) CompositeExtract 1998 0
+                              Store 1999 2000
+            2001:   1947(ptr) AccessChain 34(data) 1994 73 55
+            2002: 23(int16_t) CompositeExtract 1998 1
+                              Store 2001 2002
+            2003:   1947(ptr) AccessChain 34(data) 1994 73 69
+            2004: 23(int16_t) CompositeExtract 1998 2
+                              Store 2003 2004
+            2005:      6(int) Load 8(invocation)
+            2006:   1954(ptr) AccessChain 34(data) 73 73
+            2007: 24(i16vec4) Load 2006
+            2008: 24(i16vec4) GroupNonUniformIMul 42 Reduce 2007
+            2009:   1954(ptr) AccessChain 34(data) 2005 73
+                              Store 2009 2008
+            2010:      6(int) Load 8(invocation)
+            2011:   1947(ptr) AccessChain 34(data) 37 73 38
+            2012: 23(int16_t) Load 2011
+            2013: 23(int16_t) GroupNonUniformUMin 42 Reduce 2012
+            2014:   1947(ptr) AccessChain 34(data) 2010 73 38
+                              Store 2014 2013
+            2015:      6(int) Load 8(invocation)
+            2016:   1954(ptr) AccessChain 34(data) 46 73
+            2017: 24(i16vec4) Load 2016
+            2018:1953(i16vec2) VectorShuffle 2017 2017 0 1
+            2019:1953(i16vec2) GroupNonUniformUMin 42 Reduce 2018
+            2020:   1947(ptr) AccessChain 34(data) 2015 73 38
+            2021: 23(int16_t) CompositeExtract 2019 0
+                              Store 2020 2021
+            2022:   1947(ptr) AccessChain 34(data) 2015 73 55
+            2023: 23(int16_t) CompositeExtract 2019 1
+                              Store 2022 2023
+            2024:      6(int) Load 8(invocation)
+            2025:   1954(ptr) AccessChain 34(data) 59 73
+            2026: 24(i16vec4) Load 2025
+            2027:1964(i16vec3) VectorShuffle 2026 2026 0 1 2
+            2028:1964(i16vec3) GroupNonUniformUMin 42 Reduce 2027
+            2029:   1947(ptr) AccessChain 34(data) 2024 73 38
+            2030: 23(int16_t) CompositeExtract 2028 0
+                              Store 2029 2030
+            2031:   1947(ptr) AccessChain 34(data) 2024 73 55
+            2032: 23(int16_t) CompositeExtract 2028 1
+                              Store 2031 2032
+            2033:   1947(ptr) AccessChain 34(data) 2024 73 69
+            2034: 23(int16_t) CompositeExtract 2028 2
+                              Store 2033 2034
+            2035:      6(int) Load 8(invocation)
+            2036:   1954(ptr) AccessChain 34(data) 73 73
+            2037: 24(i16vec4) Load 2036
+            2038: 24(i16vec4) GroupNonUniformUMin 42 Reduce 2037
+            2039:   1954(ptr) AccessChain 34(data) 2035 73
+                              Store 2039 2038
+            2040:      6(int) Load 8(invocation)
+            2041:   1947(ptr) AccessChain 34(data) 37 73 38
+            2042: 23(int16_t) Load 2041
+            2043: 23(int16_t) GroupNonUniformUMax 42 Reduce 2042
+            2044:   1947(ptr) AccessChain 34(data) 2040 73 38
+                              Store 2044 2043
+            2045:      6(int) Load 8(invocation)
+            2046:   1954(ptr) AccessChain 34(data) 46 73
+            2047: 24(i16vec4) Load 2046
+            2048:1953(i16vec2) VectorShuffle 2047 2047 0 1
+            2049:1953(i16vec2) GroupNonUniformUMax 42 Reduce 2048
+            2050:   1947(ptr) AccessChain 34(data) 2045 73 38
+            2051: 23(int16_t) CompositeExtract 2049 0
+                              Store 2050 2051
+            2052:   1947(ptr) AccessChain 34(data) 2045 73 55
+            2053: 23(int16_t) CompositeExtract 2049 1
+                              Store 2052 2053
+            2054:      6(int) Load 8(invocation)
+            2055:   1954(ptr) AccessChain 34(data) 59 73
+            2056: 24(i16vec4) Load 2055
+            2057:1964(i16vec3) VectorShuffle 2056 2056 0 1 2
+            2058:1964(i16vec3) GroupNonUniformUMax 42 Reduce 2057
+            2059:   1947(ptr) AccessChain 34(data) 2054 73 38
+            2060: 23(int16_t) CompositeExtract 2058 0
+                              Store 2059 2060
+            2061:   1947(ptr) AccessChain 34(data) 2054 73 55
+            2062: 23(int16_t) CompositeExtract 2058 1
+                              Store 2061 2062
+            2063:   1947(ptr) AccessChain 34(data) 2054 73 69
+            2064: 23(int16_t) CompositeExtract 2058 2
+                              Store 2063 2064
             2065:      6(int) Load 8(invocation)
-            2066:   1700(ptr) AccessChain 34(data) 46 67
+            2066:   1954(ptr) AccessChain 34(data) 73 73
             2067: 24(i16vec4) Load 2066
-            2068:1699(i16vec2) VectorShuffle 2067 2067 0 1
-            2069:1699(i16vec2) GroupNonUniformIAdd 42 ExclusiveScan 2068
-            2070:   1700(ptr) AccessChain 34(data) 2065 67
-            2071: 24(i16vec4) Load 2070
-            2072: 24(i16vec4) VectorShuffle 2071 2069 4 5 2 3
-                              Store 2070 2072
-            2073:      6(int) Load 8(invocation)
-            2074:   1700(ptr) AccessChain 34(data) 57 67
-            2075: 24(i16vec4) Load 2074
-            2076:1709(i16vec3) VectorShuffle 2075 2075 0 1 2
-            2077:1709(i16vec3) GroupNonUniformIAdd 42 ExclusiveScan 2076
-            2078:   1700(ptr) AccessChain 34(data) 2073 67
-            2079: 24(i16vec4) Load 2078
-            2080: 24(i16vec4) VectorShuffle 2079 2077 4 5 6 3
-                              Store 2078 2080
-            2081:      6(int) Load 8(invocation)
-            2082:   1700(ptr) AccessChain 34(data) 67 67
-            2083: 24(i16vec4) Load 2082
-            2084: 24(i16vec4) GroupNonUniformIAdd 42 ExclusiveScan 2083
-            2085:   1700(ptr) AccessChain 34(data) 2081 67
-                              Store 2085 2084
-            2086:      6(int) Load 8(invocation)
-            2087:   1693(ptr) AccessChain 34(data) 37 67 38
-            2088: 23(int16_t) Load 2087
-            2089: 23(int16_t) GroupNonUniformIMul 42 ExclusiveScan 2088
-            2090:   1693(ptr) AccessChain 34(data) 2086 67 38
-                              Store 2090 2089
-            2091:      6(int) Load 8(invocation)
-            2092:   1700(ptr) AccessChain 34(data) 46 67
-            2093: 24(i16vec4) Load 2092
-            2094:1699(i16vec2) VectorShuffle 2093 2093 0 1
-            2095:1699(i16vec2) GroupNonUniformIMul 42 ExclusiveScan 2094
-            2096:   1700(ptr) AccessChain 34(data) 2091 67
+            2068: 24(i16vec4) GroupNonUniformUMax 42 Reduce 2067
+            2069:   1954(ptr) AccessChain 34(data) 2065 73
+                              Store 2069 2068
+            2070:      6(int) Load 8(invocation)
+            2071:   1947(ptr) AccessChain 34(data) 37 73 38
+            2072: 23(int16_t) Load 2071
+            2073: 23(int16_t) GroupNonUniformBitwiseAnd 42 Reduce 2072
+            2074:   1947(ptr) AccessChain 34(data) 2070 73 38
+                              Store 2074 2073
+            2075:      6(int) Load 8(invocation)
+            2076:   1954(ptr) AccessChain 34(data) 46 73
+            2077: 24(i16vec4) Load 2076
+            2078:1953(i16vec2) VectorShuffle 2077 2077 0 1
+            2079:1953(i16vec2) GroupNonUniformBitwiseAnd 42 Reduce 2078
+            2080:   1947(ptr) AccessChain 34(data) 2075 73 38
+            2081: 23(int16_t) CompositeExtract 2079 0
+                              Store 2080 2081
+            2082:   1947(ptr) AccessChain 34(data) 2075 73 55
+            2083: 23(int16_t) CompositeExtract 2079 1
+                              Store 2082 2083
+            2084:      6(int) Load 8(invocation)
+            2085:   1954(ptr) AccessChain 34(data) 59 73
+            2086: 24(i16vec4) Load 2085
+            2087:1964(i16vec3) VectorShuffle 2086 2086 0 1 2
+            2088:1964(i16vec3) GroupNonUniformBitwiseAnd 42 Reduce 2087
+            2089:   1947(ptr) AccessChain 34(data) 2084 73 38
+            2090: 23(int16_t) CompositeExtract 2088 0
+                              Store 2089 2090
+            2091:   1947(ptr) AccessChain 34(data) 2084 73 55
+            2092: 23(int16_t) CompositeExtract 2088 1
+                              Store 2091 2092
+            2093:   1947(ptr) AccessChain 34(data) 2084 73 69
+            2094: 23(int16_t) CompositeExtract 2088 2
+                              Store 2093 2094
+            2095:      6(int) Load 8(invocation)
+            2096:   1954(ptr) AccessChain 34(data) 73 73
             2097: 24(i16vec4) Load 2096
-            2098: 24(i16vec4) VectorShuffle 2097 2095 4 5 2 3
-                              Store 2096 2098
-            2099:      6(int) Load 8(invocation)
-            2100:   1700(ptr) AccessChain 34(data) 57 67
-            2101: 24(i16vec4) Load 2100
-            2102:1709(i16vec3) VectorShuffle 2101 2101 0 1 2
-            2103:1709(i16vec3) GroupNonUniformIMul 42 ExclusiveScan 2102
-            2104:   1700(ptr) AccessChain 34(data) 2099 67
-            2105: 24(i16vec4) Load 2104
-            2106: 24(i16vec4) VectorShuffle 2105 2103 4 5 6 3
-                              Store 2104 2106
-            2107:      6(int) Load 8(invocation)
-            2108:   1700(ptr) AccessChain 34(data) 67 67
-            2109: 24(i16vec4) Load 2108
-            2110: 24(i16vec4) GroupNonUniformIMul 42 ExclusiveScan 2109
-            2111:   1700(ptr) AccessChain 34(data) 2107 67
-                              Store 2111 2110
-            2112:      6(int) Load 8(invocation)
-            2113:   1693(ptr) AccessChain 34(data) 37 67 38
-            2114: 23(int16_t) Load 2113
-            2115: 23(int16_t) GroupNonUniformUMin 42 ExclusiveScan 2114
-            2116:   1693(ptr) AccessChain 34(data) 2112 67 38
-                              Store 2116 2115
-            2117:      6(int) Load 8(invocation)
-            2118:   1700(ptr) AccessChain 34(data) 46 67
-            2119: 24(i16vec4) Load 2118
-            2120:1699(i16vec2) VectorShuffle 2119 2119 0 1
-            2121:1699(i16vec2) GroupNonUniformUMin 42 ExclusiveScan 2120
-            2122:   1700(ptr) AccessChain 34(data) 2117 67
-            2123: 24(i16vec4) Load 2122
-            2124: 24(i16vec4) VectorShuffle 2123 2121 4 5 2 3
-                              Store 2122 2124
+            2098: 24(i16vec4) GroupNonUniformBitwiseAnd 42 Reduce 2097
+            2099:   1954(ptr) AccessChain 34(data) 2095 73
+                              Store 2099 2098
+            2100:      6(int) Load 8(invocation)
+            2101:   1947(ptr) AccessChain 34(data) 37 73 38
+            2102: 23(int16_t) Load 2101
+            2103: 23(int16_t) GroupNonUniformBitwiseOr 42 Reduce 2102
+            2104:   1947(ptr) AccessChain 34(data) 2100 73 38
+                              Store 2104 2103
+            2105:      6(int) Load 8(invocation)
+            2106:   1954(ptr) AccessChain 34(data) 46 73
+            2107: 24(i16vec4) Load 2106
+            2108:1953(i16vec2) VectorShuffle 2107 2107 0 1
+            2109:1953(i16vec2) GroupNonUniformBitwiseOr 42 Reduce 2108
+            2110:   1947(ptr) AccessChain 34(data) 2105 73 38
+            2111: 23(int16_t) CompositeExtract 2109 0
+                              Store 2110 2111
+            2112:   1947(ptr) AccessChain 34(data) 2105 73 55
+            2113: 23(int16_t) CompositeExtract 2109 1
+                              Store 2112 2113
+            2114:      6(int) Load 8(invocation)
+            2115:   1954(ptr) AccessChain 34(data) 59 73
+            2116: 24(i16vec4) Load 2115
+            2117:1964(i16vec3) VectorShuffle 2116 2116 0 1 2
+            2118:1964(i16vec3) GroupNonUniformBitwiseOr 42 Reduce 2117
+            2119:   1947(ptr) AccessChain 34(data) 2114 73 38
+            2120: 23(int16_t) CompositeExtract 2118 0
+                              Store 2119 2120
+            2121:   1947(ptr) AccessChain 34(data) 2114 73 55
+            2122: 23(int16_t) CompositeExtract 2118 1
+                              Store 2121 2122
+            2123:   1947(ptr) AccessChain 34(data) 2114 73 69
+            2124: 23(int16_t) CompositeExtract 2118 2
+                              Store 2123 2124
             2125:      6(int) Load 8(invocation)
-            2126:   1700(ptr) AccessChain 34(data) 57 67
+            2126:   1954(ptr) AccessChain 34(data) 73 73
             2127: 24(i16vec4) Load 2126
-            2128:1709(i16vec3) VectorShuffle 2127 2127 0 1 2
-            2129:1709(i16vec3) GroupNonUniformUMin 42 ExclusiveScan 2128
-            2130:   1700(ptr) AccessChain 34(data) 2125 67
-            2131: 24(i16vec4) Load 2130
-            2132: 24(i16vec4) VectorShuffle 2131 2129 4 5 6 3
-                              Store 2130 2132
-            2133:      6(int) Load 8(invocation)
-            2134:   1700(ptr) AccessChain 34(data) 67 67
-            2135: 24(i16vec4) Load 2134
-            2136: 24(i16vec4) GroupNonUniformUMin 42 ExclusiveScan 2135
-            2137:   1700(ptr) AccessChain 34(data) 2133 67
-                              Store 2137 2136
-            2138:      6(int) Load 8(invocation)
-            2139:   1693(ptr) AccessChain 34(data) 37 67 38
-            2140: 23(int16_t) Load 2139
-            2141: 23(int16_t) GroupNonUniformUMax 42 ExclusiveScan 2140
-            2142:   1693(ptr) AccessChain 34(data) 2138 67 38
-                              Store 2142 2141
-            2143:      6(int) Load 8(invocation)
-            2144:   1700(ptr) AccessChain 34(data) 46 67
-            2145: 24(i16vec4) Load 2144
-            2146:1699(i16vec2) VectorShuffle 2145 2145 0 1
-            2147:1699(i16vec2) GroupNonUniformUMax 42 ExclusiveScan 2146
-            2148:   1700(ptr) AccessChain 34(data) 2143 67
-            2149: 24(i16vec4) Load 2148
-            2150: 24(i16vec4) VectorShuffle 2149 2147 4 5 2 3
-                              Store 2148 2150
-            2151:      6(int) Load 8(invocation)
-            2152:   1700(ptr) AccessChain 34(data) 57 67
-            2153: 24(i16vec4) Load 2152
-            2154:1709(i16vec3) VectorShuffle 2153 2153 0 1 2
-            2155:1709(i16vec3) GroupNonUniformUMax 42 ExclusiveScan 2154
-            2156:   1700(ptr) AccessChain 34(data) 2151 67
+            2128: 24(i16vec4) GroupNonUniformBitwiseOr 42 Reduce 2127
+            2129:   1954(ptr) AccessChain 34(data) 2125 73
+                              Store 2129 2128
+            2130:      6(int) Load 8(invocation)
+            2131:   1947(ptr) AccessChain 34(data) 37 73 38
+            2132: 23(int16_t) Load 2131
+            2133: 23(int16_t) GroupNonUniformBitwiseXor 42 Reduce 2132
+            2134:   1947(ptr) AccessChain 34(data) 2130 73 38
+                              Store 2134 2133
+            2135:      6(int) Load 8(invocation)
+            2136:   1954(ptr) AccessChain 34(data) 46 73
+            2137: 24(i16vec4) Load 2136
+            2138:1953(i16vec2) VectorShuffle 2137 2137 0 1
+            2139:1953(i16vec2) GroupNonUniformBitwiseXor 42 Reduce 2138
+            2140:   1947(ptr) AccessChain 34(data) 2135 73 38
+            2141: 23(int16_t) CompositeExtract 2139 0
+                              Store 2140 2141
+            2142:   1947(ptr) AccessChain 34(data) 2135 73 55
+            2143: 23(int16_t) CompositeExtract 2139 1
+                              Store 2142 2143
+            2144:      6(int) Load 8(invocation)
+            2145:   1954(ptr) AccessChain 34(data) 59 73
+            2146: 24(i16vec4) Load 2145
+            2147:1964(i16vec3) VectorShuffle 2146 2146 0 1 2
+            2148:1964(i16vec3) GroupNonUniformBitwiseXor 42 Reduce 2147
+            2149:   1947(ptr) AccessChain 34(data) 2144 73 38
+            2150: 23(int16_t) CompositeExtract 2148 0
+                              Store 2149 2150
+            2151:   1947(ptr) AccessChain 34(data) 2144 73 55
+            2152: 23(int16_t) CompositeExtract 2148 1
+                              Store 2151 2152
+            2153:   1947(ptr) AccessChain 34(data) 2144 73 69
+            2154: 23(int16_t) CompositeExtract 2148 2
+                              Store 2153 2154
+            2155:      6(int) Load 8(invocation)
+            2156:   1954(ptr) AccessChain 34(data) 73 73
             2157: 24(i16vec4) Load 2156
-            2158: 24(i16vec4) VectorShuffle 2157 2155 4 5 6 3
-                              Store 2156 2158
-            2159:      6(int) Load 8(invocation)
-            2160:   1700(ptr) AccessChain 34(data) 67 67
-            2161: 24(i16vec4) Load 2160
-            2162: 24(i16vec4) GroupNonUniformUMax 42 ExclusiveScan 2161
-            2163:   1700(ptr) AccessChain 34(data) 2159 67
-                              Store 2163 2162
-            2164:      6(int) Load 8(invocation)
-            2165:   1693(ptr) AccessChain 34(data) 37 67 38
-            2166: 23(int16_t) Load 2165
-            2167: 23(int16_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2166
-            2168:   1693(ptr) AccessChain 34(data) 2164 67 38
-                              Store 2168 2167
-            2169:      6(int) Load 8(invocation)
-            2170:   1700(ptr) AccessChain 34(data) 46 67
-            2171: 24(i16vec4) Load 2170
-            2172:1699(i16vec2) VectorShuffle 2171 2171 0 1
-            2173:1699(i16vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2172
-            2174:   1700(ptr) AccessChain 34(data) 2169 67
-            2175: 24(i16vec4) Load 2174
-            2176: 24(i16vec4) VectorShuffle 2175 2173 4 5 2 3
-                              Store 2174 2176
-            2177:      6(int) Load 8(invocation)
-            2178:   1700(ptr) AccessChain 34(data) 57 67
-            2179: 24(i16vec4) Load 2178
-            2180:1709(i16vec3) VectorShuffle 2179 2179 0 1 2
-            2181:1709(i16vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2180
-            2182:   1700(ptr) AccessChain 34(data) 2177 67
-            2183: 24(i16vec4) Load 2182
-            2184: 24(i16vec4) VectorShuffle 2183 2181 4 5 6 3
-                              Store 2182 2184
+            2158: 24(i16vec4) GroupNonUniformBitwiseXor 42 Reduce 2157
+            2159:   1954(ptr) AccessChain 34(data) 2155 73
+                              Store 2159 2158
+            2160:      6(int) Load 8(invocation)
+            2161:   1947(ptr) AccessChain 34(data) 37 73 38
+            2162: 23(int16_t) Load 2161
+            2163: 23(int16_t) GroupNonUniformIAdd 42 InclusiveScan 2162
+            2164:   1947(ptr) AccessChain 34(data) 2160 73 38
+                              Store 2164 2163
+            2165:      6(int) Load 8(invocation)
+            2166:   1954(ptr) AccessChain 34(data) 46 73
+            2167: 24(i16vec4) Load 2166
+            2168:1953(i16vec2) VectorShuffle 2167 2167 0 1
+            2169:1953(i16vec2) GroupNonUniformIAdd 42 InclusiveScan 2168
+            2170:   1947(ptr) AccessChain 34(data) 2165 73 38
+            2171: 23(int16_t) CompositeExtract 2169 0
+                              Store 2170 2171
+            2172:   1947(ptr) AccessChain 34(data) 2165 73 55
+            2173: 23(int16_t) CompositeExtract 2169 1
+                              Store 2172 2173
+            2174:      6(int) Load 8(invocation)
+            2175:   1954(ptr) AccessChain 34(data) 59 73
+            2176: 24(i16vec4) Load 2175
+            2177:1964(i16vec3) VectorShuffle 2176 2176 0 1 2
+            2178:1964(i16vec3) GroupNonUniformIAdd 42 InclusiveScan 2177
+            2179:   1947(ptr) AccessChain 34(data) 2174 73 38
+            2180: 23(int16_t) CompositeExtract 2178 0
+                              Store 2179 2180
+            2181:   1947(ptr) AccessChain 34(data) 2174 73 55
+            2182: 23(int16_t) CompositeExtract 2178 1
+                              Store 2181 2182
+            2183:   1947(ptr) AccessChain 34(data) 2174 73 69
+            2184: 23(int16_t) CompositeExtract 2178 2
+                              Store 2183 2184
             2185:      6(int) Load 8(invocation)
-            2186:   1700(ptr) AccessChain 34(data) 67 67
+            2186:   1954(ptr) AccessChain 34(data) 73 73
             2187: 24(i16vec4) Load 2186
-            2188: 24(i16vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2187
-            2189:   1700(ptr) AccessChain 34(data) 2185 67
+            2188: 24(i16vec4) GroupNonUniformIAdd 42 InclusiveScan 2187
+            2189:   1954(ptr) AccessChain 34(data) 2185 73
                               Store 2189 2188
             2190:      6(int) Load 8(invocation)
-            2191:   1693(ptr) AccessChain 34(data) 37 67 38
+            2191:   1947(ptr) AccessChain 34(data) 37 73 38
             2192: 23(int16_t) Load 2191
-            2193: 23(int16_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 2192
-            2194:   1693(ptr) AccessChain 34(data) 2190 67 38
+            2193: 23(int16_t) GroupNonUniformIMul 42 InclusiveScan 2192
+            2194:   1947(ptr) AccessChain 34(data) 2190 73 38
                               Store 2194 2193
             2195:      6(int) Load 8(invocation)
-            2196:   1700(ptr) AccessChain 34(data) 46 67
+            2196:   1954(ptr) AccessChain 34(data) 46 73
             2197: 24(i16vec4) Load 2196
-            2198:1699(i16vec2) VectorShuffle 2197 2197 0 1
-            2199:1699(i16vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 2198
-            2200:   1700(ptr) AccessChain 34(data) 2195 67
-            2201: 24(i16vec4) Load 2200
-            2202: 24(i16vec4) VectorShuffle 2201 2199 4 5 2 3
-                              Store 2200 2202
-            2203:      6(int) Load 8(invocation)
-            2204:   1700(ptr) AccessChain 34(data) 57 67
-            2205: 24(i16vec4) Load 2204
-            2206:1709(i16vec3) VectorShuffle 2205 2205 0 1 2
-            2207:1709(i16vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 2206
-            2208:   1700(ptr) AccessChain 34(data) 2203 67
-            2209: 24(i16vec4) Load 2208
-            2210: 24(i16vec4) VectorShuffle 2209 2207 4 5 6 3
-                              Store 2208 2210
-            2211:      6(int) Load 8(invocation)
-            2212:   1700(ptr) AccessChain 34(data) 67 67
-            2213: 24(i16vec4) Load 2212
-            2214: 24(i16vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 2213
-            2215:   1700(ptr) AccessChain 34(data) 2211 67
-                              Store 2215 2214
-            2216:      6(int) Load 8(invocation)
-            2217:   1693(ptr) AccessChain 34(data) 37 67 38
-            2218: 23(int16_t) Load 2217
-            2219: 23(int16_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 2218
-            2220:   1693(ptr) AccessChain 34(data) 2216 67 38
-                              Store 2220 2219
-            2221:      6(int) Load 8(invocation)
-            2222:   1700(ptr) AccessChain 34(data) 46 67
-            2223: 24(i16vec4) Load 2222
-            2224:1699(i16vec2) VectorShuffle 2223 2223 0 1
-            2225:1699(i16vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 2224
-            2226:   1700(ptr) AccessChain 34(data) 2221 67
+            2198:1953(i16vec2) VectorShuffle 2197 2197 0 1
+            2199:1953(i16vec2) GroupNonUniformIMul 42 InclusiveScan 2198
+            2200:   1947(ptr) AccessChain 34(data) 2195 73 38
+            2201: 23(int16_t) CompositeExtract 2199 0
+                              Store 2200 2201
+            2202:   1947(ptr) AccessChain 34(data) 2195 73 55
+            2203: 23(int16_t) CompositeExtract 2199 1
+                              Store 2202 2203
+            2204:      6(int) Load 8(invocation)
+            2205:   1954(ptr) AccessChain 34(data) 59 73
+            2206: 24(i16vec4) Load 2205
+            2207:1964(i16vec3) VectorShuffle 2206 2206 0 1 2
+            2208:1964(i16vec3) GroupNonUniformIMul 42 InclusiveScan 2207
+            2209:   1947(ptr) AccessChain 34(data) 2204 73 38
+            2210: 23(int16_t) CompositeExtract 2208 0
+                              Store 2209 2210
+            2211:   1947(ptr) AccessChain 34(data) 2204 73 55
+            2212: 23(int16_t) CompositeExtract 2208 1
+                              Store 2211 2212
+            2213:   1947(ptr) AccessChain 34(data) 2204 73 69
+            2214: 23(int16_t) CompositeExtract 2208 2
+                              Store 2213 2214
+            2215:      6(int) Load 8(invocation)
+            2216:   1954(ptr) AccessChain 34(data) 73 73
+            2217: 24(i16vec4) Load 2216
+            2218: 24(i16vec4) GroupNonUniformIMul 42 InclusiveScan 2217
+            2219:   1954(ptr) AccessChain 34(data) 2215 73
+                              Store 2219 2218
+            2220:      6(int) Load 8(invocation)
+            2221:   1947(ptr) AccessChain 34(data) 37 73 38
+            2222: 23(int16_t) Load 2221
+            2223: 23(int16_t) GroupNonUniformUMin 42 InclusiveScan 2222
+            2224:   1947(ptr) AccessChain 34(data) 2220 73 38
+                              Store 2224 2223
+            2225:      6(int) Load 8(invocation)
+            2226:   1954(ptr) AccessChain 34(data) 46 73
             2227: 24(i16vec4) Load 2226
-            2228: 24(i16vec4) VectorShuffle 2227 2225 4 5 2 3
-                              Store 2226 2228
-            2229:      6(int) Load 8(invocation)
-            2230:   1700(ptr) AccessChain 34(data) 57 67
-            2231: 24(i16vec4) Load 2230
-            2232:1709(i16vec3) VectorShuffle 2231 2231 0 1 2
-            2233:1709(i16vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 2232
-            2234:   1700(ptr) AccessChain 34(data) 2229 67
-            2235: 24(i16vec4) Load 2234
-            2236: 24(i16vec4) VectorShuffle 2235 2233 4 5 6 3
-                              Store 2234 2236
-            2237:      6(int) Load 8(invocation)
-            2238:   1700(ptr) AccessChain 34(data) 67 67
-            2239: 24(i16vec4) Load 2238
-            2240: 24(i16vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 2239
-            2241:   1700(ptr) AccessChain 34(data) 2237 67
-                              Store 2241 2240
-            2242:      6(int) Load 8(invocation)
-            2245:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2246: 25(int64_t) Load 2245
-            2247: 25(int64_t) GroupNonUniformIAdd 42 Reduce 2246
-            2248:   2244(ptr) AccessChain 34(data) 2242 2243 38
-                              Store 2248 2247
-            2249:      6(int) Load 8(invocation)
-            2252:   2251(ptr) AccessChain 34(data) 46 2243
-            2253: 26(i64vec4) Load 2252
-            2254:2250(i64vec2) VectorShuffle 2253 2253 0 1
-            2255:2250(i64vec2) GroupNonUniformIAdd 42 Reduce 2254
-            2256:   2251(ptr) AccessChain 34(data) 2249 2243
-            2257: 26(i64vec4) Load 2256
-            2258: 26(i64vec4) VectorShuffle 2257 2255 4 5 2 3
-                              Store 2256 2258
-            2259:      6(int) Load 8(invocation)
-            2261:   2251(ptr) AccessChain 34(data) 57 2243
-            2262: 26(i64vec4) Load 2261
-            2263:2260(i64vec3) VectorShuffle 2262 2262 0 1 2
-            2264:2260(i64vec3) GroupNonUniformIAdd 42 Reduce 2263
-            2265:   2251(ptr) AccessChain 34(data) 2259 2243
-            2266: 26(i64vec4) Load 2265
-            2267: 26(i64vec4) VectorShuffle 2266 2264 4 5 6 3
-                              Store 2265 2267
-            2268:      6(int) Load 8(invocation)
-            2269:   2251(ptr) AccessChain 34(data) 67 2243
-            2270: 26(i64vec4) Load 2269
-            2271: 26(i64vec4) GroupNonUniformIAdd 42 Reduce 2270
-            2272:   2251(ptr) AccessChain 34(data) 2268 2243
-                              Store 2272 2271
-            2273:      6(int) Load 8(invocation)
-            2274:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2275: 25(int64_t) Load 2274
-            2276: 25(int64_t) GroupNonUniformIMul 42 Reduce 2275
-            2277:   2244(ptr) AccessChain 34(data) 2273 2243 38
-                              Store 2277 2276
-            2278:      6(int) Load 8(invocation)
-            2279:   2251(ptr) AccessChain 34(data) 46 2243
-            2280: 26(i64vec4) Load 2279
-            2281:2250(i64vec2) VectorShuffle 2280 2280 0 1
-            2282:2250(i64vec2) GroupNonUniformIMul 42 Reduce 2281
-            2283:   2251(ptr) AccessChain 34(data) 2278 2243
-            2284: 26(i64vec4) Load 2283
-            2285: 26(i64vec4) VectorShuffle 2284 2282 4 5 2 3
-                              Store 2283 2285
-            2286:      6(int) Load 8(invocation)
-            2287:   2251(ptr) AccessChain 34(data) 57 2243
-            2288: 26(i64vec4) Load 2287
-            2289:2260(i64vec3) VectorShuffle 2288 2288 0 1 2
-            2290:2260(i64vec3) GroupNonUniformIMul 42 Reduce 2289
-            2291:   2251(ptr) AccessChain 34(data) 2286 2243
-            2292: 26(i64vec4) Load 2291
-            2293: 26(i64vec4) VectorShuffle 2292 2290 4 5 6 3
-                              Store 2291 2293
+            2228:1953(i16vec2) VectorShuffle 2227 2227 0 1
+            2229:1953(i16vec2) GroupNonUniformUMin 42 InclusiveScan 2228
+            2230:   1947(ptr) AccessChain 34(data) 2225 73 38
+            2231: 23(int16_t) CompositeExtract 2229 0
+                              Store 2230 2231
+            2232:   1947(ptr) AccessChain 34(data) 2225 73 55
+            2233: 23(int16_t) CompositeExtract 2229 1
+                              Store 2232 2233
+            2234:      6(int) Load 8(invocation)
+            2235:   1954(ptr) AccessChain 34(data) 59 73
+            2236: 24(i16vec4) Load 2235
+            2237:1964(i16vec3) VectorShuffle 2236 2236 0 1 2
+            2238:1964(i16vec3) GroupNonUniformUMin 42 InclusiveScan 2237
+            2239:   1947(ptr) AccessChain 34(data) 2234 73 38
+            2240: 23(int16_t) CompositeExtract 2238 0
+                              Store 2239 2240
+            2241:   1947(ptr) AccessChain 34(data) 2234 73 55
+            2242: 23(int16_t) CompositeExtract 2238 1
+                              Store 2241 2242
+            2243:   1947(ptr) AccessChain 34(data) 2234 73 69
+            2244: 23(int16_t) CompositeExtract 2238 2
+                              Store 2243 2244
+            2245:      6(int) Load 8(invocation)
+            2246:   1954(ptr) AccessChain 34(data) 73 73
+            2247: 24(i16vec4) Load 2246
+            2248: 24(i16vec4) GroupNonUniformUMin 42 InclusiveScan 2247
+            2249:   1954(ptr) AccessChain 34(data) 2245 73
+                              Store 2249 2248
+            2250:      6(int) Load 8(invocation)
+            2251:   1947(ptr) AccessChain 34(data) 37 73 38
+            2252: 23(int16_t) Load 2251
+            2253: 23(int16_t) GroupNonUniformUMax 42 InclusiveScan 2252
+            2254:   1947(ptr) AccessChain 34(data) 2250 73 38
+                              Store 2254 2253
+            2255:      6(int) Load 8(invocation)
+            2256:   1954(ptr) AccessChain 34(data) 46 73
+            2257: 24(i16vec4) Load 2256
+            2258:1953(i16vec2) VectorShuffle 2257 2257 0 1
+            2259:1953(i16vec2) GroupNonUniformUMax 42 InclusiveScan 2258
+            2260:   1947(ptr) AccessChain 34(data) 2255 73 38
+            2261: 23(int16_t) CompositeExtract 2259 0
+                              Store 2260 2261
+            2262:   1947(ptr) AccessChain 34(data) 2255 73 55
+            2263: 23(int16_t) CompositeExtract 2259 1
+                              Store 2262 2263
+            2264:      6(int) Load 8(invocation)
+            2265:   1954(ptr) AccessChain 34(data) 59 73
+            2266: 24(i16vec4) Load 2265
+            2267:1964(i16vec3) VectorShuffle 2266 2266 0 1 2
+            2268:1964(i16vec3) GroupNonUniformUMax 42 InclusiveScan 2267
+            2269:   1947(ptr) AccessChain 34(data) 2264 73 38
+            2270: 23(int16_t) CompositeExtract 2268 0
+                              Store 2269 2270
+            2271:   1947(ptr) AccessChain 34(data) 2264 73 55
+            2272: 23(int16_t) CompositeExtract 2268 1
+                              Store 2271 2272
+            2273:   1947(ptr) AccessChain 34(data) 2264 73 69
+            2274: 23(int16_t) CompositeExtract 2268 2
+                              Store 2273 2274
+            2275:      6(int) Load 8(invocation)
+            2276:   1954(ptr) AccessChain 34(data) 73 73
+            2277: 24(i16vec4) Load 2276
+            2278: 24(i16vec4) GroupNonUniformUMax 42 InclusiveScan 2277
+            2279:   1954(ptr) AccessChain 34(data) 2275 73
+                              Store 2279 2278
+            2280:      6(int) Load 8(invocation)
+            2281:   1947(ptr) AccessChain 34(data) 37 73 38
+            2282: 23(int16_t) Load 2281
+            2283: 23(int16_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 2282
+            2284:   1947(ptr) AccessChain 34(data) 2280 73 38
+                              Store 2284 2283
+            2285:      6(int) Load 8(invocation)
+            2286:   1954(ptr) AccessChain 34(data) 46 73
+            2287: 24(i16vec4) Load 2286
+            2288:1953(i16vec2) VectorShuffle 2287 2287 0 1
+            2289:1953(i16vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 2288
+            2290:   1947(ptr) AccessChain 34(data) 2285 73 38
+            2291: 23(int16_t) CompositeExtract 2289 0
+                              Store 2290 2291
+            2292:   1947(ptr) AccessChain 34(data) 2285 73 55
+            2293: 23(int16_t) CompositeExtract 2289 1
+                              Store 2292 2293
             2294:      6(int) Load 8(invocation)
-            2295:   2251(ptr) AccessChain 34(data) 67 2243
-            2296: 26(i64vec4) Load 2295
-            2297: 26(i64vec4) GroupNonUniformIMul 42 Reduce 2296
-            2298:   2251(ptr) AccessChain 34(data) 2294 2243
-                              Store 2298 2297
-            2299:      6(int) Load 8(invocation)
-            2300:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2301: 25(int64_t) Load 2300
-            2302: 25(int64_t) GroupNonUniformSMin 42 Reduce 2301
-            2303:   2244(ptr) AccessChain 34(data) 2299 2243 38
-                              Store 2303 2302
-            2304:      6(int) Load 8(invocation)
-            2305:   2251(ptr) AccessChain 34(data) 46 2243
-            2306: 26(i64vec4) Load 2305
-            2307:2250(i64vec2) VectorShuffle 2306 2306 0 1
-            2308:2250(i64vec2) GroupNonUniformSMin 42 Reduce 2307
-            2309:   2251(ptr) AccessChain 34(data) 2304 2243
-            2310: 26(i64vec4) Load 2309
-            2311: 26(i64vec4) VectorShuffle 2310 2308 4 5 2 3
-                              Store 2309 2311
-            2312:      6(int) Load 8(invocation)
-            2313:   2251(ptr) AccessChain 34(data) 57 2243
-            2314: 26(i64vec4) Load 2313
-            2315:2260(i64vec3) VectorShuffle 2314 2314 0 1 2
-            2316:2260(i64vec3) GroupNonUniformSMin 42 Reduce 2315
-            2317:   2251(ptr) AccessChain 34(data) 2312 2243
-            2318: 26(i64vec4) Load 2317
-            2319: 26(i64vec4) VectorShuffle 2318 2316 4 5 6 3
-                              Store 2317 2319
-            2320:      6(int) Load 8(invocation)
-            2321:   2251(ptr) AccessChain 34(data) 67 2243
-            2322: 26(i64vec4) Load 2321
-            2323: 26(i64vec4) GroupNonUniformSMin 42 Reduce 2322
-            2324:   2251(ptr) AccessChain 34(data) 2320 2243
-                              Store 2324 2323
-            2325:      6(int) Load 8(invocation)
-            2326:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2327: 25(int64_t) Load 2326
-            2328: 25(int64_t) GroupNonUniformSMax 42 Reduce 2327
-            2329:   2244(ptr) AccessChain 34(data) 2325 2243 38
-                              Store 2329 2328
-            2330:      6(int) Load 8(invocation)
-            2331:   2251(ptr) AccessChain 34(data) 46 2243
-            2332: 26(i64vec4) Load 2331
-            2333:2250(i64vec2) VectorShuffle 2332 2332 0 1
-            2334:2250(i64vec2) GroupNonUniformSMax 42 Reduce 2333
-            2335:   2251(ptr) AccessChain 34(data) 2330 2243
-            2336: 26(i64vec4) Load 2335
-            2337: 26(i64vec4) VectorShuffle 2336 2334 4 5 2 3
-                              Store 2335 2337
-            2338:      6(int) Load 8(invocation)
-            2339:   2251(ptr) AccessChain 34(data) 57 2243
-            2340: 26(i64vec4) Load 2339
-            2341:2260(i64vec3) VectorShuffle 2340 2340 0 1 2
-            2342:2260(i64vec3) GroupNonUniformSMax 42 Reduce 2341
-            2343:   2251(ptr) AccessChain 34(data) 2338 2243
-            2344: 26(i64vec4) Load 2343
-            2345: 26(i64vec4) VectorShuffle 2344 2342 4 5 6 3
-                              Store 2343 2345
-            2346:      6(int) Load 8(invocation)
-            2347:   2251(ptr) AccessChain 34(data) 67 2243
-            2348: 26(i64vec4) Load 2347
-            2349: 26(i64vec4) GroupNonUniformSMax 42 Reduce 2348
-            2350:   2251(ptr) AccessChain 34(data) 2346 2243
-                              Store 2350 2349
-            2351:      6(int) Load 8(invocation)
-            2352:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2353: 25(int64_t) Load 2352
-            2354: 25(int64_t) GroupNonUniformBitwiseAnd 42 Reduce 2353
-            2355:   2244(ptr) AccessChain 34(data) 2351 2243 38
-                              Store 2355 2354
-            2356:      6(int) Load 8(invocation)
-            2357:   2251(ptr) AccessChain 34(data) 46 2243
-            2358: 26(i64vec4) Load 2357
-            2359:2250(i64vec2) VectorShuffle 2358 2358 0 1
-            2360:2250(i64vec2) GroupNonUniformBitwiseAnd 42 Reduce 2359
-            2361:   2251(ptr) AccessChain 34(data) 2356 2243
-            2362: 26(i64vec4) Load 2361
-            2363: 26(i64vec4) VectorShuffle 2362 2360 4 5 2 3
-                              Store 2361 2363
-            2364:      6(int) Load 8(invocation)
-            2365:   2251(ptr) AccessChain 34(data) 57 2243
-            2366: 26(i64vec4) Load 2365
-            2367:2260(i64vec3) VectorShuffle 2366 2366 0 1 2
-            2368:2260(i64vec3) GroupNonUniformBitwiseAnd 42 Reduce 2367
-            2369:   2251(ptr) AccessChain 34(data) 2364 2243
-            2370: 26(i64vec4) Load 2369
-            2371: 26(i64vec4) VectorShuffle 2370 2368 4 5 6 3
-                              Store 2369 2371
-            2372:      6(int) Load 8(invocation)
-            2373:   2251(ptr) AccessChain 34(data) 67 2243
-            2374: 26(i64vec4) Load 2373
-            2375: 26(i64vec4) GroupNonUniformBitwiseAnd 42 Reduce 2374
-            2376:   2251(ptr) AccessChain 34(data) 2372 2243
-                              Store 2376 2375
-            2377:      6(int) Load 8(invocation)
-            2378:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2379: 25(int64_t) Load 2378
-            2380: 25(int64_t) GroupNonUniformBitwiseOr 42 Reduce 2379
-            2381:   2244(ptr) AccessChain 34(data) 2377 2243 38
-                              Store 2381 2380
-            2382:      6(int) Load 8(invocation)
-            2383:   2251(ptr) AccessChain 34(data) 46 2243
-            2384: 26(i64vec4) Load 2383
-            2385:2250(i64vec2) VectorShuffle 2384 2384 0 1
-            2386:2250(i64vec2) GroupNonUniformBitwiseOr 42 Reduce 2385
-            2387:   2251(ptr) AccessChain 34(data) 2382 2243
-            2388: 26(i64vec4) Load 2387
-            2389: 26(i64vec4) VectorShuffle 2388 2386 4 5 2 3
-                              Store 2387 2389
-            2390:      6(int) Load 8(invocation)
-            2391:   2251(ptr) AccessChain 34(data) 57 2243
-            2392: 26(i64vec4) Load 2391
-            2393:2260(i64vec3) VectorShuffle 2392 2392 0 1 2
-            2394:2260(i64vec3) GroupNonUniformBitwiseOr 42 Reduce 2393
-            2395:   2251(ptr) AccessChain 34(data) 2390 2243
-            2396: 26(i64vec4) Load 2395
-            2397: 26(i64vec4) VectorShuffle 2396 2394 4 5 6 3
-                              Store 2395 2397
-            2398:      6(int) Load 8(invocation)
-            2399:   2251(ptr) AccessChain 34(data) 67 2243
-            2400: 26(i64vec4) Load 2399
-            2401: 26(i64vec4) GroupNonUniformBitwiseOr 42 Reduce 2400
-            2402:   2251(ptr) AccessChain 34(data) 2398 2243
-                              Store 2402 2401
-            2403:      6(int) Load 8(invocation)
-            2404:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2405: 25(int64_t) Load 2404
-            2406: 25(int64_t) GroupNonUniformBitwiseXor 42 Reduce 2405
-            2407:   2244(ptr) AccessChain 34(data) 2403 2243 38
-                              Store 2407 2406
-            2408:      6(int) Load 8(invocation)
-            2409:   2251(ptr) AccessChain 34(data) 46 2243
-            2410: 26(i64vec4) Load 2409
-            2411:2250(i64vec2) VectorShuffle 2410 2410 0 1
-            2412:2250(i64vec2) GroupNonUniformBitwiseXor 42 Reduce 2411
-            2413:   2251(ptr) AccessChain 34(data) 2408 2243
-            2414: 26(i64vec4) Load 2413
-            2415: 26(i64vec4) VectorShuffle 2414 2412 4 5 2 3
-                              Store 2413 2415
-            2416:      6(int) Load 8(invocation)
-            2417:   2251(ptr) AccessChain 34(data) 57 2243
-            2418: 26(i64vec4) Load 2417
-            2419:2260(i64vec3) VectorShuffle 2418 2418 0 1 2
-            2420:2260(i64vec3) GroupNonUniformBitwiseXor 42 Reduce 2419
-            2421:   2251(ptr) AccessChain 34(data) 2416 2243
-            2422: 26(i64vec4) Load 2421
-            2423: 26(i64vec4) VectorShuffle 2422 2420 4 5 6 3
-                              Store 2421 2423
-            2424:      6(int) Load 8(invocation)
-            2425:   2251(ptr) AccessChain 34(data) 67 2243
-            2426: 26(i64vec4) Load 2425
-            2427: 26(i64vec4) GroupNonUniformBitwiseXor 42 Reduce 2426
-            2428:   2251(ptr) AccessChain 34(data) 2424 2243
-                              Store 2428 2427
-            2429:      6(int) Load 8(invocation)
-            2430:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2431: 25(int64_t) Load 2430
-            2432: 25(int64_t) GroupNonUniformIAdd 42 InclusiveScan 2431
-            2433:   2244(ptr) AccessChain 34(data) 2429 2243 38
-                              Store 2433 2432
-            2434:      6(int) Load 8(invocation)
-            2435:   2251(ptr) AccessChain 34(data) 46 2243
-            2436: 26(i64vec4) Load 2435
-            2437:2250(i64vec2) VectorShuffle 2436 2436 0 1
-            2438:2250(i64vec2) GroupNonUniformIAdd 42 InclusiveScan 2437
-            2439:   2251(ptr) AccessChain 34(data) 2434 2243
-            2440: 26(i64vec4) Load 2439
-            2441: 26(i64vec4) VectorShuffle 2440 2438 4 5 2 3
-                              Store 2439 2441
-            2442:      6(int) Load 8(invocation)
-            2443:   2251(ptr) AccessChain 34(data) 57 2243
-            2444: 26(i64vec4) Load 2443
-            2445:2260(i64vec3) VectorShuffle 2444 2444 0 1 2
-            2446:2260(i64vec3) GroupNonUniformIAdd 42 InclusiveScan 2445
-            2447:   2251(ptr) AccessChain 34(data) 2442 2243
-            2448: 26(i64vec4) Load 2447
-            2449: 26(i64vec4) VectorShuffle 2448 2446 4 5 6 3
-                              Store 2447 2449
-            2450:      6(int) Load 8(invocation)
-            2451:   2251(ptr) AccessChain 34(data) 67 2243
-            2452: 26(i64vec4) Load 2451
-            2453: 26(i64vec4) GroupNonUniformIAdd 42 InclusiveScan 2452
-            2454:   2251(ptr) AccessChain 34(data) 2450 2243
-                              Store 2454 2453
+            2295:   1954(ptr) AccessChain 34(data) 59 73
+            2296: 24(i16vec4) Load 2295
+            2297:1964(i16vec3) VectorShuffle 2296 2296 0 1 2
+            2298:1964(i16vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 2297
+            2299:   1947(ptr) AccessChain 34(data) 2294 73 38
+            2300: 23(int16_t) CompositeExtract 2298 0
+                              Store 2299 2300
+            2301:   1947(ptr) AccessChain 34(data) 2294 73 55
+            2302: 23(int16_t) CompositeExtract 2298 1
+                              Store 2301 2302
+            2303:   1947(ptr) AccessChain 34(data) 2294 73 69
+            2304: 23(int16_t) CompositeExtract 2298 2
+                              Store 2303 2304
+            2305:      6(int) Load 8(invocation)
+            2306:   1954(ptr) AccessChain 34(data) 73 73
+            2307: 24(i16vec4) Load 2306
+            2308: 24(i16vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 2307
+            2309:   1954(ptr) AccessChain 34(data) 2305 73
+                              Store 2309 2308
+            2310:      6(int) Load 8(invocation)
+            2311:   1947(ptr) AccessChain 34(data) 37 73 38
+            2312: 23(int16_t) Load 2311
+            2313: 23(int16_t) GroupNonUniformBitwiseOr 42 InclusiveScan 2312
+            2314:   1947(ptr) AccessChain 34(data) 2310 73 38
+                              Store 2314 2313
+            2315:      6(int) Load 8(invocation)
+            2316:   1954(ptr) AccessChain 34(data) 46 73
+            2317: 24(i16vec4) Load 2316
+            2318:1953(i16vec2) VectorShuffle 2317 2317 0 1
+            2319:1953(i16vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 2318
+            2320:   1947(ptr) AccessChain 34(data) 2315 73 38
+            2321: 23(int16_t) CompositeExtract 2319 0
+                              Store 2320 2321
+            2322:   1947(ptr) AccessChain 34(data) 2315 73 55
+            2323: 23(int16_t) CompositeExtract 2319 1
+                              Store 2322 2323
+            2324:      6(int) Load 8(invocation)
+            2325:   1954(ptr) AccessChain 34(data) 59 73
+            2326: 24(i16vec4) Load 2325
+            2327:1964(i16vec3) VectorShuffle 2326 2326 0 1 2
+            2328:1964(i16vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 2327
+            2329:   1947(ptr) AccessChain 34(data) 2324 73 38
+            2330: 23(int16_t) CompositeExtract 2328 0
+                              Store 2329 2330
+            2331:   1947(ptr) AccessChain 34(data) 2324 73 55
+            2332: 23(int16_t) CompositeExtract 2328 1
+                              Store 2331 2332
+            2333:   1947(ptr) AccessChain 34(data) 2324 73 69
+            2334: 23(int16_t) CompositeExtract 2328 2
+                              Store 2333 2334
+            2335:      6(int) Load 8(invocation)
+            2336:   1954(ptr) AccessChain 34(data) 73 73
+            2337: 24(i16vec4) Load 2336
+            2338: 24(i16vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 2337
+            2339:   1954(ptr) AccessChain 34(data) 2335 73
+                              Store 2339 2338
+            2340:      6(int) Load 8(invocation)
+            2341:   1947(ptr) AccessChain 34(data) 37 73 38
+            2342: 23(int16_t) Load 2341
+            2343: 23(int16_t) GroupNonUniformBitwiseXor 42 InclusiveScan 2342
+            2344:   1947(ptr) AccessChain 34(data) 2340 73 38
+                              Store 2344 2343
+            2345:      6(int) Load 8(invocation)
+            2346:   1954(ptr) AccessChain 34(data) 46 73
+            2347: 24(i16vec4) Load 2346
+            2348:1953(i16vec2) VectorShuffle 2347 2347 0 1
+            2349:1953(i16vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 2348
+            2350:   1947(ptr) AccessChain 34(data) 2345 73 38
+            2351: 23(int16_t) CompositeExtract 2349 0
+                              Store 2350 2351
+            2352:   1947(ptr) AccessChain 34(data) 2345 73 55
+            2353: 23(int16_t) CompositeExtract 2349 1
+                              Store 2352 2353
+            2354:      6(int) Load 8(invocation)
+            2355:   1954(ptr) AccessChain 34(data) 59 73
+            2356: 24(i16vec4) Load 2355
+            2357:1964(i16vec3) VectorShuffle 2356 2356 0 1 2
+            2358:1964(i16vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 2357
+            2359:   1947(ptr) AccessChain 34(data) 2354 73 38
+            2360: 23(int16_t) CompositeExtract 2358 0
+                              Store 2359 2360
+            2361:   1947(ptr) AccessChain 34(data) 2354 73 55
+            2362: 23(int16_t) CompositeExtract 2358 1
+                              Store 2361 2362
+            2363:   1947(ptr) AccessChain 34(data) 2354 73 69
+            2364: 23(int16_t) CompositeExtract 2358 2
+                              Store 2363 2364
+            2365:      6(int) Load 8(invocation)
+            2366:   1954(ptr) AccessChain 34(data) 73 73
+            2367: 24(i16vec4) Load 2366
+            2368: 24(i16vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 2367
+            2369:   1954(ptr) AccessChain 34(data) 2365 73
+                              Store 2369 2368
+            2370:      6(int) Load 8(invocation)
+            2371:   1947(ptr) AccessChain 34(data) 37 73 38
+            2372: 23(int16_t) Load 2371
+            2373: 23(int16_t) GroupNonUniformIAdd 42 ExclusiveScan 2372
+            2374:   1947(ptr) AccessChain 34(data) 2370 73 38
+                              Store 2374 2373
+            2375:      6(int) Load 8(invocation)
+            2376:   1954(ptr) AccessChain 34(data) 46 73
+            2377: 24(i16vec4) Load 2376
+            2378:1953(i16vec2) VectorShuffle 2377 2377 0 1
+            2379:1953(i16vec2) GroupNonUniformIAdd 42 ExclusiveScan 2378
+            2380:   1947(ptr) AccessChain 34(data) 2375 73 38
+            2381: 23(int16_t) CompositeExtract 2379 0
+                              Store 2380 2381
+            2382:   1947(ptr) AccessChain 34(data) 2375 73 55
+            2383: 23(int16_t) CompositeExtract 2379 1
+                              Store 2382 2383
+            2384:      6(int) Load 8(invocation)
+            2385:   1954(ptr) AccessChain 34(data) 59 73
+            2386: 24(i16vec4) Load 2385
+            2387:1964(i16vec3) VectorShuffle 2386 2386 0 1 2
+            2388:1964(i16vec3) GroupNonUniformIAdd 42 ExclusiveScan 2387
+            2389:   1947(ptr) AccessChain 34(data) 2384 73 38
+            2390: 23(int16_t) CompositeExtract 2388 0
+                              Store 2389 2390
+            2391:   1947(ptr) AccessChain 34(data) 2384 73 55
+            2392: 23(int16_t) CompositeExtract 2388 1
+                              Store 2391 2392
+            2393:   1947(ptr) AccessChain 34(data) 2384 73 69
+            2394: 23(int16_t) CompositeExtract 2388 2
+                              Store 2393 2394
+            2395:      6(int) Load 8(invocation)
+            2396:   1954(ptr) AccessChain 34(data) 73 73
+            2397: 24(i16vec4) Load 2396
+            2398: 24(i16vec4) GroupNonUniformIAdd 42 ExclusiveScan 2397
+            2399:   1954(ptr) AccessChain 34(data) 2395 73
+                              Store 2399 2398
+            2400:      6(int) Load 8(invocation)
+            2401:   1947(ptr) AccessChain 34(data) 37 73 38
+            2402: 23(int16_t) Load 2401
+            2403: 23(int16_t) GroupNonUniformIMul 42 ExclusiveScan 2402
+            2404:   1947(ptr) AccessChain 34(data) 2400 73 38
+                              Store 2404 2403
+            2405:      6(int) Load 8(invocation)
+            2406:   1954(ptr) AccessChain 34(data) 46 73
+            2407: 24(i16vec4) Load 2406
+            2408:1953(i16vec2) VectorShuffle 2407 2407 0 1
+            2409:1953(i16vec2) GroupNonUniformIMul 42 ExclusiveScan 2408
+            2410:   1947(ptr) AccessChain 34(data) 2405 73 38
+            2411: 23(int16_t) CompositeExtract 2409 0
+                              Store 2410 2411
+            2412:   1947(ptr) AccessChain 34(data) 2405 73 55
+            2413: 23(int16_t) CompositeExtract 2409 1
+                              Store 2412 2413
+            2414:      6(int) Load 8(invocation)
+            2415:   1954(ptr) AccessChain 34(data) 59 73
+            2416: 24(i16vec4) Load 2415
+            2417:1964(i16vec3) VectorShuffle 2416 2416 0 1 2
+            2418:1964(i16vec3) GroupNonUniformIMul 42 ExclusiveScan 2417
+            2419:   1947(ptr) AccessChain 34(data) 2414 73 38
+            2420: 23(int16_t) CompositeExtract 2418 0
+                              Store 2419 2420
+            2421:   1947(ptr) AccessChain 34(data) 2414 73 55
+            2422: 23(int16_t) CompositeExtract 2418 1
+                              Store 2421 2422
+            2423:   1947(ptr) AccessChain 34(data) 2414 73 69
+            2424: 23(int16_t) CompositeExtract 2418 2
+                              Store 2423 2424
+            2425:      6(int) Load 8(invocation)
+            2426:   1954(ptr) AccessChain 34(data) 73 73
+            2427: 24(i16vec4) Load 2426
+            2428: 24(i16vec4) GroupNonUniformIMul 42 ExclusiveScan 2427
+            2429:   1954(ptr) AccessChain 34(data) 2425 73
+                              Store 2429 2428
+            2430:      6(int) Load 8(invocation)
+            2431:   1947(ptr) AccessChain 34(data) 37 73 38
+            2432: 23(int16_t) Load 2431
+            2433: 23(int16_t) GroupNonUniformUMin 42 ExclusiveScan 2432
+            2434:   1947(ptr) AccessChain 34(data) 2430 73 38
+                              Store 2434 2433
+            2435:      6(int) Load 8(invocation)
+            2436:   1954(ptr) AccessChain 34(data) 46 73
+            2437: 24(i16vec4) Load 2436
+            2438:1953(i16vec2) VectorShuffle 2437 2437 0 1
+            2439:1953(i16vec2) GroupNonUniformUMin 42 ExclusiveScan 2438
+            2440:   1947(ptr) AccessChain 34(data) 2435 73 38
+            2441: 23(int16_t) CompositeExtract 2439 0
+                              Store 2440 2441
+            2442:   1947(ptr) AccessChain 34(data) 2435 73 55
+            2443: 23(int16_t) CompositeExtract 2439 1
+                              Store 2442 2443
+            2444:      6(int) Load 8(invocation)
+            2445:   1954(ptr) AccessChain 34(data) 59 73
+            2446: 24(i16vec4) Load 2445
+            2447:1964(i16vec3) VectorShuffle 2446 2446 0 1 2
+            2448:1964(i16vec3) GroupNonUniformUMin 42 ExclusiveScan 2447
+            2449:   1947(ptr) AccessChain 34(data) 2444 73 38
+            2450: 23(int16_t) CompositeExtract 2448 0
+                              Store 2449 2450
+            2451:   1947(ptr) AccessChain 34(data) 2444 73 55
+            2452: 23(int16_t) CompositeExtract 2448 1
+                              Store 2451 2452
+            2453:   1947(ptr) AccessChain 34(data) 2444 73 69
+            2454: 23(int16_t) CompositeExtract 2448 2
+                              Store 2453 2454
             2455:      6(int) Load 8(invocation)
-            2456:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2457: 25(int64_t) Load 2456
-            2458: 25(int64_t) GroupNonUniformIMul 42 InclusiveScan 2457
-            2459:   2244(ptr) AccessChain 34(data) 2455 2243 38
+            2456:   1954(ptr) AccessChain 34(data) 73 73
+            2457: 24(i16vec4) Load 2456
+            2458: 24(i16vec4) GroupNonUniformUMin 42 ExclusiveScan 2457
+            2459:   1954(ptr) AccessChain 34(data) 2455 73
                               Store 2459 2458
             2460:      6(int) Load 8(invocation)
-            2461:   2251(ptr) AccessChain 34(data) 46 2243
-            2462: 26(i64vec4) Load 2461
-            2463:2250(i64vec2) VectorShuffle 2462 2462 0 1
-            2464:2250(i64vec2) GroupNonUniformIMul 42 InclusiveScan 2463
-            2465:   2251(ptr) AccessChain 34(data) 2460 2243
-            2466: 26(i64vec4) Load 2465
-            2467: 26(i64vec4) VectorShuffle 2466 2464 4 5 2 3
-                              Store 2465 2467
-            2468:      6(int) Load 8(invocation)
-            2469:   2251(ptr) AccessChain 34(data) 57 2243
-            2470: 26(i64vec4) Load 2469
-            2471:2260(i64vec3) VectorShuffle 2470 2470 0 1 2
-            2472:2260(i64vec3) GroupNonUniformIMul 42 InclusiveScan 2471
-            2473:   2251(ptr) AccessChain 34(data) 2468 2243
-            2474: 26(i64vec4) Load 2473
-            2475: 26(i64vec4) VectorShuffle 2474 2472 4 5 6 3
-                              Store 2473 2475
-            2476:      6(int) Load 8(invocation)
-            2477:   2251(ptr) AccessChain 34(data) 67 2243
-            2478: 26(i64vec4) Load 2477
-            2479: 26(i64vec4) GroupNonUniformIMul 42 InclusiveScan 2478
-            2480:   2251(ptr) AccessChain 34(data) 2476 2243
-                              Store 2480 2479
-            2481:      6(int) Load 8(invocation)
-            2482:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2483: 25(int64_t) Load 2482
-            2484: 25(int64_t) GroupNonUniformSMin 42 InclusiveScan 2483
-            2485:   2244(ptr) AccessChain 34(data) 2481 2243 38
-                              Store 2485 2484
-            2486:      6(int) Load 8(invocation)
-            2487:   2251(ptr) AccessChain 34(data) 46 2243
-            2488: 26(i64vec4) Load 2487
-            2489:2250(i64vec2) VectorShuffle 2488 2488 0 1
-            2490:2250(i64vec2) GroupNonUniformSMin 42 InclusiveScan 2489
-            2491:   2251(ptr) AccessChain 34(data) 2486 2243
-            2492: 26(i64vec4) Load 2491
-            2493: 26(i64vec4) VectorShuffle 2492 2490 4 5 2 3
-                              Store 2491 2493
-            2494:      6(int) Load 8(invocation)
-            2495:   2251(ptr) AccessChain 34(data) 57 2243
-            2496: 26(i64vec4) Load 2495
-            2497:2260(i64vec3) VectorShuffle 2496 2496 0 1 2
-            2498:2260(i64vec3) GroupNonUniformSMin 42 InclusiveScan 2497
-            2499:   2251(ptr) AccessChain 34(data) 2494 2243
-            2500: 26(i64vec4) Load 2499
-            2501: 26(i64vec4) VectorShuffle 2500 2498 4 5 6 3
-                              Store 2499 2501
-            2502:      6(int) Load 8(invocation)
-            2503:   2251(ptr) AccessChain 34(data) 67 2243
-            2504: 26(i64vec4) Load 2503
-            2505: 26(i64vec4) GroupNonUniformSMin 42 InclusiveScan 2504
-            2506:   2251(ptr) AccessChain 34(data) 2502 2243
-                              Store 2506 2505
-            2507:      6(int) Load 8(invocation)
-            2508:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2509: 25(int64_t) Load 2508
-            2510: 25(int64_t) GroupNonUniformSMax 42 InclusiveScan 2509
-            2511:   2244(ptr) AccessChain 34(data) 2507 2243 38
-                              Store 2511 2510
-            2512:      6(int) Load 8(invocation)
-            2513:   2251(ptr) AccessChain 34(data) 46 2243
-            2514: 26(i64vec4) Load 2513
-            2515:2250(i64vec2) VectorShuffle 2514 2514 0 1
-            2516:2250(i64vec2) GroupNonUniformSMax 42 InclusiveScan 2515
-            2517:   2251(ptr) AccessChain 34(data) 2512 2243
-            2518: 26(i64vec4) Load 2517
-            2519: 26(i64vec4) VectorShuffle 2518 2516 4 5 2 3
-                              Store 2517 2519
+            2461:   1947(ptr) AccessChain 34(data) 37 73 38
+            2462: 23(int16_t) Load 2461
+            2463: 23(int16_t) GroupNonUniformUMax 42 ExclusiveScan 2462
+            2464:   1947(ptr) AccessChain 34(data) 2460 73 38
+                              Store 2464 2463
+            2465:      6(int) Load 8(invocation)
+            2466:   1954(ptr) AccessChain 34(data) 46 73
+            2467: 24(i16vec4) Load 2466
+            2468:1953(i16vec2) VectorShuffle 2467 2467 0 1
+            2469:1953(i16vec2) GroupNonUniformUMax 42 ExclusiveScan 2468
+            2470:   1947(ptr) AccessChain 34(data) 2465 73 38
+            2471: 23(int16_t) CompositeExtract 2469 0
+                              Store 2470 2471
+            2472:   1947(ptr) AccessChain 34(data) 2465 73 55
+            2473: 23(int16_t) CompositeExtract 2469 1
+                              Store 2472 2473
+            2474:      6(int) Load 8(invocation)
+            2475:   1954(ptr) AccessChain 34(data) 59 73
+            2476: 24(i16vec4) Load 2475
+            2477:1964(i16vec3) VectorShuffle 2476 2476 0 1 2
+            2478:1964(i16vec3) GroupNonUniformUMax 42 ExclusiveScan 2477
+            2479:   1947(ptr) AccessChain 34(data) 2474 73 38
+            2480: 23(int16_t) CompositeExtract 2478 0
+                              Store 2479 2480
+            2481:   1947(ptr) AccessChain 34(data) 2474 73 55
+            2482: 23(int16_t) CompositeExtract 2478 1
+                              Store 2481 2482
+            2483:   1947(ptr) AccessChain 34(data) 2474 73 69
+            2484: 23(int16_t) CompositeExtract 2478 2
+                              Store 2483 2484
+            2485:      6(int) Load 8(invocation)
+            2486:   1954(ptr) AccessChain 34(data) 73 73
+            2487: 24(i16vec4) Load 2486
+            2488: 24(i16vec4) GroupNonUniformUMax 42 ExclusiveScan 2487
+            2489:   1954(ptr) AccessChain 34(data) 2485 73
+                              Store 2489 2488
+            2490:      6(int) Load 8(invocation)
+            2491:   1947(ptr) AccessChain 34(data) 37 73 38
+            2492: 23(int16_t) Load 2491
+            2493: 23(int16_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2492
+            2494:   1947(ptr) AccessChain 34(data) 2490 73 38
+                              Store 2494 2493
+            2495:      6(int) Load 8(invocation)
+            2496:   1954(ptr) AccessChain 34(data) 46 73
+            2497: 24(i16vec4) Load 2496
+            2498:1953(i16vec2) VectorShuffle 2497 2497 0 1
+            2499:1953(i16vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2498
+            2500:   1947(ptr) AccessChain 34(data) 2495 73 38
+            2501: 23(int16_t) CompositeExtract 2499 0
+                              Store 2500 2501
+            2502:   1947(ptr) AccessChain 34(data) 2495 73 55
+            2503: 23(int16_t) CompositeExtract 2499 1
+                              Store 2502 2503
+            2504:      6(int) Load 8(invocation)
+            2505:   1954(ptr) AccessChain 34(data) 59 73
+            2506: 24(i16vec4) Load 2505
+            2507:1964(i16vec3) VectorShuffle 2506 2506 0 1 2
+            2508:1964(i16vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2507
+            2509:   1947(ptr) AccessChain 34(data) 2504 73 38
+            2510: 23(int16_t) CompositeExtract 2508 0
+                              Store 2509 2510
+            2511:   1947(ptr) AccessChain 34(data) 2504 73 55
+            2512: 23(int16_t) CompositeExtract 2508 1
+                              Store 2511 2512
+            2513:   1947(ptr) AccessChain 34(data) 2504 73 69
+            2514: 23(int16_t) CompositeExtract 2508 2
+                              Store 2513 2514
+            2515:      6(int) Load 8(invocation)
+            2516:   1954(ptr) AccessChain 34(data) 73 73
+            2517: 24(i16vec4) Load 2516
+            2518: 24(i16vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2517
+            2519:   1954(ptr) AccessChain 34(data) 2515 73
+                              Store 2519 2518
             2520:      6(int) Load 8(invocation)
-            2521:   2251(ptr) AccessChain 34(data) 57 2243
-            2522: 26(i64vec4) Load 2521
-            2523:2260(i64vec3) VectorShuffle 2522 2522 0 1 2
-            2524:2260(i64vec3) GroupNonUniformSMax 42 InclusiveScan 2523
-            2525:   2251(ptr) AccessChain 34(data) 2520 2243
-            2526: 26(i64vec4) Load 2525
-            2527: 26(i64vec4) VectorShuffle 2526 2524 4 5 6 3
-                              Store 2525 2527
-            2528:      6(int) Load 8(invocation)
-            2529:   2251(ptr) AccessChain 34(data) 67 2243
-            2530: 26(i64vec4) Load 2529
-            2531: 26(i64vec4) GroupNonUniformSMax 42 InclusiveScan 2530
-            2532:   2251(ptr) AccessChain 34(data) 2528 2243
-                              Store 2532 2531
-            2533:      6(int) Load 8(invocation)
-            2534:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2535: 25(int64_t) Load 2534
-            2536: 25(int64_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 2535
-            2537:   2244(ptr) AccessChain 34(data) 2533 2243 38
-                              Store 2537 2536
-            2538:      6(int) Load 8(invocation)
-            2539:   2251(ptr) AccessChain 34(data) 46 2243
-            2540: 26(i64vec4) Load 2539
-            2541:2250(i64vec2) VectorShuffle 2540 2540 0 1
-            2542:2250(i64vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 2541
-            2543:   2251(ptr) AccessChain 34(data) 2538 2243
-            2544: 26(i64vec4) Load 2543
-            2545: 26(i64vec4) VectorShuffle 2544 2542 4 5 2 3
-                              Store 2543 2545
-            2546:      6(int) Load 8(invocation)
-            2547:   2251(ptr) AccessChain 34(data) 57 2243
-            2548: 26(i64vec4) Load 2547
-            2549:2260(i64vec3) VectorShuffle 2548 2548 0 1 2
-            2550:2260(i64vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 2549
-            2551:   2251(ptr) AccessChain 34(data) 2546 2243
-            2552: 26(i64vec4) Load 2551
-            2553: 26(i64vec4) VectorShuffle 2552 2550 4 5 6 3
-                              Store 2551 2553
-            2554:      6(int) Load 8(invocation)
-            2555:   2251(ptr) AccessChain 34(data) 67 2243
-            2556: 26(i64vec4) Load 2555
-            2557: 26(i64vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 2556
-            2558:   2251(ptr) AccessChain 34(data) 2554 2243
-                              Store 2558 2557
-            2559:      6(int) Load 8(invocation)
-            2560:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2561: 25(int64_t) Load 2560
-            2562: 25(int64_t) GroupNonUniformBitwiseOr 42 InclusiveScan 2561
-            2563:   2244(ptr) AccessChain 34(data) 2559 2243 38
-                              Store 2563 2562
+            2521:   1947(ptr) AccessChain 34(data) 37 73 38
+            2522: 23(int16_t) Load 2521
+            2523: 23(int16_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 2522
+            2524:   1947(ptr) AccessChain 34(data) 2520 73 38
+                              Store 2524 2523
+            2525:      6(int) Load 8(invocation)
+            2526:   1954(ptr) AccessChain 34(data) 46 73
+            2527: 24(i16vec4) Load 2526
+            2528:1953(i16vec2) VectorShuffle 2527 2527 0 1
+            2529:1953(i16vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 2528
+            2530:   1947(ptr) AccessChain 34(data) 2525 73 38
+            2531: 23(int16_t) CompositeExtract 2529 0
+                              Store 2530 2531
+            2532:   1947(ptr) AccessChain 34(data) 2525 73 55
+            2533: 23(int16_t) CompositeExtract 2529 1
+                              Store 2532 2533
+            2534:      6(int) Load 8(invocation)
+            2535:   1954(ptr) AccessChain 34(data) 59 73
+            2536: 24(i16vec4) Load 2535
+            2537:1964(i16vec3) VectorShuffle 2536 2536 0 1 2
+            2538:1964(i16vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 2537
+            2539:   1947(ptr) AccessChain 34(data) 2534 73 38
+            2540: 23(int16_t) CompositeExtract 2538 0
+                              Store 2539 2540
+            2541:   1947(ptr) AccessChain 34(data) 2534 73 55
+            2542: 23(int16_t) CompositeExtract 2538 1
+                              Store 2541 2542
+            2543:   1947(ptr) AccessChain 34(data) 2534 73 69
+            2544: 23(int16_t) CompositeExtract 2538 2
+                              Store 2543 2544
+            2545:      6(int) Load 8(invocation)
+            2546:   1954(ptr) AccessChain 34(data) 73 73
+            2547: 24(i16vec4) Load 2546
+            2548: 24(i16vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 2547
+            2549:   1954(ptr) AccessChain 34(data) 2545 73
+                              Store 2549 2548
+            2550:      6(int) Load 8(invocation)
+            2551:   1947(ptr) AccessChain 34(data) 37 73 38
+            2552: 23(int16_t) Load 2551
+            2553: 23(int16_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 2552
+            2554:   1947(ptr) AccessChain 34(data) 2550 73 38
+                              Store 2554 2553
+            2555:      6(int) Load 8(invocation)
+            2556:   1954(ptr) AccessChain 34(data) 46 73
+            2557: 24(i16vec4) Load 2556
+            2558:1953(i16vec2) VectorShuffle 2557 2557 0 1
+            2559:1953(i16vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 2558
+            2560:   1947(ptr) AccessChain 34(data) 2555 73 38
+            2561: 23(int16_t) CompositeExtract 2559 0
+                              Store 2560 2561
+            2562:   1947(ptr) AccessChain 34(data) 2555 73 55
+            2563: 23(int16_t) CompositeExtract 2559 1
+                              Store 2562 2563
             2564:      6(int) Load 8(invocation)
-            2565:   2251(ptr) AccessChain 34(data) 46 2243
-            2566: 26(i64vec4) Load 2565
-            2567:2250(i64vec2) VectorShuffle 2566 2566 0 1
-            2568:2250(i64vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 2567
-            2569:   2251(ptr) AccessChain 34(data) 2564 2243
-            2570: 26(i64vec4) Load 2569
-            2571: 26(i64vec4) VectorShuffle 2570 2568 4 5 2 3
-                              Store 2569 2571
-            2572:      6(int) Load 8(invocation)
-            2573:   2251(ptr) AccessChain 34(data) 57 2243
-            2574: 26(i64vec4) Load 2573
-            2575:2260(i64vec3) VectorShuffle 2574 2574 0 1 2
-            2576:2260(i64vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 2575
-            2577:   2251(ptr) AccessChain 34(data) 2572 2243
-            2578: 26(i64vec4) Load 2577
-            2579: 26(i64vec4) VectorShuffle 2578 2576 4 5 6 3
-                              Store 2577 2579
+            2565:   1954(ptr) AccessChain 34(data) 59 73
+            2566: 24(i16vec4) Load 2565
+            2567:1964(i16vec3) VectorShuffle 2566 2566 0 1 2
+            2568:1964(i16vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 2567
+            2569:   1947(ptr) AccessChain 34(data) 2564 73 38
+            2570: 23(int16_t) CompositeExtract 2568 0
+                              Store 2569 2570
+            2571:   1947(ptr) AccessChain 34(data) 2564 73 55
+            2572: 23(int16_t) CompositeExtract 2568 1
+                              Store 2571 2572
+            2573:   1947(ptr) AccessChain 34(data) 2564 73 69
+            2574: 23(int16_t) CompositeExtract 2568 2
+                              Store 2573 2574
+            2575:      6(int) Load 8(invocation)
+            2576:   1954(ptr) AccessChain 34(data) 73 73
+            2577: 24(i16vec4) Load 2576
+            2578: 24(i16vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 2577
+            2579:   1954(ptr) AccessChain 34(data) 2575 73
+                              Store 2579 2578
             2580:      6(int) Load 8(invocation)
-            2581:   2251(ptr) AccessChain 34(data) 67 2243
-            2582: 26(i64vec4) Load 2581
-            2583: 26(i64vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 2582
-            2584:   2251(ptr) AccessChain 34(data) 2580 2243
-                              Store 2584 2583
-            2585:      6(int) Load 8(invocation)
-            2586:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2587: 25(int64_t) Load 2586
-            2588: 25(int64_t) GroupNonUniformBitwiseXor 42 InclusiveScan 2587
-            2589:   2244(ptr) AccessChain 34(data) 2585 2243 38
-                              Store 2589 2588
-            2590:      6(int) Load 8(invocation)
-            2591:   2251(ptr) AccessChain 34(data) 46 2243
-            2592: 26(i64vec4) Load 2591
-            2593:2250(i64vec2) VectorShuffle 2592 2592 0 1
-            2594:2250(i64vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 2593
-            2595:   2251(ptr) AccessChain 34(data) 2590 2243
-            2596: 26(i64vec4) Load 2595
-            2597: 26(i64vec4) VectorShuffle 2596 2594 4 5 2 3
-                              Store 2595 2597
+            2583:   2582(ptr) AccessChain 34(data) 37 2581 38
+            2584: 25(int64_t) Load 2583
+            2585: 25(int64_t) GroupNonUniformIAdd 42 Reduce 2584
+            2586:   2582(ptr) AccessChain 34(data) 2580 2581 38
+                              Store 2586 2585
+            2587:      6(int) Load 8(invocation)
+            2590:   2589(ptr) AccessChain 34(data) 46 2581
+            2591: 26(i64vec4) Load 2590
+            2592:2588(i64vec2) VectorShuffle 2591 2591 0 1
+            2593:2588(i64vec2) GroupNonUniformIAdd 42 Reduce 2592
+            2594:   2582(ptr) AccessChain 34(data) 2587 2581 38
+            2595: 25(int64_t) CompositeExtract 2593 0
+                              Store 2594 2595
+            2596:   2582(ptr) AccessChain 34(data) 2587 2581 55
+            2597: 25(int64_t) CompositeExtract 2593 1
+                              Store 2596 2597
             2598:      6(int) Load 8(invocation)
-            2599:   2251(ptr) AccessChain 34(data) 57 2243
-            2600: 26(i64vec4) Load 2599
-            2601:2260(i64vec3) VectorShuffle 2600 2600 0 1 2
-            2602:2260(i64vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 2601
-            2603:   2251(ptr) AccessChain 34(data) 2598 2243
-            2604: 26(i64vec4) Load 2603
-            2605: 26(i64vec4) VectorShuffle 2604 2602 4 5 6 3
-                              Store 2603 2605
-            2606:      6(int) Load 8(invocation)
-            2607:   2251(ptr) AccessChain 34(data) 67 2243
-            2608: 26(i64vec4) Load 2607
-            2609: 26(i64vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 2608
-            2610:   2251(ptr) AccessChain 34(data) 2606 2243
-                              Store 2610 2609
-            2611:      6(int) Load 8(invocation)
-            2612:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2613: 25(int64_t) Load 2612
-            2614: 25(int64_t) GroupNonUniformIAdd 42 ExclusiveScan 2613
-            2615:   2244(ptr) AccessChain 34(data) 2611 2243 38
-                              Store 2615 2614
-            2616:      6(int) Load 8(invocation)
-            2617:   2251(ptr) AccessChain 34(data) 46 2243
-            2618: 26(i64vec4) Load 2617
-            2619:2250(i64vec2) VectorShuffle 2618 2618 0 1
-            2620:2250(i64vec2) GroupNonUniformIAdd 42 ExclusiveScan 2619
-            2621:   2251(ptr) AccessChain 34(data) 2616 2243
+            2600:   2589(ptr) AccessChain 34(data) 59 2581
+            2601: 26(i64vec4) Load 2600
+            2602:2599(i64vec3) VectorShuffle 2601 2601 0 1 2
+            2603:2599(i64vec3) GroupNonUniformIAdd 42 Reduce 2602
+            2604:   2582(ptr) AccessChain 34(data) 2598 2581 38
+            2605: 25(int64_t) CompositeExtract 2603 0
+                              Store 2604 2605
+            2606:   2582(ptr) AccessChain 34(data) 2598 2581 55
+            2607: 25(int64_t) CompositeExtract 2603 1
+                              Store 2606 2607
+            2608:   2582(ptr) AccessChain 34(data) 2598 2581 69
+            2609: 25(int64_t) CompositeExtract 2603 2
+                              Store 2608 2609
+            2610:      6(int) Load 8(invocation)
+            2611:   2589(ptr) AccessChain 34(data) 73 2581
+            2612: 26(i64vec4) Load 2611
+            2613: 26(i64vec4) GroupNonUniformIAdd 42 Reduce 2612
+            2614:   2589(ptr) AccessChain 34(data) 2610 2581
+                              Store 2614 2613
+            2615:      6(int) Load 8(invocation)
+            2616:   2582(ptr) AccessChain 34(data) 37 2581 38
+            2617: 25(int64_t) Load 2616
+            2618: 25(int64_t) GroupNonUniformIMul 42 Reduce 2617
+            2619:   2582(ptr) AccessChain 34(data) 2615 2581 38
+                              Store 2619 2618
+            2620:      6(int) Load 8(invocation)
+            2621:   2589(ptr) AccessChain 34(data) 46 2581
             2622: 26(i64vec4) Load 2621
-            2623: 26(i64vec4) VectorShuffle 2622 2620 4 5 2 3
-                              Store 2621 2623
-            2624:      6(int) Load 8(invocation)
-            2625:   2251(ptr) AccessChain 34(data) 57 2243
-            2626: 26(i64vec4) Load 2625
-            2627:2260(i64vec3) VectorShuffle 2626 2626 0 1 2
-            2628:2260(i64vec3) GroupNonUniformIAdd 42 ExclusiveScan 2627
-            2629:   2251(ptr) AccessChain 34(data) 2624 2243
-            2630: 26(i64vec4) Load 2629
-            2631: 26(i64vec4) VectorShuffle 2630 2628 4 5 6 3
-                              Store 2629 2631
-            2632:      6(int) Load 8(invocation)
-            2633:   2251(ptr) AccessChain 34(data) 67 2243
-            2634: 26(i64vec4) Load 2633
-            2635: 26(i64vec4) GroupNonUniformIAdd 42 ExclusiveScan 2634
-            2636:   2251(ptr) AccessChain 34(data) 2632 2243
-                              Store 2636 2635
-            2637:      6(int) Load 8(invocation)
-            2638:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2639: 25(int64_t) Load 2638
-            2640: 25(int64_t) GroupNonUniformIMul 42 ExclusiveScan 2639
-            2641:   2244(ptr) AccessChain 34(data) 2637 2243 38
-                              Store 2641 2640
-            2642:      6(int) Load 8(invocation)
-            2643:   2251(ptr) AccessChain 34(data) 46 2243
-            2644: 26(i64vec4) Load 2643
-            2645:2250(i64vec2) VectorShuffle 2644 2644 0 1
-            2646:2250(i64vec2) GroupNonUniformIMul 42 ExclusiveScan 2645
-            2647:   2251(ptr) AccessChain 34(data) 2642 2243
-            2648: 26(i64vec4) Load 2647
-            2649: 26(i64vec4) VectorShuffle 2648 2646 4 5 2 3
-                              Store 2647 2649
+            2623:2588(i64vec2) VectorShuffle 2622 2622 0 1
+            2624:2588(i64vec2) GroupNonUniformIMul 42 Reduce 2623
+            2625:   2582(ptr) AccessChain 34(data) 2620 2581 38
+            2626: 25(int64_t) CompositeExtract 2624 0
+                              Store 2625 2626
+            2627:   2582(ptr) AccessChain 34(data) 2620 2581 55
+            2628: 25(int64_t) CompositeExtract 2624 1
+                              Store 2627 2628
+            2629:      6(int) Load 8(invocation)
+            2630:   2589(ptr) AccessChain 34(data) 59 2581
+            2631: 26(i64vec4) Load 2630
+            2632:2599(i64vec3) VectorShuffle 2631 2631 0 1 2
+            2633:2599(i64vec3) GroupNonUniformIMul 42 Reduce 2632
+            2634:   2582(ptr) AccessChain 34(data) 2629 2581 38
+            2635: 25(int64_t) CompositeExtract 2633 0
+                              Store 2634 2635
+            2636:   2582(ptr) AccessChain 34(data) 2629 2581 55
+            2637: 25(int64_t) CompositeExtract 2633 1
+                              Store 2636 2637
+            2638:   2582(ptr) AccessChain 34(data) 2629 2581 69
+            2639: 25(int64_t) CompositeExtract 2633 2
+                              Store 2638 2639
+            2640:      6(int) Load 8(invocation)
+            2641:   2589(ptr) AccessChain 34(data) 73 2581
+            2642: 26(i64vec4) Load 2641
+            2643: 26(i64vec4) GroupNonUniformIMul 42 Reduce 2642
+            2644:   2589(ptr) AccessChain 34(data) 2640 2581
+                              Store 2644 2643
+            2645:      6(int) Load 8(invocation)
+            2646:   2582(ptr) AccessChain 34(data) 37 2581 38
+            2647: 25(int64_t) Load 2646
+            2648: 25(int64_t) GroupNonUniformSMin 42 Reduce 2647
+            2649:   2582(ptr) AccessChain 34(data) 2645 2581 38
+                              Store 2649 2648
             2650:      6(int) Load 8(invocation)
-            2651:   2251(ptr) AccessChain 34(data) 57 2243
+            2651:   2589(ptr) AccessChain 34(data) 46 2581
             2652: 26(i64vec4) Load 2651
-            2653:2260(i64vec3) VectorShuffle 2652 2652 0 1 2
-            2654:2260(i64vec3) GroupNonUniformIMul 42 ExclusiveScan 2653
-            2655:   2251(ptr) AccessChain 34(data) 2650 2243
-            2656: 26(i64vec4) Load 2655
-            2657: 26(i64vec4) VectorShuffle 2656 2654 4 5 6 3
-                              Store 2655 2657
-            2658:      6(int) Load 8(invocation)
-            2659:   2251(ptr) AccessChain 34(data) 67 2243
-            2660: 26(i64vec4) Load 2659
-            2661: 26(i64vec4) GroupNonUniformIMul 42 ExclusiveScan 2660
-            2662:   2251(ptr) AccessChain 34(data) 2658 2243
-                              Store 2662 2661
-            2663:      6(int) Load 8(invocation)
-            2664:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2665: 25(int64_t) Load 2664
-            2666: 25(int64_t) GroupNonUniformSMin 42 ExclusiveScan 2665
-            2667:   2244(ptr) AccessChain 34(data) 2663 2243 38
-                              Store 2667 2666
-            2668:      6(int) Load 8(invocation)
-            2669:   2251(ptr) AccessChain 34(data) 46 2243
-            2670: 26(i64vec4) Load 2669
-            2671:2250(i64vec2) VectorShuffle 2670 2670 0 1
-            2672:2250(i64vec2) GroupNonUniformSMin 42 ExclusiveScan 2671
-            2673:   2251(ptr) AccessChain 34(data) 2668 2243
-            2674: 26(i64vec4) Load 2673
-            2675: 26(i64vec4) VectorShuffle 2674 2672 4 5 2 3
-                              Store 2673 2675
-            2676:      6(int) Load 8(invocation)
-            2677:   2251(ptr) AccessChain 34(data) 57 2243
-            2678: 26(i64vec4) Load 2677
-            2679:2260(i64vec3) VectorShuffle 2678 2678 0 1 2
-            2680:2260(i64vec3) GroupNonUniformSMin 42 ExclusiveScan 2679
-            2681:   2251(ptr) AccessChain 34(data) 2676 2243
+            2653:2588(i64vec2) VectorShuffle 2652 2652 0 1
+            2654:2588(i64vec2) GroupNonUniformSMin 42 Reduce 2653
+            2655:   2582(ptr) AccessChain 34(data) 2650 2581 38
+            2656: 25(int64_t) CompositeExtract 2654 0
+                              Store 2655 2656
+            2657:   2582(ptr) AccessChain 34(data) 2650 2581 55
+            2658: 25(int64_t) CompositeExtract 2654 1
+                              Store 2657 2658
+            2659:      6(int) Load 8(invocation)
+            2660:   2589(ptr) AccessChain 34(data) 59 2581
+            2661: 26(i64vec4) Load 2660
+            2662:2599(i64vec3) VectorShuffle 2661 2661 0 1 2
+            2663:2599(i64vec3) GroupNonUniformSMin 42 Reduce 2662
+            2664:   2582(ptr) AccessChain 34(data) 2659 2581 38
+            2665: 25(int64_t) CompositeExtract 2663 0
+                              Store 2664 2665
+            2666:   2582(ptr) AccessChain 34(data) 2659 2581 55
+            2667: 25(int64_t) CompositeExtract 2663 1
+                              Store 2666 2667
+            2668:   2582(ptr) AccessChain 34(data) 2659 2581 69
+            2669: 25(int64_t) CompositeExtract 2663 2
+                              Store 2668 2669
+            2670:      6(int) Load 8(invocation)
+            2671:   2589(ptr) AccessChain 34(data) 73 2581
+            2672: 26(i64vec4) Load 2671
+            2673: 26(i64vec4) GroupNonUniformSMin 42 Reduce 2672
+            2674:   2589(ptr) AccessChain 34(data) 2670 2581
+                              Store 2674 2673
+            2675:      6(int) Load 8(invocation)
+            2676:   2582(ptr) AccessChain 34(data) 37 2581 38
+            2677: 25(int64_t) Load 2676
+            2678: 25(int64_t) GroupNonUniformSMax 42 Reduce 2677
+            2679:   2582(ptr) AccessChain 34(data) 2675 2581 38
+                              Store 2679 2678
+            2680:      6(int) Load 8(invocation)
+            2681:   2589(ptr) AccessChain 34(data) 46 2581
             2682: 26(i64vec4) Load 2681
-            2683: 26(i64vec4) VectorShuffle 2682 2680 4 5 6 3
-                              Store 2681 2683
-            2684:      6(int) Load 8(invocation)
-            2685:   2251(ptr) AccessChain 34(data) 67 2243
-            2686: 26(i64vec4) Load 2685
-            2687: 26(i64vec4) GroupNonUniformSMin 42 ExclusiveScan 2686
-            2688:   2251(ptr) AccessChain 34(data) 2684 2243
-                              Store 2688 2687
+            2683:2588(i64vec2) VectorShuffle 2682 2682 0 1
+            2684:2588(i64vec2) GroupNonUniformSMax 42 Reduce 2683
+            2685:   2582(ptr) AccessChain 34(data) 2680 2581 38
+            2686: 25(int64_t) CompositeExtract 2684 0
+                              Store 2685 2686
+            2687:   2582(ptr) AccessChain 34(data) 2680 2581 55
+            2688: 25(int64_t) CompositeExtract 2684 1
+                              Store 2687 2688
             2689:      6(int) Load 8(invocation)
-            2690:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2691: 25(int64_t) Load 2690
-            2692: 25(int64_t) GroupNonUniformSMax 42 ExclusiveScan 2691
-            2693:   2244(ptr) AccessChain 34(data) 2689 2243 38
-                              Store 2693 2692
-            2694:      6(int) Load 8(invocation)
-            2695:   2251(ptr) AccessChain 34(data) 46 2243
-            2696: 26(i64vec4) Load 2695
-            2697:2250(i64vec2) VectorShuffle 2696 2696 0 1
-            2698:2250(i64vec2) GroupNonUniformSMax 42 ExclusiveScan 2697
-            2699:   2251(ptr) AccessChain 34(data) 2694 2243
-            2700: 26(i64vec4) Load 2699
-            2701: 26(i64vec4) VectorShuffle 2700 2698 4 5 2 3
-                              Store 2699 2701
-            2702:      6(int) Load 8(invocation)
-            2703:   2251(ptr) AccessChain 34(data) 57 2243
-            2704: 26(i64vec4) Load 2703
-            2705:2260(i64vec3) VectorShuffle 2704 2704 0 1 2
-            2706:2260(i64vec3) GroupNonUniformSMax 42 ExclusiveScan 2705
-            2707:   2251(ptr) AccessChain 34(data) 2702 2243
-            2708: 26(i64vec4) Load 2707
-            2709: 26(i64vec4) VectorShuffle 2708 2706 4 5 6 3
-                              Store 2707 2709
+            2690:   2589(ptr) AccessChain 34(data) 59 2581
+            2691: 26(i64vec4) Load 2690
+            2692:2599(i64vec3) VectorShuffle 2691 2691 0 1 2
+            2693:2599(i64vec3) GroupNonUniformSMax 42 Reduce 2692
+            2694:   2582(ptr) AccessChain 34(data) 2689 2581 38
+            2695: 25(int64_t) CompositeExtract 2693 0
+                              Store 2694 2695
+            2696:   2582(ptr) AccessChain 34(data) 2689 2581 55
+            2697: 25(int64_t) CompositeExtract 2693 1
+                              Store 2696 2697
+            2698:   2582(ptr) AccessChain 34(data) 2689 2581 69
+            2699: 25(int64_t) CompositeExtract 2693 2
+                              Store 2698 2699
+            2700:      6(int) Load 8(invocation)
+            2701:   2589(ptr) AccessChain 34(data) 73 2581
+            2702: 26(i64vec4) Load 2701
+            2703: 26(i64vec4) GroupNonUniformSMax 42 Reduce 2702
+            2704:   2589(ptr) AccessChain 34(data) 2700 2581
+                              Store 2704 2703
+            2705:      6(int) Load 8(invocation)
+            2706:   2582(ptr) AccessChain 34(data) 37 2581 38
+            2707: 25(int64_t) Load 2706
+            2708: 25(int64_t) GroupNonUniformBitwiseAnd 42 Reduce 2707
+            2709:   2582(ptr) AccessChain 34(data) 2705 2581 38
+                              Store 2709 2708
             2710:      6(int) Load 8(invocation)
-            2711:   2251(ptr) AccessChain 34(data) 67 2243
+            2711:   2589(ptr) AccessChain 34(data) 46 2581
             2712: 26(i64vec4) Load 2711
-            2713: 26(i64vec4) GroupNonUniformSMax 42 ExclusiveScan 2712
-            2714:   2251(ptr) AccessChain 34(data) 2710 2243
-                              Store 2714 2713
-            2715:      6(int) Load 8(invocation)
-            2716:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2717: 25(int64_t) Load 2716
-            2718: 25(int64_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2717
-            2719:   2244(ptr) AccessChain 34(data) 2715 2243 38
-                              Store 2719 2718
-            2720:      6(int) Load 8(invocation)
-            2721:   2251(ptr) AccessChain 34(data) 46 2243
-            2722: 26(i64vec4) Load 2721
-            2723:2250(i64vec2) VectorShuffle 2722 2722 0 1
-            2724:2250(i64vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2723
-            2725:   2251(ptr) AccessChain 34(data) 2720 2243
-            2726: 26(i64vec4) Load 2725
-            2727: 26(i64vec4) VectorShuffle 2726 2724 4 5 2 3
-                              Store 2725 2727
-            2728:      6(int) Load 8(invocation)
-            2729:   2251(ptr) AccessChain 34(data) 57 2243
-            2730: 26(i64vec4) Load 2729
-            2731:2260(i64vec3) VectorShuffle 2730 2730 0 1 2
-            2732:2260(i64vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2731
-            2733:   2251(ptr) AccessChain 34(data) 2728 2243
-            2734: 26(i64vec4) Load 2733
-            2735: 26(i64vec4) VectorShuffle 2734 2732 4 5 6 3
-                              Store 2733 2735
-            2736:      6(int) Load 8(invocation)
-            2737:   2251(ptr) AccessChain 34(data) 67 2243
-            2738: 26(i64vec4) Load 2737
-            2739: 26(i64vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 2738
-            2740:   2251(ptr) AccessChain 34(data) 2736 2243
-                              Store 2740 2739
-            2741:      6(int) Load 8(invocation)
-            2742:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2743: 25(int64_t) Load 2742
-            2744: 25(int64_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 2743
-            2745:   2244(ptr) AccessChain 34(data) 2741 2243 38
-                              Store 2745 2744
-            2746:      6(int) Load 8(invocation)
-            2747:   2251(ptr) AccessChain 34(data) 46 2243
-            2748: 26(i64vec4) Load 2747
-            2749:2250(i64vec2) VectorShuffle 2748 2748 0 1
-            2750:2250(i64vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 2749
-            2751:   2251(ptr) AccessChain 34(data) 2746 2243
-            2752: 26(i64vec4) Load 2751
-            2753: 26(i64vec4) VectorShuffle 2752 2750 4 5 2 3
-                              Store 2751 2753
-            2754:      6(int) Load 8(invocation)
-            2755:   2251(ptr) AccessChain 34(data) 57 2243
-            2756: 26(i64vec4) Load 2755
-            2757:2260(i64vec3) VectorShuffle 2756 2756 0 1 2
-            2758:2260(i64vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 2757
-            2759:   2251(ptr) AccessChain 34(data) 2754 2243
-            2760: 26(i64vec4) Load 2759
-            2761: 26(i64vec4) VectorShuffle 2760 2758 4 5 6 3
-                              Store 2759 2761
-            2762:      6(int) Load 8(invocation)
-            2763:   2251(ptr) AccessChain 34(data) 67 2243
-            2764: 26(i64vec4) Load 2763
-            2765: 26(i64vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 2764
-            2766:   2251(ptr) AccessChain 34(data) 2762 2243
-                              Store 2766 2765
-            2767:      6(int) Load 8(invocation)
-            2768:   2244(ptr) AccessChain 34(data) 37 2243 38
-            2769: 25(int64_t) Load 2768
-            2770: 25(int64_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 2769
-            2771:   2244(ptr) AccessChain 34(data) 2767 2243 38
-                              Store 2771 2770
-            2772:      6(int) Load 8(invocation)
-            2773:   2251(ptr) AccessChain 34(data) 46 2243
-            2774: 26(i64vec4) Load 2773
-            2775:2250(i64vec2) VectorShuffle 2774 2774 0 1
-            2776:2250(i64vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 2775
-            2777:   2251(ptr) AccessChain 34(data) 2772 2243
-            2778: 26(i64vec4) Load 2777
-            2779: 26(i64vec4) VectorShuffle 2778 2776 4 5 2 3
-                              Store 2777 2779
-            2780:      6(int) Load 8(invocation)
-            2781:   2251(ptr) AccessChain 34(data) 57 2243
-            2782: 26(i64vec4) Load 2781
-            2783:2260(i64vec3) VectorShuffle 2782 2782 0 1 2
-            2784:2260(i64vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 2783
-            2785:   2251(ptr) AccessChain 34(data) 2780 2243
-            2786: 26(i64vec4) Load 2785
-            2787: 26(i64vec4) VectorShuffle 2786 2784 4 5 6 3
-                              Store 2785 2787
-            2788:      6(int) Load 8(invocation)
-            2789:   2251(ptr) AccessChain 34(data) 67 2243
-            2790: 26(i64vec4) Load 2789
-            2791: 26(i64vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 2790
-            2792:   2251(ptr) AccessChain 34(data) 2788 2243
-                              Store 2792 2791
-            2793:      6(int) Load 8(invocation)
-            2796:   2795(ptr) AccessChain 34(data) 37 2794 38
-            2797: 27(int64_t) Load 2796
-            2798: 27(int64_t) GroupNonUniformIAdd 42 Reduce 2797
-            2799:   2795(ptr) AccessChain 34(data) 2793 2794 38
+            2713:2588(i64vec2) VectorShuffle 2712 2712 0 1
+            2714:2588(i64vec2) GroupNonUniformBitwiseAnd 42 Reduce 2713
+            2715:   2582(ptr) AccessChain 34(data) 2710 2581 38
+            2716: 25(int64_t) CompositeExtract 2714 0
+                              Store 2715 2716
+            2717:   2582(ptr) AccessChain 34(data) 2710 2581 55
+            2718: 25(int64_t) CompositeExtract 2714 1
+                              Store 2717 2718
+            2719:      6(int) Load 8(invocation)
+            2720:   2589(ptr) AccessChain 34(data) 59 2581
+            2721: 26(i64vec4) Load 2720
+            2722:2599(i64vec3) VectorShuffle 2721 2721 0 1 2
+            2723:2599(i64vec3) GroupNonUniformBitwiseAnd 42 Reduce 2722
+            2724:   2582(ptr) AccessChain 34(data) 2719 2581 38
+            2725: 25(int64_t) CompositeExtract 2723 0
+                              Store 2724 2725
+            2726:   2582(ptr) AccessChain 34(data) 2719 2581 55
+            2727: 25(int64_t) CompositeExtract 2723 1
+                              Store 2726 2727
+            2728:   2582(ptr) AccessChain 34(data) 2719 2581 69
+            2729: 25(int64_t) CompositeExtract 2723 2
+                              Store 2728 2729
+            2730:      6(int) Load 8(invocation)
+            2731:   2589(ptr) AccessChain 34(data) 73 2581
+            2732: 26(i64vec4) Load 2731
+            2733: 26(i64vec4) GroupNonUniformBitwiseAnd 42 Reduce 2732
+            2734:   2589(ptr) AccessChain 34(data) 2730 2581
+                              Store 2734 2733
+            2735:      6(int) Load 8(invocation)
+            2736:   2582(ptr) AccessChain 34(data) 37 2581 38
+            2737: 25(int64_t) Load 2736
+            2738: 25(int64_t) GroupNonUniformBitwiseOr 42 Reduce 2737
+            2739:   2582(ptr) AccessChain 34(data) 2735 2581 38
+                              Store 2739 2738
+            2740:      6(int) Load 8(invocation)
+            2741:   2589(ptr) AccessChain 34(data) 46 2581
+            2742: 26(i64vec4) Load 2741
+            2743:2588(i64vec2) VectorShuffle 2742 2742 0 1
+            2744:2588(i64vec2) GroupNonUniformBitwiseOr 42 Reduce 2743
+            2745:   2582(ptr) AccessChain 34(data) 2740 2581 38
+            2746: 25(int64_t) CompositeExtract 2744 0
+                              Store 2745 2746
+            2747:   2582(ptr) AccessChain 34(data) 2740 2581 55
+            2748: 25(int64_t) CompositeExtract 2744 1
+                              Store 2747 2748
+            2749:      6(int) Load 8(invocation)
+            2750:   2589(ptr) AccessChain 34(data) 59 2581
+            2751: 26(i64vec4) Load 2750
+            2752:2599(i64vec3) VectorShuffle 2751 2751 0 1 2
+            2753:2599(i64vec3) GroupNonUniformBitwiseOr 42 Reduce 2752
+            2754:   2582(ptr) AccessChain 34(data) 2749 2581 38
+            2755: 25(int64_t) CompositeExtract 2753 0
+                              Store 2754 2755
+            2756:   2582(ptr) AccessChain 34(data) 2749 2581 55
+            2757: 25(int64_t) CompositeExtract 2753 1
+                              Store 2756 2757
+            2758:   2582(ptr) AccessChain 34(data) 2749 2581 69
+            2759: 25(int64_t) CompositeExtract 2753 2
+                              Store 2758 2759
+            2760:      6(int) Load 8(invocation)
+            2761:   2589(ptr) AccessChain 34(data) 73 2581
+            2762: 26(i64vec4) Load 2761
+            2763: 26(i64vec4) GroupNonUniformBitwiseOr 42 Reduce 2762
+            2764:   2589(ptr) AccessChain 34(data) 2760 2581
+                              Store 2764 2763
+            2765:      6(int) Load 8(invocation)
+            2766:   2582(ptr) AccessChain 34(data) 37 2581 38
+            2767: 25(int64_t) Load 2766
+            2768: 25(int64_t) GroupNonUniformBitwiseXor 42 Reduce 2767
+            2769:   2582(ptr) AccessChain 34(data) 2765 2581 38
+                              Store 2769 2768
+            2770:      6(int) Load 8(invocation)
+            2771:   2589(ptr) AccessChain 34(data) 46 2581
+            2772: 26(i64vec4) Load 2771
+            2773:2588(i64vec2) VectorShuffle 2772 2772 0 1
+            2774:2588(i64vec2) GroupNonUniformBitwiseXor 42 Reduce 2773
+            2775:   2582(ptr) AccessChain 34(data) 2770 2581 38
+            2776: 25(int64_t) CompositeExtract 2774 0
+                              Store 2775 2776
+            2777:   2582(ptr) AccessChain 34(data) 2770 2581 55
+            2778: 25(int64_t) CompositeExtract 2774 1
+                              Store 2777 2778
+            2779:      6(int) Load 8(invocation)
+            2780:   2589(ptr) AccessChain 34(data) 59 2581
+            2781: 26(i64vec4) Load 2780
+            2782:2599(i64vec3) VectorShuffle 2781 2781 0 1 2
+            2783:2599(i64vec3) GroupNonUniformBitwiseXor 42 Reduce 2782
+            2784:   2582(ptr) AccessChain 34(data) 2779 2581 38
+            2785: 25(int64_t) CompositeExtract 2783 0
+                              Store 2784 2785
+            2786:   2582(ptr) AccessChain 34(data) 2779 2581 55
+            2787: 25(int64_t) CompositeExtract 2783 1
+                              Store 2786 2787
+            2788:   2582(ptr) AccessChain 34(data) 2779 2581 69
+            2789: 25(int64_t) CompositeExtract 2783 2
+                              Store 2788 2789
+            2790:      6(int) Load 8(invocation)
+            2791:   2589(ptr) AccessChain 34(data) 73 2581
+            2792: 26(i64vec4) Load 2791
+            2793: 26(i64vec4) GroupNonUniformBitwiseXor 42 Reduce 2792
+            2794:   2589(ptr) AccessChain 34(data) 2790 2581
+                              Store 2794 2793
+            2795:      6(int) Load 8(invocation)
+            2796:   2582(ptr) AccessChain 34(data) 37 2581 38
+            2797: 25(int64_t) Load 2796
+            2798: 25(int64_t) GroupNonUniformIAdd 42 InclusiveScan 2797
+            2799:   2582(ptr) AccessChain 34(data) 2795 2581 38
                               Store 2799 2798
             2800:      6(int) Load 8(invocation)
-            2803:   2802(ptr) AccessChain 34(data) 46 2794
-            2804: 28(i64vec4) Load 2803
-            2805:2801(i64vec2) VectorShuffle 2804 2804 0 1
-            2806:2801(i64vec2) GroupNonUniformIAdd 42 Reduce 2805
-            2807:   2802(ptr) AccessChain 34(data) 2800 2794
-            2808: 28(i64vec4) Load 2807
-            2809: 28(i64vec4) VectorShuffle 2808 2806 4 5 2 3
-                              Store 2807 2809
-            2810:      6(int) Load 8(invocation)
-            2812:   2802(ptr) AccessChain 34(data) 57 2794
-            2813: 28(i64vec4) Load 2812
-            2814:2811(i64vec3) VectorShuffle 2813 2813 0 1 2
-            2815:2811(i64vec3) GroupNonUniformIAdd 42 Reduce 2814
-            2816:   2802(ptr) AccessChain 34(data) 2810 2794
-            2817: 28(i64vec4) Load 2816
-            2818: 28(i64vec4) VectorShuffle 2817 2815 4 5 6 3
-                              Store 2816 2818
-            2819:      6(int) Load 8(invocation)
-            2820:   2802(ptr) AccessChain 34(data) 67 2794
-            2821: 28(i64vec4) Load 2820
-            2822: 28(i64vec4) GroupNonUniformIAdd 42 Reduce 2821
-            2823:   2802(ptr) AccessChain 34(data) 2819 2794
-                              Store 2823 2822
-            2824:      6(int) Load 8(invocation)
-            2825:   2795(ptr) AccessChain 34(data) 37 2794 38
-            2826: 27(int64_t) Load 2825
-            2827: 27(int64_t) GroupNonUniformIMul 42 Reduce 2826
-            2828:   2795(ptr) AccessChain 34(data) 2824 2794 38
-                              Store 2828 2827
-            2829:      6(int) Load 8(invocation)
-            2830:   2802(ptr) AccessChain 34(data) 46 2794
-            2831: 28(i64vec4) Load 2830
-            2832:2801(i64vec2) VectorShuffle 2831 2831 0 1
-            2833:2801(i64vec2) GroupNonUniformIMul 42 Reduce 2832
-            2834:   2802(ptr) AccessChain 34(data) 2829 2794
-            2835: 28(i64vec4) Load 2834
-            2836: 28(i64vec4) VectorShuffle 2835 2833 4 5 2 3
-                              Store 2834 2836
-            2837:      6(int) Load 8(invocation)
-            2838:   2802(ptr) AccessChain 34(data) 57 2794
-            2839: 28(i64vec4) Load 2838
-            2840:2811(i64vec3) VectorShuffle 2839 2839 0 1 2
-            2841:2811(i64vec3) GroupNonUniformIMul 42 Reduce 2840
-            2842:   2802(ptr) AccessChain 34(data) 2837 2794
-            2843: 28(i64vec4) Load 2842
-            2844: 28(i64vec4) VectorShuffle 2843 2841 4 5 6 3
-                              Store 2842 2844
-            2845:      6(int) Load 8(invocation)
-            2846:   2802(ptr) AccessChain 34(data) 67 2794
-            2847: 28(i64vec4) Load 2846
-            2848: 28(i64vec4) GroupNonUniformIMul 42 Reduce 2847
-            2849:   2802(ptr) AccessChain 34(data) 2845 2794
-                              Store 2849 2848
+            2801:   2589(ptr) AccessChain 34(data) 46 2581
+            2802: 26(i64vec4) Load 2801
+            2803:2588(i64vec2) VectorShuffle 2802 2802 0 1
+            2804:2588(i64vec2) GroupNonUniformIAdd 42 InclusiveScan 2803
+            2805:   2582(ptr) AccessChain 34(data) 2800 2581 38
+            2806: 25(int64_t) CompositeExtract 2804 0
+                              Store 2805 2806
+            2807:   2582(ptr) AccessChain 34(data) 2800 2581 55
+            2808: 25(int64_t) CompositeExtract 2804 1
+                              Store 2807 2808
+            2809:      6(int) Load 8(invocation)
+            2810:   2589(ptr) AccessChain 34(data) 59 2581
+            2811: 26(i64vec4) Load 2810
+            2812:2599(i64vec3) VectorShuffle 2811 2811 0 1 2
+            2813:2599(i64vec3) GroupNonUniformIAdd 42 InclusiveScan 2812
+            2814:   2582(ptr) AccessChain 34(data) 2809 2581 38
+            2815: 25(int64_t) CompositeExtract 2813 0
+                              Store 2814 2815
+            2816:   2582(ptr) AccessChain 34(data) 2809 2581 55
+            2817: 25(int64_t) CompositeExtract 2813 1
+                              Store 2816 2817
+            2818:   2582(ptr) AccessChain 34(data) 2809 2581 69
+            2819: 25(int64_t) CompositeExtract 2813 2
+                              Store 2818 2819
+            2820:      6(int) Load 8(invocation)
+            2821:   2589(ptr) AccessChain 34(data) 73 2581
+            2822: 26(i64vec4) Load 2821
+            2823: 26(i64vec4) GroupNonUniformIAdd 42 InclusiveScan 2822
+            2824:   2589(ptr) AccessChain 34(data) 2820 2581
+                              Store 2824 2823
+            2825:      6(int) Load 8(invocation)
+            2826:   2582(ptr) AccessChain 34(data) 37 2581 38
+            2827: 25(int64_t) Load 2826
+            2828: 25(int64_t) GroupNonUniformIMul 42 InclusiveScan 2827
+            2829:   2582(ptr) AccessChain 34(data) 2825 2581 38
+                              Store 2829 2828
+            2830:      6(int) Load 8(invocation)
+            2831:   2589(ptr) AccessChain 34(data) 46 2581
+            2832: 26(i64vec4) Load 2831
+            2833:2588(i64vec2) VectorShuffle 2832 2832 0 1
+            2834:2588(i64vec2) GroupNonUniformIMul 42 InclusiveScan 2833
+            2835:   2582(ptr) AccessChain 34(data) 2830 2581 38
+            2836: 25(int64_t) CompositeExtract 2834 0
+                              Store 2835 2836
+            2837:   2582(ptr) AccessChain 34(data) 2830 2581 55
+            2838: 25(int64_t) CompositeExtract 2834 1
+                              Store 2837 2838
+            2839:      6(int) Load 8(invocation)
+            2840:   2589(ptr) AccessChain 34(data) 59 2581
+            2841: 26(i64vec4) Load 2840
+            2842:2599(i64vec3) VectorShuffle 2841 2841 0 1 2
+            2843:2599(i64vec3) GroupNonUniformIMul 42 InclusiveScan 2842
+            2844:   2582(ptr) AccessChain 34(data) 2839 2581 38
+            2845: 25(int64_t) CompositeExtract 2843 0
+                              Store 2844 2845
+            2846:   2582(ptr) AccessChain 34(data) 2839 2581 55
+            2847: 25(int64_t) CompositeExtract 2843 1
+                              Store 2846 2847
+            2848:   2582(ptr) AccessChain 34(data) 2839 2581 69
+            2849: 25(int64_t) CompositeExtract 2843 2
+                              Store 2848 2849
             2850:      6(int) Load 8(invocation)
-            2851:   2795(ptr) AccessChain 34(data) 37 2794 38
-            2852: 27(int64_t) Load 2851
-            2853: 27(int64_t) GroupNonUniformUMin 42 Reduce 2852
-            2854:   2795(ptr) AccessChain 34(data) 2850 2794 38
+            2851:   2589(ptr) AccessChain 34(data) 73 2581
+            2852: 26(i64vec4) Load 2851
+            2853: 26(i64vec4) GroupNonUniformIMul 42 InclusiveScan 2852
+            2854:   2589(ptr) AccessChain 34(data) 2850 2581
                               Store 2854 2853
             2855:      6(int) Load 8(invocation)
-            2856:   2802(ptr) AccessChain 34(data) 46 2794
-            2857: 28(i64vec4) Load 2856
-            2858:2801(i64vec2) VectorShuffle 2857 2857 0 1
-            2859:2801(i64vec2) GroupNonUniformUMin 42 Reduce 2858
-            2860:   2802(ptr) AccessChain 34(data) 2855 2794
-            2861: 28(i64vec4) Load 2860
-            2862: 28(i64vec4) VectorShuffle 2861 2859 4 5 2 3
-                              Store 2860 2862
-            2863:      6(int) Load 8(invocation)
-            2864:   2802(ptr) AccessChain 34(data) 57 2794
-            2865: 28(i64vec4) Load 2864
-            2866:2811(i64vec3) VectorShuffle 2865 2865 0 1 2
-            2867:2811(i64vec3) GroupNonUniformUMin 42 Reduce 2866
-            2868:   2802(ptr) AccessChain 34(data) 2863 2794
-            2869: 28(i64vec4) Load 2868
-            2870: 28(i64vec4) VectorShuffle 2869 2867 4 5 6 3
-                              Store 2868 2870
-            2871:      6(int) Load 8(invocation)
-            2872:   2802(ptr) AccessChain 34(data) 67 2794
-            2873: 28(i64vec4) Load 2872
-            2874: 28(i64vec4) GroupNonUniformUMin 42 Reduce 2873
-            2875:   2802(ptr) AccessChain 34(data) 2871 2794
-                              Store 2875 2874
-            2876:      6(int) Load 8(invocation)
-            2877:   2795(ptr) AccessChain 34(data) 37 2794 38
-            2878: 27(int64_t) Load 2877
-            2879: 27(int64_t) GroupNonUniformUMax 42 Reduce 2878
-            2880:   2795(ptr) AccessChain 34(data) 2876 2794 38
-                              Store 2880 2879
-            2881:      6(int) Load 8(invocation)
-            2882:   2802(ptr) AccessChain 34(data) 46 2794
-            2883: 28(i64vec4) Load 2882
-            2884:2801(i64vec2) VectorShuffle 2883 2883 0 1
-            2885:2801(i64vec2) GroupNonUniformUMax 42 Reduce 2884
-            2886:   2802(ptr) AccessChain 34(data) 2881 2794
-            2887: 28(i64vec4) Load 2886
-            2888: 28(i64vec4) VectorShuffle 2887 2885 4 5 2 3
-                              Store 2886 2888
-            2889:      6(int) Load 8(invocation)
-            2890:   2802(ptr) AccessChain 34(data) 57 2794
-            2891: 28(i64vec4) Load 2890
-            2892:2811(i64vec3) VectorShuffle 2891 2891 0 1 2
-            2893:2811(i64vec3) GroupNonUniformUMax 42 Reduce 2892
-            2894:   2802(ptr) AccessChain 34(data) 2889 2794
-            2895: 28(i64vec4) Load 2894
-            2896: 28(i64vec4) VectorShuffle 2895 2893 4 5 6 3
-                              Store 2894 2896
-            2897:      6(int) Load 8(invocation)
-            2898:   2802(ptr) AccessChain 34(data) 67 2794
-            2899: 28(i64vec4) Load 2898
-            2900: 28(i64vec4) GroupNonUniformUMax 42 Reduce 2899
-            2901:   2802(ptr) AccessChain 34(data) 2897 2794
-                              Store 2901 2900
-            2902:      6(int) Load 8(invocation)
-            2903:   2795(ptr) AccessChain 34(data) 37 2794 38
-            2904: 27(int64_t) Load 2903
-            2905: 27(int64_t) GroupNonUniformBitwiseAnd 42 Reduce 2904
-            2906:   2795(ptr) AccessChain 34(data) 2902 2794 38
-                              Store 2906 2905
-            2907:      6(int) Load 8(invocation)
-            2908:   2802(ptr) AccessChain 34(data) 46 2794
-            2909: 28(i64vec4) Load 2908
-            2910:2801(i64vec2) VectorShuffle 2909 2909 0 1
-            2911:2801(i64vec2) GroupNonUniformBitwiseAnd 42 Reduce 2910
-            2912:   2802(ptr) AccessChain 34(data) 2907 2794
-            2913: 28(i64vec4) Load 2912
-            2914: 28(i64vec4) VectorShuffle 2913 2911 4 5 2 3
-                              Store 2912 2914
+            2856:   2582(ptr) AccessChain 34(data) 37 2581 38
+            2857: 25(int64_t) Load 2856
+            2858: 25(int64_t) GroupNonUniformSMin 42 InclusiveScan 2857
+            2859:   2582(ptr) AccessChain 34(data) 2855 2581 38
+                              Store 2859 2858
+            2860:      6(int) Load 8(invocation)
+            2861:   2589(ptr) AccessChain 34(data) 46 2581
+            2862: 26(i64vec4) Load 2861
+            2863:2588(i64vec2) VectorShuffle 2862 2862 0 1
+            2864:2588(i64vec2) GroupNonUniformSMin 42 InclusiveScan 2863
+            2865:   2582(ptr) AccessChain 34(data) 2860 2581 38
+            2866: 25(int64_t) CompositeExtract 2864 0
+                              Store 2865 2866
+            2867:   2582(ptr) AccessChain 34(data) 2860 2581 55
+            2868: 25(int64_t) CompositeExtract 2864 1
+                              Store 2867 2868
+            2869:      6(int) Load 8(invocation)
+            2870:   2589(ptr) AccessChain 34(data) 59 2581
+            2871: 26(i64vec4) Load 2870
+            2872:2599(i64vec3) VectorShuffle 2871 2871 0 1 2
+            2873:2599(i64vec3) GroupNonUniformSMin 42 InclusiveScan 2872
+            2874:   2582(ptr) AccessChain 34(data) 2869 2581 38
+            2875: 25(int64_t) CompositeExtract 2873 0
+                              Store 2874 2875
+            2876:   2582(ptr) AccessChain 34(data) 2869 2581 55
+            2877: 25(int64_t) CompositeExtract 2873 1
+                              Store 2876 2877
+            2878:   2582(ptr) AccessChain 34(data) 2869 2581 69
+            2879: 25(int64_t) CompositeExtract 2873 2
+                              Store 2878 2879
+            2880:      6(int) Load 8(invocation)
+            2881:   2589(ptr) AccessChain 34(data) 73 2581
+            2882: 26(i64vec4) Load 2881
+            2883: 26(i64vec4) GroupNonUniformSMin 42 InclusiveScan 2882
+            2884:   2589(ptr) AccessChain 34(data) 2880 2581
+                              Store 2884 2883
+            2885:      6(int) Load 8(invocation)
+            2886:   2582(ptr) AccessChain 34(data) 37 2581 38
+            2887: 25(int64_t) Load 2886
+            2888: 25(int64_t) GroupNonUniformSMax 42 InclusiveScan 2887
+            2889:   2582(ptr) AccessChain 34(data) 2885 2581 38
+                              Store 2889 2888
+            2890:      6(int) Load 8(invocation)
+            2891:   2589(ptr) AccessChain 34(data) 46 2581
+            2892: 26(i64vec4) Load 2891
+            2893:2588(i64vec2) VectorShuffle 2892 2892 0 1
+            2894:2588(i64vec2) GroupNonUniformSMax 42 InclusiveScan 2893
+            2895:   2582(ptr) AccessChain 34(data) 2890 2581 38
+            2896: 25(int64_t) CompositeExtract 2894 0
+                              Store 2895 2896
+            2897:   2582(ptr) AccessChain 34(data) 2890 2581 55
+            2898: 25(int64_t) CompositeExtract 2894 1
+                              Store 2897 2898
+            2899:      6(int) Load 8(invocation)
+            2900:   2589(ptr) AccessChain 34(data) 59 2581
+            2901: 26(i64vec4) Load 2900
+            2902:2599(i64vec3) VectorShuffle 2901 2901 0 1 2
+            2903:2599(i64vec3) GroupNonUniformSMax 42 InclusiveScan 2902
+            2904:   2582(ptr) AccessChain 34(data) 2899 2581 38
+            2905: 25(int64_t) CompositeExtract 2903 0
+                              Store 2904 2905
+            2906:   2582(ptr) AccessChain 34(data) 2899 2581 55
+            2907: 25(int64_t) CompositeExtract 2903 1
+                              Store 2906 2907
+            2908:   2582(ptr) AccessChain 34(data) 2899 2581 69
+            2909: 25(int64_t) CompositeExtract 2903 2
+                              Store 2908 2909
+            2910:      6(int) Load 8(invocation)
+            2911:   2589(ptr) AccessChain 34(data) 73 2581
+            2912: 26(i64vec4) Load 2911
+            2913: 26(i64vec4) GroupNonUniformSMax 42 InclusiveScan 2912
+            2914:   2589(ptr) AccessChain 34(data) 2910 2581
+                              Store 2914 2913
             2915:      6(int) Load 8(invocation)
-            2916:   2802(ptr) AccessChain 34(data) 57 2794
-            2917: 28(i64vec4) Load 2916
-            2918:2811(i64vec3) VectorShuffle 2917 2917 0 1 2
-            2919:2811(i64vec3) GroupNonUniformBitwiseAnd 42 Reduce 2918
-            2920:   2802(ptr) AccessChain 34(data) 2915 2794
-            2921: 28(i64vec4) Load 2920
-            2922: 28(i64vec4) VectorShuffle 2921 2919 4 5 6 3
-                              Store 2920 2922
-            2923:      6(int) Load 8(invocation)
-            2924:   2802(ptr) AccessChain 34(data) 67 2794
-            2925: 28(i64vec4) Load 2924
-            2926: 28(i64vec4) GroupNonUniformBitwiseAnd 42 Reduce 2925
-            2927:   2802(ptr) AccessChain 34(data) 2923 2794
-                              Store 2927 2926
-            2928:      6(int) Load 8(invocation)
-            2929:   2795(ptr) AccessChain 34(data) 37 2794 38
-            2930: 27(int64_t) Load 2929
-            2931: 27(int64_t) GroupNonUniformBitwiseOr 42 Reduce 2930
-            2932:   2795(ptr) AccessChain 34(data) 2928 2794 38
-                              Store 2932 2931
-            2933:      6(int) Load 8(invocation)
-            2934:   2802(ptr) AccessChain 34(data) 46 2794
-            2935: 28(i64vec4) Load 2934
-            2936:2801(i64vec2) VectorShuffle 2935 2935 0 1
-            2937:2801(i64vec2) GroupNonUniformBitwiseOr 42 Reduce 2936
-            2938:   2802(ptr) AccessChain 34(data) 2933 2794
-            2939: 28(i64vec4) Load 2938
-            2940: 28(i64vec4) VectorShuffle 2939 2937 4 5 2 3
-                              Store 2938 2940
-            2941:      6(int) Load 8(invocation)
-            2942:   2802(ptr) AccessChain 34(data) 57 2794
-            2943: 28(i64vec4) Load 2942
-            2944:2811(i64vec3) VectorShuffle 2943 2943 0 1 2
-            2945:2811(i64vec3) GroupNonUniformBitwiseOr 42 Reduce 2944
-            2946:   2802(ptr) AccessChain 34(data) 2941 2794
-            2947: 28(i64vec4) Load 2946
-            2948: 28(i64vec4) VectorShuffle 2947 2945 4 5 6 3
-                              Store 2946 2948
-            2949:      6(int) Load 8(invocation)
-            2950:   2802(ptr) AccessChain 34(data) 67 2794
-            2951: 28(i64vec4) Load 2950
-            2952: 28(i64vec4) GroupNonUniformBitwiseOr 42 Reduce 2951
-            2953:   2802(ptr) AccessChain 34(data) 2949 2794
-                              Store 2953 2952
-            2954:      6(int) Load 8(invocation)
-            2955:   2795(ptr) AccessChain 34(data) 37 2794 38
-            2956: 27(int64_t) Load 2955
-            2957: 27(int64_t) GroupNonUniformBitwiseXor 42 Reduce 2956
-            2958:   2795(ptr) AccessChain 34(data) 2954 2794 38
-                              Store 2958 2957
+            2916:   2582(ptr) AccessChain 34(data) 37 2581 38
+            2917: 25(int64_t) Load 2916
+            2918: 25(int64_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 2917
+            2919:   2582(ptr) AccessChain 34(data) 2915 2581 38
+                              Store 2919 2918
+            2920:      6(int) Load 8(invocation)
+            2921:   2589(ptr) AccessChain 34(data) 46 2581
+            2922: 26(i64vec4) Load 2921
+            2923:2588(i64vec2) VectorShuffle 2922 2922 0 1
+            2924:2588(i64vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 2923
+            2925:   2582(ptr) AccessChain 34(data) 2920 2581 38
+            2926: 25(int64_t) CompositeExtract 2924 0
+                              Store 2925 2926
+            2927:   2582(ptr) AccessChain 34(data) 2920 2581 55
+            2928: 25(int64_t) CompositeExtract 2924 1
+                              Store 2927 2928
+            2929:      6(int) Load 8(invocation)
+            2930:   2589(ptr) AccessChain 34(data) 59 2581
+            2931: 26(i64vec4) Load 2930
+            2932:2599(i64vec3) VectorShuffle 2931 2931 0 1 2
+            2933:2599(i64vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 2932
+            2934:   2582(ptr) AccessChain 34(data) 2929 2581 38
+            2935: 25(int64_t) CompositeExtract 2933 0
+                              Store 2934 2935
+            2936:   2582(ptr) AccessChain 34(data) 2929 2581 55
+            2937: 25(int64_t) CompositeExtract 2933 1
+                              Store 2936 2937
+            2938:   2582(ptr) AccessChain 34(data) 2929 2581 69
+            2939: 25(int64_t) CompositeExtract 2933 2
+                              Store 2938 2939
+            2940:      6(int) Load 8(invocation)
+            2941:   2589(ptr) AccessChain 34(data) 73 2581
+            2942: 26(i64vec4) Load 2941
+            2943: 26(i64vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 2942
+            2944:   2589(ptr) AccessChain 34(data) 2940 2581
+                              Store 2944 2943
+            2945:      6(int) Load 8(invocation)
+            2946:   2582(ptr) AccessChain 34(data) 37 2581 38
+            2947: 25(int64_t) Load 2946
+            2948: 25(int64_t) GroupNonUniformBitwiseOr 42 InclusiveScan 2947
+            2949:   2582(ptr) AccessChain 34(data) 2945 2581 38
+                              Store 2949 2948
+            2950:      6(int) Load 8(invocation)
+            2951:   2589(ptr) AccessChain 34(data) 46 2581
+            2952: 26(i64vec4) Load 2951
+            2953:2588(i64vec2) VectorShuffle 2952 2952 0 1
+            2954:2588(i64vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 2953
+            2955:   2582(ptr) AccessChain 34(data) 2950 2581 38
+            2956: 25(int64_t) CompositeExtract 2954 0
+                              Store 2955 2956
+            2957:   2582(ptr) AccessChain 34(data) 2950 2581 55
+            2958: 25(int64_t) CompositeExtract 2954 1
+                              Store 2957 2958
             2959:      6(int) Load 8(invocation)
-            2960:   2802(ptr) AccessChain 34(data) 46 2794
-            2961: 28(i64vec4) Load 2960
-            2962:2801(i64vec2) VectorShuffle 2961 2961 0 1
-            2963:2801(i64vec2) GroupNonUniformBitwiseXor 42 Reduce 2962
-            2964:   2802(ptr) AccessChain 34(data) 2959 2794
-            2965: 28(i64vec4) Load 2964
-            2966: 28(i64vec4) VectorShuffle 2965 2963 4 5 2 3
-                              Store 2964 2966
-            2967:      6(int) Load 8(invocation)
-            2968:   2802(ptr) AccessChain 34(data) 57 2794
-            2969: 28(i64vec4) Load 2968
-            2970:2811(i64vec3) VectorShuffle 2969 2969 0 1 2
-            2971:2811(i64vec3) GroupNonUniformBitwiseXor 42 Reduce 2970
-            2972:   2802(ptr) AccessChain 34(data) 2967 2794
-            2973: 28(i64vec4) Load 2972
-            2974: 28(i64vec4) VectorShuffle 2973 2971 4 5 6 3
-                              Store 2972 2974
+            2960:   2589(ptr) AccessChain 34(data) 59 2581
+            2961: 26(i64vec4) Load 2960
+            2962:2599(i64vec3) VectorShuffle 2961 2961 0 1 2
+            2963:2599(i64vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 2962
+            2964:   2582(ptr) AccessChain 34(data) 2959 2581 38
+            2965: 25(int64_t) CompositeExtract 2963 0
+                              Store 2964 2965
+            2966:   2582(ptr) AccessChain 34(data) 2959 2581 55
+            2967: 25(int64_t) CompositeExtract 2963 1
+                              Store 2966 2967
+            2968:   2582(ptr) AccessChain 34(data) 2959 2581 69
+            2969: 25(int64_t) CompositeExtract 2963 2
+                              Store 2968 2969
+            2970:      6(int) Load 8(invocation)
+            2971:   2589(ptr) AccessChain 34(data) 73 2581
+            2972: 26(i64vec4) Load 2971
+            2973: 26(i64vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 2972
+            2974:   2589(ptr) AccessChain 34(data) 2970 2581
+                              Store 2974 2973
             2975:      6(int) Load 8(invocation)
-            2976:   2802(ptr) AccessChain 34(data) 67 2794
-            2977: 28(i64vec4) Load 2976
-            2978: 28(i64vec4) GroupNonUniformBitwiseXor 42 Reduce 2977
-            2979:   2802(ptr) AccessChain 34(data) 2975 2794
+            2976:   2582(ptr) AccessChain 34(data) 37 2581 38
+            2977: 25(int64_t) Load 2976
+            2978: 25(int64_t) GroupNonUniformBitwiseXor 42 InclusiveScan 2977
+            2979:   2582(ptr) AccessChain 34(data) 2975 2581 38
                               Store 2979 2978
             2980:      6(int) Load 8(invocation)
-            2981:   2795(ptr) AccessChain 34(data) 37 2794 38
-            2982: 27(int64_t) Load 2981
-            2983: 27(int64_t) GroupNonUniformIAdd 42 InclusiveScan 2982
-            2984:   2795(ptr) AccessChain 34(data) 2980 2794 38
-                              Store 2984 2983
-            2985:      6(int) Load 8(invocation)
-            2986:   2802(ptr) AccessChain 34(data) 46 2794
-            2987: 28(i64vec4) Load 2986
-            2988:2801(i64vec2) VectorShuffle 2987 2987 0 1
-            2989:2801(i64vec2) GroupNonUniformIAdd 42 InclusiveScan 2988
-            2990:   2802(ptr) AccessChain 34(data) 2985 2794
-            2991: 28(i64vec4) Load 2990
-            2992: 28(i64vec4) VectorShuffle 2991 2989 4 5 2 3
-                              Store 2990 2992
-            2993:      6(int) Load 8(invocation)
-            2994:   2802(ptr) AccessChain 34(data) 57 2794
-            2995: 28(i64vec4) Load 2994
-            2996:2811(i64vec3) VectorShuffle 2995 2995 0 1 2
-            2997:2811(i64vec3) GroupNonUniformIAdd 42 InclusiveScan 2996
-            2998:   2802(ptr) AccessChain 34(data) 2993 2794
-            2999: 28(i64vec4) Load 2998
-            3000: 28(i64vec4) VectorShuffle 2999 2997 4 5 6 3
-                              Store 2998 3000
-            3001:      6(int) Load 8(invocation)
-            3002:   2802(ptr) AccessChain 34(data) 67 2794
-            3003: 28(i64vec4) Load 3002
-            3004: 28(i64vec4) GroupNonUniformIAdd 42 InclusiveScan 3003
-            3005:   2802(ptr) AccessChain 34(data) 3001 2794
-                              Store 3005 3004
-            3006:      6(int) Load 8(invocation)
-            3007:   2795(ptr) AccessChain 34(data) 37 2794 38
-            3008: 27(int64_t) Load 3007
-            3009: 27(int64_t) GroupNonUniformIMul 42 InclusiveScan 3008
-            3010:   2795(ptr) AccessChain 34(data) 3006 2794 38
-                              Store 3010 3009
-            3011:      6(int) Load 8(invocation)
-            3012:   2802(ptr) AccessChain 34(data) 46 2794
-            3013: 28(i64vec4) Load 3012
-            3014:2801(i64vec2) VectorShuffle 3013 3013 0 1
-            3015:2801(i64vec2) GroupNonUniformIMul 42 InclusiveScan 3014
-            3016:   2802(ptr) AccessChain 34(data) 3011 2794
-            3017: 28(i64vec4) Load 3016
-            3018: 28(i64vec4) VectorShuffle 3017 3015 4 5 2 3
-                              Store 3016 3018
+            2981:   2589(ptr) AccessChain 34(data) 46 2581
+            2982: 26(i64vec4) Load 2981
+            2983:2588(i64vec2) VectorShuffle 2982 2982 0 1
+            2984:2588(i64vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 2983
+            2985:   2582(ptr) AccessChain 34(data) 2980 2581 38
+            2986: 25(int64_t) CompositeExtract 2984 0
+                              Store 2985 2986
+            2987:   2582(ptr) AccessChain 34(data) 2980 2581 55
+            2988: 25(int64_t) CompositeExtract 2984 1
+                              Store 2987 2988
+            2989:      6(int) Load 8(invocation)
+            2990:   2589(ptr) AccessChain 34(data) 59 2581
+            2991: 26(i64vec4) Load 2990
+            2992:2599(i64vec3) VectorShuffle 2991 2991 0 1 2
+            2993:2599(i64vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 2992
+            2994:   2582(ptr) AccessChain 34(data) 2989 2581 38
+            2995: 25(int64_t) CompositeExtract 2993 0
+                              Store 2994 2995
+            2996:   2582(ptr) AccessChain 34(data) 2989 2581 55
+            2997: 25(int64_t) CompositeExtract 2993 1
+                              Store 2996 2997
+            2998:   2582(ptr) AccessChain 34(data) 2989 2581 69
+            2999: 25(int64_t) CompositeExtract 2993 2
+                              Store 2998 2999
+            3000:      6(int) Load 8(invocation)
+            3001:   2589(ptr) AccessChain 34(data) 73 2581
+            3002: 26(i64vec4) Load 3001
+            3003: 26(i64vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 3002
+            3004:   2589(ptr) AccessChain 34(data) 3000 2581
+                              Store 3004 3003
+            3005:      6(int) Load 8(invocation)
+            3006:   2582(ptr) AccessChain 34(data) 37 2581 38
+            3007: 25(int64_t) Load 3006
+            3008: 25(int64_t) GroupNonUniformIAdd 42 ExclusiveScan 3007
+            3009:   2582(ptr) AccessChain 34(data) 3005 2581 38
+                              Store 3009 3008
+            3010:      6(int) Load 8(invocation)
+            3011:   2589(ptr) AccessChain 34(data) 46 2581
+            3012: 26(i64vec4) Load 3011
+            3013:2588(i64vec2) VectorShuffle 3012 3012 0 1
+            3014:2588(i64vec2) GroupNonUniformIAdd 42 ExclusiveScan 3013
+            3015:   2582(ptr) AccessChain 34(data) 3010 2581 38
+            3016: 25(int64_t) CompositeExtract 3014 0
+                              Store 3015 3016
+            3017:   2582(ptr) AccessChain 34(data) 3010 2581 55
+            3018: 25(int64_t) CompositeExtract 3014 1
+                              Store 3017 3018
             3019:      6(int) Load 8(invocation)
-            3020:   2802(ptr) AccessChain 34(data) 57 2794
-            3021: 28(i64vec4) Load 3020
-            3022:2811(i64vec3) VectorShuffle 3021 3021 0 1 2
-            3023:2811(i64vec3) GroupNonUniformIMul 42 InclusiveScan 3022
-            3024:   2802(ptr) AccessChain 34(data) 3019 2794
-            3025: 28(i64vec4) Load 3024
-            3026: 28(i64vec4) VectorShuffle 3025 3023 4 5 6 3
-                              Store 3024 3026
-            3027:      6(int) Load 8(invocation)
-            3028:   2802(ptr) AccessChain 34(data) 67 2794
-            3029: 28(i64vec4) Load 3028
-            3030: 28(i64vec4) GroupNonUniformIMul 42 InclusiveScan 3029
-            3031:   2802(ptr) AccessChain 34(data) 3027 2794
-                              Store 3031 3030
-            3032:      6(int) Load 8(invocation)
-            3033:   2795(ptr) AccessChain 34(data) 37 2794 38
-            3034: 27(int64_t) Load 3033
-            3035: 27(int64_t) GroupNonUniformUMin 42 InclusiveScan 3034
-            3036:   2795(ptr) AccessChain 34(data) 3032 2794 38
-                              Store 3036 3035
-            3037:      6(int) Load 8(invocation)
-            3038:   2802(ptr) AccessChain 34(data) 46 2794
-            3039: 28(i64vec4) Load 3038
-            3040:2801(i64vec2) VectorShuffle 3039 3039 0 1
-            3041:2801(i64vec2) GroupNonUniformUMin 42 InclusiveScan 3040
-            3042:   2802(ptr) AccessChain 34(data) 3037 2794
-            3043: 28(i64vec4) Load 3042
-            3044: 28(i64vec4) VectorShuffle 3043 3041 4 5 2 3
-                              Store 3042 3044
-            3045:      6(int) Load 8(invocation)
-            3046:   2802(ptr) AccessChain 34(data) 57 2794
-            3047: 28(i64vec4) Load 3046
-            3048:2811(i64vec3) VectorShuffle 3047 3047 0 1 2
-            3049:2811(i64vec3) GroupNonUniformUMin 42 InclusiveScan 3048
-            3050:   2802(ptr) AccessChain 34(data) 3045 2794
-            3051: 28(i64vec4) Load 3050
-            3052: 28(i64vec4) VectorShuffle 3051 3049 4 5 6 3
-                              Store 3050 3052
-            3053:      6(int) Load 8(invocation)
-            3054:   2802(ptr) AccessChain 34(data) 67 2794
-            3055: 28(i64vec4) Load 3054
-            3056: 28(i64vec4) GroupNonUniformUMin 42 InclusiveScan 3055
-            3057:   2802(ptr) AccessChain 34(data) 3053 2794
-                              Store 3057 3056
-            3058:      6(int) Load 8(invocation)
-            3059:   2795(ptr) AccessChain 34(data) 37 2794 38
-            3060: 27(int64_t) Load 3059
-            3061: 27(int64_t) GroupNonUniformUMax 42 InclusiveScan 3060
-            3062:   2795(ptr) AccessChain 34(data) 3058 2794 38
-                              Store 3062 3061
-            3063:      6(int) Load 8(invocation)
-            3064:   2802(ptr) AccessChain 34(data) 46 2794
-            3065: 28(i64vec4) Load 3064
-            3066:2801(i64vec2) VectorShuffle 3065 3065 0 1
-            3067:2801(i64vec2) GroupNonUniformUMax 42 InclusiveScan 3066
-            3068:   2802(ptr) AccessChain 34(data) 3063 2794
-            3069: 28(i64vec4) Load 3068
-            3070: 28(i64vec4) VectorShuffle 3069 3067 4 5 2 3
-                              Store 3068 3070
-            3071:      6(int) Load 8(invocation)
-            3072:   2802(ptr) AccessChain 34(data) 57 2794
-            3073: 28(i64vec4) Load 3072
-            3074:2811(i64vec3) VectorShuffle 3073 3073 0 1 2
-            3075:2811(i64vec3) GroupNonUniformUMax 42 InclusiveScan 3074
-            3076:   2802(ptr) AccessChain 34(data) 3071 2794
-            3077: 28(i64vec4) Load 3076
-            3078: 28(i64vec4) VectorShuffle 3077 3075 4 5 6 3
-                              Store 3076 3078
+            3020:   2589(ptr) AccessChain 34(data) 59 2581
+            3021: 26(i64vec4) Load 3020
+            3022:2599(i64vec3) VectorShuffle 3021 3021 0 1 2
+            3023:2599(i64vec3) GroupNonUniformIAdd 42 ExclusiveScan 3022
+            3024:   2582(ptr) AccessChain 34(data) 3019 2581 38
+            3025: 25(int64_t) CompositeExtract 3023 0
+                              Store 3024 3025
+            3026:   2582(ptr) AccessChain 34(data) 3019 2581 55
+            3027: 25(int64_t) CompositeExtract 3023 1
+                              Store 3026 3027
+            3028:   2582(ptr) AccessChain 34(data) 3019 2581 69
+            3029: 25(int64_t) CompositeExtract 3023 2
+                              Store 3028 3029
+            3030:      6(int) Load 8(invocation)
+            3031:   2589(ptr) AccessChain 34(data) 73 2581
+            3032: 26(i64vec4) Load 3031
+            3033: 26(i64vec4) GroupNonUniformIAdd 42 ExclusiveScan 3032
+            3034:   2589(ptr) AccessChain 34(data) 3030 2581
+                              Store 3034 3033
+            3035:      6(int) Load 8(invocation)
+            3036:   2582(ptr) AccessChain 34(data) 37 2581 38
+            3037: 25(int64_t) Load 3036
+            3038: 25(int64_t) GroupNonUniformIMul 42 ExclusiveScan 3037
+            3039:   2582(ptr) AccessChain 34(data) 3035 2581 38
+                              Store 3039 3038
+            3040:      6(int) Load 8(invocation)
+            3041:   2589(ptr) AccessChain 34(data) 46 2581
+            3042: 26(i64vec4) Load 3041
+            3043:2588(i64vec2) VectorShuffle 3042 3042 0 1
+            3044:2588(i64vec2) GroupNonUniformIMul 42 ExclusiveScan 3043
+            3045:   2582(ptr) AccessChain 34(data) 3040 2581 38
+            3046: 25(int64_t) CompositeExtract 3044 0
+                              Store 3045 3046
+            3047:   2582(ptr) AccessChain 34(data) 3040 2581 55
+            3048: 25(int64_t) CompositeExtract 3044 1
+                              Store 3047 3048
+            3049:      6(int) Load 8(invocation)
+            3050:   2589(ptr) AccessChain 34(data) 59 2581
+            3051: 26(i64vec4) Load 3050
+            3052:2599(i64vec3) VectorShuffle 3051 3051 0 1 2
+            3053:2599(i64vec3) GroupNonUniformIMul 42 ExclusiveScan 3052
+            3054:   2582(ptr) AccessChain 34(data) 3049 2581 38
+            3055: 25(int64_t) CompositeExtract 3053 0
+                              Store 3054 3055
+            3056:   2582(ptr) AccessChain 34(data) 3049 2581 55
+            3057: 25(int64_t) CompositeExtract 3053 1
+                              Store 3056 3057
+            3058:   2582(ptr) AccessChain 34(data) 3049 2581 69
+            3059: 25(int64_t) CompositeExtract 3053 2
+                              Store 3058 3059
+            3060:      6(int) Load 8(invocation)
+            3061:   2589(ptr) AccessChain 34(data) 73 2581
+            3062: 26(i64vec4) Load 3061
+            3063: 26(i64vec4) GroupNonUniformIMul 42 ExclusiveScan 3062
+            3064:   2589(ptr) AccessChain 34(data) 3060 2581
+                              Store 3064 3063
+            3065:      6(int) Load 8(invocation)
+            3066:   2582(ptr) AccessChain 34(data) 37 2581 38
+            3067: 25(int64_t) Load 3066
+            3068: 25(int64_t) GroupNonUniformSMin 42 ExclusiveScan 3067
+            3069:   2582(ptr) AccessChain 34(data) 3065 2581 38
+                              Store 3069 3068
+            3070:      6(int) Load 8(invocation)
+            3071:   2589(ptr) AccessChain 34(data) 46 2581
+            3072: 26(i64vec4) Load 3071
+            3073:2588(i64vec2) VectorShuffle 3072 3072 0 1
+            3074:2588(i64vec2) GroupNonUniformSMin 42 ExclusiveScan 3073
+            3075:   2582(ptr) AccessChain 34(data) 3070 2581 38
+            3076: 25(int64_t) CompositeExtract 3074 0
+                              Store 3075 3076
+            3077:   2582(ptr) AccessChain 34(data) 3070 2581 55
+            3078: 25(int64_t) CompositeExtract 3074 1
+                              Store 3077 3078
             3079:      6(int) Load 8(invocation)
-            3080:   2802(ptr) AccessChain 34(data) 67 2794
-            3081: 28(i64vec4) Load 3080
-            3082: 28(i64vec4) GroupNonUniformUMax 42 InclusiveScan 3081
-            3083:   2802(ptr) AccessChain 34(data) 3079 2794
-                              Store 3083 3082
-            3084:      6(int) Load 8(invocation)
-            3085:   2795(ptr) AccessChain 34(data) 37 2794 38
-            3086: 27(int64_t) Load 3085
-            3087: 27(int64_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 3086
-            3088:   2795(ptr) AccessChain 34(data) 3084 2794 38
-                              Store 3088 3087
-            3089:      6(int) Load 8(invocation)
-            3090:   2802(ptr) AccessChain 34(data) 46 2794
-            3091: 28(i64vec4) Load 3090
-            3092:2801(i64vec2) VectorShuffle 3091 3091 0 1
-            3093:2801(i64vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 3092
-            3094:   2802(ptr) AccessChain 34(data) 3089 2794
-            3095: 28(i64vec4) Load 3094
-            3096: 28(i64vec4) VectorShuffle 3095 3093 4 5 2 3
-                              Store 3094 3096
-            3097:      6(int) Load 8(invocation)
-            3098:   2802(ptr) AccessChain 34(data) 57 2794
-            3099: 28(i64vec4) Load 3098
-            3100:2811(i64vec3) VectorShuffle 3099 3099 0 1 2
-            3101:2811(i64vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 3100
-            3102:   2802(ptr) AccessChain 34(data) 3097 2794
-            3103: 28(i64vec4) Load 3102
-            3104: 28(i64vec4) VectorShuffle 3103 3101 4 5 6 3
-                              Store 3102 3104
-            3105:      6(int) Load 8(invocation)
-            3106:   2802(ptr) AccessChain 34(data) 67 2794
-            3107: 28(i64vec4) Load 3106
-            3108: 28(i64vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 3107
-            3109:   2802(ptr) AccessChain 34(data) 3105 2794
-                              Store 3109 3108
-            3110:      6(int) Load 8(invocation)
-            3111:   2795(ptr) AccessChain 34(data) 37 2794 38
-            3112: 27(int64_t) Load 3111
-            3113: 27(int64_t) GroupNonUniformBitwiseOr 42 InclusiveScan 3112
-            3114:   2795(ptr) AccessChain 34(data) 3110 2794 38
-                              Store 3114 3113
-            3115:      6(int) Load 8(invocation)
-            3116:   2802(ptr) AccessChain 34(data) 46 2794
-            3117: 28(i64vec4) Load 3116
-            3118:2801(i64vec2) VectorShuffle 3117 3117 0 1
-            3119:2801(i64vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 3118
-            3120:   2802(ptr) AccessChain 34(data) 3115 2794
-            3121: 28(i64vec4) Load 3120
-            3122: 28(i64vec4) VectorShuffle 3121 3119 4 5 2 3
-                              Store 3120 3122
-            3123:      6(int) Load 8(invocation)
-            3124:   2802(ptr) AccessChain 34(data) 57 2794
-            3125: 28(i64vec4) Load 3124
-            3126:2811(i64vec3) VectorShuffle 3125 3125 0 1 2
-            3127:2811(i64vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 3126
-            3128:   2802(ptr) AccessChain 34(data) 3123 2794
-            3129: 28(i64vec4) Load 3128
-            3130: 28(i64vec4) VectorShuffle 3129 3127 4 5 6 3
-                              Store 3128 3130
-            3131:      6(int) Load 8(invocation)
-            3132:   2802(ptr) AccessChain 34(data) 67 2794
-            3133: 28(i64vec4) Load 3132
-            3134: 28(i64vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 3133
-            3135:   2802(ptr) AccessChain 34(data) 3131 2794
-                              Store 3135 3134
-            3136:      6(int) Load 8(invocation)
-            3137:   2795(ptr) AccessChain 34(data) 37 2794 38
-            3138: 27(int64_t) Load 3137
-            3139: 27(int64_t) GroupNonUniformBitwiseXor 42 InclusiveScan 3138
-            3140:   2795(ptr) AccessChain 34(data) 3136 2794 38
-                              Store 3140 3139
-            3141:      6(int) Load 8(invocation)
-            3142:   2802(ptr) AccessChain 34(data) 46 2794
-            3143: 28(i64vec4) Load 3142
-            3144:2801(i64vec2) VectorShuffle 3143 3143 0 1
-            3145:2801(i64vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 3144
-            3146:   2802(ptr) AccessChain 34(data) 3141 2794
-            3147: 28(i64vec4) Load 3146
-            3148: 28(i64vec4) VectorShuffle 3147 3145 4 5 2 3
-                              Store 3146 3148
-            3149:      6(int) Load 8(invocation)
-            3150:   2802(ptr) AccessChain 34(data) 57 2794
-            3151: 28(i64vec4) Load 3150
-            3152:2811(i64vec3) VectorShuffle 3151 3151 0 1 2
-            3153:2811(i64vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 3152
-            3154:   2802(ptr) AccessChain 34(data) 3149 2794
-            3155: 28(i64vec4) Load 3154
-            3156: 28(i64vec4) VectorShuffle 3155 3153 4 5 6 3
-                              Store 3154 3156
-            3157:      6(int) Load 8(invocation)
-            3158:   2802(ptr) AccessChain 34(data) 67 2794
-            3159: 28(i64vec4) Load 3158
-            3160: 28(i64vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 3159
-            3161:   2802(ptr) AccessChain 34(data) 3157 2794
-                              Store 3161 3160
-            3162:      6(int) Load 8(invocation)
-            3163:   2795(ptr) AccessChain 34(data) 37 2794 38
-            3164: 27(int64_t) Load 3163
-            3165: 27(int64_t) GroupNonUniformIAdd 42 ExclusiveScan 3164
-            3166:   2795(ptr) AccessChain 34(data) 3162 2794 38
-                              Store 3166 3165
-            3167:      6(int) Load 8(invocation)
-            3168:   2802(ptr) AccessChain 34(data) 46 2794
-            3169: 28(i64vec4) Load 3168
-            3170:2801(i64vec2) VectorShuffle 3169 3169 0 1
-            3171:2801(i64vec2) GroupNonUniformIAdd 42 ExclusiveScan 3170
-            3172:   2802(ptr) AccessChain 34(data) 3167 2794
-            3173: 28(i64vec4) Load 3172
-            3174: 28(i64vec4) VectorShuffle 3173 3171 4 5 2 3
-                              Store 3172 3174
-            3175:      6(int) Load 8(invocation)
-            3176:   2802(ptr) AccessChain 34(data) 57 2794
-            3177: 28(i64vec4) Load 3176
-            3178:2811(i64vec3) VectorShuffle 3177 3177 0 1 2
-            3179:2811(i64vec3) GroupNonUniformIAdd 42 ExclusiveScan 3178
-            3180:   2802(ptr) AccessChain 34(data) 3175 2794
-            3181: 28(i64vec4) Load 3180
-            3182: 28(i64vec4) VectorShuffle 3181 3179 4 5 6 3
-                              Store 3180 3182
-            3183:      6(int) Load 8(invocation)
-            3184:   2802(ptr) AccessChain 34(data) 67 2794
-            3185: 28(i64vec4) Load 3184
-            3186: 28(i64vec4) GroupNonUniformIAdd 42 ExclusiveScan 3185
-            3187:   2802(ptr) AccessChain 34(data) 3183 2794
-                              Store 3187 3186
-            3188:      6(int) Load 8(invocation)
-            3189:   2795(ptr) AccessChain 34(data) 37 2794 38
-            3190: 27(int64_t) Load 3189
-            3191: 27(int64_t) GroupNonUniformIMul 42 ExclusiveScan 3190
-            3192:   2795(ptr) AccessChain 34(data) 3188 2794 38
-                              Store 3192 3191
-            3193:      6(int) Load 8(invocation)
-            3194:   2802(ptr) AccessChain 34(data) 46 2794
-            3195: 28(i64vec4) Load 3194
-            3196:2801(i64vec2) VectorShuffle 3195 3195 0 1
-            3197:2801(i64vec2) GroupNonUniformIMul 42 ExclusiveScan 3196
-            3198:   2802(ptr) AccessChain 34(data) 3193 2794
-            3199: 28(i64vec4) Load 3198
-            3200: 28(i64vec4) VectorShuffle 3199 3197 4 5 2 3
-                              Store 3198 3200
-            3201:      6(int) Load 8(invocation)
-            3202:   2802(ptr) AccessChain 34(data) 57 2794
-            3203: 28(i64vec4) Load 3202
-            3204:2811(i64vec3) VectorShuffle 3203 3203 0 1 2
-            3205:2811(i64vec3) GroupNonUniformIMul 42 ExclusiveScan 3204
-            3206:   2802(ptr) AccessChain 34(data) 3201 2794
-            3207: 28(i64vec4) Load 3206
-            3208: 28(i64vec4) VectorShuffle 3207 3205 4 5 6 3
-                              Store 3206 3208
-            3209:      6(int) Load 8(invocation)
-            3210:   2802(ptr) AccessChain 34(data) 67 2794
-            3211: 28(i64vec4) Load 3210
-            3212: 28(i64vec4) GroupNonUniformIMul 42 ExclusiveScan 3211
-            3213:   2802(ptr) AccessChain 34(data) 3209 2794
-                              Store 3213 3212
-            3214:      6(int) Load 8(invocation)
-            3215:   2795(ptr) AccessChain 34(data) 37 2794 38
-            3216: 27(int64_t) Load 3215
-            3217: 27(int64_t) GroupNonUniformUMin 42 ExclusiveScan 3216
-            3218:   2795(ptr) AccessChain 34(data) 3214 2794 38
-                              Store 3218 3217
-            3219:      6(int) Load 8(invocation)
-            3220:   2802(ptr) AccessChain 34(data) 46 2794
-            3221: 28(i64vec4) Load 3220
-            3222:2801(i64vec2) VectorShuffle 3221 3221 0 1
-            3223:2801(i64vec2) GroupNonUniformUMin 42 ExclusiveScan 3222
-            3224:   2802(ptr) AccessChain 34(data) 3219 2794
-            3225: 28(i64vec4) Load 3224
-            3226: 28(i64vec4) VectorShuffle 3225 3223 4 5 2 3
-                              Store 3224 3226
-            3227:      6(int) Load 8(invocation)
-            3228:   2802(ptr) AccessChain 34(data) 57 2794
-            3229: 28(i64vec4) Load 3228
-            3230:2811(i64vec3) VectorShuffle 3229 3229 0 1 2
-            3231:2811(i64vec3) GroupNonUniformUMin 42 ExclusiveScan 3230
-            3232:   2802(ptr) AccessChain 34(data) 3227 2794
-            3233: 28(i64vec4) Load 3232
-            3234: 28(i64vec4) VectorShuffle 3233 3231 4 5 6 3
-                              Store 3232 3234
-            3235:      6(int) Load 8(invocation)
-            3236:   2802(ptr) AccessChain 34(data) 67 2794
-            3237: 28(i64vec4) Load 3236
-            3238: 28(i64vec4) GroupNonUniformUMin 42 ExclusiveScan 3237
-            3239:   2802(ptr) AccessChain 34(data) 3235 2794
-                              Store 3239 3238
-            3240:      6(int) Load 8(invocation)
-            3241:   2795(ptr) AccessChain 34(data) 37 2794 38
-            3242: 27(int64_t) Load 3241
-            3243: 27(int64_t) GroupNonUniformUMax 42 ExclusiveScan 3242
-            3244:   2795(ptr) AccessChain 34(data) 3240 2794 38
-                              Store 3244 3243
+            3080:   2589(ptr) AccessChain 34(data) 59 2581
+            3081: 26(i64vec4) Load 3080
+            3082:2599(i64vec3) VectorShuffle 3081 3081 0 1 2
+            3083:2599(i64vec3) GroupNonUniformSMin 42 ExclusiveScan 3082
+            3084:   2582(ptr) AccessChain 34(data) 3079 2581 38
+            3085: 25(int64_t) CompositeExtract 3083 0
+                              Store 3084 3085
+            3086:   2582(ptr) AccessChain 34(data) 3079 2581 55
+            3087: 25(int64_t) CompositeExtract 3083 1
+                              Store 3086 3087
+            3088:   2582(ptr) AccessChain 34(data) 3079 2581 69
+            3089: 25(int64_t) CompositeExtract 3083 2
+                              Store 3088 3089
+            3090:      6(int) Load 8(invocation)
+            3091:   2589(ptr) AccessChain 34(data) 73 2581
+            3092: 26(i64vec4) Load 3091
+            3093: 26(i64vec4) GroupNonUniformSMin 42 ExclusiveScan 3092
+            3094:   2589(ptr) AccessChain 34(data) 3090 2581
+                              Store 3094 3093
+            3095:      6(int) Load 8(invocation)
+            3096:   2582(ptr) AccessChain 34(data) 37 2581 38
+            3097: 25(int64_t) Load 3096
+            3098: 25(int64_t) GroupNonUniformSMax 42 ExclusiveScan 3097
+            3099:   2582(ptr) AccessChain 34(data) 3095 2581 38
+                              Store 3099 3098
+            3100:      6(int) Load 8(invocation)
+            3101:   2589(ptr) AccessChain 34(data) 46 2581
+            3102: 26(i64vec4) Load 3101
+            3103:2588(i64vec2) VectorShuffle 3102 3102 0 1
+            3104:2588(i64vec2) GroupNonUniformSMax 42 ExclusiveScan 3103
+            3105:   2582(ptr) AccessChain 34(data) 3100 2581 38
+            3106: 25(int64_t) CompositeExtract 3104 0
+                              Store 3105 3106
+            3107:   2582(ptr) AccessChain 34(data) 3100 2581 55
+            3108: 25(int64_t) CompositeExtract 3104 1
+                              Store 3107 3108
+            3109:      6(int) Load 8(invocation)
+            3110:   2589(ptr) AccessChain 34(data) 59 2581
+            3111: 26(i64vec4) Load 3110
+            3112:2599(i64vec3) VectorShuffle 3111 3111 0 1 2
+            3113:2599(i64vec3) GroupNonUniformSMax 42 ExclusiveScan 3112
+            3114:   2582(ptr) AccessChain 34(data) 3109 2581 38
+            3115: 25(int64_t) CompositeExtract 3113 0
+                              Store 3114 3115
+            3116:   2582(ptr) AccessChain 34(data) 3109 2581 55
+            3117: 25(int64_t) CompositeExtract 3113 1
+                              Store 3116 3117
+            3118:   2582(ptr) AccessChain 34(data) 3109 2581 69
+            3119: 25(int64_t) CompositeExtract 3113 2
+                              Store 3118 3119
+            3120:      6(int) Load 8(invocation)
+            3121:   2589(ptr) AccessChain 34(data) 73 2581
+            3122: 26(i64vec4) Load 3121
+            3123: 26(i64vec4) GroupNonUniformSMax 42 ExclusiveScan 3122
+            3124:   2589(ptr) AccessChain 34(data) 3120 2581
+                              Store 3124 3123
+            3125:      6(int) Load 8(invocation)
+            3126:   2582(ptr) AccessChain 34(data) 37 2581 38
+            3127: 25(int64_t) Load 3126
+            3128: 25(int64_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3127
+            3129:   2582(ptr) AccessChain 34(data) 3125 2581 38
+                              Store 3129 3128
+            3130:      6(int) Load 8(invocation)
+            3131:   2589(ptr) AccessChain 34(data) 46 2581
+            3132: 26(i64vec4) Load 3131
+            3133:2588(i64vec2) VectorShuffle 3132 3132 0 1
+            3134:2588(i64vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3133
+            3135:   2582(ptr) AccessChain 34(data) 3130 2581 38
+            3136: 25(int64_t) CompositeExtract 3134 0
+                              Store 3135 3136
+            3137:   2582(ptr) AccessChain 34(data) 3130 2581 55
+            3138: 25(int64_t) CompositeExtract 3134 1
+                              Store 3137 3138
+            3139:      6(int) Load 8(invocation)
+            3140:   2589(ptr) AccessChain 34(data) 59 2581
+            3141: 26(i64vec4) Load 3140
+            3142:2599(i64vec3) VectorShuffle 3141 3141 0 1 2
+            3143:2599(i64vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3142
+            3144:   2582(ptr) AccessChain 34(data) 3139 2581 38
+            3145: 25(int64_t) CompositeExtract 3143 0
+                              Store 3144 3145
+            3146:   2582(ptr) AccessChain 34(data) 3139 2581 55
+            3147: 25(int64_t) CompositeExtract 3143 1
+                              Store 3146 3147
+            3148:   2582(ptr) AccessChain 34(data) 3139 2581 69
+            3149: 25(int64_t) CompositeExtract 3143 2
+                              Store 3148 3149
+            3150:      6(int) Load 8(invocation)
+            3151:   2589(ptr) AccessChain 34(data) 73 2581
+            3152: 26(i64vec4) Load 3151
+            3153: 26(i64vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3152
+            3154:   2589(ptr) AccessChain 34(data) 3150 2581
+                              Store 3154 3153
+            3155:      6(int) Load 8(invocation)
+            3156:   2582(ptr) AccessChain 34(data) 37 2581 38
+            3157: 25(int64_t) Load 3156
+            3158: 25(int64_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 3157
+            3159:   2582(ptr) AccessChain 34(data) 3155 2581 38
+                              Store 3159 3158
+            3160:      6(int) Load 8(invocation)
+            3161:   2589(ptr) AccessChain 34(data) 46 2581
+            3162: 26(i64vec4) Load 3161
+            3163:2588(i64vec2) VectorShuffle 3162 3162 0 1
+            3164:2588(i64vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 3163
+            3165:   2582(ptr) AccessChain 34(data) 3160 2581 38
+            3166: 25(int64_t) CompositeExtract 3164 0
+                              Store 3165 3166
+            3167:   2582(ptr) AccessChain 34(data) 3160 2581 55
+            3168: 25(int64_t) CompositeExtract 3164 1
+                              Store 3167 3168
+            3169:      6(int) Load 8(invocation)
+            3170:   2589(ptr) AccessChain 34(data) 59 2581
+            3171: 26(i64vec4) Load 3170
+            3172:2599(i64vec3) VectorShuffle 3171 3171 0 1 2
+            3173:2599(i64vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 3172
+            3174:   2582(ptr) AccessChain 34(data) 3169 2581 38
+            3175: 25(int64_t) CompositeExtract 3173 0
+                              Store 3174 3175
+            3176:   2582(ptr) AccessChain 34(data) 3169 2581 55
+            3177: 25(int64_t) CompositeExtract 3173 1
+                              Store 3176 3177
+            3178:   2582(ptr) AccessChain 34(data) 3169 2581 69
+            3179: 25(int64_t) CompositeExtract 3173 2
+                              Store 3178 3179
+            3180:      6(int) Load 8(invocation)
+            3181:   2589(ptr) AccessChain 34(data) 73 2581
+            3182: 26(i64vec4) Load 3181
+            3183: 26(i64vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 3182
+            3184:   2589(ptr) AccessChain 34(data) 3180 2581
+                              Store 3184 3183
+            3185:      6(int) Load 8(invocation)
+            3186:   2582(ptr) AccessChain 34(data) 37 2581 38
+            3187: 25(int64_t) Load 3186
+            3188: 25(int64_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 3187
+            3189:   2582(ptr) AccessChain 34(data) 3185 2581 38
+                              Store 3189 3188
+            3190:      6(int) Load 8(invocation)
+            3191:   2589(ptr) AccessChain 34(data) 46 2581
+            3192: 26(i64vec4) Load 3191
+            3193:2588(i64vec2) VectorShuffle 3192 3192 0 1
+            3194:2588(i64vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 3193
+            3195:   2582(ptr) AccessChain 34(data) 3190 2581 38
+            3196: 25(int64_t) CompositeExtract 3194 0
+                              Store 3195 3196
+            3197:   2582(ptr) AccessChain 34(data) 3190 2581 55
+            3198: 25(int64_t) CompositeExtract 3194 1
+                              Store 3197 3198
+            3199:      6(int) Load 8(invocation)
+            3200:   2589(ptr) AccessChain 34(data) 59 2581
+            3201: 26(i64vec4) Load 3200
+            3202:2599(i64vec3) VectorShuffle 3201 3201 0 1 2
+            3203:2599(i64vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 3202
+            3204:   2582(ptr) AccessChain 34(data) 3199 2581 38
+            3205: 25(int64_t) CompositeExtract 3203 0
+                              Store 3204 3205
+            3206:   2582(ptr) AccessChain 34(data) 3199 2581 55
+            3207: 25(int64_t) CompositeExtract 3203 1
+                              Store 3206 3207
+            3208:   2582(ptr) AccessChain 34(data) 3199 2581 69
+            3209: 25(int64_t) CompositeExtract 3203 2
+                              Store 3208 3209
+            3210:      6(int) Load 8(invocation)
+            3211:   2589(ptr) AccessChain 34(data) 73 2581
+            3212: 26(i64vec4) Load 3211
+            3213: 26(i64vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 3212
+            3214:   2589(ptr) AccessChain 34(data) 3210 2581
+                              Store 3214 3213
+            3215:      6(int) Load 8(invocation)
+            3218:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3219: 27(int64_t) Load 3218
+            3220: 27(int64_t) GroupNonUniformIAdd 42 Reduce 3219
+            3221:   3217(ptr) AccessChain 34(data) 3215 3216 38
+                              Store 3221 3220
+            3222:      6(int) Load 8(invocation)
+            3225:   3224(ptr) AccessChain 34(data) 46 3216
+            3226: 28(i64vec4) Load 3225
+            3227:3223(i64vec2) VectorShuffle 3226 3226 0 1
+            3228:3223(i64vec2) GroupNonUniformIAdd 42 Reduce 3227
+            3229:   3217(ptr) AccessChain 34(data) 3222 3216 38
+            3230: 27(int64_t) CompositeExtract 3228 0
+                              Store 3229 3230
+            3231:   3217(ptr) AccessChain 34(data) 3222 3216 55
+            3232: 27(int64_t) CompositeExtract 3228 1
+                              Store 3231 3232
+            3233:      6(int) Load 8(invocation)
+            3235:   3224(ptr) AccessChain 34(data) 59 3216
+            3236: 28(i64vec4) Load 3235
+            3237:3234(i64vec3) VectorShuffle 3236 3236 0 1 2
+            3238:3234(i64vec3) GroupNonUniformIAdd 42 Reduce 3237
+            3239:   3217(ptr) AccessChain 34(data) 3233 3216 38
+            3240: 27(int64_t) CompositeExtract 3238 0
+                              Store 3239 3240
+            3241:   3217(ptr) AccessChain 34(data) 3233 3216 55
+            3242: 27(int64_t) CompositeExtract 3238 1
+                              Store 3241 3242
+            3243:   3217(ptr) AccessChain 34(data) 3233 3216 69
+            3244: 27(int64_t) CompositeExtract 3238 2
+                              Store 3243 3244
             3245:      6(int) Load 8(invocation)
-            3246:   2802(ptr) AccessChain 34(data) 46 2794
+            3246:   3224(ptr) AccessChain 34(data) 73 3216
             3247: 28(i64vec4) Load 3246
-            3248:2801(i64vec2) VectorShuffle 3247 3247 0 1
-            3249:2801(i64vec2) GroupNonUniformUMax 42 ExclusiveScan 3248
-            3250:   2802(ptr) AccessChain 34(data) 3245 2794
-            3251: 28(i64vec4) Load 3250
-            3252: 28(i64vec4) VectorShuffle 3251 3249 4 5 2 3
-                              Store 3250 3252
-            3253:      6(int) Load 8(invocation)
-            3254:   2802(ptr) AccessChain 34(data) 57 2794
-            3255: 28(i64vec4) Load 3254
-            3256:2811(i64vec3) VectorShuffle 3255 3255 0 1 2
-            3257:2811(i64vec3) GroupNonUniformUMax 42 ExclusiveScan 3256
-            3258:   2802(ptr) AccessChain 34(data) 3253 2794
-            3259: 28(i64vec4) Load 3258
-            3260: 28(i64vec4) VectorShuffle 3259 3257 4 5 6 3
-                              Store 3258 3260
-            3261:      6(int) Load 8(invocation)
-            3262:   2802(ptr) AccessChain 34(data) 67 2794
-            3263: 28(i64vec4) Load 3262
-            3264: 28(i64vec4) GroupNonUniformUMax 42 ExclusiveScan 3263
-            3265:   2802(ptr) AccessChain 34(data) 3261 2794
-                              Store 3265 3264
-            3266:      6(int) Load 8(invocation)
-            3267:   2795(ptr) AccessChain 34(data) 37 2794 38
-            3268: 27(int64_t) Load 3267
-            3269: 27(int64_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3268
-            3270:   2795(ptr) AccessChain 34(data) 3266 2794 38
-                              Store 3270 3269
-            3271:      6(int) Load 8(invocation)
-            3272:   2802(ptr) AccessChain 34(data) 46 2794
-            3273: 28(i64vec4) Load 3272
-            3274:2801(i64vec2) VectorShuffle 3273 3273 0 1
-            3275:2801(i64vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3274
-            3276:   2802(ptr) AccessChain 34(data) 3271 2794
+            3248: 28(i64vec4) GroupNonUniformIAdd 42 Reduce 3247
+            3249:   3224(ptr) AccessChain 34(data) 3245 3216
+                              Store 3249 3248
+            3250:      6(int) Load 8(invocation)
+            3251:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3252: 27(int64_t) Load 3251
+            3253: 27(int64_t) GroupNonUniformIMul 42 Reduce 3252
+            3254:   3217(ptr) AccessChain 34(data) 3250 3216 38
+                              Store 3254 3253
+            3255:      6(int) Load 8(invocation)
+            3256:   3224(ptr) AccessChain 34(data) 46 3216
+            3257: 28(i64vec4) Load 3256
+            3258:3223(i64vec2) VectorShuffle 3257 3257 0 1
+            3259:3223(i64vec2) GroupNonUniformIMul 42 Reduce 3258
+            3260:   3217(ptr) AccessChain 34(data) 3255 3216 38
+            3261: 27(int64_t) CompositeExtract 3259 0
+                              Store 3260 3261
+            3262:   3217(ptr) AccessChain 34(data) 3255 3216 55
+            3263: 27(int64_t) CompositeExtract 3259 1
+                              Store 3262 3263
+            3264:      6(int) Load 8(invocation)
+            3265:   3224(ptr) AccessChain 34(data) 59 3216
+            3266: 28(i64vec4) Load 3265
+            3267:3234(i64vec3) VectorShuffle 3266 3266 0 1 2
+            3268:3234(i64vec3) GroupNonUniformIMul 42 Reduce 3267
+            3269:   3217(ptr) AccessChain 34(data) 3264 3216 38
+            3270: 27(int64_t) CompositeExtract 3268 0
+                              Store 3269 3270
+            3271:   3217(ptr) AccessChain 34(data) 3264 3216 55
+            3272: 27(int64_t) CompositeExtract 3268 1
+                              Store 3271 3272
+            3273:   3217(ptr) AccessChain 34(data) 3264 3216 69
+            3274: 27(int64_t) CompositeExtract 3268 2
+                              Store 3273 3274
+            3275:      6(int) Load 8(invocation)
+            3276:   3224(ptr) AccessChain 34(data) 73 3216
             3277: 28(i64vec4) Load 3276
-            3278: 28(i64vec4) VectorShuffle 3277 3275 4 5 2 3
-                              Store 3276 3278
-            3279:      6(int) Load 8(invocation)
-            3280:   2802(ptr) AccessChain 34(data) 57 2794
-            3281: 28(i64vec4) Load 3280
-            3282:2811(i64vec3) VectorShuffle 3281 3281 0 1 2
-            3283:2811(i64vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3282
-            3284:   2802(ptr) AccessChain 34(data) 3279 2794
-            3285: 28(i64vec4) Load 3284
-            3286: 28(i64vec4) VectorShuffle 3285 3283 4 5 6 3
-                              Store 3284 3286
-            3287:      6(int) Load 8(invocation)
-            3288:   2802(ptr) AccessChain 34(data) 67 2794
-            3289: 28(i64vec4) Load 3288
-            3290: 28(i64vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3289
-            3291:   2802(ptr) AccessChain 34(data) 3287 2794
-                              Store 3291 3290
-            3292:      6(int) Load 8(invocation)
-            3293:   2795(ptr) AccessChain 34(data) 37 2794 38
-            3294: 27(int64_t) Load 3293
-            3295: 27(int64_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 3294
-            3296:   2795(ptr) AccessChain 34(data) 3292 2794 38
-                              Store 3296 3295
-            3297:      6(int) Load 8(invocation)
-            3298:   2802(ptr) AccessChain 34(data) 46 2794
-            3299: 28(i64vec4) Load 3298
-            3300:2801(i64vec2) VectorShuffle 3299 3299 0 1
-            3301:2801(i64vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 3300
-            3302:   2802(ptr) AccessChain 34(data) 3297 2794
-            3303: 28(i64vec4) Load 3302
-            3304: 28(i64vec4) VectorShuffle 3303 3301 4 5 2 3
-                              Store 3302 3304
+            3278: 28(i64vec4) GroupNonUniformIMul 42 Reduce 3277
+            3279:   3224(ptr) AccessChain 34(data) 3275 3216
+                              Store 3279 3278
+            3280:      6(int) Load 8(invocation)
+            3281:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3282: 27(int64_t) Load 3281
+            3283: 27(int64_t) GroupNonUniformUMin 42 Reduce 3282
+            3284:   3217(ptr) AccessChain 34(data) 3280 3216 38
+                              Store 3284 3283
+            3285:      6(int) Load 8(invocation)
+            3286:   3224(ptr) AccessChain 34(data) 46 3216
+            3287: 28(i64vec4) Load 3286
+            3288:3223(i64vec2) VectorShuffle 3287 3287 0 1
+            3289:3223(i64vec2) GroupNonUniformUMin 42 Reduce 3288
+            3290:   3217(ptr) AccessChain 34(data) 3285 3216 38
+            3291: 27(int64_t) CompositeExtract 3289 0
+                              Store 3290 3291
+            3292:   3217(ptr) AccessChain 34(data) 3285 3216 55
+            3293: 27(int64_t) CompositeExtract 3289 1
+                              Store 3292 3293
+            3294:      6(int) Load 8(invocation)
+            3295:   3224(ptr) AccessChain 34(data) 59 3216
+            3296: 28(i64vec4) Load 3295
+            3297:3234(i64vec3) VectorShuffle 3296 3296 0 1 2
+            3298:3234(i64vec3) GroupNonUniformUMin 42 Reduce 3297
+            3299:   3217(ptr) AccessChain 34(data) 3294 3216 38
+            3300: 27(int64_t) CompositeExtract 3298 0
+                              Store 3299 3300
+            3301:   3217(ptr) AccessChain 34(data) 3294 3216 55
+            3302: 27(int64_t) CompositeExtract 3298 1
+                              Store 3301 3302
+            3303:   3217(ptr) AccessChain 34(data) 3294 3216 69
+            3304: 27(int64_t) CompositeExtract 3298 2
+                              Store 3303 3304
             3305:      6(int) Load 8(invocation)
-            3306:   2802(ptr) AccessChain 34(data) 57 2794
+            3306:   3224(ptr) AccessChain 34(data) 73 3216
             3307: 28(i64vec4) Load 3306
-            3308:2811(i64vec3) VectorShuffle 3307 3307 0 1 2
-            3309:2811(i64vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 3308
-            3310:   2802(ptr) AccessChain 34(data) 3305 2794
-            3311: 28(i64vec4) Load 3310
-            3312: 28(i64vec4) VectorShuffle 3311 3309 4 5 6 3
-                              Store 3310 3312
-            3313:      6(int) Load 8(invocation)
-            3314:   2802(ptr) AccessChain 34(data) 67 2794
-            3315: 28(i64vec4) Load 3314
-            3316: 28(i64vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 3315
-            3317:   2802(ptr) AccessChain 34(data) 3313 2794
-                              Store 3317 3316
-            3318:      6(int) Load 8(invocation)
-            3319:   2795(ptr) AccessChain 34(data) 37 2794 38
-            3320: 27(int64_t) Load 3319
-            3321: 27(int64_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 3320
-            3322:   2795(ptr) AccessChain 34(data) 3318 2794 38
-                              Store 3322 3321
-            3323:      6(int) Load 8(invocation)
-            3324:   2802(ptr) AccessChain 34(data) 46 2794
-            3325: 28(i64vec4) Load 3324
-            3326:2801(i64vec2) VectorShuffle 3325 3325 0 1
-            3327:2801(i64vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 3326
-            3328:   2802(ptr) AccessChain 34(data) 3323 2794
-            3329: 28(i64vec4) Load 3328
-            3330: 28(i64vec4) VectorShuffle 3329 3327 4 5 2 3
-                              Store 3328 3330
-            3331:      6(int) Load 8(invocation)
-            3332:   2802(ptr) AccessChain 34(data) 57 2794
-            3333: 28(i64vec4) Load 3332
-            3334:2811(i64vec3) VectorShuffle 3333 3333 0 1 2
-            3335:2811(i64vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 3334
-            3336:   2802(ptr) AccessChain 34(data) 3331 2794
+            3308: 28(i64vec4) GroupNonUniformUMin 42 Reduce 3307
+            3309:   3224(ptr) AccessChain 34(data) 3305 3216
+                              Store 3309 3308
+            3310:      6(int) Load 8(invocation)
+            3311:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3312: 27(int64_t) Load 3311
+            3313: 27(int64_t) GroupNonUniformUMax 42 Reduce 3312
+            3314:   3217(ptr) AccessChain 34(data) 3310 3216 38
+                              Store 3314 3313
+            3315:      6(int) Load 8(invocation)
+            3316:   3224(ptr) AccessChain 34(data) 46 3216
+            3317: 28(i64vec4) Load 3316
+            3318:3223(i64vec2) VectorShuffle 3317 3317 0 1
+            3319:3223(i64vec2) GroupNonUniformUMax 42 Reduce 3318
+            3320:   3217(ptr) AccessChain 34(data) 3315 3216 38
+            3321: 27(int64_t) CompositeExtract 3319 0
+                              Store 3320 3321
+            3322:   3217(ptr) AccessChain 34(data) 3315 3216 55
+            3323: 27(int64_t) CompositeExtract 3319 1
+                              Store 3322 3323
+            3324:      6(int) Load 8(invocation)
+            3325:   3224(ptr) AccessChain 34(data) 59 3216
+            3326: 28(i64vec4) Load 3325
+            3327:3234(i64vec3) VectorShuffle 3326 3326 0 1 2
+            3328:3234(i64vec3) GroupNonUniformUMax 42 Reduce 3327
+            3329:   3217(ptr) AccessChain 34(data) 3324 3216 38
+            3330: 27(int64_t) CompositeExtract 3328 0
+                              Store 3329 3330
+            3331:   3217(ptr) AccessChain 34(data) 3324 3216 55
+            3332: 27(int64_t) CompositeExtract 3328 1
+                              Store 3331 3332
+            3333:   3217(ptr) AccessChain 34(data) 3324 3216 69
+            3334: 27(int64_t) CompositeExtract 3328 2
+                              Store 3333 3334
+            3335:      6(int) Load 8(invocation)
+            3336:   3224(ptr) AccessChain 34(data) 73 3216
             3337: 28(i64vec4) Load 3336
-            3338: 28(i64vec4) VectorShuffle 3337 3335 4 5 6 3
-                              Store 3336 3338
-            3339:      6(int) Load 8(invocation)
-            3340:   2802(ptr) AccessChain 34(data) 67 2794
-            3341: 28(i64vec4) Load 3340
-            3342: 28(i64vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 3341
-            3343:   2802(ptr) AccessChain 34(data) 3339 2794
-                              Store 3343 3342
-            3344:      6(int) Load 8(invocation)
-            3347:   3346(ptr) AccessChain 34(data) 37 3345 38
-            3348:29(float16_t) Load 3347
-            3349:29(float16_t) GroupNonUniformFAdd 42 Reduce 3348
-            3350:   3346(ptr) AccessChain 34(data) 3344 3345 38
-                              Store 3350 3349
-            3351:      6(int) Load 8(invocation)
-            3354:   3353(ptr) AccessChain 34(data) 46 3345
-            3355: 30(f16vec4) Load 3354
-            3356:3352(f16vec2) VectorShuffle 3355 3355 0 1
-            3357:3352(f16vec2) GroupNonUniformFAdd 42 Reduce 3356
-            3358:   3353(ptr) AccessChain 34(data) 3351 3345
-            3359: 30(f16vec4) Load 3358
-            3360: 30(f16vec4) VectorShuffle 3359 3357 4 5 2 3
-                              Store 3358 3360
-            3361:      6(int) Load 8(invocation)
-            3363:   3353(ptr) AccessChain 34(data) 57 3345
-            3364: 30(f16vec4) Load 3363
-            3365:3362(f16vec3) VectorShuffle 3364 3364 0 1 2
-            3366:3362(f16vec3) GroupNonUniformFAdd 42 Reduce 3365
-            3367:   3353(ptr) AccessChain 34(data) 3361 3345
-            3368: 30(f16vec4) Load 3367
-            3369: 30(f16vec4) VectorShuffle 3368 3366 4 5 6 3
-                              Store 3367 3369
+            3338: 28(i64vec4) GroupNonUniformUMax 42 Reduce 3337
+            3339:   3224(ptr) AccessChain 34(data) 3335 3216
+                              Store 3339 3338
+            3340:      6(int) Load 8(invocation)
+            3341:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3342: 27(int64_t) Load 3341
+            3343: 27(int64_t) GroupNonUniformBitwiseAnd 42 Reduce 3342
+            3344:   3217(ptr) AccessChain 34(data) 3340 3216 38
+                              Store 3344 3343
+            3345:      6(int) Load 8(invocation)
+            3346:   3224(ptr) AccessChain 34(data) 46 3216
+            3347: 28(i64vec4) Load 3346
+            3348:3223(i64vec2) VectorShuffle 3347 3347 0 1
+            3349:3223(i64vec2) GroupNonUniformBitwiseAnd 42 Reduce 3348
+            3350:   3217(ptr) AccessChain 34(data) 3345 3216 38
+            3351: 27(int64_t) CompositeExtract 3349 0
+                              Store 3350 3351
+            3352:   3217(ptr) AccessChain 34(data) 3345 3216 55
+            3353: 27(int64_t) CompositeExtract 3349 1
+                              Store 3352 3353
+            3354:      6(int) Load 8(invocation)
+            3355:   3224(ptr) AccessChain 34(data) 59 3216
+            3356: 28(i64vec4) Load 3355
+            3357:3234(i64vec3) VectorShuffle 3356 3356 0 1 2
+            3358:3234(i64vec3) GroupNonUniformBitwiseAnd 42 Reduce 3357
+            3359:   3217(ptr) AccessChain 34(data) 3354 3216 38
+            3360: 27(int64_t) CompositeExtract 3358 0
+                              Store 3359 3360
+            3361:   3217(ptr) AccessChain 34(data) 3354 3216 55
+            3362: 27(int64_t) CompositeExtract 3358 1
+                              Store 3361 3362
+            3363:   3217(ptr) AccessChain 34(data) 3354 3216 69
+            3364: 27(int64_t) CompositeExtract 3358 2
+                              Store 3363 3364
+            3365:      6(int) Load 8(invocation)
+            3366:   3224(ptr) AccessChain 34(data) 73 3216
+            3367: 28(i64vec4) Load 3366
+            3368: 28(i64vec4) GroupNonUniformBitwiseAnd 42 Reduce 3367
+            3369:   3224(ptr) AccessChain 34(data) 3365 3216
+                              Store 3369 3368
             3370:      6(int) Load 8(invocation)
-            3371:   3353(ptr) AccessChain 34(data) 67 3345
-            3372: 30(f16vec4) Load 3371
-            3373: 30(f16vec4) GroupNonUniformFAdd 42 Reduce 3372
-            3374:   3353(ptr) AccessChain 34(data) 3370 3345
+            3371:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3372: 27(int64_t) Load 3371
+            3373: 27(int64_t) GroupNonUniformBitwiseOr 42 Reduce 3372
+            3374:   3217(ptr) AccessChain 34(data) 3370 3216 38
                               Store 3374 3373
             3375:      6(int) Load 8(invocation)
-            3376:   3346(ptr) AccessChain 34(data) 37 3345 38
-            3377:29(float16_t) Load 3376
-            3378:29(float16_t) GroupNonUniformFMul 42 Reduce 3377
-            3379:   3346(ptr) AccessChain 34(data) 3375 3345 38
-                              Store 3379 3378
-            3380:      6(int) Load 8(invocation)
-            3381:   3353(ptr) AccessChain 34(data) 46 3345
-            3382: 30(f16vec4) Load 3381
-            3383:3352(f16vec2) VectorShuffle 3382 3382 0 1
-            3384:3352(f16vec2) GroupNonUniformFMul 42 Reduce 3383
-            3385:   3353(ptr) AccessChain 34(data) 3380 3345
-            3386: 30(f16vec4) Load 3385
-            3387: 30(f16vec4) VectorShuffle 3386 3384 4 5 2 3
-                              Store 3385 3387
-            3388:      6(int) Load 8(invocation)
-            3389:   3353(ptr) AccessChain 34(data) 57 3345
-            3390: 30(f16vec4) Load 3389
-            3391:3362(f16vec3) VectorShuffle 3390 3390 0 1 2
-            3392:3362(f16vec3) GroupNonUniformFMul 42 Reduce 3391
-            3393:   3353(ptr) AccessChain 34(data) 3388 3345
-            3394: 30(f16vec4) Load 3393
-            3395: 30(f16vec4) VectorShuffle 3394 3392 4 5 6 3
-                              Store 3393 3395
-            3396:      6(int) Load 8(invocation)
-            3397:   3353(ptr) AccessChain 34(data) 67 3345
-            3398: 30(f16vec4) Load 3397
-            3399: 30(f16vec4) GroupNonUniformFMul 42 Reduce 3398
-            3400:   3353(ptr) AccessChain 34(data) 3396 3345
-                              Store 3400 3399
-            3401:      6(int) Load 8(invocation)
-            3402:   3346(ptr) AccessChain 34(data) 37 3345 38
-            3403:29(float16_t) Load 3402
-            3404:29(float16_t) GroupNonUniformFMin 42 Reduce 3403
-            3405:   3346(ptr) AccessChain 34(data) 3401 3345 38
-                              Store 3405 3404
-            3406:      6(int) Load 8(invocation)
-            3407:   3353(ptr) AccessChain 34(data) 46 3345
-            3408: 30(f16vec4) Load 3407
-            3409:3352(f16vec2) VectorShuffle 3408 3408 0 1
-            3410:3352(f16vec2) GroupNonUniformFMin 42 Reduce 3409
-            3411:   3353(ptr) AccessChain 34(data) 3406 3345
-            3412: 30(f16vec4) Load 3411
-            3413: 30(f16vec4) VectorShuffle 3412 3410 4 5 2 3
-                              Store 3411 3413
+            3376:   3224(ptr) AccessChain 34(data) 46 3216
+            3377: 28(i64vec4) Load 3376
+            3378:3223(i64vec2) VectorShuffle 3377 3377 0 1
+            3379:3223(i64vec2) GroupNonUniformBitwiseOr 42 Reduce 3378
+            3380:   3217(ptr) AccessChain 34(data) 3375 3216 38
+            3381: 27(int64_t) CompositeExtract 3379 0
+                              Store 3380 3381
+            3382:   3217(ptr) AccessChain 34(data) 3375 3216 55
+            3383: 27(int64_t) CompositeExtract 3379 1
+                              Store 3382 3383
+            3384:      6(int) Load 8(invocation)
+            3385:   3224(ptr) AccessChain 34(data) 59 3216
+            3386: 28(i64vec4) Load 3385
+            3387:3234(i64vec3) VectorShuffle 3386 3386 0 1 2
+            3388:3234(i64vec3) GroupNonUniformBitwiseOr 42 Reduce 3387
+            3389:   3217(ptr) AccessChain 34(data) 3384 3216 38
+            3390: 27(int64_t) CompositeExtract 3388 0
+                              Store 3389 3390
+            3391:   3217(ptr) AccessChain 34(data) 3384 3216 55
+            3392: 27(int64_t) CompositeExtract 3388 1
+                              Store 3391 3392
+            3393:   3217(ptr) AccessChain 34(data) 3384 3216 69
+            3394: 27(int64_t) CompositeExtract 3388 2
+                              Store 3393 3394
+            3395:      6(int) Load 8(invocation)
+            3396:   3224(ptr) AccessChain 34(data) 73 3216
+            3397: 28(i64vec4) Load 3396
+            3398: 28(i64vec4) GroupNonUniformBitwiseOr 42 Reduce 3397
+            3399:   3224(ptr) AccessChain 34(data) 3395 3216
+                              Store 3399 3398
+            3400:      6(int) Load 8(invocation)
+            3401:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3402: 27(int64_t) Load 3401
+            3403: 27(int64_t) GroupNonUniformBitwiseXor 42 Reduce 3402
+            3404:   3217(ptr) AccessChain 34(data) 3400 3216 38
+                              Store 3404 3403
+            3405:      6(int) Load 8(invocation)
+            3406:   3224(ptr) AccessChain 34(data) 46 3216
+            3407: 28(i64vec4) Load 3406
+            3408:3223(i64vec2) VectorShuffle 3407 3407 0 1
+            3409:3223(i64vec2) GroupNonUniformBitwiseXor 42 Reduce 3408
+            3410:   3217(ptr) AccessChain 34(data) 3405 3216 38
+            3411: 27(int64_t) CompositeExtract 3409 0
+                              Store 3410 3411
+            3412:   3217(ptr) AccessChain 34(data) 3405 3216 55
+            3413: 27(int64_t) CompositeExtract 3409 1
+                              Store 3412 3413
             3414:      6(int) Load 8(invocation)
-            3415:   3353(ptr) AccessChain 34(data) 57 3345
-            3416: 30(f16vec4) Load 3415
-            3417:3362(f16vec3) VectorShuffle 3416 3416 0 1 2
-            3418:3362(f16vec3) GroupNonUniformFMin 42 Reduce 3417
-            3419:   3353(ptr) AccessChain 34(data) 3414 3345
-            3420: 30(f16vec4) Load 3419
-            3421: 30(f16vec4) VectorShuffle 3420 3418 4 5 6 3
-                              Store 3419 3421
-            3422:      6(int) Load 8(invocation)
-            3423:   3353(ptr) AccessChain 34(data) 67 3345
-            3424: 30(f16vec4) Load 3423
-            3425: 30(f16vec4) GroupNonUniformFMin 42 Reduce 3424
-            3426:   3353(ptr) AccessChain 34(data) 3422 3345
-                              Store 3426 3425
-            3427:      6(int) Load 8(invocation)
-            3428:   3346(ptr) AccessChain 34(data) 37 3345 38
-            3429:29(float16_t) Load 3428
-            3430:29(float16_t) GroupNonUniformFMax 42 Reduce 3429
-            3431:   3346(ptr) AccessChain 34(data) 3427 3345 38
-                              Store 3431 3430
-            3432:      6(int) Load 8(invocation)
-            3433:   3353(ptr) AccessChain 34(data) 46 3345
-            3434: 30(f16vec4) Load 3433
-            3435:3352(f16vec2) VectorShuffle 3434 3434 0 1
-            3436:3352(f16vec2) GroupNonUniformFMax 42 Reduce 3435
-            3437:   3353(ptr) AccessChain 34(data) 3432 3345
-            3438: 30(f16vec4) Load 3437
-            3439: 30(f16vec4) VectorShuffle 3438 3436 4 5 2 3
-                              Store 3437 3439
-            3440:      6(int) Load 8(invocation)
-            3441:   3353(ptr) AccessChain 34(data) 57 3345
-            3442: 30(f16vec4) Load 3441
-            3443:3362(f16vec3) VectorShuffle 3442 3442 0 1 2
-            3444:3362(f16vec3) GroupNonUniformFMax 42 Reduce 3443
-            3445:   3353(ptr) AccessChain 34(data) 3440 3345
-            3446: 30(f16vec4) Load 3445
-            3447: 30(f16vec4) VectorShuffle 3446 3444 4 5 6 3
-                              Store 3445 3447
-            3448:      6(int) Load 8(invocation)
-            3449:   3353(ptr) AccessChain 34(data) 67 3345
-            3450: 30(f16vec4) Load 3449
-            3451: 30(f16vec4) GroupNonUniformFMax 42 Reduce 3450
-            3452:   3353(ptr) AccessChain 34(data) 3448 3345
-                              Store 3452 3451
-            3453:      6(int) Load 8(invocation)
-            3454:   3346(ptr) AccessChain 34(data) 37 3345 38
-            3455:29(float16_t) Load 3454
-            3456:29(float16_t) GroupNonUniformFAdd 42 InclusiveScan 3455
-            3457:   3346(ptr) AccessChain 34(data) 3453 3345 38
-                              Store 3457 3456
-            3458:      6(int) Load 8(invocation)
-            3459:   3353(ptr) AccessChain 34(data) 46 3345
-            3460: 30(f16vec4) Load 3459
-            3461:3352(f16vec2) VectorShuffle 3460 3460 0 1
-            3462:3352(f16vec2) GroupNonUniformFAdd 42 InclusiveScan 3461
-            3463:   3353(ptr) AccessChain 34(data) 3458 3345
-            3464: 30(f16vec4) Load 3463
-            3465: 30(f16vec4) VectorShuffle 3464 3462 4 5 2 3
-                              Store 3463 3465
-            3466:      6(int) Load 8(invocation)
-            3467:   3353(ptr) AccessChain 34(data) 57 3345
-            3468: 30(f16vec4) Load 3467
-            3469:3362(f16vec3) VectorShuffle 3468 3468 0 1 2
-            3470:3362(f16vec3) GroupNonUniformFAdd 42 InclusiveScan 3469
-            3471:   3353(ptr) AccessChain 34(data) 3466 3345
-            3472: 30(f16vec4) Load 3471
-            3473: 30(f16vec4) VectorShuffle 3472 3470 4 5 6 3
-                              Store 3471 3473
+            3415:   3224(ptr) AccessChain 34(data) 59 3216
+            3416: 28(i64vec4) Load 3415
+            3417:3234(i64vec3) VectorShuffle 3416 3416 0 1 2
+            3418:3234(i64vec3) GroupNonUniformBitwiseXor 42 Reduce 3417
+            3419:   3217(ptr) AccessChain 34(data) 3414 3216 38
+            3420: 27(int64_t) CompositeExtract 3418 0
+                              Store 3419 3420
+            3421:   3217(ptr) AccessChain 34(data) 3414 3216 55
+            3422: 27(int64_t) CompositeExtract 3418 1
+                              Store 3421 3422
+            3423:   3217(ptr) AccessChain 34(data) 3414 3216 69
+            3424: 27(int64_t) CompositeExtract 3418 2
+                              Store 3423 3424
+            3425:      6(int) Load 8(invocation)
+            3426:   3224(ptr) AccessChain 34(data) 73 3216
+            3427: 28(i64vec4) Load 3426
+            3428: 28(i64vec4) GroupNonUniformBitwiseXor 42 Reduce 3427
+            3429:   3224(ptr) AccessChain 34(data) 3425 3216
+                              Store 3429 3428
+            3430:      6(int) Load 8(invocation)
+            3431:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3432: 27(int64_t) Load 3431
+            3433: 27(int64_t) GroupNonUniformIAdd 42 InclusiveScan 3432
+            3434:   3217(ptr) AccessChain 34(data) 3430 3216 38
+                              Store 3434 3433
+            3435:      6(int) Load 8(invocation)
+            3436:   3224(ptr) AccessChain 34(data) 46 3216
+            3437: 28(i64vec4) Load 3436
+            3438:3223(i64vec2) VectorShuffle 3437 3437 0 1
+            3439:3223(i64vec2) GroupNonUniformIAdd 42 InclusiveScan 3438
+            3440:   3217(ptr) AccessChain 34(data) 3435 3216 38
+            3441: 27(int64_t) CompositeExtract 3439 0
+                              Store 3440 3441
+            3442:   3217(ptr) AccessChain 34(data) 3435 3216 55
+            3443: 27(int64_t) CompositeExtract 3439 1
+                              Store 3442 3443
+            3444:      6(int) Load 8(invocation)
+            3445:   3224(ptr) AccessChain 34(data) 59 3216
+            3446: 28(i64vec4) Load 3445
+            3447:3234(i64vec3) VectorShuffle 3446 3446 0 1 2
+            3448:3234(i64vec3) GroupNonUniformIAdd 42 InclusiveScan 3447
+            3449:   3217(ptr) AccessChain 34(data) 3444 3216 38
+            3450: 27(int64_t) CompositeExtract 3448 0
+                              Store 3449 3450
+            3451:   3217(ptr) AccessChain 34(data) 3444 3216 55
+            3452: 27(int64_t) CompositeExtract 3448 1
+                              Store 3451 3452
+            3453:   3217(ptr) AccessChain 34(data) 3444 3216 69
+            3454: 27(int64_t) CompositeExtract 3448 2
+                              Store 3453 3454
+            3455:      6(int) Load 8(invocation)
+            3456:   3224(ptr) AccessChain 34(data) 73 3216
+            3457: 28(i64vec4) Load 3456
+            3458: 28(i64vec4) GroupNonUniformIAdd 42 InclusiveScan 3457
+            3459:   3224(ptr) AccessChain 34(data) 3455 3216
+                              Store 3459 3458
+            3460:      6(int) Load 8(invocation)
+            3461:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3462: 27(int64_t) Load 3461
+            3463: 27(int64_t) GroupNonUniformIMul 42 InclusiveScan 3462
+            3464:   3217(ptr) AccessChain 34(data) 3460 3216 38
+                              Store 3464 3463
+            3465:      6(int) Load 8(invocation)
+            3466:   3224(ptr) AccessChain 34(data) 46 3216
+            3467: 28(i64vec4) Load 3466
+            3468:3223(i64vec2) VectorShuffle 3467 3467 0 1
+            3469:3223(i64vec2) GroupNonUniformIMul 42 InclusiveScan 3468
+            3470:   3217(ptr) AccessChain 34(data) 3465 3216 38
+            3471: 27(int64_t) CompositeExtract 3469 0
+                              Store 3470 3471
+            3472:   3217(ptr) AccessChain 34(data) 3465 3216 55
+            3473: 27(int64_t) CompositeExtract 3469 1
+                              Store 3472 3473
             3474:      6(int) Load 8(invocation)
-            3475:   3353(ptr) AccessChain 34(data) 67 3345
-            3476: 30(f16vec4) Load 3475
-            3477: 30(f16vec4) GroupNonUniformFAdd 42 InclusiveScan 3476
-            3478:   3353(ptr) AccessChain 34(data) 3474 3345
-                              Store 3478 3477
-            3479:      6(int) Load 8(invocation)
-            3480:   3346(ptr) AccessChain 34(data) 37 3345 38
-            3481:29(float16_t) Load 3480
-            3482:29(float16_t) GroupNonUniformFMul 42 InclusiveScan 3481
-            3483:   3346(ptr) AccessChain 34(data) 3479 3345 38
-                              Store 3483 3482
-            3484:      6(int) Load 8(invocation)
-            3485:   3353(ptr) AccessChain 34(data) 46 3345
-            3486: 30(f16vec4) Load 3485
-            3487:3352(f16vec2) VectorShuffle 3486 3486 0 1
-            3488:3352(f16vec2) GroupNonUniformFMul 42 InclusiveScan 3487
-            3489:   3353(ptr) AccessChain 34(data) 3484 3345
-            3490: 30(f16vec4) Load 3489
-            3491: 30(f16vec4) VectorShuffle 3490 3488 4 5 2 3
-                              Store 3489 3491
-            3492:      6(int) Load 8(invocation)
-            3493:   3353(ptr) AccessChain 34(data) 57 3345
-            3494: 30(f16vec4) Load 3493
-            3495:3362(f16vec3) VectorShuffle 3494 3494 0 1 2
-            3496:3362(f16vec3) GroupNonUniformFMul 42 InclusiveScan 3495
-            3497:   3353(ptr) AccessChain 34(data) 3492 3345
-            3498: 30(f16vec4) Load 3497
-            3499: 30(f16vec4) VectorShuffle 3498 3496 4 5 6 3
-                              Store 3497 3499
-            3500:      6(int) Load 8(invocation)
-            3501:   3353(ptr) AccessChain 34(data) 67 3345
-            3502: 30(f16vec4) Load 3501
-            3503: 30(f16vec4) GroupNonUniformFMul 42 InclusiveScan 3502
-            3504:   3353(ptr) AccessChain 34(data) 3500 3345
-                              Store 3504 3503
-            3505:      6(int) Load 8(invocation)
-            3506:   3346(ptr) AccessChain 34(data) 37 3345 38
-            3507:29(float16_t) Load 3506
-            3508:29(float16_t) GroupNonUniformFMin 42 InclusiveScan 3507
-            3509:   3346(ptr) AccessChain 34(data) 3505 3345 38
-                              Store 3509 3508
-            3510:      6(int) Load 8(invocation)
-            3511:   3353(ptr) AccessChain 34(data) 46 3345
-            3512: 30(f16vec4) Load 3511
-            3513:3352(f16vec2) VectorShuffle 3512 3512 0 1
-            3514:3352(f16vec2) GroupNonUniformFMin 42 InclusiveScan 3513
-            3515:   3353(ptr) AccessChain 34(data) 3510 3345
-            3516: 30(f16vec4) Load 3515
-            3517: 30(f16vec4) VectorShuffle 3516 3514 4 5 2 3
-                              Store 3515 3517
-            3518:      6(int) Load 8(invocation)
-            3519:   3353(ptr) AccessChain 34(data) 57 3345
-            3520: 30(f16vec4) Load 3519
-            3521:3362(f16vec3) VectorShuffle 3520 3520 0 1 2
-            3522:3362(f16vec3) GroupNonUniformFMin 42 InclusiveScan 3521
-            3523:   3353(ptr) AccessChain 34(data) 3518 3345
-            3524: 30(f16vec4) Load 3523
-            3525: 30(f16vec4) VectorShuffle 3524 3522 4 5 6 3
-                              Store 3523 3525
-            3526:      6(int) Load 8(invocation)
-            3527:   3353(ptr) AccessChain 34(data) 67 3345
-            3528: 30(f16vec4) Load 3527
-            3529: 30(f16vec4) GroupNonUniformFMin 42 InclusiveScan 3528
-            3530:   3353(ptr) AccessChain 34(data) 3526 3345
-                              Store 3530 3529
-            3531:      6(int) Load 8(invocation)
-            3532:   3346(ptr) AccessChain 34(data) 37 3345 38
-            3533:29(float16_t) Load 3532
-            3534:29(float16_t) GroupNonUniformFMax 42 InclusiveScan 3533
-            3535:   3346(ptr) AccessChain 34(data) 3531 3345 38
-                              Store 3535 3534
-            3536:      6(int) Load 8(invocation)
-            3537:   3353(ptr) AccessChain 34(data) 46 3345
-            3538: 30(f16vec4) Load 3537
-            3539:3352(f16vec2) VectorShuffle 3538 3538 0 1
-            3540:3352(f16vec2) GroupNonUniformFMax 42 InclusiveScan 3539
-            3541:   3353(ptr) AccessChain 34(data) 3536 3345
-            3542: 30(f16vec4) Load 3541
-            3543: 30(f16vec4) VectorShuffle 3542 3540 4 5 2 3
-                              Store 3541 3543
-            3544:      6(int) Load 8(invocation)
-            3545:   3353(ptr) AccessChain 34(data) 57 3345
-            3546: 30(f16vec4) Load 3545
-            3547:3362(f16vec3) VectorShuffle 3546 3546 0 1 2
-            3548:3362(f16vec3) GroupNonUniformFMax 42 InclusiveScan 3547
-            3549:   3353(ptr) AccessChain 34(data) 3544 3345
-            3550: 30(f16vec4) Load 3549
-            3551: 30(f16vec4) VectorShuffle 3550 3548 4 5 6 3
-                              Store 3549 3551
-            3552:      6(int) Load 8(invocation)
-            3553:   3353(ptr) AccessChain 34(data) 67 3345
-            3554: 30(f16vec4) Load 3553
-            3555: 30(f16vec4) GroupNonUniformFMax 42 InclusiveScan 3554
-            3556:   3353(ptr) AccessChain 34(data) 3552 3345
-                              Store 3556 3555
-            3557:      6(int) Load 8(invocation)
-            3558:   3346(ptr) AccessChain 34(data) 37 3345 38
-            3559:29(float16_t) Load 3558
-            3560:29(float16_t) GroupNonUniformFAdd 42 ExclusiveScan 3559
-            3561:   3346(ptr) AccessChain 34(data) 3557 3345 38
-                              Store 3561 3560
-            3562:      6(int) Load 8(invocation)
-            3563:   3353(ptr) AccessChain 34(data) 46 3345
-            3564: 30(f16vec4) Load 3563
-            3565:3352(f16vec2) VectorShuffle 3564 3564 0 1
-            3566:3352(f16vec2) GroupNonUniformFAdd 42 ExclusiveScan 3565
-            3567:   3353(ptr) AccessChain 34(data) 3562 3345
-            3568: 30(f16vec4) Load 3567
-            3569: 30(f16vec4) VectorShuffle 3568 3566 4 5 2 3
-                              Store 3567 3569
-            3570:      6(int) Load 8(invocation)
-            3571:   3353(ptr) AccessChain 34(data) 57 3345
-            3572: 30(f16vec4) Load 3571
-            3573:3362(f16vec3) VectorShuffle 3572 3572 0 1 2
-            3574:3362(f16vec3) GroupNonUniformFAdd 42 ExclusiveScan 3573
-            3575:   3353(ptr) AccessChain 34(data) 3570 3345
-            3576: 30(f16vec4) Load 3575
-            3577: 30(f16vec4) VectorShuffle 3576 3574 4 5 6 3
-                              Store 3575 3577
-            3578:      6(int) Load 8(invocation)
-            3579:   3353(ptr) AccessChain 34(data) 67 3345
-            3580: 30(f16vec4) Load 3579
-            3581: 30(f16vec4) GroupNonUniformFAdd 42 ExclusiveScan 3580
-            3582:   3353(ptr) AccessChain 34(data) 3578 3345
-                              Store 3582 3581
-            3583:      6(int) Load 8(invocation)
-            3584:   3346(ptr) AccessChain 34(data) 37 3345 38
-            3585:29(float16_t) Load 3584
-            3586:29(float16_t) GroupNonUniformFMul 42 ExclusiveScan 3585
-            3587:   3346(ptr) AccessChain 34(data) 3583 3345 38
-                              Store 3587 3586
-            3588:      6(int) Load 8(invocation)
-            3589:   3353(ptr) AccessChain 34(data) 46 3345
-            3590: 30(f16vec4) Load 3589
-            3591:3352(f16vec2) VectorShuffle 3590 3590 0 1
-            3592:3352(f16vec2) GroupNonUniformFMul 42 ExclusiveScan 3591
-            3593:   3353(ptr) AccessChain 34(data) 3588 3345
-            3594: 30(f16vec4) Load 3593
-            3595: 30(f16vec4) VectorShuffle 3594 3592 4 5 2 3
-                              Store 3593 3595
-            3596:      6(int) Load 8(invocation)
-            3597:   3353(ptr) AccessChain 34(data) 57 3345
-            3598: 30(f16vec4) Load 3597
-            3599:3362(f16vec3) VectorShuffle 3598 3598 0 1 2
-            3600:3362(f16vec3) GroupNonUniformFMul 42 ExclusiveScan 3599
-            3601:   3353(ptr) AccessChain 34(data) 3596 3345
-            3602: 30(f16vec4) Load 3601
-            3603: 30(f16vec4) VectorShuffle 3602 3600 4 5 6 3
-                              Store 3601 3603
-            3604:      6(int) Load 8(invocation)
-            3605:   3353(ptr) AccessChain 34(data) 67 3345
-            3606: 30(f16vec4) Load 3605
-            3607: 30(f16vec4) GroupNonUniformFMul 42 ExclusiveScan 3606
-            3608:   3353(ptr) AccessChain 34(data) 3604 3345
-                              Store 3608 3607
-            3609:      6(int) Load 8(invocation)
-            3610:   3346(ptr) AccessChain 34(data) 37 3345 38
-            3611:29(float16_t) Load 3610
-            3612:29(float16_t) GroupNonUniformFMin 42 ExclusiveScan 3611
-            3613:   3346(ptr) AccessChain 34(data) 3609 3345 38
-                              Store 3613 3612
-            3614:      6(int) Load 8(invocation)
-            3615:   3353(ptr) AccessChain 34(data) 46 3345
-            3616: 30(f16vec4) Load 3615
-            3617:3352(f16vec2) VectorShuffle 3616 3616 0 1
-            3618:3352(f16vec2) GroupNonUniformFMin 42 ExclusiveScan 3617
-            3619:   3353(ptr) AccessChain 34(data) 3614 3345
-            3620: 30(f16vec4) Load 3619
-            3621: 30(f16vec4) VectorShuffle 3620 3618 4 5 2 3
-                              Store 3619 3621
-            3622:      6(int) Load 8(invocation)
-            3623:   3353(ptr) AccessChain 34(data) 57 3345
-            3624: 30(f16vec4) Load 3623
-            3625:3362(f16vec3) VectorShuffle 3624 3624 0 1 2
-            3626:3362(f16vec3) GroupNonUniformFMin 42 ExclusiveScan 3625
-            3627:   3353(ptr) AccessChain 34(data) 3622 3345
-            3628: 30(f16vec4) Load 3627
-            3629: 30(f16vec4) VectorShuffle 3628 3626 4 5 6 3
-                              Store 3627 3629
-            3630:      6(int) Load 8(invocation)
-            3631:   3353(ptr) AccessChain 34(data) 67 3345
-            3632: 30(f16vec4) Load 3631
-            3633: 30(f16vec4) GroupNonUniformFMin 42 ExclusiveScan 3632
-            3634:   3353(ptr) AccessChain 34(data) 3630 3345
-                              Store 3634 3633
+            3475:   3224(ptr) AccessChain 34(data) 59 3216
+            3476: 28(i64vec4) Load 3475
+            3477:3234(i64vec3) VectorShuffle 3476 3476 0 1 2
+            3478:3234(i64vec3) GroupNonUniformIMul 42 InclusiveScan 3477
+            3479:   3217(ptr) AccessChain 34(data) 3474 3216 38
+            3480: 27(int64_t) CompositeExtract 3478 0
+                              Store 3479 3480
+            3481:   3217(ptr) AccessChain 34(data) 3474 3216 55
+            3482: 27(int64_t) CompositeExtract 3478 1
+                              Store 3481 3482
+            3483:   3217(ptr) AccessChain 34(data) 3474 3216 69
+            3484: 27(int64_t) CompositeExtract 3478 2
+                              Store 3483 3484
+            3485:      6(int) Load 8(invocation)
+            3486:   3224(ptr) AccessChain 34(data) 73 3216
+            3487: 28(i64vec4) Load 3486
+            3488: 28(i64vec4) GroupNonUniformIMul 42 InclusiveScan 3487
+            3489:   3224(ptr) AccessChain 34(data) 3485 3216
+                              Store 3489 3488
+            3490:      6(int) Load 8(invocation)
+            3491:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3492: 27(int64_t) Load 3491
+            3493: 27(int64_t) GroupNonUniformUMin 42 InclusiveScan 3492
+            3494:   3217(ptr) AccessChain 34(data) 3490 3216 38
+                              Store 3494 3493
+            3495:      6(int) Load 8(invocation)
+            3496:   3224(ptr) AccessChain 34(data) 46 3216
+            3497: 28(i64vec4) Load 3496
+            3498:3223(i64vec2) VectorShuffle 3497 3497 0 1
+            3499:3223(i64vec2) GroupNonUniformUMin 42 InclusiveScan 3498
+            3500:   3217(ptr) AccessChain 34(data) 3495 3216 38
+            3501: 27(int64_t) CompositeExtract 3499 0
+                              Store 3500 3501
+            3502:   3217(ptr) AccessChain 34(data) 3495 3216 55
+            3503: 27(int64_t) CompositeExtract 3499 1
+                              Store 3502 3503
+            3504:      6(int) Load 8(invocation)
+            3505:   3224(ptr) AccessChain 34(data) 59 3216
+            3506: 28(i64vec4) Load 3505
+            3507:3234(i64vec3) VectorShuffle 3506 3506 0 1 2
+            3508:3234(i64vec3) GroupNonUniformUMin 42 InclusiveScan 3507
+            3509:   3217(ptr) AccessChain 34(data) 3504 3216 38
+            3510: 27(int64_t) CompositeExtract 3508 0
+                              Store 3509 3510
+            3511:   3217(ptr) AccessChain 34(data) 3504 3216 55
+            3512: 27(int64_t) CompositeExtract 3508 1
+                              Store 3511 3512
+            3513:   3217(ptr) AccessChain 34(data) 3504 3216 69
+            3514: 27(int64_t) CompositeExtract 3508 2
+                              Store 3513 3514
+            3515:      6(int) Load 8(invocation)
+            3516:   3224(ptr) AccessChain 34(data) 73 3216
+            3517: 28(i64vec4) Load 3516
+            3518: 28(i64vec4) GroupNonUniformUMin 42 InclusiveScan 3517
+            3519:   3224(ptr) AccessChain 34(data) 3515 3216
+                              Store 3519 3518
+            3520:      6(int) Load 8(invocation)
+            3521:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3522: 27(int64_t) Load 3521
+            3523: 27(int64_t) GroupNonUniformUMax 42 InclusiveScan 3522
+            3524:   3217(ptr) AccessChain 34(data) 3520 3216 38
+                              Store 3524 3523
+            3525:      6(int) Load 8(invocation)
+            3526:   3224(ptr) AccessChain 34(data) 46 3216
+            3527: 28(i64vec4) Load 3526
+            3528:3223(i64vec2) VectorShuffle 3527 3527 0 1
+            3529:3223(i64vec2) GroupNonUniformUMax 42 InclusiveScan 3528
+            3530:   3217(ptr) AccessChain 34(data) 3525 3216 38
+            3531: 27(int64_t) CompositeExtract 3529 0
+                              Store 3530 3531
+            3532:   3217(ptr) AccessChain 34(data) 3525 3216 55
+            3533: 27(int64_t) CompositeExtract 3529 1
+                              Store 3532 3533
+            3534:      6(int) Load 8(invocation)
+            3535:   3224(ptr) AccessChain 34(data) 59 3216
+            3536: 28(i64vec4) Load 3535
+            3537:3234(i64vec3) VectorShuffle 3536 3536 0 1 2
+            3538:3234(i64vec3) GroupNonUniformUMax 42 InclusiveScan 3537
+            3539:   3217(ptr) AccessChain 34(data) 3534 3216 38
+            3540: 27(int64_t) CompositeExtract 3538 0
+                              Store 3539 3540
+            3541:   3217(ptr) AccessChain 34(data) 3534 3216 55
+            3542: 27(int64_t) CompositeExtract 3538 1
+                              Store 3541 3542
+            3543:   3217(ptr) AccessChain 34(data) 3534 3216 69
+            3544: 27(int64_t) CompositeExtract 3538 2
+                              Store 3543 3544
+            3545:      6(int) Load 8(invocation)
+            3546:   3224(ptr) AccessChain 34(data) 73 3216
+            3547: 28(i64vec4) Load 3546
+            3548: 28(i64vec4) GroupNonUniformUMax 42 InclusiveScan 3547
+            3549:   3224(ptr) AccessChain 34(data) 3545 3216
+                              Store 3549 3548
+            3550:      6(int) Load 8(invocation)
+            3551:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3552: 27(int64_t) Load 3551
+            3553: 27(int64_t) GroupNonUniformBitwiseAnd 42 InclusiveScan 3552
+            3554:   3217(ptr) AccessChain 34(data) 3550 3216 38
+                              Store 3554 3553
+            3555:      6(int) Load 8(invocation)
+            3556:   3224(ptr) AccessChain 34(data) 46 3216
+            3557: 28(i64vec4) Load 3556
+            3558:3223(i64vec2) VectorShuffle 3557 3557 0 1
+            3559:3223(i64vec2) GroupNonUniformBitwiseAnd 42 InclusiveScan 3558
+            3560:   3217(ptr) AccessChain 34(data) 3555 3216 38
+            3561: 27(int64_t) CompositeExtract 3559 0
+                              Store 3560 3561
+            3562:   3217(ptr) AccessChain 34(data) 3555 3216 55
+            3563: 27(int64_t) CompositeExtract 3559 1
+                              Store 3562 3563
+            3564:      6(int) Load 8(invocation)
+            3565:   3224(ptr) AccessChain 34(data) 59 3216
+            3566: 28(i64vec4) Load 3565
+            3567:3234(i64vec3) VectorShuffle 3566 3566 0 1 2
+            3568:3234(i64vec3) GroupNonUniformBitwiseAnd 42 InclusiveScan 3567
+            3569:   3217(ptr) AccessChain 34(data) 3564 3216 38
+            3570: 27(int64_t) CompositeExtract 3568 0
+                              Store 3569 3570
+            3571:   3217(ptr) AccessChain 34(data) 3564 3216 55
+            3572: 27(int64_t) CompositeExtract 3568 1
+                              Store 3571 3572
+            3573:   3217(ptr) AccessChain 34(data) 3564 3216 69
+            3574: 27(int64_t) CompositeExtract 3568 2
+                              Store 3573 3574
+            3575:      6(int) Load 8(invocation)
+            3576:   3224(ptr) AccessChain 34(data) 73 3216
+            3577: 28(i64vec4) Load 3576
+            3578: 28(i64vec4) GroupNonUniformBitwiseAnd 42 InclusiveScan 3577
+            3579:   3224(ptr) AccessChain 34(data) 3575 3216
+                              Store 3579 3578
+            3580:      6(int) Load 8(invocation)
+            3581:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3582: 27(int64_t) Load 3581
+            3583: 27(int64_t) GroupNonUniformBitwiseOr 42 InclusiveScan 3582
+            3584:   3217(ptr) AccessChain 34(data) 3580 3216 38
+                              Store 3584 3583
+            3585:      6(int) Load 8(invocation)
+            3586:   3224(ptr) AccessChain 34(data) 46 3216
+            3587: 28(i64vec4) Load 3586
+            3588:3223(i64vec2) VectorShuffle 3587 3587 0 1
+            3589:3223(i64vec2) GroupNonUniformBitwiseOr 42 InclusiveScan 3588
+            3590:   3217(ptr) AccessChain 34(data) 3585 3216 38
+            3591: 27(int64_t) CompositeExtract 3589 0
+                              Store 3590 3591
+            3592:   3217(ptr) AccessChain 34(data) 3585 3216 55
+            3593: 27(int64_t) CompositeExtract 3589 1
+                              Store 3592 3593
+            3594:      6(int) Load 8(invocation)
+            3595:   3224(ptr) AccessChain 34(data) 59 3216
+            3596: 28(i64vec4) Load 3595
+            3597:3234(i64vec3) VectorShuffle 3596 3596 0 1 2
+            3598:3234(i64vec3) GroupNonUniformBitwiseOr 42 InclusiveScan 3597
+            3599:   3217(ptr) AccessChain 34(data) 3594 3216 38
+            3600: 27(int64_t) CompositeExtract 3598 0
+                              Store 3599 3600
+            3601:   3217(ptr) AccessChain 34(data) 3594 3216 55
+            3602: 27(int64_t) CompositeExtract 3598 1
+                              Store 3601 3602
+            3603:   3217(ptr) AccessChain 34(data) 3594 3216 69
+            3604: 27(int64_t) CompositeExtract 3598 2
+                              Store 3603 3604
+            3605:      6(int) Load 8(invocation)
+            3606:   3224(ptr) AccessChain 34(data) 73 3216
+            3607: 28(i64vec4) Load 3606
+            3608: 28(i64vec4) GroupNonUniformBitwiseOr 42 InclusiveScan 3607
+            3609:   3224(ptr) AccessChain 34(data) 3605 3216
+                              Store 3609 3608
+            3610:      6(int) Load 8(invocation)
+            3611:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3612: 27(int64_t) Load 3611
+            3613: 27(int64_t) GroupNonUniformBitwiseXor 42 InclusiveScan 3612
+            3614:   3217(ptr) AccessChain 34(data) 3610 3216 38
+                              Store 3614 3613
+            3615:      6(int) Load 8(invocation)
+            3616:   3224(ptr) AccessChain 34(data) 46 3216
+            3617: 28(i64vec4) Load 3616
+            3618:3223(i64vec2) VectorShuffle 3617 3617 0 1
+            3619:3223(i64vec2) GroupNonUniformBitwiseXor 42 InclusiveScan 3618
+            3620:   3217(ptr) AccessChain 34(data) 3615 3216 38
+            3621: 27(int64_t) CompositeExtract 3619 0
+                              Store 3620 3621
+            3622:   3217(ptr) AccessChain 34(data) 3615 3216 55
+            3623: 27(int64_t) CompositeExtract 3619 1
+                              Store 3622 3623
+            3624:      6(int) Load 8(invocation)
+            3625:   3224(ptr) AccessChain 34(data) 59 3216
+            3626: 28(i64vec4) Load 3625
+            3627:3234(i64vec3) VectorShuffle 3626 3626 0 1 2
+            3628:3234(i64vec3) GroupNonUniformBitwiseXor 42 InclusiveScan 3627
+            3629:   3217(ptr) AccessChain 34(data) 3624 3216 38
+            3630: 27(int64_t) CompositeExtract 3628 0
+                              Store 3629 3630
+            3631:   3217(ptr) AccessChain 34(data) 3624 3216 55
+            3632: 27(int64_t) CompositeExtract 3628 1
+                              Store 3631 3632
+            3633:   3217(ptr) AccessChain 34(data) 3624 3216 69
+            3634: 27(int64_t) CompositeExtract 3628 2
+                              Store 3633 3634
             3635:      6(int) Load 8(invocation)
-            3636:   3346(ptr) AccessChain 34(data) 37 3345 38
-            3637:29(float16_t) Load 3636
-            3638:29(float16_t) GroupNonUniformFMax 42 ExclusiveScan 3637
-            3639:   3346(ptr) AccessChain 34(data) 3635 3345 38
+            3636:   3224(ptr) AccessChain 34(data) 73 3216
+            3637: 28(i64vec4) Load 3636
+            3638: 28(i64vec4) GroupNonUniformBitwiseXor 42 InclusiveScan 3637
+            3639:   3224(ptr) AccessChain 34(data) 3635 3216
                               Store 3639 3638
             3640:      6(int) Load 8(invocation)
-            3641:   3353(ptr) AccessChain 34(data) 46 3345
-            3642: 30(f16vec4) Load 3641
-            3643:3352(f16vec2) VectorShuffle 3642 3642 0 1
-            3644:3352(f16vec2) GroupNonUniformFMax 42 ExclusiveScan 3643
-            3645:   3353(ptr) AccessChain 34(data) 3640 3345
-            3646: 30(f16vec4) Load 3645
-            3647: 30(f16vec4) VectorShuffle 3646 3644 4 5 2 3
-                              Store 3645 3647
-            3648:      6(int) Load 8(invocation)
-            3649:   3353(ptr) AccessChain 34(data) 57 3345
-            3650: 30(f16vec4) Load 3649
-            3651:3362(f16vec3) VectorShuffle 3650 3650 0 1 2
-            3652:3362(f16vec3) GroupNonUniformFMax 42 ExclusiveScan 3651
-            3653:   3353(ptr) AccessChain 34(data) 3648 3345
-            3654: 30(f16vec4) Load 3653
-            3655: 30(f16vec4) VectorShuffle 3654 3652 4 5 6 3
-                              Store 3653 3655
-            3656:      6(int) Load 8(invocation)
-            3657:   3353(ptr) AccessChain 34(data) 67 3345
-            3658: 30(f16vec4) Load 3657
-            3659: 30(f16vec4) GroupNonUniformFMax 42 ExclusiveScan 3658
-            3660:   3353(ptr) AccessChain 34(data) 3656 3345
-                              Store 3660 3659
+            3641:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3642: 27(int64_t) Load 3641
+            3643: 27(int64_t) GroupNonUniformIAdd 42 ExclusiveScan 3642
+            3644:   3217(ptr) AccessChain 34(data) 3640 3216 38
+                              Store 3644 3643
+            3645:      6(int) Load 8(invocation)
+            3646:   3224(ptr) AccessChain 34(data) 46 3216
+            3647: 28(i64vec4) Load 3646
+            3648:3223(i64vec2) VectorShuffle 3647 3647 0 1
+            3649:3223(i64vec2) GroupNonUniformIAdd 42 ExclusiveScan 3648
+            3650:   3217(ptr) AccessChain 34(data) 3645 3216 38
+            3651: 27(int64_t) CompositeExtract 3649 0
+                              Store 3650 3651
+            3652:   3217(ptr) AccessChain 34(data) 3645 3216 55
+            3653: 27(int64_t) CompositeExtract 3649 1
+                              Store 3652 3653
+            3654:      6(int) Load 8(invocation)
+            3655:   3224(ptr) AccessChain 34(data) 59 3216
+            3656: 28(i64vec4) Load 3655
+            3657:3234(i64vec3) VectorShuffle 3656 3656 0 1 2
+            3658:3234(i64vec3) GroupNonUniformIAdd 42 ExclusiveScan 3657
+            3659:   3217(ptr) AccessChain 34(data) 3654 3216 38
+            3660: 27(int64_t) CompositeExtract 3658 0
+                              Store 3659 3660
+            3661:   3217(ptr) AccessChain 34(data) 3654 3216 55
+            3662: 27(int64_t) CompositeExtract 3658 1
+                              Store 3661 3662
+            3663:   3217(ptr) AccessChain 34(data) 3654 3216 69
+            3664: 27(int64_t) CompositeExtract 3658 2
+                              Store 3663 3664
+            3665:      6(int) Load 8(invocation)
+            3666:   3224(ptr) AccessChain 34(data) 73 3216
+            3667: 28(i64vec4) Load 3666
+            3668: 28(i64vec4) GroupNonUniformIAdd 42 ExclusiveScan 3667
+            3669:   3224(ptr) AccessChain 34(data) 3665 3216
+                              Store 3669 3668
+            3670:      6(int) Load 8(invocation)
+            3671:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3672: 27(int64_t) Load 3671
+            3673: 27(int64_t) GroupNonUniformIMul 42 ExclusiveScan 3672
+            3674:   3217(ptr) AccessChain 34(data) 3670 3216 38
+                              Store 3674 3673
+            3675:      6(int) Load 8(invocation)
+            3676:   3224(ptr) AccessChain 34(data) 46 3216
+            3677: 28(i64vec4) Load 3676
+            3678:3223(i64vec2) VectorShuffle 3677 3677 0 1
+            3679:3223(i64vec2) GroupNonUniformIMul 42 ExclusiveScan 3678
+            3680:   3217(ptr) AccessChain 34(data) 3675 3216 38
+            3681: 27(int64_t) CompositeExtract 3679 0
+                              Store 3680 3681
+            3682:   3217(ptr) AccessChain 34(data) 3675 3216 55
+            3683: 27(int64_t) CompositeExtract 3679 1
+                              Store 3682 3683
+            3684:      6(int) Load 8(invocation)
+            3685:   3224(ptr) AccessChain 34(data) 59 3216
+            3686: 28(i64vec4) Load 3685
+            3687:3234(i64vec3) VectorShuffle 3686 3686 0 1 2
+            3688:3234(i64vec3) GroupNonUniformIMul 42 ExclusiveScan 3687
+            3689:   3217(ptr) AccessChain 34(data) 3684 3216 38
+            3690: 27(int64_t) CompositeExtract 3688 0
+                              Store 3689 3690
+            3691:   3217(ptr) AccessChain 34(data) 3684 3216 55
+            3692: 27(int64_t) CompositeExtract 3688 1
+                              Store 3691 3692
+            3693:   3217(ptr) AccessChain 34(data) 3684 3216 69
+            3694: 27(int64_t) CompositeExtract 3688 2
+                              Store 3693 3694
+            3695:      6(int) Load 8(invocation)
+            3696:   3224(ptr) AccessChain 34(data) 73 3216
+            3697: 28(i64vec4) Load 3696
+            3698: 28(i64vec4) GroupNonUniformIMul 42 ExclusiveScan 3697
+            3699:   3224(ptr) AccessChain 34(data) 3695 3216
+                              Store 3699 3698
+            3700:      6(int) Load 8(invocation)
+            3701:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3702: 27(int64_t) Load 3701
+            3703: 27(int64_t) GroupNonUniformUMin 42 ExclusiveScan 3702
+            3704:   3217(ptr) AccessChain 34(data) 3700 3216 38
+                              Store 3704 3703
+            3705:      6(int) Load 8(invocation)
+            3706:   3224(ptr) AccessChain 34(data) 46 3216
+            3707: 28(i64vec4) Load 3706
+            3708:3223(i64vec2) VectorShuffle 3707 3707 0 1
+            3709:3223(i64vec2) GroupNonUniformUMin 42 ExclusiveScan 3708
+            3710:   3217(ptr) AccessChain 34(data) 3705 3216 38
+            3711: 27(int64_t) CompositeExtract 3709 0
+                              Store 3710 3711
+            3712:   3217(ptr) AccessChain 34(data) 3705 3216 55
+            3713: 27(int64_t) CompositeExtract 3709 1
+                              Store 3712 3713
+            3714:      6(int) Load 8(invocation)
+            3715:   3224(ptr) AccessChain 34(data) 59 3216
+            3716: 28(i64vec4) Load 3715
+            3717:3234(i64vec3) VectorShuffle 3716 3716 0 1 2
+            3718:3234(i64vec3) GroupNonUniformUMin 42 ExclusiveScan 3717
+            3719:   3217(ptr) AccessChain 34(data) 3714 3216 38
+            3720: 27(int64_t) CompositeExtract 3718 0
+                              Store 3719 3720
+            3721:   3217(ptr) AccessChain 34(data) 3714 3216 55
+            3722: 27(int64_t) CompositeExtract 3718 1
+                              Store 3721 3722
+            3723:   3217(ptr) AccessChain 34(data) 3714 3216 69
+            3724: 27(int64_t) CompositeExtract 3718 2
+                              Store 3723 3724
+            3725:      6(int) Load 8(invocation)
+            3726:   3224(ptr) AccessChain 34(data) 73 3216
+            3727: 28(i64vec4) Load 3726
+            3728: 28(i64vec4) GroupNonUniformUMin 42 ExclusiveScan 3727
+            3729:   3224(ptr) AccessChain 34(data) 3725 3216
+                              Store 3729 3728
+            3730:      6(int) Load 8(invocation)
+            3731:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3732: 27(int64_t) Load 3731
+            3733: 27(int64_t) GroupNonUniformUMax 42 ExclusiveScan 3732
+            3734:   3217(ptr) AccessChain 34(data) 3730 3216 38
+                              Store 3734 3733
+            3735:      6(int) Load 8(invocation)
+            3736:   3224(ptr) AccessChain 34(data) 46 3216
+            3737: 28(i64vec4) Load 3736
+            3738:3223(i64vec2) VectorShuffle 3737 3737 0 1
+            3739:3223(i64vec2) GroupNonUniformUMax 42 ExclusiveScan 3738
+            3740:   3217(ptr) AccessChain 34(data) 3735 3216 38
+            3741: 27(int64_t) CompositeExtract 3739 0
+                              Store 3740 3741
+            3742:   3217(ptr) AccessChain 34(data) 3735 3216 55
+            3743: 27(int64_t) CompositeExtract 3739 1
+                              Store 3742 3743
+            3744:      6(int) Load 8(invocation)
+            3745:   3224(ptr) AccessChain 34(data) 59 3216
+            3746: 28(i64vec4) Load 3745
+            3747:3234(i64vec3) VectorShuffle 3746 3746 0 1 2
+            3748:3234(i64vec3) GroupNonUniformUMax 42 ExclusiveScan 3747
+            3749:   3217(ptr) AccessChain 34(data) 3744 3216 38
+            3750: 27(int64_t) CompositeExtract 3748 0
+                              Store 3749 3750
+            3751:   3217(ptr) AccessChain 34(data) 3744 3216 55
+            3752: 27(int64_t) CompositeExtract 3748 1
+                              Store 3751 3752
+            3753:   3217(ptr) AccessChain 34(data) 3744 3216 69
+            3754: 27(int64_t) CompositeExtract 3748 2
+                              Store 3753 3754
+            3755:      6(int) Load 8(invocation)
+            3756:   3224(ptr) AccessChain 34(data) 73 3216
+            3757: 28(i64vec4) Load 3756
+            3758: 28(i64vec4) GroupNonUniformUMax 42 ExclusiveScan 3757
+            3759:   3224(ptr) AccessChain 34(data) 3755 3216
+                              Store 3759 3758
+            3760:      6(int) Load 8(invocation)
+            3761:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3762: 27(int64_t) Load 3761
+            3763: 27(int64_t) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3762
+            3764:   3217(ptr) AccessChain 34(data) 3760 3216 38
+                              Store 3764 3763
+            3765:      6(int) Load 8(invocation)
+            3766:   3224(ptr) AccessChain 34(data) 46 3216
+            3767: 28(i64vec4) Load 3766
+            3768:3223(i64vec2) VectorShuffle 3767 3767 0 1
+            3769:3223(i64vec2) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3768
+            3770:   3217(ptr) AccessChain 34(data) 3765 3216 38
+            3771: 27(int64_t) CompositeExtract 3769 0
+                              Store 3770 3771
+            3772:   3217(ptr) AccessChain 34(data) 3765 3216 55
+            3773: 27(int64_t) CompositeExtract 3769 1
+                              Store 3772 3773
+            3774:      6(int) Load 8(invocation)
+            3775:   3224(ptr) AccessChain 34(data) 59 3216
+            3776: 28(i64vec4) Load 3775
+            3777:3234(i64vec3) VectorShuffle 3776 3776 0 1 2
+            3778:3234(i64vec3) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3777
+            3779:   3217(ptr) AccessChain 34(data) 3774 3216 38
+            3780: 27(int64_t) CompositeExtract 3778 0
+                              Store 3779 3780
+            3781:   3217(ptr) AccessChain 34(data) 3774 3216 55
+            3782: 27(int64_t) CompositeExtract 3778 1
+                              Store 3781 3782
+            3783:   3217(ptr) AccessChain 34(data) 3774 3216 69
+            3784: 27(int64_t) CompositeExtract 3778 2
+                              Store 3783 3784
+            3785:      6(int) Load 8(invocation)
+            3786:   3224(ptr) AccessChain 34(data) 73 3216
+            3787: 28(i64vec4) Load 3786
+            3788: 28(i64vec4) GroupNonUniformBitwiseAnd 42 ExclusiveScan 3787
+            3789:   3224(ptr) AccessChain 34(data) 3785 3216
+                              Store 3789 3788
+            3790:      6(int) Load 8(invocation)
+            3791:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3792: 27(int64_t) Load 3791
+            3793: 27(int64_t) GroupNonUniformBitwiseOr 42 ExclusiveScan 3792
+            3794:   3217(ptr) AccessChain 34(data) 3790 3216 38
+                              Store 3794 3793
+            3795:      6(int) Load 8(invocation)
+            3796:   3224(ptr) AccessChain 34(data) 46 3216
+            3797: 28(i64vec4) Load 3796
+            3798:3223(i64vec2) VectorShuffle 3797 3797 0 1
+            3799:3223(i64vec2) GroupNonUniformBitwiseOr 42 ExclusiveScan 3798
+            3800:   3217(ptr) AccessChain 34(data) 3795 3216 38
+            3801: 27(int64_t) CompositeExtract 3799 0
+                              Store 3800 3801
+            3802:   3217(ptr) AccessChain 34(data) 3795 3216 55
+            3803: 27(int64_t) CompositeExtract 3799 1
+                              Store 3802 3803
+            3804:      6(int) Load 8(invocation)
+            3805:   3224(ptr) AccessChain 34(data) 59 3216
+            3806: 28(i64vec4) Load 3805
+            3807:3234(i64vec3) VectorShuffle 3806 3806 0 1 2
+            3808:3234(i64vec3) GroupNonUniformBitwiseOr 42 ExclusiveScan 3807
+            3809:   3217(ptr) AccessChain 34(data) 3804 3216 38
+            3810: 27(int64_t) CompositeExtract 3808 0
+                              Store 3809 3810
+            3811:   3217(ptr) AccessChain 34(data) 3804 3216 55
+            3812: 27(int64_t) CompositeExtract 3808 1
+                              Store 3811 3812
+            3813:   3217(ptr) AccessChain 34(data) 3804 3216 69
+            3814: 27(int64_t) CompositeExtract 3808 2
+                              Store 3813 3814
+            3815:      6(int) Load 8(invocation)
+            3816:   3224(ptr) AccessChain 34(data) 73 3216
+            3817: 28(i64vec4) Load 3816
+            3818: 28(i64vec4) GroupNonUniformBitwiseOr 42 ExclusiveScan 3817
+            3819:   3224(ptr) AccessChain 34(data) 3815 3216
+                              Store 3819 3818
+            3820:      6(int) Load 8(invocation)
+            3821:   3217(ptr) AccessChain 34(data) 37 3216 38
+            3822: 27(int64_t) Load 3821
+            3823: 27(int64_t) GroupNonUniformBitwiseXor 42 ExclusiveScan 3822
+            3824:   3217(ptr) AccessChain 34(data) 3820 3216 38
+                              Store 3824 3823
+            3825:      6(int) Load 8(invocation)
+            3826:   3224(ptr) AccessChain 34(data) 46 3216
+            3827: 28(i64vec4) Load 3826
+            3828:3223(i64vec2) VectorShuffle 3827 3827 0 1
+            3829:3223(i64vec2) GroupNonUniformBitwiseXor 42 ExclusiveScan 3828
+            3830:   3217(ptr) AccessChain 34(data) 3825 3216 38
+            3831: 27(int64_t) CompositeExtract 3829 0
+                              Store 3830 3831
+            3832:   3217(ptr) AccessChain 34(data) 3825 3216 55
+            3833: 27(int64_t) CompositeExtract 3829 1
+                              Store 3832 3833
+            3834:      6(int) Load 8(invocation)
+            3835:   3224(ptr) AccessChain 34(data) 59 3216
+            3836: 28(i64vec4) Load 3835
+            3837:3234(i64vec3) VectorShuffle 3836 3836 0 1 2
+            3838:3234(i64vec3) GroupNonUniformBitwiseXor 42 ExclusiveScan 3837
+            3839:   3217(ptr) AccessChain 34(data) 3834 3216 38
+            3840: 27(int64_t) CompositeExtract 3838 0
+                              Store 3839 3840
+            3841:   3217(ptr) AccessChain 34(data) 3834 3216 55
+            3842: 27(int64_t) CompositeExtract 3838 1
+                              Store 3841 3842
+            3843:   3217(ptr) AccessChain 34(data) 3834 3216 69
+            3844: 27(int64_t) CompositeExtract 3838 2
+                              Store 3843 3844
+            3845:      6(int) Load 8(invocation)
+            3846:   3224(ptr) AccessChain 34(data) 73 3216
+            3847: 28(i64vec4) Load 3846
+            3848: 28(i64vec4) GroupNonUniformBitwiseXor 42 ExclusiveScan 3847
+            3849:   3224(ptr) AccessChain 34(data) 3845 3216
+                              Store 3849 3848
+            3850:      6(int) Load 8(invocation)
+            3853:   3852(ptr) AccessChain 34(data) 37 3851 38
+            3854:29(float16_t) Load 3853
+            3855:29(float16_t) GroupNonUniformFAdd 42 Reduce 3854
+            3856:   3852(ptr) AccessChain 34(data) 3850 3851 38
+                              Store 3856 3855
+            3857:      6(int) Load 8(invocation)
+            3860:   3859(ptr) AccessChain 34(data) 46 3851
+            3861: 30(f16vec4) Load 3860
+            3862:3858(f16vec2) VectorShuffle 3861 3861 0 1
+            3863:3858(f16vec2) GroupNonUniformFAdd 42 Reduce 3862
+            3864:   3852(ptr) AccessChain 34(data) 3857 3851 38
+            3865:29(float16_t) CompositeExtract 3863 0
+                              Store 3864 3865
+            3866:   3852(ptr) AccessChain 34(data) 3857 3851 55
+            3867:29(float16_t) CompositeExtract 3863 1
+                              Store 3866 3867
+            3868:      6(int) Load 8(invocation)
+            3870:   3859(ptr) AccessChain 34(data) 59 3851
+            3871: 30(f16vec4) Load 3870
+            3872:3869(f16vec3) VectorShuffle 3871 3871 0 1 2
+            3873:3869(f16vec3) GroupNonUniformFAdd 42 Reduce 3872
+            3874:   3852(ptr) AccessChain 34(data) 3868 3851 38
+            3875:29(float16_t) CompositeExtract 3873 0
+                              Store 3874 3875
+            3876:   3852(ptr) AccessChain 34(data) 3868 3851 55
+            3877:29(float16_t) CompositeExtract 3873 1
+                              Store 3876 3877
+            3878:   3852(ptr) AccessChain 34(data) 3868 3851 69
+            3879:29(float16_t) CompositeExtract 3873 2
+                              Store 3878 3879
+            3880:      6(int) Load 8(invocation)
+            3881:   3859(ptr) AccessChain 34(data) 73 3851
+            3882: 30(f16vec4) Load 3881
+            3883: 30(f16vec4) GroupNonUniformFAdd 42 Reduce 3882
+            3884:   3859(ptr) AccessChain 34(data) 3880 3851
+                              Store 3884 3883
+            3885:      6(int) Load 8(invocation)
+            3886:   3852(ptr) AccessChain 34(data) 37 3851 38
+            3887:29(float16_t) Load 3886
+            3888:29(float16_t) GroupNonUniformFMul 42 Reduce 3887
+            3889:   3852(ptr) AccessChain 34(data) 3885 3851 38
+                              Store 3889 3888
+            3890:      6(int) Load 8(invocation)
+            3891:   3859(ptr) AccessChain 34(data) 46 3851
+            3892: 30(f16vec4) Load 3891
+            3893:3858(f16vec2) VectorShuffle 3892 3892 0 1
+            3894:3858(f16vec2) GroupNonUniformFMul 42 Reduce 3893
+            3895:   3852(ptr) AccessChain 34(data) 3890 3851 38
+            3896:29(float16_t) CompositeExtract 3894 0
+                              Store 3895 3896
+            3897:   3852(ptr) AccessChain 34(data) 3890 3851 55
+            3898:29(float16_t) CompositeExtract 3894 1
+                              Store 3897 3898
+            3899:      6(int) Load 8(invocation)
+            3900:   3859(ptr) AccessChain 34(data) 59 3851
+            3901: 30(f16vec4) Load 3900
+            3902:3869(f16vec3) VectorShuffle 3901 3901 0 1 2
+            3903:3869(f16vec3) GroupNonUniformFMul 42 Reduce 3902
+            3904:   3852(ptr) AccessChain 34(data) 3899 3851 38
+            3905:29(float16_t) CompositeExtract 3903 0
+                              Store 3904 3905
+            3906:   3852(ptr) AccessChain 34(data) 3899 3851 55
+            3907:29(float16_t) CompositeExtract 3903 1
+                              Store 3906 3907
+            3908:   3852(ptr) AccessChain 34(data) 3899 3851 69
+            3909:29(float16_t) CompositeExtract 3903 2
+                              Store 3908 3909
+            3910:      6(int) Load 8(invocation)
+            3911:   3859(ptr) AccessChain 34(data) 73 3851
+            3912: 30(f16vec4) Load 3911
+            3913: 30(f16vec4) GroupNonUniformFMul 42 Reduce 3912
+            3914:   3859(ptr) AccessChain 34(data) 3910 3851
+                              Store 3914 3913
+            3915:      6(int) Load 8(invocation)
+            3916:   3852(ptr) AccessChain 34(data) 37 3851 38
+            3917:29(float16_t) Load 3916
+            3918:29(float16_t) GroupNonUniformFMin 42 Reduce 3917
+            3919:   3852(ptr) AccessChain 34(data) 3915 3851 38
+                              Store 3919 3918
+            3920:      6(int) Load 8(invocation)
+            3921:   3859(ptr) AccessChain 34(data) 46 3851
+            3922: 30(f16vec4) Load 3921
+            3923:3858(f16vec2) VectorShuffle 3922 3922 0 1
+            3924:3858(f16vec2) GroupNonUniformFMin 42 Reduce 3923
+            3925:   3852(ptr) AccessChain 34(data) 3920 3851 38
+            3926:29(float16_t) CompositeExtract 3924 0
+                              Store 3925 3926
+            3927:   3852(ptr) AccessChain 34(data) 3920 3851 55
+            3928:29(float16_t) CompositeExtract 3924 1
+                              Store 3927 3928
+            3929:      6(int) Load 8(invocation)
+            3930:   3859(ptr) AccessChain 34(data) 59 3851
+            3931: 30(f16vec4) Load 3930
+            3932:3869(f16vec3) VectorShuffle 3931 3931 0 1 2
+            3933:3869(f16vec3) GroupNonUniformFMin 42 Reduce 3932
+            3934:   3852(ptr) AccessChain 34(data) 3929 3851 38
+            3935:29(float16_t) CompositeExtract 3933 0
+                              Store 3934 3935
+            3936:   3852(ptr) AccessChain 34(data) 3929 3851 55
+            3937:29(float16_t) CompositeExtract 3933 1
+                              Store 3936 3937
+            3938:   3852(ptr) AccessChain 34(data) 3929 3851 69
+            3939:29(float16_t) CompositeExtract 3933 2
+                              Store 3938 3939
+            3940:      6(int) Load 8(invocation)
+            3941:   3859(ptr) AccessChain 34(data) 73 3851
+            3942: 30(f16vec4) Load 3941
+            3943: 30(f16vec4) GroupNonUniformFMin 42 Reduce 3942
+            3944:   3859(ptr) AccessChain 34(data) 3940 3851
+                              Store 3944 3943
+            3945:      6(int) Load 8(invocation)
+            3946:   3852(ptr) AccessChain 34(data) 37 3851 38
+            3947:29(float16_t) Load 3946
+            3948:29(float16_t) GroupNonUniformFMax 42 Reduce 3947
+            3949:   3852(ptr) AccessChain 34(data) 3945 3851 38
+                              Store 3949 3948
+            3950:      6(int) Load 8(invocation)
+            3951:   3859(ptr) AccessChain 34(data) 46 3851
+            3952: 30(f16vec4) Load 3951
+            3953:3858(f16vec2) VectorShuffle 3952 3952 0 1
+            3954:3858(f16vec2) GroupNonUniformFMax 42 Reduce 3953
+            3955:   3852(ptr) AccessChain 34(data) 3950 3851 38
+            3956:29(float16_t) CompositeExtract 3954 0
+                              Store 3955 3956
+            3957:   3852(ptr) AccessChain 34(data) 3950 3851 55
+            3958:29(float16_t) CompositeExtract 3954 1
+                              Store 3957 3958
+            3959:      6(int) Load 8(invocation)
+            3960:   3859(ptr) AccessChain 34(data) 59 3851
+            3961: 30(f16vec4) Load 3960
+            3962:3869(f16vec3) VectorShuffle 3961 3961 0 1 2
+            3963:3869(f16vec3) GroupNonUniformFMax 42 Reduce 3962
+            3964:   3852(ptr) AccessChain 34(data) 3959 3851 38
+            3965:29(float16_t) CompositeExtract 3963 0
+                              Store 3964 3965
+            3966:   3852(ptr) AccessChain 34(data) 3959 3851 55
+            3967:29(float16_t) CompositeExtract 3963 1
+                              Store 3966 3967
+            3968:   3852(ptr) AccessChain 34(data) 3959 3851 69
+            3969:29(float16_t) CompositeExtract 3963 2
+                              Store 3968 3969
+            3970:      6(int) Load 8(invocation)
+            3971:   3859(ptr) AccessChain 34(data) 73 3851
+            3972: 30(f16vec4) Load 3971
+            3973: 30(f16vec4) GroupNonUniformFMax 42 Reduce 3972
+            3974:   3859(ptr) AccessChain 34(data) 3970 3851
+                              Store 3974 3973
+            3975:      6(int) Load 8(invocation)
+            3976:   3852(ptr) AccessChain 34(data) 37 3851 38
+            3977:29(float16_t) Load 3976
+            3978:29(float16_t) GroupNonUniformFAdd 42 InclusiveScan 3977
+            3979:   3852(ptr) AccessChain 34(data) 3975 3851 38
+                              Store 3979 3978
+            3980:      6(int) Load 8(invocation)
+            3981:   3859(ptr) AccessChain 34(data) 46 3851
+            3982: 30(f16vec4) Load 3981
+            3983:3858(f16vec2) VectorShuffle 3982 3982 0 1
+            3984:3858(f16vec2) GroupNonUniformFAdd 42 InclusiveScan 3983
+            3985:   3852(ptr) AccessChain 34(data) 3980 3851 38
+            3986:29(float16_t) CompositeExtract 3984 0
+                              Store 3985 3986
+            3987:   3852(ptr) AccessChain 34(data) 3980 3851 55
+            3988:29(float16_t) CompositeExtract 3984 1
+                              Store 3987 3988
+            3989:      6(int) Load 8(invocation)
+            3990:   3859(ptr) AccessChain 34(data) 59 3851
+            3991: 30(f16vec4) Load 3990
+            3992:3869(f16vec3) VectorShuffle 3991 3991 0 1 2
+            3993:3869(f16vec3) GroupNonUniformFAdd 42 InclusiveScan 3992
+            3994:   3852(ptr) AccessChain 34(data) 3989 3851 38
+            3995:29(float16_t) CompositeExtract 3993 0
+                              Store 3994 3995
+            3996:   3852(ptr) AccessChain 34(data) 3989 3851 55
+            3997:29(float16_t) CompositeExtract 3993 1
+                              Store 3996 3997
+            3998:   3852(ptr) AccessChain 34(data) 3989 3851 69
+            3999:29(float16_t) CompositeExtract 3993 2
+                              Store 3998 3999
+            4000:      6(int) Load 8(invocation)
+            4001:   3859(ptr) AccessChain 34(data) 73 3851
+            4002: 30(f16vec4) Load 4001
+            4003: 30(f16vec4) GroupNonUniformFAdd 42 InclusiveScan 4002
+            4004:   3859(ptr) AccessChain 34(data) 4000 3851
+                              Store 4004 4003
+            4005:      6(int) Load 8(invocation)
+            4006:   3852(ptr) AccessChain 34(data) 37 3851 38
+            4007:29(float16_t) Load 4006
+            4008:29(float16_t) GroupNonUniformFMul 42 InclusiveScan 4007
+            4009:   3852(ptr) AccessChain 34(data) 4005 3851 38
+                              Store 4009 4008
+            4010:      6(int) Load 8(invocation)
+            4011:   3859(ptr) AccessChain 34(data) 46 3851
+            4012: 30(f16vec4) Load 4011
+            4013:3858(f16vec2) VectorShuffle 4012 4012 0 1
+            4014:3858(f16vec2) GroupNonUniformFMul 42 InclusiveScan 4013
+            4015:   3852(ptr) AccessChain 34(data) 4010 3851 38
+            4016:29(float16_t) CompositeExtract 4014 0
+                              Store 4015 4016
+            4017:   3852(ptr) AccessChain 34(data) 4010 3851 55
+            4018:29(float16_t) CompositeExtract 4014 1
+                              Store 4017 4018
+            4019:      6(int) Load 8(invocation)
+            4020:   3859(ptr) AccessChain 34(data) 59 3851
+            4021: 30(f16vec4) Load 4020
+            4022:3869(f16vec3) VectorShuffle 4021 4021 0 1 2
+            4023:3869(f16vec3) GroupNonUniformFMul 42 InclusiveScan 4022
+            4024:   3852(ptr) AccessChain 34(data) 4019 3851 38
+            4025:29(float16_t) CompositeExtract 4023 0
+                              Store 4024 4025
+            4026:   3852(ptr) AccessChain 34(data) 4019 3851 55
+            4027:29(float16_t) CompositeExtract 4023 1
+                              Store 4026 4027
+            4028:   3852(ptr) AccessChain 34(data) 4019 3851 69
+            4029:29(float16_t) CompositeExtract 4023 2
+                              Store 4028 4029
+            4030:      6(int) Load 8(invocation)
+            4031:   3859(ptr) AccessChain 34(data) 73 3851
+            4032: 30(f16vec4) Load 4031
+            4033: 30(f16vec4) GroupNonUniformFMul 42 InclusiveScan 4032
+            4034:   3859(ptr) AccessChain 34(data) 4030 3851
+                              Store 4034 4033
+            4035:      6(int) Load 8(invocation)
+            4036:   3852(ptr) AccessChain 34(data) 37 3851 38
+            4037:29(float16_t) Load 4036
+            4038:29(float16_t) GroupNonUniformFMin 42 InclusiveScan 4037
+            4039:   3852(ptr) AccessChain 34(data) 4035 3851 38
+                              Store 4039 4038
+            4040:      6(int) Load 8(invocation)
+            4041:   3859(ptr) AccessChain 34(data) 46 3851
+            4042: 30(f16vec4) Load 4041
+            4043:3858(f16vec2) VectorShuffle 4042 4042 0 1
+            4044:3858(f16vec2) GroupNonUniformFMin 42 InclusiveScan 4043
+            4045:   3852(ptr) AccessChain 34(data) 4040 3851 38
+            4046:29(float16_t) CompositeExtract 4044 0
+                              Store 4045 4046
+            4047:   3852(ptr) AccessChain 34(data) 4040 3851 55
+            4048:29(float16_t) CompositeExtract 4044 1
+                              Store 4047 4048
+            4049:      6(int) Load 8(invocation)
+            4050:   3859(ptr) AccessChain 34(data) 59 3851
+            4051: 30(f16vec4) Load 4050
+            4052:3869(f16vec3) VectorShuffle 4051 4051 0 1 2
+            4053:3869(f16vec3) GroupNonUniformFMin 42 InclusiveScan 4052
+            4054:   3852(ptr) AccessChain 34(data) 4049 3851 38
+            4055:29(float16_t) CompositeExtract 4053 0
+                              Store 4054 4055
+            4056:   3852(ptr) AccessChain 34(data) 4049 3851 55
+            4057:29(float16_t) CompositeExtract 4053 1
+                              Store 4056 4057
+            4058:   3852(ptr) AccessChain 34(data) 4049 3851 69
+            4059:29(float16_t) CompositeExtract 4053 2
+                              Store 4058 4059
+            4060:      6(int) Load 8(invocation)
+            4061:   3859(ptr) AccessChain 34(data) 73 3851
+            4062: 30(f16vec4) Load 4061
+            4063: 30(f16vec4) GroupNonUniformFMin 42 InclusiveScan 4062
+            4064:   3859(ptr) AccessChain 34(data) 4060 3851
+                              Store 4064 4063
+            4065:      6(int) Load 8(invocation)
+            4066:   3852(ptr) AccessChain 34(data) 37 3851 38
+            4067:29(float16_t) Load 4066
+            4068:29(float16_t) GroupNonUniformFMax 42 InclusiveScan 4067
+            4069:   3852(ptr) AccessChain 34(data) 4065 3851 38
+                              Store 4069 4068
+            4070:      6(int) Load 8(invocation)
+            4071:   3859(ptr) AccessChain 34(data) 46 3851
+            4072: 30(f16vec4) Load 4071
+            4073:3858(f16vec2) VectorShuffle 4072 4072 0 1
+            4074:3858(f16vec2) GroupNonUniformFMax 42 InclusiveScan 4073
+            4075:   3852(ptr) AccessChain 34(data) 4070 3851 38
+            4076:29(float16_t) CompositeExtract 4074 0
+                              Store 4075 4076
+            4077:   3852(ptr) AccessChain 34(data) 4070 3851 55
+            4078:29(float16_t) CompositeExtract 4074 1
+                              Store 4077 4078
+            4079:      6(int) Load 8(invocation)
+            4080:   3859(ptr) AccessChain 34(data) 59 3851
+            4081: 30(f16vec4) Load 4080
+            4082:3869(f16vec3) VectorShuffle 4081 4081 0 1 2
+            4083:3869(f16vec3) GroupNonUniformFMax 42 InclusiveScan 4082
+            4084:   3852(ptr) AccessChain 34(data) 4079 3851 38
+            4085:29(float16_t) CompositeExtract 4083 0
+                              Store 4084 4085
+            4086:   3852(ptr) AccessChain 34(data) 4079 3851 55
+            4087:29(float16_t) CompositeExtract 4083 1
+                              Store 4086 4087
+            4088:   3852(ptr) AccessChain 34(data) 4079 3851 69
+            4089:29(float16_t) CompositeExtract 4083 2
+                              Store 4088 4089
+            4090:      6(int) Load 8(invocation)
+            4091:   3859(ptr) AccessChain 34(data) 73 3851
+            4092: 30(f16vec4) Load 4091
+            4093: 30(f16vec4) GroupNonUniformFMax 42 InclusiveScan 4092
+            4094:   3859(ptr) AccessChain 34(data) 4090 3851
+                              Store 4094 4093
+            4095:      6(int) Load 8(invocation)
+            4096:   3852(ptr) AccessChain 34(data) 37 3851 38
+            4097:29(float16_t) Load 4096
+            4098:29(float16_t) GroupNonUniformFAdd 42 ExclusiveScan 4097
+            4099:   3852(ptr) AccessChain 34(data) 4095 3851 38
+                              Store 4099 4098
+            4100:      6(int) Load 8(invocation)
+            4101:   3859(ptr) AccessChain 34(data) 46 3851
+            4102: 30(f16vec4) Load 4101
+            4103:3858(f16vec2) VectorShuffle 4102 4102 0 1
+            4104:3858(f16vec2) GroupNonUniformFAdd 42 ExclusiveScan 4103
+            4105:   3852(ptr) AccessChain 34(data) 4100 3851 38
+            4106:29(float16_t) CompositeExtract 4104 0
+                              Store 4105 4106
+            4107:   3852(ptr) AccessChain 34(data) 4100 3851 55
+            4108:29(float16_t) CompositeExtract 4104 1
+                              Store 4107 4108
+            4109:      6(int) Load 8(invocation)
+            4110:   3859(ptr) AccessChain 34(data) 59 3851
+            4111: 30(f16vec4) Load 4110
+            4112:3869(f16vec3) VectorShuffle 4111 4111 0 1 2
+            4113:3869(f16vec3) GroupNonUniformFAdd 42 ExclusiveScan 4112
+            4114:   3852(ptr) AccessChain 34(data) 4109 3851 38
+            4115:29(float16_t) CompositeExtract 4113 0
+                              Store 4114 4115
+            4116:   3852(ptr) AccessChain 34(data) 4109 3851 55
+            4117:29(float16_t) CompositeExtract 4113 1
+                              Store 4116 4117
+            4118:   3852(ptr) AccessChain 34(data) 4109 3851 69
+            4119:29(float16_t) CompositeExtract 4113 2
+                              Store 4118 4119
+            4120:      6(int) Load 8(invocation)
+            4121:   3859(ptr) AccessChain 34(data) 73 3851
+            4122: 30(f16vec4) Load 4121
+            4123: 30(f16vec4) GroupNonUniformFAdd 42 ExclusiveScan 4122
+            4124:   3859(ptr) AccessChain 34(data) 4120 3851
+                              Store 4124 4123
+            4125:      6(int) Load 8(invocation)
+            4126:   3852(ptr) AccessChain 34(data) 37 3851 38
+            4127:29(float16_t) Load 4126
+            4128:29(float16_t) GroupNonUniformFMul 42 ExclusiveScan 4127
+            4129:   3852(ptr) AccessChain 34(data) 4125 3851 38
+                              Store 4129 4128
+            4130:      6(int) Load 8(invocation)
+            4131:   3859(ptr) AccessChain 34(data) 46 3851
+            4132: 30(f16vec4) Load 4131
+            4133:3858(f16vec2) VectorShuffle 4132 4132 0 1
+            4134:3858(f16vec2) GroupNonUniformFMul 42 ExclusiveScan 4133
+            4135:   3852(ptr) AccessChain 34(data) 4130 3851 38
+            4136:29(float16_t) CompositeExtract 4134 0
+                              Store 4135 4136
+            4137:   3852(ptr) AccessChain 34(data) 4130 3851 55
+            4138:29(float16_t) CompositeExtract 4134 1
+                              Store 4137 4138
+            4139:      6(int) Load 8(invocation)
+            4140:   3859(ptr) AccessChain 34(data) 59 3851
+            4141: 30(f16vec4) Load 4140
+            4142:3869(f16vec3) VectorShuffle 4141 4141 0 1 2
+            4143:3869(f16vec3) GroupNonUniformFMul 42 ExclusiveScan 4142
+            4144:   3852(ptr) AccessChain 34(data) 4139 3851 38
+            4145:29(float16_t) CompositeExtract 4143 0
+                              Store 4144 4145
+            4146:   3852(ptr) AccessChain 34(data) 4139 3851 55
+            4147:29(float16_t) CompositeExtract 4143 1
+                              Store 4146 4147
+            4148:   3852(ptr) AccessChain 34(data) 4139 3851 69
+            4149:29(float16_t) CompositeExtract 4143 2
+                              Store 4148 4149
+            4150:      6(int) Load 8(invocation)
+            4151:   3859(ptr) AccessChain 34(data) 73 3851
+            4152: 30(f16vec4) Load 4151
+            4153: 30(f16vec4) GroupNonUniformFMul 42 ExclusiveScan 4152
+            4154:   3859(ptr) AccessChain 34(data) 4150 3851
+                              Store 4154 4153
+            4155:      6(int) Load 8(invocation)
+            4156:   3852(ptr) AccessChain 34(data) 37 3851 38
+            4157:29(float16_t) Load 4156
+            4158:29(float16_t) GroupNonUniformFMin 42 ExclusiveScan 4157
+            4159:   3852(ptr) AccessChain 34(data) 4155 3851 38
+                              Store 4159 4158
+            4160:      6(int) Load 8(invocation)
+            4161:   3859(ptr) AccessChain 34(data) 46 3851
+            4162: 30(f16vec4) Load 4161
+            4163:3858(f16vec2) VectorShuffle 4162 4162 0 1
+            4164:3858(f16vec2) GroupNonUniformFMin 42 ExclusiveScan 4163
+            4165:   3852(ptr) AccessChain 34(data) 4160 3851 38
+            4166:29(float16_t) CompositeExtract 4164 0
+                              Store 4165 4166
+            4167:   3852(ptr) AccessChain 34(data) 4160 3851 55
+            4168:29(float16_t) CompositeExtract 4164 1
+                              Store 4167 4168
+            4169:      6(int) Load 8(invocation)
+            4170:   3859(ptr) AccessChain 34(data) 59 3851
+            4171: 30(f16vec4) Load 4170
+            4172:3869(f16vec3) VectorShuffle 4171 4171 0 1 2
+            4173:3869(f16vec3) GroupNonUniformFMin 42 ExclusiveScan 4172
+            4174:   3852(ptr) AccessChain 34(data) 4169 3851 38
+            4175:29(float16_t) CompositeExtract 4173 0
+                              Store 4174 4175
+            4176:   3852(ptr) AccessChain 34(data) 4169 3851 55
+            4177:29(float16_t) CompositeExtract 4173 1
+                              Store 4176 4177
+            4178:   3852(ptr) AccessChain 34(data) 4169 3851 69
+            4179:29(float16_t) CompositeExtract 4173 2
+                              Store 4178 4179
+            4180:      6(int) Load 8(invocation)
+            4181:   3859(ptr) AccessChain 34(data) 73 3851
+            4182: 30(f16vec4) Load 4181
+            4183: 30(f16vec4) GroupNonUniformFMin 42 ExclusiveScan 4182
+            4184:   3859(ptr) AccessChain 34(data) 4180 3851
+                              Store 4184 4183
+            4185:      6(int) Load 8(invocation)
+            4186:   3852(ptr) AccessChain 34(data) 37 3851 38
+            4187:29(float16_t) Load 4186
+            4188:29(float16_t) GroupNonUniformFMax 42 ExclusiveScan 4187
+            4189:   3852(ptr) AccessChain 34(data) 4185 3851 38
+                              Store 4189 4188
+            4190:      6(int) Load 8(invocation)
+            4191:   3859(ptr) AccessChain 34(data) 46 3851
+            4192: 30(f16vec4) Load 4191
+            4193:3858(f16vec2) VectorShuffle 4192 4192 0 1
+            4194:3858(f16vec2) GroupNonUniformFMax 42 ExclusiveScan 4193
+            4195:   3852(ptr) AccessChain 34(data) 4190 3851 38
+            4196:29(float16_t) CompositeExtract 4194 0
+                              Store 4195 4196
+            4197:   3852(ptr) AccessChain 34(data) 4190 3851 55
+            4198:29(float16_t) CompositeExtract 4194 1
+                              Store 4197 4198
+            4199:      6(int) Load 8(invocation)
+            4200:   3859(ptr) AccessChain 34(data) 59 3851
+            4201: 30(f16vec4) Load 4200
+            4202:3869(f16vec3) VectorShuffle 4201 4201 0 1 2
+            4203:3869(f16vec3) GroupNonUniformFMax 42 ExclusiveScan 4202
+            4204:   3852(ptr) AccessChain 34(data) 4199 3851 38
+            4205:29(float16_t) CompositeExtract 4203 0
+                              Store 4204 4205
+            4206:   3852(ptr) AccessChain 34(data) 4199 3851 55
+            4207:29(float16_t) CompositeExtract 4203 1
+                              Store 4206 4207
+            4208:   3852(ptr) AccessChain 34(data) 4199 3851 69
+            4209:29(float16_t) CompositeExtract 4203 2
+                              Store 4208 4209
+            4210:      6(int) Load 8(invocation)
+            4211:   3859(ptr) AccessChain 34(data) 73 3851
+            4212: 30(f16vec4) Load 4211
+            4213: 30(f16vec4) GroupNonUniformFMax 42 ExclusiveScan 4212
+            4214:   3859(ptr) AccessChain 34(data) 4210 3851
+                              Store 4214 4213
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out
index f503f8c..60f01bc 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out
@@ -1,7 +1,7 @@
 spv.subgroupExtendedTypesBallot.comp
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 441
+// Id's are bound by 498
 
                               Capability Shader
                               Capability Float16
@@ -59,7 +59,7 @@
                               Decorate 31(Buffers) Block
                               Decorate 34(data) DescriptorSet 0
                               Decorate 34(data) Binding 0
-                              Decorate 440 BuiltIn WorkgroupSize
+                              Decorate 497 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -94,40 +94,41 @@
               46:     36(int) Constant 1
               47:             TypeVector 17(int8_t) 2
               48:             TypePointer StorageBuffer 18(i8vec4)
-              57:     36(int) Constant 2
-              58:             TypeVector 17(int8_t) 3
-              67:     36(int) Constant 3
-              99:             TypePointer StorageBuffer 19(int8_t)
-             105:             TypeVector 19(int8_t) 2
-             106:             TypePointer StorageBuffer 20(i8vec4)
-             115:             TypeVector 19(int8_t) 3
-             155:             TypePointer StorageBuffer 21(int16_t)
-             161:             TypeVector 21(int16_t) 2
-             162:             TypePointer StorageBuffer 22(i16vec4)
-             171:             TypeVector 21(int16_t) 3
-             211:             TypePointer StorageBuffer 23(int16_t)
-             217:             TypeVector 23(int16_t) 2
-             218:             TypePointer StorageBuffer 24(i16vec4)
-             227:             TypeVector 23(int16_t) 3
-             267:     36(int) Constant 4
-             268:             TypePointer StorageBuffer 25(int64_t)
-             274:             TypeVector 25(int64_t) 2
-             275:             TypePointer StorageBuffer 26(i64vec4)
-             284:             TypeVector 25(int64_t) 3
-             324:     36(int) Constant 5
-             325:             TypePointer StorageBuffer 27(int64_t)
-             331:             TypeVector 27(int64_t) 2
-             332:             TypePointer StorageBuffer 28(i64vec4)
-             341:             TypeVector 27(int64_t) 3
-             381:     36(int) Constant 6
-             382:             TypePointer StorageBuffer 29(float16_t)
-             388:             TypeVector 29(float16_t) 2
-             389:             TypePointer StorageBuffer 30(f16vec4)
-             398:             TypeVector 29(float16_t) 3
-             437:             TypeVector 6(int) 3
-             438:      6(int) Constant 8
-             439:      6(int) Constant 1
-             440:  437(ivec3) ConstantComposite 438 439 439
+              55:      6(int) Constant 1
+              59:     36(int) Constant 2
+              60:             TypeVector 17(int8_t) 3
+              69:      6(int) Constant 2
+              73:     36(int) Constant 3
+             109:             TypePointer StorageBuffer 19(int8_t)
+             115:             TypeVector 19(int8_t) 2
+             116:             TypePointer StorageBuffer 20(i8vec4)
+             126:             TypeVector 19(int8_t) 3
+             173:             TypePointer StorageBuffer 21(int16_t)
+             179:             TypeVector 21(int16_t) 2
+             180:             TypePointer StorageBuffer 22(i16vec4)
+             190:             TypeVector 21(int16_t) 3
+             237:             TypePointer StorageBuffer 23(int16_t)
+             243:             TypeVector 23(int16_t) 2
+             244:             TypePointer StorageBuffer 24(i16vec4)
+             254:             TypeVector 23(int16_t) 3
+             301:     36(int) Constant 4
+             302:             TypePointer StorageBuffer 25(int64_t)
+             308:             TypeVector 25(int64_t) 2
+             309:             TypePointer StorageBuffer 26(i64vec4)
+             319:             TypeVector 25(int64_t) 3
+             366:     36(int) Constant 5
+             367:             TypePointer StorageBuffer 27(int64_t)
+             373:             TypeVector 27(int64_t) 2
+             374:             TypePointer StorageBuffer 28(i64vec4)
+             384:             TypeVector 27(int64_t) 3
+             431:     36(int) Constant 6
+             432:             TypePointer StorageBuffer 29(float16_t)
+             438:             TypeVector 29(float16_t) 2
+             439:             TypePointer StorageBuffer 30(f16vec4)
+             449:             TypeVector 29(float16_t) 3
+             495:             TypeVector 6(int) 3
+             496:      6(int) Constant 8
+             497:  495(ivec3) ConstantComposite 496 55 55
          4(main):           2 Function None 3
                5:             Label
    8(invocation):      7(ptr) Variable Function
@@ -147,414 +148,512 @@
               50:  18(i8vec4) Load 49
               51:  47(i8vec2) VectorShuffle 50 50 0 1
               52:  47(i8vec2) GroupNonUniformBroadcast 42 51 42
-              53:     48(ptr) AccessChain 34(data) 45 37
-              54:  18(i8vec4) Load 53
-              55:  18(i8vec4) VectorShuffle 54 52 4 5 2 3
-                              Store 53 55
-              56:      6(int) Load 8(invocation)
-              59:     48(ptr) AccessChain 34(data) 57 37
-              60:  18(i8vec4) Load 59
-              61:  58(i8vec3) VectorShuffle 60 60 0 1 2
-              62:  58(i8vec3) GroupNonUniformBroadcast 42 61 42
-              63:     48(ptr) AccessChain 34(data) 56 37
-              64:  18(i8vec4) Load 63
-              65:  18(i8vec4) VectorShuffle 64 62 4 5 6 3
-                              Store 63 65
-              66:      6(int) Load 8(invocation)
-              68:     48(ptr) AccessChain 34(data) 67 37
-              69:  18(i8vec4) Load 68
-              70:  18(i8vec4) GroupNonUniformBroadcast 42 69 42
-              71:     48(ptr) AccessChain 34(data) 66 37
-                              Store 71 70
+              53:     39(ptr) AccessChain 34(data) 45 37 38
+              54:  17(int8_t) CompositeExtract 52 0
+                              Store 53 54
+              56:     39(ptr) AccessChain 34(data) 45 37 55
+              57:  17(int8_t) CompositeExtract 52 1
+                              Store 56 57
+              58:      6(int) Load 8(invocation)
+              61:     48(ptr) AccessChain 34(data) 59 37
+              62:  18(i8vec4) Load 61
+              63:  60(i8vec3) VectorShuffle 62 62 0 1 2
+              64:  60(i8vec3) GroupNonUniformBroadcast 42 63 42
+              65:     39(ptr) AccessChain 34(data) 58 37 38
+              66:  17(int8_t) CompositeExtract 64 0
+                              Store 65 66
+              67:     39(ptr) AccessChain 34(data) 58 37 55
+              68:  17(int8_t) CompositeExtract 64 1
+                              Store 67 68
+              70:     39(ptr) AccessChain 34(data) 58 37 69
+              71:  17(int8_t) CompositeExtract 64 2
+                              Store 70 71
               72:      6(int) Load 8(invocation)
-              73:     39(ptr) AccessChain 34(data) 37 37 38
-              74:  17(int8_t) Load 73
-              75:  17(int8_t) GroupNonUniformBroadcastFirst 42 74
-              76:     39(ptr) AccessChain 34(data) 72 37 38
-                              Store 76 75
-              77:      6(int) Load 8(invocation)
-              78:     48(ptr) AccessChain 34(data) 46 37
-              79:  18(i8vec4) Load 78
-              80:  47(i8vec2) VectorShuffle 79 79 0 1
-              81:  47(i8vec2) GroupNonUniformBroadcastFirst 42 80
-              82:     48(ptr) AccessChain 34(data) 77 37
-              83:  18(i8vec4) Load 82
-              84:  18(i8vec4) VectorShuffle 83 81 4 5 2 3
-                              Store 82 84
-              85:      6(int) Load 8(invocation)
-              86:     48(ptr) AccessChain 34(data) 57 37
-              87:  18(i8vec4) Load 86
-              88:  58(i8vec3) VectorShuffle 87 87 0 1 2
-              89:  58(i8vec3) GroupNonUniformBroadcastFirst 42 88
-              90:     48(ptr) AccessChain 34(data) 85 37
-              91:  18(i8vec4) Load 90
-              92:  18(i8vec4) VectorShuffle 91 89 4 5 6 3
-                              Store 90 92
-              93:      6(int) Load 8(invocation)
-              94:     48(ptr) AccessChain 34(data) 67 37
-              95:  18(i8vec4) Load 94
-              96:  18(i8vec4) GroupNonUniformBroadcastFirst 42 95
-              97:     48(ptr) AccessChain 34(data) 93 37
-                              Store 97 96
-              98:      6(int) Load 8(invocation)
-             100:     99(ptr) AccessChain 34(data) 37 46 38
-             101:  19(int8_t) Load 100
-             102:  19(int8_t) GroupNonUniformBroadcast 42 101 42
-             103:     99(ptr) AccessChain 34(data) 98 46 38
-                              Store 103 102
-             104:      6(int) Load 8(invocation)
-             107:    106(ptr) AccessChain 34(data) 46 46
-             108:  20(i8vec4) Load 107
-             109: 105(i8vec2) VectorShuffle 108 108 0 1
-             110: 105(i8vec2) GroupNonUniformBroadcast 42 109 42
-             111:    106(ptr) AccessChain 34(data) 104 46
-             112:  20(i8vec4) Load 111
-             113:  20(i8vec4) VectorShuffle 112 110 4 5 2 3
-                              Store 111 113
+              74:     48(ptr) AccessChain 34(data) 73 37
+              75:  18(i8vec4) Load 74
+              76:  18(i8vec4) GroupNonUniformBroadcast 42 75 42
+              77:     48(ptr) AccessChain 34(data) 72 37
+                              Store 77 76
+              78:      6(int) Load 8(invocation)
+              79:     39(ptr) AccessChain 34(data) 37 37 38
+              80:  17(int8_t) Load 79
+              81:  17(int8_t) GroupNonUniformBroadcastFirst 42 80
+              82:     39(ptr) AccessChain 34(data) 78 37 38
+                              Store 82 81
+              83:      6(int) Load 8(invocation)
+              84:     48(ptr) AccessChain 34(data) 46 37
+              85:  18(i8vec4) Load 84
+              86:  47(i8vec2) VectorShuffle 85 85 0 1
+              87:  47(i8vec2) GroupNonUniformBroadcastFirst 42 86
+              88:     39(ptr) AccessChain 34(data) 83 37 38
+              89:  17(int8_t) CompositeExtract 87 0
+                              Store 88 89
+              90:     39(ptr) AccessChain 34(data) 83 37 55
+              91:  17(int8_t) CompositeExtract 87 1
+                              Store 90 91
+              92:      6(int) Load 8(invocation)
+              93:     48(ptr) AccessChain 34(data) 59 37
+              94:  18(i8vec4) Load 93
+              95:  60(i8vec3) VectorShuffle 94 94 0 1 2
+              96:  60(i8vec3) GroupNonUniformBroadcastFirst 42 95
+              97:     39(ptr) AccessChain 34(data) 92 37 38
+              98:  17(int8_t) CompositeExtract 96 0
+                              Store 97 98
+              99:     39(ptr) AccessChain 34(data) 92 37 55
+             100:  17(int8_t) CompositeExtract 96 1
+                              Store 99 100
+             101:     39(ptr) AccessChain 34(data) 92 37 69
+             102:  17(int8_t) CompositeExtract 96 2
+                              Store 101 102
+             103:      6(int) Load 8(invocation)
+             104:     48(ptr) AccessChain 34(data) 73 37
+             105:  18(i8vec4) Load 104
+             106:  18(i8vec4) GroupNonUniformBroadcastFirst 42 105
+             107:     48(ptr) AccessChain 34(data) 103 37
+                              Store 107 106
+             108:      6(int) Load 8(invocation)
+             110:    109(ptr) AccessChain 34(data) 37 46 38
+             111:  19(int8_t) Load 110
+             112:  19(int8_t) GroupNonUniformBroadcast 42 111 42
+             113:    109(ptr) AccessChain 34(data) 108 46 38
+                              Store 113 112
              114:      6(int) Load 8(invocation)
-             116:    106(ptr) AccessChain 34(data) 57 46
-             117:  20(i8vec4) Load 116
-             118: 115(i8vec3) VectorShuffle 117 117 0 1 2
-             119: 115(i8vec3) GroupNonUniformBroadcast 42 118 42
-             120:    106(ptr) AccessChain 34(data) 114 46
-             121:  20(i8vec4) Load 120
-             122:  20(i8vec4) VectorShuffle 121 119 4 5 6 3
-                              Store 120 122
-             123:      6(int) Load 8(invocation)
-             124:    106(ptr) AccessChain 34(data) 67 46
-             125:  20(i8vec4) Load 124
-             126:  20(i8vec4) GroupNonUniformBroadcast 42 125 42
-             127:    106(ptr) AccessChain 34(data) 123 46
-                              Store 127 126
-             128:      6(int) Load 8(invocation)
-             129:     99(ptr) AccessChain 34(data) 37 46 38
-             130:  19(int8_t) Load 129
-             131:  19(int8_t) GroupNonUniformBroadcastFirst 42 130
-             132:     99(ptr) AccessChain 34(data) 128 46 38
-                              Store 132 131
-             133:      6(int) Load 8(invocation)
-             134:    106(ptr) AccessChain 34(data) 46 46
-             135:  20(i8vec4) Load 134
-             136: 105(i8vec2) VectorShuffle 135 135 0 1
-             137: 105(i8vec2) GroupNonUniformBroadcastFirst 42 136
-             138:    106(ptr) AccessChain 34(data) 133 46
+             117:    116(ptr) AccessChain 34(data) 46 46
+             118:  20(i8vec4) Load 117
+             119: 115(i8vec2) VectorShuffle 118 118 0 1
+             120: 115(i8vec2) GroupNonUniformBroadcast 42 119 42
+             121:    109(ptr) AccessChain 34(data) 114 46 38
+             122:  19(int8_t) CompositeExtract 120 0
+                              Store 121 122
+             123:    109(ptr) AccessChain 34(data) 114 46 55
+             124:  19(int8_t) CompositeExtract 120 1
+                              Store 123 124
+             125:      6(int) Load 8(invocation)
+             127:    116(ptr) AccessChain 34(data) 59 46
+             128:  20(i8vec4) Load 127
+             129: 126(i8vec3) VectorShuffle 128 128 0 1 2
+             130: 126(i8vec3) GroupNonUniformBroadcast 42 129 42
+             131:    109(ptr) AccessChain 34(data) 125 46 38
+             132:  19(int8_t) CompositeExtract 130 0
+                              Store 131 132
+             133:    109(ptr) AccessChain 34(data) 125 46 55
+             134:  19(int8_t) CompositeExtract 130 1
+                              Store 133 134
+             135:    109(ptr) AccessChain 34(data) 125 46 69
+             136:  19(int8_t) CompositeExtract 130 2
+                              Store 135 136
+             137:      6(int) Load 8(invocation)
+             138:    116(ptr) AccessChain 34(data) 73 46
              139:  20(i8vec4) Load 138
-             140:  20(i8vec4) VectorShuffle 139 137 4 5 2 3
-                              Store 138 140
-             141:      6(int) Load 8(invocation)
-             142:    106(ptr) AccessChain 34(data) 57 46
-             143:  20(i8vec4) Load 142
-             144: 115(i8vec3) VectorShuffle 143 143 0 1 2
-             145: 115(i8vec3) GroupNonUniformBroadcastFirst 42 144
-             146:    106(ptr) AccessChain 34(data) 141 46
-             147:  20(i8vec4) Load 146
-             148:  20(i8vec4) VectorShuffle 147 145 4 5 6 3
-                              Store 146 148
-             149:      6(int) Load 8(invocation)
-             150:    106(ptr) AccessChain 34(data) 67 46
-             151:  20(i8vec4) Load 150
-             152:  20(i8vec4) GroupNonUniformBroadcastFirst 42 151
-             153:    106(ptr) AccessChain 34(data) 149 46
-                              Store 153 152
-             154:      6(int) Load 8(invocation)
-             156:    155(ptr) AccessChain 34(data) 37 57 38
-             157: 21(int16_t) Load 156
-             158: 21(int16_t) GroupNonUniformBroadcast 42 157 42
-             159:    155(ptr) AccessChain 34(data) 154 57 38
-                              Store 159 158
-             160:      6(int) Load 8(invocation)
-             163:    162(ptr) AccessChain 34(data) 46 57
-             164: 22(i16vec4) Load 163
-             165:161(i16vec2) VectorShuffle 164 164 0 1
-             166:161(i16vec2) GroupNonUniformBroadcast 42 165 42
-             167:    162(ptr) AccessChain 34(data) 160 57
-             168: 22(i16vec4) Load 167
-             169: 22(i16vec4) VectorShuffle 168 166 4 5 2 3
-                              Store 167 169
-             170:      6(int) Load 8(invocation)
-             172:    162(ptr) AccessChain 34(data) 57 57
-             173: 22(i16vec4) Load 172
-             174:171(i16vec3) VectorShuffle 173 173 0 1 2
-             175:171(i16vec3) GroupNonUniformBroadcast 42 174 42
-             176:    162(ptr) AccessChain 34(data) 170 57
-             177: 22(i16vec4) Load 176
-             178: 22(i16vec4) VectorShuffle 177 175 4 5 6 3
-                              Store 176 178
-             179:      6(int) Load 8(invocation)
-             180:    162(ptr) AccessChain 34(data) 67 57
-             181: 22(i16vec4) Load 180
-             182: 22(i16vec4) GroupNonUniformBroadcast 42 181 42
-             183:    162(ptr) AccessChain 34(data) 179 57
-                              Store 183 182
-             184:      6(int) Load 8(invocation)
-             185:    155(ptr) AccessChain 34(data) 37 57 38
-             186: 21(int16_t) Load 185
-             187: 21(int16_t) GroupNonUniformBroadcastFirst 42 186
-             188:    155(ptr) AccessChain 34(data) 184 57 38
-                              Store 188 187
+             140:  20(i8vec4) GroupNonUniformBroadcast 42 139 42
+             141:    116(ptr) AccessChain 34(data) 137 46
+                              Store 141 140
+             142:      6(int) Load 8(invocation)
+             143:    109(ptr) AccessChain 34(data) 37 46 38
+             144:  19(int8_t) Load 143
+             145:  19(int8_t) GroupNonUniformBroadcastFirst 42 144
+             146:    109(ptr) AccessChain 34(data) 142 46 38
+                              Store 146 145
+             147:      6(int) Load 8(invocation)
+             148:    116(ptr) AccessChain 34(data) 46 46
+             149:  20(i8vec4) Load 148
+             150: 115(i8vec2) VectorShuffle 149 149 0 1
+             151: 115(i8vec2) GroupNonUniformBroadcastFirst 42 150
+             152:    109(ptr) AccessChain 34(data) 147 46 38
+             153:  19(int8_t) CompositeExtract 151 0
+                              Store 152 153
+             154:    109(ptr) AccessChain 34(data) 147 46 55
+             155:  19(int8_t) CompositeExtract 151 1
+                              Store 154 155
+             156:      6(int) Load 8(invocation)
+             157:    116(ptr) AccessChain 34(data) 59 46
+             158:  20(i8vec4) Load 157
+             159: 126(i8vec3) VectorShuffle 158 158 0 1 2
+             160: 126(i8vec3) GroupNonUniformBroadcastFirst 42 159
+             161:    109(ptr) AccessChain 34(data) 156 46 38
+             162:  19(int8_t) CompositeExtract 160 0
+                              Store 161 162
+             163:    109(ptr) AccessChain 34(data) 156 46 55
+             164:  19(int8_t) CompositeExtract 160 1
+                              Store 163 164
+             165:    109(ptr) AccessChain 34(data) 156 46 69
+             166:  19(int8_t) CompositeExtract 160 2
+                              Store 165 166
+             167:      6(int) Load 8(invocation)
+             168:    116(ptr) AccessChain 34(data) 73 46
+             169:  20(i8vec4) Load 168
+             170:  20(i8vec4) GroupNonUniformBroadcastFirst 42 169
+             171:    116(ptr) AccessChain 34(data) 167 46
+                              Store 171 170
+             172:      6(int) Load 8(invocation)
+             174:    173(ptr) AccessChain 34(data) 37 59 38
+             175: 21(int16_t) Load 174
+             176: 21(int16_t) GroupNonUniformBroadcast 42 175 42
+             177:    173(ptr) AccessChain 34(data) 172 59 38
+                              Store 177 176
+             178:      6(int) Load 8(invocation)
+             181:    180(ptr) AccessChain 34(data) 46 59
+             182: 22(i16vec4) Load 181
+             183:179(i16vec2) VectorShuffle 182 182 0 1
+             184:179(i16vec2) GroupNonUniformBroadcast 42 183 42
+             185:    173(ptr) AccessChain 34(data) 178 59 38
+             186: 21(int16_t) CompositeExtract 184 0
+                              Store 185 186
+             187:    173(ptr) AccessChain 34(data) 178 59 55
+             188: 21(int16_t) CompositeExtract 184 1
+                              Store 187 188
              189:      6(int) Load 8(invocation)
-             190:    162(ptr) AccessChain 34(data) 46 57
-             191: 22(i16vec4) Load 190
-             192:161(i16vec2) VectorShuffle 191 191 0 1
-             193:161(i16vec2) GroupNonUniformBroadcastFirst 42 192
-             194:    162(ptr) AccessChain 34(data) 189 57
-             195: 22(i16vec4) Load 194
-             196: 22(i16vec4) VectorShuffle 195 193 4 5 2 3
-                              Store 194 196
-             197:      6(int) Load 8(invocation)
-             198:    162(ptr) AccessChain 34(data) 57 57
-             199: 22(i16vec4) Load 198
-             200:171(i16vec3) VectorShuffle 199 199 0 1 2
-             201:171(i16vec3) GroupNonUniformBroadcastFirst 42 200
-             202:    162(ptr) AccessChain 34(data) 197 57
+             191:    180(ptr) AccessChain 34(data) 59 59
+             192: 22(i16vec4) Load 191
+             193:190(i16vec3) VectorShuffle 192 192 0 1 2
+             194:190(i16vec3) GroupNonUniformBroadcast 42 193 42
+             195:    173(ptr) AccessChain 34(data) 189 59 38
+             196: 21(int16_t) CompositeExtract 194 0
+                              Store 195 196
+             197:    173(ptr) AccessChain 34(data) 189 59 55
+             198: 21(int16_t) CompositeExtract 194 1
+                              Store 197 198
+             199:    173(ptr) AccessChain 34(data) 189 59 69
+             200: 21(int16_t) CompositeExtract 194 2
+                              Store 199 200
+             201:      6(int) Load 8(invocation)
+             202:    180(ptr) AccessChain 34(data) 73 59
              203: 22(i16vec4) Load 202
-             204: 22(i16vec4) VectorShuffle 203 201 4 5 6 3
-                              Store 202 204
-             205:      6(int) Load 8(invocation)
-             206:    162(ptr) AccessChain 34(data) 67 57
-             207: 22(i16vec4) Load 206
-             208: 22(i16vec4) GroupNonUniformBroadcastFirst 42 207
-             209:    162(ptr) AccessChain 34(data) 205 57
-                              Store 209 208
-             210:      6(int) Load 8(invocation)
-             212:    211(ptr) AccessChain 34(data) 37 67 38
-             213: 23(int16_t) Load 212
-             214: 23(int16_t) GroupNonUniformBroadcast 42 213 42
-             215:    211(ptr) AccessChain 34(data) 210 67 38
-                              Store 215 214
-             216:      6(int) Load 8(invocation)
-             219:    218(ptr) AccessChain 34(data) 46 67
-             220: 24(i16vec4) Load 219
-             221:217(i16vec2) VectorShuffle 220 220 0 1
-             222:217(i16vec2) GroupNonUniformBroadcast 42 221 42
-             223:    218(ptr) AccessChain 34(data) 216 67
-             224: 24(i16vec4) Load 223
-             225: 24(i16vec4) VectorShuffle 224 222 4 5 2 3
-                              Store 223 225
-             226:      6(int) Load 8(invocation)
-             228:    218(ptr) AccessChain 34(data) 57 67
-             229: 24(i16vec4) Load 228
-             230:227(i16vec3) VectorShuffle 229 229 0 1 2
-             231:227(i16vec3) GroupNonUniformBroadcast 42 230 42
-             232:    218(ptr) AccessChain 34(data) 226 67
-             233: 24(i16vec4) Load 232
-             234: 24(i16vec4) VectorShuffle 233 231 4 5 6 3
-                              Store 232 234
-             235:      6(int) Load 8(invocation)
-             236:    218(ptr) AccessChain 34(data) 67 67
-             237: 24(i16vec4) Load 236
-             238: 24(i16vec4) GroupNonUniformBroadcast 42 237 42
-             239:    218(ptr) AccessChain 34(data) 235 67
-                              Store 239 238
-             240:      6(int) Load 8(invocation)
-             241:    211(ptr) AccessChain 34(data) 37 67 38
-             242: 23(int16_t) Load 241
-             243: 23(int16_t) GroupNonUniformBroadcastFirst 42 242
-             244:    211(ptr) AccessChain 34(data) 240 67 38
-                              Store 244 243
-             245:      6(int) Load 8(invocation)
-             246:    218(ptr) AccessChain 34(data) 46 67
-             247: 24(i16vec4) Load 246
-             248:217(i16vec2) VectorShuffle 247 247 0 1
-             249:217(i16vec2) GroupNonUniformBroadcastFirst 42 248
-             250:    218(ptr) AccessChain 34(data) 245 67
-             251: 24(i16vec4) Load 250
-             252: 24(i16vec4) VectorShuffle 251 249 4 5 2 3
-                              Store 250 252
+             204: 22(i16vec4) GroupNonUniformBroadcast 42 203 42
+             205:    180(ptr) AccessChain 34(data) 201 59
+                              Store 205 204
+             206:      6(int) Load 8(invocation)
+             207:    173(ptr) AccessChain 34(data) 37 59 38
+             208: 21(int16_t) Load 207
+             209: 21(int16_t) GroupNonUniformBroadcastFirst 42 208
+             210:    173(ptr) AccessChain 34(data) 206 59 38
+                              Store 210 209
+             211:      6(int) Load 8(invocation)
+             212:    180(ptr) AccessChain 34(data) 46 59
+             213: 22(i16vec4) Load 212
+             214:179(i16vec2) VectorShuffle 213 213 0 1
+             215:179(i16vec2) GroupNonUniformBroadcastFirst 42 214
+             216:    173(ptr) AccessChain 34(data) 211 59 38
+             217: 21(int16_t) CompositeExtract 215 0
+                              Store 216 217
+             218:    173(ptr) AccessChain 34(data) 211 59 55
+             219: 21(int16_t) CompositeExtract 215 1
+                              Store 218 219
+             220:      6(int) Load 8(invocation)
+             221:    180(ptr) AccessChain 34(data) 59 59
+             222: 22(i16vec4) Load 221
+             223:190(i16vec3) VectorShuffle 222 222 0 1 2
+             224:190(i16vec3) GroupNonUniformBroadcastFirst 42 223
+             225:    173(ptr) AccessChain 34(data) 220 59 38
+             226: 21(int16_t) CompositeExtract 224 0
+                              Store 225 226
+             227:    173(ptr) AccessChain 34(data) 220 59 55
+             228: 21(int16_t) CompositeExtract 224 1
+                              Store 227 228
+             229:    173(ptr) AccessChain 34(data) 220 59 69
+             230: 21(int16_t) CompositeExtract 224 2
+                              Store 229 230
+             231:      6(int) Load 8(invocation)
+             232:    180(ptr) AccessChain 34(data) 73 59
+             233: 22(i16vec4) Load 232
+             234: 22(i16vec4) GroupNonUniformBroadcastFirst 42 233
+             235:    180(ptr) AccessChain 34(data) 231 59
+                              Store 235 234
+             236:      6(int) Load 8(invocation)
+             238:    237(ptr) AccessChain 34(data) 37 73 38
+             239: 23(int16_t) Load 238
+             240: 23(int16_t) GroupNonUniformBroadcast 42 239 42
+             241:    237(ptr) AccessChain 34(data) 236 73 38
+                              Store 241 240
+             242:      6(int) Load 8(invocation)
+             245:    244(ptr) AccessChain 34(data) 46 73
+             246: 24(i16vec4) Load 245
+             247:243(i16vec2) VectorShuffle 246 246 0 1
+             248:243(i16vec2) GroupNonUniformBroadcast 42 247 42
+             249:    237(ptr) AccessChain 34(data) 242 73 38
+             250: 23(int16_t) CompositeExtract 248 0
+                              Store 249 250
+             251:    237(ptr) AccessChain 34(data) 242 73 55
+             252: 23(int16_t) CompositeExtract 248 1
+                              Store 251 252
              253:      6(int) Load 8(invocation)
-             254:    218(ptr) AccessChain 34(data) 57 67
-             255: 24(i16vec4) Load 254
-             256:227(i16vec3) VectorShuffle 255 255 0 1 2
-             257:227(i16vec3) GroupNonUniformBroadcastFirst 42 256
-             258:    218(ptr) AccessChain 34(data) 253 67
-             259: 24(i16vec4) Load 258
-             260: 24(i16vec4) VectorShuffle 259 257 4 5 6 3
-                              Store 258 260
-             261:      6(int) Load 8(invocation)
-             262:    218(ptr) AccessChain 34(data) 67 67
-             263: 24(i16vec4) Load 262
-             264: 24(i16vec4) GroupNonUniformBroadcastFirst 42 263
-             265:    218(ptr) AccessChain 34(data) 261 67
-                              Store 265 264
-             266:      6(int) Load 8(invocation)
-             269:    268(ptr) AccessChain 34(data) 37 267 38
-             270: 25(int64_t) Load 269
-             271: 25(int64_t) GroupNonUniformBroadcast 42 270 42
-             272:    268(ptr) AccessChain 34(data) 266 267 38
-                              Store 272 271
-             273:      6(int) Load 8(invocation)
-             276:    275(ptr) AccessChain 34(data) 46 267
-             277: 26(i64vec4) Load 276
-             278:274(i64vec2) VectorShuffle 277 277 0 1
-             279:274(i64vec2) GroupNonUniformBroadcast 42 278 42
-             280:    275(ptr) AccessChain 34(data) 273 267
-             281: 26(i64vec4) Load 280
-             282: 26(i64vec4) VectorShuffle 281 279 4 5 2 3
-                              Store 280 282
-             283:      6(int) Load 8(invocation)
-             285:    275(ptr) AccessChain 34(data) 57 267
-             286: 26(i64vec4) Load 285
-             287:284(i64vec3) VectorShuffle 286 286 0 1 2
-             288:284(i64vec3) GroupNonUniformBroadcast 42 287 42
-             289:    275(ptr) AccessChain 34(data) 283 267
-             290: 26(i64vec4) Load 289
-             291: 26(i64vec4) VectorShuffle 290 288 4 5 6 3
-                              Store 289 291
-             292:      6(int) Load 8(invocation)
-             293:    275(ptr) AccessChain 34(data) 67 267
-             294: 26(i64vec4) Load 293
-             295: 26(i64vec4) GroupNonUniformBroadcast 42 294 42
-             296:    275(ptr) AccessChain 34(data) 292 267
-                              Store 296 295
-             297:      6(int) Load 8(invocation)
-             298:    268(ptr) AccessChain 34(data) 37 267 38
-             299: 25(int64_t) Load 298
-             300: 25(int64_t) GroupNonUniformBroadcastFirst 42 299
-             301:    268(ptr) AccessChain 34(data) 297 267 38
-                              Store 301 300
-             302:      6(int) Load 8(invocation)
-             303:    275(ptr) AccessChain 34(data) 46 267
-             304: 26(i64vec4) Load 303
-             305:274(i64vec2) VectorShuffle 304 304 0 1
-             306:274(i64vec2) GroupNonUniformBroadcastFirst 42 305
-             307:    275(ptr) AccessChain 34(data) 302 267
-             308: 26(i64vec4) Load 307
-             309: 26(i64vec4) VectorShuffle 308 306 4 5 2 3
-                              Store 307 309
-             310:      6(int) Load 8(invocation)
-             311:    275(ptr) AccessChain 34(data) 57 267
-             312: 26(i64vec4) Load 311
-             313:284(i64vec3) VectorShuffle 312 312 0 1 2
-             314:284(i64vec3) GroupNonUniformBroadcastFirst 42 313
-             315:    275(ptr) AccessChain 34(data) 310 267
-             316: 26(i64vec4) Load 315
-             317: 26(i64vec4) VectorShuffle 316 314 4 5 6 3
-                              Store 315 317
+             255:    244(ptr) AccessChain 34(data) 59 73
+             256: 24(i16vec4) Load 255
+             257:254(i16vec3) VectorShuffle 256 256 0 1 2
+             258:254(i16vec3) GroupNonUniformBroadcast 42 257 42
+             259:    237(ptr) AccessChain 34(data) 253 73 38
+             260: 23(int16_t) CompositeExtract 258 0
+                              Store 259 260
+             261:    237(ptr) AccessChain 34(data) 253 73 55
+             262: 23(int16_t) CompositeExtract 258 1
+                              Store 261 262
+             263:    237(ptr) AccessChain 34(data) 253 73 69
+             264: 23(int16_t) CompositeExtract 258 2
+                              Store 263 264
+             265:      6(int) Load 8(invocation)
+             266:    244(ptr) AccessChain 34(data) 73 73
+             267: 24(i16vec4) Load 266
+             268: 24(i16vec4) GroupNonUniformBroadcast 42 267 42
+             269:    244(ptr) AccessChain 34(data) 265 73
+                              Store 269 268
+             270:      6(int) Load 8(invocation)
+             271:    237(ptr) AccessChain 34(data) 37 73 38
+             272: 23(int16_t) Load 271
+             273: 23(int16_t) GroupNonUniformBroadcastFirst 42 272
+             274:    237(ptr) AccessChain 34(data) 270 73 38
+                              Store 274 273
+             275:      6(int) Load 8(invocation)
+             276:    244(ptr) AccessChain 34(data) 46 73
+             277: 24(i16vec4) Load 276
+             278:243(i16vec2) VectorShuffle 277 277 0 1
+             279:243(i16vec2) GroupNonUniformBroadcastFirst 42 278
+             280:    237(ptr) AccessChain 34(data) 275 73 38
+             281: 23(int16_t) CompositeExtract 279 0
+                              Store 280 281
+             282:    237(ptr) AccessChain 34(data) 275 73 55
+             283: 23(int16_t) CompositeExtract 279 1
+                              Store 282 283
+             284:      6(int) Load 8(invocation)
+             285:    244(ptr) AccessChain 34(data) 59 73
+             286: 24(i16vec4) Load 285
+             287:254(i16vec3) VectorShuffle 286 286 0 1 2
+             288:254(i16vec3) GroupNonUniformBroadcastFirst 42 287
+             289:    237(ptr) AccessChain 34(data) 284 73 38
+             290: 23(int16_t) CompositeExtract 288 0
+                              Store 289 290
+             291:    237(ptr) AccessChain 34(data) 284 73 55
+             292: 23(int16_t) CompositeExtract 288 1
+                              Store 291 292
+             293:    237(ptr) AccessChain 34(data) 284 73 69
+             294: 23(int16_t) CompositeExtract 288 2
+                              Store 293 294
+             295:      6(int) Load 8(invocation)
+             296:    244(ptr) AccessChain 34(data) 73 73
+             297: 24(i16vec4) Load 296
+             298: 24(i16vec4) GroupNonUniformBroadcastFirst 42 297
+             299:    244(ptr) AccessChain 34(data) 295 73
+                              Store 299 298
+             300:      6(int) Load 8(invocation)
+             303:    302(ptr) AccessChain 34(data) 37 301 38
+             304: 25(int64_t) Load 303
+             305: 25(int64_t) GroupNonUniformBroadcast 42 304 42
+             306:    302(ptr) AccessChain 34(data) 300 301 38
+                              Store 306 305
+             307:      6(int) Load 8(invocation)
+             310:    309(ptr) AccessChain 34(data) 46 301
+             311: 26(i64vec4) Load 310
+             312:308(i64vec2) VectorShuffle 311 311 0 1
+             313:308(i64vec2) GroupNonUniformBroadcast 42 312 42
+             314:    302(ptr) AccessChain 34(data) 307 301 38
+             315: 25(int64_t) CompositeExtract 313 0
+                              Store 314 315
+             316:    302(ptr) AccessChain 34(data) 307 301 55
+             317: 25(int64_t) CompositeExtract 313 1
+                              Store 316 317
              318:      6(int) Load 8(invocation)
-             319:    275(ptr) AccessChain 34(data) 67 267
-             320: 26(i64vec4) Load 319
-             321: 26(i64vec4) GroupNonUniformBroadcastFirst 42 320
-             322:    275(ptr) AccessChain 34(data) 318 267
-                              Store 322 321
-             323:      6(int) Load 8(invocation)
-             326:    325(ptr) AccessChain 34(data) 37 324 38
-             327: 27(int64_t) Load 326
-             328: 27(int64_t) GroupNonUniformBroadcast 42 327 42
-             329:    325(ptr) AccessChain 34(data) 323 324 38
-                              Store 329 328
+             320:    309(ptr) AccessChain 34(data) 59 301
+             321: 26(i64vec4) Load 320
+             322:319(i64vec3) VectorShuffle 321 321 0 1 2
+             323:319(i64vec3) GroupNonUniformBroadcast 42 322 42
+             324:    302(ptr) AccessChain 34(data) 318 301 38
+             325: 25(int64_t) CompositeExtract 323 0
+                              Store 324 325
+             326:    302(ptr) AccessChain 34(data) 318 301 55
+             327: 25(int64_t) CompositeExtract 323 1
+                              Store 326 327
+             328:    302(ptr) AccessChain 34(data) 318 301 69
+             329: 25(int64_t) CompositeExtract 323 2
+                              Store 328 329
              330:      6(int) Load 8(invocation)
-             333:    332(ptr) AccessChain 34(data) 46 324
-             334: 28(i64vec4) Load 333
-             335:331(i64vec2) VectorShuffle 334 334 0 1
-             336:331(i64vec2) GroupNonUniformBroadcast 42 335 42
-             337:    332(ptr) AccessChain 34(data) 330 324
-             338: 28(i64vec4) Load 337
-             339: 28(i64vec4) VectorShuffle 338 336 4 5 2 3
-                              Store 337 339
+             331:    309(ptr) AccessChain 34(data) 73 301
+             332: 26(i64vec4) Load 331
+             333: 26(i64vec4) GroupNonUniformBroadcast 42 332 42
+             334:    309(ptr) AccessChain 34(data) 330 301
+                              Store 334 333
+             335:      6(int) Load 8(invocation)
+             336:    302(ptr) AccessChain 34(data) 37 301 38
+             337: 25(int64_t) Load 336
+             338: 25(int64_t) GroupNonUniformBroadcastFirst 42 337
+             339:    302(ptr) AccessChain 34(data) 335 301 38
+                              Store 339 338
              340:      6(int) Load 8(invocation)
-             342:    332(ptr) AccessChain 34(data) 57 324
-             343: 28(i64vec4) Load 342
-             344:341(i64vec3) VectorShuffle 343 343 0 1 2
-             345:341(i64vec3) GroupNonUniformBroadcast 42 344 42
-             346:    332(ptr) AccessChain 34(data) 340 324
-             347: 28(i64vec4) Load 346
-             348: 28(i64vec4) VectorShuffle 347 345 4 5 6 3
-                              Store 346 348
+             341:    309(ptr) AccessChain 34(data) 46 301
+             342: 26(i64vec4) Load 341
+             343:308(i64vec2) VectorShuffle 342 342 0 1
+             344:308(i64vec2) GroupNonUniformBroadcastFirst 42 343
+             345:    302(ptr) AccessChain 34(data) 340 301 38
+             346: 25(int64_t) CompositeExtract 344 0
+                              Store 345 346
+             347:    302(ptr) AccessChain 34(data) 340 301 55
+             348: 25(int64_t) CompositeExtract 344 1
+                              Store 347 348
              349:      6(int) Load 8(invocation)
-             350:    332(ptr) AccessChain 34(data) 67 324
-             351: 28(i64vec4) Load 350
-             352: 28(i64vec4) GroupNonUniformBroadcast 42 351 42
-             353:    332(ptr) AccessChain 34(data) 349 324
-                              Store 353 352
-             354:      6(int) Load 8(invocation)
-             355:    325(ptr) AccessChain 34(data) 37 324 38
-             356: 27(int64_t) Load 355
-             357: 27(int64_t) GroupNonUniformBroadcastFirst 42 356
-             358:    325(ptr) AccessChain 34(data) 354 324 38
-                              Store 358 357
-             359:      6(int) Load 8(invocation)
-             360:    332(ptr) AccessChain 34(data) 46 324
-             361: 28(i64vec4) Load 360
-             362:331(i64vec2) VectorShuffle 361 361 0 1
-             363:331(i64vec2) GroupNonUniformBroadcastFirst 42 362
-             364:    332(ptr) AccessChain 34(data) 359 324
-             365: 28(i64vec4) Load 364
-             366: 28(i64vec4) VectorShuffle 365 363 4 5 2 3
-                              Store 364 366
-             367:      6(int) Load 8(invocation)
-             368:    332(ptr) AccessChain 34(data) 57 324
-             369: 28(i64vec4) Load 368
-             370:341(i64vec3) VectorShuffle 369 369 0 1 2
-             371:341(i64vec3) GroupNonUniformBroadcastFirst 42 370
-             372:    332(ptr) AccessChain 34(data) 367 324
-             373: 28(i64vec4) Load 372
-             374: 28(i64vec4) VectorShuffle 373 371 4 5 6 3
-                              Store 372 374
-             375:      6(int) Load 8(invocation)
-             376:    332(ptr) AccessChain 34(data) 67 324
-             377: 28(i64vec4) Load 376
-             378: 28(i64vec4) GroupNonUniformBroadcastFirst 42 377
-             379:    332(ptr) AccessChain 34(data) 375 324
-                              Store 379 378
-             380:      6(int) Load 8(invocation)
-             383:    382(ptr) AccessChain 34(data) 37 381 38
-             384:29(float16_t) Load 383
-             385:29(float16_t) GroupNonUniformBroadcast 42 384 42
-             386:    382(ptr) AccessChain 34(data) 380 381 38
-                              Store 386 385
-             387:      6(int) Load 8(invocation)
-             390:    389(ptr) AccessChain 34(data) 46 381
-             391: 30(f16vec4) Load 390
-             392:388(f16vec2) VectorShuffle 391 391 0 1
-             393:388(f16vec2) GroupNonUniformBroadcast 42 392 42
-             394:    389(ptr) AccessChain 34(data) 387 381
-             395: 30(f16vec4) Load 394
-             396: 30(f16vec4) VectorShuffle 395 393 4 5 2 3
-                              Store 394 396
-             397:      6(int) Load 8(invocation)
-             399:    389(ptr) AccessChain 34(data) 57 381
-             400: 30(f16vec4) Load 399
-             401:398(f16vec3) VectorShuffle 400 400 0 1 2
-             402:398(f16vec3) GroupNonUniformBroadcast 42 401 42
-             403:    389(ptr) AccessChain 34(data) 397 381
-             404: 30(f16vec4) Load 403
-             405: 30(f16vec4) VectorShuffle 404 402 4 5 6 3
-                              Store 403 405
-             406:      6(int) Load 8(invocation)
-             407:    389(ptr) AccessChain 34(data) 67 381
-             408: 30(f16vec4) Load 407
-             409: 30(f16vec4) GroupNonUniformBroadcast 42 408 42
-             410:    389(ptr) AccessChain 34(data) 406 381
-                              Store 410 409
-             411:      6(int) Load 8(invocation)
-             412:    382(ptr) AccessChain 34(data) 37 381 38
-             413:29(float16_t) Load 412
-             414:29(float16_t) GroupNonUniformBroadcastFirst 42 413
-             415:    382(ptr) AccessChain 34(data) 411 381 38
-                              Store 415 414
-             416:      6(int) Load 8(invocation)
-             417:    389(ptr) AccessChain 34(data) 46 381
-             418: 30(f16vec4) Load 417
-             419:388(f16vec2) VectorShuffle 418 418 0 1
-             420:388(f16vec2) GroupNonUniformBroadcastFirst 42 419
-             421:    389(ptr) AccessChain 34(data) 416 381
-             422: 30(f16vec4) Load 421
-             423: 30(f16vec4) VectorShuffle 422 420 4 5 2 3
-                              Store 421 423
-             424:      6(int) Load 8(invocation)
-             425:    389(ptr) AccessChain 34(data) 57 381
-             426: 30(f16vec4) Load 425
-             427:398(f16vec3) VectorShuffle 426 426 0 1 2
-             428:398(f16vec3) GroupNonUniformBroadcastFirst 42 427
-             429:    389(ptr) AccessChain 34(data) 424 381
-             430: 30(f16vec4) Load 429
-             431: 30(f16vec4) VectorShuffle 430 428 4 5 6 3
-                              Store 429 431
-             432:      6(int) Load 8(invocation)
-             433:    389(ptr) AccessChain 34(data) 67 381
-             434: 30(f16vec4) Load 433
-             435: 30(f16vec4) GroupNonUniformBroadcastFirst 42 434
-             436:    389(ptr) AccessChain 34(data) 432 381
+             350:    309(ptr) AccessChain 34(data) 59 301
+             351: 26(i64vec4) Load 350
+             352:319(i64vec3) VectorShuffle 351 351 0 1 2
+             353:319(i64vec3) GroupNonUniformBroadcastFirst 42 352
+             354:    302(ptr) AccessChain 34(data) 349 301 38
+             355: 25(int64_t) CompositeExtract 353 0
+                              Store 354 355
+             356:    302(ptr) AccessChain 34(data) 349 301 55
+             357: 25(int64_t) CompositeExtract 353 1
+                              Store 356 357
+             358:    302(ptr) AccessChain 34(data) 349 301 69
+             359: 25(int64_t) CompositeExtract 353 2
+                              Store 358 359
+             360:      6(int) Load 8(invocation)
+             361:    309(ptr) AccessChain 34(data) 73 301
+             362: 26(i64vec4) Load 361
+             363: 26(i64vec4) GroupNonUniformBroadcastFirst 42 362
+             364:    309(ptr) AccessChain 34(data) 360 301
+                              Store 364 363
+             365:      6(int) Load 8(invocation)
+             368:    367(ptr) AccessChain 34(data) 37 366 38
+             369: 27(int64_t) Load 368
+             370: 27(int64_t) GroupNonUniformBroadcast 42 369 42
+             371:    367(ptr) AccessChain 34(data) 365 366 38
+                              Store 371 370
+             372:      6(int) Load 8(invocation)
+             375:    374(ptr) AccessChain 34(data) 46 366
+             376: 28(i64vec4) Load 375
+             377:373(i64vec2) VectorShuffle 376 376 0 1
+             378:373(i64vec2) GroupNonUniformBroadcast 42 377 42
+             379:    367(ptr) AccessChain 34(data) 372 366 38
+             380: 27(int64_t) CompositeExtract 378 0
+                              Store 379 380
+             381:    367(ptr) AccessChain 34(data) 372 366 55
+             382: 27(int64_t) CompositeExtract 378 1
+                              Store 381 382
+             383:      6(int) Load 8(invocation)
+             385:    374(ptr) AccessChain 34(data) 59 366
+             386: 28(i64vec4) Load 385
+             387:384(i64vec3) VectorShuffle 386 386 0 1 2
+             388:384(i64vec3) GroupNonUniformBroadcast 42 387 42
+             389:    367(ptr) AccessChain 34(data) 383 366 38
+             390: 27(int64_t) CompositeExtract 388 0
+                              Store 389 390
+             391:    367(ptr) AccessChain 34(data) 383 366 55
+             392: 27(int64_t) CompositeExtract 388 1
+                              Store 391 392
+             393:    367(ptr) AccessChain 34(data) 383 366 69
+             394: 27(int64_t) CompositeExtract 388 2
+                              Store 393 394
+             395:      6(int) Load 8(invocation)
+             396:    374(ptr) AccessChain 34(data) 73 366
+             397: 28(i64vec4) Load 396
+             398: 28(i64vec4) GroupNonUniformBroadcast 42 397 42
+             399:    374(ptr) AccessChain 34(data) 395 366
+                              Store 399 398
+             400:      6(int) Load 8(invocation)
+             401:    367(ptr) AccessChain 34(data) 37 366 38
+             402: 27(int64_t) Load 401
+             403: 27(int64_t) GroupNonUniformBroadcastFirst 42 402
+             404:    367(ptr) AccessChain 34(data) 400 366 38
+                              Store 404 403
+             405:      6(int) Load 8(invocation)
+             406:    374(ptr) AccessChain 34(data) 46 366
+             407: 28(i64vec4) Load 406
+             408:373(i64vec2) VectorShuffle 407 407 0 1
+             409:373(i64vec2) GroupNonUniformBroadcastFirst 42 408
+             410:    367(ptr) AccessChain 34(data) 405 366 38
+             411: 27(int64_t) CompositeExtract 409 0
+                              Store 410 411
+             412:    367(ptr) AccessChain 34(data) 405 366 55
+             413: 27(int64_t) CompositeExtract 409 1
+                              Store 412 413
+             414:      6(int) Load 8(invocation)
+             415:    374(ptr) AccessChain 34(data) 59 366
+             416: 28(i64vec4) Load 415
+             417:384(i64vec3) VectorShuffle 416 416 0 1 2
+             418:384(i64vec3) GroupNonUniformBroadcastFirst 42 417
+             419:    367(ptr) AccessChain 34(data) 414 366 38
+             420: 27(int64_t) CompositeExtract 418 0
+                              Store 419 420
+             421:    367(ptr) AccessChain 34(data) 414 366 55
+             422: 27(int64_t) CompositeExtract 418 1
+                              Store 421 422
+             423:    367(ptr) AccessChain 34(data) 414 366 69
+             424: 27(int64_t) CompositeExtract 418 2
+                              Store 423 424
+             425:      6(int) Load 8(invocation)
+             426:    374(ptr) AccessChain 34(data) 73 366
+             427: 28(i64vec4) Load 426
+             428: 28(i64vec4) GroupNonUniformBroadcastFirst 42 427
+             429:    374(ptr) AccessChain 34(data) 425 366
+                              Store 429 428
+             430:      6(int) Load 8(invocation)
+             433:    432(ptr) AccessChain 34(data) 37 431 38
+             434:29(float16_t) Load 433
+             435:29(float16_t) GroupNonUniformBroadcast 42 434 42
+             436:    432(ptr) AccessChain 34(data) 430 431 38
                               Store 436 435
+             437:      6(int) Load 8(invocation)
+             440:    439(ptr) AccessChain 34(data) 46 431
+             441: 30(f16vec4) Load 440
+             442:438(f16vec2) VectorShuffle 441 441 0 1
+             443:438(f16vec2) GroupNonUniformBroadcast 42 442 42
+             444:    432(ptr) AccessChain 34(data) 437 431 38
+             445:29(float16_t) CompositeExtract 443 0
+                              Store 444 445
+             446:    432(ptr) AccessChain 34(data) 437 431 55
+             447:29(float16_t) CompositeExtract 443 1
+                              Store 446 447
+             448:      6(int) Load 8(invocation)
+             450:    439(ptr) AccessChain 34(data) 59 431
+             451: 30(f16vec4) Load 450
+             452:449(f16vec3) VectorShuffle 451 451 0 1 2
+             453:449(f16vec3) GroupNonUniformBroadcast 42 452 42
+             454:    432(ptr) AccessChain 34(data) 448 431 38
+             455:29(float16_t) CompositeExtract 453 0
+                              Store 454 455
+             456:    432(ptr) AccessChain 34(data) 448 431 55
+             457:29(float16_t) CompositeExtract 453 1
+                              Store 456 457
+             458:    432(ptr) AccessChain 34(data) 448 431 69
+             459:29(float16_t) CompositeExtract 453 2
+                              Store 458 459
+             460:      6(int) Load 8(invocation)
+             461:    439(ptr) AccessChain 34(data) 73 431
+             462: 30(f16vec4) Load 461
+             463: 30(f16vec4) GroupNonUniformBroadcast 42 462 42
+             464:    439(ptr) AccessChain 34(data) 460 431
+                              Store 464 463
+             465:      6(int) Load 8(invocation)
+             466:    432(ptr) AccessChain 34(data) 37 431 38
+             467:29(float16_t) Load 466
+             468:29(float16_t) GroupNonUniformBroadcastFirst 42 467
+             469:    432(ptr) AccessChain 34(data) 465 431 38
+                              Store 469 468
+             470:      6(int) Load 8(invocation)
+             471:    439(ptr) AccessChain 34(data) 46 431
+             472: 30(f16vec4) Load 471
+             473:438(f16vec2) VectorShuffle 472 472 0 1
+             474:438(f16vec2) GroupNonUniformBroadcastFirst 42 473
+             475:    432(ptr) AccessChain 34(data) 470 431 38
+             476:29(float16_t) CompositeExtract 474 0
+                              Store 475 476
+             477:    432(ptr) AccessChain 34(data) 470 431 55
+             478:29(float16_t) CompositeExtract 474 1
+                              Store 477 478
+             479:      6(int) Load 8(invocation)
+             480:    439(ptr) AccessChain 34(data) 59 431
+             481: 30(f16vec4) Load 480
+             482:449(f16vec3) VectorShuffle 481 481 0 1 2
+             483:449(f16vec3) GroupNonUniformBroadcastFirst 42 482
+             484:    432(ptr) AccessChain 34(data) 479 431 38
+             485:29(float16_t) CompositeExtract 483 0
+                              Store 484 485
+             486:    432(ptr) AccessChain 34(data) 479 431 55
+             487:29(float16_t) CompositeExtract 483 1
+                              Store 486 487
+             488:    432(ptr) AccessChain 34(data) 479 431 69
+             489:29(float16_t) CompositeExtract 483 2
+                              Store 488 489
+             490:      6(int) Load 8(invocation)
+             491:    439(ptr) AccessChain 34(data) 73 431
+             492: 30(f16vec4) Load 491
+             493: 30(f16vec4) GroupNonUniformBroadcastFirst 42 492
+             494:    439(ptr) AccessChain 34(data) 490 431
+                              Store 494 493
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out
index 2f4393a..98a7a89 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out
@@ -1,7 +1,7 @@
 spv.subgroupExtendedTypesClustered.comp
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 1273
+// Id's are bound by 1458
 
                               Capability Shader
                               Capability Float16
@@ -59,7 +59,7 @@
                               Decorate 31(Buffers) Block
                               Decorate 34(data) DescriptorSet 0
                               Decorate 34(data) Binding 0
-                              Decorate 1272 BuiltIn WorkgroupSize
+                              Decorate 1457 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -95,39 +95,40 @@
               47:     36(int) Constant 1
               48:             TypeVector 17(int8_t) 2
               49:             TypePointer StorageBuffer 18(i8vec4)
-              58:     36(int) Constant 2
-              59:             TypeVector 17(int8_t) 3
-              68:     36(int) Constant 3
-             230:             TypePointer StorageBuffer 19(int8_t)
-             236:             TypeVector 19(int8_t) 2
-             237:             TypePointer StorageBuffer 20(i8vec4)
-             246:             TypeVector 19(int8_t) 3
-             416:             TypePointer StorageBuffer 21(int16_t)
-             422:             TypeVector 21(int16_t) 2
-             423:             TypePointer StorageBuffer 22(i16vec4)
-             432:             TypeVector 21(int16_t) 3
-             602:             TypePointer StorageBuffer 23(int16_t)
-             608:             TypeVector 23(int16_t) 2
-             609:             TypePointer StorageBuffer 24(i16vec4)
-             618:             TypeVector 23(int16_t) 3
-             788:     36(int) Constant 4
-             789:             TypePointer StorageBuffer 25(int64_t)
-             795:             TypeVector 25(int64_t) 2
-             796:             TypePointer StorageBuffer 26(i64vec4)
-             805:             TypeVector 25(int64_t) 3
-             975:     36(int) Constant 5
-             976:             TypePointer StorageBuffer 27(int64_t)
-             982:             TypeVector 27(int64_t) 2
-             983:             TypePointer StorageBuffer 28(i64vec4)
-             992:             TypeVector 27(int64_t) 3
-            1162:     36(int) Constant 6
-            1163:             TypePointer StorageBuffer 29(float16_t)
-            1169:             TypeVector 29(float16_t) 2
-            1170:             TypePointer StorageBuffer 30(f16vec4)
-            1179:             TypeVector 29(float16_t) 3
-            1270:             TypeVector 6(int) 3
-            1271:      6(int) Constant 8
-            1272: 1270(ivec3) ConstantComposite 1271 42 42
+              59:     36(int) Constant 2
+              60:             TypeVector 17(int8_t) 3
+              69:      6(int) Constant 2
+              73:     36(int) Constant 3
+             259:             TypePointer StorageBuffer 19(int8_t)
+             265:             TypeVector 19(int8_t) 2
+             266:             TypePointer StorageBuffer 20(i8vec4)
+             276:             TypeVector 19(int8_t) 3
+             473:             TypePointer StorageBuffer 21(int16_t)
+             479:             TypeVector 21(int16_t) 2
+             480:             TypePointer StorageBuffer 22(i16vec4)
+             490:             TypeVector 21(int16_t) 3
+             687:             TypePointer StorageBuffer 23(int16_t)
+             693:             TypeVector 23(int16_t) 2
+             694:             TypePointer StorageBuffer 24(i16vec4)
+             704:             TypeVector 23(int16_t) 3
+             901:     36(int) Constant 4
+             902:             TypePointer StorageBuffer 25(int64_t)
+             908:             TypeVector 25(int64_t) 2
+             909:             TypePointer StorageBuffer 26(i64vec4)
+             919:             TypeVector 25(int64_t) 3
+            1116:     36(int) Constant 5
+            1117:             TypePointer StorageBuffer 27(int64_t)
+            1123:             TypeVector 27(int64_t) 2
+            1124:             TypePointer StorageBuffer 28(i64vec4)
+            1134:             TypeVector 27(int64_t) 3
+            1331:     36(int) Constant 6
+            1332:             TypePointer StorageBuffer 29(float16_t)
+            1338:             TypeVector 29(float16_t) 2
+            1339:             TypePointer StorageBuffer 30(f16vec4)
+            1349:             TypeVector 29(float16_t) 3
+            1455:             TypeVector 6(int) 3
+            1456:      6(int) Constant 8
+            1457: 1455(ivec3) ConstantComposite 1456 42 42
          4(main):           2 Function None 3
                5:             Label
    8(invocation):      7(ptr) Variable Function
@@ -147,1374 +148,1696 @@
               51:  18(i8vec4) Load 50
               52:  48(i8vec2) VectorShuffle 51 51 0 1
               53:  48(i8vec2) GroupNonUniformIAdd 43 ClusteredReduce 52 42
-              54:     49(ptr) AccessChain 34(data) 46 37
-              55:  18(i8vec4) Load 54
-              56:  18(i8vec4) VectorShuffle 55 53 4 5 2 3
-                              Store 54 56
-              57:      6(int) Load 8(invocation)
-              60:     49(ptr) AccessChain 34(data) 58 37
-              61:  18(i8vec4) Load 60
-              62:  59(i8vec3) VectorShuffle 61 61 0 1 2
-              63:  59(i8vec3) GroupNonUniformIAdd 43 ClusteredReduce 62 42
-              64:     49(ptr) AccessChain 34(data) 57 37
-              65:  18(i8vec4) Load 64
-              66:  18(i8vec4) VectorShuffle 65 63 4 5 6 3
-                              Store 64 66
-              67:      6(int) Load 8(invocation)
-              69:     49(ptr) AccessChain 34(data) 68 37
-              70:  18(i8vec4) Load 69
-              71:  18(i8vec4) GroupNonUniformIAdd 43 ClusteredReduce 70 42
-              72:     49(ptr) AccessChain 34(data) 67 37
-                              Store 72 71
-              73:      6(int) Load 8(invocation)
-              74:     39(ptr) AccessChain 34(data) 37 37 38
-              75:  17(int8_t) Load 74
-              76:  17(int8_t) GroupNonUniformIMul 43 ClusteredReduce 75 42
-              77:     39(ptr) AccessChain 34(data) 73 37 38
+              54:     39(ptr) AccessChain 34(data) 46 37 38
+              55:  17(int8_t) CompositeExtract 53 0
+                              Store 54 55
+              56:     39(ptr) AccessChain 34(data) 46 37 42
+              57:  17(int8_t) CompositeExtract 53 1
+                              Store 56 57
+              58:      6(int) Load 8(invocation)
+              61:     49(ptr) AccessChain 34(data) 59 37
+              62:  18(i8vec4) Load 61
+              63:  60(i8vec3) VectorShuffle 62 62 0 1 2
+              64:  60(i8vec3) GroupNonUniformIAdd 43 ClusteredReduce 63 42
+              65:     39(ptr) AccessChain 34(data) 58 37 38
+              66:  17(int8_t) CompositeExtract 64 0
+                              Store 65 66
+              67:     39(ptr) AccessChain 34(data) 58 37 42
+              68:  17(int8_t) CompositeExtract 64 1
+                              Store 67 68
+              70:     39(ptr) AccessChain 34(data) 58 37 69
+              71:  17(int8_t) CompositeExtract 64 2
+                              Store 70 71
+              72:      6(int) Load 8(invocation)
+              74:     49(ptr) AccessChain 34(data) 73 37
+              75:  18(i8vec4) Load 74
+              76:  18(i8vec4) GroupNonUniformIAdd 43 ClusteredReduce 75 42
+              77:     49(ptr) AccessChain 34(data) 72 37
                               Store 77 76
               78:      6(int) Load 8(invocation)
-              79:     49(ptr) AccessChain 34(data) 47 37
-              80:  18(i8vec4) Load 79
-              81:  48(i8vec2) VectorShuffle 80 80 0 1
-              82:  48(i8vec2) GroupNonUniformIMul 43 ClusteredReduce 81 42
-              83:     49(ptr) AccessChain 34(data) 78 37
-              84:  18(i8vec4) Load 83
-              85:  18(i8vec4) VectorShuffle 84 82 4 5 2 3
-                              Store 83 85
-              86:      6(int) Load 8(invocation)
-              87:     49(ptr) AccessChain 34(data) 58 37
-              88:  18(i8vec4) Load 87
-              89:  59(i8vec3) VectorShuffle 88 88 0 1 2
-              90:  59(i8vec3) GroupNonUniformIMul 43 ClusteredReduce 89 42
-              91:     49(ptr) AccessChain 34(data) 86 37
-              92:  18(i8vec4) Load 91
-              93:  18(i8vec4) VectorShuffle 92 90 4 5 6 3
-                              Store 91 93
-              94:      6(int) Load 8(invocation)
-              95:     49(ptr) AccessChain 34(data) 68 37
-              96:  18(i8vec4) Load 95
-              97:  18(i8vec4) GroupNonUniformIMul 43 ClusteredReduce 96 42
-              98:     49(ptr) AccessChain 34(data) 94 37
-                              Store 98 97
-              99:      6(int) Load 8(invocation)
-             100:     39(ptr) AccessChain 34(data) 37 37 38
-             101:  17(int8_t) Load 100
-             102:  17(int8_t) GroupNonUniformSMin 43 ClusteredReduce 101 42
-             103:     39(ptr) AccessChain 34(data) 99 37 38
-                              Store 103 102
-             104:      6(int) Load 8(invocation)
-             105:     49(ptr) AccessChain 34(data) 47 37
-             106:  18(i8vec4) Load 105
-             107:  48(i8vec2) VectorShuffle 106 106 0 1
-             108:  48(i8vec2) GroupNonUniformSMin 43 ClusteredReduce 107 42
-             109:     49(ptr) AccessChain 34(data) 104 37
-             110:  18(i8vec4) Load 109
-             111:  18(i8vec4) VectorShuffle 110 108 4 5 2 3
-                              Store 109 111
-             112:      6(int) Load 8(invocation)
-             113:     49(ptr) AccessChain 34(data) 58 37
-             114:  18(i8vec4) Load 113
-             115:  59(i8vec3) VectorShuffle 114 114 0 1 2
-             116:  59(i8vec3) GroupNonUniformSMin 43 ClusteredReduce 115 42
-             117:     49(ptr) AccessChain 34(data) 112 37
-             118:  18(i8vec4) Load 117
-             119:  18(i8vec4) VectorShuffle 118 116 4 5 6 3
-                              Store 117 119
-             120:      6(int) Load 8(invocation)
-             121:     49(ptr) AccessChain 34(data) 68 37
-             122:  18(i8vec4) Load 121
-             123:  18(i8vec4) GroupNonUniformSMin 43 ClusteredReduce 122 42
-             124:     49(ptr) AccessChain 34(data) 120 37
-                              Store 124 123
-             125:      6(int) Load 8(invocation)
-             126:     39(ptr) AccessChain 34(data) 37 37 38
-             127:  17(int8_t) Load 126
-             128:  17(int8_t) GroupNonUniformSMax 43 ClusteredReduce 127 42
-             129:     39(ptr) AccessChain 34(data) 125 37 38
-                              Store 129 128
-             130:      6(int) Load 8(invocation)
-             131:     49(ptr) AccessChain 34(data) 47 37
-             132:  18(i8vec4) Load 131
-             133:  48(i8vec2) VectorShuffle 132 132 0 1
-             134:  48(i8vec2) GroupNonUniformSMax 43 ClusteredReduce 133 42
-             135:     49(ptr) AccessChain 34(data) 130 37
-             136:  18(i8vec4) Load 135
-             137:  18(i8vec4) VectorShuffle 136 134 4 5 2 3
-                              Store 135 137
+              79:     39(ptr) AccessChain 34(data) 37 37 38
+              80:  17(int8_t) Load 79
+              81:  17(int8_t) GroupNonUniformIMul 43 ClusteredReduce 80 42
+              82:     39(ptr) AccessChain 34(data) 78 37 38
+                              Store 82 81
+              83:      6(int) Load 8(invocation)
+              84:     49(ptr) AccessChain 34(data) 47 37
+              85:  18(i8vec4) Load 84
+              86:  48(i8vec2) VectorShuffle 85 85 0 1
+              87:  48(i8vec2) GroupNonUniformIMul 43 ClusteredReduce 86 42
+              88:     39(ptr) AccessChain 34(data) 83 37 38
+              89:  17(int8_t) CompositeExtract 87 0
+                              Store 88 89
+              90:     39(ptr) AccessChain 34(data) 83 37 42
+              91:  17(int8_t) CompositeExtract 87 1
+                              Store 90 91
+              92:      6(int) Load 8(invocation)
+              93:     49(ptr) AccessChain 34(data) 59 37
+              94:  18(i8vec4) Load 93
+              95:  60(i8vec3) VectorShuffle 94 94 0 1 2
+              96:  60(i8vec3) GroupNonUniformIMul 43 ClusteredReduce 95 42
+              97:     39(ptr) AccessChain 34(data) 92 37 38
+              98:  17(int8_t) CompositeExtract 96 0
+                              Store 97 98
+              99:     39(ptr) AccessChain 34(data) 92 37 42
+             100:  17(int8_t) CompositeExtract 96 1
+                              Store 99 100
+             101:     39(ptr) AccessChain 34(data) 92 37 69
+             102:  17(int8_t) CompositeExtract 96 2
+                              Store 101 102
+             103:      6(int) Load 8(invocation)
+             104:     49(ptr) AccessChain 34(data) 73 37
+             105:  18(i8vec4) Load 104
+             106:  18(i8vec4) GroupNonUniformIMul 43 ClusteredReduce 105 42
+             107:     49(ptr) AccessChain 34(data) 103 37
+                              Store 107 106
+             108:      6(int) Load 8(invocation)
+             109:     39(ptr) AccessChain 34(data) 37 37 38
+             110:  17(int8_t) Load 109
+             111:  17(int8_t) GroupNonUniformSMin 43 ClusteredReduce 110 42
+             112:     39(ptr) AccessChain 34(data) 108 37 38
+                              Store 112 111
+             113:      6(int) Load 8(invocation)
+             114:     49(ptr) AccessChain 34(data) 47 37
+             115:  18(i8vec4) Load 114
+             116:  48(i8vec2) VectorShuffle 115 115 0 1
+             117:  48(i8vec2) GroupNonUniformSMin 43 ClusteredReduce 116 42
+             118:     39(ptr) AccessChain 34(data) 113 37 38
+             119:  17(int8_t) CompositeExtract 117 0
+                              Store 118 119
+             120:     39(ptr) AccessChain 34(data) 113 37 42
+             121:  17(int8_t) CompositeExtract 117 1
+                              Store 120 121
+             122:      6(int) Load 8(invocation)
+             123:     49(ptr) AccessChain 34(data) 59 37
+             124:  18(i8vec4) Load 123
+             125:  60(i8vec3) VectorShuffle 124 124 0 1 2
+             126:  60(i8vec3) GroupNonUniformSMin 43 ClusteredReduce 125 42
+             127:     39(ptr) AccessChain 34(data) 122 37 38
+             128:  17(int8_t) CompositeExtract 126 0
+                              Store 127 128
+             129:     39(ptr) AccessChain 34(data) 122 37 42
+             130:  17(int8_t) CompositeExtract 126 1
+                              Store 129 130
+             131:     39(ptr) AccessChain 34(data) 122 37 69
+             132:  17(int8_t) CompositeExtract 126 2
+                              Store 131 132
+             133:      6(int) Load 8(invocation)
+             134:     49(ptr) AccessChain 34(data) 73 37
+             135:  18(i8vec4) Load 134
+             136:  18(i8vec4) GroupNonUniformSMin 43 ClusteredReduce 135 42
+             137:     49(ptr) AccessChain 34(data) 133 37
+                              Store 137 136
              138:      6(int) Load 8(invocation)
-             139:     49(ptr) AccessChain 34(data) 58 37
-             140:  18(i8vec4) Load 139
-             141:  59(i8vec3) VectorShuffle 140 140 0 1 2
-             142:  59(i8vec3) GroupNonUniformSMax 43 ClusteredReduce 141 42
-             143:     49(ptr) AccessChain 34(data) 138 37
-             144:  18(i8vec4) Load 143
-             145:  18(i8vec4) VectorShuffle 144 142 4 5 6 3
-                              Store 143 145
-             146:      6(int) Load 8(invocation)
-             147:     49(ptr) AccessChain 34(data) 68 37
-             148:  18(i8vec4) Load 147
-             149:  18(i8vec4) GroupNonUniformSMax 43 ClusteredReduce 148 42
-             150:     49(ptr) AccessChain 34(data) 146 37
-                              Store 150 149
-             151:      6(int) Load 8(invocation)
-             152:     39(ptr) AccessChain 34(data) 37 37 38
-             153:  17(int8_t) Load 152
-             154:  17(int8_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 153 42
-             155:     39(ptr) AccessChain 34(data) 151 37 38
-                              Store 155 154
-             156:      6(int) Load 8(invocation)
-             157:     49(ptr) AccessChain 34(data) 47 37
-             158:  18(i8vec4) Load 157
-             159:  48(i8vec2) VectorShuffle 158 158 0 1
-             160:  48(i8vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 159 42
-             161:     49(ptr) AccessChain 34(data) 156 37
-             162:  18(i8vec4) Load 161
-             163:  18(i8vec4) VectorShuffle 162 160 4 5 2 3
-                              Store 161 163
-             164:      6(int) Load 8(invocation)
-             165:     49(ptr) AccessChain 34(data) 58 37
-             166:  18(i8vec4) Load 165
-             167:  59(i8vec3) VectorShuffle 166 166 0 1 2
-             168:  59(i8vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 167 42
-             169:     49(ptr) AccessChain 34(data) 164 37
-             170:  18(i8vec4) Load 169
-             171:  18(i8vec4) VectorShuffle 170 168 4 5 6 3
-                              Store 169 171
-             172:      6(int) Load 8(invocation)
-             173:     49(ptr) AccessChain 34(data) 68 37
-             174:  18(i8vec4) Load 173
-             175:  18(i8vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 174 42
-             176:     49(ptr) AccessChain 34(data) 172 37
-                              Store 176 175
-             177:      6(int) Load 8(invocation)
-             178:     39(ptr) AccessChain 34(data) 37 37 38
-             179:  17(int8_t) Load 178
-             180:  17(int8_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 179 42
-             181:     39(ptr) AccessChain 34(data) 177 37 38
-                              Store 181 180
+             139:     39(ptr) AccessChain 34(data) 37 37 38
+             140:  17(int8_t) Load 139
+             141:  17(int8_t) GroupNonUniformSMax 43 ClusteredReduce 140 42
+             142:     39(ptr) AccessChain 34(data) 138 37 38
+                              Store 142 141
+             143:      6(int) Load 8(invocation)
+             144:     49(ptr) AccessChain 34(data) 47 37
+             145:  18(i8vec4) Load 144
+             146:  48(i8vec2) VectorShuffle 145 145 0 1
+             147:  48(i8vec2) GroupNonUniformSMax 43 ClusteredReduce 146 42
+             148:     39(ptr) AccessChain 34(data) 143 37 38
+             149:  17(int8_t) CompositeExtract 147 0
+                              Store 148 149
+             150:     39(ptr) AccessChain 34(data) 143 37 42
+             151:  17(int8_t) CompositeExtract 147 1
+                              Store 150 151
+             152:      6(int) Load 8(invocation)
+             153:     49(ptr) AccessChain 34(data) 59 37
+             154:  18(i8vec4) Load 153
+             155:  60(i8vec3) VectorShuffle 154 154 0 1 2
+             156:  60(i8vec3) GroupNonUniformSMax 43 ClusteredReduce 155 42
+             157:     39(ptr) AccessChain 34(data) 152 37 38
+             158:  17(int8_t) CompositeExtract 156 0
+                              Store 157 158
+             159:     39(ptr) AccessChain 34(data) 152 37 42
+             160:  17(int8_t) CompositeExtract 156 1
+                              Store 159 160
+             161:     39(ptr) AccessChain 34(data) 152 37 69
+             162:  17(int8_t) CompositeExtract 156 2
+                              Store 161 162
+             163:      6(int) Load 8(invocation)
+             164:     49(ptr) AccessChain 34(data) 73 37
+             165:  18(i8vec4) Load 164
+             166:  18(i8vec4) GroupNonUniformSMax 43 ClusteredReduce 165 42
+             167:     49(ptr) AccessChain 34(data) 163 37
+                              Store 167 166
+             168:      6(int) Load 8(invocation)
+             169:     39(ptr) AccessChain 34(data) 37 37 38
+             170:  17(int8_t) Load 169
+             171:  17(int8_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 170 42
+             172:     39(ptr) AccessChain 34(data) 168 37 38
+                              Store 172 171
+             173:      6(int) Load 8(invocation)
+             174:     49(ptr) AccessChain 34(data) 47 37
+             175:  18(i8vec4) Load 174
+             176:  48(i8vec2) VectorShuffle 175 175 0 1
+             177:  48(i8vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 176 42
+             178:     39(ptr) AccessChain 34(data) 173 37 38
+             179:  17(int8_t) CompositeExtract 177 0
+                              Store 178 179
+             180:     39(ptr) AccessChain 34(data) 173 37 42
+             181:  17(int8_t) CompositeExtract 177 1
+                              Store 180 181
              182:      6(int) Load 8(invocation)
-             183:     49(ptr) AccessChain 34(data) 47 37
+             183:     49(ptr) AccessChain 34(data) 59 37
              184:  18(i8vec4) Load 183
-             185:  48(i8vec2) VectorShuffle 184 184 0 1
-             186:  48(i8vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 185 42
-             187:     49(ptr) AccessChain 34(data) 182 37
-             188:  18(i8vec4) Load 187
-             189:  18(i8vec4) VectorShuffle 188 186 4 5 2 3
-                              Store 187 189
-             190:      6(int) Load 8(invocation)
-             191:     49(ptr) AccessChain 34(data) 58 37
-             192:  18(i8vec4) Load 191
-             193:  59(i8vec3) VectorShuffle 192 192 0 1 2
-             194:  59(i8vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 193 42
-             195:     49(ptr) AccessChain 34(data) 190 37
-             196:  18(i8vec4) Load 195
-             197:  18(i8vec4) VectorShuffle 196 194 4 5 6 3
-                              Store 195 197
+             185:  60(i8vec3) VectorShuffle 184 184 0 1 2
+             186:  60(i8vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 185 42
+             187:     39(ptr) AccessChain 34(data) 182 37 38
+             188:  17(int8_t) CompositeExtract 186 0
+                              Store 187 188
+             189:     39(ptr) AccessChain 34(data) 182 37 42
+             190:  17(int8_t) CompositeExtract 186 1
+                              Store 189 190
+             191:     39(ptr) AccessChain 34(data) 182 37 69
+             192:  17(int8_t) CompositeExtract 186 2
+                              Store 191 192
+             193:      6(int) Load 8(invocation)
+             194:     49(ptr) AccessChain 34(data) 73 37
+             195:  18(i8vec4) Load 194
+             196:  18(i8vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 195 42
+             197:     49(ptr) AccessChain 34(data) 193 37
+                              Store 197 196
              198:      6(int) Load 8(invocation)
-             199:     49(ptr) AccessChain 34(data) 68 37
-             200:  18(i8vec4) Load 199
-             201:  18(i8vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 200 42
-             202:     49(ptr) AccessChain 34(data) 198 37
+             199:     39(ptr) AccessChain 34(data) 37 37 38
+             200:  17(int8_t) Load 199
+             201:  17(int8_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 200 42
+             202:     39(ptr) AccessChain 34(data) 198 37 38
                               Store 202 201
              203:      6(int) Load 8(invocation)
-             204:     39(ptr) AccessChain 34(data) 37 37 38
-             205:  17(int8_t) Load 204
-             206:  17(int8_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 205 42
-             207:     39(ptr) AccessChain 34(data) 203 37 38
-                              Store 207 206
-             208:      6(int) Load 8(invocation)
-             209:     49(ptr) AccessChain 34(data) 47 37
-             210:  18(i8vec4) Load 209
-             211:  48(i8vec2) VectorShuffle 210 210 0 1
-             212:  48(i8vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 211 42
-             213:     49(ptr) AccessChain 34(data) 208 37
+             204:     49(ptr) AccessChain 34(data) 47 37
+             205:  18(i8vec4) Load 204
+             206:  48(i8vec2) VectorShuffle 205 205 0 1
+             207:  48(i8vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 206 42
+             208:     39(ptr) AccessChain 34(data) 203 37 38
+             209:  17(int8_t) CompositeExtract 207 0
+                              Store 208 209
+             210:     39(ptr) AccessChain 34(data) 203 37 42
+             211:  17(int8_t) CompositeExtract 207 1
+                              Store 210 211
+             212:      6(int) Load 8(invocation)
+             213:     49(ptr) AccessChain 34(data) 59 37
              214:  18(i8vec4) Load 213
-             215:  18(i8vec4) VectorShuffle 214 212 4 5 2 3
-                              Store 213 215
-             216:      6(int) Load 8(invocation)
-             217:     49(ptr) AccessChain 34(data) 58 37
-             218:  18(i8vec4) Load 217
-             219:  59(i8vec3) VectorShuffle 218 218 0 1 2
-             220:  59(i8vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 219 42
-             221:     49(ptr) AccessChain 34(data) 216 37
-             222:  18(i8vec4) Load 221
-             223:  18(i8vec4) VectorShuffle 222 220 4 5 6 3
-                              Store 221 223
-             224:      6(int) Load 8(invocation)
-             225:     49(ptr) AccessChain 34(data) 68 37
-             226:  18(i8vec4) Load 225
-             227:  18(i8vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 226 42
-             228:     49(ptr) AccessChain 34(data) 224 37
-                              Store 228 227
-             229:      6(int) Load 8(invocation)
-             231:    230(ptr) AccessChain 34(data) 37 47 38
-             232:  19(int8_t) Load 231
-             233:  19(int8_t) GroupNonUniformIAdd 43 ClusteredReduce 232 42
-             234:    230(ptr) AccessChain 34(data) 229 47 38
-                              Store 234 233
-             235:      6(int) Load 8(invocation)
-             238:    237(ptr) AccessChain 34(data) 47 47
-             239:  20(i8vec4) Load 238
-             240: 236(i8vec2) VectorShuffle 239 239 0 1
-             241: 236(i8vec2) GroupNonUniformIAdd 43 ClusteredReduce 240 42
-             242:    237(ptr) AccessChain 34(data) 235 47
-             243:  20(i8vec4) Load 242
-             244:  20(i8vec4) VectorShuffle 243 241 4 5 2 3
-                              Store 242 244
-             245:      6(int) Load 8(invocation)
-             247:    237(ptr) AccessChain 34(data) 58 47
-             248:  20(i8vec4) Load 247
-             249: 246(i8vec3) VectorShuffle 248 248 0 1 2
-             250: 246(i8vec3) GroupNonUniformIAdd 43 ClusteredReduce 249 42
-             251:    237(ptr) AccessChain 34(data) 245 47
-             252:  20(i8vec4) Load 251
-             253:  20(i8vec4) VectorShuffle 252 250 4 5 6 3
-                              Store 251 253
-             254:      6(int) Load 8(invocation)
-             255:    237(ptr) AccessChain 34(data) 68 47
-             256:  20(i8vec4) Load 255
-             257:  20(i8vec4) GroupNonUniformIAdd 43 ClusteredReduce 256 42
-             258:    237(ptr) AccessChain 34(data) 254 47
-                              Store 258 257
-             259:      6(int) Load 8(invocation)
-             260:    230(ptr) AccessChain 34(data) 37 47 38
+             215:  60(i8vec3) VectorShuffle 214 214 0 1 2
+             216:  60(i8vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 215 42
+             217:     39(ptr) AccessChain 34(data) 212 37 38
+             218:  17(int8_t) CompositeExtract 216 0
+                              Store 217 218
+             219:     39(ptr) AccessChain 34(data) 212 37 42
+             220:  17(int8_t) CompositeExtract 216 1
+                              Store 219 220
+             221:     39(ptr) AccessChain 34(data) 212 37 69
+             222:  17(int8_t) CompositeExtract 216 2
+                              Store 221 222
+             223:      6(int) Load 8(invocation)
+             224:     49(ptr) AccessChain 34(data) 73 37
+             225:  18(i8vec4) Load 224
+             226:  18(i8vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 225 42
+             227:     49(ptr) AccessChain 34(data) 223 37
+                              Store 227 226
+             228:      6(int) Load 8(invocation)
+             229:     39(ptr) AccessChain 34(data) 37 37 38
+             230:  17(int8_t) Load 229
+             231:  17(int8_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 230 42
+             232:     39(ptr) AccessChain 34(data) 228 37 38
+                              Store 232 231
+             233:      6(int) Load 8(invocation)
+             234:     49(ptr) AccessChain 34(data) 47 37
+             235:  18(i8vec4) Load 234
+             236:  48(i8vec2) VectorShuffle 235 235 0 1
+             237:  48(i8vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 236 42
+             238:     39(ptr) AccessChain 34(data) 233 37 38
+             239:  17(int8_t) CompositeExtract 237 0
+                              Store 238 239
+             240:     39(ptr) AccessChain 34(data) 233 37 42
+             241:  17(int8_t) CompositeExtract 237 1
+                              Store 240 241
+             242:      6(int) Load 8(invocation)
+             243:     49(ptr) AccessChain 34(data) 59 37
+             244:  18(i8vec4) Load 243
+             245:  60(i8vec3) VectorShuffle 244 244 0 1 2
+             246:  60(i8vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 245 42
+             247:     39(ptr) AccessChain 34(data) 242 37 38
+             248:  17(int8_t) CompositeExtract 246 0
+                              Store 247 248
+             249:     39(ptr) AccessChain 34(data) 242 37 42
+             250:  17(int8_t) CompositeExtract 246 1
+                              Store 249 250
+             251:     39(ptr) AccessChain 34(data) 242 37 69
+             252:  17(int8_t) CompositeExtract 246 2
+                              Store 251 252
+             253:      6(int) Load 8(invocation)
+             254:     49(ptr) AccessChain 34(data) 73 37
+             255:  18(i8vec4) Load 254
+             256:  18(i8vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 255 42
+             257:     49(ptr) AccessChain 34(data) 253 37
+                              Store 257 256
+             258:      6(int) Load 8(invocation)
+             260:    259(ptr) AccessChain 34(data) 37 47 38
              261:  19(int8_t) Load 260
-             262:  19(int8_t) GroupNonUniformIMul 43 ClusteredReduce 261 42
-             263:    230(ptr) AccessChain 34(data) 259 47 38
+             262:  19(int8_t) GroupNonUniformIAdd 43 ClusteredReduce 261 42
+             263:    259(ptr) AccessChain 34(data) 258 47 38
                               Store 263 262
              264:      6(int) Load 8(invocation)
-             265:    237(ptr) AccessChain 34(data) 47 47
-             266:  20(i8vec4) Load 265
-             267: 236(i8vec2) VectorShuffle 266 266 0 1
-             268: 236(i8vec2) GroupNonUniformIMul 43 ClusteredReduce 267 42
-             269:    237(ptr) AccessChain 34(data) 264 47
-             270:  20(i8vec4) Load 269
-             271:  20(i8vec4) VectorShuffle 270 268 4 5 2 3
-                              Store 269 271
-             272:      6(int) Load 8(invocation)
-             273:    237(ptr) AccessChain 34(data) 58 47
-             274:  20(i8vec4) Load 273
-             275: 246(i8vec3) VectorShuffle 274 274 0 1 2
-             276: 246(i8vec3) GroupNonUniformIMul 43 ClusteredReduce 275 42
-             277:    237(ptr) AccessChain 34(data) 272 47
+             267:    266(ptr) AccessChain 34(data) 47 47
+             268:  20(i8vec4) Load 267
+             269: 265(i8vec2) VectorShuffle 268 268 0 1
+             270: 265(i8vec2) GroupNonUniformIAdd 43 ClusteredReduce 269 42
+             271:    259(ptr) AccessChain 34(data) 264 47 38
+             272:  19(int8_t) CompositeExtract 270 0
+                              Store 271 272
+             273:    259(ptr) AccessChain 34(data) 264 47 42
+             274:  19(int8_t) CompositeExtract 270 1
+                              Store 273 274
+             275:      6(int) Load 8(invocation)
+             277:    266(ptr) AccessChain 34(data) 59 47
              278:  20(i8vec4) Load 277
-             279:  20(i8vec4) VectorShuffle 278 276 4 5 6 3
-                              Store 277 279
-             280:      6(int) Load 8(invocation)
-             281:    237(ptr) AccessChain 34(data) 68 47
-             282:  20(i8vec4) Load 281
-             283:  20(i8vec4) GroupNonUniformIMul 43 ClusteredReduce 282 42
-             284:    237(ptr) AccessChain 34(data) 280 47
-                              Store 284 283
-             285:      6(int) Load 8(invocation)
-             286:    230(ptr) AccessChain 34(data) 37 47 38
-             287:  19(int8_t) Load 286
-             288:  19(int8_t) GroupNonUniformUMin 43 ClusteredReduce 287 42
-             289:    230(ptr) AccessChain 34(data) 285 47 38
-                              Store 289 288
-             290:      6(int) Load 8(invocation)
-             291:    237(ptr) AccessChain 34(data) 47 47
-             292:  20(i8vec4) Load 291
-             293: 236(i8vec2) VectorShuffle 292 292 0 1
-             294: 236(i8vec2) GroupNonUniformUMin 43 ClusteredReduce 293 42
-             295:    237(ptr) AccessChain 34(data) 290 47
-             296:  20(i8vec4) Load 295
-             297:  20(i8vec4) VectorShuffle 296 294 4 5 2 3
-                              Store 295 297
-             298:      6(int) Load 8(invocation)
-             299:    237(ptr) AccessChain 34(data) 58 47
-             300:  20(i8vec4) Load 299
-             301: 246(i8vec3) VectorShuffle 300 300 0 1 2
-             302: 246(i8vec3) GroupNonUniformUMin 43 ClusteredReduce 301 42
-             303:    237(ptr) AccessChain 34(data) 298 47
-             304:  20(i8vec4) Load 303
-             305:  20(i8vec4) VectorShuffle 304 302 4 5 6 3
-                              Store 303 305
+             279: 276(i8vec3) VectorShuffle 278 278 0 1 2
+             280: 276(i8vec3) GroupNonUniformIAdd 43 ClusteredReduce 279 42
+             281:    259(ptr) AccessChain 34(data) 275 47 38
+             282:  19(int8_t) CompositeExtract 280 0
+                              Store 281 282
+             283:    259(ptr) AccessChain 34(data) 275 47 42
+             284:  19(int8_t) CompositeExtract 280 1
+                              Store 283 284
+             285:    259(ptr) AccessChain 34(data) 275 47 69
+             286:  19(int8_t) CompositeExtract 280 2
+                              Store 285 286
+             287:      6(int) Load 8(invocation)
+             288:    266(ptr) AccessChain 34(data) 73 47
+             289:  20(i8vec4) Load 288
+             290:  20(i8vec4) GroupNonUniformIAdd 43 ClusteredReduce 289 42
+             291:    266(ptr) AccessChain 34(data) 287 47
+                              Store 291 290
+             292:      6(int) Load 8(invocation)
+             293:    259(ptr) AccessChain 34(data) 37 47 38
+             294:  19(int8_t) Load 293
+             295:  19(int8_t) GroupNonUniformIMul 43 ClusteredReduce 294 42
+             296:    259(ptr) AccessChain 34(data) 292 47 38
+                              Store 296 295
+             297:      6(int) Load 8(invocation)
+             298:    266(ptr) AccessChain 34(data) 47 47
+             299:  20(i8vec4) Load 298
+             300: 265(i8vec2) VectorShuffle 299 299 0 1
+             301: 265(i8vec2) GroupNonUniformIMul 43 ClusteredReduce 300 42
+             302:    259(ptr) AccessChain 34(data) 297 47 38
+             303:  19(int8_t) CompositeExtract 301 0
+                              Store 302 303
+             304:    259(ptr) AccessChain 34(data) 297 47 42
+             305:  19(int8_t) CompositeExtract 301 1
+                              Store 304 305
              306:      6(int) Load 8(invocation)
-             307:    237(ptr) AccessChain 34(data) 68 47
+             307:    266(ptr) AccessChain 34(data) 59 47
              308:  20(i8vec4) Load 307
-             309:  20(i8vec4) GroupNonUniformUMin 43 ClusteredReduce 308 42
-             310:    237(ptr) AccessChain 34(data) 306 47
-                              Store 310 309
-             311:      6(int) Load 8(invocation)
-             312:    230(ptr) AccessChain 34(data) 37 47 38
-             313:  19(int8_t) Load 312
-             314:  19(int8_t) GroupNonUniformUMax 43 ClusteredReduce 313 42
-             315:    230(ptr) AccessChain 34(data) 311 47 38
-                              Store 315 314
-             316:      6(int) Load 8(invocation)
-             317:    237(ptr) AccessChain 34(data) 47 47
-             318:  20(i8vec4) Load 317
-             319: 236(i8vec2) VectorShuffle 318 318 0 1
-             320: 236(i8vec2) GroupNonUniformUMax 43 ClusteredReduce 319 42
-             321:    237(ptr) AccessChain 34(data) 316 47
-             322:  20(i8vec4) Load 321
-             323:  20(i8vec4) VectorShuffle 322 320 4 5 2 3
-                              Store 321 323
-             324:      6(int) Load 8(invocation)
-             325:    237(ptr) AccessChain 34(data) 58 47
-             326:  20(i8vec4) Load 325
-             327: 246(i8vec3) VectorShuffle 326 326 0 1 2
-             328: 246(i8vec3) GroupNonUniformUMax 43 ClusteredReduce 327 42
-             329:    237(ptr) AccessChain 34(data) 324 47
-             330:  20(i8vec4) Load 329
-             331:  20(i8vec4) VectorShuffle 330 328 4 5 6 3
-                              Store 329 331
-             332:      6(int) Load 8(invocation)
-             333:    237(ptr) AccessChain 34(data) 68 47
-             334:  20(i8vec4) Load 333
-             335:  20(i8vec4) GroupNonUniformUMax 43 ClusteredReduce 334 42
-             336:    237(ptr) AccessChain 34(data) 332 47
-                              Store 336 335
-             337:      6(int) Load 8(invocation)
-             338:    230(ptr) AccessChain 34(data) 37 47 38
-             339:  19(int8_t) Load 338
-             340:  19(int8_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 339 42
-             341:    230(ptr) AccessChain 34(data) 337 47 38
-                              Store 341 340
-             342:      6(int) Load 8(invocation)
-             343:    237(ptr) AccessChain 34(data) 47 47
-             344:  20(i8vec4) Load 343
-             345: 236(i8vec2) VectorShuffle 344 344 0 1
-             346: 236(i8vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 345 42
-             347:    237(ptr) AccessChain 34(data) 342 47
-             348:  20(i8vec4) Load 347
-             349:  20(i8vec4) VectorShuffle 348 346 4 5 2 3
-                              Store 347 349
-             350:      6(int) Load 8(invocation)
-             351:    237(ptr) AccessChain 34(data) 58 47
-             352:  20(i8vec4) Load 351
-             353: 246(i8vec3) VectorShuffle 352 352 0 1 2
-             354: 246(i8vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 353 42
-             355:    237(ptr) AccessChain 34(data) 350 47
-             356:  20(i8vec4) Load 355
-             357:  20(i8vec4) VectorShuffle 356 354 4 5 6 3
-                              Store 355 357
-             358:      6(int) Load 8(invocation)
-             359:    237(ptr) AccessChain 34(data) 68 47
-             360:  20(i8vec4) Load 359
-             361:  20(i8vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 360 42
-             362:    237(ptr) AccessChain 34(data) 358 47
-                              Store 362 361
-             363:      6(int) Load 8(invocation)
-             364:    230(ptr) AccessChain 34(data) 37 47 38
-             365:  19(int8_t) Load 364
-             366:  19(int8_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 365 42
-             367:    230(ptr) AccessChain 34(data) 363 47 38
-                              Store 367 366
-             368:      6(int) Load 8(invocation)
-             369:    237(ptr) AccessChain 34(data) 47 47
-             370:  20(i8vec4) Load 369
-             371: 236(i8vec2) VectorShuffle 370 370 0 1
-             372: 236(i8vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 371 42
-             373:    237(ptr) AccessChain 34(data) 368 47
-             374:  20(i8vec4) Load 373
-             375:  20(i8vec4) VectorShuffle 374 372 4 5 2 3
-                              Store 373 375
-             376:      6(int) Load 8(invocation)
-             377:    237(ptr) AccessChain 34(data) 58 47
-             378:  20(i8vec4) Load 377
-             379: 246(i8vec3) VectorShuffle 378 378 0 1 2
-             380: 246(i8vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 379 42
-             381:    237(ptr) AccessChain 34(data) 376 47
-             382:  20(i8vec4) Load 381
-             383:  20(i8vec4) VectorShuffle 382 380 4 5 6 3
-                              Store 381 383
-             384:      6(int) Load 8(invocation)
-             385:    237(ptr) AccessChain 34(data) 68 47
-             386:  20(i8vec4) Load 385
-             387:  20(i8vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 386 42
-             388:    237(ptr) AccessChain 34(data) 384 47
-                              Store 388 387
-             389:      6(int) Load 8(invocation)
-             390:    230(ptr) AccessChain 34(data) 37 47 38
-             391:  19(int8_t) Load 390
-             392:  19(int8_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 391 42
-             393:    230(ptr) AccessChain 34(data) 389 47 38
-                              Store 393 392
-             394:      6(int) Load 8(invocation)
-             395:    237(ptr) AccessChain 34(data) 47 47
-             396:  20(i8vec4) Load 395
-             397: 236(i8vec2) VectorShuffle 396 396 0 1
-             398: 236(i8vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 397 42
-             399:    237(ptr) AccessChain 34(data) 394 47
-             400:  20(i8vec4) Load 399
-             401:  20(i8vec4) VectorShuffle 400 398 4 5 2 3
-                              Store 399 401
-             402:      6(int) Load 8(invocation)
-             403:    237(ptr) AccessChain 34(data) 58 47
-             404:  20(i8vec4) Load 403
-             405: 246(i8vec3) VectorShuffle 404 404 0 1 2
-             406: 246(i8vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 405 42
-             407:    237(ptr) AccessChain 34(data) 402 47
-             408:  20(i8vec4) Load 407
-             409:  20(i8vec4) VectorShuffle 408 406 4 5 6 3
-                              Store 407 409
-             410:      6(int) Load 8(invocation)
-             411:    237(ptr) AccessChain 34(data) 68 47
-             412:  20(i8vec4) Load 411
-             413:  20(i8vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 412 42
-             414:    237(ptr) AccessChain 34(data) 410 47
-                              Store 414 413
-             415:      6(int) Load 8(invocation)
-             417:    416(ptr) AccessChain 34(data) 37 58 38
-             418: 21(int16_t) Load 417
-             419: 21(int16_t) GroupNonUniformIAdd 43 ClusteredReduce 418 42
-             420:    416(ptr) AccessChain 34(data) 415 58 38
-                              Store 420 419
-             421:      6(int) Load 8(invocation)
-             424:    423(ptr) AccessChain 34(data) 47 58
-             425: 22(i16vec4) Load 424
-             426:422(i16vec2) VectorShuffle 425 425 0 1
-             427:422(i16vec2) GroupNonUniformIAdd 43 ClusteredReduce 426 42
-             428:    423(ptr) AccessChain 34(data) 421 58
-             429: 22(i16vec4) Load 428
-             430: 22(i16vec4) VectorShuffle 429 427 4 5 2 3
-                              Store 428 430
-             431:      6(int) Load 8(invocation)
-             433:    423(ptr) AccessChain 34(data) 58 58
-             434: 22(i16vec4) Load 433
-             435:432(i16vec3) VectorShuffle 434 434 0 1 2
-             436:432(i16vec3) GroupNonUniformIAdd 43 ClusteredReduce 435 42
-             437:    423(ptr) AccessChain 34(data) 431 58
-             438: 22(i16vec4) Load 437
-             439: 22(i16vec4) VectorShuffle 438 436 4 5 6 3
-                              Store 437 439
-             440:      6(int) Load 8(invocation)
-             441:    423(ptr) AccessChain 34(data) 68 58
-             442: 22(i16vec4) Load 441
-             443: 22(i16vec4) GroupNonUniformIAdd 43 ClusteredReduce 442 42
-             444:    423(ptr) AccessChain 34(data) 440 58
-                              Store 444 443
-             445:      6(int) Load 8(invocation)
-             446:    416(ptr) AccessChain 34(data) 37 58 38
-             447: 21(int16_t) Load 446
-             448: 21(int16_t) GroupNonUniformIMul 43 ClusteredReduce 447 42
-             449:    416(ptr) AccessChain 34(data) 445 58 38
-                              Store 449 448
-             450:      6(int) Load 8(invocation)
-             451:    423(ptr) AccessChain 34(data) 47 58
-             452: 22(i16vec4) Load 451
-             453:422(i16vec2) VectorShuffle 452 452 0 1
-             454:422(i16vec2) GroupNonUniformIMul 43 ClusteredReduce 453 42
-             455:    423(ptr) AccessChain 34(data) 450 58
-             456: 22(i16vec4) Load 455
-             457: 22(i16vec4) VectorShuffle 456 454 4 5 2 3
-                              Store 455 457
-             458:      6(int) Load 8(invocation)
-             459:    423(ptr) AccessChain 34(data) 58 58
-             460: 22(i16vec4) Load 459
-             461:432(i16vec3) VectorShuffle 460 460 0 1 2
-             462:432(i16vec3) GroupNonUniformIMul 43 ClusteredReduce 461 42
-             463:    423(ptr) AccessChain 34(data) 458 58
-             464: 22(i16vec4) Load 463
-             465: 22(i16vec4) VectorShuffle 464 462 4 5 6 3
-                              Store 463 465
-             466:      6(int) Load 8(invocation)
-             467:    423(ptr) AccessChain 34(data) 68 58
-             468: 22(i16vec4) Load 467
-             469: 22(i16vec4) GroupNonUniformIMul 43 ClusteredReduce 468 42
-             470:    423(ptr) AccessChain 34(data) 466 58
-                              Store 470 469
-             471:      6(int) Load 8(invocation)
-             472:    416(ptr) AccessChain 34(data) 37 58 38
-             473: 21(int16_t) Load 472
-             474: 21(int16_t) GroupNonUniformSMin 43 ClusteredReduce 473 42
-             475:    416(ptr) AccessChain 34(data) 471 58 38
-                              Store 475 474
-             476:      6(int) Load 8(invocation)
-             477:    423(ptr) AccessChain 34(data) 47 58
-             478: 22(i16vec4) Load 477
-             479:422(i16vec2) VectorShuffle 478 478 0 1
-             480:422(i16vec2) GroupNonUniformSMin 43 ClusteredReduce 479 42
-             481:    423(ptr) AccessChain 34(data) 476 58
+             309: 276(i8vec3) VectorShuffle 308 308 0 1 2
+             310: 276(i8vec3) GroupNonUniformIMul 43 ClusteredReduce 309 42
+             311:    259(ptr) AccessChain 34(data) 306 47 38
+             312:  19(int8_t) CompositeExtract 310 0
+                              Store 311 312
+             313:    259(ptr) AccessChain 34(data) 306 47 42
+             314:  19(int8_t) CompositeExtract 310 1
+                              Store 313 314
+             315:    259(ptr) AccessChain 34(data) 306 47 69
+             316:  19(int8_t) CompositeExtract 310 2
+                              Store 315 316
+             317:      6(int) Load 8(invocation)
+             318:    266(ptr) AccessChain 34(data) 73 47
+             319:  20(i8vec4) Load 318
+             320:  20(i8vec4) GroupNonUniformIMul 43 ClusteredReduce 319 42
+             321:    266(ptr) AccessChain 34(data) 317 47
+                              Store 321 320
+             322:      6(int) Load 8(invocation)
+             323:    259(ptr) AccessChain 34(data) 37 47 38
+             324:  19(int8_t) Load 323
+             325:  19(int8_t) GroupNonUniformUMin 43 ClusteredReduce 324 42
+             326:    259(ptr) AccessChain 34(data) 322 47 38
+                              Store 326 325
+             327:      6(int) Load 8(invocation)
+             328:    266(ptr) AccessChain 34(data) 47 47
+             329:  20(i8vec4) Load 328
+             330: 265(i8vec2) VectorShuffle 329 329 0 1
+             331: 265(i8vec2) GroupNonUniformUMin 43 ClusteredReduce 330 42
+             332:    259(ptr) AccessChain 34(data) 327 47 38
+             333:  19(int8_t) CompositeExtract 331 0
+                              Store 332 333
+             334:    259(ptr) AccessChain 34(data) 327 47 42
+             335:  19(int8_t) CompositeExtract 331 1
+                              Store 334 335
+             336:      6(int) Load 8(invocation)
+             337:    266(ptr) AccessChain 34(data) 59 47
+             338:  20(i8vec4) Load 337
+             339: 276(i8vec3) VectorShuffle 338 338 0 1 2
+             340: 276(i8vec3) GroupNonUniformUMin 43 ClusteredReduce 339 42
+             341:    259(ptr) AccessChain 34(data) 336 47 38
+             342:  19(int8_t) CompositeExtract 340 0
+                              Store 341 342
+             343:    259(ptr) AccessChain 34(data) 336 47 42
+             344:  19(int8_t) CompositeExtract 340 1
+                              Store 343 344
+             345:    259(ptr) AccessChain 34(data) 336 47 69
+             346:  19(int8_t) CompositeExtract 340 2
+                              Store 345 346
+             347:      6(int) Load 8(invocation)
+             348:    266(ptr) AccessChain 34(data) 73 47
+             349:  20(i8vec4) Load 348
+             350:  20(i8vec4) GroupNonUniformUMin 43 ClusteredReduce 349 42
+             351:    266(ptr) AccessChain 34(data) 347 47
+                              Store 351 350
+             352:      6(int) Load 8(invocation)
+             353:    259(ptr) AccessChain 34(data) 37 47 38
+             354:  19(int8_t) Load 353
+             355:  19(int8_t) GroupNonUniformUMax 43 ClusteredReduce 354 42
+             356:    259(ptr) AccessChain 34(data) 352 47 38
+                              Store 356 355
+             357:      6(int) Load 8(invocation)
+             358:    266(ptr) AccessChain 34(data) 47 47
+             359:  20(i8vec4) Load 358
+             360: 265(i8vec2) VectorShuffle 359 359 0 1
+             361: 265(i8vec2) GroupNonUniformUMax 43 ClusteredReduce 360 42
+             362:    259(ptr) AccessChain 34(data) 357 47 38
+             363:  19(int8_t) CompositeExtract 361 0
+                              Store 362 363
+             364:    259(ptr) AccessChain 34(data) 357 47 42
+             365:  19(int8_t) CompositeExtract 361 1
+                              Store 364 365
+             366:      6(int) Load 8(invocation)
+             367:    266(ptr) AccessChain 34(data) 59 47
+             368:  20(i8vec4) Load 367
+             369: 276(i8vec3) VectorShuffle 368 368 0 1 2
+             370: 276(i8vec3) GroupNonUniformUMax 43 ClusteredReduce 369 42
+             371:    259(ptr) AccessChain 34(data) 366 47 38
+             372:  19(int8_t) CompositeExtract 370 0
+                              Store 371 372
+             373:    259(ptr) AccessChain 34(data) 366 47 42
+             374:  19(int8_t) CompositeExtract 370 1
+                              Store 373 374
+             375:    259(ptr) AccessChain 34(data) 366 47 69
+             376:  19(int8_t) CompositeExtract 370 2
+                              Store 375 376
+             377:      6(int) Load 8(invocation)
+             378:    266(ptr) AccessChain 34(data) 73 47
+             379:  20(i8vec4) Load 378
+             380:  20(i8vec4) GroupNonUniformUMax 43 ClusteredReduce 379 42
+             381:    266(ptr) AccessChain 34(data) 377 47
+                              Store 381 380
+             382:      6(int) Load 8(invocation)
+             383:    259(ptr) AccessChain 34(data) 37 47 38
+             384:  19(int8_t) Load 383
+             385:  19(int8_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 384 42
+             386:    259(ptr) AccessChain 34(data) 382 47 38
+                              Store 386 385
+             387:      6(int) Load 8(invocation)
+             388:    266(ptr) AccessChain 34(data) 47 47
+             389:  20(i8vec4) Load 388
+             390: 265(i8vec2) VectorShuffle 389 389 0 1
+             391: 265(i8vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 390 42
+             392:    259(ptr) AccessChain 34(data) 387 47 38
+             393:  19(int8_t) CompositeExtract 391 0
+                              Store 392 393
+             394:    259(ptr) AccessChain 34(data) 387 47 42
+             395:  19(int8_t) CompositeExtract 391 1
+                              Store 394 395
+             396:      6(int) Load 8(invocation)
+             397:    266(ptr) AccessChain 34(data) 59 47
+             398:  20(i8vec4) Load 397
+             399: 276(i8vec3) VectorShuffle 398 398 0 1 2
+             400: 276(i8vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 399 42
+             401:    259(ptr) AccessChain 34(data) 396 47 38
+             402:  19(int8_t) CompositeExtract 400 0
+                              Store 401 402
+             403:    259(ptr) AccessChain 34(data) 396 47 42
+             404:  19(int8_t) CompositeExtract 400 1
+                              Store 403 404
+             405:    259(ptr) AccessChain 34(data) 396 47 69
+             406:  19(int8_t) CompositeExtract 400 2
+                              Store 405 406
+             407:      6(int) Load 8(invocation)
+             408:    266(ptr) AccessChain 34(data) 73 47
+             409:  20(i8vec4) Load 408
+             410:  20(i8vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 409 42
+             411:    266(ptr) AccessChain 34(data) 407 47
+                              Store 411 410
+             412:      6(int) Load 8(invocation)
+             413:    259(ptr) AccessChain 34(data) 37 47 38
+             414:  19(int8_t) Load 413
+             415:  19(int8_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 414 42
+             416:    259(ptr) AccessChain 34(data) 412 47 38
+                              Store 416 415
+             417:      6(int) Load 8(invocation)
+             418:    266(ptr) AccessChain 34(data) 47 47
+             419:  20(i8vec4) Load 418
+             420: 265(i8vec2) VectorShuffle 419 419 0 1
+             421: 265(i8vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 420 42
+             422:    259(ptr) AccessChain 34(data) 417 47 38
+             423:  19(int8_t) CompositeExtract 421 0
+                              Store 422 423
+             424:    259(ptr) AccessChain 34(data) 417 47 42
+             425:  19(int8_t) CompositeExtract 421 1
+                              Store 424 425
+             426:      6(int) Load 8(invocation)
+             427:    266(ptr) AccessChain 34(data) 59 47
+             428:  20(i8vec4) Load 427
+             429: 276(i8vec3) VectorShuffle 428 428 0 1 2
+             430: 276(i8vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 429 42
+             431:    259(ptr) AccessChain 34(data) 426 47 38
+             432:  19(int8_t) CompositeExtract 430 0
+                              Store 431 432
+             433:    259(ptr) AccessChain 34(data) 426 47 42
+             434:  19(int8_t) CompositeExtract 430 1
+                              Store 433 434
+             435:    259(ptr) AccessChain 34(data) 426 47 69
+             436:  19(int8_t) CompositeExtract 430 2
+                              Store 435 436
+             437:      6(int) Load 8(invocation)
+             438:    266(ptr) AccessChain 34(data) 73 47
+             439:  20(i8vec4) Load 438
+             440:  20(i8vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 439 42
+             441:    266(ptr) AccessChain 34(data) 437 47
+                              Store 441 440
+             442:      6(int) Load 8(invocation)
+             443:    259(ptr) AccessChain 34(data) 37 47 38
+             444:  19(int8_t) Load 443
+             445:  19(int8_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 444 42
+             446:    259(ptr) AccessChain 34(data) 442 47 38
+                              Store 446 445
+             447:      6(int) Load 8(invocation)
+             448:    266(ptr) AccessChain 34(data) 47 47
+             449:  20(i8vec4) Load 448
+             450: 265(i8vec2) VectorShuffle 449 449 0 1
+             451: 265(i8vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 450 42
+             452:    259(ptr) AccessChain 34(data) 447 47 38
+             453:  19(int8_t) CompositeExtract 451 0
+                              Store 452 453
+             454:    259(ptr) AccessChain 34(data) 447 47 42
+             455:  19(int8_t) CompositeExtract 451 1
+                              Store 454 455
+             456:      6(int) Load 8(invocation)
+             457:    266(ptr) AccessChain 34(data) 59 47
+             458:  20(i8vec4) Load 457
+             459: 276(i8vec3) VectorShuffle 458 458 0 1 2
+             460: 276(i8vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 459 42
+             461:    259(ptr) AccessChain 34(data) 456 47 38
+             462:  19(int8_t) CompositeExtract 460 0
+                              Store 461 462
+             463:    259(ptr) AccessChain 34(data) 456 47 42
+             464:  19(int8_t) CompositeExtract 460 1
+                              Store 463 464
+             465:    259(ptr) AccessChain 34(data) 456 47 69
+             466:  19(int8_t) CompositeExtract 460 2
+                              Store 465 466
+             467:      6(int) Load 8(invocation)
+             468:    266(ptr) AccessChain 34(data) 73 47
+             469:  20(i8vec4) Load 468
+             470:  20(i8vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 469 42
+             471:    266(ptr) AccessChain 34(data) 467 47
+                              Store 471 470
+             472:      6(int) Load 8(invocation)
+             474:    473(ptr) AccessChain 34(data) 37 59 38
+             475: 21(int16_t) Load 474
+             476: 21(int16_t) GroupNonUniformIAdd 43 ClusteredReduce 475 42
+             477:    473(ptr) AccessChain 34(data) 472 59 38
+                              Store 477 476
+             478:      6(int) Load 8(invocation)
+             481:    480(ptr) AccessChain 34(data) 47 59
              482: 22(i16vec4) Load 481
-             483: 22(i16vec4) VectorShuffle 482 480 4 5 2 3
-                              Store 481 483
-             484:      6(int) Load 8(invocation)
-             485:    423(ptr) AccessChain 34(data) 58 58
-             486: 22(i16vec4) Load 485
-             487:432(i16vec3) VectorShuffle 486 486 0 1 2
-             488:432(i16vec3) GroupNonUniformSMin 43 ClusteredReduce 487 42
-             489:    423(ptr) AccessChain 34(data) 484 58
-             490: 22(i16vec4) Load 489
-             491: 22(i16vec4) VectorShuffle 490 488 4 5 6 3
-                              Store 489 491
-             492:      6(int) Load 8(invocation)
-             493:    423(ptr) AccessChain 34(data) 68 58
-             494: 22(i16vec4) Load 493
-             495: 22(i16vec4) GroupNonUniformSMin 43 ClusteredReduce 494 42
-             496:    423(ptr) AccessChain 34(data) 492 58
-                              Store 496 495
-             497:      6(int) Load 8(invocation)
-             498:    416(ptr) AccessChain 34(data) 37 58 38
-             499: 21(int16_t) Load 498
-             500: 21(int16_t) GroupNonUniformSMax 43 ClusteredReduce 499 42
-             501:    416(ptr) AccessChain 34(data) 497 58 38
-                              Store 501 500
-             502:      6(int) Load 8(invocation)
-             503:    423(ptr) AccessChain 34(data) 47 58
-             504: 22(i16vec4) Load 503
-             505:422(i16vec2) VectorShuffle 504 504 0 1
-             506:422(i16vec2) GroupNonUniformSMax 43 ClusteredReduce 505 42
-             507:    423(ptr) AccessChain 34(data) 502 58
-             508: 22(i16vec4) Load 507
-             509: 22(i16vec4) VectorShuffle 508 506 4 5 2 3
-                              Store 507 509
-             510:      6(int) Load 8(invocation)
-             511:    423(ptr) AccessChain 34(data) 58 58
-             512: 22(i16vec4) Load 511
-             513:432(i16vec3) VectorShuffle 512 512 0 1 2
-             514:432(i16vec3) GroupNonUniformSMax 43 ClusteredReduce 513 42
-             515:    423(ptr) AccessChain 34(data) 510 58
-             516: 22(i16vec4) Load 515
-             517: 22(i16vec4) VectorShuffle 516 514 4 5 6 3
-                              Store 515 517
-             518:      6(int) Load 8(invocation)
-             519:    423(ptr) AccessChain 34(data) 68 58
-             520: 22(i16vec4) Load 519
-             521: 22(i16vec4) GroupNonUniformSMax 43 ClusteredReduce 520 42
-             522:    423(ptr) AccessChain 34(data) 518 58
-                              Store 522 521
-             523:      6(int) Load 8(invocation)
-             524:    416(ptr) AccessChain 34(data) 37 58 38
-             525: 21(int16_t) Load 524
-             526: 21(int16_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 525 42
-             527:    416(ptr) AccessChain 34(data) 523 58 38
-                              Store 527 526
-             528:      6(int) Load 8(invocation)
-             529:    423(ptr) AccessChain 34(data) 47 58
-             530: 22(i16vec4) Load 529
-             531:422(i16vec2) VectorShuffle 530 530 0 1
-             532:422(i16vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 531 42
-             533:    423(ptr) AccessChain 34(data) 528 58
-             534: 22(i16vec4) Load 533
-             535: 22(i16vec4) VectorShuffle 534 532 4 5 2 3
-                              Store 533 535
+             483:479(i16vec2) VectorShuffle 482 482 0 1
+             484:479(i16vec2) GroupNonUniformIAdd 43 ClusteredReduce 483 42
+             485:    473(ptr) AccessChain 34(data) 478 59 38
+             486: 21(int16_t) CompositeExtract 484 0
+                              Store 485 486
+             487:    473(ptr) AccessChain 34(data) 478 59 42
+             488: 21(int16_t) CompositeExtract 484 1
+                              Store 487 488
+             489:      6(int) Load 8(invocation)
+             491:    480(ptr) AccessChain 34(data) 59 59
+             492: 22(i16vec4) Load 491
+             493:490(i16vec3) VectorShuffle 492 492 0 1 2
+             494:490(i16vec3) GroupNonUniformIAdd 43 ClusteredReduce 493 42
+             495:    473(ptr) AccessChain 34(data) 489 59 38
+             496: 21(int16_t) CompositeExtract 494 0
+                              Store 495 496
+             497:    473(ptr) AccessChain 34(data) 489 59 42
+             498: 21(int16_t) CompositeExtract 494 1
+                              Store 497 498
+             499:    473(ptr) AccessChain 34(data) 489 59 69
+             500: 21(int16_t) CompositeExtract 494 2
+                              Store 499 500
+             501:      6(int) Load 8(invocation)
+             502:    480(ptr) AccessChain 34(data) 73 59
+             503: 22(i16vec4) Load 502
+             504: 22(i16vec4) GroupNonUniformIAdd 43 ClusteredReduce 503 42
+             505:    480(ptr) AccessChain 34(data) 501 59
+                              Store 505 504
+             506:      6(int) Load 8(invocation)
+             507:    473(ptr) AccessChain 34(data) 37 59 38
+             508: 21(int16_t) Load 507
+             509: 21(int16_t) GroupNonUniformIMul 43 ClusteredReduce 508 42
+             510:    473(ptr) AccessChain 34(data) 506 59 38
+                              Store 510 509
+             511:      6(int) Load 8(invocation)
+             512:    480(ptr) AccessChain 34(data) 47 59
+             513: 22(i16vec4) Load 512
+             514:479(i16vec2) VectorShuffle 513 513 0 1
+             515:479(i16vec2) GroupNonUniformIMul 43 ClusteredReduce 514 42
+             516:    473(ptr) AccessChain 34(data) 511 59 38
+             517: 21(int16_t) CompositeExtract 515 0
+                              Store 516 517
+             518:    473(ptr) AccessChain 34(data) 511 59 42
+             519: 21(int16_t) CompositeExtract 515 1
+                              Store 518 519
+             520:      6(int) Load 8(invocation)
+             521:    480(ptr) AccessChain 34(data) 59 59
+             522: 22(i16vec4) Load 521
+             523:490(i16vec3) VectorShuffle 522 522 0 1 2
+             524:490(i16vec3) GroupNonUniformIMul 43 ClusteredReduce 523 42
+             525:    473(ptr) AccessChain 34(data) 520 59 38
+             526: 21(int16_t) CompositeExtract 524 0
+                              Store 525 526
+             527:    473(ptr) AccessChain 34(data) 520 59 42
+             528: 21(int16_t) CompositeExtract 524 1
+                              Store 527 528
+             529:    473(ptr) AccessChain 34(data) 520 59 69
+             530: 21(int16_t) CompositeExtract 524 2
+                              Store 529 530
+             531:      6(int) Load 8(invocation)
+             532:    480(ptr) AccessChain 34(data) 73 59
+             533: 22(i16vec4) Load 532
+             534: 22(i16vec4) GroupNonUniformIMul 43 ClusteredReduce 533 42
+             535:    480(ptr) AccessChain 34(data) 531 59
+                              Store 535 534
              536:      6(int) Load 8(invocation)
-             537:    423(ptr) AccessChain 34(data) 58 58
-             538: 22(i16vec4) Load 537
-             539:432(i16vec3) VectorShuffle 538 538 0 1 2
-             540:432(i16vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 539 42
-             541:    423(ptr) AccessChain 34(data) 536 58
-             542: 22(i16vec4) Load 541
-             543: 22(i16vec4) VectorShuffle 542 540 4 5 6 3
-                              Store 541 543
-             544:      6(int) Load 8(invocation)
-             545:    423(ptr) AccessChain 34(data) 68 58
-             546: 22(i16vec4) Load 545
-             547: 22(i16vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 546 42
-             548:    423(ptr) AccessChain 34(data) 544 58
-                              Store 548 547
-             549:      6(int) Load 8(invocation)
-             550:    416(ptr) AccessChain 34(data) 37 58 38
-             551: 21(int16_t) Load 550
-             552: 21(int16_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 551 42
-             553:    416(ptr) AccessChain 34(data) 549 58 38
-                              Store 553 552
-             554:      6(int) Load 8(invocation)
-             555:    423(ptr) AccessChain 34(data) 47 58
-             556: 22(i16vec4) Load 555
-             557:422(i16vec2) VectorShuffle 556 556 0 1
-             558:422(i16vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 557 42
-             559:    423(ptr) AccessChain 34(data) 554 58
-             560: 22(i16vec4) Load 559
-             561: 22(i16vec4) VectorShuffle 560 558 4 5 2 3
-                              Store 559 561
-             562:      6(int) Load 8(invocation)
-             563:    423(ptr) AccessChain 34(data) 58 58
-             564: 22(i16vec4) Load 563
-             565:432(i16vec3) VectorShuffle 564 564 0 1 2
-             566:432(i16vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 565 42
-             567:    423(ptr) AccessChain 34(data) 562 58
-             568: 22(i16vec4) Load 567
-             569: 22(i16vec4) VectorShuffle 568 566 4 5 6 3
-                              Store 567 569
-             570:      6(int) Load 8(invocation)
-             571:    423(ptr) AccessChain 34(data) 68 58
-             572: 22(i16vec4) Load 571
-             573: 22(i16vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 572 42
-             574:    423(ptr) AccessChain 34(data) 570 58
-                              Store 574 573
-             575:      6(int) Load 8(invocation)
-             576:    416(ptr) AccessChain 34(data) 37 58 38
-             577: 21(int16_t) Load 576
-             578: 21(int16_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 577 42
-             579:    416(ptr) AccessChain 34(data) 575 58 38
-                              Store 579 578
+             537:    473(ptr) AccessChain 34(data) 37 59 38
+             538: 21(int16_t) Load 537
+             539: 21(int16_t) GroupNonUniformSMin 43 ClusteredReduce 538 42
+             540:    473(ptr) AccessChain 34(data) 536 59 38
+                              Store 540 539
+             541:      6(int) Load 8(invocation)
+             542:    480(ptr) AccessChain 34(data) 47 59
+             543: 22(i16vec4) Load 542
+             544:479(i16vec2) VectorShuffle 543 543 0 1
+             545:479(i16vec2) GroupNonUniformSMin 43 ClusteredReduce 544 42
+             546:    473(ptr) AccessChain 34(data) 541 59 38
+             547: 21(int16_t) CompositeExtract 545 0
+                              Store 546 547
+             548:    473(ptr) AccessChain 34(data) 541 59 42
+             549: 21(int16_t) CompositeExtract 545 1
+                              Store 548 549
+             550:      6(int) Load 8(invocation)
+             551:    480(ptr) AccessChain 34(data) 59 59
+             552: 22(i16vec4) Load 551
+             553:490(i16vec3) VectorShuffle 552 552 0 1 2
+             554:490(i16vec3) GroupNonUniformSMin 43 ClusteredReduce 553 42
+             555:    473(ptr) AccessChain 34(data) 550 59 38
+             556: 21(int16_t) CompositeExtract 554 0
+                              Store 555 556
+             557:    473(ptr) AccessChain 34(data) 550 59 42
+             558: 21(int16_t) CompositeExtract 554 1
+                              Store 557 558
+             559:    473(ptr) AccessChain 34(data) 550 59 69
+             560: 21(int16_t) CompositeExtract 554 2
+                              Store 559 560
+             561:      6(int) Load 8(invocation)
+             562:    480(ptr) AccessChain 34(data) 73 59
+             563: 22(i16vec4) Load 562
+             564: 22(i16vec4) GroupNonUniformSMin 43 ClusteredReduce 563 42
+             565:    480(ptr) AccessChain 34(data) 561 59
+                              Store 565 564
+             566:      6(int) Load 8(invocation)
+             567:    473(ptr) AccessChain 34(data) 37 59 38
+             568: 21(int16_t) Load 567
+             569: 21(int16_t) GroupNonUniformSMax 43 ClusteredReduce 568 42
+             570:    473(ptr) AccessChain 34(data) 566 59 38
+                              Store 570 569
+             571:      6(int) Load 8(invocation)
+             572:    480(ptr) AccessChain 34(data) 47 59
+             573: 22(i16vec4) Load 572
+             574:479(i16vec2) VectorShuffle 573 573 0 1
+             575:479(i16vec2) GroupNonUniformSMax 43 ClusteredReduce 574 42
+             576:    473(ptr) AccessChain 34(data) 571 59 38
+             577: 21(int16_t) CompositeExtract 575 0
+                              Store 576 577
+             578:    473(ptr) AccessChain 34(data) 571 59 42
+             579: 21(int16_t) CompositeExtract 575 1
+                              Store 578 579
              580:      6(int) Load 8(invocation)
-             581:    423(ptr) AccessChain 34(data) 47 58
+             581:    480(ptr) AccessChain 34(data) 59 59
              582: 22(i16vec4) Load 581
-             583:422(i16vec2) VectorShuffle 582 582 0 1
-             584:422(i16vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 583 42
-             585:    423(ptr) AccessChain 34(data) 580 58
-             586: 22(i16vec4) Load 585
-             587: 22(i16vec4) VectorShuffle 586 584 4 5 2 3
-                              Store 585 587
-             588:      6(int) Load 8(invocation)
-             589:    423(ptr) AccessChain 34(data) 58 58
-             590: 22(i16vec4) Load 589
-             591:432(i16vec3) VectorShuffle 590 590 0 1 2
-             592:432(i16vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 591 42
-             593:    423(ptr) AccessChain 34(data) 588 58
-             594: 22(i16vec4) Load 593
-             595: 22(i16vec4) VectorShuffle 594 592 4 5 6 3
-                              Store 593 595
+             583:490(i16vec3) VectorShuffle 582 582 0 1 2
+             584:490(i16vec3) GroupNonUniformSMax 43 ClusteredReduce 583 42
+             585:    473(ptr) AccessChain 34(data) 580 59 38
+             586: 21(int16_t) CompositeExtract 584 0
+                              Store 585 586
+             587:    473(ptr) AccessChain 34(data) 580 59 42
+             588: 21(int16_t) CompositeExtract 584 1
+                              Store 587 588
+             589:    473(ptr) AccessChain 34(data) 580 59 69
+             590: 21(int16_t) CompositeExtract 584 2
+                              Store 589 590
+             591:      6(int) Load 8(invocation)
+             592:    480(ptr) AccessChain 34(data) 73 59
+             593: 22(i16vec4) Load 592
+             594: 22(i16vec4) GroupNonUniformSMax 43 ClusteredReduce 593 42
+             595:    480(ptr) AccessChain 34(data) 591 59
+                              Store 595 594
              596:      6(int) Load 8(invocation)
-             597:    423(ptr) AccessChain 34(data) 68 58
-             598: 22(i16vec4) Load 597
-             599: 22(i16vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 598 42
-             600:    423(ptr) AccessChain 34(data) 596 58
+             597:    473(ptr) AccessChain 34(data) 37 59 38
+             598: 21(int16_t) Load 597
+             599: 21(int16_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 598 42
+             600:    473(ptr) AccessChain 34(data) 596 59 38
                               Store 600 599
              601:      6(int) Load 8(invocation)
-             603:    602(ptr) AccessChain 34(data) 37 68 38
-             604: 23(int16_t) Load 603
-             605: 23(int16_t) GroupNonUniformIAdd 43 ClusteredReduce 604 42
-             606:    602(ptr) AccessChain 34(data) 601 68 38
-                              Store 606 605
-             607:      6(int) Load 8(invocation)
-             610:    609(ptr) AccessChain 34(data) 47 68
-             611: 24(i16vec4) Load 610
-             612:608(i16vec2) VectorShuffle 611 611 0 1
-             613:608(i16vec2) GroupNonUniformIAdd 43 ClusteredReduce 612 42
-             614:    609(ptr) AccessChain 34(data) 607 68
-             615: 24(i16vec4) Load 614
-             616: 24(i16vec4) VectorShuffle 615 613 4 5 2 3
-                              Store 614 616
-             617:      6(int) Load 8(invocation)
-             619:    609(ptr) AccessChain 34(data) 58 68
-             620: 24(i16vec4) Load 619
-             621:618(i16vec3) VectorShuffle 620 620 0 1 2
-             622:618(i16vec3) GroupNonUniformIAdd 43 ClusteredReduce 621 42
-             623:    609(ptr) AccessChain 34(data) 617 68
-             624: 24(i16vec4) Load 623
-             625: 24(i16vec4) VectorShuffle 624 622 4 5 6 3
-                              Store 623 625
+             602:    480(ptr) AccessChain 34(data) 47 59
+             603: 22(i16vec4) Load 602
+             604:479(i16vec2) VectorShuffle 603 603 0 1
+             605:479(i16vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 604 42
+             606:    473(ptr) AccessChain 34(data) 601 59 38
+             607: 21(int16_t) CompositeExtract 605 0
+                              Store 606 607
+             608:    473(ptr) AccessChain 34(data) 601 59 42
+             609: 21(int16_t) CompositeExtract 605 1
+                              Store 608 609
+             610:      6(int) Load 8(invocation)
+             611:    480(ptr) AccessChain 34(data) 59 59
+             612: 22(i16vec4) Load 611
+             613:490(i16vec3) VectorShuffle 612 612 0 1 2
+             614:490(i16vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 613 42
+             615:    473(ptr) AccessChain 34(data) 610 59 38
+             616: 21(int16_t) CompositeExtract 614 0
+                              Store 615 616
+             617:    473(ptr) AccessChain 34(data) 610 59 42
+             618: 21(int16_t) CompositeExtract 614 1
+                              Store 617 618
+             619:    473(ptr) AccessChain 34(data) 610 59 69
+             620: 21(int16_t) CompositeExtract 614 2
+                              Store 619 620
+             621:      6(int) Load 8(invocation)
+             622:    480(ptr) AccessChain 34(data) 73 59
+             623: 22(i16vec4) Load 622
+             624: 22(i16vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 623 42
+             625:    480(ptr) AccessChain 34(data) 621 59
+                              Store 625 624
              626:      6(int) Load 8(invocation)
-             627:    609(ptr) AccessChain 34(data) 68 68
-             628: 24(i16vec4) Load 627
-             629: 24(i16vec4) GroupNonUniformIAdd 43 ClusteredReduce 628 42
-             630:    609(ptr) AccessChain 34(data) 626 68
+             627:    473(ptr) AccessChain 34(data) 37 59 38
+             628: 21(int16_t) Load 627
+             629: 21(int16_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 628 42
+             630:    473(ptr) AccessChain 34(data) 626 59 38
                               Store 630 629
              631:      6(int) Load 8(invocation)
-             632:    602(ptr) AccessChain 34(data) 37 68 38
-             633: 23(int16_t) Load 632
-             634: 23(int16_t) GroupNonUniformIMul 43 ClusteredReduce 633 42
-             635:    602(ptr) AccessChain 34(data) 631 68 38
-                              Store 635 634
-             636:      6(int) Load 8(invocation)
-             637:    609(ptr) AccessChain 34(data) 47 68
-             638: 24(i16vec4) Load 637
-             639:608(i16vec2) VectorShuffle 638 638 0 1
-             640:608(i16vec2) GroupNonUniformIMul 43 ClusteredReduce 639 42
-             641:    609(ptr) AccessChain 34(data) 636 68
-             642: 24(i16vec4) Load 641
-             643: 24(i16vec4) VectorShuffle 642 640 4 5 2 3
-                              Store 641 643
-             644:      6(int) Load 8(invocation)
-             645:    609(ptr) AccessChain 34(data) 58 68
-             646: 24(i16vec4) Load 645
-             647:618(i16vec3) VectorShuffle 646 646 0 1 2
-             648:618(i16vec3) GroupNonUniformIMul 43 ClusteredReduce 647 42
-             649:    609(ptr) AccessChain 34(data) 644 68
-             650: 24(i16vec4) Load 649
-             651: 24(i16vec4) VectorShuffle 650 648 4 5 6 3
-                              Store 649 651
-             652:      6(int) Load 8(invocation)
-             653:    609(ptr) AccessChain 34(data) 68 68
-             654: 24(i16vec4) Load 653
-             655: 24(i16vec4) GroupNonUniformIMul 43 ClusteredReduce 654 42
-             656:    609(ptr) AccessChain 34(data) 652 68
-                              Store 656 655
-             657:      6(int) Load 8(invocation)
-             658:    602(ptr) AccessChain 34(data) 37 68 38
-             659: 23(int16_t) Load 658
-             660: 23(int16_t) GroupNonUniformUMin 43 ClusteredReduce 659 42
-             661:    602(ptr) AccessChain 34(data) 657 68 38
-                              Store 661 660
-             662:      6(int) Load 8(invocation)
-             663:    609(ptr) AccessChain 34(data) 47 68
-             664: 24(i16vec4) Load 663
-             665:608(i16vec2) VectorShuffle 664 664 0 1
-             666:608(i16vec2) GroupNonUniformUMin 43 ClusteredReduce 665 42
-             667:    609(ptr) AccessChain 34(data) 662 68
-             668: 24(i16vec4) Load 667
-             669: 24(i16vec4) VectorShuffle 668 666 4 5 2 3
-                              Store 667 669
+             632:    480(ptr) AccessChain 34(data) 47 59
+             633: 22(i16vec4) Load 632
+             634:479(i16vec2) VectorShuffle 633 633 0 1
+             635:479(i16vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 634 42
+             636:    473(ptr) AccessChain 34(data) 631 59 38
+             637: 21(int16_t) CompositeExtract 635 0
+                              Store 636 637
+             638:    473(ptr) AccessChain 34(data) 631 59 42
+             639: 21(int16_t) CompositeExtract 635 1
+                              Store 638 639
+             640:      6(int) Load 8(invocation)
+             641:    480(ptr) AccessChain 34(data) 59 59
+             642: 22(i16vec4) Load 641
+             643:490(i16vec3) VectorShuffle 642 642 0 1 2
+             644:490(i16vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 643 42
+             645:    473(ptr) AccessChain 34(data) 640 59 38
+             646: 21(int16_t) CompositeExtract 644 0
+                              Store 645 646
+             647:    473(ptr) AccessChain 34(data) 640 59 42
+             648: 21(int16_t) CompositeExtract 644 1
+                              Store 647 648
+             649:    473(ptr) AccessChain 34(data) 640 59 69
+             650: 21(int16_t) CompositeExtract 644 2
+                              Store 649 650
+             651:      6(int) Load 8(invocation)
+             652:    480(ptr) AccessChain 34(data) 73 59
+             653: 22(i16vec4) Load 652
+             654: 22(i16vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 653 42
+             655:    480(ptr) AccessChain 34(data) 651 59
+                              Store 655 654
+             656:      6(int) Load 8(invocation)
+             657:    473(ptr) AccessChain 34(data) 37 59 38
+             658: 21(int16_t) Load 657
+             659: 21(int16_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 658 42
+             660:    473(ptr) AccessChain 34(data) 656 59 38
+                              Store 660 659
+             661:      6(int) Load 8(invocation)
+             662:    480(ptr) AccessChain 34(data) 47 59
+             663: 22(i16vec4) Load 662
+             664:479(i16vec2) VectorShuffle 663 663 0 1
+             665:479(i16vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 664 42
+             666:    473(ptr) AccessChain 34(data) 661 59 38
+             667: 21(int16_t) CompositeExtract 665 0
+                              Store 666 667
+             668:    473(ptr) AccessChain 34(data) 661 59 42
+             669: 21(int16_t) CompositeExtract 665 1
+                              Store 668 669
              670:      6(int) Load 8(invocation)
-             671:    609(ptr) AccessChain 34(data) 58 68
-             672: 24(i16vec4) Load 671
-             673:618(i16vec3) VectorShuffle 672 672 0 1 2
-             674:618(i16vec3) GroupNonUniformUMin 43 ClusteredReduce 673 42
-             675:    609(ptr) AccessChain 34(data) 670 68
-             676: 24(i16vec4) Load 675
-             677: 24(i16vec4) VectorShuffle 676 674 4 5 6 3
-                              Store 675 677
-             678:      6(int) Load 8(invocation)
-             679:    609(ptr) AccessChain 34(data) 68 68
-             680: 24(i16vec4) Load 679
-             681: 24(i16vec4) GroupNonUniformUMin 43 ClusteredReduce 680 42
-             682:    609(ptr) AccessChain 34(data) 678 68
-                              Store 682 681
-             683:      6(int) Load 8(invocation)
-             684:    602(ptr) AccessChain 34(data) 37 68 38
-             685: 23(int16_t) Load 684
-             686: 23(int16_t) GroupNonUniformUMax 43 ClusteredReduce 685 42
-             687:    602(ptr) AccessChain 34(data) 683 68 38
-                              Store 687 686
-             688:      6(int) Load 8(invocation)
-             689:    609(ptr) AccessChain 34(data) 47 68
-             690: 24(i16vec4) Load 689
-             691:608(i16vec2) VectorShuffle 690 690 0 1
-             692:608(i16vec2) GroupNonUniformUMax 43 ClusteredReduce 691 42
-             693:    609(ptr) AccessChain 34(data) 688 68
-             694: 24(i16vec4) Load 693
-             695: 24(i16vec4) VectorShuffle 694 692 4 5 2 3
-                              Store 693 695
-             696:      6(int) Load 8(invocation)
-             697:    609(ptr) AccessChain 34(data) 58 68
-             698: 24(i16vec4) Load 697
-             699:618(i16vec3) VectorShuffle 698 698 0 1 2
-             700:618(i16vec3) GroupNonUniformUMax 43 ClusteredReduce 699 42
-             701:    609(ptr) AccessChain 34(data) 696 68
-             702: 24(i16vec4) Load 701
-             703: 24(i16vec4) VectorShuffle 702 700 4 5 6 3
-                              Store 701 703
-             704:      6(int) Load 8(invocation)
-             705:    609(ptr) AccessChain 34(data) 68 68
+             671:    480(ptr) AccessChain 34(data) 59 59
+             672: 22(i16vec4) Load 671
+             673:490(i16vec3) VectorShuffle 672 672 0 1 2
+             674:490(i16vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 673 42
+             675:    473(ptr) AccessChain 34(data) 670 59 38
+             676: 21(int16_t) CompositeExtract 674 0
+                              Store 675 676
+             677:    473(ptr) AccessChain 34(data) 670 59 42
+             678: 21(int16_t) CompositeExtract 674 1
+                              Store 677 678
+             679:    473(ptr) AccessChain 34(data) 670 59 69
+             680: 21(int16_t) CompositeExtract 674 2
+                              Store 679 680
+             681:      6(int) Load 8(invocation)
+             682:    480(ptr) AccessChain 34(data) 73 59
+             683: 22(i16vec4) Load 682
+             684: 22(i16vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 683 42
+             685:    480(ptr) AccessChain 34(data) 681 59
+                              Store 685 684
+             686:      6(int) Load 8(invocation)
+             688:    687(ptr) AccessChain 34(data) 37 73 38
+             689: 23(int16_t) Load 688
+             690: 23(int16_t) GroupNonUniformIAdd 43 ClusteredReduce 689 42
+             691:    687(ptr) AccessChain 34(data) 686 73 38
+                              Store 691 690
+             692:      6(int) Load 8(invocation)
+             695:    694(ptr) AccessChain 34(data) 47 73
+             696: 24(i16vec4) Load 695
+             697:693(i16vec2) VectorShuffle 696 696 0 1
+             698:693(i16vec2) GroupNonUniformIAdd 43 ClusteredReduce 697 42
+             699:    687(ptr) AccessChain 34(data) 692 73 38
+             700: 23(int16_t) CompositeExtract 698 0
+                              Store 699 700
+             701:    687(ptr) AccessChain 34(data) 692 73 42
+             702: 23(int16_t) CompositeExtract 698 1
+                              Store 701 702
+             703:      6(int) Load 8(invocation)
+             705:    694(ptr) AccessChain 34(data) 59 73
              706: 24(i16vec4) Load 705
-             707: 24(i16vec4) GroupNonUniformUMax 43 ClusteredReduce 706 42
-             708:    609(ptr) AccessChain 34(data) 704 68
-                              Store 708 707
-             709:      6(int) Load 8(invocation)
-             710:    602(ptr) AccessChain 34(data) 37 68 38
-             711: 23(int16_t) Load 710
-             712: 23(int16_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 711 42
-             713:    602(ptr) AccessChain 34(data) 709 68 38
-                              Store 713 712
-             714:      6(int) Load 8(invocation)
-             715:    609(ptr) AccessChain 34(data) 47 68
-             716: 24(i16vec4) Load 715
-             717:608(i16vec2) VectorShuffle 716 716 0 1
-             718:608(i16vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 717 42
-             719:    609(ptr) AccessChain 34(data) 714 68
-             720: 24(i16vec4) Load 719
-             721: 24(i16vec4) VectorShuffle 720 718 4 5 2 3
-                              Store 719 721
-             722:      6(int) Load 8(invocation)
-             723:    609(ptr) AccessChain 34(data) 58 68
-             724: 24(i16vec4) Load 723
-             725:618(i16vec3) VectorShuffle 724 724 0 1 2
-             726:618(i16vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 725 42
-             727:    609(ptr) AccessChain 34(data) 722 68
-             728: 24(i16vec4) Load 727
-             729: 24(i16vec4) VectorShuffle 728 726 4 5 6 3
-                              Store 727 729
-             730:      6(int) Load 8(invocation)
-             731:    609(ptr) AccessChain 34(data) 68 68
-             732: 24(i16vec4) Load 731
-             733: 24(i16vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 732 42
-             734:    609(ptr) AccessChain 34(data) 730 68
-                              Store 734 733
-             735:      6(int) Load 8(invocation)
-             736:    602(ptr) AccessChain 34(data) 37 68 38
-             737: 23(int16_t) Load 736
-             738: 23(int16_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 737 42
-             739:    602(ptr) AccessChain 34(data) 735 68 38
-                              Store 739 738
-             740:      6(int) Load 8(invocation)
-             741:    609(ptr) AccessChain 34(data) 47 68
-             742: 24(i16vec4) Load 741
-             743:608(i16vec2) VectorShuffle 742 742 0 1
-             744:608(i16vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 743 42
-             745:    609(ptr) AccessChain 34(data) 740 68
-             746: 24(i16vec4) Load 745
-             747: 24(i16vec4) VectorShuffle 746 744 4 5 2 3
-                              Store 745 747
-             748:      6(int) Load 8(invocation)
-             749:    609(ptr) AccessChain 34(data) 58 68
-             750: 24(i16vec4) Load 749
-             751:618(i16vec3) VectorShuffle 750 750 0 1 2
-             752:618(i16vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 751 42
-             753:    609(ptr) AccessChain 34(data) 748 68
-             754: 24(i16vec4) Load 753
-             755: 24(i16vec4) VectorShuffle 754 752 4 5 6 3
-                              Store 753 755
-             756:      6(int) Load 8(invocation)
-             757:    609(ptr) AccessChain 34(data) 68 68
-             758: 24(i16vec4) Load 757
-             759: 24(i16vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 758 42
-             760:    609(ptr) AccessChain 34(data) 756 68
-                              Store 760 759
-             761:      6(int) Load 8(invocation)
-             762:    602(ptr) AccessChain 34(data) 37 68 38
-             763: 23(int16_t) Load 762
-             764: 23(int16_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 763 42
-             765:    602(ptr) AccessChain 34(data) 761 68 38
-                              Store 765 764
-             766:      6(int) Load 8(invocation)
-             767:    609(ptr) AccessChain 34(data) 47 68
-             768: 24(i16vec4) Load 767
-             769:608(i16vec2) VectorShuffle 768 768 0 1
-             770:608(i16vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 769 42
-             771:    609(ptr) AccessChain 34(data) 766 68
-             772: 24(i16vec4) Load 771
-             773: 24(i16vec4) VectorShuffle 772 770 4 5 2 3
-                              Store 771 773
-             774:      6(int) Load 8(invocation)
-             775:    609(ptr) AccessChain 34(data) 58 68
-             776: 24(i16vec4) Load 775
-             777:618(i16vec3) VectorShuffle 776 776 0 1 2
-             778:618(i16vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 777 42
-             779:    609(ptr) AccessChain 34(data) 774 68
-             780: 24(i16vec4) Load 779
-             781: 24(i16vec4) VectorShuffle 780 778 4 5 6 3
-                              Store 779 781
-             782:      6(int) Load 8(invocation)
-             783:    609(ptr) AccessChain 34(data) 68 68
-             784: 24(i16vec4) Load 783
-             785: 24(i16vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 784 42
-             786:    609(ptr) AccessChain 34(data) 782 68
-                              Store 786 785
-             787:      6(int) Load 8(invocation)
-             790:    789(ptr) AccessChain 34(data) 37 788 38
-             791: 25(int64_t) Load 790
-             792: 25(int64_t) GroupNonUniformIAdd 43 ClusteredReduce 791 42
-             793:    789(ptr) AccessChain 34(data) 787 788 38
-                              Store 793 792
+             707:704(i16vec3) VectorShuffle 706 706 0 1 2
+             708:704(i16vec3) GroupNonUniformIAdd 43 ClusteredReduce 707 42
+             709:    687(ptr) AccessChain 34(data) 703 73 38
+             710: 23(int16_t) CompositeExtract 708 0
+                              Store 709 710
+             711:    687(ptr) AccessChain 34(data) 703 73 42
+             712: 23(int16_t) CompositeExtract 708 1
+                              Store 711 712
+             713:    687(ptr) AccessChain 34(data) 703 73 69
+             714: 23(int16_t) CompositeExtract 708 2
+                              Store 713 714
+             715:      6(int) Load 8(invocation)
+             716:    694(ptr) AccessChain 34(data) 73 73
+             717: 24(i16vec4) Load 716
+             718: 24(i16vec4) GroupNonUniformIAdd 43 ClusteredReduce 717 42
+             719:    694(ptr) AccessChain 34(data) 715 73
+                              Store 719 718
+             720:      6(int) Load 8(invocation)
+             721:    687(ptr) AccessChain 34(data) 37 73 38
+             722: 23(int16_t) Load 721
+             723: 23(int16_t) GroupNonUniformIMul 43 ClusteredReduce 722 42
+             724:    687(ptr) AccessChain 34(data) 720 73 38
+                              Store 724 723
+             725:      6(int) Load 8(invocation)
+             726:    694(ptr) AccessChain 34(data) 47 73
+             727: 24(i16vec4) Load 726
+             728:693(i16vec2) VectorShuffle 727 727 0 1
+             729:693(i16vec2) GroupNonUniformIMul 43 ClusteredReduce 728 42
+             730:    687(ptr) AccessChain 34(data) 725 73 38
+             731: 23(int16_t) CompositeExtract 729 0
+                              Store 730 731
+             732:    687(ptr) AccessChain 34(data) 725 73 42
+             733: 23(int16_t) CompositeExtract 729 1
+                              Store 732 733
+             734:      6(int) Load 8(invocation)
+             735:    694(ptr) AccessChain 34(data) 59 73
+             736: 24(i16vec4) Load 735
+             737:704(i16vec3) VectorShuffle 736 736 0 1 2
+             738:704(i16vec3) GroupNonUniformIMul 43 ClusteredReduce 737 42
+             739:    687(ptr) AccessChain 34(data) 734 73 38
+             740: 23(int16_t) CompositeExtract 738 0
+                              Store 739 740
+             741:    687(ptr) AccessChain 34(data) 734 73 42
+             742: 23(int16_t) CompositeExtract 738 1
+                              Store 741 742
+             743:    687(ptr) AccessChain 34(data) 734 73 69
+             744: 23(int16_t) CompositeExtract 738 2
+                              Store 743 744
+             745:      6(int) Load 8(invocation)
+             746:    694(ptr) AccessChain 34(data) 73 73
+             747: 24(i16vec4) Load 746
+             748: 24(i16vec4) GroupNonUniformIMul 43 ClusteredReduce 747 42
+             749:    694(ptr) AccessChain 34(data) 745 73
+                              Store 749 748
+             750:      6(int) Load 8(invocation)
+             751:    687(ptr) AccessChain 34(data) 37 73 38
+             752: 23(int16_t) Load 751
+             753: 23(int16_t) GroupNonUniformUMin 43 ClusteredReduce 752 42
+             754:    687(ptr) AccessChain 34(data) 750 73 38
+                              Store 754 753
+             755:      6(int) Load 8(invocation)
+             756:    694(ptr) AccessChain 34(data) 47 73
+             757: 24(i16vec4) Load 756
+             758:693(i16vec2) VectorShuffle 757 757 0 1
+             759:693(i16vec2) GroupNonUniformUMin 43 ClusteredReduce 758 42
+             760:    687(ptr) AccessChain 34(data) 755 73 38
+             761: 23(int16_t) CompositeExtract 759 0
+                              Store 760 761
+             762:    687(ptr) AccessChain 34(data) 755 73 42
+             763: 23(int16_t) CompositeExtract 759 1
+                              Store 762 763
+             764:      6(int) Load 8(invocation)
+             765:    694(ptr) AccessChain 34(data) 59 73
+             766: 24(i16vec4) Load 765
+             767:704(i16vec3) VectorShuffle 766 766 0 1 2
+             768:704(i16vec3) GroupNonUniformUMin 43 ClusteredReduce 767 42
+             769:    687(ptr) AccessChain 34(data) 764 73 38
+             770: 23(int16_t) CompositeExtract 768 0
+                              Store 769 770
+             771:    687(ptr) AccessChain 34(data) 764 73 42
+             772: 23(int16_t) CompositeExtract 768 1
+                              Store 771 772
+             773:    687(ptr) AccessChain 34(data) 764 73 69
+             774: 23(int16_t) CompositeExtract 768 2
+                              Store 773 774
+             775:      6(int) Load 8(invocation)
+             776:    694(ptr) AccessChain 34(data) 73 73
+             777: 24(i16vec4) Load 776
+             778: 24(i16vec4) GroupNonUniformUMin 43 ClusteredReduce 777 42
+             779:    694(ptr) AccessChain 34(data) 775 73
+                              Store 779 778
+             780:      6(int) Load 8(invocation)
+             781:    687(ptr) AccessChain 34(data) 37 73 38
+             782: 23(int16_t) Load 781
+             783: 23(int16_t) GroupNonUniformUMax 43 ClusteredReduce 782 42
+             784:    687(ptr) AccessChain 34(data) 780 73 38
+                              Store 784 783
+             785:      6(int) Load 8(invocation)
+             786:    694(ptr) AccessChain 34(data) 47 73
+             787: 24(i16vec4) Load 786
+             788:693(i16vec2) VectorShuffle 787 787 0 1
+             789:693(i16vec2) GroupNonUniformUMax 43 ClusteredReduce 788 42
+             790:    687(ptr) AccessChain 34(data) 785 73 38
+             791: 23(int16_t) CompositeExtract 789 0
+                              Store 790 791
+             792:    687(ptr) AccessChain 34(data) 785 73 42
+             793: 23(int16_t) CompositeExtract 789 1
+                              Store 792 793
              794:      6(int) Load 8(invocation)
-             797:    796(ptr) AccessChain 34(data) 47 788
-             798: 26(i64vec4) Load 797
-             799:795(i64vec2) VectorShuffle 798 798 0 1
-             800:795(i64vec2) GroupNonUniformIAdd 43 ClusteredReduce 799 42
-             801:    796(ptr) AccessChain 34(data) 794 788
-             802: 26(i64vec4) Load 801
-             803: 26(i64vec4) VectorShuffle 802 800 4 5 2 3
-                              Store 801 803
-             804:      6(int) Load 8(invocation)
-             806:    796(ptr) AccessChain 34(data) 58 788
-             807: 26(i64vec4) Load 806
-             808:805(i64vec3) VectorShuffle 807 807 0 1 2
-             809:805(i64vec3) GroupNonUniformIAdd 43 ClusteredReduce 808 42
-             810:    796(ptr) AccessChain 34(data) 804 788
-             811: 26(i64vec4) Load 810
-             812: 26(i64vec4) VectorShuffle 811 809 4 5 6 3
-                              Store 810 812
-             813:      6(int) Load 8(invocation)
-             814:    796(ptr) AccessChain 34(data) 68 788
-             815: 26(i64vec4) Load 814
-             816: 26(i64vec4) GroupNonUniformIAdd 43 ClusteredReduce 815 42
-             817:    796(ptr) AccessChain 34(data) 813 788
-                              Store 817 816
-             818:      6(int) Load 8(invocation)
-             819:    789(ptr) AccessChain 34(data) 37 788 38
-             820: 25(int64_t) Load 819
-             821: 25(int64_t) GroupNonUniformIMul 43 ClusteredReduce 820 42
-             822:    789(ptr) AccessChain 34(data) 818 788 38
-                              Store 822 821
-             823:      6(int) Load 8(invocation)
-             824:    796(ptr) AccessChain 34(data) 47 788
-             825: 26(i64vec4) Load 824
-             826:795(i64vec2) VectorShuffle 825 825 0 1
-             827:795(i64vec2) GroupNonUniformIMul 43 ClusteredReduce 826 42
-             828:    796(ptr) AccessChain 34(data) 823 788
-             829: 26(i64vec4) Load 828
-             830: 26(i64vec4) VectorShuffle 829 827 4 5 2 3
-                              Store 828 830
-             831:      6(int) Load 8(invocation)
-             832:    796(ptr) AccessChain 34(data) 58 788
-             833: 26(i64vec4) Load 832
-             834:805(i64vec3) VectorShuffle 833 833 0 1 2
-             835:805(i64vec3) GroupNonUniformIMul 43 ClusteredReduce 834 42
-             836:    796(ptr) AccessChain 34(data) 831 788
-             837: 26(i64vec4) Load 836
-             838: 26(i64vec4) VectorShuffle 837 835 4 5 6 3
-                              Store 836 838
-             839:      6(int) Load 8(invocation)
-             840:    796(ptr) AccessChain 34(data) 68 788
-             841: 26(i64vec4) Load 840
-             842: 26(i64vec4) GroupNonUniformIMul 43 ClusteredReduce 841 42
-             843:    796(ptr) AccessChain 34(data) 839 788
-                              Store 843 842
-             844:      6(int) Load 8(invocation)
-             845:    789(ptr) AccessChain 34(data) 37 788 38
-             846: 25(int64_t) Load 845
-             847: 25(int64_t) GroupNonUniformSMin 43 ClusteredReduce 846 42
-             848:    789(ptr) AccessChain 34(data) 844 788 38
-                              Store 848 847
-             849:      6(int) Load 8(invocation)
-             850:    796(ptr) AccessChain 34(data) 47 788
-             851: 26(i64vec4) Load 850
-             852:795(i64vec2) VectorShuffle 851 851 0 1
-             853:795(i64vec2) GroupNonUniformSMin 43 ClusteredReduce 852 42
-             854:    796(ptr) AccessChain 34(data) 849 788
-             855: 26(i64vec4) Load 854
-             856: 26(i64vec4) VectorShuffle 855 853 4 5 2 3
-                              Store 854 856
-             857:      6(int) Load 8(invocation)
-             858:    796(ptr) AccessChain 34(data) 58 788
-             859: 26(i64vec4) Load 858
-             860:805(i64vec3) VectorShuffle 859 859 0 1 2
-             861:805(i64vec3) GroupNonUniformSMin 43 ClusteredReduce 860 42
-             862:    796(ptr) AccessChain 34(data) 857 788
-             863: 26(i64vec4) Load 862
-             864: 26(i64vec4) VectorShuffle 863 861 4 5 6 3
-                              Store 862 864
+             795:    694(ptr) AccessChain 34(data) 59 73
+             796: 24(i16vec4) Load 795
+             797:704(i16vec3) VectorShuffle 796 796 0 1 2
+             798:704(i16vec3) GroupNonUniformUMax 43 ClusteredReduce 797 42
+             799:    687(ptr) AccessChain 34(data) 794 73 38
+             800: 23(int16_t) CompositeExtract 798 0
+                              Store 799 800
+             801:    687(ptr) AccessChain 34(data) 794 73 42
+             802: 23(int16_t) CompositeExtract 798 1
+                              Store 801 802
+             803:    687(ptr) AccessChain 34(data) 794 73 69
+             804: 23(int16_t) CompositeExtract 798 2
+                              Store 803 804
+             805:      6(int) Load 8(invocation)
+             806:    694(ptr) AccessChain 34(data) 73 73
+             807: 24(i16vec4) Load 806
+             808: 24(i16vec4) GroupNonUniformUMax 43 ClusteredReduce 807 42
+             809:    694(ptr) AccessChain 34(data) 805 73
+                              Store 809 808
+             810:      6(int) Load 8(invocation)
+             811:    687(ptr) AccessChain 34(data) 37 73 38
+             812: 23(int16_t) Load 811
+             813: 23(int16_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 812 42
+             814:    687(ptr) AccessChain 34(data) 810 73 38
+                              Store 814 813
+             815:      6(int) Load 8(invocation)
+             816:    694(ptr) AccessChain 34(data) 47 73
+             817: 24(i16vec4) Load 816
+             818:693(i16vec2) VectorShuffle 817 817 0 1
+             819:693(i16vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 818 42
+             820:    687(ptr) AccessChain 34(data) 815 73 38
+             821: 23(int16_t) CompositeExtract 819 0
+                              Store 820 821
+             822:    687(ptr) AccessChain 34(data) 815 73 42
+             823: 23(int16_t) CompositeExtract 819 1
+                              Store 822 823
+             824:      6(int) Load 8(invocation)
+             825:    694(ptr) AccessChain 34(data) 59 73
+             826: 24(i16vec4) Load 825
+             827:704(i16vec3) VectorShuffle 826 826 0 1 2
+             828:704(i16vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 827 42
+             829:    687(ptr) AccessChain 34(data) 824 73 38
+             830: 23(int16_t) CompositeExtract 828 0
+                              Store 829 830
+             831:    687(ptr) AccessChain 34(data) 824 73 42
+             832: 23(int16_t) CompositeExtract 828 1
+                              Store 831 832
+             833:    687(ptr) AccessChain 34(data) 824 73 69
+             834: 23(int16_t) CompositeExtract 828 2
+                              Store 833 834
+             835:      6(int) Load 8(invocation)
+             836:    694(ptr) AccessChain 34(data) 73 73
+             837: 24(i16vec4) Load 836
+             838: 24(i16vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 837 42
+             839:    694(ptr) AccessChain 34(data) 835 73
+                              Store 839 838
+             840:      6(int) Load 8(invocation)
+             841:    687(ptr) AccessChain 34(data) 37 73 38
+             842: 23(int16_t) Load 841
+             843: 23(int16_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 842 42
+             844:    687(ptr) AccessChain 34(data) 840 73 38
+                              Store 844 843
+             845:      6(int) Load 8(invocation)
+             846:    694(ptr) AccessChain 34(data) 47 73
+             847: 24(i16vec4) Load 846
+             848:693(i16vec2) VectorShuffle 847 847 0 1
+             849:693(i16vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 848 42
+             850:    687(ptr) AccessChain 34(data) 845 73 38
+             851: 23(int16_t) CompositeExtract 849 0
+                              Store 850 851
+             852:    687(ptr) AccessChain 34(data) 845 73 42
+             853: 23(int16_t) CompositeExtract 849 1
+                              Store 852 853
+             854:      6(int) Load 8(invocation)
+             855:    694(ptr) AccessChain 34(data) 59 73
+             856: 24(i16vec4) Load 855
+             857:704(i16vec3) VectorShuffle 856 856 0 1 2
+             858:704(i16vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 857 42
+             859:    687(ptr) AccessChain 34(data) 854 73 38
+             860: 23(int16_t) CompositeExtract 858 0
+                              Store 859 860
+             861:    687(ptr) AccessChain 34(data) 854 73 42
+             862: 23(int16_t) CompositeExtract 858 1
+                              Store 861 862
+             863:    687(ptr) AccessChain 34(data) 854 73 69
+             864: 23(int16_t) CompositeExtract 858 2
+                              Store 863 864
              865:      6(int) Load 8(invocation)
-             866:    796(ptr) AccessChain 34(data) 68 788
-             867: 26(i64vec4) Load 866
-             868: 26(i64vec4) GroupNonUniformSMin 43 ClusteredReduce 867 42
-             869:    796(ptr) AccessChain 34(data) 865 788
+             866:    694(ptr) AccessChain 34(data) 73 73
+             867: 24(i16vec4) Load 866
+             868: 24(i16vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 867 42
+             869:    694(ptr) AccessChain 34(data) 865 73
                               Store 869 868
              870:      6(int) Load 8(invocation)
-             871:    789(ptr) AccessChain 34(data) 37 788 38
-             872: 25(int64_t) Load 871
-             873: 25(int64_t) GroupNonUniformSMax 43 ClusteredReduce 872 42
-             874:    789(ptr) AccessChain 34(data) 870 788 38
+             871:    687(ptr) AccessChain 34(data) 37 73 38
+             872: 23(int16_t) Load 871
+             873: 23(int16_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 872 42
+             874:    687(ptr) AccessChain 34(data) 870 73 38
                               Store 874 873
              875:      6(int) Load 8(invocation)
-             876:    796(ptr) AccessChain 34(data) 47 788
-             877: 26(i64vec4) Load 876
-             878:795(i64vec2) VectorShuffle 877 877 0 1
-             879:795(i64vec2) GroupNonUniformSMax 43 ClusteredReduce 878 42
-             880:    796(ptr) AccessChain 34(data) 875 788
-             881: 26(i64vec4) Load 880
-             882: 26(i64vec4) VectorShuffle 881 879 4 5 2 3
-                              Store 880 882
-             883:      6(int) Load 8(invocation)
-             884:    796(ptr) AccessChain 34(data) 58 788
-             885: 26(i64vec4) Load 884
-             886:805(i64vec3) VectorShuffle 885 885 0 1 2
-             887:805(i64vec3) GroupNonUniformSMax 43 ClusteredReduce 886 42
-             888:    796(ptr) AccessChain 34(data) 883 788
-             889: 26(i64vec4) Load 888
-             890: 26(i64vec4) VectorShuffle 889 887 4 5 6 3
-                              Store 888 890
-             891:      6(int) Load 8(invocation)
-             892:    796(ptr) AccessChain 34(data) 68 788
-             893: 26(i64vec4) Load 892
-             894: 26(i64vec4) GroupNonUniformSMax 43 ClusteredReduce 893 42
-             895:    796(ptr) AccessChain 34(data) 891 788
-                              Store 895 894
-             896:      6(int) Load 8(invocation)
-             897:    789(ptr) AccessChain 34(data) 37 788 38
-             898: 25(int64_t) Load 897
-             899: 25(int64_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 898 42
-             900:    789(ptr) AccessChain 34(data) 896 788 38
-                              Store 900 899
-             901:      6(int) Load 8(invocation)
-             902:    796(ptr) AccessChain 34(data) 47 788
-             903: 26(i64vec4) Load 902
-             904:795(i64vec2) VectorShuffle 903 903 0 1
-             905:795(i64vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 904 42
-             906:    796(ptr) AccessChain 34(data) 901 788
-             907: 26(i64vec4) Load 906
-             908: 26(i64vec4) VectorShuffle 907 905 4 5 2 3
-                              Store 906 908
-             909:      6(int) Load 8(invocation)
-             910:    796(ptr) AccessChain 34(data) 58 788
+             876:    694(ptr) AccessChain 34(data) 47 73
+             877: 24(i16vec4) Load 876
+             878:693(i16vec2) VectorShuffle 877 877 0 1
+             879:693(i16vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 878 42
+             880:    687(ptr) AccessChain 34(data) 875 73 38
+             881: 23(int16_t) CompositeExtract 879 0
+                              Store 880 881
+             882:    687(ptr) AccessChain 34(data) 875 73 42
+             883: 23(int16_t) CompositeExtract 879 1
+                              Store 882 883
+             884:      6(int) Load 8(invocation)
+             885:    694(ptr) AccessChain 34(data) 59 73
+             886: 24(i16vec4) Load 885
+             887:704(i16vec3) VectorShuffle 886 886 0 1 2
+             888:704(i16vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 887 42
+             889:    687(ptr) AccessChain 34(data) 884 73 38
+             890: 23(int16_t) CompositeExtract 888 0
+                              Store 889 890
+             891:    687(ptr) AccessChain 34(data) 884 73 42
+             892: 23(int16_t) CompositeExtract 888 1
+                              Store 891 892
+             893:    687(ptr) AccessChain 34(data) 884 73 69
+             894: 23(int16_t) CompositeExtract 888 2
+                              Store 893 894
+             895:      6(int) Load 8(invocation)
+             896:    694(ptr) AccessChain 34(data) 73 73
+             897: 24(i16vec4) Load 896
+             898: 24(i16vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 897 42
+             899:    694(ptr) AccessChain 34(data) 895 73
+                              Store 899 898
+             900:      6(int) Load 8(invocation)
+             903:    902(ptr) AccessChain 34(data) 37 901 38
+             904: 25(int64_t) Load 903
+             905: 25(int64_t) GroupNonUniformIAdd 43 ClusteredReduce 904 42
+             906:    902(ptr) AccessChain 34(data) 900 901 38
+                              Store 906 905
+             907:      6(int) Load 8(invocation)
+             910:    909(ptr) AccessChain 34(data) 47 901
              911: 26(i64vec4) Load 910
-             912:805(i64vec3) VectorShuffle 911 911 0 1 2
-             913:805(i64vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 912 42
-             914:    796(ptr) AccessChain 34(data) 909 788
-             915: 26(i64vec4) Load 914
-             916: 26(i64vec4) VectorShuffle 915 913 4 5 6 3
-                              Store 914 916
-             917:      6(int) Load 8(invocation)
-             918:    796(ptr) AccessChain 34(data) 68 788
-             919: 26(i64vec4) Load 918
-             920: 26(i64vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 919 42
-             921:    796(ptr) AccessChain 34(data) 917 788
-                              Store 921 920
-             922:      6(int) Load 8(invocation)
-             923:    789(ptr) AccessChain 34(data) 37 788 38
-             924: 25(int64_t) Load 923
-             925: 25(int64_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 924 42
-             926:    789(ptr) AccessChain 34(data) 922 788 38
-                              Store 926 925
-             927:      6(int) Load 8(invocation)
-             928:    796(ptr) AccessChain 34(data) 47 788
-             929: 26(i64vec4) Load 928
-             930:795(i64vec2) VectorShuffle 929 929 0 1
-             931:795(i64vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 930 42
-             932:    796(ptr) AccessChain 34(data) 927 788
-             933: 26(i64vec4) Load 932
-             934: 26(i64vec4) VectorShuffle 933 931 4 5 2 3
-                              Store 932 934
+             912:908(i64vec2) VectorShuffle 911 911 0 1
+             913:908(i64vec2) GroupNonUniformIAdd 43 ClusteredReduce 912 42
+             914:    902(ptr) AccessChain 34(data) 907 901 38
+             915: 25(int64_t) CompositeExtract 913 0
+                              Store 914 915
+             916:    902(ptr) AccessChain 34(data) 907 901 42
+             917: 25(int64_t) CompositeExtract 913 1
+                              Store 916 917
+             918:      6(int) Load 8(invocation)
+             920:    909(ptr) AccessChain 34(data) 59 901
+             921: 26(i64vec4) Load 920
+             922:919(i64vec3) VectorShuffle 921 921 0 1 2
+             923:919(i64vec3) GroupNonUniformIAdd 43 ClusteredReduce 922 42
+             924:    902(ptr) AccessChain 34(data) 918 901 38
+             925: 25(int64_t) CompositeExtract 923 0
+                              Store 924 925
+             926:    902(ptr) AccessChain 34(data) 918 901 42
+             927: 25(int64_t) CompositeExtract 923 1
+                              Store 926 927
+             928:    902(ptr) AccessChain 34(data) 918 901 69
+             929: 25(int64_t) CompositeExtract 923 2
+                              Store 928 929
+             930:      6(int) Load 8(invocation)
+             931:    909(ptr) AccessChain 34(data) 73 901
+             932: 26(i64vec4) Load 931
+             933: 26(i64vec4) GroupNonUniformIAdd 43 ClusteredReduce 932 42
+             934:    909(ptr) AccessChain 34(data) 930 901
+                              Store 934 933
              935:      6(int) Load 8(invocation)
-             936:    796(ptr) AccessChain 34(data) 58 788
-             937: 26(i64vec4) Load 936
-             938:805(i64vec3) VectorShuffle 937 937 0 1 2
-             939:805(i64vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 938 42
-             940:    796(ptr) AccessChain 34(data) 935 788
-             941: 26(i64vec4) Load 940
-             942: 26(i64vec4) VectorShuffle 941 939 4 5 6 3
-                              Store 940 942
-             943:      6(int) Load 8(invocation)
-             944:    796(ptr) AccessChain 34(data) 68 788
-             945: 26(i64vec4) Load 944
-             946: 26(i64vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 945 42
-             947:    796(ptr) AccessChain 34(data) 943 788
-                              Store 947 946
-             948:      6(int) Load 8(invocation)
-             949:    789(ptr) AccessChain 34(data) 37 788 38
-             950: 25(int64_t) Load 949
-             951: 25(int64_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 950 42
-             952:    789(ptr) AccessChain 34(data) 948 788 38
-                              Store 952 951
-             953:      6(int) Load 8(invocation)
-             954:    796(ptr) AccessChain 34(data) 47 788
-             955: 26(i64vec4) Load 954
-             956:795(i64vec2) VectorShuffle 955 955 0 1
-             957:795(i64vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 956 42
-             958:    796(ptr) AccessChain 34(data) 953 788
-             959: 26(i64vec4) Load 958
-             960: 26(i64vec4) VectorShuffle 959 957 4 5 2 3
-                              Store 958 960
-             961:      6(int) Load 8(invocation)
-             962:    796(ptr) AccessChain 34(data) 58 788
-             963: 26(i64vec4) Load 962
-             964:805(i64vec3) VectorShuffle 963 963 0 1 2
-             965:805(i64vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 964 42
-             966:    796(ptr) AccessChain 34(data) 961 788
-             967: 26(i64vec4) Load 966
-             968: 26(i64vec4) VectorShuffle 967 965 4 5 6 3
-                              Store 966 968
-             969:      6(int) Load 8(invocation)
-             970:    796(ptr) AccessChain 34(data) 68 788
-             971: 26(i64vec4) Load 970
-             972: 26(i64vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 971 42
-             973:    796(ptr) AccessChain 34(data) 969 788
-                              Store 973 972
-             974:      6(int) Load 8(invocation)
-             977:    976(ptr) AccessChain 34(data) 37 975 38
-             978: 27(int64_t) Load 977
-             979: 27(int64_t) GroupNonUniformIAdd 43 ClusteredReduce 978 42
-             980:    976(ptr) AccessChain 34(data) 974 975 38
-                              Store 980 979
-             981:      6(int) Load 8(invocation)
-             984:    983(ptr) AccessChain 34(data) 47 975
-             985: 28(i64vec4) Load 984
-             986:982(i64vec2) VectorShuffle 985 985 0 1
-             987:982(i64vec2) GroupNonUniformIAdd 43 ClusteredReduce 986 42
-             988:    983(ptr) AccessChain 34(data) 981 975
-             989: 28(i64vec4) Load 988
-             990: 28(i64vec4) VectorShuffle 989 987 4 5 2 3
-                              Store 988 990
-             991:      6(int) Load 8(invocation)
-             993:    983(ptr) AccessChain 34(data) 58 975
-             994: 28(i64vec4) Load 993
-             995:992(i64vec3) VectorShuffle 994 994 0 1 2
-             996:992(i64vec3) GroupNonUniformIAdd 43 ClusteredReduce 995 42
-             997:    983(ptr) AccessChain 34(data) 991 975
-             998: 28(i64vec4) Load 997
-             999: 28(i64vec4) VectorShuffle 998 996 4 5 6 3
-                              Store 997 999
+             936:    902(ptr) AccessChain 34(data) 37 901 38
+             937: 25(int64_t) Load 936
+             938: 25(int64_t) GroupNonUniformIMul 43 ClusteredReduce 937 42
+             939:    902(ptr) AccessChain 34(data) 935 901 38
+                              Store 939 938
+             940:      6(int) Load 8(invocation)
+             941:    909(ptr) AccessChain 34(data) 47 901
+             942: 26(i64vec4) Load 941
+             943:908(i64vec2) VectorShuffle 942 942 0 1
+             944:908(i64vec2) GroupNonUniformIMul 43 ClusteredReduce 943 42
+             945:    902(ptr) AccessChain 34(data) 940 901 38
+             946: 25(int64_t) CompositeExtract 944 0
+                              Store 945 946
+             947:    902(ptr) AccessChain 34(data) 940 901 42
+             948: 25(int64_t) CompositeExtract 944 1
+                              Store 947 948
+             949:      6(int) Load 8(invocation)
+             950:    909(ptr) AccessChain 34(data) 59 901
+             951: 26(i64vec4) Load 950
+             952:919(i64vec3) VectorShuffle 951 951 0 1 2
+             953:919(i64vec3) GroupNonUniformIMul 43 ClusteredReduce 952 42
+             954:    902(ptr) AccessChain 34(data) 949 901 38
+             955: 25(int64_t) CompositeExtract 953 0
+                              Store 954 955
+             956:    902(ptr) AccessChain 34(data) 949 901 42
+             957: 25(int64_t) CompositeExtract 953 1
+                              Store 956 957
+             958:    902(ptr) AccessChain 34(data) 949 901 69
+             959: 25(int64_t) CompositeExtract 953 2
+                              Store 958 959
+             960:      6(int) Load 8(invocation)
+             961:    909(ptr) AccessChain 34(data) 73 901
+             962: 26(i64vec4) Load 961
+             963: 26(i64vec4) GroupNonUniformIMul 43 ClusteredReduce 962 42
+             964:    909(ptr) AccessChain 34(data) 960 901
+                              Store 964 963
+             965:      6(int) Load 8(invocation)
+             966:    902(ptr) AccessChain 34(data) 37 901 38
+             967: 25(int64_t) Load 966
+             968: 25(int64_t) GroupNonUniformSMin 43 ClusteredReduce 967 42
+             969:    902(ptr) AccessChain 34(data) 965 901 38
+                              Store 969 968
+             970:      6(int) Load 8(invocation)
+             971:    909(ptr) AccessChain 34(data) 47 901
+             972: 26(i64vec4) Load 971
+             973:908(i64vec2) VectorShuffle 972 972 0 1
+             974:908(i64vec2) GroupNonUniformSMin 43 ClusteredReduce 973 42
+             975:    902(ptr) AccessChain 34(data) 970 901 38
+             976: 25(int64_t) CompositeExtract 974 0
+                              Store 975 976
+             977:    902(ptr) AccessChain 34(data) 970 901 42
+             978: 25(int64_t) CompositeExtract 974 1
+                              Store 977 978
+             979:      6(int) Load 8(invocation)
+             980:    909(ptr) AccessChain 34(data) 59 901
+             981: 26(i64vec4) Load 980
+             982:919(i64vec3) VectorShuffle 981 981 0 1 2
+             983:919(i64vec3) GroupNonUniformSMin 43 ClusteredReduce 982 42
+             984:    902(ptr) AccessChain 34(data) 979 901 38
+             985: 25(int64_t) CompositeExtract 983 0
+                              Store 984 985
+             986:    902(ptr) AccessChain 34(data) 979 901 42
+             987: 25(int64_t) CompositeExtract 983 1
+                              Store 986 987
+             988:    902(ptr) AccessChain 34(data) 979 901 69
+             989: 25(int64_t) CompositeExtract 983 2
+                              Store 988 989
+             990:      6(int) Load 8(invocation)
+             991:    909(ptr) AccessChain 34(data) 73 901
+             992: 26(i64vec4) Load 991
+             993: 26(i64vec4) GroupNonUniformSMin 43 ClusteredReduce 992 42
+             994:    909(ptr) AccessChain 34(data) 990 901
+                              Store 994 993
+             995:      6(int) Load 8(invocation)
+             996:    902(ptr) AccessChain 34(data) 37 901 38
+             997: 25(int64_t) Load 996
+             998: 25(int64_t) GroupNonUniformSMax 43 ClusteredReduce 997 42
+             999:    902(ptr) AccessChain 34(data) 995 901 38
+                              Store 999 998
             1000:      6(int) Load 8(invocation)
-            1001:    983(ptr) AccessChain 34(data) 68 975
-            1002: 28(i64vec4) Load 1001
-            1003: 28(i64vec4) GroupNonUniformIAdd 43 ClusteredReduce 1002 42
-            1004:    983(ptr) AccessChain 34(data) 1000 975
-                              Store 1004 1003
-            1005:      6(int) Load 8(invocation)
-            1006:    976(ptr) AccessChain 34(data) 37 975 38
-            1007: 27(int64_t) Load 1006
-            1008: 27(int64_t) GroupNonUniformIMul 43 ClusteredReduce 1007 42
-            1009:    976(ptr) AccessChain 34(data) 1005 975 38
-                              Store 1009 1008
-            1010:      6(int) Load 8(invocation)
-            1011:    983(ptr) AccessChain 34(data) 47 975
-            1012: 28(i64vec4) Load 1011
-            1013:982(i64vec2) VectorShuffle 1012 1012 0 1
-            1014:982(i64vec2) GroupNonUniformIMul 43 ClusteredReduce 1013 42
-            1015:    983(ptr) AccessChain 34(data) 1010 975
-            1016: 28(i64vec4) Load 1015
-            1017: 28(i64vec4) VectorShuffle 1016 1014 4 5 2 3
-                              Store 1015 1017
-            1018:      6(int) Load 8(invocation)
-            1019:    983(ptr) AccessChain 34(data) 58 975
-            1020: 28(i64vec4) Load 1019
-            1021:992(i64vec3) VectorShuffle 1020 1020 0 1 2
-            1022:992(i64vec3) GroupNonUniformIMul 43 ClusteredReduce 1021 42
-            1023:    983(ptr) AccessChain 34(data) 1018 975
-            1024: 28(i64vec4) Load 1023
-            1025: 28(i64vec4) VectorShuffle 1024 1022 4 5 6 3
-                              Store 1023 1025
-            1026:      6(int) Load 8(invocation)
-            1027:    983(ptr) AccessChain 34(data) 68 975
-            1028: 28(i64vec4) Load 1027
-            1029: 28(i64vec4) GroupNonUniformIMul 43 ClusteredReduce 1028 42
-            1030:    983(ptr) AccessChain 34(data) 1026 975
-                              Store 1030 1029
-            1031:      6(int) Load 8(invocation)
-            1032:    976(ptr) AccessChain 34(data) 37 975 38
-            1033: 27(int64_t) Load 1032
-            1034: 27(int64_t) GroupNonUniformUMin 43 ClusteredReduce 1033 42
-            1035:    976(ptr) AccessChain 34(data) 1031 975 38
-                              Store 1035 1034
-            1036:      6(int) Load 8(invocation)
-            1037:    983(ptr) AccessChain 34(data) 47 975
-            1038: 28(i64vec4) Load 1037
-            1039:982(i64vec2) VectorShuffle 1038 1038 0 1
-            1040:982(i64vec2) GroupNonUniformUMin 43 ClusteredReduce 1039 42
-            1041:    983(ptr) AccessChain 34(data) 1036 975
-            1042: 28(i64vec4) Load 1041
-            1043: 28(i64vec4) VectorShuffle 1042 1040 4 5 2 3
-                              Store 1041 1043
-            1044:      6(int) Load 8(invocation)
-            1045:    983(ptr) AccessChain 34(data) 58 975
-            1046: 28(i64vec4) Load 1045
-            1047:992(i64vec3) VectorShuffle 1046 1046 0 1 2
-            1048:992(i64vec3) GroupNonUniformUMin 43 ClusteredReduce 1047 42
-            1049:    983(ptr) AccessChain 34(data) 1044 975
-            1050: 28(i64vec4) Load 1049
-            1051: 28(i64vec4) VectorShuffle 1050 1048 4 5 6 3
-                              Store 1049 1051
-            1052:      6(int) Load 8(invocation)
-            1053:    983(ptr) AccessChain 34(data) 68 975
-            1054: 28(i64vec4) Load 1053
-            1055: 28(i64vec4) GroupNonUniformUMin 43 ClusteredReduce 1054 42
-            1056:    983(ptr) AccessChain 34(data) 1052 975
-                              Store 1056 1055
-            1057:      6(int) Load 8(invocation)
-            1058:    976(ptr) AccessChain 34(data) 37 975 38
-            1059: 27(int64_t) Load 1058
-            1060: 27(int64_t) GroupNonUniformUMax 43 ClusteredReduce 1059 42
-            1061:    976(ptr) AccessChain 34(data) 1057 975 38
-                              Store 1061 1060
-            1062:      6(int) Load 8(invocation)
-            1063:    983(ptr) AccessChain 34(data) 47 975
-            1064: 28(i64vec4) Load 1063
-            1065:982(i64vec2) VectorShuffle 1064 1064 0 1
-            1066:982(i64vec2) GroupNonUniformUMax 43 ClusteredReduce 1065 42
-            1067:    983(ptr) AccessChain 34(data) 1062 975
-            1068: 28(i64vec4) Load 1067
-            1069: 28(i64vec4) VectorShuffle 1068 1066 4 5 2 3
-                              Store 1067 1069
-            1070:      6(int) Load 8(invocation)
-            1071:    983(ptr) AccessChain 34(data) 58 975
-            1072: 28(i64vec4) Load 1071
-            1073:992(i64vec3) VectorShuffle 1072 1072 0 1 2
-            1074:992(i64vec3) GroupNonUniformUMax 43 ClusteredReduce 1073 42
-            1075:    983(ptr) AccessChain 34(data) 1070 975
-            1076: 28(i64vec4) Load 1075
-            1077: 28(i64vec4) VectorShuffle 1076 1074 4 5 6 3
-                              Store 1075 1077
-            1078:      6(int) Load 8(invocation)
-            1079:    983(ptr) AccessChain 34(data) 68 975
-            1080: 28(i64vec4) Load 1079
-            1081: 28(i64vec4) GroupNonUniformUMax 43 ClusteredReduce 1080 42
-            1082:    983(ptr) AccessChain 34(data) 1078 975
-                              Store 1082 1081
-            1083:      6(int) Load 8(invocation)
-            1084:    976(ptr) AccessChain 34(data) 37 975 38
-            1085: 27(int64_t) Load 1084
-            1086: 27(int64_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1085 42
-            1087:    976(ptr) AccessChain 34(data) 1083 975 38
-                              Store 1087 1086
-            1088:      6(int) Load 8(invocation)
-            1089:    983(ptr) AccessChain 34(data) 47 975
-            1090: 28(i64vec4) Load 1089
-            1091:982(i64vec2) VectorShuffle 1090 1090 0 1
-            1092:982(i64vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1091 42
-            1093:    983(ptr) AccessChain 34(data) 1088 975
-            1094: 28(i64vec4) Load 1093
-            1095: 28(i64vec4) VectorShuffle 1094 1092 4 5 2 3
-                              Store 1093 1095
-            1096:      6(int) Load 8(invocation)
-            1097:    983(ptr) AccessChain 34(data) 58 975
-            1098: 28(i64vec4) Load 1097
-            1099:992(i64vec3) VectorShuffle 1098 1098 0 1 2
-            1100:992(i64vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1099 42
-            1101:    983(ptr) AccessChain 34(data) 1096 975
-            1102: 28(i64vec4) Load 1101
-            1103: 28(i64vec4) VectorShuffle 1102 1100 4 5 6 3
-                              Store 1101 1103
-            1104:      6(int) Load 8(invocation)
-            1105:    983(ptr) AccessChain 34(data) 68 975
-            1106: 28(i64vec4) Load 1105
-            1107: 28(i64vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1106 42
-            1108:    983(ptr) AccessChain 34(data) 1104 975
-                              Store 1108 1107
-            1109:      6(int) Load 8(invocation)
-            1110:    976(ptr) AccessChain 34(data) 37 975 38
-            1111: 27(int64_t) Load 1110
-            1112: 27(int64_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 1111 42
-            1113:    976(ptr) AccessChain 34(data) 1109 975 38
-                              Store 1113 1112
-            1114:      6(int) Load 8(invocation)
-            1115:    983(ptr) AccessChain 34(data) 47 975
-            1116: 28(i64vec4) Load 1115
-            1117:982(i64vec2) VectorShuffle 1116 1116 0 1
-            1118:982(i64vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 1117 42
-            1119:    983(ptr) AccessChain 34(data) 1114 975
-            1120: 28(i64vec4) Load 1119
-            1121: 28(i64vec4) VectorShuffle 1120 1118 4 5 2 3
-                              Store 1119 1121
+            1001:    909(ptr) AccessChain 34(data) 47 901
+            1002: 26(i64vec4) Load 1001
+            1003:908(i64vec2) VectorShuffle 1002 1002 0 1
+            1004:908(i64vec2) GroupNonUniformSMax 43 ClusteredReduce 1003 42
+            1005:    902(ptr) AccessChain 34(data) 1000 901 38
+            1006: 25(int64_t) CompositeExtract 1004 0
+                              Store 1005 1006
+            1007:    902(ptr) AccessChain 34(data) 1000 901 42
+            1008: 25(int64_t) CompositeExtract 1004 1
+                              Store 1007 1008
+            1009:      6(int) Load 8(invocation)
+            1010:    909(ptr) AccessChain 34(data) 59 901
+            1011: 26(i64vec4) Load 1010
+            1012:919(i64vec3) VectorShuffle 1011 1011 0 1 2
+            1013:919(i64vec3) GroupNonUniformSMax 43 ClusteredReduce 1012 42
+            1014:    902(ptr) AccessChain 34(data) 1009 901 38
+            1015: 25(int64_t) CompositeExtract 1013 0
+                              Store 1014 1015
+            1016:    902(ptr) AccessChain 34(data) 1009 901 42
+            1017: 25(int64_t) CompositeExtract 1013 1
+                              Store 1016 1017
+            1018:    902(ptr) AccessChain 34(data) 1009 901 69
+            1019: 25(int64_t) CompositeExtract 1013 2
+                              Store 1018 1019
+            1020:      6(int) Load 8(invocation)
+            1021:    909(ptr) AccessChain 34(data) 73 901
+            1022: 26(i64vec4) Load 1021
+            1023: 26(i64vec4) GroupNonUniformSMax 43 ClusteredReduce 1022 42
+            1024:    909(ptr) AccessChain 34(data) 1020 901
+                              Store 1024 1023
+            1025:      6(int) Load 8(invocation)
+            1026:    902(ptr) AccessChain 34(data) 37 901 38
+            1027: 25(int64_t) Load 1026
+            1028: 25(int64_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1027 42
+            1029:    902(ptr) AccessChain 34(data) 1025 901 38
+                              Store 1029 1028
+            1030:      6(int) Load 8(invocation)
+            1031:    909(ptr) AccessChain 34(data) 47 901
+            1032: 26(i64vec4) Load 1031
+            1033:908(i64vec2) VectorShuffle 1032 1032 0 1
+            1034:908(i64vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1033 42
+            1035:    902(ptr) AccessChain 34(data) 1030 901 38
+            1036: 25(int64_t) CompositeExtract 1034 0
+                              Store 1035 1036
+            1037:    902(ptr) AccessChain 34(data) 1030 901 42
+            1038: 25(int64_t) CompositeExtract 1034 1
+                              Store 1037 1038
+            1039:      6(int) Load 8(invocation)
+            1040:    909(ptr) AccessChain 34(data) 59 901
+            1041: 26(i64vec4) Load 1040
+            1042:919(i64vec3) VectorShuffle 1041 1041 0 1 2
+            1043:919(i64vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1042 42
+            1044:    902(ptr) AccessChain 34(data) 1039 901 38
+            1045: 25(int64_t) CompositeExtract 1043 0
+                              Store 1044 1045
+            1046:    902(ptr) AccessChain 34(data) 1039 901 42
+            1047: 25(int64_t) CompositeExtract 1043 1
+                              Store 1046 1047
+            1048:    902(ptr) AccessChain 34(data) 1039 901 69
+            1049: 25(int64_t) CompositeExtract 1043 2
+                              Store 1048 1049
+            1050:      6(int) Load 8(invocation)
+            1051:    909(ptr) AccessChain 34(data) 73 901
+            1052: 26(i64vec4) Load 1051
+            1053: 26(i64vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1052 42
+            1054:    909(ptr) AccessChain 34(data) 1050 901
+                              Store 1054 1053
+            1055:      6(int) Load 8(invocation)
+            1056:    902(ptr) AccessChain 34(data) 37 901 38
+            1057: 25(int64_t) Load 1056
+            1058: 25(int64_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 1057 42
+            1059:    902(ptr) AccessChain 34(data) 1055 901 38
+                              Store 1059 1058
+            1060:      6(int) Load 8(invocation)
+            1061:    909(ptr) AccessChain 34(data) 47 901
+            1062: 26(i64vec4) Load 1061
+            1063:908(i64vec2) VectorShuffle 1062 1062 0 1
+            1064:908(i64vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 1063 42
+            1065:    902(ptr) AccessChain 34(data) 1060 901 38
+            1066: 25(int64_t) CompositeExtract 1064 0
+                              Store 1065 1066
+            1067:    902(ptr) AccessChain 34(data) 1060 901 42
+            1068: 25(int64_t) CompositeExtract 1064 1
+                              Store 1067 1068
+            1069:      6(int) Load 8(invocation)
+            1070:    909(ptr) AccessChain 34(data) 59 901
+            1071: 26(i64vec4) Load 1070
+            1072:919(i64vec3) VectorShuffle 1071 1071 0 1 2
+            1073:919(i64vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 1072 42
+            1074:    902(ptr) AccessChain 34(data) 1069 901 38
+            1075: 25(int64_t) CompositeExtract 1073 0
+                              Store 1074 1075
+            1076:    902(ptr) AccessChain 34(data) 1069 901 42
+            1077: 25(int64_t) CompositeExtract 1073 1
+                              Store 1076 1077
+            1078:    902(ptr) AccessChain 34(data) 1069 901 69
+            1079: 25(int64_t) CompositeExtract 1073 2
+                              Store 1078 1079
+            1080:      6(int) Load 8(invocation)
+            1081:    909(ptr) AccessChain 34(data) 73 901
+            1082: 26(i64vec4) Load 1081
+            1083: 26(i64vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 1082 42
+            1084:    909(ptr) AccessChain 34(data) 1080 901
+                              Store 1084 1083
+            1085:      6(int) Load 8(invocation)
+            1086:    902(ptr) AccessChain 34(data) 37 901 38
+            1087: 25(int64_t) Load 1086
+            1088: 25(int64_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 1087 42
+            1089:    902(ptr) AccessChain 34(data) 1085 901 38
+                              Store 1089 1088
+            1090:      6(int) Load 8(invocation)
+            1091:    909(ptr) AccessChain 34(data) 47 901
+            1092: 26(i64vec4) Load 1091
+            1093:908(i64vec2) VectorShuffle 1092 1092 0 1
+            1094:908(i64vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 1093 42
+            1095:    902(ptr) AccessChain 34(data) 1090 901 38
+            1096: 25(int64_t) CompositeExtract 1094 0
+                              Store 1095 1096
+            1097:    902(ptr) AccessChain 34(data) 1090 901 42
+            1098: 25(int64_t) CompositeExtract 1094 1
+                              Store 1097 1098
+            1099:      6(int) Load 8(invocation)
+            1100:    909(ptr) AccessChain 34(data) 59 901
+            1101: 26(i64vec4) Load 1100
+            1102:919(i64vec3) VectorShuffle 1101 1101 0 1 2
+            1103:919(i64vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 1102 42
+            1104:    902(ptr) AccessChain 34(data) 1099 901 38
+            1105: 25(int64_t) CompositeExtract 1103 0
+                              Store 1104 1105
+            1106:    902(ptr) AccessChain 34(data) 1099 901 42
+            1107: 25(int64_t) CompositeExtract 1103 1
+                              Store 1106 1107
+            1108:    902(ptr) AccessChain 34(data) 1099 901 69
+            1109: 25(int64_t) CompositeExtract 1103 2
+                              Store 1108 1109
+            1110:      6(int) Load 8(invocation)
+            1111:    909(ptr) AccessChain 34(data) 73 901
+            1112: 26(i64vec4) Load 1111
+            1113: 26(i64vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 1112 42
+            1114:    909(ptr) AccessChain 34(data) 1110 901
+                              Store 1114 1113
+            1115:      6(int) Load 8(invocation)
+            1118:   1117(ptr) AccessChain 34(data) 37 1116 38
+            1119: 27(int64_t) Load 1118
+            1120: 27(int64_t) GroupNonUniformIAdd 43 ClusteredReduce 1119 42
+            1121:   1117(ptr) AccessChain 34(data) 1115 1116 38
+                              Store 1121 1120
             1122:      6(int) Load 8(invocation)
-            1123:    983(ptr) AccessChain 34(data) 58 975
-            1124: 28(i64vec4) Load 1123
-            1125:992(i64vec3) VectorShuffle 1124 1124 0 1 2
-            1126:992(i64vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 1125 42
-            1127:    983(ptr) AccessChain 34(data) 1122 975
-            1128: 28(i64vec4) Load 1127
-            1129: 28(i64vec4) VectorShuffle 1128 1126 4 5 6 3
-                              Store 1127 1129
-            1130:      6(int) Load 8(invocation)
-            1131:    983(ptr) AccessChain 34(data) 68 975
-            1132: 28(i64vec4) Load 1131
-            1133: 28(i64vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 1132 42
-            1134:    983(ptr) AccessChain 34(data) 1130 975
-                              Store 1134 1133
-            1135:      6(int) Load 8(invocation)
-            1136:    976(ptr) AccessChain 34(data) 37 975 38
-            1137: 27(int64_t) Load 1136
-            1138: 27(int64_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 1137 42
-            1139:    976(ptr) AccessChain 34(data) 1135 975 38
-                              Store 1139 1138
-            1140:      6(int) Load 8(invocation)
-            1141:    983(ptr) AccessChain 34(data) 47 975
-            1142: 28(i64vec4) Load 1141
-            1143:982(i64vec2) VectorShuffle 1142 1142 0 1
-            1144:982(i64vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 1143 42
-            1145:    983(ptr) AccessChain 34(data) 1140 975
-            1146: 28(i64vec4) Load 1145
-            1147: 28(i64vec4) VectorShuffle 1146 1144 4 5 2 3
-                              Store 1145 1147
-            1148:      6(int) Load 8(invocation)
-            1149:    983(ptr) AccessChain 34(data) 58 975
-            1150: 28(i64vec4) Load 1149
-            1151:992(i64vec3) VectorShuffle 1150 1150 0 1 2
-            1152:992(i64vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 1151 42
-            1153:    983(ptr) AccessChain 34(data) 1148 975
-            1154: 28(i64vec4) Load 1153
-            1155: 28(i64vec4) VectorShuffle 1154 1152 4 5 6 3
-                              Store 1153 1155
-            1156:      6(int) Load 8(invocation)
-            1157:    983(ptr) AccessChain 34(data) 68 975
-            1158: 28(i64vec4) Load 1157
-            1159: 28(i64vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 1158 42
-            1160:    983(ptr) AccessChain 34(data) 1156 975
-                              Store 1160 1159
-            1161:      6(int) Load 8(invocation)
-            1164:   1163(ptr) AccessChain 34(data) 37 1162 38
-            1165:29(float16_t) Load 1164
-            1166:29(float16_t) GroupNonUniformFAdd 43 ClusteredReduce 1165 42
-            1167:   1163(ptr) AccessChain 34(data) 1161 1162 38
-                              Store 1167 1166
-            1168:      6(int) Load 8(invocation)
-            1171:   1170(ptr) AccessChain 34(data) 47 1162
-            1172: 30(f16vec4) Load 1171
-            1173:1169(f16vec2) VectorShuffle 1172 1172 0 1
-            1174:1169(f16vec2) GroupNonUniformFAdd 43 ClusteredReduce 1173 42
-            1175:   1170(ptr) AccessChain 34(data) 1168 1162
-            1176: 30(f16vec4) Load 1175
-            1177: 30(f16vec4) VectorShuffle 1176 1174 4 5 2 3
-                              Store 1175 1177
-            1178:      6(int) Load 8(invocation)
-            1180:   1170(ptr) AccessChain 34(data) 58 1162
-            1181: 30(f16vec4) Load 1180
-            1182:1179(f16vec3) VectorShuffle 1181 1181 0 1 2
-            1183:1179(f16vec3) GroupNonUniformFAdd 43 ClusteredReduce 1182 42
-            1184:   1170(ptr) AccessChain 34(data) 1178 1162
-            1185: 30(f16vec4) Load 1184
-            1186: 30(f16vec4) VectorShuffle 1185 1183 4 5 6 3
-                              Store 1184 1186
-            1187:      6(int) Load 8(invocation)
-            1188:   1170(ptr) AccessChain 34(data) 68 1162
-            1189: 30(f16vec4) Load 1188
-            1190: 30(f16vec4) GroupNonUniformFAdd 43 ClusteredReduce 1189 42
-            1191:   1170(ptr) AccessChain 34(data) 1187 1162
-                              Store 1191 1190
-            1192:      6(int) Load 8(invocation)
-            1193:   1163(ptr) AccessChain 34(data) 37 1162 38
-            1194:29(float16_t) Load 1193
-            1195:29(float16_t) GroupNonUniformFMul 43 ClusteredReduce 1194 42
-            1196:   1163(ptr) AccessChain 34(data) 1192 1162 38
-                              Store 1196 1195
-            1197:      6(int) Load 8(invocation)
-            1198:   1170(ptr) AccessChain 34(data) 47 1162
-            1199: 30(f16vec4) Load 1198
-            1200:1169(f16vec2) VectorShuffle 1199 1199 0 1
-            1201:1169(f16vec2) GroupNonUniformFMul 43 ClusteredReduce 1200 42
-            1202:   1170(ptr) AccessChain 34(data) 1197 1162
-            1203: 30(f16vec4) Load 1202
-            1204: 30(f16vec4) VectorShuffle 1203 1201 4 5 2 3
-                              Store 1202 1204
+            1125:   1124(ptr) AccessChain 34(data) 47 1116
+            1126: 28(i64vec4) Load 1125
+            1127:1123(i64vec2) VectorShuffle 1126 1126 0 1
+            1128:1123(i64vec2) GroupNonUniformIAdd 43 ClusteredReduce 1127 42
+            1129:   1117(ptr) AccessChain 34(data) 1122 1116 38
+            1130: 27(int64_t) CompositeExtract 1128 0
+                              Store 1129 1130
+            1131:   1117(ptr) AccessChain 34(data) 1122 1116 42
+            1132: 27(int64_t) CompositeExtract 1128 1
+                              Store 1131 1132
+            1133:      6(int) Load 8(invocation)
+            1135:   1124(ptr) AccessChain 34(data) 59 1116
+            1136: 28(i64vec4) Load 1135
+            1137:1134(i64vec3) VectorShuffle 1136 1136 0 1 2
+            1138:1134(i64vec3) GroupNonUniformIAdd 43 ClusteredReduce 1137 42
+            1139:   1117(ptr) AccessChain 34(data) 1133 1116 38
+            1140: 27(int64_t) CompositeExtract 1138 0
+                              Store 1139 1140
+            1141:   1117(ptr) AccessChain 34(data) 1133 1116 42
+            1142: 27(int64_t) CompositeExtract 1138 1
+                              Store 1141 1142
+            1143:   1117(ptr) AccessChain 34(data) 1133 1116 69
+            1144: 27(int64_t) CompositeExtract 1138 2
+                              Store 1143 1144
+            1145:      6(int) Load 8(invocation)
+            1146:   1124(ptr) AccessChain 34(data) 73 1116
+            1147: 28(i64vec4) Load 1146
+            1148: 28(i64vec4) GroupNonUniformIAdd 43 ClusteredReduce 1147 42
+            1149:   1124(ptr) AccessChain 34(data) 1145 1116
+                              Store 1149 1148
+            1150:      6(int) Load 8(invocation)
+            1151:   1117(ptr) AccessChain 34(data) 37 1116 38
+            1152: 27(int64_t) Load 1151
+            1153: 27(int64_t) GroupNonUniformIMul 43 ClusteredReduce 1152 42
+            1154:   1117(ptr) AccessChain 34(data) 1150 1116 38
+                              Store 1154 1153
+            1155:      6(int) Load 8(invocation)
+            1156:   1124(ptr) AccessChain 34(data) 47 1116
+            1157: 28(i64vec4) Load 1156
+            1158:1123(i64vec2) VectorShuffle 1157 1157 0 1
+            1159:1123(i64vec2) GroupNonUniformIMul 43 ClusteredReduce 1158 42
+            1160:   1117(ptr) AccessChain 34(data) 1155 1116 38
+            1161: 27(int64_t) CompositeExtract 1159 0
+                              Store 1160 1161
+            1162:   1117(ptr) AccessChain 34(data) 1155 1116 42
+            1163: 27(int64_t) CompositeExtract 1159 1
+                              Store 1162 1163
+            1164:      6(int) Load 8(invocation)
+            1165:   1124(ptr) AccessChain 34(data) 59 1116
+            1166: 28(i64vec4) Load 1165
+            1167:1134(i64vec3) VectorShuffle 1166 1166 0 1 2
+            1168:1134(i64vec3) GroupNonUniformIMul 43 ClusteredReduce 1167 42
+            1169:   1117(ptr) AccessChain 34(data) 1164 1116 38
+            1170: 27(int64_t) CompositeExtract 1168 0
+                              Store 1169 1170
+            1171:   1117(ptr) AccessChain 34(data) 1164 1116 42
+            1172: 27(int64_t) CompositeExtract 1168 1
+                              Store 1171 1172
+            1173:   1117(ptr) AccessChain 34(data) 1164 1116 69
+            1174: 27(int64_t) CompositeExtract 1168 2
+                              Store 1173 1174
+            1175:      6(int) Load 8(invocation)
+            1176:   1124(ptr) AccessChain 34(data) 73 1116
+            1177: 28(i64vec4) Load 1176
+            1178: 28(i64vec4) GroupNonUniformIMul 43 ClusteredReduce 1177 42
+            1179:   1124(ptr) AccessChain 34(data) 1175 1116
+                              Store 1179 1178
+            1180:      6(int) Load 8(invocation)
+            1181:   1117(ptr) AccessChain 34(data) 37 1116 38
+            1182: 27(int64_t) Load 1181
+            1183: 27(int64_t) GroupNonUniformUMin 43 ClusteredReduce 1182 42
+            1184:   1117(ptr) AccessChain 34(data) 1180 1116 38
+                              Store 1184 1183
+            1185:      6(int) Load 8(invocation)
+            1186:   1124(ptr) AccessChain 34(data) 47 1116
+            1187: 28(i64vec4) Load 1186
+            1188:1123(i64vec2) VectorShuffle 1187 1187 0 1
+            1189:1123(i64vec2) GroupNonUniformUMin 43 ClusteredReduce 1188 42
+            1190:   1117(ptr) AccessChain 34(data) 1185 1116 38
+            1191: 27(int64_t) CompositeExtract 1189 0
+                              Store 1190 1191
+            1192:   1117(ptr) AccessChain 34(data) 1185 1116 42
+            1193: 27(int64_t) CompositeExtract 1189 1
+                              Store 1192 1193
+            1194:      6(int) Load 8(invocation)
+            1195:   1124(ptr) AccessChain 34(data) 59 1116
+            1196: 28(i64vec4) Load 1195
+            1197:1134(i64vec3) VectorShuffle 1196 1196 0 1 2
+            1198:1134(i64vec3) GroupNonUniformUMin 43 ClusteredReduce 1197 42
+            1199:   1117(ptr) AccessChain 34(data) 1194 1116 38
+            1200: 27(int64_t) CompositeExtract 1198 0
+                              Store 1199 1200
+            1201:   1117(ptr) AccessChain 34(data) 1194 1116 42
+            1202: 27(int64_t) CompositeExtract 1198 1
+                              Store 1201 1202
+            1203:   1117(ptr) AccessChain 34(data) 1194 1116 69
+            1204: 27(int64_t) CompositeExtract 1198 2
+                              Store 1203 1204
             1205:      6(int) Load 8(invocation)
-            1206:   1170(ptr) AccessChain 34(data) 58 1162
-            1207: 30(f16vec4) Load 1206
-            1208:1179(f16vec3) VectorShuffle 1207 1207 0 1 2
-            1209:1179(f16vec3) GroupNonUniformFMul 43 ClusteredReduce 1208 42
-            1210:   1170(ptr) AccessChain 34(data) 1205 1162
-            1211: 30(f16vec4) Load 1210
-            1212: 30(f16vec4) VectorShuffle 1211 1209 4 5 6 3
-                              Store 1210 1212
-            1213:      6(int) Load 8(invocation)
-            1214:   1170(ptr) AccessChain 34(data) 68 1162
-            1215: 30(f16vec4) Load 1214
-            1216: 30(f16vec4) GroupNonUniformFMul 43 ClusteredReduce 1215 42
-            1217:   1170(ptr) AccessChain 34(data) 1213 1162
-                              Store 1217 1216
-            1218:      6(int) Load 8(invocation)
-            1219:   1163(ptr) AccessChain 34(data) 37 1162 38
-            1220:29(float16_t) Load 1219
-            1221:29(float16_t) GroupNonUniformFMin 43 ClusteredReduce 1220 42
-            1222:   1163(ptr) AccessChain 34(data) 1218 1162 38
-                              Store 1222 1221
-            1223:      6(int) Load 8(invocation)
-            1224:   1170(ptr) AccessChain 34(data) 47 1162
-            1225: 30(f16vec4) Load 1224
-            1226:1169(f16vec2) VectorShuffle 1225 1225 0 1
-            1227:1169(f16vec2) GroupNonUniformFMin 43 ClusteredReduce 1226 42
-            1228:   1170(ptr) AccessChain 34(data) 1223 1162
-            1229: 30(f16vec4) Load 1228
-            1230: 30(f16vec4) VectorShuffle 1229 1227 4 5 2 3
-                              Store 1228 1230
-            1231:      6(int) Load 8(invocation)
-            1232:   1170(ptr) AccessChain 34(data) 58 1162
-            1233: 30(f16vec4) Load 1232
-            1234:1179(f16vec3) VectorShuffle 1233 1233 0 1 2
-            1235:1179(f16vec3) GroupNonUniformFMin 43 ClusteredReduce 1234 42
-            1236:   1170(ptr) AccessChain 34(data) 1231 1162
-            1237: 30(f16vec4) Load 1236
-            1238: 30(f16vec4) VectorShuffle 1237 1235 4 5 6 3
-                              Store 1236 1238
-            1239:      6(int) Load 8(invocation)
-            1240:   1170(ptr) AccessChain 34(data) 68 1162
-            1241: 30(f16vec4) Load 1240
-            1242: 30(f16vec4) GroupNonUniformFMin 43 ClusteredReduce 1241 42
-            1243:   1170(ptr) AccessChain 34(data) 1239 1162
-                              Store 1243 1242
-            1244:      6(int) Load 8(invocation)
-            1245:   1163(ptr) AccessChain 34(data) 37 1162 38
-            1246:29(float16_t) Load 1245
-            1247:29(float16_t) GroupNonUniformFMax 43 ClusteredReduce 1246 42
-            1248:   1163(ptr) AccessChain 34(data) 1244 1162 38
-                              Store 1248 1247
-            1249:      6(int) Load 8(invocation)
-            1250:   1170(ptr) AccessChain 34(data) 47 1162
-            1251: 30(f16vec4) Load 1250
-            1252:1169(f16vec2) VectorShuffle 1251 1251 0 1
-            1253:1169(f16vec2) GroupNonUniformFMax 43 ClusteredReduce 1252 42
-            1254:   1170(ptr) AccessChain 34(data) 1249 1162
-            1255: 30(f16vec4) Load 1254
-            1256: 30(f16vec4) VectorShuffle 1255 1253 4 5 2 3
-                              Store 1254 1256
-            1257:      6(int) Load 8(invocation)
-            1258:   1170(ptr) AccessChain 34(data) 58 1162
-            1259: 30(f16vec4) Load 1258
-            1260:1179(f16vec3) VectorShuffle 1259 1259 0 1 2
-            1261:1179(f16vec3) GroupNonUniformFMax 43 ClusteredReduce 1260 42
-            1262:   1170(ptr) AccessChain 34(data) 1257 1162
-            1263: 30(f16vec4) Load 1262
-            1264: 30(f16vec4) VectorShuffle 1263 1261 4 5 6 3
-                              Store 1262 1264
+            1206:   1124(ptr) AccessChain 34(data) 73 1116
+            1207: 28(i64vec4) Load 1206
+            1208: 28(i64vec4) GroupNonUniformUMin 43 ClusteredReduce 1207 42
+            1209:   1124(ptr) AccessChain 34(data) 1205 1116
+                              Store 1209 1208
+            1210:      6(int) Load 8(invocation)
+            1211:   1117(ptr) AccessChain 34(data) 37 1116 38
+            1212: 27(int64_t) Load 1211
+            1213: 27(int64_t) GroupNonUniformUMax 43 ClusteredReduce 1212 42
+            1214:   1117(ptr) AccessChain 34(data) 1210 1116 38
+                              Store 1214 1213
+            1215:      6(int) Load 8(invocation)
+            1216:   1124(ptr) AccessChain 34(data) 47 1116
+            1217: 28(i64vec4) Load 1216
+            1218:1123(i64vec2) VectorShuffle 1217 1217 0 1
+            1219:1123(i64vec2) GroupNonUniformUMax 43 ClusteredReduce 1218 42
+            1220:   1117(ptr) AccessChain 34(data) 1215 1116 38
+            1221: 27(int64_t) CompositeExtract 1219 0
+                              Store 1220 1221
+            1222:   1117(ptr) AccessChain 34(data) 1215 1116 42
+            1223: 27(int64_t) CompositeExtract 1219 1
+                              Store 1222 1223
+            1224:      6(int) Load 8(invocation)
+            1225:   1124(ptr) AccessChain 34(data) 59 1116
+            1226: 28(i64vec4) Load 1225
+            1227:1134(i64vec3) VectorShuffle 1226 1226 0 1 2
+            1228:1134(i64vec3) GroupNonUniformUMax 43 ClusteredReduce 1227 42
+            1229:   1117(ptr) AccessChain 34(data) 1224 1116 38
+            1230: 27(int64_t) CompositeExtract 1228 0
+                              Store 1229 1230
+            1231:   1117(ptr) AccessChain 34(data) 1224 1116 42
+            1232: 27(int64_t) CompositeExtract 1228 1
+                              Store 1231 1232
+            1233:   1117(ptr) AccessChain 34(data) 1224 1116 69
+            1234: 27(int64_t) CompositeExtract 1228 2
+                              Store 1233 1234
+            1235:      6(int) Load 8(invocation)
+            1236:   1124(ptr) AccessChain 34(data) 73 1116
+            1237: 28(i64vec4) Load 1236
+            1238: 28(i64vec4) GroupNonUniformUMax 43 ClusteredReduce 1237 42
+            1239:   1124(ptr) AccessChain 34(data) 1235 1116
+                              Store 1239 1238
+            1240:      6(int) Load 8(invocation)
+            1241:   1117(ptr) AccessChain 34(data) 37 1116 38
+            1242: 27(int64_t) Load 1241
+            1243: 27(int64_t) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1242 42
+            1244:   1117(ptr) AccessChain 34(data) 1240 1116 38
+                              Store 1244 1243
+            1245:      6(int) Load 8(invocation)
+            1246:   1124(ptr) AccessChain 34(data) 47 1116
+            1247: 28(i64vec4) Load 1246
+            1248:1123(i64vec2) VectorShuffle 1247 1247 0 1
+            1249:1123(i64vec2) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1248 42
+            1250:   1117(ptr) AccessChain 34(data) 1245 1116 38
+            1251: 27(int64_t) CompositeExtract 1249 0
+                              Store 1250 1251
+            1252:   1117(ptr) AccessChain 34(data) 1245 1116 42
+            1253: 27(int64_t) CompositeExtract 1249 1
+                              Store 1252 1253
+            1254:      6(int) Load 8(invocation)
+            1255:   1124(ptr) AccessChain 34(data) 59 1116
+            1256: 28(i64vec4) Load 1255
+            1257:1134(i64vec3) VectorShuffle 1256 1256 0 1 2
+            1258:1134(i64vec3) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1257 42
+            1259:   1117(ptr) AccessChain 34(data) 1254 1116 38
+            1260: 27(int64_t) CompositeExtract 1258 0
+                              Store 1259 1260
+            1261:   1117(ptr) AccessChain 34(data) 1254 1116 42
+            1262: 27(int64_t) CompositeExtract 1258 1
+                              Store 1261 1262
+            1263:   1117(ptr) AccessChain 34(data) 1254 1116 69
+            1264: 27(int64_t) CompositeExtract 1258 2
+                              Store 1263 1264
             1265:      6(int) Load 8(invocation)
-            1266:   1170(ptr) AccessChain 34(data) 68 1162
-            1267: 30(f16vec4) Load 1266
-            1268: 30(f16vec4) GroupNonUniformFMax 43 ClusteredReduce 1267 42
-            1269:   1170(ptr) AccessChain 34(data) 1265 1162
+            1266:   1124(ptr) AccessChain 34(data) 73 1116
+            1267: 28(i64vec4) Load 1266
+            1268: 28(i64vec4) GroupNonUniformBitwiseAnd 43 ClusteredReduce 1267 42
+            1269:   1124(ptr) AccessChain 34(data) 1265 1116
                               Store 1269 1268
+            1270:      6(int) Load 8(invocation)
+            1271:   1117(ptr) AccessChain 34(data) 37 1116 38
+            1272: 27(int64_t) Load 1271
+            1273: 27(int64_t) GroupNonUniformBitwiseOr 43 ClusteredReduce 1272 42
+            1274:   1117(ptr) AccessChain 34(data) 1270 1116 38
+                              Store 1274 1273
+            1275:      6(int) Load 8(invocation)
+            1276:   1124(ptr) AccessChain 34(data) 47 1116
+            1277: 28(i64vec4) Load 1276
+            1278:1123(i64vec2) VectorShuffle 1277 1277 0 1
+            1279:1123(i64vec2) GroupNonUniformBitwiseOr 43 ClusteredReduce 1278 42
+            1280:   1117(ptr) AccessChain 34(data) 1275 1116 38
+            1281: 27(int64_t) CompositeExtract 1279 0
+                              Store 1280 1281
+            1282:   1117(ptr) AccessChain 34(data) 1275 1116 42
+            1283: 27(int64_t) CompositeExtract 1279 1
+                              Store 1282 1283
+            1284:      6(int) Load 8(invocation)
+            1285:   1124(ptr) AccessChain 34(data) 59 1116
+            1286: 28(i64vec4) Load 1285
+            1287:1134(i64vec3) VectorShuffle 1286 1286 0 1 2
+            1288:1134(i64vec3) GroupNonUniformBitwiseOr 43 ClusteredReduce 1287 42
+            1289:   1117(ptr) AccessChain 34(data) 1284 1116 38
+            1290: 27(int64_t) CompositeExtract 1288 0
+                              Store 1289 1290
+            1291:   1117(ptr) AccessChain 34(data) 1284 1116 42
+            1292: 27(int64_t) CompositeExtract 1288 1
+                              Store 1291 1292
+            1293:   1117(ptr) AccessChain 34(data) 1284 1116 69
+            1294: 27(int64_t) CompositeExtract 1288 2
+                              Store 1293 1294
+            1295:      6(int) Load 8(invocation)
+            1296:   1124(ptr) AccessChain 34(data) 73 1116
+            1297: 28(i64vec4) Load 1296
+            1298: 28(i64vec4) GroupNonUniformBitwiseOr 43 ClusteredReduce 1297 42
+            1299:   1124(ptr) AccessChain 34(data) 1295 1116
+                              Store 1299 1298
+            1300:      6(int) Load 8(invocation)
+            1301:   1117(ptr) AccessChain 34(data) 37 1116 38
+            1302: 27(int64_t) Load 1301
+            1303: 27(int64_t) GroupNonUniformBitwiseXor 43 ClusteredReduce 1302 42
+            1304:   1117(ptr) AccessChain 34(data) 1300 1116 38
+                              Store 1304 1303
+            1305:      6(int) Load 8(invocation)
+            1306:   1124(ptr) AccessChain 34(data) 47 1116
+            1307: 28(i64vec4) Load 1306
+            1308:1123(i64vec2) VectorShuffle 1307 1307 0 1
+            1309:1123(i64vec2) GroupNonUniformBitwiseXor 43 ClusteredReduce 1308 42
+            1310:   1117(ptr) AccessChain 34(data) 1305 1116 38
+            1311: 27(int64_t) CompositeExtract 1309 0
+                              Store 1310 1311
+            1312:   1117(ptr) AccessChain 34(data) 1305 1116 42
+            1313: 27(int64_t) CompositeExtract 1309 1
+                              Store 1312 1313
+            1314:      6(int) Load 8(invocation)
+            1315:   1124(ptr) AccessChain 34(data) 59 1116
+            1316: 28(i64vec4) Load 1315
+            1317:1134(i64vec3) VectorShuffle 1316 1316 0 1 2
+            1318:1134(i64vec3) GroupNonUniformBitwiseXor 43 ClusteredReduce 1317 42
+            1319:   1117(ptr) AccessChain 34(data) 1314 1116 38
+            1320: 27(int64_t) CompositeExtract 1318 0
+                              Store 1319 1320
+            1321:   1117(ptr) AccessChain 34(data) 1314 1116 42
+            1322: 27(int64_t) CompositeExtract 1318 1
+                              Store 1321 1322
+            1323:   1117(ptr) AccessChain 34(data) 1314 1116 69
+            1324: 27(int64_t) CompositeExtract 1318 2
+                              Store 1323 1324
+            1325:      6(int) Load 8(invocation)
+            1326:   1124(ptr) AccessChain 34(data) 73 1116
+            1327: 28(i64vec4) Load 1326
+            1328: 28(i64vec4) GroupNonUniformBitwiseXor 43 ClusteredReduce 1327 42
+            1329:   1124(ptr) AccessChain 34(data) 1325 1116
+                              Store 1329 1328
+            1330:      6(int) Load 8(invocation)
+            1333:   1332(ptr) AccessChain 34(data) 37 1331 38
+            1334:29(float16_t) Load 1333
+            1335:29(float16_t) GroupNonUniformFAdd 43 ClusteredReduce 1334 42
+            1336:   1332(ptr) AccessChain 34(data) 1330 1331 38
+                              Store 1336 1335
+            1337:      6(int) Load 8(invocation)
+            1340:   1339(ptr) AccessChain 34(data) 47 1331
+            1341: 30(f16vec4) Load 1340
+            1342:1338(f16vec2) VectorShuffle 1341 1341 0 1
+            1343:1338(f16vec2) GroupNonUniformFAdd 43 ClusteredReduce 1342 42
+            1344:   1332(ptr) AccessChain 34(data) 1337 1331 38
+            1345:29(float16_t) CompositeExtract 1343 0
+                              Store 1344 1345
+            1346:   1332(ptr) AccessChain 34(data) 1337 1331 42
+            1347:29(float16_t) CompositeExtract 1343 1
+                              Store 1346 1347
+            1348:      6(int) Load 8(invocation)
+            1350:   1339(ptr) AccessChain 34(data) 59 1331
+            1351: 30(f16vec4) Load 1350
+            1352:1349(f16vec3) VectorShuffle 1351 1351 0 1 2
+            1353:1349(f16vec3) GroupNonUniformFAdd 43 ClusteredReduce 1352 42
+            1354:   1332(ptr) AccessChain 34(data) 1348 1331 38
+            1355:29(float16_t) CompositeExtract 1353 0
+                              Store 1354 1355
+            1356:   1332(ptr) AccessChain 34(data) 1348 1331 42
+            1357:29(float16_t) CompositeExtract 1353 1
+                              Store 1356 1357
+            1358:   1332(ptr) AccessChain 34(data) 1348 1331 69
+            1359:29(float16_t) CompositeExtract 1353 2
+                              Store 1358 1359
+            1360:      6(int) Load 8(invocation)
+            1361:   1339(ptr) AccessChain 34(data) 73 1331
+            1362: 30(f16vec4) Load 1361
+            1363: 30(f16vec4) GroupNonUniformFAdd 43 ClusteredReduce 1362 42
+            1364:   1339(ptr) AccessChain 34(data) 1360 1331
+                              Store 1364 1363
+            1365:      6(int) Load 8(invocation)
+            1366:   1332(ptr) AccessChain 34(data) 37 1331 38
+            1367:29(float16_t) Load 1366
+            1368:29(float16_t) GroupNonUniformFMul 43 ClusteredReduce 1367 42
+            1369:   1332(ptr) AccessChain 34(data) 1365 1331 38
+                              Store 1369 1368
+            1370:      6(int) Load 8(invocation)
+            1371:   1339(ptr) AccessChain 34(data) 47 1331
+            1372: 30(f16vec4) Load 1371
+            1373:1338(f16vec2) VectorShuffle 1372 1372 0 1
+            1374:1338(f16vec2) GroupNonUniformFMul 43 ClusteredReduce 1373 42
+            1375:   1332(ptr) AccessChain 34(data) 1370 1331 38
+            1376:29(float16_t) CompositeExtract 1374 0
+                              Store 1375 1376
+            1377:   1332(ptr) AccessChain 34(data) 1370 1331 42
+            1378:29(float16_t) CompositeExtract 1374 1
+                              Store 1377 1378
+            1379:      6(int) Load 8(invocation)
+            1380:   1339(ptr) AccessChain 34(data) 59 1331
+            1381: 30(f16vec4) Load 1380
+            1382:1349(f16vec3) VectorShuffle 1381 1381 0 1 2
+            1383:1349(f16vec3) GroupNonUniformFMul 43 ClusteredReduce 1382 42
+            1384:   1332(ptr) AccessChain 34(data) 1379 1331 38
+            1385:29(float16_t) CompositeExtract 1383 0
+                              Store 1384 1385
+            1386:   1332(ptr) AccessChain 34(data) 1379 1331 42
+            1387:29(float16_t) CompositeExtract 1383 1
+                              Store 1386 1387
+            1388:   1332(ptr) AccessChain 34(data) 1379 1331 69
+            1389:29(float16_t) CompositeExtract 1383 2
+                              Store 1388 1389
+            1390:      6(int) Load 8(invocation)
+            1391:   1339(ptr) AccessChain 34(data) 73 1331
+            1392: 30(f16vec4) Load 1391
+            1393: 30(f16vec4) GroupNonUniformFMul 43 ClusteredReduce 1392 42
+            1394:   1339(ptr) AccessChain 34(data) 1390 1331
+                              Store 1394 1393
+            1395:      6(int) Load 8(invocation)
+            1396:   1332(ptr) AccessChain 34(data) 37 1331 38
+            1397:29(float16_t) Load 1396
+            1398:29(float16_t) GroupNonUniformFMin 43 ClusteredReduce 1397 42
+            1399:   1332(ptr) AccessChain 34(data) 1395 1331 38
+                              Store 1399 1398
+            1400:      6(int) Load 8(invocation)
+            1401:   1339(ptr) AccessChain 34(data) 47 1331
+            1402: 30(f16vec4) Load 1401
+            1403:1338(f16vec2) VectorShuffle 1402 1402 0 1
+            1404:1338(f16vec2) GroupNonUniformFMin 43 ClusteredReduce 1403 42
+            1405:   1332(ptr) AccessChain 34(data) 1400 1331 38
+            1406:29(float16_t) CompositeExtract 1404 0
+                              Store 1405 1406
+            1407:   1332(ptr) AccessChain 34(data) 1400 1331 42
+            1408:29(float16_t) CompositeExtract 1404 1
+                              Store 1407 1408
+            1409:      6(int) Load 8(invocation)
+            1410:   1339(ptr) AccessChain 34(data) 59 1331
+            1411: 30(f16vec4) Load 1410
+            1412:1349(f16vec3) VectorShuffle 1411 1411 0 1 2
+            1413:1349(f16vec3) GroupNonUniformFMin 43 ClusteredReduce 1412 42
+            1414:   1332(ptr) AccessChain 34(data) 1409 1331 38
+            1415:29(float16_t) CompositeExtract 1413 0
+                              Store 1414 1415
+            1416:   1332(ptr) AccessChain 34(data) 1409 1331 42
+            1417:29(float16_t) CompositeExtract 1413 1
+                              Store 1416 1417
+            1418:   1332(ptr) AccessChain 34(data) 1409 1331 69
+            1419:29(float16_t) CompositeExtract 1413 2
+                              Store 1418 1419
+            1420:      6(int) Load 8(invocation)
+            1421:   1339(ptr) AccessChain 34(data) 73 1331
+            1422: 30(f16vec4) Load 1421
+            1423: 30(f16vec4) GroupNonUniformFMin 43 ClusteredReduce 1422 42
+            1424:   1339(ptr) AccessChain 34(data) 1420 1331
+                              Store 1424 1423
+            1425:      6(int) Load 8(invocation)
+            1426:   1332(ptr) AccessChain 34(data) 37 1331 38
+            1427:29(float16_t) Load 1426
+            1428:29(float16_t) GroupNonUniformFMax 43 ClusteredReduce 1427 42
+            1429:   1332(ptr) AccessChain 34(data) 1425 1331 38
+                              Store 1429 1428
+            1430:      6(int) Load 8(invocation)
+            1431:   1339(ptr) AccessChain 34(data) 47 1331
+            1432: 30(f16vec4) Load 1431
+            1433:1338(f16vec2) VectorShuffle 1432 1432 0 1
+            1434:1338(f16vec2) GroupNonUniformFMax 43 ClusteredReduce 1433 42
+            1435:   1332(ptr) AccessChain 34(data) 1430 1331 38
+            1436:29(float16_t) CompositeExtract 1434 0
+                              Store 1435 1436
+            1437:   1332(ptr) AccessChain 34(data) 1430 1331 42
+            1438:29(float16_t) CompositeExtract 1434 1
+                              Store 1437 1438
+            1439:      6(int) Load 8(invocation)
+            1440:   1339(ptr) AccessChain 34(data) 59 1331
+            1441: 30(f16vec4) Load 1440
+            1442:1349(f16vec3) VectorShuffle 1441 1441 0 1 2
+            1443:1349(f16vec3) GroupNonUniformFMax 43 ClusteredReduce 1442 42
+            1444:   1332(ptr) AccessChain 34(data) 1439 1331 38
+            1445:29(float16_t) CompositeExtract 1443 0
+                              Store 1444 1445
+            1446:   1332(ptr) AccessChain 34(data) 1439 1331 42
+            1447:29(float16_t) CompositeExtract 1443 1
+                              Store 1446 1447
+            1448:   1332(ptr) AccessChain 34(data) 1439 1331 69
+            1449:29(float16_t) CompositeExtract 1443 2
+                              Store 1448 1449
+            1450:      6(int) Load 8(invocation)
+            1451:   1339(ptr) AccessChain 34(data) 73 1331
+            1452: 30(f16vec4) Load 1451
+            1453: 30(f16vec4) GroupNonUniformFMax 43 ClusteredReduce 1452 42
+            1454:   1339(ptr) AccessChain 34(data) 1450 1331
+                              Store 1454 1453
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out
index ccfbacc..47576d9 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out
@@ -1,7 +1,7 @@
 spv.subgroupExtendedTypesPartitioned.comp
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 1558
+// Id's are bound by 1743
 
                               Capability Shader
                               Capability Float16
@@ -61,7 +61,7 @@
                               Decorate 34(Buffers) Block
                               Decorate 37(data) DescriptorSet 0
                               Decorate 37(data) Binding 0
-                              Decorate 1557 BuiltIn WorkgroupSize
+                              Decorate 1742 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -128,10 +128,11 @@
              160:             TypePointer StorageBuffer 33(f16vec4)
              165:             TypeVector 32(float16_t) 3
              177:      6(int) Constant 3
-            1554:             TypeVector 6(int) 3
-            1555:      6(int) Constant 8
-            1556:      6(int) Constant 1
-            1557: 1554(ivec3) ConstantComposite 1555 1556 1556
+             188:      6(int) Constant 1
+             201:      6(int) Constant 2
+            1740:             TypeVector 6(int) 3
+            1741:      6(int) Constant 8
+            1742: 1740(ivec3) ConstantComposite 1741 188 188
          4(main):           2 Function None 3
                5:             Label
    8(invocation):      7(ptr) Variable Function
@@ -280,270 +281,285 @@
              183:  46(i8vec2) VectorShuffle 182 182 0 1
              184:   17(ivec4) Load 19(ballot)
              185:  46(i8vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 183 184
-             186:     47(ptr) AccessChain 37(data) 180 39
-             187:  21(i8vec4) Load 186
-             188:  21(i8vec4) VectorShuffle 187 185 4 5 2 3
-                              Store 186 188
-             189:      6(int) Load 8(invocation)
-             190:     47(ptr) AccessChain 37(data) 52 39
-             191:  21(i8vec4) Load 190
-             192:  53(i8vec3) VectorShuffle 191 191 0 1 2
-             193:   17(ivec4) Load 19(ballot)
-             194:  53(i8vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 192 193
-             195:     47(ptr) AccessChain 37(data) 189 39
-             196:  21(i8vec4) Load 195
-             197:  21(i8vec4) VectorShuffle 196 194 4 5 6 3
-                              Store 195 197
-             198:      6(int) Load 8(invocation)
-             199:     47(ptr) AccessChain 37(data) 58 39
-             200:  21(i8vec4) Load 199
-             201:   17(ivec4) Load 19(ballot)
-             202:  21(i8vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 200 201
-             203:     47(ptr) AccessChain 37(data) 198 39
-                              Store 203 202
+             186:     41(ptr) AccessChain 37(data) 180 39 40
+             187:  20(int8_t) CompositeExtract 185 0
+                              Store 186 187
+             189:     41(ptr) AccessChain 37(data) 180 39 188
+             190:  20(int8_t) CompositeExtract 185 1
+                              Store 189 190
+             191:      6(int) Load 8(invocation)
+             192:     47(ptr) AccessChain 37(data) 52 39
+             193:  21(i8vec4) Load 192
+             194:  53(i8vec3) VectorShuffle 193 193 0 1 2
+             195:   17(ivec4) Load 19(ballot)
+             196:  53(i8vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 194 195
+             197:     41(ptr) AccessChain 37(data) 191 39 40
+             198:  20(int8_t) CompositeExtract 196 0
+                              Store 197 198
+             199:     41(ptr) AccessChain 37(data) 191 39 188
+             200:  20(int8_t) CompositeExtract 196 1
+                              Store 199 200
+             202:     41(ptr) AccessChain 37(data) 191 39 201
+             203:  20(int8_t) CompositeExtract 196 2
+                              Store 202 203
              204:      6(int) Load 8(invocation)
-             205:     41(ptr) AccessChain 37(data) 39 39 40
-             206:  20(int8_t) Load 205
+             205:     47(ptr) AccessChain 37(data) 58 39
+             206:  21(i8vec4) Load 205
              207:   17(ivec4) Load 19(ballot)
-             208:  20(int8_t) GroupNonUniformIMul 177 PartitionedReduceNV 206 207
-             209:     41(ptr) AccessChain 37(data) 204 39 40
+             208:  21(i8vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 206 207
+             209:     47(ptr) AccessChain 37(data) 204 39
                               Store 209 208
              210:      6(int) Load 8(invocation)
-             211:     47(ptr) AccessChain 37(data) 45 39
-             212:  21(i8vec4) Load 211
-             213:  46(i8vec2) VectorShuffle 212 212 0 1
-             214:   17(ivec4) Load 19(ballot)
-             215:  46(i8vec2) GroupNonUniformIMul 177 PartitionedReduceNV 213 214
-             216:     47(ptr) AccessChain 37(data) 210 39
-             217:  21(i8vec4) Load 216
-             218:  21(i8vec4) VectorShuffle 217 215 4 5 2 3
-                              Store 216 218
-             219:      6(int) Load 8(invocation)
-             220:     47(ptr) AccessChain 37(data) 52 39
-             221:  21(i8vec4) Load 220
-             222:  53(i8vec3) VectorShuffle 221 221 0 1 2
-             223:   17(ivec4) Load 19(ballot)
-             224:  53(i8vec3) GroupNonUniformIMul 177 PartitionedReduceNV 222 223
-             225:     47(ptr) AccessChain 37(data) 219 39
-             226:  21(i8vec4) Load 225
-             227:  21(i8vec4) VectorShuffle 226 224 4 5 6 3
-                              Store 225 227
-             228:      6(int) Load 8(invocation)
-             229:     47(ptr) AccessChain 37(data) 58 39
-             230:  21(i8vec4) Load 229
-             231:   17(ivec4) Load 19(ballot)
-             232:  21(i8vec4) GroupNonUniformIMul 177 PartitionedReduceNV 230 231
-             233:     47(ptr) AccessChain 37(data) 228 39
-                              Store 233 232
-             234:      6(int) Load 8(invocation)
-             235:     41(ptr) AccessChain 37(data) 39 39 40
-             236:  20(int8_t) Load 235
-             237:   17(ivec4) Load 19(ballot)
-             238:  20(int8_t) GroupNonUniformSMin 177 PartitionedReduceNV 236 237
-             239:     41(ptr) AccessChain 37(data) 234 39 40
-                              Store 239 238
-             240:      6(int) Load 8(invocation)
-             241:     47(ptr) AccessChain 37(data) 45 39
-             242:  21(i8vec4) Load 241
-             243:  46(i8vec2) VectorShuffle 242 242 0 1
-             244:   17(ivec4) Load 19(ballot)
-             245:  46(i8vec2) GroupNonUniformSMin 177 PartitionedReduceNV 243 244
-             246:     47(ptr) AccessChain 37(data) 240 39
-             247:  21(i8vec4) Load 246
-             248:  21(i8vec4) VectorShuffle 247 245 4 5 2 3
-                              Store 246 248
-             249:      6(int) Load 8(invocation)
-             250:     47(ptr) AccessChain 37(data) 52 39
-             251:  21(i8vec4) Load 250
-             252:  53(i8vec3) VectorShuffle 251 251 0 1 2
-             253:   17(ivec4) Load 19(ballot)
-             254:  53(i8vec3) GroupNonUniformSMin 177 PartitionedReduceNV 252 253
-             255:     47(ptr) AccessChain 37(data) 249 39
-             256:  21(i8vec4) Load 255
-             257:  21(i8vec4) VectorShuffle 256 254 4 5 6 3
-                              Store 255 257
-             258:      6(int) Load 8(invocation)
-             259:     47(ptr) AccessChain 37(data) 58 39
-             260:  21(i8vec4) Load 259
-             261:   17(ivec4) Load 19(ballot)
-             262:  21(i8vec4) GroupNonUniformSMin 177 PartitionedReduceNV 260 261
-             263:     47(ptr) AccessChain 37(data) 258 39
-                              Store 263 262
-             264:      6(int) Load 8(invocation)
-             265:     41(ptr) AccessChain 37(data) 39 39 40
-             266:  20(int8_t) Load 265
-             267:   17(ivec4) Load 19(ballot)
-             268:  20(int8_t) GroupNonUniformSMax 177 PartitionedReduceNV 266 267
-             269:     41(ptr) AccessChain 37(data) 264 39 40
-                              Store 269 268
-             270:      6(int) Load 8(invocation)
-             271:     47(ptr) AccessChain 37(data) 45 39
-             272:  21(i8vec4) Load 271
-             273:  46(i8vec2) VectorShuffle 272 272 0 1
-             274:   17(ivec4) Load 19(ballot)
-             275:  46(i8vec2) GroupNonUniformSMax 177 PartitionedReduceNV 273 274
-             276:     47(ptr) AccessChain 37(data) 270 39
-             277:  21(i8vec4) Load 276
-             278:  21(i8vec4) VectorShuffle 277 275 4 5 2 3
-                              Store 276 278
-             279:      6(int) Load 8(invocation)
-             280:     47(ptr) AccessChain 37(data) 52 39
-             281:  21(i8vec4) Load 280
-             282:  53(i8vec3) VectorShuffle 281 281 0 1 2
-             283:   17(ivec4) Load 19(ballot)
-             284:  53(i8vec3) GroupNonUniformSMax 177 PartitionedReduceNV 282 283
-             285:     47(ptr) AccessChain 37(data) 279 39
+             211:     41(ptr) AccessChain 37(data) 39 39 40
+             212:  20(int8_t) Load 211
+             213:   17(ivec4) Load 19(ballot)
+             214:  20(int8_t) GroupNonUniformIMul 177 PartitionedReduceNV 212 213
+             215:     41(ptr) AccessChain 37(data) 210 39 40
+                              Store 215 214
+             216:      6(int) Load 8(invocation)
+             217:     47(ptr) AccessChain 37(data) 45 39
+             218:  21(i8vec4) Load 217
+             219:  46(i8vec2) VectorShuffle 218 218 0 1
+             220:   17(ivec4) Load 19(ballot)
+             221:  46(i8vec2) GroupNonUniformIMul 177 PartitionedReduceNV 219 220
+             222:     41(ptr) AccessChain 37(data) 216 39 40
+             223:  20(int8_t) CompositeExtract 221 0
+                              Store 222 223
+             224:     41(ptr) AccessChain 37(data) 216 39 188
+             225:  20(int8_t) CompositeExtract 221 1
+                              Store 224 225
+             226:      6(int) Load 8(invocation)
+             227:     47(ptr) AccessChain 37(data) 52 39
+             228:  21(i8vec4) Load 227
+             229:  53(i8vec3) VectorShuffle 228 228 0 1 2
+             230:   17(ivec4) Load 19(ballot)
+             231:  53(i8vec3) GroupNonUniformIMul 177 PartitionedReduceNV 229 230
+             232:     41(ptr) AccessChain 37(data) 226 39 40
+             233:  20(int8_t) CompositeExtract 231 0
+                              Store 232 233
+             234:     41(ptr) AccessChain 37(data) 226 39 188
+             235:  20(int8_t) CompositeExtract 231 1
+                              Store 234 235
+             236:     41(ptr) AccessChain 37(data) 226 39 201
+             237:  20(int8_t) CompositeExtract 231 2
+                              Store 236 237
+             238:      6(int) Load 8(invocation)
+             239:     47(ptr) AccessChain 37(data) 58 39
+             240:  21(i8vec4) Load 239
+             241:   17(ivec4) Load 19(ballot)
+             242:  21(i8vec4) GroupNonUniformIMul 177 PartitionedReduceNV 240 241
+             243:     47(ptr) AccessChain 37(data) 238 39
+                              Store 243 242
+             244:      6(int) Load 8(invocation)
+             245:     41(ptr) AccessChain 37(data) 39 39 40
+             246:  20(int8_t) Load 245
+             247:   17(ivec4) Load 19(ballot)
+             248:  20(int8_t) GroupNonUniformSMin 177 PartitionedReduceNV 246 247
+             249:     41(ptr) AccessChain 37(data) 244 39 40
+                              Store 249 248
+             250:      6(int) Load 8(invocation)
+             251:     47(ptr) AccessChain 37(data) 45 39
+             252:  21(i8vec4) Load 251
+             253:  46(i8vec2) VectorShuffle 252 252 0 1
+             254:   17(ivec4) Load 19(ballot)
+             255:  46(i8vec2) GroupNonUniformSMin 177 PartitionedReduceNV 253 254
+             256:     41(ptr) AccessChain 37(data) 250 39 40
+             257:  20(int8_t) CompositeExtract 255 0
+                              Store 256 257
+             258:     41(ptr) AccessChain 37(data) 250 39 188
+             259:  20(int8_t) CompositeExtract 255 1
+                              Store 258 259
+             260:      6(int) Load 8(invocation)
+             261:     47(ptr) AccessChain 37(data) 52 39
+             262:  21(i8vec4) Load 261
+             263:  53(i8vec3) VectorShuffle 262 262 0 1 2
+             264:   17(ivec4) Load 19(ballot)
+             265:  53(i8vec3) GroupNonUniformSMin 177 PartitionedReduceNV 263 264
+             266:     41(ptr) AccessChain 37(data) 260 39 40
+             267:  20(int8_t) CompositeExtract 265 0
+                              Store 266 267
+             268:     41(ptr) AccessChain 37(data) 260 39 188
+             269:  20(int8_t) CompositeExtract 265 1
+                              Store 268 269
+             270:     41(ptr) AccessChain 37(data) 260 39 201
+             271:  20(int8_t) CompositeExtract 265 2
+                              Store 270 271
+             272:      6(int) Load 8(invocation)
+             273:     47(ptr) AccessChain 37(data) 58 39
+             274:  21(i8vec4) Load 273
+             275:   17(ivec4) Load 19(ballot)
+             276:  21(i8vec4) GroupNonUniformSMin 177 PartitionedReduceNV 274 275
+             277:     47(ptr) AccessChain 37(data) 272 39
+                              Store 277 276
+             278:      6(int) Load 8(invocation)
+             279:     41(ptr) AccessChain 37(data) 39 39 40
+             280:  20(int8_t) Load 279
+             281:   17(ivec4) Load 19(ballot)
+             282:  20(int8_t) GroupNonUniformSMax 177 PartitionedReduceNV 280 281
+             283:     41(ptr) AccessChain 37(data) 278 39 40
+                              Store 283 282
+             284:      6(int) Load 8(invocation)
+             285:     47(ptr) AccessChain 37(data) 45 39
              286:  21(i8vec4) Load 285
-             287:  21(i8vec4) VectorShuffle 286 284 4 5 6 3
-                              Store 285 287
-             288:      6(int) Load 8(invocation)
-             289:     47(ptr) AccessChain 37(data) 58 39
-             290:  21(i8vec4) Load 289
-             291:   17(ivec4) Load 19(ballot)
-             292:  21(i8vec4) GroupNonUniformSMax 177 PartitionedReduceNV 290 291
-             293:     47(ptr) AccessChain 37(data) 288 39
-                              Store 293 292
+             287:  46(i8vec2) VectorShuffle 286 286 0 1
+             288:   17(ivec4) Load 19(ballot)
+             289:  46(i8vec2) GroupNonUniformSMax 177 PartitionedReduceNV 287 288
+             290:     41(ptr) AccessChain 37(data) 284 39 40
+             291:  20(int8_t) CompositeExtract 289 0
+                              Store 290 291
+             292:     41(ptr) AccessChain 37(data) 284 39 188
+             293:  20(int8_t) CompositeExtract 289 1
+                              Store 292 293
              294:      6(int) Load 8(invocation)
-             295:     41(ptr) AccessChain 37(data) 39 39 40
-             296:  20(int8_t) Load 295
-             297:   17(ivec4) Load 19(ballot)
-             298:  20(int8_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 296 297
-             299:     41(ptr) AccessChain 37(data) 294 39 40
-                              Store 299 298
-             300:      6(int) Load 8(invocation)
-             301:     47(ptr) AccessChain 37(data) 45 39
-             302:  21(i8vec4) Load 301
-             303:  46(i8vec2) VectorShuffle 302 302 0 1
-             304:   17(ivec4) Load 19(ballot)
-             305:  46(i8vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 303 304
-             306:     47(ptr) AccessChain 37(data) 300 39
-             307:  21(i8vec4) Load 306
-             308:  21(i8vec4) VectorShuffle 307 305 4 5 2 3
-                              Store 306 308
-             309:      6(int) Load 8(invocation)
-             310:     47(ptr) AccessChain 37(data) 52 39
-             311:  21(i8vec4) Load 310
-             312:  53(i8vec3) VectorShuffle 311 311 0 1 2
-             313:   17(ivec4) Load 19(ballot)
-             314:  53(i8vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 312 313
-             315:     47(ptr) AccessChain 37(data) 309 39
-             316:  21(i8vec4) Load 315
-             317:  21(i8vec4) VectorShuffle 316 314 4 5 6 3
-                              Store 315 317
+             295:     47(ptr) AccessChain 37(data) 52 39
+             296:  21(i8vec4) Load 295
+             297:  53(i8vec3) VectorShuffle 296 296 0 1 2
+             298:   17(ivec4) Load 19(ballot)
+             299:  53(i8vec3) GroupNonUniformSMax 177 PartitionedReduceNV 297 298
+             300:     41(ptr) AccessChain 37(data) 294 39 40
+             301:  20(int8_t) CompositeExtract 299 0
+                              Store 300 301
+             302:     41(ptr) AccessChain 37(data) 294 39 188
+             303:  20(int8_t) CompositeExtract 299 1
+                              Store 302 303
+             304:     41(ptr) AccessChain 37(data) 294 39 201
+             305:  20(int8_t) CompositeExtract 299 2
+                              Store 304 305
+             306:      6(int) Load 8(invocation)
+             307:     47(ptr) AccessChain 37(data) 58 39
+             308:  21(i8vec4) Load 307
+             309:   17(ivec4) Load 19(ballot)
+             310:  21(i8vec4) GroupNonUniformSMax 177 PartitionedReduceNV 308 309
+             311:     47(ptr) AccessChain 37(data) 306 39
+                              Store 311 310
+             312:      6(int) Load 8(invocation)
+             313:     41(ptr) AccessChain 37(data) 39 39 40
+             314:  20(int8_t) Load 313
+             315:   17(ivec4) Load 19(ballot)
+             316:  20(int8_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 314 315
+             317:     41(ptr) AccessChain 37(data) 312 39 40
+                              Store 317 316
              318:      6(int) Load 8(invocation)
-             319:     47(ptr) AccessChain 37(data) 58 39
+             319:     47(ptr) AccessChain 37(data) 45 39
              320:  21(i8vec4) Load 319
-             321:   17(ivec4) Load 19(ballot)
-             322:  21(i8vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 320 321
-             323:     47(ptr) AccessChain 37(data) 318 39
-                              Store 323 322
-             324:      6(int) Load 8(invocation)
-             325:     41(ptr) AccessChain 37(data) 39 39 40
-             326:  20(int8_t) Load 325
-             327:   17(ivec4) Load 19(ballot)
-             328:  20(int8_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 326 327
-             329:     41(ptr) AccessChain 37(data) 324 39 40
-                              Store 329 328
-             330:      6(int) Load 8(invocation)
-             331:     47(ptr) AccessChain 37(data) 45 39
-             332:  21(i8vec4) Load 331
-             333:  46(i8vec2) VectorShuffle 332 332 0 1
-             334:   17(ivec4) Load 19(ballot)
-             335:  46(i8vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 333 334
-             336:     47(ptr) AccessChain 37(data) 330 39
-             337:  21(i8vec4) Load 336
-             338:  21(i8vec4) VectorShuffle 337 335 4 5 2 3
-                              Store 336 338
-             339:      6(int) Load 8(invocation)
-             340:     47(ptr) AccessChain 37(data) 52 39
-             341:  21(i8vec4) Load 340
-             342:  53(i8vec3) VectorShuffle 341 341 0 1 2
+             321:  46(i8vec2) VectorShuffle 320 320 0 1
+             322:   17(ivec4) Load 19(ballot)
+             323:  46(i8vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 321 322
+             324:     41(ptr) AccessChain 37(data) 318 39 40
+             325:  20(int8_t) CompositeExtract 323 0
+                              Store 324 325
+             326:     41(ptr) AccessChain 37(data) 318 39 188
+             327:  20(int8_t) CompositeExtract 323 1
+                              Store 326 327
+             328:      6(int) Load 8(invocation)
+             329:     47(ptr) AccessChain 37(data) 52 39
+             330:  21(i8vec4) Load 329
+             331:  53(i8vec3) VectorShuffle 330 330 0 1 2
+             332:   17(ivec4) Load 19(ballot)
+             333:  53(i8vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 331 332
+             334:     41(ptr) AccessChain 37(data) 328 39 40
+             335:  20(int8_t) CompositeExtract 333 0
+                              Store 334 335
+             336:     41(ptr) AccessChain 37(data) 328 39 188
+             337:  20(int8_t) CompositeExtract 333 1
+                              Store 336 337
+             338:     41(ptr) AccessChain 37(data) 328 39 201
+             339:  20(int8_t) CompositeExtract 333 2
+                              Store 338 339
+             340:      6(int) Load 8(invocation)
+             341:     47(ptr) AccessChain 37(data) 58 39
+             342:  21(i8vec4) Load 341
              343:   17(ivec4) Load 19(ballot)
-             344:  53(i8vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 342 343
-             345:     47(ptr) AccessChain 37(data) 339 39
-             346:  21(i8vec4) Load 345
-             347:  21(i8vec4) VectorShuffle 346 344 4 5 6 3
-                              Store 345 347
-             348:      6(int) Load 8(invocation)
-             349:     47(ptr) AccessChain 37(data) 58 39
-             350:  21(i8vec4) Load 349
-             351:   17(ivec4) Load 19(ballot)
-             352:  21(i8vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 350 351
-             353:     47(ptr) AccessChain 37(data) 348 39
-                              Store 353 352
-             354:      6(int) Load 8(invocation)
-             355:     41(ptr) AccessChain 37(data) 39 39 40
-             356:  20(int8_t) Load 355
-             357:   17(ivec4) Load 19(ballot)
-             358:  20(int8_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 356 357
-             359:     41(ptr) AccessChain 37(data) 354 39 40
-                              Store 359 358
-             360:      6(int) Load 8(invocation)
-             361:     47(ptr) AccessChain 37(data) 45 39
-             362:  21(i8vec4) Load 361
-             363:  46(i8vec2) VectorShuffle 362 362 0 1
-             364:   17(ivec4) Load 19(ballot)
-             365:  46(i8vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 363 364
-             366:     47(ptr) AccessChain 37(data) 360 39
-             367:  21(i8vec4) Load 366
-             368:  21(i8vec4) VectorShuffle 367 365 4 5 2 3
-                              Store 366 368
-             369:      6(int) Load 8(invocation)
-             370:     47(ptr) AccessChain 37(data) 52 39
-             371:  21(i8vec4) Load 370
-             372:  53(i8vec3) VectorShuffle 371 371 0 1 2
-             373:   17(ivec4) Load 19(ballot)
-             374:  53(i8vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 372 373
-             375:     47(ptr) AccessChain 37(data) 369 39
+             344:  21(i8vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 342 343
+             345:     47(ptr) AccessChain 37(data) 340 39
+                              Store 345 344
+             346:      6(int) Load 8(invocation)
+             347:     41(ptr) AccessChain 37(data) 39 39 40
+             348:  20(int8_t) Load 347
+             349:   17(ivec4) Load 19(ballot)
+             350:  20(int8_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 348 349
+             351:     41(ptr) AccessChain 37(data) 346 39 40
+                              Store 351 350
+             352:      6(int) Load 8(invocation)
+             353:     47(ptr) AccessChain 37(data) 45 39
+             354:  21(i8vec4) Load 353
+             355:  46(i8vec2) VectorShuffle 354 354 0 1
+             356:   17(ivec4) Load 19(ballot)
+             357:  46(i8vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 355 356
+             358:     41(ptr) AccessChain 37(data) 352 39 40
+             359:  20(int8_t) CompositeExtract 357 0
+                              Store 358 359
+             360:     41(ptr) AccessChain 37(data) 352 39 188
+             361:  20(int8_t) CompositeExtract 357 1
+                              Store 360 361
+             362:      6(int) Load 8(invocation)
+             363:     47(ptr) AccessChain 37(data) 52 39
+             364:  21(i8vec4) Load 363
+             365:  53(i8vec3) VectorShuffle 364 364 0 1 2
+             366:   17(ivec4) Load 19(ballot)
+             367:  53(i8vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 365 366
+             368:     41(ptr) AccessChain 37(data) 362 39 40
+             369:  20(int8_t) CompositeExtract 367 0
+                              Store 368 369
+             370:     41(ptr) AccessChain 37(data) 362 39 188
+             371:  20(int8_t) CompositeExtract 367 1
+                              Store 370 371
+             372:     41(ptr) AccessChain 37(data) 362 39 201
+             373:  20(int8_t) CompositeExtract 367 2
+                              Store 372 373
+             374:      6(int) Load 8(invocation)
+             375:     47(ptr) AccessChain 37(data) 58 39
              376:  21(i8vec4) Load 375
-             377:  21(i8vec4) VectorShuffle 376 374 4 5 6 3
-                              Store 375 377
-             378:      6(int) Load 8(invocation)
-             379:     47(ptr) AccessChain 37(data) 58 39
-             380:  21(i8vec4) Load 379
-             381:   17(ivec4) Load 19(ballot)
-             382:  21(i8vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 380 381
-             383:     47(ptr) AccessChain 37(data) 378 39
-                              Store 383 382
-             384:      6(int) Load 8(invocation)
-             385:     62(ptr) AccessChain 37(data) 39 45 40
-             386:  22(int8_t) Load 385
-             387:   17(ivec4) Load 19(ballot)
-             388:  22(int8_t) GroupNonUniformIAdd 177 PartitionedReduceNV 386 387
-             389:     62(ptr) AccessChain 37(data) 384 45 40
-                              Store 389 388
-             390:      6(int) Load 8(invocation)
-             391:     67(ptr) AccessChain 37(data) 45 45
-             392:  23(i8vec4) Load 391
-             393:  66(i8vec2) VectorShuffle 392 392 0 1
-             394:   17(ivec4) Load 19(ballot)
-             395:  66(i8vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 393 394
-             396:     67(ptr) AccessChain 37(data) 390 45
-             397:  23(i8vec4) Load 396
-             398:  23(i8vec4) VectorShuffle 397 395 4 5 2 3
-                              Store 396 398
-             399:      6(int) Load 8(invocation)
-             400:     67(ptr) AccessChain 37(data) 52 45
-             401:  23(i8vec4) Load 400
-             402:  72(i8vec3) VectorShuffle 401 401 0 1 2
-             403:   17(ivec4) Load 19(ballot)
-             404:  72(i8vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 402 403
-             405:     67(ptr) AccessChain 37(data) 399 45
-             406:  23(i8vec4) Load 405
-             407:  23(i8vec4) VectorShuffle 406 404 4 5 6 3
-                              Store 405 407
+             377:   17(ivec4) Load 19(ballot)
+             378:  21(i8vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 376 377
+             379:     47(ptr) AccessChain 37(data) 374 39
+                              Store 379 378
+             380:      6(int) Load 8(invocation)
+             381:     41(ptr) AccessChain 37(data) 39 39 40
+             382:  20(int8_t) Load 381
+             383:   17(ivec4) Load 19(ballot)
+             384:  20(int8_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 382 383
+             385:     41(ptr) AccessChain 37(data) 380 39 40
+                              Store 385 384
+             386:      6(int) Load 8(invocation)
+             387:     47(ptr) AccessChain 37(data) 45 39
+             388:  21(i8vec4) Load 387
+             389:  46(i8vec2) VectorShuffle 388 388 0 1
+             390:   17(ivec4) Load 19(ballot)
+             391:  46(i8vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 389 390
+             392:     41(ptr) AccessChain 37(data) 386 39 40
+             393:  20(int8_t) CompositeExtract 391 0
+                              Store 392 393
+             394:     41(ptr) AccessChain 37(data) 386 39 188
+             395:  20(int8_t) CompositeExtract 391 1
+                              Store 394 395
+             396:      6(int) Load 8(invocation)
+             397:     47(ptr) AccessChain 37(data) 52 39
+             398:  21(i8vec4) Load 397
+             399:  53(i8vec3) VectorShuffle 398 398 0 1 2
+             400:   17(ivec4) Load 19(ballot)
+             401:  53(i8vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 399 400
+             402:     41(ptr) AccessChain 37(data) 396 39 40
+             403:  20(int8_t) CompositeExtract 401 0
+                              Store 402 403
+             404:     41(ptr) AccessChain 37(data) 396 39 188
+             405:  20(int8_t) CompositeExtract 401 1
+                              Store 404 405
+             406:     41(ptr) AccessChain 37(data) 396 39 201
+             407:  20(int8_t) CompositeExtract 401 2
+                              Store 406 407
              408:      6(int) Load 8(invocation)
-             409:     67(ptr) AccessChain 37(data) 58 45
-             410:  23(i8vec4) Load 409
+             409:     47(ptr) AccessChain 37(data) 58 39
+             410:  21(i8vec4) Load 409
              411:   17(ivec4) Load 19(ballot)
-             412:  23(i8vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 410 411
-             413:     67(ptr) AccessChain 37(data) 408 45
+             412:  21(i8vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 410 411
+             413:     47(ptr) AccessChain 37(data) 408 39
                               Store 413 412
              414:      6(int) Load 8(invocation)
              415:     62(ptr) AccessChain 37(data) 39 45 40
              416:  22(int8_t) Load 415
              417:   17(ivec4) Load 19(ballot)
-             418:  22(int8_t) GroupNonUniformIMul 177 PartitionedReduceNV 416 417
+             418:  22(int8_t) GroupNonUniformIAdd 177 PartitionedReduceNV 416 417
              419:     62(ptr) AccessChain 37(data) 414 45 40
                               Store 419 418
              420:      6(int) Load 8(invocation)
@@ -551,577 +567,614 @@
              422:  23(i8vec4) Load 421
              423:  66(i8vec2) VectorShuffle 422 422 0 1
              424:   17(ivec4) Load 19(ballot)
-             425:  66(i8vec2) GroupNonUniformIMul 177 PartitionedReduceNV 423 424
-             426:     67(ptr) AccessChain 37(data) 420 45
-             427:  23(i8vec4) Load 426
-             428:  23(i8vec4) VectorShuffle 427 425 4 5 2 3
-                              Store 426 428
-             429:      6(int) Load 8(invocation)
-             430:     67(ptr) AccessChain 37(data) 52 45
-             431:  23(i8vec4) Load 430
-             432:  72(i8vec3) VectorShuffle 431 431 0 1 2
-             433:   17(ivec4) Load 19(ballot)
-             434:  72(i8vec3) GroupNonUniformIMul 177 PartitionedReduceNV 432 433
-             435:     67(ptr) AccessChain 37(data) 429 45
-             436:  23(i8vec4) Load 435
-             437:  23(i8vec4) VectorShuffle 436 434 4 5 6 3
-                              Store 435 437
-             438:      6(int) Load 8(invocation)
-             439:     67(ptr) AccessChain 37(data) 58 45
-             440:  23(i8vec4) Load 439
-             441:   17(ivec4) Load 19(ballot)
-             442:  23(i8vec4) GroupNonUniformIMul 177 PartitionedReduceNV 440 441
-             443:     67(ptr) AccessChain 37(data) 438 45
-                              Store 443 442
-             444:      6(int) Load 8(invocation)
-             445:     62(ptr) AccessChain 37(data) 39 45 40
-             446:  22(int8_t) Load 445
-             447:   17(ivec4) Load 19(ballot)
-             448:  22(int8_t) GroupNonUniformUMin 177 PartitionedReduceNV 446 447
-             449:     62(ptr) AccessChain 37(data) 444 45 40
-                              Store 449 448
-             450:      6(int) Load 8(invocation)
-             451:     67(ptr) AccessChain 37(data) 45 45
-             452:  23(i8vec4) Load 451
-             453:  66(i8vec2) VectorShuffle 452 452 0 1
-             454:   17(ivec4) Load 19(ballot)
-             455:  66(i8vec2) GroupNonUniformUMin 177 PartitionedReduceNV 453 454
-             456:     67(ptr) AccessChain 37(data) 450 45
-             457:  23(i8vec4) Load 456
-             458:  23(i8vec4) VectorShuffle 457 455 4 5 2 3
-                              Store 456 458
-             459:      6(int) Load 8(invocation)
-             460:     67(ptr) AccessChain 37(data) 52 45
-             461:  23(i8vec4) Load 460
-             462:  72(i8vec3) VectorShuffle 461 461 0 1 2
-             463:   17(ivec4) Load 19(ballot)
-             464:  72(i8vec3) GroupNonUniformUMin 177 PartitionedReduceNV 462 463
-             465:     67(ptr) AccessChain 37(data) 459 45
+             425:  66(i8vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 423 424
+             426:     62(ptr) AccessChain 37(data) 420 45 40
+             427:  22(int8_t) CompositeExtract 425 0
+                              Store 426 427
+             428:     62(ptr) AccessChain 37(data) 420 45 188
+             429:  22(int8_t) CompositeExtract 425 1
+                              Store 428 429
+             430:      6(int) Load 8(invocation)
+             431:     67(ptr) AccessChain 37(data) 52 45
+             432:  23(i8vec4) Load 431
+             433:  72(i8vec3) VectorShuffle 432 432 0 1 2
+             434:   17(ivec4) Load 19(ballot)
+             435:  72(i8vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 433 434
+             436:     62(ptr) AccessChain 37(data) 430 45 40
+             437:  22(int8_t) CompositeExtract 435 0
+                              Store 436 437
+             438:     62(ptr) AccessChain 37(data) 430 45 188
+             439:  22(int8_t) CompositeExtract 435 1
+                              Store 438 439
+             440:     62(ptr) AccessChain 37(data) 430 45 201
+             441:  22(int8_t) CompositeExtract 435 2
+                              Store 440 441
+             442:      6(int) Load 8(invocation)
+             443:     67(ptr) AccessChain 37(data) 58 45
+             444:  23(i8vec4) Load 443
+             445:   17(ivec4) Load 19(ballot)
+             446:  23(i8vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 444 445
+             447:     67(ptr) AccessChain 37(data) 442 45
+                              Store 447 446
+             448:      6(int) Load 8(invocation)
+             449:     62(ptr) AccessChain 37(data) 39 45 40
+             450:  22(int8_t) Load 449
+             451:   17(ivec4) Load 19(ballot)
+             452:  22(int8_t) GroupNonUniformIMul 177 PartitionedReduceNV 450 451
+             453:     62(ptr) AccessChain 37(data) 448 45 40
+                              Store 453 452
+             454:      6(int) Load 8(invocation)
+             455:     67(ptr) AccessChain 37(data) 45 45
+             456:  23(i8vec4) Load 455
+             457:  66(i8vec2) VectorShuffle 456 456 0 1
+             458:   17(ivec4) Load 19(ballot)
+             459:  66(i8vec2) GroupNonUniformIMul 177 PartitionedReduceNV 457 458
+             460:     62(ptr) AccessChain 37(data) 454 45 40
+             461:  22(int8_t) CompositeExtract 459 0
+                              Store 460 461
+             462:     62(ptr) AccessChain 37(data) 454 45 188
+             463:  22(int8_t) CompositeExtract 459 1
+                              Store 462 463
+             464:      6(int) Load 8(invocation)
+             465:     67(ptr) AccessChain 37(data) 52 45
              466:  23(i8vec4) Load 465
-             467:  23(i8vec4) VectorShuffle 466 464 4 5 6 3
-                              Store 465 467
-             468:      6(int) Load 8(invocation)
-             469:     67(ptr) AccessChain 37(data) 58 45
-             470:  23(i8vec4) Load 469
-             471:   17(ivec4) Load 19(ballot)
-             472:  23(i8vec4) GroupNonUniformUMin 177 PartitionedReduceNV 470 471
-             473:     67(ptr) AccessChain 37(data) 468 45
-                              Store 473 472
-             474:      6(int) Load 8(invocation)
-             475:     62(ptr) AccessChain 37(data) 39 45 40
-             476:  22(int8_t) Load 475
-             477:   17(ivec4) Load 19(ballot)
-             478:  22(int8_t) GroupNonUniformUMax 177 PartitionedReduceNV 476 477
-             479:     62(ptr) AccessChain 37(data) 474 45 40
-                              Store 479 478
-             480:      6(int) Load 8(invocation)
-             481:     67(ptr) AccessChain 37(data) 45 45
-             482:  23(i8vec4) Load 481
-             483:  66(i8vec2) VectorShuffle 482 482 0 1
-             484:   17(ivec4) Load 19(ballot)
-             485:  66(i8vec2) GroupNonUniformUMax 177 PartitionedReduceNV 483 484
-             486:     67(ptr) AccessChain 37(data) 480 45
-             487:  23(i8vec4) Load 486
-             488:  23(i8vec4) VectorShuffle 487 485 4 5 2 3
-                              Store 486 488
-             489:      6(int) Load 8(invocation)
-             490:     67(ptr) AccessChain 37(data) 52 45
-             491:  23(i8vec4) Load 490
-             492:  72(i8vec3) VectorShuffle 491 491 0 1 2
-             493:   17(ivec4) Load 19(ballot)
-             494:  72(i8vec3) GroupNonUniformUMax 177 PartitionedReduceNV 492 493
-             495:     67(ptr) AccessChain 37(data) 489 45
-             496:  23(i8vec4) Load 495
-             497:  23(i8vec4) VectorShuffle 496 494 4 5 6 3
-                              Store 495 497
+             467:  72(i8vec3) VectorShuffle 466 466 0 1 2
+             468:   17(ivec4) Load 19(ballot)
+             469:  72(i8vec3) GroupNonUniformIMul 177 PartitionedReduceNV 467 468
+             470:     62(ptr) AccessChain 37(data) 464 45 40
+             471:  22(int8_t) CompositeExtract 469 0
+                              Store 470 471
+             472:     62(ptr) AccessChain 37(data) 464 45 188
+             473:  22(int8_t) CompositeExtract 469 1
+                              Store 472 473
+             474:     62(ptr) AccessChain 37(data) 464 45 201
+             475:  22(int8_t) CompositeExtract 469 2
+                              Store 474 475
+             476:      6(int) Load 8(invocation)
+             477:     67(ptr) AccessChain 37(data) 58 45
+             478:  23(i8vec4) Load 477
+             479:   17(ivec4) Load 19(ballot)
+             480:  23(i8vec4) GroupNonUniformIMul 177 PartitionedReduceNV 478 479
+             481:     67(ptr) AccessChain 37(data) 476 45
+                              Store 481 480
+             482:      6(int) Load 8(invocation)
+             483:     62(ptr) AccessChain 37(data) 39 45 40
+             484:  22(int8_t) Load 483
+             485:   17(ivec4) Load 19(ballot)
+             486:  22(int8_t) GroupNonUniformUMin 177 PartitionedReduceNV 484 485
+             487:     62(ptr) AccessChain 37(data) 482 45 40
+                              Store 487 486
+             488:      6(int) Load 8(invocation)
+             489:     67(ptr) AccessChain 37(data) 45 45
+             490:  23(i8vec4) Load 489
+             491:  66(i8vec2) VectorShuffle 490 490 0 1
+             492:   17(ivec4) Load 19(ballot)
+             493:  66(i8vec2) GroupNonUniformUMin 177 PartitionedReduceNV 491 492
+             494:     62(ptr) AccessChain 37(data) 488 45 40
+             495:  22(int8_t) CompositeExtract 493 0
+                              Store 494 495
+             496:     62(ptr) AccessChain 37(data) 488 45 188
+             497:  22(int8_t) CompositeExtract 493 1
+                              Store 496 497
              498:      6(int) Load 8(invocation)
-             499:     67(ptr) AccessChain 37(data) 58 45
+             499:     67(ptr) AccessChain 37(data) 52 45
              500:  23(i8vec4) Load 499
-             501:   17(ivec4) Load 19(ballot)
-             502:  23(i8vec4) GroupNonUniformUMax 177 PartitionedReduceNV 500 501
-             503:     67(ptr) AccessChain 37(data) 498 45
-                              Store 503 502
-             504:      6(int) Load 8(invocation)
-             505:     62(ptr) AccessChain 37(data) 39 45 40
-             506:  22(int8_t) Load 505
-             507:   17(ivec4) Load 19(ballot)
-             508:  22(int8_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 506 507
-             509:     62(ptr) AccessChain 37(data) 504 45 40
-                              Store 509 508
+             501:  72(i8vec3) VectorShuffle 500 500 0 1 2
+             502:   17(ivec4) Load 19(ballot)
+             503:  72(i8vec3) GroupNonUniformUMin 177 PartitionedReduceNV 501 502
+             504:     62(ptr) AccessChain 37(data) 498 45 40
+             505:  22(int8_t) CompositeExtract 503 0
+                              Store 504 505
+             506:     62(ptr) AccessChain 37(data) 498 45 188
+             507:  22(int8_t) CompositeExtract 503 1
+                              Store 506 507
+             508:     62(ptr) AccessChain 37(data) 498 45 201
+             509:  22(int8_t) CompositeExtract 503 2
+                              Store 508 509
              510:      6(int) Load 8(invocation)
-             511:     67(ptr) AccessChain 37(data) 45 45
+             511:     67(ptr) AccessChain 37(data) 58 45
              512:  23(i8vec4) Load 511
-             513:  66(i8vec2) VectorShuffle 512 512 0 1
-             514:   17(ivec4) Load 19(ballot)
-             515:  66(i8vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 513 514
-             516:     67(ptr) AccessChain 37(data) 510 45
-             517:  23(i8vec4) Load 516
-             518:  23(i8vec4) VectorShuffle 517 515 4 5 2 3
-                              Store 516 518
-             519:      6(int) Load 8(invocation)
-             520:     67(ptr) AccessChain 37(data) 52 45
-             521:  23(i8vec4) Load 520
-             522:  72(i8vec3) VectorShuffle 521 521 0 1 2
-             523:   17(ivec4) Load 19(ballot)
-             524:  72(i8vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 522 523
-             525:     67(ptr) AccessChain 37(data) 519 45
-             526:  23(i8vec4) Load 525
-             527:  23(i8vec4) VectorShuffle 526 524 4 5 6 3
-                              Store 525 527
-             528:      6(int) Load 8(invocation)
-             529:     67(ptr) AccessChain 37(data) 58 45
-             530:  23(i8vec4) Load 529
-             531:   17(ivec4) Load 19(ballot)
-             532:  23(i8vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 530 531
-             533:     67(ptr) AccessChain 37(data) 528 45
-                              Store 533 532
-             534:      6(int) Load 8(invocation)
-             535:     62(ptr) AccessChain 37(data) 39 45 40
-             536:  22(int8_t) Load 535
-             537:   17(ivec4) Load 19(ballot)
-             538:  22(int8_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 536 537
-             539:     62(ptr) AccessChain 37(data) 534 45 40
-                              Store 539 538
-             540:      6(int) Load 8(invocation)
-             541:     67(ptr) AccessChain 37(data) 45 45
-             542:  23(i8vec4) Load 541
-             543:  66(i8vec2) VectorShuffle 542 542 0 1
-             544:   17(ivec4) Load 19(ballot)
-             545:  66(i8vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 543 544
-             546:     67(ptr) AccessChain 37(data) 540 45
-             547:  23(i8vec4) Load 546
-             548:  23(i8vec4) VectorShuffle 547 545 4 5 2 3
-                              Store 546 548
-             549:      6(int) Load 8(invocation)
-             550:     67(ptr) AccessChain 37(data) 52 45
-             551:  23(i8vec4) Load 550
-             552:  72(i8vec3) VectorShuffle 551 551 0 1 2
+             513:   17(ivec4) Load 19(ballot)
+             514:  23(i8vec4) GroupNonUniformUMin 177 PartitionedReduceNV 512 513
+             515:     67(ptr) AccessChain 37(data) 510 45
+                              Store 515 514
+             516:      6(int) Load 8(invocation)
+             517:     62(ptr) AccessChain 37(data) 39 45 40
+             518:  22(int8_t) Load 517
+             519:   17(ivec4) Load 19(ballot)
+             520:  22(int8_t) GroupNonUniformUMax 177 PartitionedReduceNV 518 519
+             521:     62(ptr) AccessChain 37(data) 516 45 40
+                              Store 521 520
+             522:      6(int) Load 8(invocation)
+             523:     67(ptr) AccessChain 37(data) 45 45
+             524:  23(i8vec4) Load 523
+             525:  66(i8vec2) VectorShuffle 524 524 0 1
+             526:   17(ivec4) Load 19(ballot)
+             527:  66(i8vec2) GroupNonUniformUMax 177 PartitionedReduceNV 525 526
+             528:     62(ptr) AccessChain 37(data) 522 45 40
+             529:  22(int8_t) CompositeExtract 527 0
+                              Store 528 529
+             530:     62(ptr) AccessChain 37(data) 522 45 188
+             531:  22(int8_t) CompositeExtract 527 1
+                              Store 530 531
+             532:      6(int) Load 8(invocation)
+             533:     67(ptr) AccessChain 37(data) 52 45
+             534:  23(i8vec4) Load 533
+             535:  72(i8vec3) VectorShuffle 534 534 0 1 2
+             536:   17(ivec4) Load 19(ballot)
+             537:  72(i8vec3) GroupNonUniformUMax 177 PartitionedReduceNV 535 536
+             538:     62(ptr) AccessChain 37(data) 532 45 40
+             539:  22(int8_t) CompositeExtract 537 0
+                              Store 538 539
+             540:     62(ptr) AccessChain 37(data) 532 45 188
+             541:  22(int8_t) CompositeExtract 537 1
+                              Store 540 541
+             542:     62(ptr) AccessChain 37(data) 532 45 201
+             543:  22(int8_t) CompositeExtract 537 2
+                              Store 542 543
+             544:      6(int) Load 8(invocation)
+             545:     67(ptr) AccessChain 37(data) 58 45
+             546:  23(i8vec4) Load 545
+             547:   17(ivec4) Load 19(ballot)
+             548:  23(i8vec4) GroupNonUniformUMax 177 PartitionedReduceNV 546 547
+             549:     67(ptr) AccessChain 37(data) 544 45
+                              Store 549 548
+             550:      6(int) Load 8(invocation)
+             551:     62(ptr) AccessChain 37(data) 39 45 40
+             552:  22(int8_t) Load 551
              553:   17(ivec4) Load 19(ballot)
-             554:  72(i8vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 552 553
-             555:     67(ptr) AccessChain 37(data) 549 45
-             556:  23(i8vec4) Load 555
-             557:  23(i8vec4) VectorShuffle 556 554 4 5 6 3
-                              Store 555 557
-             558:      6(int) Load 8(invocation)
-             559:     67(ptr) AccessChain 37(data) 58 45
-             560:  23(i8vec4) Load 559
-             561:   17(ivec4) Load 19(ballot)
-             562:  23(i8vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 560 561
-             563:     67(ptr) AccessChain 37(data) 558 45
-                              Store 563 562
-             564:      6(int) Load 8(invocation)
-             565:     62(ptr) AccessChain 37(data) 39 45 40
-             566:  22(int8_t) Load 565
-             567:   17(ivec4) Load 19(ballot)
-             568:  22(int8_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 566 567
-             569:     62(ptr) AccessChain 37(data) 564 45 40
-                              Store 569 568
-             570:      6(int) Load 8(invocation)
-             571:     67(ptr) AccessChain 37(data) 45 45
-             572:  23(i8vec4) Load 571
-             573:  66(i8vec2) VectorShuffle 572 572 0 1
-             574:   17(ivec4) Load 19(ballot)
-             575:  66(i8vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 573 574
-             576:     67(ptr) AccessChain 37(data) 570 45
-             577:  23(i8vec4) Load 576
-             578:  23(i8vec4) VectorShuffle 577 575 4 5 2 3
-                              Store 576 578
-             579:      6(int) Load 8(invocation)
-             580:     67(ptr) AccessChain 37(data) 52 45
-             581:  23(i8vec4) Load 580
-             582:  72(i8vec3) VectorShuffle 581 581 0 1 2
-             583:   17(ivec4) Load 19(ballot)
-             584:  72(i8vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 582 583
-             585:     67(ptr) AccessChain 37(data) 579 45
-             586:  23(i8vec4) Load 585
-             587:  23(i8vec4) VectorShuffle 586 584 4 5 6 3
-                              Store 585 587
-             588:      6(int) Load 8(invocation)
-             589:     67(ptr) AccessChain 37(data) 58 45
-             590:  23(i8vec4) Load 589
-             591:   17(ivec4) Load 19(ballot)
-             592:  23(i8vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 590 591
-             593:     67(ptr) AccessChain 37(data) 588 45
-                              Store 593 592
-             594:      6(int) Load 8(invocation)
-             595:     80(ptr) AccessChain 37(data) 39 52 40
-             596: 24(int16_t) Load 595
-             597:   17(ivec4) Load 19(ballot)
-             598: 24(int16_t) GroupNonUniformIAdd 177 PartitionedReduceNV 596 597
-             599:     80(ptr) AccessChain 37(data) 594 52 40
-                              Store 599 598
+             554:  22(int8_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 552 553
+             555:     62(ptr) AccessChain 37(data) 550 45 40
+                              Store 555 554
+             556:      6(int) Load 8(invocation)
+             557:     67(ptr) AccessChain 37(data) 45 45
+             558:  23(i8vec4) Load 557
+             559:  66(i8vec2) VectorShuffle 558 558 0 1
+             560:   17(ivec4) Load 19(ballot)
+             561:  66(i8vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 559 560
+             562:     62(ptr) AccessChain 37(data) 556 45 40
+             563:  22(int8_t) CompositeExtract 561 0
+                              Store 562 563
+             564:     62(ptr) AccessChain 37(data) 556 45 188
+             565:  22(int8_t) CompositeExtract 561 1
+                              Store 564 565
+             566:      6(int) Load 8(invocation)
+             567:     67(ptr) AccessChain 37(data) 52 45
+             568:  23(i8vec4) Load 567
+             569:  72(i8vec3) VectorShuffle 568 568 0 1 2
+             570:   17(ivec4) Load 19(ballot)
+             571:  72(i8vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 569 570
+             572:     62(ptr) AccessChain 37(data) 566 45 40
+             573:  22(int8_t) CompositeExtract 571 0
+                              Store 572 573
+             574:     62(ptr) AccessChain 37(data) 566 45 188
+             575:  22(int8_t) CompositeExtract 571 1
+                              Store 574 575
+             576:     62(ptr) AccessChain 37(data) 566 45 201
+             577:  22(int8_t) CompositeExtract 571 2
+                              Store 576 577
+             578:      6(int) Load 8(invocation)
+             579:     67(ptr) AccessChain 37(data) 58 45
+             580:  23(i8vec4) Load 579
+             581:   17(ivec4) Load 19(ballot)
+             582:  23(i8vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 580 581
+             583:     67(ptr) AccessChain 37(data) 578 45
+                              Store 583 582
+             584:      6(int) Load 8(invocation)
+             585:     62(ptr) AccessChain 37(data) 39 45 40
+             586:  22(int8_t) Load 585
+             587:   17(ivec4) Load 19(ballot)
+             588:  22(int8_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 586 587
+             589:     62(ptr) AccessChain 37(data) 584 45 40
+                              Store 589 588
+             590:      6(int) Load 8(invocation)
+             591:     67(ptr) AccessChain 37(data) 45 45
+             592:  23(i8vec4) Load 591
+             593:  66(i8vec2) VectorShuffle 592 592 0 1
+             594:   17(ivec4) Load 19(ballot)
+             595:  66(i8vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 593 594
+             596:     62(ptr) AccessChain 37(data) 590 45 40
+             597:  22(int8_t) CompositeExtract 595 0
+                              Store 596 597
+             598:     62(ptr) AccessChain 37(data) 590 45 188
+             599:  22(int8_t) CompositeExtract 595 1
+                              Store 598 599
              600:      6(int) Load 8(invocation)
-             601:     85(ptr) AccessChain 37(data) 45 52
-             602: 25(i16vec4) Load 601
-             603: 84(i16vec2) VectorShuffle 602 602 0 1
+             601:     67(ptr) AccessChain 37(data) 52 45
+             602:  23(i8vec4) Load 601
+             603:  72(i8vec3) VectorShuffle 602 602 0 1 2
              604:   17(ivec4) Load 19(ballot)
-             605: 84(i16vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 603 604
-             606:     85(ptr) AccessChain 37(data) 600 52
-             607: 25(i16vec4) Load 606
-             608: 25(i16vec4) VectorShuffle 607 605 4 5 2 3
-                              Store 606 608
-             609:      6(int) Load 8(invocation)
-             610:     85(ptr) AccessChain 37(data) 52 52
-             611: 25(i16vec4) Load 610
-             612: 90(i16vec3) VectorShuffle 611 611 0 1 2
-             613:   17(ivec4) Load 19(ballot)
-             614: 90(i16vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 612 613
-             615:     85(ptr) AccessChain 37(data) 609 52
-             616: 25(i16vec4) Load 615
-             617: 25(i16vec4) VectorShuffle 616 614 4 5 6 3
-                              Store 615 617
+             605:  72(i8vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 603 604
+             606:     62(ptr) AccessChain 37(data) 600 45 40
+             607:  22(int8_t) CompositeExtract 605 0
+                              Store 606 607
+             608:     62(ptr) AccessChain 37(data) 600 45 188
+             609:  22(int8_t) CompositeExtract 605 1
+                              Store 608 609
+             610:     62(ptr) AccessChain 37(data) 600 45 201
+             611:  22(int8_t) CompositeExtract 605 2
+                              Store 610 611
+             612:      6(int) Load 8(invocation)
+             613:     67(ptr) AccessChain 37(data) 58 45
+             614:  23(i8vec4) Load 613
+             615:   17(ivec4) Load 19(ballot)
+             616:  23(i8vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 614 615
+             617:     67(ptr) AccessChain 37(data) 612 45
+                              Store 617 616
              618:      6(int) Load 8(invocation)
-             619:     85(ptr) AccessChain 37(data) 58 52
-             620: 25(i16vec4) Load 619
+             619:     62(ptr) AccessChain 37(data) 39 45 40
+             620:  22(int8_t) Load 619
              621:   17(ivec4) Load 19(ballot)
-             622: 25(i16vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 620 621
-             623:     85(ptr) AccessChain 37(data) 618 52
+             622:  22(int8_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 620 621
+             623:     62(ptr) AccessChain 37(data) 618 45 40
                               Store 623 622
              624:      6(int) Load 8(invocation)
-             625:     80(ptr) AccessChain 37(data) 39 52 40
-             626: 24(int16_t) Load 625
-             627:   17(ivec4) Load 19(ballot)
-             628: 24(int16_t) GroupNonUniformIMul 177 PartitionedReduceNV 626 627
-             629:     80(ptr) AccessChain 37(data) 624 52 40
-                              Store 629 628
-             630:      6(int) Load 8(invocation)
-             631:     85(ptr) AccessChain 37(data) 45 52
-             632: 25(i16vec4) Load 631
-             633: 84(i16vec2) VectorShuffle 632 632 0 1
-             634:   17(ivec4) Load 19(ballot)
-             635: 84(i16vec2) GroupNonUniformIMul 177 PartitionedReduceNV 633 634
-             636:     85(ptr) AccessChain 37(data) 630 52
-             637: 25(i16vec4) Load 636
-             638: 25(i16vec4) VectorShuffle 637 635 4 5 2 3
-                              Store 636 638
-             639:      6(int) Load 8(invocation)
-             640:     85(ptr) AccessChain 37(data) 52 52
-             641: 25(i16vec4) Load 640
-             642: 90(i16vec3) VectorShuffle 641 641 0 1 2
-             643:   17(ivec4) Load 19(ballot)
-             644: 90(i16vec3) GroupNonUniformIMul 177 PartitionedReduceNV 642 643
-             645:     85(ptr) AccessChain 37(data) 639 52
-             646: 25(i16vec4) Load 645
-             647: 25(i16vec4) VectorShuffle 646 644 4 5 6 3
-                              Store 645 647
-             648:      6(int) Load 8(invocation)
-             649:     85(ptr) AccessChain 37(data) 58 52
-             650: 25(i16vec4) Load 649
-             651:   17(ivec4) Load 19(ballot)
-             652: 25(i16vec4) GroupNonUniformIMul 177 PartitionedReduceNV 650 651
-             653:     85(ptr) AccessChain 37(data) 648 52
-                              Store 653 652
-             654:      6(int) Load 8(invocation)
-             655:     80(ptr) AccessChain 37(data) 39 52 40
-             656: 24(int16_t) Load 655
-             657:   17(ivec4) Load 19(ballot)
-             658: 24(int16_t) GroupNonUniformSMin 177 PartitionedReduceNV 656 657
-             659:     80(ptr) AccessChain 37(data) 654 52 40
-                              Store 659 658
-             660:      6(int) Load 8(invocation)
-             661:     85(ptr) AccessChain 37(data) 45 52
-             662: 25(i16vec4) Load 661
-             663: 84(i16vec2) VectorShuffle 662 662 0 1
-             664:   17(ivec4) Load 19(ballot)
-             665: 84(i16vec2) GroupNonUniformSMin 177 PartitionedReduceNV 663 664
-             666:     85(ptr) AccessChain 37(data) 660 52
-             667: 25(i16vec4) Load 666
-             668: 25(i16vec4) VectorShuffle 667 665 4 5 2 3
-                              Store 666 668
-             669:      6(int) Load 8(invocation)
-             670:     85(ptr) AccessChain 37(data) 52 52
-             671: 25(i16vec4) Load 670
-             672: 90(i16vec3) VectorShuffle 671 671 0 1 2
-             673:   17(ivec4) Load 19(ballot)
-             674: 90(i16vec3) GroupNonUniformSMin 177 PartitionedReduceNV 672 673
-             675:     85(ptr) AccessChain 37(data) 669 52
-             676: 25(i16vec4) Load 675
-             677: 25(i16vec4) VectorShuffle 676 674 4 5 6 3
-                              Store 675 677
-             678:      6(int) Load 8(invocation)
-             679:     85(ptr) AccessChain 37(data) 58 52
-             680: 25(i16vec4) Load 679
-             681:   17(ivec4) Load 19(ballot)
-             682: 25(i16vec4) GroupNonUniformSMin 177 PartitionedReduceNV 680 681
-             683:     85(ptr) AccessChain 37(data) 678 52
-                              Store 683 682
-             684:      6(int) Load 8(invocation)
-             685:     80(ptr) AccessChain 37(data) 39 52 40
-             686: 24(int16_t) Load 685
-             687:   17(ivec4) Load 19(ballot)
-             688: 24(int16_t) GroupNonUniformSMax 177 PartitionedReduceNV 686 687
-             689:     80(ptr) AccessChain 37(data) 684 52 40
-                              Store 689 688
-             690:      6(int) Load 8(invocation)
-             691:     85(ptr) AccessChain 37(data) 45 52
-             692: 25(i16vec4) Load 691
-             693: 84(i16vec2) VectorShuffle 692 692 0 1
-             694:   17(ivec4) Load 19(ballot)
-             695: 84(i16vec2) GroupNonUniformSMax 177 PartitionedReduceNV 693 694
-             696:     85(ptr) AccessChain 37(data) 690 52
-             697: 25(i16vec4) Load 696
-             698: 25(i16vec4) VectorShuffle 697 695 4 5 2 3
-                              Store 696 698
-             699:      6(int) Load 8(invocation)
-             700:     85(ptr) AccessChain 37(data) 52 52
-             701: 25(i16vec4) Load 700
-             702: 90(i16vec3) VectorShuffle 701 701 0 1 2
-             703:   17(ivec4) Load 19(ballot)
-             704: 90(i16vec3) GroupNonUniformSMax 177 PartitionedReduceNV 702 703
-             705:     85(ptr) AccessChain 37(data) 699 52
-             706: 25(i16vec4) Load 705
-             707: 25(i16vec4) VectorShuffle 706 704 4 5 6 3
-                              Store 705 707
-             708:      6(int) Load 8(invocation)
-             709:     85(ptr) AccessChain 37(data) 58 52
-             710: 25(i16vec4) Load 709
-             711:   17(ivec4) Load 19(ballot)
-             712: 25(i16vec4) GroupNonUniformSMax 177 PartitionedReduceNV 710 711
-             713:     85(ptr) AccessChain 37(data) 708 52
-                              Store 713 712
+             625:     67(ptr) AccessChain 37(data) 45 45
+             626:  23(i8vec4) Load 625
+             627:  66(i8vec2) VectorShuffle 626 626 0 1
+             628:   17(ivec4) Load 19(ballot)
+             629:  66(i8vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 627 628
+             630:     62(ptr) AccessChain 37(data) 624 45 40
+             631:  22(int8_t) CompositeExtract 629 0
+                              Store 630 631
+             632:     62(ptr) AccessChain 37(data) 624 45 188
+             633:  22(int8_t) CompositeExtract 629 1
+                              Store 632 633
+             634:      6(int) Load 8(invocation)
+             635:     67(ptr) AccessChain 37(data) 52 45
+             636:  23(i8vec4) Load 635
+             637:  72(i8vec3) VectorShuffle 636 636 0 1 2
+             638:   17(ivec4) Load 19(ballot)
+             639:  72(i8vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 637 638
+             640:     62(ptr) AccessChain 37(data) 634 45 40
+             641:  22(int8_t) CompositeExtract 639 0
+                              Store 640 641
+             642:     62(ptr) AccessChain 37(data) 634 45 188
+             643:  22(int8_t) CompositeExtract 639 1
+                              Store 642 643
+             644:     62(ptr) AccessChain 37(data) 634 45 201
+             645:  22(int8_t) CompositeExtract 639 2
+                              Store 644 645
+             646:      6(int) Load 8(invocation)
+             647:     67(ptr) AccessChain 37(data) 58 45
+             648:  23(i8vec4) Load 647
+             649:   17(ivec4) Load 19(ballot)
+             650:  23(i8vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 648 649
+             651:     67(ptr) AccessChain 37(data) 646 45
+                              Store 651 650
+             652:      6(int) Load 8(invocation)
+             653:     80(ptr) AccessChain 37(data) 39 52 40
+             654: 24(int16_t) Load 653
+             655:   17(ivec4) Load 19(ballot)
+             656: 24(int16_t) GroupNonUniformIAdd 177 PartitionedReduceNV 654 655
+             657:     80(ptr) AccessChain 37(data) 652 52 40
+                              Store 657 656
+             658:      6(int) Load 8(invocation)
+             659:     85(ptr) AccessChain 37(data) 45 52
+             660: 25(i16vec4) Load 659
+             661: 84(i16vec2) VectorShuffle 660 660 0 1
+             662:   17(ivec4) Load 19(ballot)
+             663: 84(i16vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 661 662
+             664:     80(ptr) AccessChain 37(data) 658 52 40
+             665: 24(int16_t) CompositeExtract 663 0
+                              Store 664 665
+             666:     80(ptr) AccessChain 37(data) 658 52 188
+             667: 24(int16_t) CompositeExtract 663 1
+                              Store 666 667
+             668:      6(int) Load 8(invocation)
+             669:     85(ptr) AccessChain 37(data) 52 52
+             670: 25(i16vec4) Load 669
+             671: 90(i16vec3) VectorShuffle 670 670 0 1 2
+             672:   17(ivec4) Load 19(ballot)
+             673: 90(i16vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 671 672
+             674:     80(ptr) AccessChain 37(data) 668 52 40
+             675: 24(int16_t) CompositeExtract 673 0
+                              Store 674 675
+             676:     80(ptr) AccessChain 37(data) 668 52 188
+             677: 24(int16_t) CompositeExtract 673 1
+                              Store 676 677
+             678:     80(ptr) AccessChain 37(data) 668 52 201
+             679: 24(int16_t) CompositeExtract 673 2
+                              Store 678 679
+             680:      6(int) Load 8(invocation)
+             681:     85(ptr) AccessChain 37(data) 58 52
+             682: 25(i16vec4) Load 681
+             683:   17(ivec4) Load 19(ballot)
+             684: 25(i16vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 682 683
+             685:     85(ptr) AccessChain 37(data) 680 52
+                              Store 685 684
+             686:      6(int) Load 8(invocation)
+             687:     80(ptr) AccessChain 37(data) 39 52 40
+             688: 24(int16_t) Load 687
+             689:   17(ivec4) Load 19(ballot)
+             690: 24(int16_t) GroupNonUniformIMul 177 PartitionedReduceNV 688 689
+             691:     80(ptr) AccessChain 37(data) 686 52 40
+                              Store 691 690
+             692:      6(int) Load 8(invocation)
+             693:     85(ptr) AccessChain 37(data) 45 52
+             694: 25(i16vec4) Load 693
+             695: 84(i16vec2) VectorShuffle 694 694 0 1
+             696:   17(ivec4) Load 19(ballot)
+             697: 84(i16vec2) GroupNonUniformIMul 177 PartitionedReduceNV 695 696
+             698:     80(ptr) AccessChain 37(data) 692 52 40
+             699: 24(int16_t) CompositeExtract 697 0
+                              Store 698 699
+             700:     80(ptr) AccessChain 37(data) 692 52 188
+             701: 24(int16_t) CompositeExtract 697 1
+                              Store 700 701
+             702:      6(int) Load 8(invocation)
+             703:     85(ptr) AccessChain 37(data) 52 52
+             704: 25(i16vec4) Load 703
+             705: 90(i16vec3) VectorShuffle 704 704 0 1 2
+             706:   17(ivec4) Load 19(ballot)
+             707: 90(i16vec3) GroupNonUniformIMul 177 PartitionedReduceNV 705 706
+             708:     80(ptr) AccessChain 37(data) 702 52 40
+             709: 24(int16_t) CompositeExtract 707 0
+                              Store 708 709
+             710:     80(ptr) AccessChain 37(data) 702 52 188
+             711: 24(int16_t) CompositeExtract 707 1
+                              Store 710 711
+             712:     80(ptr) AccessChain 37(data) 702 52 201
+             713: 24(int16_t) CompositeExtract 707 2
+                              Store 712 713
              714:      6(int) Load 8(invocation)
-             715:     80(ptr) AccessChain 37(data) 39 52 40
-             716: 24(int16_t) Load 715
+             715:     85(ptr) AccessChain 37(data) 58 52
+             716: 25(i16vec4) Load 715
              717:   17(ivec4) Load 19(ballot)
-             718: 24(int16_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 716 717
-             719:     80(ptr) AccessChain 37(data) 714 52 40
+             718: 25(i16vec4) GroupNonUniformIMul 177 PartitionedReduceNV 716 717
+             719:     85(ptr) AccessChain 37(data) 714 52
                               Store 719 718
              720:      6(int) Load 8(invocation)
-             721:     85(ptr) AccessChain 37(data) 45 52
-             722: 25(i16vec4) Load 721
-             723: 84(i16vec2) VectorShuffle 722 722 0 1
-             724:   17(ivec4) Load 19(ballot)
-             725: 84(i16vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 723 724
-             726:     85(ptr) AccessChain 37(data) 720 52
-             727: 25(i16vec4) Load 726
-             728: 25(i16vec4) VectorShuffle 727 725 4 5 2 3
-                              Store 726 728
-             729:      6(int) Load 8(invocation)
-             730:     85(ptr) AccessChain 37(data) 52 52
-             731: 25(i16vec4) Load 730
-             732: 90(i16vec3) VectorShuffle 731 731 0 1 2
-             733:   17(ivec4) Load 19(ballot)
-             734: 90(i16vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 732 733
-             735:     85(ptr) AccessChain 37(data) 729 52
-             736: 25(i16vec4) Load 735
-             737: 25(i16vec4) VectorShuffle 736 734 4 5 6 3
-                              Store 735 737
-             738:      6(int) Load 8(invocation)
-             739:     85(ptr) AccessChain 37(data) 58 52
-             740: 25(i16vec4) Load 739
-             741:   17(ivec4) Load 19(ballot)
-             742: 25(i16vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 740 741
-             743:     85(ptr) AccessChain 37(data) 738 52
-                              Store 743 742
-             744:      6(int) Load 8(invocation)
-             745:     80(ptr) AccessChain 37(data) 39 52 40
-             746: 24(int16_t) Load 745
-             747:   17(ivec4) Load 19(ballot)
-             748: 24(int16_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 746 747
-             749:     80(ptr) AccessChain 37(data) 744 52 40
-                              Store 749 748
-             750:      6(int) Load 8(invocation)
-             751:     85(ptr) AccessChain 37(data) 45 52
-             752: 25(i16vec4) Load 751
-             753: 84(i16vec2) VectorShuffle 752 752 0 1
-             754:   17(ivec4) Load 19(ballot)
-             755: 84(i16vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 753 754
-             756:     85(ptr) AccessChain 37(data) 750 52
-             757: 25(i16vec4) Load 756
-             758: 25(i16vec4) VectorShuffle 757 755 4 5 2 3
-                              Store 756 758
-             759:      6(int) Load 8(invocation)
-             760:     85(ptr) AccessChain 37(data) 52 52
-             761: 25(i16vec4) Load 760
-             762: 90(i16vec3) VectorShuffle 761 761 0 1 2
-             763:   17(ivec4) Load 19(ballot)
-             764: 90(i16vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 762 763
-             765:     85(ptr) AccessChain 37(data) 759 52
-             766: 25(i16vec4) Load 765
-             767: 25(i16vec4) VectorShuffle 766 764 4 5 6 3
-                              Store 765 767
-             768:      6(int) Load 8(invocation)
-             769:     85(ptr) AccessChain 37(data) 58 52
-             770: 25(i16vec4) Load 769
-             771:   17(ivec4) Load 19(ballot)
-             772: 25(i16vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 770 771
-             773:     85(ptr) AccessChain 37(data) 768 52
-                              Store 773 772
-             774:      6(int) Load 8(invocation)
-             775:     80(ptr) AccessChain 37(data) 39 52 40
-             776: 24(int16_t) Load 775
-             777:   17(ivec4) Load 19(ballot)
-             778: 24(int16_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 776 777
-             779:     80(ptr) AccessChain 37(data) 774 52 40
-                              Store 779 778
-             780:      6(int) Load 8(invocation)
-             781:     85(ptr) AccessChain 37(data) 45 52
-             782: 25(i16vec4) Load 781
-             783: 84(i16vec2) VectorShuffle 782 782 0 1
-             784:   17(ivec4) Load 19(ballot)
-             785: 84(i16vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 783 784
-             786:     85(ptr) AccessChain 37(data) 780 52
-             787: 25(i16vec4) Load 786
-             788: 25(i16vec4) VectorShuffle 787 785 4 5 2 3
-                              Store 786 788
-             789:      6(int) Load 8(invocation)
-             790:     85(ptr) AccessChain 37(data) 52 52
-             791: 25(i16vec4) Load 790
-             792: 90(i16vec3) VectorShuffle 791 791 0 1 2
-             793:   17(ivec4) Load 19(ballot)
-             794: 90(i16vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 792 793
-             795:     85(ptr) AccessChain 37(data) 789 52
+             721:     80(ptr) AccessChain 37(data) 39 52 40
+             722: 24(int16_t) Load 721
+             723:   17(ivec4) Load 19(ballot)
+             724: 24(int16_t) GroupNonUniformSMin 177 PartitionedReduceNV 722 723
+             725:     80(ptr) AccessChain 37(data) 720 52 40
+                              Store 725 724
+             726:      6(int) Load 8(invocation)
+             727:     85(ptr) AccessChain 37(data) 45 52
+             728: 25(i16vec4) Load 727
+             729: 84(i16vec2) VectorShuffle 728 728 0 1
+             730:   17(ivec4) Load 19(ballot)
+             731: 84(i16vec2) GroupNonUniformSMin 177 PartitionedReduceNV 729 730
+             732:     80(ptr) AccessChain 37(data) 726 52 40
+             733: 24(int16_t) CompositeExtract 731 0
+                              Store 732 733
+             734:     80(ptr) AccessChain 37(data) 726 52 188
+             735: 24(int16_t) CompositeExtract 731 1
+                              Store 734 735
+             736:      6(int) Load 8(invocation)
+             737:     85(ptr) AccessChain 37(data) 52 52
+             738: 25(i16vec4) Load 737
+             739: 90(i16vec3) VectorShuffle 738 738 0 1 2
+             740:   17(ivec4) Load 19(ballot)
+             741: 90(i16vec3) GroupNonUniformSMin 177 PartitionedReduceNV 739 740
+             742:     80(ptr) AccessChain 37(data) 736 52 40
+             743: 24(int16_t) CompositeExtract 741 0
+                              Store 742 743
+             744:     80(ptr) AccessChain 37(data) 736 52 188
+             745: 24(int16_t) CompositeExtract 741 1
+                              Store 744 745
+             746:     80(ptr) AccessChain 37(data) 736 52 201
+             747: 24(int16_t) CompositeExtract 741 2
+                              Store 746 747
+             748:      6(int) Load 8(invocation)
+             749:     85(ptr) AccessChain 37(data) 58 52
+             750: 25(i16vec4) Load 749
+             751:   17(ivec4) Load 19(ballot)
+             752: 25(i16vec4) GroupNonUniformSMin 177 PartitionedReduceNV 750 751
+             753:     85(ptr) AccessChain 37(data) 748 52
+                              Store 753 752
+             754:      6(int) Load 8(invocation)
+             755:     80(ptr) AccessChain 37(data) 39 52 40
+             756: 24(int16_t) Load 755
+             757:   17(ivec4) Load 19(ballot)
+             758: 24(int16_t) GroupNonUniformSMax 177 PartitionedReduceNV 756 757
+             759:     80(ptr) AccessChain 37(data) 754 52 40
+                              Store 759 758
+             760:      6(int) Load 8(invocation)
+             761:     85(ptr) AccessChain 37(data) 45 52
+             762: 25(i16vec4) Load 761
+             763: 84(i16vec2) VectorShuffle 762 762 0 1
+             764:   17(ivec4) Load 19(ballot)
+             765: 84(i16vec2) GroupNonUniformSMax 177 PartitionedReduceNV 763 764
+             766:     80(ptr) AccessChain 37(data) 760 52 40
+             767: 24(int16_t) CompositeExtract 765 0
+                              Store 766 767
+             768:     80(ptr) AccessChain 37(data) 760 52 188
+             769: 24(int16_t) CompositeExtract 765 1
+                              Store 768 769
+             770:      6(int) Load 8(invocation)
+             771:     85(ptr) AccessChain 37(data) 52 52
+             772: 25(i16vec4) Load 771
+             773: 90(i16vec3) VectorShuffle 772 772 0 1 2
+             774:   17(ivec4) Load 19(ballot)
+             775: 90(i16vec3) GroupNonUniformSMax 177 PartitionedReduceNV 773 774
+             776:     80(ptr) AccessChain 37(data) 770 52 40
+             777: 24(int16_t) CompositeExtract 775 0
+                              Store 776 777
+             778:     80(ptr) AccessChain 37(data) 770 52 188
+             779: 24(int16_t) CompositeExtract 775 1
+                              Store 778 779
+             780:     80(ptr) AccessChain 37(data) 770 52 201
+             781: 24(int16_t) CompositeExtract 775 2
+                              Store 780 781
+             782:      6(int) Load 8(invocation)
+             783:     85(ptr) AccessChain 37(data) 58 52
+             784: 25(i16vec4) Load 783
+             785:   17(ivec4) Load 19(ballot)
+             786: 25(i16vec4) GroupNonUniformSMax 177 PartitionedReduceNV 784 785
+             787:     85(ptr) AccessChain 37(data) 782 52
+                              Store 787 786
+             788:      6(int) Load 8(invocation)
+             789:     80(ptr) AccessChain 37(data) 39 52 40
+             790: 24(int16_t) Load 789
+             791:   17(ivec4) Load 19(ballot)
+             792: 24(int16_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 790 791
+             793:     80(ptr) AccessChain 37(data) 788 52 40
+                              Store 793 792
+             794:      6(int) Load 8(invocation)
+             795:     85(ptr) AccessChain 37(data) 45 52
              796: 25(i16vec4) Load 795
-             797: 25(i16vec4) VectorShuffle 796 794 4 5 6 3
-                              Store 795 797
-             798:      6(int) Load 8(invocation)
-             799:     85(ptr) AccessChain 37(data) 58 52
-             800: 25(i16vec4) Load 799
-             801:   17(ivec4) Load 19(ballot)
-             802: 25(i16vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 800 801
-             803:     85(ptr) AccessChain 37(data) 798 52
-                              Store 803 802
+             797: 84(i16vec2) VectorShuffle 796 796 0 1
+             798:   17(ivec4) Load 19(ballot)
+             799: 84(i16vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 797 798
+             800:     80(ptr) AccessChain 37(data) 794 52 40
+             801: 24(int16_t) CompositeExtract 799 0
+                              Store 800 801
+             802:     80(ptr) AccessChain 37(data) 794 52 188
+             803: 24(int16_t) CompositeExtract 799 1
+                              Store 802 803
              804:      6(int) Load 8(invocation)
-             805:     98(ptr) AccessChain 37(data) 39 58 40
-             806: 26(int16_t) Load 805
-             807:   17(ivec4) Load 19(ballot)
-             808: 26(int16_t) GroupNonUniformIAdd 177 PartitionedReduceNV 806 807
-             809:     98(ptr) AccessChain 37(data) 804 58 40
-                              Store 809 808
-             810:      6(int) Load 8(invocation)
-             811:    103(ptr) AccessChain 37(data) 45 58
-             812: 27(i16vec4) Load 811
-             813:102(i16vec2) VectorShuffle 812 812 0 1
-             814:   17(ivec4) Load 19(ballot)
-             815:102(i16vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 813 814
-             816:    103(ptr) AccessChain 37(data) 810 58
-             817: 27(i16vec4) Load 816
-             818: 27(i16vec4) VectorShuffle 817 815 4 5 2 3
-                              Store 816 818
-             819:      6(int) Load 8(invocation)
-             820:    103(ptr) AccessChain 37(data) 52 58
-             821: 27(i16vec4) Load 820
-             822:108(i16vec3) VectorShuffle 821 821 0 1 2
-             823:   17(ivec4) Load 19(ballot)
-             824:108(i16vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 822 823
-             825:    103(ptr) AccessChain 37(data) 819 58
-             826: 27(i16vec4) Load 825
-             827: 27(i16vec4) VectorShuffle 826 824 4 5 6 3
-                              Store 825 827
+             805:     85(ptr) AccessChain 37(data) 52 52
+             806: 25(i16vec4) Load 805
+             807: 90(i16vec3) VectorShuffle 806 806 0 1 2
+             808:   17(ivec4) Load 19(ballot)
+             809: 90(i16vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 807 808
+             810:     80(ptr) AccessChain 37(data) 804 52 40
+             811: 24(int16_t) CompositeExtract 809 0
+                              Store 810 811
+             812:     80(ptr) AccessChain 37(data) 804 52 188
+             813: 24(int16_t) CompositeExtract 809 1
+                              Store 812 813
+             814:     80(ptr) AccessChain 37(data) 804 52 201
+             815: 24(int16_t) CompositeExtract 809 2
+                              Store 814 815
+             816:      6(int) Load 8(invocation)
+             817:     85(ptr) AccessChain 37(data) 58 52
+             818: 25(i16vec4) Load 817
+             819:   17(ivec4) Load 19(ballot)
+             820: 25(i16vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 818 819
+             821:     85(ptr) AccessChain 37(data) 816 52
+                              Store 821 820
+             822:      6(int) Load 8(invocation)
+             823:     80(ptr) AccessChain 37(data) 39 52 40
+             824: 24(int16_t) Load 823
+             825:   17(ivec4) Load 19(ballot)
+             826: 24(int16_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 824 825
+             827:     80(ptr) AccessChain 37(data) 822 52 40
+                              Store 827 826
              828:      6(int) Load 8(invocation)
-             829:    103(ptr) AccessChain 37(data) 58 58
-             830: 27(i16vec4) Load 829
-             831:   17(ivec4) Load 19(ballot)
-             832: 27(i16vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 830 831
-             833:    103(ptr) AccessChain 37(data) 828 58
-                              Store 833 832
-             834:      6(int) Load 8(invocation)
-             835:     98(ptr) AccessChain 37(data) 39 58 40
-             836: 26(int16_t) Load 835
-             837:   17(ivec4) Load 19(ballot)
-             838: 26(int16_t) GroupNonUniformIMul 177 PartitionedReduceNV 836 837
-             839:     98(ptr) AccessChain 37(data) 834 58 40
-                              Store 839 838
-             840:      6(int) Load 8(invocation)
-             841:    103(ptr) AccessChain 37(data) 45 58
-             842: 27(i16vec4) Load 841
-             843:102(i16vec2) VectorShuffle 842 842 0 1
-             844:   17(ivec4) Load 19(ballot)
-             845:102(i16vec2) GroupNonUniformIMul 177 PartitionedReduceNV 843 844
-             846:    103(ptr) AccessChain 37(data) 840 58
-             847: 27(i16vec4) Load 846
-             848: 27(i16vec4) VectorShuffle 847 845 4 5 2 3
-                              Store 846 848
-             849:      6(int) Load 8(invocation)
-             850:    103(ptr) AccessChain 37(data) 52 58
-             851: 27(i16vec4) Load 850
-             852:108(i16vec3) VectorShuffle 851 851 0 1 2
+             829:     85(ptr) AccessChain 37(data) 45 52
+             830: 25(i16vec4) Load 829
+             831: 84(i16vec2) VectorShuffle 830 830 0 1
+             832:   17(ivec4) Load 19(ballot)
+             833: 84(i16vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 831 832
+             834:     80(ptr) AccessChain 37(data) 828 52 40
+             835: 24(int16_t) CompositeExtract 833 0
+                              Store 834 835
+             836:     80(ptr) AccessChain 37(data) 828 52 188
+             837: 24(int16_t) CompositeExtract 833 1
+                              Store 836 837
+             838:      6(int) Load 8(invocation)
+             839:     85(ptr) AccessChain 37(data) 52 52
+             840: 25(i16vec4) Load 839
+             841: 90(i16vec3) VectorShuffle 840 840 0 1 2
+             842:   17(ivec4) Load 19(ballot)
+             843: 90(i16vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 841 842
+             844:     80(ptr) AccessChain 37(data) 838 52 40
+             845: 24(int16_t) CompositeExtract 843 0
+                              Store 844 845
+             846:     80(ptr) AccessChain 37(data) 838 52 188
+             847: 24(int16_t) CompositeExtract 843 1
+                              Store 846 847
+             848:     80(ptr) AccessChain 37(data) 838 52 201
+             849: 24(int16_t) CompositeExtract 843 2
+                              Store 848 849
+             850:      6(int) Load 8(invocation)
+             851:     85(ptr) AccessChain 37(data) 58 52
+             852: 25(i16vec4) Load 851
              853:   17(ivec4) Load 19(ballot)
-             854:108(i16vec3) GroupNonUniformIMul 177 PartitionedReduceNV 852 853
-             855:    103(ptr) AccessChain 37(data) 849 58
-             856: 27(i16vec4) Load 855
-             857: 27(i16vec4) VectorShuffle 856 854 4 5 6 3
-                              Store 855 857
-             858:      6(int) Load 8(invocation)
-             859:    103(ptr) AccessChain 37(data) 58 58
-             860: 27(i16vec4) Load 859
-             861:   17(ivec4) Load 19(ballot)
-             862: 27(i16vec4) GroupNonUniformIMul 177 PartitionedReduceNV 860 861
-             863:    103(ptr) AccessChain 37(data) 858 58
-                              Store 863 862
-             864:      6(int) Load 8(invocation)
-             865:     98(ptr) AccessChain 37(data) 39 58 40
-             866: 26(int16_t) Load 865
-             867:   17(ivec4) Load 19(ballot)
-             868: 26(int16_t) GroupNonUniformUMin 177 PartitionedReduceNV 866 867
-             869:     98(ptr) AccessChain 37(data) 864 58 40
-                              Store 869 868
-             870:      6(int) Load 8(invocation)
-             871:    103(ptr) AccessChain 37(data) 45 58
-             872: 27(i16vec4) Load 871
-             873:102(i16vec2) VectorShuffle 872 872 0 1
-             874:   17(ivec4) Load 19(ballot)
-             875:102(i16vec2) GroupNonUniformUMin 177 PartitionedReduceNV 873 874
-             876:    103(ptr) AccessChain 37(data) 870 58
-             877: 27(i16vec4) Load 876
-             878: 27(i16vec4) VectorShuffle 877 875 4 5 2 3
-                              Store 876 878
-             879:      6(int) Load 8(invocation)
-             880:    103(ptr) AccessChain 37(data) 52 58
-             881: 27(i16vec4) Load 880
-             882:108(i16vec3) VectorShuffle 881 881 0 1 2
-             883:   17(ivec4) Load 19(ballot)
-             884:108(i16vec3) GroupNonUniformUMin 177 PartitionedReduceNV 882 883
-             885:    103(ptr) AccessChain 37(data) 879 58
-             886: 27(i16vec4) Load 885
-             887: 27(i16vec4) VectorShuffle 886 884 4 5 6 3
-                              Store 885 887
-             888:      6(int) Load 8(invocation)
-             889:    103(ptr) AccessChain 37(data) 58 58
-             890: 27(i16vec4) Load 889
-             891:   17(ivec4) Load 19(ballot)
-             892: 27(i16vec4) GroupNonUniformUMin 177 PartitionedReduceNV 890 891
-             893:    103(ptr) AccessChain 37(data) 888 58
-                              Store 893 892
-             894:      6(int) Load 8(invocation)
-             895:     98(ptr) AccessChain 37(data) 39 58 40
-             896: 26(int16_t) Load 895
-             897:   17(ivec4) Load 19(ballot)
-             898: 26(int16_t) GroupNonUniformUMax 177 PartitionedReduceNV 896 897
-             899:     98(ptr) AccessChain 37(data) 894 58 40
-                              Store 899 898
-             900:      6(int) Load 8(invocation)
-             901:    103(ptr) AccessChain 37(data) 45 58
-             902: 27(i16vec4) Load 901
-             903:102(i16vec2) VectorShuffle 902 902 0 1
-             904:   17(ivec4) Load 19(ballot)
-             905:102(i16vec2) GroupNonUniformUMax 177 PartitionedReduceNV 903 904
-             906:    103(ptr) AccessChain 37(data) 900 58
-             907: 27(i16vec4) Load 906
-             908: 27(i16vec4) VectorShuffle 907 905 4 5 2 3
-                              Store 906 908
-             909:      6(int) Load 8(invocation)
-             910:    103(ptr) AccessChain 37(data) 52 58
-             911: 27(i16vec4) Load 910
-             912:108(i16vec3) VectorShuffle 911 911 0 1 2
-             913:   17(ivec4) Load 19(ballot)
-             914:108(i16vec3) GroupNonUniformUMax 177 PartitionedReduceNV 912 913
-             915:    103(ptr) AccessChain 37(data) 909 58
-             916: 27(i16vec4) Load 915
-             917: 27(i16vec4) VectorShuffle 916 914 4 5 6 3
-                              Store 915 917
+             854: 25(i16vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 852 853
+             855:     85(ptr) AccessChain 37(data) 850 52
+                              Store 855 854
+             856:      6(int) Load 8(invocation)
+             857:     80(ptr) AccessChain 37(data) 39 52 40
+             858: 24(int16_t) Load 857
+             859:   17(ivec4) Load 19(ballot)
+             860: 24(int16_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 858 859
+             861:     80(ptr) AccessChain 37(data) 856 52 40
+                              Store 861 860
+             862:      6(int) Load 8(invocation)
+             863:     85(ptr) AccessChain 37(data) 45 52
+             864: 25(i16vec4) Load 863
+             865: 84(i16vec2) VectorShuffle 864 864 0 1
+             866:   17(ivec4) Load 19(ballot)
+             867: 84(i16vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 865 866
+             868:     80(ptr) AccessChain 37(data) 862 52 40
+             869: 24(int16_t) CompositeExtract 867 0
+                              Store 868 869
+             870:     80(ptr) AccessChain 37(data) 862 52 188
+             871: 24(int16_t) CompositeExtract 867 1
+                              Store 870 871
+             872:      6(int) Load 8(invocation)
+             873:     85(ptr) AccessChain 37(data) 52 52
+             874: 25(i16vec4) Load 873
+             875: 90(i16vec3) VectorShuffle 874 874 0 1 2
+             876:   17(ivec4) Load 19(ballot)
+             877: 90(i16vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 875 876
+             878:     80(ptr) AccessChain 37(data) 872 52 40
+             879: 24(int16_t) CompositeExtract 877 0
+                              Store 878 879
+             880:     80(ptr) AccessChain 37(data) 872 52 188
+             881: 24(int16_t) CompositeExtract 877 1
+                              Store 880 881
+             882:     80(ptr) AccessChain 37(data) 872 52 201
+             883: 24(int16_t) CompositeExtract 877 2
+                              Store 882 883
+             884:      6(int) Load 8(invocation)
+             885:     85(ptr) AccessChain 37(data) 58 52
+             886: 25(i16vec4) Load 885
+             887:   17(ivec4) Load 19(ballot)
+             888: 25(i16vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 886 887
+             889:     85(ptr) AccessChain 37(data) 884 52
+                              Store 889 888
+             890:      6(int) Load 8(invocation)
+             891:     98(ptr) AccessChain 37(data) 39 58 40
+             892: 26(int16_t) Load 891
+             893:   17(ivec4) Load 19(ballot)
+             894: 26(int16_t) GroupNonUniformIAdd 177 PartitionedReduceNV 892 893
+             895:     98(ptr) AccessChain 37(data) 890 58 40
+                              Store 895 894
+             896:      6(int) Load 8(invocation)
+             897:    103(ptr) AccessChain 37(data) 45 58
+             898: 27(i16vec4) Load 897
+             899:102(i16vec2) VectorShuffle 898 898 0 1
+             900:   17(ivec4) Load 19(ballot)
+             901:102(i16vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 899 900
+             902:     98(ptr) AccessChain 37(data) 896 58 40
+             903: 26(int16_t) CompositeExtract 901 0
+                              Store 902 903
+             904:     98(ptr) AccessChain 37(data) 896 58 188
+             905: 26(int16_t) CompositeExtract 901 1
+                              Store 904 905
+             906:      6(int) Load 8(invocation)
+             907:    103(ptr) AccessChain 37(data) 52 58
+             908: 27(i16vec4) Load 907
+             909:108(i16vec3) VectorShuffle 908 908 0 1 2
+             910:   17(ivec4) Load 19(ballot)
+             911:108(i16vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 909 910
+             912:     98(ptr) AccessChain 37(data) 906 58 40
+             913: 26(int16_t) CompositeExtract 911 0
+                              Store 912 913
+             914:     98(ptr) AccessChain 37(data) 906 58 188
+             915: 26(int16_t) CompositeExtract 911 1
+                              Store 914 915
+             916:     98(ptr) AccessChain 37(data) 906 58 201
+             917: 26(int16_t) CompositeExtract 911 2
+                              Store 916 917
              918:      6(int) Load 8(invocation)
              919:    103(ptr) AccessChain 37(data) 58 58
              920: 27(i16vec4) Load 919
              921:   17(ivec4) Load 19(ballot)
-             922: 27(i16vec4) GroupNonUniformUMax 177 PartitionedReduceNV 920 921
+             922: 27(i16vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 920 921
              923:    103(ptr) AccessChain 37(data) 918 58
                               Store 923 922
              924:      6(int) Load 8(invocation)
              925:     98(ptr) AccessChain 37(data) 39 58 40
              926: 26(int16_t) Load 925
              927:   17(ivec4) Load 19(ballot)
-             928: 26(int16_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 926 927
+             928: 26(int16_t) GroupNonUniformIMul 177 PartitionedReduceNV 926 927
              929:     98(ptr) AccessChain 37(data) 924 58 40
                               Store 929 928
              930:      6(int) Load 8(invocation)
@@ -1129,707 +1182,977 @@
              932: 27(i16vec4) Load 931
              933:102(i16vec2) VectorShuffle 932 932 0 1
              934:   17(ivec4) Load 19(ballot)
-             935:102(i16vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 933 934
-             936:    103(ptr) AccessChain 37(data) 930 58
-             937: 27(i16vec4) Load 936
-             938: 27(i16vec4) VectorShuffle 937 935 4 5 2 3
-                              Store 936 938
-             939:      6(int) Load 8(invocation)
-             940:    103(ptr) AccessChain 37(data) 52 58
-             941: 27(i16vec4) Load 940
-             942:108(i16vec3) VectorShuffle 941 941 0 1 2
-             943:   17(ivec4) Load 19(ballot)
-             944:108(i16vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 942 943
-             945:    103(ptr) AccessChain 37(data) 939 58
-             946: 27(i16vec4) Load 945
-             947: 27(i16vec4) VectorShuffle 946 944 4 5 6 3
-                              Store 945 947
-             948:      6(int) Load 8(invocation)
-             949:    103(ptr) AccessChain 37(data) 58 58
-             950: 27(i16vec4) Load 949
-             951:   17(ivec4) Load 19(ballot)
-             952: 27(i16vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 950 951
-             953:    103(ptr) AccessChain 37(data) 948 58
-                              Store 953 952
-             954:      6(int) Load 8(invocation)
-             955:     98(ptr) AccessChain 37(data) 39 58 40
-             956: 26(int16_t) Load 955
-             957:   17(ivec4) Load 19(ballot)
-             958: 26(int16_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 956 957
-             959:     98(ptr) AccessChain 37(data) 954 58 40
-                              Store 959 958
-             960:      6(int) Load 8(invocation)
-             961:    103(ptr) AccessChain 37(data) 45 58
-             962: 27(i16vec4) Load 961
-             963:102(i16vec2) VectorShuffle 962 962 0 1
-             964:   17(ivec4) Load 19(ballot)
-             965:102(i16vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 963 964
-             966:    103(ptr) AccessChain 37(data) 960 58
-             967: 27(i16vec4) Load 966
-             968: 27(i16vec4) VectorShuffle 967 965 4 5 2 3
-                              Store 966 968
-             969:      6(int) Load 8(invocation)
-             970:    103(ptr) AccessChain 37(data) 52 58
-             971: 27(i16vec4) Load 970
-             972:108(i16vec3) VectorShuffle 971 971 0 1 2
-             973:   17(ivec4) Load 19(ballot)
-             974:108(i16vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 972 973
-             975:    103(ptr) AccessChain 37(data) 969 58
+             935:102(i16vec2) GroupNonUniformIMul 177 PartitionedReduceNV 933 934
+             936:     98(ptr) AccessChain 37(data) 930 58 40
+             937: 26(int16_t) CompositeExtract 935 0
+                              Store 936 937
+             938:     98(ptr) AccessChain 37(data) 930 58 188
+             939: 26(int16_t) CompositeExtract 935 1
+                              Store 938 939
+             940:      6(int) Load 8(invocation)
+             941:    103(ptr) AccessChain 37(data) 52 58
+             942: 27(i16vec4) Load 941
+             943:108(i16vec3) VectorShuffle 942 942 0 1 2
+             944:   17(ivec4) Load 19(ballot)
+             945:108(i16vec3) GroupNonUniformIMul 177 PartitionedReduceNV 943 944
+             946:     98(ptr) AccessChain 37(data) 940 58 40
+             947: 26(int16_t) CompositeExtract 945 0
+                              Store 946 947
+             948:     98(ptr) AccessChain 37(data) 940 58 188
+             949: 26(int16_t) CompositeExtract 945 1
+                              Store 948 949
+             950:     98(ptr) AccessChain 37(data) 940 58 201
+             951: 26(int16_t) CompositeExtract 945 2
+                              Store 950 951
+             952:      6(int) Load 8(invocation)
+             953:    103(ptr) AccessChain 37(data) 58 58
+             954: 27(i16vec4) Load 953
+             955:   17(ivec4) Load 19(ballot)
+             956: 27(i16vec4) GroupNonUniformIMul 177 PartitionedReduceNV 954 955
+             957:    103(ptr) AccessChain 37(data) 952 58
+                              Store 957 956
+             958:      6(int) Load 8(invocation)
+             959:     98(ptr) AccessChain 37(data) 39 58 40
+             960: 26(int16_t) Load 959
+             961:   17(ivec4) Load 19(ballot)
+             962: 26(int16_t) GroupNonUniformUMin 177 PartitionedReduceNV 960 961
+             963:     98(ptr) AccessChain 37(data) 958 58 40
+                              Store 963 962
+             964:      6(int) Load 8(invocation)
+             965:    103(ptr) AccessChain 37(data) 45 58
+             966: 27(i16vec4) Load 965
+             967:102(i16vec2) VectorShuffle 966 966 0 1
+             968:   17(ivec4) Load 19(ballot)
+             969:102(i16vec2) GroupNonUniformUMin 177 PartitionedReduceNV 967 968
+             970:     98(ptr) AccessChain 37(data) 964 58 40
+             971: 26(int16_t) CompositeExtract 969 0
+                              Store 970 971
+             972:     98(ptr) AccessChain 37(data) 964 58 188
+             973: 26(int16_t) CompositeExtract 969 1
+                              Store 972 973
+             974:      6(int) Load 8(invocation)
+             975:    103(ptr) AccessChain 37(data) 52 58
              976: 27(i16vec4) Load 975
-             977: 27(i16vec4) VectorShuffle 976 974 4 5 6 3
-                              Store 975 977
-             978:      6(int) Load 8(invocation)
-             979:    103(ptr) AccessChain 37(data) 58 58
-             980: 27(i16vec4) Load 979
-             981:   17(ivec4) Load 19(ballot)
-             982: 27(i16vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 980 981
-             983:    103(ptr) AccessChain 37(data) 978 58
-                              Store 983 982
-             984:      6(int) Load 8(invocation)
-             985:     98(ptr) AccessChain 37(data) 39 58 40
-             986: 26(int16_t) Load 985
-             987:   17(ivec4) Load 19(ballot)
-             988: 26(int16_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 986 987
-             989:     98(ptr) AccessChain 37(data) 984 58 40
-                              Store 989 988
-             990:      6(int) Load 8(invocation)
-             991:    103(ptr) AccessChain 37(data) 45 58
-             992: 27(i16vec4) Load 991
-             993:102(i16vec2) VectorShuffle 992 992 0 1
-             994:   17(ivec4) Load 19(ballot)
-             995:102(i16vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 993 994
-             996:    103(ptr) AccessChain 37(data) 990 58
-             997: 27(i16vec4) Load 996
-             998: 27(i16vec4) VectorShuffle 997 995 4 5 2 3
-                              Store 996 998
-             999:      6(int) Load 8(invocation)
-            1000:    103(ptr) AccessChain 37(data) 52 58
-            1001: 27(i16vec4) Load 1000
-            1002:108(i16vec3) VectorShuffle 1001 1001 0 1 2
-            1003:   17(ivec4) Load 19(ballot)
-            1004:108(i16vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1002 1003
-            1005:    103(ptr) AccessChain 37(data) 999 58
-            1006: 27(i16vec4) Load 1005
-            1007: 27(i16vec4) VectorShuffle 1006 1004 4 5 6 3
-                              Store 1005 1007
+             977:108(i16vec3) VectorShuffle 976 976 0 1 2
+             978:   17(ivec4) Load 19(ballot)
+             979:108(i16vec3) GroupNonUniformUMin 177 PartitionedReduceNV 977 978
+             980:     98(ptr) AccessChain 37(data) 974 58 40
+             981: 26(int16_t) CompositeExtract 979 0
+                              Store 980 981
+             982:     98(ptr) AccessChain 37(data) 974 58 188
+             983: 26(int16_t) CompositeExtract 979 1
+                              Store 982 983
+             984:     98(ptr) AccessChain 37(data) 974 58 201
+             985: 26(int16_t) CompositeExtract 979 2
+                              Store 984 985
+             986:      6(int) Load 8(invocation)
+             987:    103(ptr) AccessChain 37(data) 58 58
+             988: 27(i16vec4) Load 987
+             989:   17(ivec4) Load 19(ballot)
+             990: 27(i16vec4) GroupNonUniformUMin 177 PartitionedReduceNV 988 989
+             991:    103(ptr) AccessChain 37(data) 986 58
+                              Store 991 990
+             992:      6(int) Load 8(invocation)
+             993:     98(ptr) AccessChain 37(data) 39 58 40
+             994: 26(int16_t) Load 993
+             995:   17(ivec4) Load 19(ballot)
+             996: 26(int16_t) GroupNonUniformUMax 177 PartitionedReduceNV 994 995
+             997:     98(ptr) AccessChain 37(data) 992 58 40
+                              Store 997 996
+             998:      6(int) Load 8(invocation)
+             999:    103(ptr) AccessChain 37(data) 45 58
+            1000: 27(i16vec4) Load 999
+            1001:102(i16vec2) VectorShuffle 1000 1000 0 1
+            1002:   17(ivec4) Load 19(ballot)
+            1003:102(i16vec2) GroupNonUniformUMax 177 PartitionedReduceNV 1001 1002
+            1004:     98(ptr) AccessChain 37(data) 998 58 40
+            1005: 26(int16_t) CompositeExtract 1003 0
+                              Store 1004 1005
+            1006:     98(ptr) AccessChain 37(data) 998 58 188
+            1007: 26(int16_t) CompositeExtract 1003 1
+                              Store 1006 1007
             1008:      6(int) Load 8(invocation)
-            1009:    103(ptr) AccessChain 37(data) 58 58
+            1009:    103(ptr) AccessChain 37(data) 52 58
             1010: 27(i16vec4) Load 1009
-            1011:   17(ivec4) Load 19(ballot)
-            1012: 27(i16vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1010 1011
-            1013:    103(ptr) AccessChain 37(data) 1008 58
-                              Store 1013 1012
-            1014:      6(int) Load 8(invocation)
-            1015:    117(ptr) AccessChain 37(data) 39 116 40
-            1016: 28(int64_t) Load 1015
-            1017:   17(ivec4) Load 19(ballot)
-            1018: 28(int64_t) GroupNonUniformIAdd 177 PartitionedReduceNV 1016 1017
-            1019:    117(ptr) AccessChain 37(data) 1014 116 40
-                              Store 1019 1018
+            1011:108(i16vec3) VectorShuffle 1010 1010 0 1 2
+            1012:   17(ivec4) Load 19(ballot)
+            1013:108(i16vec3) GroupNonUniformUMax 177 PartitionedReduceNV 1011 1012
+            1014:     98(ptr) AccessChain 37(data) 1008 58 40
+            1015: 26(int16_t) CompositeExtract 1013 0
+                              Store 1014 1015
+            1016:     98(ptr) AccessChain 37(data) 1008 58 188
+            1017: 26(int16_t) CompositeExtract 1013 1
+                              Store 1016 1017
+            1018:     98(ptr) AccessChain 37(data) 1008 58 201
+            1019: 26(int16_t) CompositeExtract 1013 2
+                              Store 1018 1019
             1020:      6(int) Load 8(invocation)
-            1021:    122(ptr) AccessChain 37(data) 45 116
-            1022: 29(i64vec4) Load 1021
-            1023:121(i64vec2) VectorShuffle 1022 1022 0 1
-            1024:   17(ivec4) Load 19(ballot)
-            1025:121(i64vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 1023 1024
-            1026:    122(ptr) AccessChain 37(data) 1020 116
-            1027: 29(i64vec4) Load 1026
-            1028: 29(i64vec4) VectorShuffle 1027 1025 4 5 2 3
-                              Store 1026 1028
-            1029:      6(int) Load 8(invocation)
-            1030:    122(ptr) AccessChain 37(data) 52 116
-            1031: 29(i64vec4) Load 1030
-            1032:127(i64vec3) VectorShuffle 1031 1031 0 1 2
-            1033:   17(ivec4) Load 19(ballot)
-            1034:127(i64vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 1032 1033
-            1035:    122(ptr) AccessChain 37(data) 1029 116
-            1036: 29(i64vec4) Load 1035
-            1037: 29(i64vec4) VectorShuffle 1036 1034 4 5 6 3
-                              Store 1035 1037
-            1038:      6(int) Load 8(invocation)
-            1039:    122(ptr) AccessChain 37(data) 58 116
-            1040: 29(i64vec4) Load 1039
-            1041:   17(ivec4) Load 19(ballot)
-            1042: 29(i64vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 1040 1041
-            1043:    122(ptr) AccessChain 37(data) 1038 116
-                              Store 1043 1042
-            1044:      6(int) Load 8(invocation)
-            1045:    117(ptr) AccessChain 37(data) 39 116 40
-            1046: 28(int64_t) Load 1045
-            1047:   17(ivec4) Load 19(ballot)
-            1048: 28(int64_t) GroupNonUniformIMul 177 PartitionedReduceNV 1046 1047
-            1049:    117(ptr) AccessChain 37(data) 1044 116 40
-                              Store 1049 1048
-            1050:      6(int) Load 8(invocation)
-            1051:    122(ptr) AccessChain 37(data) 45 116
-            1052: 29(i64vec4) Load 1051
-            1053:121(i64vec2) VectorShuffle 1052 1052 0 1
-            1054:   17(ivec4) Load 19(ballot)
-            1055:121(i64vec2) GroupNonUniformIMul 177 PartitionedReduceNV 1053 1054
-            1056:    122(ptr) AccessChain 37(data) 1050 116
-            1057: 29(i64vec4) Load 1056
-            1058: 29(i64vec4) VectorShuffle 1057 1055 4 5 2 3
-                              Store 1056 1058
-            1059:      6(int) Load 8(invocation)
-            1060:    122(ptr) AccessChain 37(data) 52 116
-            1061: 29(i64vec4) Load 1060
-            1062:127(i64vec3) VectorShuffle 1061 1061 0 1 2
+            1021:    103(ptr) AccessChain 37(data) 58 58
+            1022: 27(i16vec4) Load 1021
+            1023:   17(ivec4) Load 19(ballot)
+            1024: 27(i16vec4) GroupNonUniformUMax 177 PartitionedReduceNV 1022 1023
+            1025:    103(ptr) AccessChain 37(data) 1020 58
+                              Store 1025 1024
+            1026:      6(int) Load 8(invocation)
+            1027:     98(ptr) AccessChain 37(data) 39 58 40
+            1028: 26(int16_t) Load 1027
+            1029:   17(ivec4) Load 19(ballot)
+            1030: 26(int16_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1028 1029
+            1031:     98(ptr) AccessChain 37(data) 1026 58 40
+                              Store 1031 1030
+            1032:      6(int) Load 8(invocation)
+            1033:    103(ptr) AccessChain 37(data) 45 58
+            1034: 27(i16vec4) Load 1033
+            1035:102(i16vec2) VectorShuffle 1034 1034 0 1
+            1036:   17(ivec4) Load 19(ballot)
+            1037:102(i16vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1035 1036
+            1038:     98(ptr) AccessChain 37(data) 1032 58 40
+            1039: 26(int16_t) CompositeExtract 1037 0
+                              Store 1038 1039
+            1040:     98(ptr) AccessChain 37(data) 1032 58 188
+            1041: 26(int16_t) CompositeExtract 1037 1
+                              Store 1040 1041
+            1042:      6(int) Load 8(invocation)
+            1043:    103(ptr) AccessChain 37(data) 52 58
+            1044: 27(i16vec4) Load 1043
+            1045:108(i16vec3) VectorShuffle 1044 1044 0 1 2
+            1046:   17(ivec4) Load 19(ballot)
+            1047:108(i16vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1045 1046
+            1048:     98(ptr) AccessChain 37(data) 1042 58 40
+            1049: 26(int16_t) CompositeExtract 1047 0
+                              Store 1048 1049
+            1050:     98(ptr) AccessChain 37(data) 1042 58 188
+            1051: 26(int16_t) CompositeExtract 1047 1
+                              Store 1050 1051
+            1052:     98(ptr) AccessChain 37(data) 1042 58 201
+            1053: 26(int16_t) CompositeExtract 1047 2
+                              Store 1052 1053
+            1054:      6(int) Load 8(invocation)
+            1055:    103(ptr) AccessChain 37(data) 58 58
+            1056: 27(i16vec4) Load 1055
+            1057:   17(ivec4) Load 19(ballot)
+            1058: 27(i16vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1056 1057
+            1059:    103(ptr) AccessChain 37(data) 1054 58
+                              Store 1059 1058
+            1060:      6(int) Load 8(invocation)
+            1061:     98(ptr) AccessChain 37(data) 39 58 40
+            1062: 26(int16_t) Load 1061
             1063:   17(ivec4) Load 19(ballot)
-            1064:127(i64vec3) GroupNonUniformIMul 177 PartitionedReduceNV 1062 1063
-            1065:    122(ptr) AccessChain 37(data) 1059 116
-            1066: 29(i64vec4) Load 1065
-            1067: 29(i64vec4) VectorShuffle 1066 1064 4 5 6 3
-                              Store 1065 1067
-            1068:      6(int) Load 8(invocation)
-            1069:    122(ptr) AccessChain 37(data) 58 116
-            1070: 29(i64vec4) Load 1069
-            1071:   17(ivec4) Load 19(ballot)
-            1072: 29(i64vec4) GroupNonUniformIMul 177 PartitionedReduceNV 1070 1071
-            1073:    122(ptr) AccessChain 37(data) 1068 116
-                              Store 1073 1072
-            1074:      6(int) Load 8(invocation)
-            1075:    117(ptr) AccessChain 37(data) 39 116 40
-            1076: 28(int64_t) Load 1075
-            1077:   17(ivec4) Load 19(ballot)
-            1078: 28(int64_t) GroupNonUniformSMin 177 PartitionedReduceNV 1076 1077
-            1079:    117(ptr) AccessChain 37(data) 1074 116 40
-                              Store 1079 1078
-            1080:      6(int) Load 8(invocation)
-            1081:    122(ptr) AccessChain 37(data) 45 116
-            1082: 29(i64vec4) Load 1081
-            1083:121(i64vec2) VectorShuffle 1082 1082 0 1
-            1084:   17(ivec4) Load 19(ballot)
-            1085:121(i64vec2) GroupNonUniformSMin 177 PartitionedReduceNV 1083 1084
-            1086:    122(ptr) AccessChain 37(data) 1080 116
-            1087: 29(i64vec4) Load 1086
-            1088: 29(i64vec4) VectorShuffle 1087 1085 4 5 2 3
-                              Store 1086 1088
-            1089:      6(int) Load 8(invocation)
-            1090:    122(ptr) AccessChain 37(data) 52 116
-            1091: 29(i64vec4) Load 1090
-            1092:127(i64vec3) VectorShuffle 1091 1091 0 1 2
-            1093:   17(ivec4) Load 19(ballot)
-            1094:127(i64vec3) GroupNonUniformSMin 177 PartitionedReduceNV 1092 1093
-            1095:    122(ptr) AccessChain 37(data) 1089 116
-            1096: 29(i64vec4) Load 1095
-            1097: 29(i64vec4) VectorShuffle 1096 1094 4 5 6 3
-                              Store 1095 1097
-            1098:      6(int) Load 8(invocation)
-            1099:    122(ptr) AccessChain 37(data) 58 116
-            1100: 29(i64vec4) Load 1099
-            1101:   17(ivec4) Load 19(ballot)
-            1102: 29(i64vec4) GroupNonUniformSMin 177 PartitionedReduceNV 1100 1101
-            1103:    122(ptr) AccessChain 37(data) 1098 116
-                              Store 1103 1102
-            1104:      6(int) Load 8(invocation)
-            1105:    117(ptr) AccessChain 37(data) 39 116 40
-            1106: 28(int64_t) Load 1105
-            1107:   17(ivec4) Load 19(ballot)
-            1108: 28(int64_t) GroupNonUniformSMax 177 PartitionedReduceNV 1106 1107
-            1109:    117(ptr) AccessChain 37(data) 1104 116 40
-                              Store 1109 1108
+            1064: 26(int16_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1062 1063
+            1065:     98(ptr) AccessChain 37(data) 1060 58 40
+                              Store 1065 1064
+            1066:      6(int) Load 8(invocation)
+            1067:    103(ptr) AccessChain 37(data) 45 58
+            1068: 27(i16vec4) Load 1067
+            1069:102(i16vec2) VectorShuffle 1068 1068 0 1
+            1070:   17(ivec4) Load 19(ballot)
+            1071:102(i16vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1069 1070
+            1072:     98(ptr) AccessChain 37(data) 1066 58 40
+            1073: 26(int16_t) CompositeExtract 1071 0
+                              Store 1072 1073
+            1074:     98(ptr) AccessChain 37(data) 1066 58 188
+            1075: 26(int16_t) CompositeExtract 1071 1
+                              Store 1074 1075
+            1076:      6(int) Load 8(invocation)
+            1077:    103(ptr) AccessChain 37(data) 52 58
+            1078: 27(i16vec4) Load 1077
+            1079:108(i16vec3) VectorShuffle 1078 1078 0 1 2
+            1080:   17(ivec4) Load 19(ballot)
+            1081:108(i16vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1079 1080
+            1082:     98(ptr) AccessChain 37(data) 1076 58 40
+            1083: 26(int16_t) CompositeExtract 1081 0
+                              Store 1082 1083
+            1084:     98(ptr) AccessChain 37(data) 1076 58 188
+            1085: 26(int16_t) CompositeExtract 1081 1
+                              Store 1084 1085
+            1086:     98(ptr) AccessChain 37(data) 1076 58 201
+            1087: 26(int16_t) CompositeExtract 1081 2
+                              Store 1086 1087
+            1088:      6(int) Load 8(invocation)
+            1089:    103(ptr) AccessChain 37(data) 58 58
+            1090: 27(i16vec4) Load 1089
+            1091:   17(ivec4) Load 19(ballot)
+            1092: 27(i16vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1090 1091
+            1093:    103(ptr) AccessChain 37(data) 1088 58
+                              Store 1093 1092
+            1094:      6(int) Load 8(invocation)
+            1095:     98(ptr) AccessChain 37(data) 39 58 40
+            1096: 26(int16_t) Load 1095
+            1097:   17(ivec4) Load 19(ballot)
+            1098: 26(int16_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1096 1097
+            1099:     98(ptr) AccessChain 37(data) 1094 58 40
+                              Store 1099 1098
+            1100:      6(int) Load 8(invocation)
+            1101:    103(ptr) AccessChain 37(data) 45 58
+            1102: 27(i16vec4) Load 1101
+            1103:102(i16vec2) VectorShuffle 1102 1102 0 1
+            1104:   17(ivec4) Load 19(ballot)
+            1105:102(i16vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1103 1104
+            1106:     98(ptr) AccessChain 37(data) 1100 58 40
+            1107: 26(int16_t) CompositeExtract 1105 0
+                              Store 1106 1107
+            1108:     98(ptr) AccessChain 37(data) 1100 58 188
+            1109: 26(int16_t) CompositeExtract 1105 1
+                              Store 1108 1109
             1110:      6(int) Load 8(invocation)
-            1111:    122(ptr) AccessChain 37(data) 45 116
-            1112: 29(i64vec4) Load 1111
-            1113:121(i64vec2) VectorShuffle 1112 1112 0 1
+            1111:    103(ptr) AccessChain 37(data) 52 58
+            1112: 27(i16vec4) Load 1111
+            1113:108(i16vec3) VectorShuffle 1112 1112 0 1 2
             1114:   17(ivec4) Load 19(ballot)
-            1115:121(i64vec2) GroupNonUniformSMax 177 PartitionedReduceNV 1113 1114
-            1116:    122(ptr) AccessChain 37(data) 1110 116
-            1117: 29(i64vec4) Load 1116
-            1118: 29(i64vec4) VectorShuffle 1117 1115 4 5 2 3
-                              Store 1116 1118
-            1119:      6(int) Load 8(invocation)
-            1120:    122(ptr) AccessChain 37(data) 52 116
-            1121: 29(i64vec4) Load 1120
-            1122:127(i64vec3) VectorShuffle 1121 1121 0 1 2
-            1123:   17(ivec4) Load 19(ballot)
-            1124:127(i64vec3) GroupNonUniformSMax 177 PartitionedReduceNV 1122 1123
-            1125:    122(ptr) AccessChain 37(data) 1119 116
-            1126: 29(i64vec4) Load 1125
-            1127: 29(i64vec4) VectorShuffle 1126 1124 4 5 6 3
-                              Store 1125 1127
+            1115:108(i16vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1113 1114
+            1116:     98(ptr) AccessChain 37(data) 1110 58 40
+            1117: 26(int16_t) CompositeExtract 1115 0
+                              Store 1116 1117
+            1118:     98(ptr) AccessChain 37(data) 1110 58 188
+            1119: 26(int16_t) CompositeExtract 1115 1
+                              Store 1118 1119
+            1120:     98(ptr) AccessChain 37(data) 1110 58 201
+            1121: 26(int16_t) CompositeExtract 1115 2
+                              Store 1120 1121
+            1122:      6(int) Load 8(invocation)
+            1123:    103(ptr) AccessChain 37(data) 58 58
+            1124: 27(i16vec4) Load 1123
+            1125:   17(ivec4) Load 19(ballot)
+            1126: 27(i16vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1124 1125
+            1127:    103(ptr) AccessChain 37(data) 1122 58
+                              Store 1127 1126
             1128:      6(int) Load 8(invocation)
-            1129:    122(ptr) AccessChain 37(data) 58 116
-            1130: 29(i64vec4) Load 1129
+            1129:    117(ptr) AccessChain 37(data) 39 116 40
+            1130: 28(int64_t) Load 1129
             1131:   17(ivec4) Load 19(ballot)
-            1132: 29(i64vec4) GroupNonUniformSMax 177 PartitionedReduceNV 1130 1131
-            1133:    122(ptr) AccessChain 37(data) 1128 116
+            1132: 28(int64_t) GroupNonUniformIAdd 177 PartitionedReduceNV 1130 1131
+            1133:    117(ptr) AccessChain 37(data) 1128 116 40
                               Store 1133 1132
             1134:      6(int) Load 8(invocation)
-            1135:    117(ptr) AccessChain 37(data) 39 116 40
-            1136: 28(int64_t) Load 1135
-            1137:   17(ivec4) Load 19(ballot)
-            1138: 28(int64_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1136 1137
-            1139:    117(ptr) AccessChain 37(data) 1134 116 40
-                              Store 1139 1138
-            1140:      6(int) Load 8(invocation)
-            1141:    122(ptr) AccessChain 37(data) 45 116
-            1142: 29(i64vec4) Load 1141
-            1143:121(i64vec2) VectorShuffle 1142 1142 0 1
-            1144:   17(ivec4) Load 19(ballot)
-            1145:121(i64vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1143 1144
-            1146:    122(ptr) AccessChain 37(data) 1140 116
-            1147: 29(i64vec4) Load 1146
-            1148: 29(i64vec4) VectorShuffle 1147 1145 4 5 2 3
-                              Store 1146 1148
-            1149:      6(int) Load 8(invocation)
-            1150:    122(ptr) AccessChain 37(data) 52 116
-            1151: 29(i64vec4) Load 1150
-            1152:127(i64vec3) VectorShuffle 1151 1151 0 1 2
-            1153:   17(ivec4) Load 19(ballot)
-            1154:127(i64vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1152 1153
-            1155:    122(ptr) AccessChain 37(data) 1149 116
-            1156: 29(i64vec4) Load 1155
-            1157: 29(i64vec4) VectorShuffle 1156 1154 4 5 6 3
-                              Store 1155 1157
-            1158:      6(int) Load 8(invocation)
-            1159:    122(ptr) AccessChain 37(data) 58 116
-            1160: 29(i64vec4) Load 1159
-            1161:   17(ivec4) Load 19(ballot)
-            1162: 29(i64vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1160 1161
-            1163:    122(ptr) AccessChain 37(data) 1158 116
-                              Store 1163 1162
-            1164:      6(int) Load 8(invocation)
-            1165:    117(ptr) AccessChain 37(data) 39 116 40
-            1166: 28(int64_t) Load 1165
-            1167:   17(ivec4) Load 19(ballot)
-            1168: 28(int64_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1166 1167
-            1169:    117(ptr) AccessChain 37(data) 1164 116 40
-                              Store 1169 1168
-            1170:      6(int) Load 8(invocation)
-            1171:    122(ptr) AccessChain 37(data) 45 116
-            1172: 29(i64vec4) Load 1171
-            1173:121(i64vec2) VectorShuffle 1172 1172 0 1
-            1174:   17(ivec4) Load 19(ballot)
-            1175:121(i64vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1173 1174
-            1176:    122(ptr) AccessChain 37(data) 1170 116
-            1177: 29(i64vec4) Load 1176
-            1178: 29(i64vec4) VectorShuffle 1177 1175 4 5 2 3
-                              Store 1176 1178
-            1179:      6(int) Load 8(invocation)
-            1180:    122(ptr) AccessChain 37(data) 52 116
-            1181: 29(i64vec4) Load 1180
-            1182:127(i64vec3) VectorShuffle 1181 1181 0 1 2
-            1183:   17(ivec4) Load 19(ballot)
-            1184:127(i64vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1182 1183
-            1185:    122(ptr) AccessChain 37(data) 1179 116
-            1186: 29(i64vec4) Load 1185
-            1187: 29(i64vec4) VectorShuffle 1186 1184 4 5 6 3
-                              Store 1185 1187
-            1188:      6(int) Load 8(invocation)
-            1189:    122(ptr) AccessChain 37(data) 58 116
-            1190: 29(i64vec4) Load 1189
-            1191:   17(ivec4) Load 19(ballot)
-            1192: 29(i64vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1190 1191
-            1193:    122(ptr) AccessChain 37(data) 1188 116
-                              Store 1193 1192
-            1194:      6(int) Load 8(invocation)
-            1195:    117(ptr) AccessChain 37(data) 39 116 40
-            1196: 28(int64_t) Load 1195
-            1197:   17(ivec4) Load 19(ballot)
-            1198: 28(int64_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1196 1197
-            1199:    117(ptr) AccessChain 37(data) 1194 116 40
-                              Store 1199 1198
-            1200:      6(int) Load 8(invocation)
-            1201:    122(ptr) AccessChain 37(data) 45 116
-            1202: 29(i64vec4) Load 1201
-            1203:121(i64vec2) VectorShuffle 1202 1202 0 1
-            1204:   17(ivec4) Load 19(ballot)
-            1205:121(i64vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1203 1204
-            1206:    122(ptr) AccessChain 37(data) 1200 116
-            1207: 29(i64vec4) Load 1206
-            1208: 29(i64vec4) VectorShuffle 1207 1205 4 5 2 3
-                              Store 1206 1208
-            1209:      6(int) Load 8(invocation)
-            1210:    122(ptr) AccessChain 37(data) 52 116
-            1211: 29(i64vec4) Load 1210
-            1212:127(i64vec3) VectorShuffle 1211 1211 0 1 2
-            1213:   17(ivec4) Load 19(ballot)
-            1214:127(i64vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1212 1213
-            1215:    122(ptr) AccessChain 37(data) 1209 116
-            1216: 29(i64vec4) Load 1215
-            1217: 29(i64vec4) VectorShuffle 1216 1214 4 5 6 3
-                              Store 1215 1217
-            1218:      6(int) Load 8(invocation)
-            1219:    122(ptr) AccessChain 37(data) 58 116
-            1220: 29(i64vec4) Load 1219
-            1221:   17(ivec4) Load 19(ballot)
-            1222: 29(i64vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1220 1221
-            1223:    122(ptr) AccessChain 37(data) 1218 116
-                              Store 1223 1222
+            1135:    122(ptr) AccessChain 37(data) 45 116
+            1136: 29(i64vec4) Load 1135
+            1137:121(i64vec2) VectorShuffle 1136 1136 0 1
+            1138:   17(ivec4) Load 19(ballot)
+            1139:121(i64vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 1137 1138
+            1140:    117(ptr) AccessChain 37(data) 1134 116 40
+            1141: 28(int64_t) CompositeExtract 1139 0
+                              Store 1140 1141
+            1142:    117(ptr) AccessChain 37(data) 1134 116 188
+            1143: 28(int64_t) CompositeExtract 1139 1
+                              Store 1142 1143
+            1144:      6(int) Load 8(invocation)
+            1145:    122(ptr) AccessChain 37(data) 52 116
+            1146: 29(i64vec4) Load 1145
+            1147:127(i64vec3) VectorShuffle 1146 1146 0 1 2
+            1148:   17(ivec4) Load 19(ballot)
+            1149:127(i64vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 1147 1148
+            1150:    117(ptr) AccessChain 37(data) 1144 116 40
+            1151: 28(int64_t) CompositeExtract 1149 0
+                              Store 1150 1151
+            1152:    117(ptr) AccessChain 37(data) 1144 116 188
+            1153: 28(int64_t) CompositeExtract 1149 1
+                              Store 1152 1153
+            1154:    117(ptr) AccessChain 37(data) 1144 116 201
+            1155: 28(int64_t) CompositeExtract 1149 2
+                              Store 1154 1155
+            1156:      6(int) Load 8(invocation)
+            1157:    122(ptr) AccessChain 37(data) 58 116
+            1158: 29(i64vec4) Load 1157
+            1159:   17(ivec4) Load 19(ballot)
+            1160: 29(i64vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 1158 1159
+            1161:    122(ptr) AccessChain 37(data) 1156 116
+                              Store 1161 1160
+            1162:      6(int) Load 8(invocation)
+            1163:    117(ptr) AccessChain 37(data) 39 116 40
+            1164: 28(int64_t) Load 1163
+            1165:   17(ivec4) Load 19(ballot)
+            1166: 28(int64_t) GroupNonUniformIMul 177 PartitionedReduceNV 1164 1165
+            1167:    117(ptr) AccessChain 37(data) 1162 116 40
+                              Store 1167 1166
+            1168:      6(int) Load 8(invocation)
+            1169:    122(ptr) AccessChain 37(data) 45 116
+            1170: 29(i64vec4) Load 1169
+            1171:121(i64vec2) VectorShuffle 1170 1170 0 1
+            1172:   17(ivec4) Load 19(ballot)
+            1173:121(i64vec2) GroupNonUniformIMul 177 PartitionedReduceNV 1171 1172
+            1174:    117(ptr) AccessChain 37(data) 1168 116 40
+            1175: 28(int64_t) CompositeExtract 1173 0
+                              Store 1174 1175
+            1176:    117(ptr) AccessChain 37(data) 1168 116 188
+            1177: 28(int64_t) CompositeExtract 1173 1
+                              Store 1176 1177
+            1178:      6(int) Load 8(invocation)
+            1179:    122(ptr) AccessChain 37(data) 52 116
+            1180: 29(i64vec4) Load 1179
+            1181:127(i64vec3) VectorShuffle 1180 1180 0 1 2
+            1182:   17(ivec4) Load 19(ballot)
+            1183:127(i64vec3) GroupNonUniformIMul 177 PartitionedReduceNV 1181 1182
+            1184:    117(ptr) AccessChain 37(data) 1178 116 40
+            1185: 28(int64_t) CompositeExtract 1183 0
+                              Store 1184 1185
+            1186:    117(ptr) AccessChain 37(data) 1178 116 188
+            1187: 28(int64_t) CompositeExtract 1183 1
+                              Store 1186 1187
+            1188:    117(ptr) AccessChain 37(data) 1178 116 201
+            1189: 28(int64_t) CompositeExtract 1183 2
+                              Store 1188 1189
+            1190:      6(int) Load 8(invocation)
+            1191:    122(ptr) AccessChain 37(data) 58 116
+            1192: 29(i64vec4) Load 1191
+            1193:   17(ivec4) Load 19(ballot)
+            1194: 29(i64vec4) GroupNonUniformIMul 177 PartitionedReduceNV 1192 1193
+            1195:    122(ptr) AccessChain 37(data) 1190 116
+                              Store 1195 1194
+            1196:      6(int) Load 8(invocation)
+            1197:    117(ptr) AccessChain 37(data) 39 116 40
+            1198: 28(int64_t) Load 1197
+            1199:   17(ivec4) Load 19(ballot)
+            1200: 28(int64_t) GroupNonUniformSMin 177 PartitionedReduceNV 1198 1199
+            1201:    117(ptr) AccessChain 37(data) 1196 116 40
+                              Store 1201 1200
+            1202:      6(int) Load 8(invocation)
+            1203:    122(ptr) AccessChain 37(data) 45 116
+            1204: 29(i64vec4) Load 1203
+            1205:121(i64vec2) VectorShuffle 1204 1204 0 1
+            1206:   17(ivec4) Load 19(ballot)
+            1207:121(i64vec2) GroupNonUniformSMin 177 PartitionedReduceNV 1205 1206
+            1208:    117(ptr) AccessChain 37(data) 1202 116 40
+            1209: 28(int64_t) CompositeExtract 1207 0
+                              Store 1208 1209
+            1210:    117(ptr) AccessChain 37(data) 1202 116 188
+            1211: 28(int64_t) CompositeExtract 1207 1
+                              Store 1210 1211
+            1212:      6(int) Load 8(invocation)
+            1213:    122(ptr) AccessChain 37(data) 52 116
+            1214: 29(i64vec4) Load 1213
+            1215:127(i64vec3) VectorShuffle 1214 1214 0 1 2
+            1216:   17(ivec4) Load 19(ballot)
+            1217:127(i64vec3) GroupNonUniformSMin 177 PartitionedReduceNV 1215 1216
+            1218:    117(ptr) AccessChain 37(data) 1212 116 40
+            1219: 28(int64_t) CompositeExtract 1217 0
+                              Store 1218 1219
+            1220:    117(ptr) AccessChain 37(data) 1212 116 188
+            1221: 28(int64_t) CompositeExtract 1217 1
+                              Store 1220 1221
+            1222:    117(ptr) AccessChain 37(data) 1212 116 201
+            1223: 28(int64_t) CompositeExtract 1217 2
+                              Store 1222 1223
             1224:      6(int) Load 8(invocation)
-            1225:    136(ptr) AccessChain 37(data) 39 135 40
-            1226: 30(int64_t) Load 1225
+            1225:    122(ptr) AccessChain 37(data) 58 116
+            1226: 29(i64vec4) Load 1225
             1227:   17(ivec4) Load 19(ballot)
-            1228: 30(int64_t) GroupNonUniformIAdd 177 PartitionedReduceNV 1226 1227
-            1229:    136(ptr) AccessChain 37(data) 1224 135 40
+            1228: 29(i64vec4) GroupNonUniformSMin 177 PartitionedReduceNV 1226 1227
+            1229:    122(ptr) AccessChain 37(data) 1224 116
                               Store 1229 1228
             1230:      6(int) Load 8(invocation)
-            1231:    141(ptr) AccessChain 37(data) 45 135
-            1232: 31(i64vec4) Load 1231
-            1233:140(i64vec2) VectorShuffle 1232 1232 0 1
-            1234:   17(ivec4) Load 19(ballot)
-            1235:140(i64vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 1233 1234
-            1236:    141(ptr) AccessChain 37(data) 1230 135
-            1237: 31(i64vec4) Load 1236
-            1238: 31(i64vec4) VectorShuffle 1237 1235 4 5 2 3
-                              Store 1236 1238
-            1239:      6(int) Load 8(invocation)
-            1240:    141(ptr) AccessChain 37(data) 52 135
-            1241: 31(i64vec4) Load 1240
-            1242:146(i64vec3) VectorShuffle 1241 1241 0 1 2
-            1243:   17(ivec4) Load 19(ballot)
-            1244:146(i64vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 1242 1243
-            1245:    141(ptr) AccessChain 37(data) 1239 135
-            1246: 31(i64vec4) Load 1245
-            1247: 31(i64vec4) VectorShuffle 1246 1244 4 5 6 3
-                              Store 1245 1247
-            1248:      6(int) Load 8(invocation)
-            1249:    141(ptr) AccessChain 37(data) 58 135
-            1250: 31(i64vec4) Load 1249
-            1251:   17(ivec4) Load 19(ballot)
-            1252: 31(i64vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 1250 1251
-            1253:    141(ptr) AccessChain 37(data) 1248 135
-                              Store 1253 1252
-            1254:      6(int) Load 8(invocation)
-            1255:    136(ptr) AccessChain 37(data) 39 135 40
-            1256: 30(int64_t) Load 1255
-            1257:   17(ivec4) Load 19(ballot)
-            1258: 30(int64_t) GroupNonUniformIMul 177 PartitionedReduceNV 1256 1257
-            1259:    136(ptr) AccessChain 37(data) 1254 135 40
-                              Store 1259 1258
-            1260:      6(int) Load 8(invocation)
-            1261:    141(ptr) AccessChain 37(data) 45 135
-            1262: 31(i64vec4) Load 1261
-            1263:140(i64vec2) VectorShuffle 1262 1262 0 1
-            1264:   17(ivec4) Load 19(ballot)
-            1265:140(i64vec2) GroupNonUniformIMul 177 PartitionedReduceNV 1263 1264
-            1266:    141(ptr) AccessChain 37(data) 1260 135
-            1267: 31(i64vec4) Load 1266
-            1268: 31(i64vec4) VectorShuffle 1267 1265 4 5 2 3
-                              Store 1266 1268
-            1269:      6(int) Load 8(invocation)
-            1270:    141(ptr) AccessChain 37(data) 52 135
-            1271: 31(i64vec4) Load 1270
-            1272:146(i64vec3) VectorShuffle 1271 1271 0 1 2
-            1273:   17(ivec4) Load 19(ballot)
-            1274:146(i64vec3) GroupNonUniformIMul 177 PartitionedReduceNV 1272 1273
-            1275:    141(ptr) AccessChain 37(data) 1269 135
-            1276: 31(i64vec4) Load 1275
-            1277: 31(i64vec4) VectorShuffle 1276 1274 4 5 6 3
-                              Store 1275 1277
-            1278:      6(int) Load 8(invocation)
-            1279:    141(ptr) AccessChain 37(data) 58 135
-            1280: 31(i64vec4) Load 1279
-            1281:   17(ivec4) Load 19(ballot)
-            1282: 31(i64vec4) GroupNonUniformIMul 177 PartitionedReduceNV 1280 1281
-            1283:    141(ptr) AccessChain 37(data) 1278 135
-                              Store 1283 1282
-            1284:      6(int) Load 8(invocation)
-            1285:    136(ptr) AccessChain 37(data) 39 135 40
-            1286: 30(int64_t) Load 1285
-            1287:   17(ivec4) Load 19(ballot)
-            1288: 30(int64_t) GroupNonUniformUMin 177 PartitionedReduceNV 1286 1287
-            1289:    136(ptr) AccessChain 37(data) 1284 135 40
-                              Store 1289 1288
-            1290:      6(int) Load 8(invocation)
-            1291:    141(ptr) AccessChain 37(data) 45 135
-            1292: 31(i64vec4) Load 1291
-            1293:140(i64vec2) VectorShuffle 1292 1292 0 1
-            1294:   17(ivec4) Load 19(ballot)
-            1295:140(i64vec2) GroupNonUniformUMin 177 PartitionedReduceNV 1293 1294
-            1296:    141(ptr) AccessChain 37(data) 1290 135
-            1297: 31(i64vec4) Load 1296
-            1298: 31(i64vec4) VectorShuffle 1297 1295 4 5 2 3
-                              Store 1296 1298
-            1299:      6(int) Load 8(invocation)
-            1300:    141(ptr) AccessChain 37(data) 52 135
-            1301: 31(i64vec4) Load 1300
-            1302:146(i64vec3) VectorShuffle 1301 1301 0 1 2
-            1303:   17(ivec4) Load 19(ballot)
-            1304:146(i64vec3) GroupNonUniformUMin 177 PartitionedReduceNV 1302 1303
-            1305:    141(ptr) AccessChain 37(data) 1299 135
-            1306: 31(i64vec4) Load 1305
-            1307: 31(i64vec4) VectorShuffle 1306 1304 4 5 6 3
-                              Store 1305 1307
-            1308:      6(int) Load 8(invocation)
-            1309:    141(ptr) AccessChain 37(data) 58 135
-            1310: 31(i64vec4) Load 1309
-            1311:   17(ivec4) Load 19(ballot)
-            1312: 31(i64vec4) GroupNonUniformUMin 177 PartitionedReduceNV 1310 1311
-            1313:    141(ptr) AccessChain 37(data) 1308 135
-                              Store 1313 1312
+            1231:    117(ptr) AccessChain 37(data) 39 116 40
+            1232: 28(int64_t) Load 1231
+            1233:   17(ivec4) Load 19(ballot)
+            1234: 28(int64_t) GroupNonUniformSMax 177 PartitionedReduceNV 1232 1233
+            1235:    117(ptr) AccessChain 37(data) 1230 116 40
+                              Store 1235 1234
+            1236:      6(int) Load 8(invocation)
+            1237:    122(ptr) AccessChain 37(data) 45 116
+            1238: 29(i64vec4) Load 1237
+            1239:121(i64vec2) VectorShuffle 1238 1238 0 1
+            1240:   17(ivec4) Load 19(ballot)
+            1241:121(i64vec2) GroupNonUniformSMax 177 PartitionedReduceNV 1239 1240
+            1242:    117(ptr) AccessChain 37(data) 1236 116 40
+            1243: 28(int64_t) CompositeExtract 1241 0
+                              Store 1242 1243
+            1244:    117(ptr) AccessChain 37(data) 1236 116 188
+            1245: 28(int64_t) CompositeExtract 1241 1
+                              Store 1244 1245
+            1246:      6(int) Load 8(invocation)
+            1247:    122(ptr) AccessChain 37(data) 52 116
+            1248: 29(i64vec4) Load 1247
+            1249:127(i64vec3) VectorShuffle 1248 1248 0 1 2
+            1250:   17(ivec4) Load 19(ballot)
+            1251:127(i64vec3) GroupNonUniformSMax 177 PartitionedReduceNV 1249 1250
+            1252:    117(ptr) AccessChain 37(data) 1246 116 40
+            1253: 28(int64_t) CompositeExtract 1251 0
+                              Store 1252 1253
+            1254:    117(ptr) AccessChain 37(data) 1246 116 188
+            1255: 28(int64_t) CompositeExtract 1251 1
+                              Store 1254 1255
+            1256:    117(ptr) AccessChain 37(data) 1246 116 201
+            1257: 28(int64_t) CompositeExtract 1251 2
+                              Store 1256 1257
+            1258:      6(int) Load 8(invocation)
+            1259:    122(ptr) AccessChain 37(data) 58 116
+            1260: 29(i64vec4) Load 1259
+            1261:   17(ivec4) Load 19(ballot)
+            1262: 29(i64vec4) GroupNonUniformSMax 177 PartitionedReduceNV 1260 1261
+            1263:    122(ptr) AccessChain 37(data) 1258 116
+                              Store 1263 1262
+            1264:      6(int) Load 8(invocation)
+            1265:    117(ptr) AccessChain 37(data) 39 116 40
+            1266: 28(int64_t) Load 1265
+            1267:   17(ivec4) Load 19(ballot)
+            1268: 28(int64_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1266 1267
+            1269:    117(ptr) AccessChain 37(data) 1264 116 40
+                              Store 1269 1268
+            1270:      6(int) Load 8(invocation)
+            1271:    122(ptr) AccessChain 37(data) 45 116
+            1272: 29(i64vec4) Load 1271
+            1273:121(i64vec2) VectorShuffle 1272 1272 0 1
+            1274:   17(ivec4) Load 19(ballot)
+            1275:121(i64vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1273 1274
+            1276:    117(ptr) AccessChain 37(data) 1270 116 40
+            1277: 28(int64_t) CompositeExtract 1275 0
+                              Store 1276 1277
+            1278:    117(ptr) AccessChain 37(data) 1270 116 188
+            1279: 28(int64_t) CompositeExtract 1275 1
+                              Store 1278 1279
+            1280:      6(int) Load 8(invocation)
+            1281:    122(ptr) AccessChain 37(data) 52 116
+            1282: 29(i64vec4) Load 1281
+            1283:127(i64vec3) VectorShuffle 1282 1282 0 1 2
+            1284:   17(ivec4) Load 19(ballot)
+            1285:127(i64vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1283 1284
+            1286:    117(ptr) AccessChain 37(data) 1280 116 40
+            1287: 28(int64_t) CompositeExtract 1285 0
+                              Store 1286 1287
+            1288:    117(ptr) AccessChain 37(data) 1280 116 188
+            1289: 28(int64_t) CompositeExtract 1285 1
+                              Store 1288 1289
+            1290:    117(ptr) AccessChain 37(data) 1280 116 201
+            1291: 28(int64_t) CompositeExtract 1285 2
+                              Store 1290 1291
+            1292:      6(int) Load 8(invocation)
+            1293:    122(ptr) AccessChain 37(data) 58 116
+            1294: 29(i64vec4) Load 1293
+            1295:   17(ivec4) Load 19(ballot)
+            1296: 29(i64vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1294 1295
+            1297:    122(ptr) AccessChain 37(data) 1292 116
+                              Store 1297 1296
+            1298:      6(int) Load 8(invocation)
+            1299:    117(ptr) AccessChain 37(data) 39 116 40
+            1300: 28(int64_t) Load 1299
+            1301:   17(ivec4) Load 19(ballot)
+            1302: 28(int64_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1300 1301
+            1303:    117(ptr) AccessChain 37(data) 1298 116 40
+                              Store 1303 1302
+            1304:      6(int) Load 8(invocation)
+            1305:    122(ptr) AccessChain 37(data) 45 116
+            1306: 29(i64vec4) Load 1305
+            1307:121(i64vec2) VectorShuffle 1306 1306 0 1
+            1308:   17(ivec4) Load 19(ballot)
+            1309:121(i64vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1307 1308
+            1310:    117(ptr) AccessChain 37(data) 1304 116 40
+            1311: 28(int64_t) CompositeExtract 1309 0
+                              Store 1310 1311
+            1312:    117(ptr) AccessChain 37(data) 1304 116 188
+            1313: 28(int64_t) CompositeExtract 1309 1
+                              Store 1312 1313
             1314:      6(int) Load 8(invocation)
-            1315:    136(ptr) AccessChain 37(data) 39 135 40
-            1316: 30(int64_t) Load 1315
-            1317:   17(ivec4) Load 19(ballot)
-            1318: 30(int64_t) GroupNonUniformUMax 177 PartitionedReduceNV 1316 1317
-            1319:    136(ptr) AccessChain 37(data) 1314 135 40
-                              Store 1319 1318
-            1320:      6(int) Load 8(invocation)
-            1321:    141(ptr) AccessChain 37(data) 45 135
-            1322: 31(i64vec4) Load 1321
-            1323:140(i64vec2) VectorShuffle 1322 1322 0 1
-            1324:   17(ivec4) Load 19(ballot)
-            1325:140(i64vec2) GroupNonUniformUMax 177 PartitionedReduceNV 1323 1324
-            1326:    141(ptr) AccessChain 37(data) 1320 135
-            1327: 31(i64vec4) Load 1326
-            1328: 31(i64vec4) VectorShuffle 1327 1325 4 5 2 3
-                              Store 1326 1328
-            1329:      6(int) Load 8(invocation)
-            1330:    141(ptr) AccessChain 37(data) 52 135
-            1331: 31(i64vec4) Load 1330
-            1332:146(i64vec3) VectorShuffle 1331 1331 0 1 2
-            1333:   17(ivec4) Load 19(ballot)
-            1334:146(i64vec3) GroupNonUniformUMax 177 PartitionedReduceNV 1332 1333
-            1335:    141(ptr) AccessChain 37(data) 1329 135
-            1336: 31(i64vec4) Load 1335
-            1337: 31(i64vec4) VectorShuffle 1336 1334 4 5 6 3
-                              Store 1335 1337
+            1315:    122(ptr) AccessChain 37(data) 52 116
+            1316: 29(i64vec4) Load 1315
+            1317:127(i64vec3) VectorShuffle 1316 1316 0 1 2
+            1318:   17(ivec4) Load 19(ballot)
+            1319:127(i64vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1317 1318
+            1320:    117(ptr) AccessChain 37(data) 1314 116 40
+            1321: 28(int64_t) CompositeExtract 1319 0
+                              Store 1320 1321
+            1322:    117(ptr) AccessChain 37(data) 1314 116 188
+            1323: 28(int64_t) CompositeExtract 1319 1
+                              Store 1322 1323
+            1324:    117(ptr) AccessChain 37(data) 1314 116 201
+            1325: 28(int64_t) CompositeExtract 1319 2
+                              Store 1324 1325
+            1326:      6(int) Load 8(invocation)
+            1327:    122(ptr) AccessChain 37(data) 58 116
+            1328: 29(i64vec4) Load 1327
+            1329:   17(ivec4) Load 19(ballot)
+            1330: 29(i64vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1328 1329
+            1331:    122(ptr) AccessChain 37(data) 1326 116
+                              Store 1331 1330
+            1332:      6(int) Load 8(invocation)
+            1333:    117(ptr) AccessChain 37(data) 39 116 40
+            1334: 28(int64_t) Load 1333
+            1335:   17(ivec4) Load 19(ballot)
+            1336: 28(int64_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1334 1335
+            1337:    117(ptr) AccessChain 37(data) 1332 116 40
+                              Store 1337 1336
             1338:      6(int) Load 8(invocation)
-            1339:    141(ptr) AccessChain 37(data) 58 135
-            1340: 31(i64vec4) Load 1339
-            1341:   17(ivec4) Load 19(ballot)
-            1342: 31(i64vec4) GroupNonUniformUMax 177 PartitionedReduceNV 1340 1341
-            1343:    141(ptr) AccessChain 37(data) 1338 135
-                              Store 1343 1342
-            1344:      6(int) Load 8(invocation)
-            1345:    136(ptr) AccessChain 37(data) 39 135 40
-            1346: 30(int64_t) Load 1345
-            1347:   17(ivec4) Load 19(ballot)
-            1348: 30(int64_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1346 1347
-            1349:    136(ptr) AccessChain 37(data) 1344 135 40
-                              Store 1349 1348
-            1350:      6(int) Load 8(invocation)
-            1351:    141(ptr) AccessChain 37(data) 45 135
-            1352: 31(i64vec4) Load 1351
-            1353:140(i64vec2) VectorShuffle 1352 1352 0 1
-            1354:   17(ivec4) Load 19(ballot)
-            1355:140(i64vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1353 1354
-            1356:    141(ptr) AccessChain 37(data) 1350 135
-            1357: 31(i64vec4) Load 1356
-            1358: 31(i64vec4) VectorShuffle 1357 1355 4 5 2 3
-                              Store 1356 1358
-            1359:      6(int) Load 8(invocation)
-            1360:    141(ptr) AccessChain 37(data) 52 135
-            1361: 31(i64vec4) Load 1360
-            1362:146(i64vec3) VectorShuffle 1361 1361 0 1 2
+            1339:    122(ptr) AccessChain 37(data) 45 116
+            1340: 29(i64vec4) Load 1339
+            1341:121(i64vec2) VectorShuffle 1340 1340 0 1
+            1342:   17(ivec4) Load 19(ballot)
+            1343:121(i64vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1341 1342
+            1344:    117(ptr) AccessChain 37(data) 1338 116 40
+            1345: 28(int64_t) CompositeExtract 1343 0
+                              Store 1344 1345
+            1346:    117(ptr) AccessChain 37(data) 1338 116 188
+            1347: 28(int64_t) CompositeExtract 1343 1
+                              Store 1346 1347
+            1348:      6(int) Load 8(invocation)
+            1349:    122(ptr) AccessChain 37(data) 52 116
+            1350: 29(i64vec4) Load 1349
+            1351:127(i64vec3) VectorShuffle 1350 1350 0 1 2
+            1352:   17(ivec4) Load 19(ballot)
+            1353:127(i64vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1351 1352
+            1354:    117(ptr) AccessChain 37(data) 1348 116 40
+            1355: 28(int64_t) CompositeExtract 1353 0
+                              Store 1354 1355
+            1356:    117(ptr) AccessChain 37(data) 1348 116 188
+            1357: 28(int64_t) CompositeExtract 1353 1
+                              Store 1356 1357
+            1358:    117(ptr) AccessChain 37(data) 1348 116 201
+            1359: 28(int64_t) CompositeExtract 1353 2
+                              Store 1358 1359
+            1360:      6(int) Load 8(invocation)
+            1361:    122(ptr) AccessChain 37(data) 58 116
+            1362: 29(i64vec4) Load 1361
             1363:   17(ivec4) Load 19(ballot)
-            1364:146(i64vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1362 1363
-            1365:    141(ptr) AccessChain 37(data) 1359 135
-            1366: 31(i64vec4) Load 1365
-            1367: 31(i64vec4) VectorShuffle 1366 1364 4 5 6 3
-                              Store 1365 1367
-            1368:      6(int) Load 8(invocation)
-            1369:    141(ptr) AccessChain 37(data) 58 135
-            1370: 31(i64vec4) Load 1369
-            1371:   17(ivec4) Load 19(ballot)
-            1372: 31(i64vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1370 1371
-            1373:    141(ptr) AccessChain 37(data) 1368 135
-                              Store 1373 1372
-            1374:      6(int) Load 8(invocation)
-            1375:    136(ptr) AccessChain 37(data) 39 135 40
-            1376: 30(int64_t) Load 1375
-            1377:   17(ivec4) Load 19(ballot)
-            1378: 30(int64_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1376 1377
-            1379:    136(ptr) AccessChain 37(data) 1374 135 40
-                              Store 1379 1378
-            1380:      6(int) Load 8(invocation)
-            1381:    141(ptr) AccessChain 37(data) 45 135
-            1382: 31(i64vec4) Load 1381
-            1383:140(i64vec2) VectorShuffle 1382 1382 0 1
-            1384:   17(ivec4) Load 19(ballot)
-            1385:140(i64vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1383 1384
-            1386:    141(ptr) AccessChain 37(data) 1380 135
-            1387: 31(i64vec4) Load 1386
-            1388: 31(i64vec4) VectorShuffle 1387 1385 4 5 2 3
-                              Store 1386 1388
-            1389:      6(int) Load 8(invocation)
-            1390:    141(ptr) AccessChain 37(data) 52 135
-            1391: 31(i64vec4) Load 1390
-            1392:146(i64vec3) VectorShuffle 1391 1391 0 1 2
-            1393:   17(ivec4) Load 19(ballot)
-            1394:146(i64vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1392 1393
-            1395:    141(ptr) AccessChain 37(data) 1389 135
+            1364: 29(i64vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1362 1363
+            1365:    122(ptr) AccessChain 37(data) 1360 116
+                              Store 1365 1364
+            1366:      6(int) Load 8(invocation)
+            1367:    136(ptr) AccessChain 37(data) 39 135 40
+            1368: 30(int64_t) Load 1367
+            1369:   17(ivec4) Load 19(ballot)
+            1370: 30(int64_t) GroupNonUniformIAdd 177 PartitionedReduceNV 1368 1369
+            1371:    136(ptr) AccessChain 37(data) 1366 135 40
+                              Store 1371 1370
+            1372:      6(int) Load 8(invocation)
+            1373:    141(ptr) AccessChain 37(data) 45 135
+            1374: 31(i64vec4) Load 1373
+            1375:140(i64vec2) VectorShuffle 1374 1374 0 1
+            1376:   17(ivec4) Load 19(ballot)
+            1377:140(i64vec2) GroupNonUniformIAdd 177 PartitionedReduceNV 1375 1376
+            1378:    136(ptr) AccessChain 37(data) 1372 135 40
+            1379: 30(int64_t) CompositeExtract 1377 0
+                              Store 1378 1379
+            1380:    136(ptr) AccessChain 37(data) 1372 135 188
+            1381: 30(int64_t) CompositeExtract 1377 1
+                              Store 1380 1381
+            1382:      6(int) Load 8(invocation)
+            1383:    141(ptr) AccessChain 37(data) 52 135
+            1384: 31(i64vec4) Load 1383
+            1385:146(i64vec3) VectorShuffle 1384 1384 0 1 2
+            1386:   17(ivec4) Load 19(ballot)
+            1387:146(i64vec3) GroupNonUniformIAdd 177 PartitionedReduceNV 1385 1386
+            1388:    136(ptr) AccessChain 37(data) 1382 135 40
+            1389: 30(int64_t) CompositeExtract 1387 0
+                              Store 1388 1389
+            1390:    136(ptr) AccessChain 37(data) 1382 135 188
+            1391: 30(int64_t) CompositeExtract 1387 1
+                              Store 1390 1391
+            1392:    136(ptr) AccessChain 37(data) 1382 135 201
+            1393: 30(int64_t) CompositeExtract 1387 2
+                              Store 1392 1393
+            1394:      6(int) Load 8(invocation)
+            1395:    141(ptr) AccessChain 37(data) 58 135
             1396: 31(i64vec4) Load 1395
-            1397: 31(i64vec4) VectorShuffle 1396 1394 4 5 6 3
-                              Store 1395 1397
-            1398:      6(int) Load 8(invocation)
-            1399:    141(ptr) AccessChain 37(data) 58 135
-            1400: 31(i64vec4) Load 1399
-            1401:   17(ivec4) Load 19(ballot)
-            1402: 31(i64vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1400 1401
-            1403:    141(ptr) AccessChain 37(data) 1398 135
-                              Store 1403 1402
-            1404:      6(int) Load 8(invocation)
-            1405:    136(ptr) AccessChain 37(data) 39 135 40
-            1406: 30(int64_t) Load 1405
-            1407:   17(ivec4) Load 19(ballot)
-            1408: 30(int64_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1406 1407
-            1409:    136(ptr) AccessChain 37(data) 1404 135 40
-                              Store 1409 1408
-            1410:      6(int) Load 8(invocation)
-            1411:    141(ptr) AccessChain 37(data) 45 135
-            1412: 31(i64vec4) Load 1411
-            1413:140(i64vec2) VectorShuffle 1412 1412 0 1
-            1414:   17(ivec4) Load 19(ballot)
-            1415:140(i64vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1413 1414
-            1416:    141(ptr) AccessChain 37(data) 1410 135
-            1417: 31(i64vec4) Load 1416
-            1418: 31(i64vec4) VectorShuffle 1417 1415 4 5 2 3
-                              Store 1416 1418
-            1419:      6(int) Load 8(invocation)
-            1420:    141(ptr) AccessChain 37(data) 52 135
-            1421: 31(i64vec4) Load 1420
-            1422:146(i64vec3) VectorShuffle 1421 1421 0 1 2
-            1423:   17(ivec4) Load 19(ballot)
-            1424:146(i64vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1422 1423
-            1425:    141(ptr) AccessChain 37(data) 1419 135
-            1426: 31(i64vec4) Load 1425
-            1427: 31(i64vec4) VectorShuffle 1426 1424 4 5 6 3
-                              Store 1425 1427
+            1397:   17(ivec4) Load 19(ballot)
+            1398: 31(i64vec4) GroupNonUniformIAdd 177 PartitionedReduceNV 1396 1397
+            1399:    141(ptr) AccessChain 37(data) 1394 135
+                              Store 1399 1398
+            1400:      6(int) Load 8(invocation)
+            1401:    136(ptr) AccessChain 37(data) 39 135 40
+            1402: 30(int64_t) Load 1401
+            1403:   17(ivec4) Load 19(ballot)
+            1404: 30(int64_t) GroupNonUniformIMul 177 PartitionedReduceNV 1402 1403
+            1405:    136(ptr) AccessChain 37(data) 1400 135 40
+                              Store 1405 1404
+            1406:      6(int) Load 8(invocation)
+            1407:    141(ptr) AccessChain 37(data) 45 135
+            1408: 31(i64vec4) Load 1407
+            1409:140(i64vec2) VectorShuffle 1408 1408 0 1
+            1410:   17(ivec4) Load 19(ballot)
+            1411:140(i64vec2) GroupNonUniformIMul 177 PartitionedReduceNV 1409 1410
+            1412:    136(ptr) AccessChain 37(data) 1406 135 40
+            1413: 30(int64_t) CompositeExtract 1411 0
+                              Store 1412 1413
+            1414:    136(ptr) AccessChain 37(data) 1406 135 188
+            1415: 30(int64_t) CompositeExtract 1411 1
+                              Store 1414 1415
+            1416:      6(int) Load 8(invocation)
+            1417:    141(ptr) AccessChain 37(data) 52 135
+            1418: 31(i64vec4) Load 1417
+            1419:146(i64vec3) VectorShuffle 1418 1418 0 1 2
+            1420:   17(ivec4) Load 19(ballot)
+            1421:146(i64vec3) GroupNonUniformIMul 177 PartitionedReduceNV 1419 1420
+            1422:    136(ptr) AccessChain 37(data) 1416 135 40
+            1423: 30(int64_t) CompositeExtract 1421 0
+                              Store 1422 1423
+            1424:    136(ptr) AccessChain 37(data) 1416 135 188
+            1425: 30(int64_t) CompositeExtract 1421 1
+                              Store 1424 1425
+            1426:    136(ptr) AccessChain 37(data) 1416 135 201
+            1427: 30(int64_t) CompositeExtract 1421 2
+                              Store 1426 1427
             1428:      6(int) Load 8(invocation)
             1429:    141(ptr) AccessChain 37(data) 58 135
             1430: 31(i64vec4) Load 1429
             1431:   17(ivec4) Load 19(ballot)
-            1432: 31(i64vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1430 1431
+            1432: 31(i64vec4) GroupNonUniformIMul 177 PartitionedReduceNV 1430 1431
             1433:    141(ptr) AccessChain 37(data) 1428 135
                               Store 1433 1432
             1434:      6(int) Load 8(invocation)
-            1435:    155(ptr) AccessChain 37(data) 39 154 40
-            1436:32(float16_t) Load 1435
+            1435:    136(ptr) AccessChain 37(data) 39 135 40
+            1436: 30(int64_t) Load 1435
             1437:   17(ivec4) Load 19(ballot)
-            1438:32(float16_t) GroupNonUniformFAdd 177 PartitionedReduceNV 1436 1437
-            1439:    155(ptr) AccessChain 37(data) 1434 154 40
+            1438: 30(int64_t) GroupNonUniformUMin 177 PartitionedReduceNV 1436 1437
+            1439:    136(ptr) AccessChain 37(data) 1434 135 40
                               Store 1439 1438
             1440:      6(int) Load 8(invocation)
-            1441:    160(ptr) AccessChain 37(data) 45 154
-            1442: 33(f16vec4) Load 1441
-            1443:159(f16vec2) VectorShuffle 1442 1442 0 1
+            1441:    141(ptr) AccessChain 37(data) 45 135
+            1442: 31(i64vec4) Load 1441
+            1443:140(i64vec2) VectorShuffle 1442 1442 0 1
             1444:   17(ivec4) Load 19(ballot)
-            1445:159(f16vec2) GroupNonUniformFAdd 177 PartitionedReduceNV 1443 1444
-            1446:    160(ptr) AccessChain 37(data) 1440 154
-            1447: 33(f16vec4) Load 1446
-            1448: 33(f16vec4) VectorShuffle 1447 1445 4 5 2 3
-                              Store 1446 1448
-            1449:      6(int) Load 8(invocation)
-            1450:    160(ptr) AccessChain 37(data) 52 154
-            1451: 33(f16vec4) Load 1450
-            1452:165(f16vec3) VectorShuffle 1451 1451 0 1 2
-            1453:   17(ivec4) Load 19(ballot)
-            1454:165(f16vec3) GroupNonUniformFAdd 177 PartitionedReduceNV 1452 1453
-            1455:    160(ptr) AccessChain 37(data) 1449 154
-            1456: 33(f16vec4) Load 1455
-            1457: 33(f16vec4) VectorShuffle 1456 1454 4 5 6 3
-                              Store 1455 1457
-            1458:      6(int) Load 8(invocation)
-            1459:    160(ptr) AccessChain 37(data) 58 154
-            1460: 33(f16vec4) Load 1459
-            1461:   17(ivec4) Load 19(ballot)
-            1462: 33(f16vec4) GroupNonUniformFAdd 177 PartitionedReduceNV 1460 1461
-            1463:    160(ptr) AccessChain 37(data) 1458 154
-                              Store 1463 1462
-            1464:      6(int) Load 8(invocation)
-            1465:    155(ptr) AccessChain 37(data) 39 154 40
-            1466:32(float16_t) Load 1465
-            1467:   17(ivec4) Load 19(ballot)
-            1468:32(float16_t) GroupNonUniformFMul 177 PartitionedReduceNV 1466 1467
-            1469:    155(ptr) AccessChain 37(data) 1464 154 40
-                              Store 1469 1468
-            1470:      6(int) Load 8(invocation)
-            1471:    160(ptr) AccessChain 37(data) 45 154
-            1472: 33(f16vec4) Load 1471
-            1473:159(f16vec2) VectorShuffle 1472 1472 0 1
-            1474:   17(ivec4) Load 19(ballot)
-            1475:159(f16vec2) GroupNonUniformFMul 177 PartitionedReduceNV 1473 1474
-            1476:    160(ptr) AccessChain 37(data) 1470 154
-            1477: 33(f16vec4) Load 1476
-            1478: 33(f16vec4) VectorShuffle 1477 1475 4 5 2 3
-                              Store 1476 1478
-            1479:      6(int) Load 8(invocation)
-            1480:    160(ptr) AccessChain 37(data) 52 154
-            1481: 33(f16vec4) Load 1480
-            1482:165(f16vec3) VectorShuffle 1481 1481 0 1 2
-            1483:   17(ivec4) Load 19(ballot)
-            1484:165(f16vec3) GroupNonUniformFMul 177 PartitionedReduceNV 1482 1483
-            1485:    160(ptr) AccessChain 37(data) 1479 154
-            1486: 33(f16vec4) Load 1485
-            1487: 33(f16vec4) VectorShuffle 1486 1484 4 5 6 3
-                              Store 1485 1487
-            1488:      6(int) Load 8(invocation)
-            1489:    160(ptr) AccessChain 37(data) 58 154
-            1490: 33(f16vec4) Load 1489
-            1491:   17(ivec4) Load 19(ballot)
-            1492: 33(f16vec4) GroupNonUniformFMul 177 PartitionedReduceNV 1490 1491
-            1493:    160(ptr) AccessChain 37(data) 1488 154
-                              Store 1493 1492
-            1494:      6(int) Load 8(invocation)
-            1495:    155(ptr) AccessChain 37(data) 39 154 40
-            1496:32(float16_t) Load 1495
-            1497:   17(ivec4) Load 19(ballot)
-            1498:32(float16_t) GroupNonUniformFMin 177 PartitionedReduceNV 1496 1497
-            1499:    155(ptr) AccessChain 37(data) 1494 154 40
-                              Store 1499 1498
-            1500:      6(int) Load 8(invocation)
-            1501:    160(ptr) AccessChain 37(data) 45 154
-            1502: 33(f16vec4) Load 1501
-            1503:159(f16vec2) VectorShuffle 1502 1502 0 1
-            1504:   17(ivec4) Load 19(ballot)
-            1505:159(f16vec2) GroupNonUniformFMin 177 PartitionedReduceNV 1503 1504
-            1506:    160(ptr) AccessChain 37(data) 1500 154
-            1507: 33(f16vec4) Load 1506
-            1508: 33(f16vec4) VectorShuffle 1507 1505 4 5 2 3
-                              Store 1506 1508
-            1509:      6(int) Load 8(invocation)
-            1510:    160(ptr) AccessChain 37(data) 52 154
-            1511: 33(f16vec4) Load 1510
-            1512:165(f16vec3) VectorShuffle 1511 1511 0 1 2
-            1513:   17(ivec4) Load 19(ballot)
-            1514:165(f16vec3) GroupNonUniformFMin 177 PartitionedReduceNV 1512 1513
-            1515:    160(ptr) AccessChain 37(data) 1509 154
-            1516: 33(f16vec4) Load 1515
-            1517: 33(f16vec4) VectorShuffle 1516 1514 4 5 6 3
-                              Store 1515 1517
+            1445:140(i64vec2) GroupNonUniformUMin 177 PartitionedReduceNV 1443 1444
+            1446:    136(ptr) AccessChain 37(data) 1440 135 40
+            1447: 30(int64_t) CompositeExtract 1445 0
+                              Store 1446 1447
+            1448:    136(ptr) AccessChain 37(data) 1440 135 188
+            1449: 30(int64_t) CompositeExtract 1445 1
+                              Store 1448 1449
+            1450:      6(int) Load 8(invocation)
+            1451:    141(ptr) AccessChain 37(data) 52 135
+            1452: 31(i64vec4) Load 1451
+            1453:146(i64vec3) VectorShuffle 1452 1452 0 1 2
+            1454:   17(ivec4) Load 19(ballot)
+            1455:146(i64vec3) GroupNonUniformUMin 177 PartitionedReduceNV 1453 1454
+            1456:    136(ptr) AccessChain 37(data) 1450 135 40
+            1457: 30(int64_t) CompositeExtract 1455 0
+                              Store 1456 1457
+            1458:    136(ptr) AccessChain 37(data) 1450 135 188
+            1459: 30(int64_t) CompositeExtract 1455 1
+                              Store 1458 1459
+            1460:    136(ptr) AccessChain 37(data) 1450 135 201
+            1461: 30(int64_t) CompositeExtract 1455 2
+                              Store 1460 1461
+            1462:      6(int) Load 8(invocation)
+            1463:    141(ptr) AccessChain 37(data) 58 135
+            1464: 31(i64vec4) Load 1463
+            1465:   17(ivec4) Load 19(ballot)
+            1466: 31(i64vec4) GroupNonUniformUMin 177 PartitionedReduceNV 1464 1465
+            1467:    141(ptr) AccessChain 37(data) 1462 135
+                              Store 1467 1466
+            1468:      6(int) Load 8(invocation)
+            1469:    136(ptr) AccessChain 37(data) 39 135 40
+            1470: 30(int64_t) Load 1469
+            1471:   17(ivec4) Load 19(ballot)
+            1472: 30(int64_t) GroupNonUniformUMax 177 PartitionedReduceNV 1470 1471
+            1473:    136(ptr) AccessChain 37(data) 1468 135 40
+                              Store 1473 1472
+            1474:      6(int) Load 8(invocation)
+            1475:    141(ptr) AccessChain 37(data) 45 135
+            1476: 31(i64vec4) Load 1475
+            1477:140(i64vec2) VectorShuffle 1476 1476 0 1
+            1478:   17(ivec4) Load 19(ballot)
+            1479:140(i64vec2) GroupNonUniformUMax 177 PartitionedReduceNV 1477 1478
+            1480:    136(ptr) AccessChain 37(data) 1474 135 40
+            1481: 30(int64_t) CompositeExtract 1479 0
+                              Store 1480 1481
+            1482:    136(ptr) AccessChain 37(data) 1474 135 188
+            1483: 30(int64_t) CompositeExtract 1479 1
+                              Store 1482 1483
+            1484:      6(int) Load 8(invocation)
+            1485:    141(ptr) AccessChain 37(data) 52 135
+            1486: 31(i64vec4) Load 1485
+            1487:146(i64vec3) VectorShuffle 1486 1486 0 1 2
+            1488:   17(ivec4) Load 19(ballot)
+            1489:146(i64vec3) GroupNonUniformUMax 177 PartitionedReduceNV 1487 1488
+            1490:    136(ptr) AccessChain 37(data) 1484 135 40
+            1491: 30(int64_t) CompositeExtract 1489 0
+                              Store 1490 1491
+            1492:    136(ptr) AccessChain 37(data) 1484 135 188
+            1493: 30(int64_t) CompositeExtract 1489 1
+                              Store 1492 1493
+            1494:    136(ptr) AccessChain 37(data) 1484 135 201
+            1495: 30(int64_t) CompositeExtract 1489 2
+                              Store 1494 1495
+            1496:      6(int) Load 8(invocation)
+            1497:    141(ptr) AccessChain 37(data) 58 135
+            1498: 31(i64vec4) Load 1497
+            1499:   17(ivec4) Load 19(ballot)
+            1500: 31(i64vec4) GroupNonUniformUMax 177 PartitionedReduceNV 1498 1499
+            1501:    141(ptr) AccessChain 37(data) 1496 135
+                              Store 1501 1500
+            1502:      6(int) Load 8(invocation)
+            1503:    136(ptr) AccessChain 37(data) 39 135 40
+            1504: 30(int64_t) Load 1503
+            1505:   17(ivec4) Load 19(ballot)
+            1506: 30(int64_t) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1504 1505
+            1507:    136(ptr) AccessChain 37(data) 1502 135 40
+                              Store 1507 1506
+            1508:      6(int) Load 8(invocation)
+            1509:    141(ptr) AccessChain 37(data) 45 135
+            1510: 31(i64vec4) Load 1509
+            1511:140(i64vec2) VectorShuffle 1510 1510 0 1
+            1512:   17(ivec4) Load 19(ballot)
+            1513:140(i64vec2) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1511 1512
+            1514:    136(ptr) AccessChain 37(data) 1508 135 40
+            1515: 30(int64_t) CompositeExtract 1513 0
+                              Store 1514 1515
+            1516:    136(ptr) AccessChain 37(data) 1508 135 188
+            1517: 30(int64_t) CompositeExtract 1513 1
+                              Store 1516 1517
             1518:      6(int) Load 8(invocation)
-            1519:    160(ptr) AccessChain 37(data) 58 154
-            1520: 33(f16vec4) Load 1519
-            1521:   17(ivec4) Load 19(ballot)
-            1522: 33(f16vec4) GroupNonUniformFMin 177 PartitionedReduceNV 1520 1521
-            1523:    160(ptr) AccessChain 37(data) 1518 154
-                              Store 1523 1522
-            1524:      6(int) Load 8(invocation)
-            1525:    155(ptr) AccessChain 37(data) 39 154 40
-            1526:32(float16_t) Load 1525
-            1527:   17(ivec4) Load 19(ballot)
-            1528:32(float16_t) GroupNonUniformFMax 177 PartitionedReduceNV 1526 1527
-            1529:    155(ptr) AccessChain 37(data) 1524 154 40
-                              Store 1529 1528
+            1519:    141(ptr) AccessChain 37(data) 52 135
+            1520: 31(i64vec4) Load 1519
+            1521:146(i64vec3) VectorShuffle 1520 1520 0 1 2
+            1522:   17(ivec4) Load 19(ballot)
+            1523:146(i64vec3) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1521 1522
+            1524:    136(ptr) AccessChain 37(data) 1518 135 40
+            1525: 30(int64_t) CompositeExtract 1523 0
+                              Store 1524 1525
+            1526:    136(ptr) AccessChain 37(data) 1518 135 188
+            1527: 30(int64_t) CompositeExtract 1523 1
+                              Store 1526 1527
+            1528:    136(ptr) AccessChain 37(data) 1518 135 201
+            1529: 30(int64_t) CompositeExtract 1523 2
+                              Store 1528 1529
             1530:      6(int) Load 8(invocation)
-            1531:    160(ptr) AccessChain 37(data) 45 154
-            1532: 33(f16vec4) Load 1531
-            1533:159(f16vec2) VectorShuffle 1532 1532 0 1
-            1534:   17(ivec4) Load 19(ballot)
-            1535:159(f16vec2) GroupNonUniformFMax 177 PartitionedReduceNV 1533 1534
-            1536:    160(ptr) AccessChain 37(data) 1530 154
-            1537: 33(f16vec4) Load 1536
-            1538: 33(f16vec4) VectorShuffle 1537 1535 4 5 2 3
-                              Store 1536 1538
-            1539:      6(int) Load 8(invocation)
-            1540:    160(ptr) AccessChain 37(data) 52 154
-            1541: 33(f16vec4) Load 1540
-            1542:165(f16vec3) VectorShuffle 1541 1541 0 1 2
-            1543:   17(ivec4) Load 19(ballot)
-            1544:165(f16vec3) GroupNonUniformFMax 177 PartitionedReduceNV 1542 1543
-            1545:    160(ptr) AccessChain 37(data) 1539 154
-            1546: 33(f16vec4) Load 1545
-            1547: 33(f16vec4) VectorShuffle 1546 1544 4 5 6 3
-                              Store 1545 1547
-            1548:      6(int) Load 8(invocation)
-            1549:    160(ptr) AccessChain 37(data) 58 154
-            1550: 33(f16vec4) Load 1549
-            1551:   17(ivec4) Load 19(ballot)
-            1552: 33(f16vec4) GroupNonUniformFMax 177 PartitionedReduceNV 1550 1551
-            1553:    160(ptr) AccessChain 37(data) 1548 154
-                              Store 1553 1552
+            1531:    141(ptr) AccessChain 37(data) 58 135
+            1532: 31(i64vec4) Load 1531
+            1533:   17(ivec4) Load 19(ballot)
+            1534: 31(i64vec4) GroupNonUniformBitwiseAnd 177 PartitionedReduceNV 1532 1533
+            1535:    141(ptr) AccessChain 37(data) 1530 135
+                              Store 1535 1534
+            1536:      6(int) Load 8(invocation)
+            1537:    136(ptr) AccessChain 37(data) 39 135 40
+            1538: 30(int64_t) Load 1537
+            1539:   17(ivec4) Load 19(ballot)
+            1540: 30(int64_t) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1538 1539
+            1541:    136(ptr) AccessChain 37(data) 1536 135 40
+                              Store 1541 1540
+            1542:      6(int) Load 8(invocation)
+            1543:    141(ptr) AccessChain 37(data) 45 135
+            1544: 31(i64vec4) Load 1543
+            1545:140(i64vec2) VectorShuffle 1544 1544 0 1
+            1546:   17(ivec4) Load 19(ballot)
+            1547:140(i64vec2) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1545 1546
+            1548:    136(ptr) AccessChain 37(data) 1542 135 40
+            1549: 30(int64_t) CompositeExtract 1547 0
+                              Store 1548 1549
+            1550:    136(ptr) AccessChain 37(data) 1542 135 188
+            1551: 30(int64_t) CompositeExtract 1547 1
+                              Store 1550 1551
+            1552:      6(int) Load 8(invocation)
+            1553:    141(ptr) AccessChain 37(data) 52 135
+            1554: 31(i64vec4) Load 1553
+            1555:146(i64vec3) VectorShuffle 1554 1554 0 1 2
+            1556:   17(ivec4) Load 19(ballot)
+            1557:146(i64vec3) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1555 1556
+            1558:    136(ptr) AccessChain 37(data) 1552 135 40
+            1559: 30(int64_t) CompositeExtract 1557 0
+                              Store 1558 1559
+            1560:    136(ptr) AccessChain 37(data) 1552 135 188
+            1561: 30(int64_t) CompositeExtract 1557 1
+                              Store 1560 1561
+            1562:    136(ptr) AccessChain 37(data) 1552 135 201
+            1563: 30(int64_t) CompositeExtract 1557 2
+                              Store 1562 1563
+            1564:      6(int) Load 8(invocation)
+            1565:    141(ptr) AccessChain 37(data) 58 135
+            1566: 31(i64vec4) Load 1565
+            1567:   17(ivec4) Load 19(ballot)
+            1568: 31(i64vec4) GroupNonUniformBitwiseOr 177 PartitionedReduceNV 1566 1567
+            1569:    141(ptr) AccessChain 37(data) 1564 135
+                              Store 1569 1568
+            1570:      6(int) Load 8(invocation)
+            1571:    136(ptr) AccessChain 37(data) 39 135 40
+            1572: 30(int64_t) Load 1571
+            1573:   17(ivec4) Load 19(ballot)
+            1574: 30(int64_t) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1572 1573
+            1575:    136(ptr) AccessChain 37(data) 1570 135 40
+                              Store 1575 1574
+            1576:      6(int) Load 8(invocation)
+            1577:    141(ptr) AccessChain 37(data) 45 135
+            1578: 31(i64vec4) Load 1577
+            1579:140(i64vec2) VectorShuffle 1578 1578 0 1
+            1580:   17(ivec4) Load 19(ballot)
+            1581:140(i64vec2) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1579 1580
+            1582:    136(ptr) AccessChain 37(data) 1576 135 40
+            1583: 30(int64_t) CompositeExtract 1581 0
+                              Store 1582 1583
+            1584:    136(ptr) AccessChain 37(data) 1576 135 188
+            1585: 30(int64_t) CompositeExtract 1581 1
+                              Store 1584 1585
+            1586:      6(int) Load 8(invocation)
+            1587:    141(ptr) AccessChain 37(data) 52 135
+            1588: 31(i64vec4) Load 1587
+            1589:146(i64vec3) VectorShuffle 1588 1588 0 1 2
+            1590:   17(ivec4) Load 19(ballot)
+            1591:146(i64vec3) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1589 1590
+            1592:    136(ptr) AccessChain 37(data) 1586 135 40
+            1593: 30(int64_t) CompositeExtract 1591 0
+                              Store 1592 1593
+            1594:    136(ptr) AccessChain 37(data) 1586 135 188
+            1595: 30(int64_t) CompositeExtract 1591 1
+                              Store 1594 1595
+            1596:    136(ptr) AccessChain 37(data) 1586 135 201
+            1597: 30(int64_t) CompositeExtract 1591 2
+                              Store 1596 1597
+            1598:      6(int) Load 8(invocation)
+            1599:    141(ptr) AccessChain 37(data) 58 135
+            1600: 31(i64vec4) Load 1599
+            1601:   17(ivec4) Load 19(ballot)
+            1602: 31(i64vec4) GroupNonUniformBitwiseXor 177 PartitionedReduceNV 1600 1601
+            1603:    141(ptr) AccessChain 37(data) 1598 135
+                              Store 1603 1602
+            1604:      6(int) Load 8(invocation)
+            1605:    155(ptr) AccessChain 37(data) 39 154 40
+            1606:32(float16_t) Load 1605
+            1607:   17(ivec4) Load 19(ballot)
+            1608:32(float16_t) GroupNonUniformFAdd 177 PartitionedReduceNV 1606 1607
+            1609:    155(ptr) AccessChain 37(data) 1604 154 40
+                              Store 1609 1608
+            1610:      6(int) Load 8(invocation)
+            1611:    160(ptr) AccessChain 37(data) 45 154
+            1612: 33(f16vec4) Load 1611
+            1613:159(f16vec2) VectorShuffle 1612 1612 0 1
+            1614:   17(ivec4) Load 19(ballot)
+            1615:159(f16vec2) GroupNonUniformFAdd 177 PartitionedReduceNV 1613 1614
+            1616:    155(ptr) AccessChain 37(data) 1610 154 40
+            1617:32(float16_t) CompositeExtract 1615 0
+                              Store 1616 1617
+            1618:    155(ptr) AccessChain 37(data) 1610 154 188
+            1619:32(float16_t) CompositeExtract 1615 1
+                              Store 1618 1619
+            1620:      6(int) Load 8(invocation)
+            1621:    160(ptr) AccessChain 37(data) 52 154
+            1622: 33(f16vec4) Load 1621
+            1623:165(f16vec3) VectorShuffle 1622 1622 0 1 2
+            1624:   17(ivec4) Load 19(ballot)
+            1625:165(f16vec3) GroupNonUniformFAdd 177 PartitionedReduceNV 1623 1624
+            1626:    155(ptr) AccessChain 37(data) 1620 154 40
+            1627:32(float16_t) CompositeExtract 1625 0
+                              Store 1626 1627
+            1628:    155(ptr) AccessChain 37(data) 1620 154 188
+            1629:32(float16_t) CompositeExtract 1625 1
+                              Store 1628 1629
+            1630:    155(ptr) AccessChain 37(data) 1620 154 201
+            1631:32(float16_t) CompositeExtract 1625 2
+                              Store 1630 1631
+            1632:      6(int) Load 8(invocation)
+            1633:    160(ptr) AccessChain 37(data) 58 154
+            1634: 33(f16vec4) Load 1633
+            1635:   17(ivec4) Load 19(ballot)
+            1636: 33(f16vec4) GroupNonUniformFAdd 177 PartitionedReduceNV 1634 1635
+            1637:    160(ptr) AccessChain 37(data) 1632 154
+                              Store 1637 1636
+            1638:      6(int) Load 8(invocation)
+            1639:    155(ptr) AccessChain 37(data) 39 154 40
+            1640:32(float16_t) Load 1639
+            1641:   17(ivec4) Load 19(ballot)
+            1642:32(float16_t) GroupNonUniformFMul 177 PartitionedReduceNV 1640 1641
+            1643:    155(ptr) AccessChain 37(data) 1638 154 40
+                              Store 1643 1642
+            1644:      6(int) Load 8(invocation)
+            1645:    160(ptr) AccessChain 37(data) 45 154
+            1646: 33(f16vec4) Load 1645
+            1647:159(f16vec2) VectorShuffle 1646 1646 0 1
+            1648:   17(ivec4) Load 19(ballot)
+            1649:159(f16vec2) GroupNonUniformFMul 177 PartitionedReduceNV 1647 1648
+            1650:    155(ptr) AccessChain 37(data) 1644 154 40
+            1651:32(float16_t) CompositeExtract 1649 0
+                              Store 1650 1651
+            1652:    155(ptr) AccessChain 37(data) 1644 154 188
+            1653:32(float16_t) CompositeExtract 1649 1
+                              Store 1652 1653
+            1654:      6(int) Load 8(invocation)
+            1655:    160(ptr) AccessChain 37(data) 52 154
+            1656: 33(f16vec4) Load 1655
+            1657:165(f16vec3) VectorShuffle 1656 1656 0 1 2
+            1658:   17(ivec4) Load 19(ballot)
+            1659:165(f16vec3) GroupNonUniformFMul 177 PartitionedReduceNV 1657 1658
+            1660:    155(ptr) AccessChain 37(data) 1654 154 40
+            1661:32(float16_t) CompositeExtract 1659 0
+                              Store 1660 1661
+            1662:    155(ptr) AccessChain 37(data) 1654 154 188
+            1663:32(float16_t) CompositeExtract 1659 1
+                              Store 1662 1663
+            1664:    155(ptr) AccessChain 37(data) 1654 154 201
+            1665:32(float16_t) CompositeExtract 1659 2
+                              Store 1664 1665
+            1666:      6(int) Load 8(invocation)
+            1667:    160(ptr) AccessChain 37(data) 58 154
+            1668: 33(f16vec4) Load 1667
+            1669:   17(ivec4) Load 19(ballot)
+            1670: 33(f16vec4) GroupNonUniformFMul 177 PartitionedReduceNV 1668 1669
+            1671:    160(ptr) AccessChain 37(data) 1666 154
+                              Store 1671 1670
+            1672:      6(int) Load 8(invocation)
+            1673:    155(ptr) AccessChain 37(data) 39 154 40
+            1674:32(float16_t) Load 1673
+            1675:   17(ivec4) Load 19(ballot)
+            1676:32(float16_t) GroupNonUniformFMin 177 PartitionedReduceNV 1674 1675
+            1677:    155(ptr) AccessChain 37(data) 1672 154 40
+                              Store 1677 1676
+            1678:      6(int) Load 8(invocation)
+            1679:    160(ptr) AccessChain 37(data) 45 154
+            1680: 33(f16vec4) Load 1679
+            1681:159(f16vec2) VectorShuffle 1680 1680 0 1
+            1682:   17(ivec4) Load 19(ballot)
+            1683:159(f16vec2) GroupNonUniformFMin 177 PartitionedReduceNV 1681 1682
+            1684:    155(ptr) AccessChain 37(data) 1678 154 40
+            1685:32(float16_t) CompositeExtract 1683 0
+                              Store 1684 1685
+            1686:    155(ptr) AccessChain 37(data) 1678 154 188
+            1687:32(float16_t) CompositeExtract 1683 1
+                              Store 1686 1687
+            1688:      6(int) Load 8(invocation)
+            1689:    160(ptr) AccessChain 37(data) 52 154
+            1690: 33(f16vec4) Load 1689
+            1691:165(f16vec3) VectorShuffle 1690 1690 0 1 2
+            1692:   17(ivec4) Load 19(ballot)
+            1693:165(f16vec3) GroupNonUniformFMin 177 PartitionedReduceNV 1691 1692
+            1694:    155(ptr) AccessChain 37(data) 1688 154 40
+            1695:32(float16_t) CompositeExtract 1693 0
+                              Store 1694 1695
+            1696:    155(ptr) AccessChain 37(data) 1688 154 188
+            1697:32(float16_t) CompositeExtract 1693 1
+                              Store 1696 1697
+            1698:    155(ptr) AccessChain 37(data) 1688 154 201
+            1699:32(float16_t) CompositeExtract 1693 2
+                              Store 1698 1699
+            1700:      6(int) Load 8(invocation)
+            1701:    160(ptr) AccessChain 37(data) 58 154
+            1702: 33(f16vec4) Load 1701
+            1703:   17(ivec4) Load 19(ballot)
+            1704: 33(f16vec4) GroupNonUniformFMin 177 PartitionedReduceNV 1702 1703
+            1705:    160(ptr) AccessChain 37(data) 1700 154
+                              Store 1705 1704
+            1706:      6(int) Load 8(invocation)
+            1707:    155(ptr) AccessChain 37(data) 39 154 40
+            1708:32(float16_t) Load 1707
+            1709:   17(ivec4) Load 19(ballot)
+            1710:32(float16_t) GroupNonUniformFMax 177 PartitionedReduceNV 1708 1709
+            1711:    155(ptr) AccessChain 37(data) 1706 154 40
+                              Store 1711 1710
+            1712:      6(int) Load 8(invocation)
+            1713:    160(ptr) AccessChain 37(data) 45 154
+            1714: 33(f16vec4) Load 1713
+            1715:159(f16vec2) VectorShuffle 1714 1714 0 1
+            1716:   17(ivec4) Load 19(ballot)
+            1717:159(f16vec2) GroupNonUniformFMax 177 PartitionedReduceNV 1715 1716
+            1718:    155(ptr) AccessChain 37(data) 1712 154 40
+            1719:32(float16_t) CompositeExtract 1717 0
+                              Store 1718 1719
+            1720:    155(ptr) AccessChain 37(data) 1712 154 188
+            1721:32(float16_t) CompositeExtract 1717 1
+                              Store 1720 1721
+            1722:      6(int) Load 8(invocation)
+            1723:    160(ptr) AccessChain 37(data) 52 154
+            1724: 33(f16vec4) Load 1723
+            1725:165(f16vec3) VectorShuffle 1724 1724 0 1 2
+            1726:   17(ivec4) Load 19(ballot)
+            1727:165(f16vec3) GroupNonUniformFMax 177 PartitionedReduceNV 1725 1726
+            1728:    155(ptr) AccessChain 37(data) 1722 154 40
+            1729:32(float16_t) CompositeExtract 1727 0
+                              Store 1728 1729
+            1730:    155(ptr) AccessChain 37(data) 1722 154 188
+            1731:32(float16_t) CompositeExtract 1727 1
+                              Store 1730 1731
+            1732:    155(ptr) AccessChain 37(data) 1722 154 201
+            1733:32(float16_t) CompositeExtract 1727 2
+                              Store 1732 1733
+            1734:      6(int) Load 8(invocation)
+            1735:    160(ptr) AccessChain 37(data) 58 154
+            1736: 33(f16vec4) Load 1735
+            1737:   17(ivec4) Load 19(ballot)
+            1738: 33(f16vec4) GroupNonUniformFMax 177 PartitionedReduceNV 1736 1737
+            1739:    160(ptr) AccessChain 37(data) 1734 154
+                              Store 1739 1738
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out
index beec1ac..f385545 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out
@@ -1,7 +1,7 @@
 spv.subgroupExtendedTypesQuad.comp
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 806
+// Id's are bound by 918
 
                               Capability Shader
                               Capability Float16
@@ -59,7 +59,7 @@
                               Decorate 31(Buffers) Block
                               Decorate 34(data) DescriptorSet 0
                               Decorate 34(data) Binding 0
-                              Decorate 805 BuiltIn WorkgroupSize
+                              Decorate 917 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -95,40 +95,40 @@
               47:     36(int) Constant 1
               48:             TypeVector 17(int8_t) 2
               49:             TypePointer StorageBuffer 18(i8vec4)
-              58:     36(int) Constant 2
-              59:             TypeVector 17(int8_t) 3
-              68:     36(int) Constant 3
-             128:      6(int) Constant 2
-             153:             TypePointer StorageBuffer 19(int8_t)
-             159:             TypeVector 19(int8_t) 2
-             160:             TypePointer StorageBuffer 20(i8vec4)
-             169:             TypeVector 19(int8_t) 3
-             261:             TypePointer StorageBuffer 21(int16_t)
-             267:             TypeVector 21(int16_t) 2
-             268:             TypePointer StorageBuffer 22(i16vec4)
-             277:             TypeVector 21(int16_t) 3
-             369:             TypePointer StorageBuffer 23(int16_t)
-             375:             TypeVector 23(int16_t) 2
-             376:             TypePointer StorageBuffer 24(i16vec4)
-             385:             TypeVector 23(int16_t) 3
-             477:     36(int) Constant 4
-             478:             TypePointer StorageBuffer 25(int64_t)
-             484:             TypeVector 25(int64_t) 2
-             485:             TypePointer StorageBuffer 26(i64vec4)
-             494:             TypeVector 25(int64_t) 3
-             586:     36(int) Constant 5
-             587:             TypePointer StorageBuffer 27(int64_t)
-             593:             TypeVector 27(int64_t) 2
-             594:             TypePointer StorageBuffer 28(i64vec4)
-             603:             TypeVector 27(int64_t) 3
-             695:     36(int) Constant 6
-             696:             TypePointer StorageBuffer 29(float16_t)
-             702:             TypeVector 29(float16_t) 2
-             703:             TypePointer StorageBuffer 30(f16vec4)
-             712:             TypeVector 29(float16_t) 3
-             803:             TypeVector 6(int) 3
-             804:      6(int) Constant 8
-             805:  803(ivec3) ConstantComposite 804 42 42
+              59:     36(int) Constant 2
+              60:             TypeVector 17(int8_t) 3
+              69:      6(int) Constant 2
+              73:     36(int) Constant 3
+             169:             TypePointer StorageBuffer 19(int8_t)
+             175:             TypeVector 19(int8_t) 2
+             176:             TypePointer StorageBuffer 20(i8vec4)
+             186:             TypeVector 19(int8_t) 3
+             293:             TypePointer StorageBuffer 21(int16_t)
+             299:             TypeVector 21(int16_t) 2
+             300:             TypePointer StorageBuffer 22(i16vec4)
+             310:             TypeVector 21(int16_t) 3
+             417:             TypePointer StorageBuffer 23(int16_t)
+             423:             TypeVector 23(int16_t) 2
+             424:             TypePointer StorageBuffer 24(i16vec4)
+             434:             TypeVector 23(int16_t) 3
+             541:     36(int) Constant 4
+             542:             TypePointer StorageBuffer 25(int64_t)
+             548:             TypeVector 25(int64_t) 2
+             549:             TypePointer StorageBuffer 26(i64vec4)
+             559:             TypeVector 25(int64_t) 3
+             666:     36(int) Constant 5
+             667:             TypePointer StorageBuffer 27(int64_t)
+             673:             TypeVector 27(int64_t) 2
+             674:             TypePointer StorageBuffer 28(i64vec4)
+             684:             TypeVector 27(int64_t) 3
+             791:     36(int) Constant 6
+             792:             TypePointer StorageBuffer 29(float16_t)
+             798:             TypeVector 29(float16_t) 2
+             799:             TypePointer StorageBuffer 30(f16vec4)
+             809:             TypeVector 29(float16_t) 3
+             915:             TypeVector 6(int) 3
+             916:      6(int) Constant 8
+             917:  915(ivec3) ConstantComposite 916 42 42
          4(main):           2 Function None 3
                5:             Label
    8(invocation):      7(ptr) Variable Function
@@ -148,834 +148,1030 @@
               51:  18(i8vec4) Load 50
               52:  48(i8vec2) VectorShuffle 51 51 0 1
               53:  48(i8vec2) GroupNonUniformQuadBroadcast 43 52 42
-              54:     49(ptr) AccessChain 34(data) 46 37
-              55:  18(i8vec4) Load 54
-              56:  18(i8vec4) VectorShuffle 55 53 4 5 2 3
-                              Store 54 56
-              57:      6(int) Load 8(invocation)
-              60:     49(ptr) AccessChain 34(data) 58 37
-              61:  18(i8vec4) Load 60
-              62:  59(i8vec3) VectorShuffle 61 61 0 1 2
-              63:  59(i8vec3) GroupNonUniformQuadBroadcast 43 62 42
-              64:     49(ptr) AccessChain 34(data) 57 37
-              65:  18(i8vec4) Load 64
-              66:  18(i8vec4) VectorShuffle 65 63 4 5 6 3
-                              Store 64 66
-              67:      6(int) Load 8(invocation)
-              69:     49(ptr) AccessChain 34(data) 68 37
-              70:  18(i8vec4) Load 69
-              71:  18(i8vec4) GroupNonUniformQuadBroadcast 43 70 42
-              72:     49(ptr) AccessChain 34(data) 67 37
-                              Store 72 71
-              73:      6(int) Load 8(invocation)
-              74:     39(ptr) AccessChain 34(data) 37 37 38
-              75:  17(int8_t) Load 74
-              76:  17(int8_t) GroupNonUniformQuadSwap 43 75 38
-              77:     39(ptr) AccessChain 34(data) 73 37 38
+              54:     39(ptr) AccessChain 34(data) 46 37 38
+              55:  17(int8_t) CompositeExtract 53 0
+                              Store 54 55
+              56:     39(ptr) AccessChain 34(data) 46 37 42
+              57:  17(int8_t) CompositeExtract 53 1
+                              Store 56 57
+              58:      6(int) Load 8(invocation)
+              61:     49(ptr) AccessChain 34(data) 59 37
+              62:  18(i8vec4) Load 61
+              63:  60(i8vec3) VectorShuffle 62 62 0 1 2
+              64:  60(i8vec3) GroupNonUniformQuadBroadcast 43 63 42
+              65:     39(ptr) AccessChain 34(data) 58 37 38
+              66:  17(int8_t) CompositeExtract 64 0
+                              Store 65 66
+              67:     39(ptr) AccessChain 34(data) 58 37 42
+              68:  17(int8_t) CompositeExtract 64 1
+                              Store 67 68
+              70:     39(ptr) AccessChain 34(data) 58 37 69
+              71:  17(int8_t) CompositeExtract 64 2
+                              Store 70 71
+              72:      6(int) Load 8(invocation)
+              74:     49(ptr) AccessChain 34(data) 73 37
+              75:  18(i8vec4) Load 74
+              76:  18(i8vec4) GroupNonUniformQuadBroadcast 43 75 42
+              77:     49(ptr) AccessChain 34(data) 72 37
                               Store 77 76
               78:      6(int) Load 8(invocation)
-              79:     49(ptr) AccessChain 34(data) 47 37
-              80:  18(i8vec4) Load 79
-              81:  48(i8vec2) VectorShuffle 80 80 0 1
-              82:  48(i8vec2) GroupNonUniformQuadSwap 43 81 38
-              83:     49(ptr) AccessChain 34(data) 78 37
-              84:  18(i8vec4) Load 83
-              85:  18(i8vec4) VectorShuffle 84 82 4 5 2 3
-                              Store 83 85
-              86:      6(int) Load 8(invocation)
-              87:     49(ptr) AccessChain 34(data) 58 37
-              88:  18(i8vec4) Load 87
-              89:  59(i8vec3) VectorShuffle 88 88 0 1 2
-              90:  59(i8vec3) GroupNonUniformQuadSwap 43 89 38
-              91:     49(ptr) AccessChain 34(data) 86 37
-              92:  18(i8vec4) Load 91
-              93:  18(i8vec4) VectorShuffle 92 90 4 5 6 3
-                              Store 91 93
-              94:      6(int) Load 8(invocation)
-              95:     49(ptr) AccessChain 34(data) 68 37
-              96:  18(i8vec4) Load 95
-              97:  18(i8vec4) GroupNonUniformQuadSwap 43 96 38
-              98:     49(ptr) AccessChain 34(data) 94 37
-                              Store 98 97
-              99:      6(int) Load 8(invocation)
-             100:     39(ptr) AccessChain 34(data) 37 37 38
-             101:  17(int8_t) Load 100
-             102:  17(int8_t) GroupNonUniformQuadSwap 43 101 42
-             103:     39(ptr) AccessChain 34(data) 99 37 38
-                              Store 103 102
-             104:      6(int) Load 8(invocation)
-             105:     49(ptr) AccessChain 34(data) 47 37
-             106:  18(i8vec4) Load 105
-             107:  48(i8vec2) VectorShuffle 106 106 0 1
-             108:  48(i8vec2) GroupNonUniformQuadSwap 43 107 42
-             109:     49(ptr) AccessChain 34(data) 104 37
-             110:  18(i8vec4) Load 109
-             111:  18(i8vec4) VectorShuffle 110 108 4 5 2 3
-                              Store 109 111
-             112:      6(int) Load 8(invocation)
-             113:     49(ptr) AccessChain 34(data) 58 37
-             114:  18(i8vec4) Load 113
-             115:  59(i8vec3) VectorShuffle 114 114 0 1 2
-             116:  59(i8vec3) GroupNonUniformQuadSwap 43 115 42
-             117:     49(ptr) AccessChain 34(data) 112 37
-             118:  18(i8vec4) Load 117
-             119:  18(i8vec4) VectorShuffle 118 116 4 5 6 3
-                              Store 117 119
-             120:      6(int) Load 8(invocation)
-             121:     49(ptr) AccessChain 34(data) 68 37
-             122:  18(i8vec4) Load 121
-             123:  18(i8vec4) GroupNonUniformQuadSwap 43 122 42
-             124:     49(ptr) AccessChain 34(data) 120 37
-                              Store 124 123
-             125:      6(int) Load 8(invocation)
-             126:     39(ptr) AccessChain 34(data) 37 37 38
-             127:  17(int8_t) Load 126
-             129:  17(int8_t) GroupNonUniformQuadSwap 43 127 128
-             130:     39(ptr) AccessChain 34(data) 125 37 38
-                              Store 130 129
-             131:      6(int) Load 8(invocation)
-             132:     49(ptr) AccessChain 34(data) 47 37
-             133:  18(i8vec4) Load 132
-             134:  48(i8vec2) VectorShuffle 133 133 0 1
-             135:  48(i8vec2) GroupNonUniformQuadSwap 43 134 128
-             136:     49(ptr) AccessChain 34(data) 131 37
-             137:  18(i8vec4) Load 136
-             138:  18(i8vec4) VectorShuffle 137 135 4 5 2 3
-                              Store 136 138
-             139:      6(int) Load 8(invocation)
-             140:     49(ptr) AccessChain 34(data) 58 37
-             141:  18(i8vec4) Load 140
-             142:  59(i8vec3) VectorShuffle 141 141 0 1 2
-             143:  59(i8vec3) GroupNonUniformQuadSwap 43 142 128
-             144:     49(ptr) AccessChain 34(data) 139 37
+              79:     39(ptr) AccessChain 34(data) 37 37 38
+              80:  17(int8_t) Load 79
+              81:  17(int8_t) GroupNonUniformQuadSwap 43 80 38
+              82:     39(ptr) AccessChain 34(data) 78 37 38
+                              Store 82 81
+              83:      6(int) Load 8(invocation)
+              84:     49(ptr) AccessChain 34(data) 47 37
+              85:  18(i8vec4) Load 84
+              86:  48(i8vec2) VectorShuffle 85 85 0 1
+              87:  48(i8vec2) GroupNonUniformQuadSwap 43 86 38
+              88:     39(ptr) AccessChain 34(data) 83 37 38
+              89:  17(int8_t) CompositeExtract 87 0
+                              Store 88 89
+              90:     39(ptr) AccessChain 34(data) 83 37 42
+              91:  17(int8_t) CompositeExtract 87 1
+                              Store 90 91
+              92:      6(int) Load 8(invocation)
+              93:     49(ptr) AccessChain 34(data) 59 37
+              94:  18(i8vec4) Load 93
+              95:  60(i8vec3) VectorShuffle 94 94 0 1 2
+              96:  60(i8vec3) GroupNonUniformQuadSwap 43 95 38
+              97:     39(ptr) AccessChain 34(data) 92 37 38
+              98:  17(int8_t) CompositeExtract 96 0
+                              Store 97 98
+              99:     39(ptr) AccessChain 34(data) 92 37 42
+             100:  17(int8_t) CompositeExtract 96 1
+                              Store 99 100
+             101:     39(ptr) AccessChain 34(data) 92 37 69
+             102:  17(int8_t) CompositeExtract 96 2
+                              Store 101 102
+             103:      6(int) Load 8(invocation)
+             104:     49(ptr) AccessChain 34(data) 73 37
+             105:  18(i8vec4) Load 104
+             106:  18(i8vec4) GroupNonUniformQuadSwap 43 105 38
+             107:     49(ptr) AccessChain 34(data) 103 37
+                              Store 107 106
+             108:      6(int) Load 8(invocation)
+             109:     39(ptr) AccessChain 34(data) 37 37 38
+             110:  17(int8_t) Load 109
+             111:  17(int8_t) GroupNonUniformQuadSwap 43 110 42
+             112:     39(ptr) AccessChain 34(data) 108 37 38
+                              Store 112 111
+             113:      6(int) Load 8(invocation)
+             114:     49(ptr) AccessChain 34(data) 47 37
+             115:  18(i8vec4) Load 114
+             116:  48(i8vec2) VectorShuffle 115 115 0 1
+             117:  48(i8vec2) GroupNonUniformQuadSwap 43 116 42
+             118:     39(ptr) AccessChain 34(data) 113 37 38
+             119:  17(int8_t) CompositeExtract 117 0
+                              Store 118 119
+             120:     39(ptr) AccessChain 34(data) 113 37 42
+             121:  17(int8_t) CompositeExtract 117 1
+                              Store 120 121
+             122:      6(int) Load 8(invocation)
+             123:     49(ptr) AccessChain 34(data) 59 37
+             124:  18(i8vec4) Load 123
+             125:  60(i8vec3) VectorShuffle 124 124 0 1 2
+             126:  60(i8vec3) GroupNonUniformQuadSwap 43 125 42
+             127:     39(ptr) AccessChain 34(data) 122 37 38
+             128:  17(int8_t) CompositeExtract 126 0
+                              Store 127 128
+             129:     39(ptr) AccessChain 34(data) 122 37 42
+             130:  17(int8_t) CompositeExtract 126 1
+                              Store 129 130
+             131:     39(ptr) AccessChain 34(data) 122 37 69
+             132:  17(int8_t) CompositeExtract 126 2
+                              Store 131 132
+             133:      6(int) Load 8(invocation)
+             134:     49(ptr) AccessChain 34(data) 73 37
+             135:  18(i8vec4) Load 134
+             136:  18(i8vec4) GroupNonUniformQuadSwap 43 135 42
+             137:     49(ptr) AccessChain 34(data) 133 37
+                              Store 137 136
+             138:      6(int) Load 8(invocation)
+             139:     39(ptr) AccessChain 34(data) 37 37 38
+             140:  17(int8_t) Load 139
+             141:  17(int8_t) GroupNonUniformQuadSwap 43 140 69
+             142:     39(ptr) AccessChain 34(data) 138 37 38
+                              Store 142 141
+             143:      6(int) Load 8(invocation)
+             144:     49(ptr) AccessChain 34(data) 47 37
              145:  18(i8vec4) Load 144
-             146:  18(i8vec4) VectorShuffle 145 143 4 5 6 3
-                              Store 144 146
-             147:      6(int) Load 8(invocation)
-             148:     49(ptr) AccessChain 34(data) 68 37
-             149:  18(i8vec4) Load 148
-             150:  18(i8vec4) GroupNonUniformQuadSwap 43 149 128
-             151:     49(ptr) AccessChain 34(data) 147 37
-                              Store 151 150
+             146:  48(i8vec2) VectorShuffle 145 145 0 1
+             147:  48(i8vec2) GroupNonUniformQuadSwap 43 146 69
+             148:     39(ptr) AccessChain 34(data) 143 37 38
+             149:  17(int8_t) CompositeExtract 147 0
+                              Store 148 149
+             150:     39(ptr) AccessChain 34(data) 143 37 42
+             151:  17(int8_t) CompositeExtract 147 1
+                              Store 150 151
              152:      6(int) Load 8(invocation)
-             154:    153(ptr) AccessChain 34(data) 37 47 38
-             155:  19(int8_t) Load 154
-             156:  19(int8_t) GroupNonUniformQuadBroadcast 43 155 42
-             157:    153(ptr) AccessChain 34(data) 152 47 38
-                              Store 157 156
-             158:      6(int) Load 8(invocation)
-             161:    160(ptr) AccessChain 34(data) 47 47
-             162:  20(i8vec4) Load 161
-             163: 159(i8vec2) VectorShuffle 162 162 0 1
-             164: 159(i8vec2) GroupNonUniformQuadBroadcast 43 163 42
-             165:    160(ptr) AccessChain 34(data) 158 47
-             166:  20(i8vec4) Load 165
-             167:  20(i8vec4) VectorShuffle 166 164 4 5 2 3
-                              Store 165 167
+             153:     49(ptr) AccessChain 34(data) 59 37
+             154:  18(i8vec4) Load 153
+             155:  60(i8vec3) VectorShuffle 154 154 0 1 2
+             156:  60(i8vec3) GroupNonUniformQuadSwap 43 155 69
+             157:     39(ptr) AccessChain 34(data) 152 37 38
+             158:  17(int8_t) CompositeExtract 156 0
+                              Store 157 158
+             159:     39(ptr) AccessChain 34(data) 152 37 42
+             160:  17(int8_t) CompositeExtract 156 1
+                              Store 159 160
+             161:     39(ptr) AccessChain 34(data) 152 37 69
+             162:  17(int8_t) CompositeExtract 156 2
+                              Store 161 162
+             163:      6(int) Load 8(invocation)
+             164:     49(ptr) AccessChain 34(data) 73 37
+             165:  18(i8vec4) Load 164
+             166:  18(i8vec4) GroupNonUniformQuadSwap 43 165 69
+             167:     49(ptr) AccessChain 34(data) 163 37
+                              Store 167 166
              168:      6(int) Load 8(invocation)
-             170:    160(ptr) AccessChain 34(data) 58 47
-             171:  20(i8vec4) Load 170
-             172: 169(i8vec3) VectorShuffle 171 171 0 1 2
-             173: 169(i8vec3) GroupNonUniformQuadBroadcast 43 172 42
-             174:    160(ptr) AccessChain 34(data) 168 47
-             175:  20(i8vec4) Load 174
-             176:  20(i8vec4) VectorShuffle 175 173 4 5 6 3
-                              Store 174 176
-             177:      6(int) Load 8(invocation)
-             178:    160(ptr) AccessChain 34(data) 68 47
-             179:  20(i8vec4) Load 178
-             180:  20(i8vec4) GroupNonUniformQuadBroadcast 43 179 42
-             181:    160(ptr) AccessChain 34(data) 177 47
-                              Store 181 180
-             182:      6(int) Load 8(invocation)
-             183:    153(ptr) AccessChain 34(data) 37 47 38
-             184:  19(int8_t) Load 183
-             185:  19(int8_t) GroupNonUniformQuadSwap 43 184 38
-             186:    153(ptr) AccessChain 34(data) 182 47 38
-                              Store 186 185
-             187:      6(int) Load 8(invocation)
-             188:    160(ptr) AccessChain 34(data) 47 47
-             189:  20(i8vec4) Load 188
-             190: 159(i8vec2) VectorShuffle 189 189 0 1
-             191: 159(i8vec2) GroupNonUniformQuadSwap 43 190 38
-             192:    160(ptr) AccessChain 34(data) 187 47
-             193:  20(i8vec4) Load 192
-             194:  20(i8vec4) VectorShuffle 193 191 4 5 2 3
-                              Store 192 194
-             195:      6(int) Load 8(invocation)
-             196:    160(ptr) AccessChain 34(data) 58 47
-             197:  20(i8vec4) Load 196
-             198: 169(i8vec3) VectorShuffle 197 197 0 1 2
-             199: 169(i8vec3) GroupNonUniformQuadSwap 43 198 38
-             200:    160(ptr) AccessChain 34(data) 195 47
-             201:  20(i8vec4) Load 200
-             202:  20(i8vec4) VectorShuffle 201 199 4 5 6 3
-                              Store 200 202
-             203:      6(int) Load 8(invocation)
-             204:    160(ptr) AccessChain 34(data) 68 47
-             205:  20(i8vec4) Load 204
-             206:  20(i8vec4) GroupNonUniformQuadSwap 43 205 38
-             207:    160(ptr) AccessChain 34(data) 203 47
-                              Store 207 206
-             208:      6(int) Load 8(invocation)
-             209:    153(ptr) AccessChain 34(data) 37 47 38
-             210:  19(int8_t) Load 209
-             211:  19(int8_t) GroupNonUniformQuadSwap 43 210 42
-             212:    153(ptr) AccessChain 34(data) 208 47 38
-                              Store 212 211
-             213:      6(int) Load 8(invocation)
-             214:    160(ptr) AccessChain 34(data) 47 47
-             215:  20(i8vec4) Load 214
-             216: 159(i8vec2) VectorShuffle 215 215 0 1
-             217: 159(i8vec2) GroupNonUniformQuadSwap 43 216 42
-             218:    160(ptr) AccessChain 34(data) 213 47
-             219:  20(i8vec4) Load 218
-             220:  20(i8vec4) VectorShuffle 219 217 4 5 2 3
-                              Store 218 220
-             221:      6(int) Load 8(invocation)
-             222:    160(ptr) AccessChain 34(data) 58 47
-             223:  20(i8vec4) Load 222
-             224: 169(i8vec3) VectorShuffle 223 223 0 1 2
-             225: 169(i8vec3) GroupNonUniformQuadSwap 43 224 42
-             226:    160(ptr) AccessChain 34(data) 221 47
-             227:  20(i8vec4) Load 226
-             228:  20(i8vec4) VectorShuffle 227 225 4 5 6 3
-                              Store 226 228
-             229:      6(int) Load 8(invocation)
-             230:    160(ptr) AccessChain 34(data) 68 47
-             231:  20(i8vec4) Load 230
-             232:  20(i8vec4) GroupNonUniformQuadSwap 43 231 42
-             233:    160(ptr) AccessChain 34(data) 229 47
-                              Store 233 232
-             234:      6(int) Load 8(invocation)
-             235:    153(ptr) AccessChain 34(data) 37 47 38
-             236:  19(int8_t) Load 235
-             237:  19(int8_t) GroupNonUniformQuadSwap 43 236 128
-             238:    153(ptr) AccessChain 34(data) 234 47 38
-                              Store 238 237
-             239:      6(int) Load 8(invocation)
-             240:    160(ptr) AccessChain 34(data) 47 47
-             241:  20(i8vec4) Load 240
-             242: 159(i8vec2) VectorShuffle 241 241 0 1
-             243: 159(i8vec2) GroupNonUniformQuadSwap 43 242 128
-             244:    160(ptr) AccessChain 34(data) 239 47
-             245:  20(i8vec4) Load 244
-             246:  20(i8vec4) VectorShuffle 245 243 4 5 2 3
-                              Store 244 246
-             247:      6(int) Load 8(invocation)
-             248:    160(ptr) AccessChain 34(data) 58 47
-             249:  20(i8vec4) Load 248
-             250: 169(i8vec3) VectorShuffle 249 249 0 1 2
-             251: 169(i8vec3) GroupNonUniformQuadSwap 43 250 128
-             252:    160(ptr) AccessChain 34(data) 247 47
-             253:  20(i8vec4) Load 252
-             254:  20(i8vec4) VectorShuffle 253 251 4 5 6 3
-                              Store 252 254
-             255:      6(int) Load 8(invocation)
-             256:    160(ptr) AccessChain 34(data) 68 47
-             257:  20(i8vec4) Load 256
-             258:  20(i8vec4) GroupNonUniformQuadSwap 43 257 128
-             259:    160(ptr) AccessChain 34(data) 255 47
-                              Store 259 258
-             260:      6(int) Load 8(invocation)
-             262:    261(ptr) AccessChain 34(data) 37 58 38
-             263: 21(int16_t) Load 262
-             264: 21(int16_t) GroupNonUniformQuadBroadcast 43 263 42
-             265:    261(ptr) AccessChain 34(data) 260 58 38
-                              Store 265 264
-             266:      6(int) Load 8(invocation)
-             269:    268(ptr) AccessChain 34(data) 47 58
-             270: 22(i16vec4) Load 269
-             271:267(i16vec2) VectorShuffle 270 270 0 1
-             272:267(i16vec2) GroupNonUniformQuadBroadcast 43 271 42
-             273:    268(ptr) AccessChain 34(data) 266 58
-             274: 22(i16vec4) Load 273
-             275: 22(i16vec4) VectorShuffle 274 272 4 5 2 3
-                              Store 273 275
+             170:    169(ptr) AccessChain 34(data) 37 47 38
+             171:  19(int8_t) Load 170
+             172:  19(int8_t) GroupNonUniformQuadBroadcast 43 171 42
+             173:    169(ptr) AccessChain 34(data) 168 47 38
+                              Store 173 172
+             174:      6(int) Load 8(invocation)
+             177:    176(ptr) AccessChain 34(data) 47 47
+             178:  20(i8vec4) Load 177
+             179: 175(i8vec2) VectorShuffle 178 178 0 1
+             180: 175(i8vec2) GroupNonUniformQuadBroadcast 43 179 42
+             181:    169(ptr) AccessChain 34(data) 174 47 38
+             182:  19(int8_t) CompositeExtract 180 0
+                              Store 181 182
+             183:    169(ptr) AccessChain 34(data) 174 47 42
+             184:  19(int8_t) CompositeExtract 180 1
+                              Store 183 184
+             185:      6(int) Load 8(invocation)
+             187:    176(ptr) AccessChain 34(data) 59 47
+             188:  20(i8vec4) Load 187
+             189: 186(i8vec3) VectorShuffle 188 188 0 1 2
+             190: 186(i8vec3) GroupNonUniformQuadBroadcast 43 189 42
+             191:    169(ptr) AccessChain 34(data) 185 47 38
+             192:  19(int8_t) CompositeExtract 190 0
+                              Store 191 192
+             193:    169(ptr) AccessChain 34(data) 185 47 42
+             194:  19(int8_t) CompositeExtract 190 1
+                              Store 193 194
+             195:    169(ptr) AccessChain 34(data) 185 47 69
+             196:  19(int8_t) CompositeExtract 190 2
+                              Store 195 196
+             197:      6(int) Load 8(invocation)
+             198:    176(ptr) AccessChain 34(data) 73 47
+             199:  20(i8vec4) Load 198
+             200:  20(i8vec4) GroupNonUniformQuadBroadcast 43 199 42
+             201:    176(ptr) AccessChain 34(data) 197 47
+                              Store 201 200
+             202:      6(int) Load 8(invocation)
+             203:    169(ptr) AccessChain 34(data) 37 47 38
+             204:  19(int8_t) Load 203
+             205:  19(int8_t) GroupNonUniformQuadSwap 43 204 38
+             206:    169(ptr) AccessChain 34(data) 202 47 38
+                              Store 206 205
+             207:      6(int) Load 8(invocation)
+             208:    176(ptr) AccessChain 34(data) 47 47
+             209:  20(i8vec4) Load 208
+             210: 175(i8vec2) VectorShuffle 209 209 0 1
+             211: 175(i8vec2) GroupNonUniformQuadSwap 43 210 38
+             212:    169(ptr) AccessChain 34(data) 207 47 38
+             213:  19(int8_t) CompositeExtract 211 0
+                              Store 212 213
+             214:    169(ptr) AccessChain 34(data) 207 47 42
+             215:  19(int8_t) CompositeExtract 211 1
+                              Store 214 215
+             216:      6(int) Load 8(invocation)
+             217:    176(ptr) AccessChain 34(data) 59 47
+             218:  20(i8vec4) Load 217
+             219: 186(i8vec3) VectorShuffle 218 218 0 1 2
+             220: 186(i8vec3) GroupNonUniformQuadSwap 43 219 38
+             221:    169(ptr) AccessChain 34(data) 216 47 38
+             222:  19(int8_t) CompositeExtract 220 0
+                              Store 221 222
+             223:    169(ptr) AccessChain 34(data) 216 47 42
+             224:  19(int8_t) CompositeExtract 220 1
+                              Store 223 224
+             225:    169(ptr) AccessChain 34(data) 216 47 69
+             226:  19(int8_t) CompositeExtract 220 2
+                              Store 225 226
+             227:      6(int) Load 8(invocation)
+             228:    176(ptr) AccessChain 34(data) 73 47
+             229:  20(i8vec4) Load 228
+             230:  20(i8vec4) GroupNonUniformQuadSwap 43 229 38
+             231:    176(ptr) AccessChain 34(data) 227 47
+                              Store 231 230
+             232:      6(int) Load 8(invocation)
+             233:    169(ptr) AccessChain 34(data) 37 47 38
+             234:  19(int8_t) Load 233
+             235:  19(int8_t) GroupNonUniformQuadSwap 43 234 42
+             236:    169(ptr) AccessChain 34(data) 232 47 38
+                              Store 236 235
+             237:      6(int) Load 8(invocation)
+             238:    176(ptr) AccessChain 34(data) 47 47
+             239:  20(i8vec4) Load 238
+             240: 175(i8vec2) VectorShuffle 239 239 0 1
+             241: 175(i8vec2) GroupNonUniformQuadSwap 43 240 42
+             242:    169(ptr) AccessChain 34(data) 237 47 38
+             243:  19(int8_t) CompositeExtract 241 0
+                              Store 242 243
+             244:    169(ptr) AccessChain 34(data) 237 47 42
+             245:  19(int8_t) CompositeExtract 241 1
+                              Store 244 245
+             246:      6(int) Load 8(invocation)
+             247:    176(ptr) AccessChain 34(data) 59 47
+             248:  20(i8vec4) Load 247
+             249: 186(i8vec3) VectorShuffle 248 248 0 1 2
+             250: 186(i8vec3) GroupNonUniformQuadSwap 43 249 42
+             251:    169(ptr) AccessChain 34(data) 246 47 38
+             252:  19(int8_t) CompositeExtract 250 0
+                              Store 251 252
+             253:    169(ptr) AccessChain 34(data) 246 47 42
+             254:  19(int8_t) CompositeExtract 250 1
+                              Store 253 254
+             255:    169(ptr) AccessChain 34(data) 246 47 69
+             256:  19(int8_t) CompositeExtract 250 2
+                              Store 255 256
+             257:      6(int) Load 8(invocation)
+             258:    176(ptr) AccessChain 34(data) 73 47
+             259:  20(i8vec4) Load 258
+             260:  20(i8vec4) GroupNonUniformQuadSwap 43 259 42
+             261:    176(ptr) AccessChain 34(data) 257 47
+                              Store 261 260
+             262:      6(int) Load 8(invocation)
+             263:    169(ptr) AccessChain 34(data) 37 47 38
+             264:  19(int8_t) Load 263
+             265:  19(int8_t) GroupNonUniformQuadSwap 43 264 69
+             266:    169(ptr) AccessChain 34(data) 262 47 38
+                              Store 266 265
+             267:      6(int) Load 8(invocation)
+             268:    176(ptr) AccessChain 34(data) 47 47
+             269:  20(i8vec4) Load 268
+             270: 175(i8vec2) VectorShuffle 269 269 0 1
+             271: 175(i8vec2) GroupNonUniformQuadSwap 43 270 69
+             272:    169(ptr) AccessChain 34(data) 267 47 38
+             273:  19(int8_t) CompositeExtract 271 0
+                              Store 272 273
+             274:    169(ptr) AccessChain 34(data) 267 47 42
+             275:  19(int8_t) CompositeExtract 271 1
+                              Store 274 275
              276:      6(int) Load 8(invocation)
-             278:    268(ptr) AccessChain 34(data) 58 58
-             279: 22(i16vec4) Load 278
-             280:277(i16vec3) VectorShuffle 279 279 0 1 2
-             281:277(i16vec3) GroupNonUniformQuadBroadcast 43 280 42
-             282:    268(ptr) AccessChain 34(data) 276 58
-             283: 22(i16vec4) Load 282
-             284: 22(i16vec4) VectorShuffle 283 281 4 5 6 3
-                              Store 282 284
-             285:      6(int) Load 8(invocation)
-             286:    268(ptr) AccessChain 34(data) 68 58
-             287: 22(i16vec4) Load 286
-             288: 22(i16vec4) GroupNonUniformQuadBroadcast 43 287 42
-             289:    268(ptr) AccessChain 34(data) 285 58
-                              Store 289 288
-             290:      6(int) Load 8(invocation)
-             291:    261(ptr) AccessChain 34(data) 37 58 38
-             292: 21(int16_t) Load 291
-             293: 21(int16_t) GroupNonUniformQuadSwap 43 292 38
-             294:    261(ptr) AccessChain 34(data) 290 58 38
-                              Store 294 293
-             295:      6(int) Load 8(invocation)
-             296:    268(ptr) AccessChain 34(data) 47 58
-             297: 22(i16vec4) Load 296
-             298:267(i16vec2) VectorShuffle 297 297 0 1
-             299:267(i16vec2) GroupNonUniformQuadSwap 43 298 38
-             300:    268(ptr) AccessChain 34(data) 295 58
-             301: 22(i16vec4) Load 300
-             302: 22(i16vec4) VectorShuffle 301 299 4 5 2 3
-                              Store 300 302
-             303:      6(int) Load 8(invocation)
-             304:    268(ptr) AccessChain 34(data) 58 58
-             305: 22(i16vec4) Load 304
-             306:277(i16vec3) VectorShuffle 305 305 0 1 2
-             307:277(i16vec3) GroupNonUniformQuadSwap 43 306 38
-             308:    268(ptr) AccessChain 34(data) 303 58
-             309: 22(i16vec4) Load 308
-             310: 22(i16vec4) VectorShuffle 309 307 4 5 6 3
-                              Store 308 310
-             311:      6(int) Load 8(invocation)
-             312:    268(ptr) AccessChain 34(data) 68 58
-             313: 22(i16vec4) Load 312
-             314: 22(i16vec4) GroupNonUniformQuadSwap 43 313 38
-             315:    268(ptr) AccessChain 34(data) 311 58
-                              Store 315 314
-             316:      6(int) Load 8(invocation)
-             317:    261(ptr) AccessChain 34(data) 37 58 38
-             318: 21(int16_t) Load 317
-             319: 21(int16_t) GroupNonUniformQuadSwap 43 318 42
-             320:    261(ptr) AccessChain 34(data) 316 58 38
-                              Store 320 319
+             277:    176(ptr) AccessChain 34(data) 59 47
+             278:  20(i8vec4) Load 277
+             279: 186(i8vec3) VectorShuffle 278 278 0 1 2
+             280: 186(i8vec3) GroupNonUniformQuadSwap 43 279 69
+             281:    169(ptr) AccessChain 34(data) 276 47 38
+             282:  19(int8_t) CompositeExtract 280 0
+                              Store 281 282
+             283:    169(ptr) AccessChain 34(data) 276 47 42
+             284:  19(int8_t) CompositeExtract 280 1
+                              Store 283 284
+             285:    169(ptr) AccessChain 34(data) 276 47 69
+             286:  19(int8_t) CompositeExtract 280 2
+                              Store 285 286
+             287:      6(int) Load 8(invocation)
+             288:    176(ptr) AccessChain 34(data) 73 47
+             289:  20(i8vec4) Load 288
+             290:  20(i8vec4) GroupNonUniformQuadSwap 43 289 69
+             291:    176(ptr) AccessChain 34(data) 287 47
+                              Store 291 290
+             292:      6(int) Load 8(invocation)
+             294:    293(ptr) AccessChain 34(data) 37 59 38
+             295: 21(int16_t) Load 294
+             296: 21(int16_t) GroupNonUniformQuadBroadcast 43 295 42
+             297:    293(ptr) AccessChain 34(data) 292 59 38
+                              Store 297 296
+             298:      6(int) Load 8(invocation)
+             301:    300(ptr) AccessChain 34(data) 47 59
+             302: 22(i16vec4) Load 301
+             303:299(i16vec2) VectorShuffle 302 302 0 1
+             304:299(i16vec2) GroupNonUniformQuadBroadcast 43 303 42
+             305:    293(ptr) AccessChain 34(data) 298 59 38
+             306: 21(int16_t) CompositeExtract 304 0
+                              Store 305 306
+             307:    293(ptr) AccessChain 34(data) 298 59 42
+             308: 21(int16_t) CompositeExtract 304 1
+                              Store 307 308
+             309:      6(int) Load 8(invocation)
+             311:    300(ptr) AccessChain 34(data) 59 59
+             312: 22(i16vec4) Load 311
+             313:310(i16vec3) VectorShuffle 312 312 0 1 2
+             314:310(i16vec3) GroupNonUniformQuadBroadcast 43 313 42
+             315:    293(ptr) AccessChain 34(data) 309 59 38
+             316: 21(int16_t) CompositeExtract 314 0
+                              Store 315 316
+             317:    293(ptr) AccessChain 34(data) 309 59 42
+             318: 21(int16_t) CompositeExtract 314 1
+                              Store 317 318
+             319:    293(ptr) AccessChain 34(data) 309 59 69
+             320: 21(int16_t) CompositeExtract 314 2
+                              Store 319 320
              321:      6(int) Load 8(invocation)
-             322:    268(ptr) AccessChain 34(data) 47 58
+             322:    300(ptr) AccessChain 34(data) 73 59
              323: 22(i16vec4) Load 322
-             324:267(i16vec2) VectorShuffle 323 323 0 1
-             325:267(i16vec2) GroupNonUniformQuadSwap 43 324 42
-             326:    268(ptr) AccessChain 34(data) 321 58
-             327: 22(i16vec4) Load 326
-             328: 22(i16vec4) VectorShuffle 327 325 4 5 2 3
-                              Store 326 328
-             329:      6(int) Load 8(invocation)
-             330:    268(ptr) AccessChain 34(data) 58 58
-             331: 22(i16vec4) Load 330
-             332:277(i16vec3) VectorShuffle 331 331 0 1 2
-             333:277(i16vec3) GroupNonUniformQuadSwap 43 332 42
-             334:    268(ptr) AccessChain 34(data) 329 58
-             335: 22(i16vec4) Load 334
-             336: 22(i16vec4) VectorShuffle 335 333 4 5 6 3
-                              Store 334 336
-             337:      6(int) Load 8(invocation)
-             338:    268(ptr) AccessChain 34(data) 68 58
-             339: 22(i16vec4) Load 338
-             340: 22(i16vec4) GroupNonUniformQuadSwap 43 339 42
-             341:    268(ptr) AccessChain 34(data) 337 58
-                              Store 341 340
-             342:      6(int) Load 8(invocation)
-             343:    261(ptr) AccessChain 34(data) 37 58 38
-             344: 21(int16_t) Load 343
-             345: 21(int16_t) GroupNonUniformQuadSwap 43 344 128
-             346:    261(ptr) AccessChain 34(data) 342 58 38
-                              Store 346 345
-             347:      6(int) Load 8(invocation)
-             348:    268(ptr) AccessChain 34(data) 47 58
-             349: 22(i16vec4) Load 348
-             350:267(i16vec2) VectorShuffle 349 349 0 1
-             351:267(i16vec2) GroupNonUniformQuadSwap 43 350 128
-             352:    268(ptr) AccessChain 34(data) 347 58
+             324: 22(i16vec4) GroupNonUniformQuadBroadcast 43 323 42
+             325:    300(ptr) AccessChain 34(data) 321 59
+                              Store 325 324
+             326:      6(int) Load 8(invocation)
+             327:    293(ptr) AccessChain 34(data) 37 59 38
+             328: 21(int16_t) Load 327
+             329: 21(int16_t) GroupNonUniformQuadSwap 43 328 38
+             330:    293(ptr) AccessChain 34(data) 326 59 38
+                              Store 330 329
+             331:      6(int) Load 8(invocation)
+             332:    300(ptr) AccessChain 34(data) 47 59
+             333: 22(i16vec4) Load 332
+             334:299(i16vec2) VectorShuffle 333 333 0 1
+             335:299(i16vec2) GroupNonUniformQuadSwap 43 334 38
+             336:    293(ptr) AccessChain 34(data) 331 59 38
+             337: 21(int16_t) CompositeExtract 335 0
+                              Store 336 337
+             338:    293(ptr) AccessChain 34(data) 331 59 42
+             339: 21(int16_t) CompositeExtract 335 1
+                              Store 338 339
+             340:      6(int) Load 8(invocation)
+             341:    300(ptr) AccessChain 34(data) 59 59
+             342: 22(i16vec4) Load 341
+             343:310(i16vec3) VectorShuffle 342 342 0 1 2
+             344:310(i16vec3) GroupNonUniformQuadSwap 43 343 38
+             345:    293(ptr) AccessChain 34(data) 340 59 38
+             346: 21(int16_t) CompositeExtract 344 0
+                              Store 345 346
+             347:    293(ptr) AccessChain 34(data) 340 59 42
+             348: 21(int16_t) CompositeExtract 344 1
+                              Store 347 348
+             349:    293(ptr) AccessChain 34(data) 340 59 69
+             350: 21(int16_t) CompositeExtract 344 2
+                              Store 349 350
+             351:      6(int) Load 8(invocation)
+             352:    300(ptr) AccessChain 34(data) 73 59
              353: 22(i16vec4) Load 352
-             354: 22(i16vec4) VectorShuffle 353 351 4 5 2 3
-                              Store 352 354
-             355:      6(int) Load 8(invocation)
-             356:    268(ptr) AccessChain 34(data) 58 58
-             357: 22(i16vec4) Load 356
-             358:277(i16vec3) VectorShuffle 357 357 0 1 2
-             359:277(i16vec3) GroupNonUniformQuadSwap 43 358 128
-             360:    268(ptr) AccessChain 34(data) 355 58
-             361: 22(i16vec4) Load 360
-             362: 22(i16vec4) VectorShuffle 361 359 4 5 6 3
-                              Store 360 362
-             363:      6(int) Load 8(invocation)
-             364:    268(ptr) AccessChain 34(data) 68 58
-             365: 22(i16vec4) Load 364
-             366: 22(i16vec4) GroupNonUniformQuadSwap 43 365 128
-             367:    268(ptr) AccessChain 34(data) 363 58
-                              Store 367 366
-             368:      6(int) Load 8(invocation)
-             370:    369(ptr) AccessChain 34(data) 37 68 38
-             371: 23(int16_t) Load 370
-             372: 23(int16_t) GroupNonUniformQuadBroadcast 43 371 42
-             373:    369(ptr) AccessChain 34(data) 368 68 38
-                              Store 373 372
-             374:      6(int) Load 8(invocation)
-             377:    376(ptr) AccessChain 34(data) 47 68
-             378: 24(i16vec4) Load 377
-             379:375(i16vec2) VectorShuffle 378 378 0 1
-             380:375(i16vec2) GroupNonUniformQuadBroadcast 43 379 42
-             381:    376(ptr) AccessChain 34(data) 374 68
-             382: 24(i16vec4) Load 381
-             383: 24(i16vec4) VectorShuffle 382 380 4 5 2 3
-                              Store 381 383
-             384:      6(int) Load 8(invocation)
-             386:    376(ptr) AccessChain 34(data) 58 68
-             387: 24(i16vec4) Load 386
-             388:385(i16vec3) VectorShuffle 387 387 0 1 2
-             389:385(i16vec3) GroupNonUniformQuadBroadcast 43 388 42
-             390:    376(ptr) AccessChain 34(data) 384 68
-             391: 24(i16vec4) Load 390
-             392: 24(i16vec4) VectorShuffle 391 389 4 5 6 3
-                              Store 390 392
-             393:      6(int) Load 8(invocation)
-             394:    376(ptr) AccessChain 34(data) 68 68
-             395: 24(i16vec4) Load 394
-             396: 24(i16vec4) GroupNonUniformQuadBroadcast 43 395 42
-             397:    376(ptr) AccessChain 34(data) 393 68
-                              Store 397 396
-             398:      6(int) Load 8(invocation)
-             399:    369(ptr) AccessChain 34(data) 37 68 38
-             400: 23(int16_t) Load 399
-             401: 23(int16_t) GroupNonUniformQuadSwap 43 400 38
-             402:    369(ptr) AccessChain 34(data) 398 68 38
-                              Store 402 401
-             403:      6(int) Load 8(invocation)
-             404:    376(ptr) AccessChain 34(data) 47 68
-             405: 24(i16vec4) Load 404
-             406:375(i16vec2) VectorShuffle 405 405 0 1
-             407:375(i16vec2) GroupNonUniformQuadSwap 43 406 38
-             408:    376(ptr) AccessChain 34(data) 403 68
-             409: 24(i16vec4) Load 408
-             410: 24(i16vec4) VectorShuffle 409 407 4 5 2 3
-                              Store 408 410
+             354: 22(i16vec4) GroupNonUniformQuadSwap 43 353 38
+             355:    300(ptr) AccessChain 34(data) 351 59
+                              Store 355 354
+             356:      6(int) Load 8(invocation)
+             357:    293(ptr) AccessChain 34(data) 37 59 38
+             358: 21(int16_t) Load 357
+             359: 21(int16_t) GroupNonUniformQuadSwap 43 358 42
+             360:    293(ptr) AccessChain 34(data) 356 59 38
+                              Store 360 359
+             361:      6(int) Load 8(invocation)
+             362:    300(ptr) AccessChain 34(data) 47 59
+             363: 22(i16vec4) Load 362
+             364:299(i16vec2) VectorShuffle 363 363 0 1
+             365:299(i16vec2) GroupNonUniformQuadSwap 43 364 42
+             366:    293(ptr) AccessChain 34(data) 361 59 38
+             367: 21(int16_t) CompositeExtract 365 0
+                              Store 366 367
+             368:    293(ptr) AccessChain 34(data) 361 59 42
+             369: 21(int16_t) CompositeExtract 365 1
+                              Store 368 369
+             370:      6(int) Load 8(invocation)
+             371:    300(ptr) AccessChain 34(data) 59 59
+             372: 22(i16vec4) Load 371
+             373:310(i16vec3) VectorShuffle 372 372 0 1 2
+             374:310(i16vec3) GroupNonUniformQuadSwap 43 373 42
+             375:    293(ptr) AccessChain 34(data) 370 59 38
+             376: 21(int16_t) CompositeExtract 374 0
+                              Store 375 376
+             377:    293(ptr) AccessChain 34(data) 370 59 42
+             378: 21(int16_t) CompositeExtract 374 1
+                              Store 377 378
+             379:    293(ptr) AccessChain 34(data) 370 59 69
+             380: 21(int16_t) CompositeExtract 374 2
+                              Store 379 380
+             381:      6(int) Load 8(invocation)
+             382:    300(ptr) AccessChain 34(data) 73 59
+             383: 22(i16vec4) Load 382
+             384: 22(i16vec4) GroupNonUniformQuadSwap 43 383 42
+             385:    300(ptr) AccessChain 34(data) 381 59
+                              Store 385 384
+             386:      6(int) Load 8(invocation)
+             387:    293(ptr) AccessChain 34(data) 37 59 38
+             388: 21(int16_t) Load 387
+             389: 21(int16_t) GroupNonUniformQuadSwap 43 388 69
+             390:    293(ptr) AccessChain 34(data) 386 59 38
+                              Store 390 389
+             391:      6(int) Load 8(invocation)
+             392:    300(ptr) AccessChain 34(data) 47 59
+             393: 22(i16vec4) Load 392
+             394:299(i16vec2) VectorShuffle 393 393 0 1
+             395:299(i16vec2) GroupNonUniformQuadSwap 43 394 69
+             396:    293(ptr) AccessChain 34(data) 391 59 38
+             397: 21(int16_t) CompositeExtract 395 0
+                              Store 396 397
+             398:    293(ptr) AccessChain 34(data) 391 59 42
+             399: 21(int16_t) CompositeExtract 395 1
+                              Store 398 399
+             400:      6(int) Load 8(invocation)
+             401:    300(ptr) AccessChain 34(data) 59 59
+             402: 22(i16vec4) Load 401
+             403:310(i16vec3) VectorShuffle 402 402 0 1 2
+             404:310(i16vec3) GroupNonUniformQuadSwap 43 403 69
+             405:    293(ptr) AccessChain 34(data) 400 59 38
+             406: 21(int16_t) CompositeExtract 404 0
+                              Store 405 406
+             407:    293(ptr) AccessChain 34(data) 400 59 42
+             408: 21(int16_t) CompositeExtract 404 1
+                              Store 407 408
+             409:    293(ptr) AccessChain 34(data) 400 59 69
+             410: 21(int16_t) CompositeExtract 404 2
+                              Store 409 410
              411:      6(int) Load 8(invocation)
-             412:    376(ptr) AccessChain 34(data) 58 68
-             413: 24(i16vec4) Load 412
-             414:385(i16vec3) VectorShuffle 413 413 0 1 2
-             415:385(i16vec3) GroupNonUniformQuadSwap 43 414 38
-             416:    376(ptr) AccessChain 34(data) 411 68
-             417: 24(i16vec4) Load 416
-             418: 24(i16vec4) VectorShuffle 417 415 4 5 6 3
-                              Store 416 418
-             419:      6(int) Load 8(invocation)
-             420:    376(ptr) AccessChain 34(data) 68 68
-             421: 24(i16vec4) Load 420
-             422: 24(i16vec4) GroupNonUniformQuadSwap 43 421 38
-             423:    376(ptr) AccessChain 34(data) 419 68
-                              Store 423 422
-             424:      6(int) Load 8(invocation)
-             425:    369(ptr) AccessChain 34(data) 37 68 38
-             426: 23(int16_t) Load 425
-             427: 23(int16_t) GroupNonUniformQuadSwap 43 426 42
-             428:    369(ptr) AccessChain 34(data) 424 68 38
-                              Store 428 427
-             429:      6(int) Load 8(invocation)
-             430:    376(ptr) AccessChain 34(data) 47 68
-             431: 24(i16vec4) Load 430
-             432:375(i16vec2) VectorShuffle 431 431 0 1
-             433:375(i16vec2) GroupNonUniformQuadSwap 43 432 42
-             434:    376(ptr) AccessChain 34(data) 429 68
-             435: 24(i16vec4) Load 434
-             436: 24(i16vec4) VectorShuffle 435 433 4 5 2 3
-                              Store 434 436
-             437:      6(int) Load 8(invocation)
-             438:    376(ptr) AccessChain 34(data) 58 68
-             439: 24(i16vec4) Load 438
-             440:385(i16vec3) VectorShuffle 439 439 0 1 2
-             441:385(i16vec3) GroupNonUniformQuadSwap 43 440 42
-             442:    376(ptr) AccessChain 34(data) 437 68
-             443: 24(i16vec4) Load 442
-             444: 24(i16vec4) VectorShuffle 443 441 4 5 6 3
-                              Store 442 444
+             412:    300(ptr) AccessChain 34(data) 73 59
+             413: 22(i16vec4) Load 412
+             414: 22(i16vec4) GroupNonUniformQuadSwap 43 413 69
+             415:    300(ptr) AccessChain 34(data) 411 59
+                              Store 415 414
+             416:      6(int) Load 8(invocation)
+             418:    417(ptr) AccessChain 34(data) 37 73 38
+             419: 23(int16_t) Load 418
+             420: 23(int16_t) GroupNonUniformQuadBroadcast 43 419 42
+             421:    417(ptr) AccessChain 34(data) 416 73 38
+                              Store 421 420
+             422:      6(int) Load 8(invocation)
+             425:    424(ptr) AccessChain 34(data) 47 73
+             426: 24(i16vec4) Load 425
+             427:423(i16vec2) VectorShuffle 426 426 0 1
+             428:423(i16vec2) GroupNonUniformQuadBroadcast 43 427 42
+             429:    417(ptr) AccessChain 34(data) 422 73 38
+             430: 23(int16_t) CompositeExtract 428 0
+                              Store 429 430
+             431:    417(ptr) AccessChain 34(data) 422 73 42
+             432: 23(int16_t) CompositeExtract 428 1
+                              Store 431 432
+             433:      6(int) Load 8(invocation)
+             435:    424(ptr) AccessChain 34(data) 59 73
+             436: 24(i16vec4) Load 435
+             437:434(i16vec3) VectorShuffle 436 436 0 1 2
+             438:434(i16vec3) GroupNonUniformQuadBroadcast 43 437 42
+             439:    417(ptr) AccessChain 34(data) 433 73 38
+             440: 23(int16_t) CompositeExtract 438 0
+                              Store 439 440
+             441:    417(ptr) AccessChain 34(data) 433 73 42
+             442: 23(int16_t) CompositeExtract 438 1
+                              Store 441 442
+             443:    417(ptr) AccessChain 34(data) 433 73 69
+             444: 23(int16_t) CompositeExtract 438 2
+                              Store 443 444
              445:      6(int) Load 8(invocation)
-             446:    376(ptr) AccessChain 34(data) 68 68
+             446:    424(ptr) AccessChain 34(data) 73 73
              447: 24(i16vec4) Load 446
-             448: 24(i16vec4) GroupNonUniformQuadSwap 43 447 42
-             449:    376(ptr) AccessChain 34(data) 445 68
+             448: 24(i16vec4) GroupNonUniformQuadBroadcast 43 447 42
+             449:    424(ptr) AccessChain 34(data) 445 73
                               Store 449 448
              450:      6(int) Load 8(invocation)
-             451:    369(ptr) AccessChain 34(data) 37 68 38
+             451:    417(ptr) AccessChain 34(data) 37 73 38
              452: 23(int16_t) Load 451
-             453: 23(int16_t) GroupNonUniformQuadSwap 43 452 128
-             454:    369(ptr) AccessChain 34(data) 450 68 38
+             453: 23(int16_t) GroupNonUniformQuadSwap 43 452 38
+             454:    417(ptr) AccessChain 34(data) 450 73 38
                               Store 454 453
              455:      6(int) Load 8(invocation)
-             456:    376(ptr) AccessChain 34(data) 47 68
+             456:    424(ptr) AccessChain 34(data) 47 73
              457: 24(i16vec4) Load 456
-             458:375(i16vec2) VectorShuffle 457 457 0 1
-             459:375(i16vec2) GroupNonUniformQuadSwap 43 458 128
-             460:    376(ptr) AccessChain 34(data) 455 68
-             461: 24(i16vec4) Load 460
-             462: 24(i16vec4) VectorShuffle 461 459 4 5 2 3
-                              Store 460 462
-             463:      6(int) Load 8(invocation)
-             464:    376(ptr) AccessChain 34(data) 58 68
-             465: 24(i16vec4) Load 464
-             466:385(i16vec3) VectorShuffle 465 465 0 1 2
-             467:385(i16vec3) GroupNonUniformQuadSwap 43 466 128
-             468:    376(ptr) AccessChain 34(data) 463 68
-             469: 24(i16vec4) Load 468
-             470: 24(i16vec4) VectorShuffle 469 467 4 5 6 3
-                              Store 468 470
-             471:      6(int) Load 8(invocation)
-             472:    376(ptr) AccessChain 34(data) 68 68
-             473: 24(i16vec4) Load 472
-             474: 24(i16vec4) GroupNonUniformQuadSwap 43 473 128
-             475:    376(ptr) AccessChain 34(data) 471 68
-                              Store 475 474
-             476:      6(int) Load 8(invocation)
-             479:    478(ptr) AccessChain 34(data) 37 477 38
-             480: 25(int64_t) Load 479
-             481: 25(int64_t) GroupNonUniformQuadBroadcast 43 480 42
-             482:    478(ptr) AccessChain 34(data) 476 477 38
-                              Store 482 481
-             483:      6(int) Load 8(invocation)
-             486:    485(ptr) AccessChain 34(data) 47 477
-             487: 26(i64vec4) Load 486
-             488:484(i64vec2) VectorShuffle 487 487 0 1
-             489:484(i64vec2) GroupNonUniformQuadBroadcast 43 488 42
-             490:    485(ptr) AccessChain 34(data) 483 477
-             491: 26(i64vec4) Load 490
-             492: 26(i64vec4) VectorShuffle 491 489 4 5 2 3
-                              Store 490 492
-             493:      6(int) Load 8(invocation)
-             495:    485(ptr) AccessChain 34(data) 58 477
-             496: 26(i64vec4) Load 495
-             497:494(i64vec3) VectorShuffle 496 496 0 1 2
-             498:494(i64vec3) GroupNonUniformQuadBroadcast 43 497 42
-             499:    485(ptr) AccessChain 34(data) 493 477
-             500: 26(i64vec4) Load 499
-             501: 26(i64vec4) VectorShuffle 500 498 4 5 6 3
-                              Store 499 501
-             502:      6(int) Load 8(invocation)
-             503:    485(ptr) AccessChain 34(data) 68 477
-             504: 26(i64vec4) Load 503
-             505: 26(i64vec4) GroupNonUniformQuadBroadcast 43 504 42
-             506:    485(ptr) AccessChain 34(data) 502 477
-                              Store 506 505
-             507:      6(int) Load 8(invocation)
-             508:    478(ptr) AccessChain 34(data) 37 477 38
-             509: 25(int64_t) Load 508
-             510: 25(int64_t) GroupNonUniformQuadSwap 43 509 38
-             511:    478(ptr) AccessChain 34(data) 507 477 38
-                              Store 511 510
-             512:      6(int) Load 8(invocation)
-             513:    485(ptr) AccessChain 34(data) 47 477
-             514: 26(i64vec4) Load 513
-             515:484(i64vec2) VectorShuffle 514 514 0 1
-             516:484(i64vec2) GroupNonUniformQuadSwap 43 515 38
-             517:    485(ptr) AccessChain 34(data) 512 477
-             518: 26(i64vec4) Load 517
-             519: 26(i64vec4) VectorShuffle 518 516 4 5 2 3
-                              Store 517 519
-             520:      6(int) Load 8(invocation)
-             521:    485(ptr) AccessChain 34(data) 58 477
-             522: 26(i64vec4) Load 521
-             523:494(i64vec3) VectorShuffle 522 522 0 1 2
-             524:494(i64vec3) GroupNonUniformQuadSwap 43 523 38
-             525:    485(ptr) AccessChain 34(data) 520 477
-             526: 26(i64vec4) Load 525
-             527: 26(i64vec4) VectorShuffle 526 524 4 5 6 3
-                              Store 525 527
-             528:      6(int) Load 8(invocation)
-             529:    485(ptr) AccessChain 34(data) 68 477
-             530: 26(i64vec4) Load 529
-             531: 26(i64vec4) GroupNonUniformQuadSwap 43 530 38
-             532:    485(ptr) AccessChain 34(data) 528 477
-                              Store 532 531
-             533:      6(int) Load 8(invocation)
-             534:    478(ptr) AccessChain 34(data) 37 477 38
-             535: 25(int64_t) Load 534
-             536: 25(int64_t) GroupNonUniformQuadSwap 43 535 42
-             537:    478(ptr) AccessChain 34(data) 533 477 38
-                              Store 537 536
-             538:      6(int) Load 8(invocation)
-             539:    485(ptr) AccessChain 34(data) 47 477
-             540: 26(i64vec4) Load 539
-             541:484(i64vec2) VectorShuffle 540 540 0 1
-             542:484(i64vec2) GroupNonUniformQuadSwap 43 541 42
-             543:    485(ptr) AccessChain 34(data) 538 477
-             544: 26(i64vec4) Load 543
-             545: 26(i64vec4) VectorShuffle 544 542 4 5 2 3
-                              Store 543 545
-             546:      6(int) Load 8(invocation)
-             547:    485(ptr) AccessChain 34(data) 58 477
-             548: 26(i64vec4) Load 547
-             549:494(i64vec3) VectorShuffle 548 548 0 1 2
-             550:494(i64vec3) GroupNonUniformQuadSwap 43 549 42
-             551:    485(ptr) AccessChain 34(data) 546 477
-             552: 26(i64vec4) Load 551
-             553: 26(i64vec4) VectorShuffle 552 550 4 5 6 3
-                              Store 551 553
-             554:      6(int) Load 8(invocation)
-             555:    485(ptr) AccessChain 34(data) 68 477
-             556: 26(i64vec4) Load 555
-             557: 26(i64vec4) GroupNonUniformQuadSwap 43 556 42
-             558:    485(ptr) AccessChain 34(data) 554 477
-                              Store 558 557
-             559:      6(int) Load 8(invocation)
-             560:    478(ptr) AccessChain 34(data) 37 477 38
-             561: 25(int64_t) Load 560
-             562: 25(int64_t) GroupNonUniformQuadSwap 43 561 128
-             563:    478(ptr) AccessChain 34(data) 559 477 38
-                              Store 563 562
-             564:      6(int) Load 8(invocation)
-             565:    485(ptr) AccessChain 34(data) 47 477
-             566: 26(i64vec4) Load 565
-             567:484(i64vec2) VectorShuffle 566 566 0 1
-             568:484(i64vec2) GroupNonUniformQuadSwap 43 567 128
-             569:    485(ptr) AccessChain 34(data) 564 477
-             570: 26(i64vec4) Load 569
-             571: 26(i64vec4) VectorShuffle 570 568 4 5 2 3
-                              Store 569 571
-             572:      6(int) Load 8(invocation)
-             573:    485(ptr) AccessChain 34(data) 58 477
-             574: 26(i64vec4) Load 573
-             575:494(i64vec3) VectorShuffle 574 574 0 1 2
-             576:494(i64vec3) GroupNonUniformQuadSwap 43 575 128
-             577:    485(ptr) AccessChain 34(data) 572 477
-             578: 26(i64vec4) Load 577
-             579: 26(i64vec4) VectorShuffle 578 576 4 5 6 3
-                              Store 577 579
+             458:423(i16vec2) VectorShuffle 457 457 0 1
+             459:423(i16vec2) GroupNonUniformQuadSwap 43 458 38
+             460:    417(ptr) AccessChain 34(data) 455 73 38
+             461: 23(int16_t) CompositeExtract 459 0
+                              Store 460 461
+             462:    417(ptr) AccessChain 34(data) 455 73 42
+             463: 23(int16_t) CompositeExtract 459 1
+                              Store 462 463
+             464:      6(int) Load 8(invocation)
+             465:    424(ptr) AccessChain 34(data) 59 73
+             466: 24(i16vec4) Load 465
+             467:434(i16vec3) VectorShuffle 466 466 0 1 2
+             468:434(i16vec3) GroupNonUniformQuadSwap 43 467 38
+             469:    417(ptr) AccessChain 34(data) 464 73 38
+             470: 23(int16_t) CompositeExtract 468 0
+                              Store 469 470
+             471:    417(ptr) AccessChain 34(data) 464 73 42
+             472: 23(int16_t) CompositeExtract 468 1
+                              Store 471 472
+             473:    417(ptr) AccessChain 34(data) 464 73 69
+             474: 23(int16_t) CompositeExtract 468 2
+                              Store 473 474
+             475:      6(int) Load 8(invocation)
+             476:    424(ptr) AccessChain 34(data) 73 73
+             477: 24(i16vec4) Load 476
+             478: 24(i16vec4) GroupNonUniformQuadSwap 43 477 38
+             479:    424(ptr) AccessChain 34(data) 475 73
+                              Store 479 478
+             480:      6(int) Load 8(invocation)
+             481:    417(ptr) AccessChain 34(data) 37 73 38
+             482: 23(int16_t) Load 481
+             483: 23(int16_t) GroupNonUniformQuadSwap 43 482 42
+             484:    417(ptr) AccessChain 34(data) 480 73 38
+                              Store 484 483
+             485:      6(int) Load 8(invocation)
+             486:    424(ptr) AccessChain 34(data) 47 73
+             487: 24(i16vec4) Load 486
+             488:423(i16vec2) VectorShuffle 487 487 0 1
+             489:423(i16vec2) GroupNonUniformQuadSwap 43 488 42
+             490:    417(ptr) AccessChain 34(data) 485 73 38
+             491: 23(int16_t) CompositeExtract 489 0
+                              Store 490 491
+             492:    417(ptr) AccessChain 34(data) 485 73 42
+             493: 23(int16_t) CompositeExtract 489 1
+                              Store 492 493
+             494:      6(int) Load 8(invocation)
+             495:    424(ptr) AccessChain 34(data) 59 73
+             496: 24(i16vec4) Load 495
+             497:434(i16vec3) VectorShuffle 496 496 0 1 2
+             498:434(i16vec3) GroupNonUniformQuadSwap 43 497 42
+             499:    417(ptr) AccessChain 34(data) 494 73 38
+             500: 23(int16_t) CompositeExtract 498 0
+                              Store 499 500
+             501:    417(ptr) AccessChain 34(data) 494 73 42
+             502: 23(int16_t) CompositeExtract 498 1
+                              Store 501 502
+             503:    417(ptr) AccessChain 34(data) 494 73 69
+             504: 23(int16_t) CompositeExtract 498 2
+                              Store 503 504
+             505:      6(int) Load 8(invocation)
+             506:    424(ptr) AccessChain 34(data) 73 73
+             507: 24(i16vec4) Load 506
+             508: 24(i16vec4) GroupNonUniformQuadSwap 43 507 42
+             509:    424(ptr) AccessChain 34(data) 505 73
+                              Store 509 508
+             510:      6(int) Load 8(invocation)
+             511:    417(ptr) AccessChain 34(data) 37 73 38
+             512: 23(int16_t) Load 511
+             513: 23(int16_t) GroupNonUniformQuadSwap 43 512 69
+             514:    417(ptr) AccessChain 34(data) 510 73 38
+                              Store 514 513
+             515:      6(int) Load 8(invocation)
+             516:    424(ptr) AccessChain 34(data) 47 73
+             517: 24(i16vec4) Load 516
+             518:423(i16vec2) VectorShuffle 517 517 0 1
+             519:423(i16vec2) GroupNonUniformQuadSwap 43 518 69
+             520:    417(ptr) AccessChain 34(data) 515 73 38
+             521: 23(int16_t) CompositeExtract 519 0
+                              Store 520 521
+             522:    417(ptr) AccessChain 34(data) 515 73 42
+             523: 23(int16_t) CompositeExtract 519 1
+                              Store 522 523
+             524:      6(int) Load 8(invocation)
+             525:    424(ptr) AccessChain 34(data) 59 73
+             526: 24(i16vec4) Load 525
+             527:434(i16vec3) VectorShuffle 526 526 0 1 2
+             528:434(i16vec3) GroupNonUniformQuadSwap 43 527 69
+             529:    417(ptr) AccessChain 34(data) 524 73 38
+             530: 23(int16_t) CompositeExtract 528 0
+                              Store 529 530
+             531:    417(ptr) AccessChain 34(data) 524 73 42
+             532: 23(int16_t) CompositeExtract 528 1
+                              Store 531 532
+             533:    417(ptr) AccessChain 34(data) 524 73 69
+             534: 23(int16_t) CompositeExtract 528 2
+                              Store 533 534
+             535:      6(int) Load 8(invocation)
+             536:    424(ptr) AccessChain 34(data) 73 73
+             537: 24(i16vec4) Load 536
+             538: 24(i16vec4) GroupNonUniformQuadSwap 43 537 69
+             539:    424(ptr) AccessChain 34(data) 535 73
+                              Store 539 538
+             540:      6(int) Load 8(invocation)
+             543:    542(ptr) AccessChain 34(data) 37 541 38
+             544: 25(int64_t) Load 543
+             545: 25(int64_t) GroupNonUniformQuadBroadcast 43 544 42
+             546:    542(ptr) AccessChain 34(data) 540 541 38
+                              Store 546 545
+             547:      6(int) Load 8(invocation)
+             550:    549(ptr) AccessChain 34(data) 47 541
+             551: 26(i64vec4) Load 550
+             552:548(i64vec2) VectorShuffle 551 551 0 1
+             553:548(i64vec2) GroupNonUniformQuadBroadcast 43 552 42
+             554:    542(ptr) AccessChain 34(data) 547 541 38
+             555: 25(int64_t) CompositeExtract 553 0
+                              Store 554 555
+             556:    542(ptr) AccessChain 34(data) 547 541 42
+             557: 25(int64_t) CompositeExtract 553 1
+                              Store 556 557
+             558:      6(int) Load 8(invocation)
+             560:    549(ptr) AccessChain 34(data) 59 541
+             561: 26(i64vec4) Load 560
+             562:559(i64vec3) VectorShuffle 561 561 0 1 2
+             563:559(i64vec3) GroupNonUniformQuadBroadcast 43 562 42
+             564:    542(ptr) AccessChain 34(data) 558 541 38
+             565: 25(int64_t) CompositeExtract 563 0
+                              Store 564 565
+             566:    542(ptr) AccessChain 34(data) 558 541 42
+             567: 25(int64_t) CompositeExtract 563 1
+                              Store 566 567
+             568:    542(ptr) AccessChain 34(data) 558 541 69
+             569: 25(int64_t) CompositeExtract 563 2
+                              Store 568 569
+             570:      6(int) Load 8(invocation)
+             571:    549(ptr) AccessChain 34(data) 73 541
+             572: 26(i64vec4) Load 571
+             573: 26(i64vec4) GroupNonUniformQuadBroadcast 43 572 42
+             574:    549(ptr) AccessChain 34(data) 570 541
+                              Store 574 573
+             575:      6(int) Load 8(invocation)
+             576:    542(ptr) AccessChain 34(data) 37 541 38
+             577: 25(int64_t) Load 576
+             578: 25(int64_t) GroupNonUniformQuadSwap 43 577 38
+             579:    542(ptr) AccessChain 34(data) 575 541 38
+                              Store 579 578
              580:      6(int) Load 8(invocation)
-             581:    485(ptr) AccessChain 34(data) 68 477
+             581:    549(ptr) AccessChain 34(data) 47 541
              582: 26(i64vec4) Load 581
-             583: 26(i64vec4) GroupNonUniformQuadSwap 43 582 128
-             584:    485(ptr) AccessChain 34(data) 580 477
-                              Store 584 583
-             585:      6(int) Load 8(invocation)
-             588:    587(ptr) AccessChain 34(data) 37 586 38
-             589: 27(int64_t) Load 588
-             590: 27(int64_t) GroupNonUniformQuadBroadcast 43 589 42
-             591:    587(ptr) AccessChain 34(data) 585 586 38
-                              Store 591 590
-             592:      6(int) Load 8(invocation)
-             595:    594(ptr) AccessChain 34(data) 47 586
-             596: 28(i64vec4) Load 595
-             597:593(i64vec2) VectorShuffle 596 596 0 1
-             598:593(i64vec2) GroupNonUniformQuadBroadcast 43 597 42
-             599:    594(ptr) AccessChain 34(data) 592 586
-             600: 28(i64vec4) Load 599
-             601: 28(i64vec4) VectorShuffle 600 598 4 5 2 3
-                              Store 599 601
-             602:      6(int) Load 8(invocation)
-             604:    594(ptr) AccessChain 34(data) 58 586
-             605: 28(i64vec4) Load 604
-             606:603(i64vec3) VectorShuffle 605 605 0 1 2
-             607:603(i64vec3) GroupNonUniformQuadBroadcast 43 606 42
-             608:    594(ptr) AccessChain 34(data) 602 586
-             609: 28(i64vec4) Load 608
-             610: 28(i64vec4) VectorShuffle 609 607 4 5 6 3
-                              Store 608 610
-             611:      6(int) Load 8(invocation)
-             612:    594(ptr) AccessChain 34(data) 68 586
-             613: 28(i64vec4) Load 612
-             614: 28(i64vec4) GroupNonUniformQuadBroadcast 43 613 42
-             615:    594(ptr) AccessChain 34(data) 611 586
-                              Store 615 614
-             616:      6(int) Load 8(invocation)
-             617:    587(ptr) AccessChain 34(data) 37 586 38
-             618: 27(int64_t) Load 617
-             619: 27(int64_t) GroupNonUniformQuadSwap 43 618 38
-             620:    587(ptr) AccessChain 34(data) 616 586 38
-                              Store 620 619
-             621:      6(int) Load 8(invocation)
-             622:    594(ptr) AccessChain 34(data) 47 586
-             623: 28(i64vec4) Load 622
-             624:593(i64vec2) VectorShuffle 623 623 0 1
-             625:593(i64vec2) GroupNonUniformQuadSwap 43 624 38
-             626:    594(ptr) AccessChain 34(data) 621 586
-             627: 28(i64vec4) Load 626
-             628: 28(i64vec4) VectorShuffle 627 625 4 5 2 3
-                              Store 626 628
-             629:      6(int) Load 8(invocation)
-             630:    594(ptr) AccessChain 34(data) 58 586
-             631: 28(i64vec4) Load 630
-             632:603(i64vec3) VectorShuffle 631 631 0 1 2
-             633:603(i64vec3) GroupNonUniformQuadSwap 43 632 38
-             634:    594(ptr) AccessChain 34(data) 629 586
-             635: 28(i64vec4) Load 634
-             636: 28(i64vec4) VectorShuffle 635 633 4 5 6 3
-                              Store 634 636
-             637:      6(int) Load 8(invocation)
-             638:    594(ptr) AccessChain 34(data) 68 586
-             639: 28(i64vec4) Load 638
-             640: 28(i64vec4) GroupNonUniformQuadSwap 43 639 38
-             641:    594(ptr) AccessChain 34(data) 637 586
-                              Store 641 640
-             642:      6(int) Load 8(invocation)
-             643:    587(ptr) AccessChain 34(data) 37 586 38
-             644: 27(int64_t) Load 643
-             645: 27(int64_t) GroupNonUniformQuadSwap 43 644 42
-             646:    587(ptr) AccessChain 34(data) 642 586 38
-                              Store 646 645
-             647:      6(int) Load 8(invocation)
-             648:    594(ptr) AccessChain 34(data) 47 586
-             649: 28(i64vec4) Load 648
-             650:593(i64vec2) VectorShuffle 649 649 0 1
-             651:593(i64vec2) GroupNonUniformQuadSwap 43 650 42
-             652:    594(ptr) AccessChain 34(data) 647 586
-             653: 28(i64vec4) Load 652
-             654: 28(i64vec4) VectorShuffle 653 651 4 5 2 3
-                              Store 652 654
-             655:      6(int) Load 8(invocation)
-             656:    594(ptr) AccessChain 34(data) 58 586
-             657: 28(i64vec4) Load 656
-             658:603(i64vec3) VectorShuffle 657 657 0 1 2
-             659:603(i64vec3) GroupNonUniformQuadSwap 43 658 42
-             660:    594(ptr) AccessChain 34(data) 655 586
-             661: 28(i64vec4) Load 660
-             662: 28(i64vec4) VectorShuffle 661 659 4 5 6 3
-                              Store 660 662
-             663:      6(int) Load 8(invocation)
-             664:    594(ptr) AccessChain 34(data) 68 586
-             665: 28(i64vec4) Load 664
-             666: 28(i64vec4) GroupNonUniformQuadSwap 43 665 42
-             667:    594(ptr) AccessChain 34(data) 663 586
-                              Store 667 666
-             668:      6(int) Load 8(invocation)
-             669:    587(ptr) AccessChain 34(data) 37 586 38
-             670: 27(int64_t) Load 669
-             671: 27(int64_t) GroupNonUniformQuadSwap 43 670 128
-             672:    587(ptr) AccessChain 34(data) 668 586 38
-                              Store 672 671
-             673:      6(int) Load 8(invocation)
-             674:    594(ptr) AccessChain 34(data) 47 586
-             675: 28(i64vec4) Load 674
-             676:593(i64vec2) VectorShuffle 675 675 0 1
-             677:593(i64vec2) GroupNonUniformQuadSwap 43 676 128
-             678:    594(ptr) AccessChain 34(data) 673 586
-             679: 28(i64vec4) Load 678
-             680: 28(i64vec4) VectorShuffle 679 677 4 5 2 3
-                              Store 678 680
-             681:      6(int) Load 8(invocation)
-             682:    594(ptr) AccessChain 34(data) 58 586
-             683: 28(i64vec4) Load 682
-             684:603(i64vec3) VectorShuffle 683 683 0 1 2
-             685:603(i64vec3) GroupNonUniformQuadSwap 43 684 128
-             686:    594(ptr) AccessChain 34(data) 681 586
-             687: 28(i64vec4) Load 686
-             688: 28(i64vec4) VectorShuffle 687 685 4 5 6 3
-                              Store 686 688
-             689:      6(int) Load 8(invocation)
-             690:    594(ptr) AccessChain 34(data) 68 586
-             691: 28(i64vec4) Load 690
-             692: 28(i64vec4) GroupNonUniformQuadSwap 43 691 128
-             693:    594(ptr) AccessChain 34(data) 689 586
-                              Store 693 692
-             694:      6(int) Load 8(invocation)
-             697:    696(ptr) AccessChain 34(data) 37 695 38
-             698:29(float16_t) Load 697
-             699:29(float16_t) GroupNonUniformQuadBroadcast 43 698 42
-             700:    696(ptr) AccessChain 34(data) 694 695 38
-                              Store 700 699
-             701:      6(int) Load 8(invocation)
-             704:    703(ptr) AccessChain 34(data) 47 695
-             705: 30(f16vec4) Load 704
-             706:702(f16vec2) VectorShuffle 705 705 0 1
-             707:702(f16vec2) GroupNonUniformQuadBroadcast 43 706 42
-             708:    703(ptr) AccessChain 34(data) 701 695
-             709: 30(f16vec4) Load 708
-             710: 30(f16vec4) VectorShuffle 709 707 4 5 2 3
-                              Store 708 710
-             711:      6(int) Load 8(invocation)
-             713:    703(ptr) AccessChain 34(data) 58 695
-             714: 30(f16vec4) Load 713
-             715:712(f16vec3) VectorShuffle 714 714 0 1 2
-             716:712(f16vec3) GroupNonUniformQuadBroadcast 43 715 42
-             717:    703(ptr) AccessChain 34(data) 711 695
-             718: 30(f16vec4) Load 717
-             719: 30(f16vec4) VectorShuffle 718 716 4 5 6 3
-                              Store 717 719
-             720:      6(int) Load 8(invocation)
-             721:    703(ptr) AccessChain 34(data) 68 695
-             722: 30(f16vec4) Load 721
-             723: 30(f16vec4) GroupNonUniformQuadBroadcast 43 722 42
-             724:    703(ptr) AccessChain 34(data) 720 695
-                              Store 724 723
+             583:548(i64vec2) VectorShuffle 582 582 0 1
+             584:548(i64vec2) GroupNonUniformQuadSwap 43 583 38
+             585:    542(ptr) AccessChain 34(data) 580 541 38
+             586: 25(int64_t) CompositeExtract 584 0
+                              Store 585 586
+             587:    542(ptr) AccessChain 34(data) 580 541 42
+             588: 25(int64_t) CompositeExtract 584 1
+                              Store 587 588
+             589:      6(int) Load 8(invocation)
+             590:    549(ptr) AccessChain 34(data) 59 541
+             591: 26(i64vec4) Load 590
+             592:559(i64vec3) VectorShuffle 591 591 0 1 2
+             593:559(i64vec3) GroupNonUniformQuadSwap 43 592 38
+             594:    542(ptr) AccessChain 34(data) 589 541 38
+             595: 25(int64_t) CompositeExtract 593 0
+                              Store 594 595
+             596:    542(ptr) AccessChain 34(data) 589 541 42
+             597: 25(int64_t) CompositeExtract 593 1
+                              Store 596 597
+             598:    542(ptr) AccessChain 34(data) 589 541 69
+             599: 25(int64_t) CompositeExtract 593 2
+                              Store 598 599
+             600:      6(int) Load 8(invocation)
+             601:    549(ptr) AccessChain 34(data) 73 541
+             602: 26(i64vec4) Load 601
+             603: 26(i64vec4) GroupNonUniformQuadSwap 43 602 38
+             604:    549(ptr) AccessChain 34(data) 600 541
+                              Store 604 603
+             605:      6(int) Load 8(invocation)
+             606:    542(ptr) AccessChain 34(data) 37 541 38
+             607: 25(int64_t) Load 606
+             608: 25(int64_t) GroupNonUniformQuadSwap 43 607 42
+             609:    542(ptr) AccessChain 34(data) 605 541 38
+                              Store 609 608
+             610:      6(int) Load 8(invocation)
+             611:    549(ptr) AccessChain 34(data) 47 541
+             612: 26(i64vec4) Load 611
+             613:548(i64vec2) VectorShuffle 612 612 0 1
+             614:548(i64vec2) GroupNonUniformQuadSwap 43 613 42
+             615:    542(ptr) AccessChain 34(data) 610 541 38
+             616: 25(int64_t) CompositeExtract 614 0
+                              Store 615 616
+             617:    542(ptr) AccessChain 34(data) 610 541 42
+             618: 25(int64_t) CompositeExtract 614 1
+                              Store 617 618
+             619:      6(int) Load 8(invocation)
+             620:    549(ptr) AccessChain 34(data) 59 541
+             621: 26(i64vec4) Load 620
+             622:559(i64vec3) VectorShuffle 621 621 0 1 2
+             623:559(i64vec3) GroupNonUniformQuadSwap 43 622 42
+             624:    542(ptr) AccessChain 34(data) 619 541 38
+             625: 25(int64_t) CompositeExtract 623 0
+                              Store 624 625
+             626:    542(ptr) AccessChain 34(data) 619 541 42
+             627: 25(int64_t) CompositeExtract 623 1
+                              Store 626 627
+             628:    542(ptr) AccessChain 34(data) 619 541 69
+             629: 25(int64_t) CompositeExtract 623 2
+                              Store 628 629
+             630:      6(int) Load 8(invocation)
+             631:    549(ptr) AccessChain 34(data) 73 541
+             632: 26(i64vec4) Load 631
+             633: 26(i64vec4) GroupNonUniformQuadSwap 43 632 42
+             634:    549(ptr) AccessChain 34(data) 630 541
+                              Store 634 633
+             635:      6(int) Load 8(invocation)
+             636:    542(ptr) AccessChain 34(data) 37 541 38
+             637: 25(int64_t) Load 636
+             638: 25(int64_t) GroupNonUniformQuadSwap 43 637 69
+             639:    542(ptr) AccessChain 34(data) 635 541 38
+                              Store 639 638
+             640:      6(int) Load 8(invocation)
+             641:    549(ptr) AccessChain 34(data) 47 541
+             642: 26(i64vec4) Load 641
+             643:548(i64vec2) VectorShuffle 642 642 0 1
+             644:548(i64vec2) GroupNonUniformQuadSwap 43 643 69
+             645:    542(ptr) AccessChain 34(data) 640 541 38
+             646: 25(int64_t) CompositeExtract 644 0
+                              Store 645 646
+             647:    542(ptr) AccessChain 34(data) 640 541 42
+             648: 25(int64_t) CompositeExtract 644 1
+                              Store 647 648
+             649:      6(int) Load 8(invocation)
+             650:    549(ptr) AccessChain 34(data) 59 541
+             651: 26(i64vec4) Load 650
+             652:559(i64vec3) VectorShuffle 651 651 0 1 2
+             653:559(i64vec3) GroupNonUniformQuadSwap 43 652 69
+             654:    542(ptr) AccessChain 34(data) 649 541 38
+             655: 25(int64_t) CompositeExtract 653 0
+                              Store 654 655
+             656:    542(ptr) AccessChain 34(data) 649 541 42
+             657: 25(int64_t) CompositeExtract 653 1
+                              Store 656 657
+             658:    542(ptr) AccessChain 34(data) 649 541 69
+             659: 25(int64_t) CompositeExtract 653 2
+                              Store 658 659
+             660:      6(int) Load 8(invocation)
+             661:    549(ptr) AccessChain 34(data) 73 541
+             662: 26(i64vec4) Load 661
+             663: 26(i64vec4) GroupNonUniformQuadSwap 43 662 69
+             664:    549(ptr) AccessChain 34(data) 660 541
+                              Store 664 663
+             665:      6(int) Load 8(invocation)
+             668:    667(ptr) AccessChain 34(data) 37 666 38
+             669: 27(int64_t) Load 668
+             670: 27(int64_t) GroupNonUniformQuadBroadcast 43 669 42
+             671:    667(ptr) AccessChain 34(data) 665 666 38
+                              Store 671 670
+             672:      6(int) Load 8(invocation)
+             675:    674(ptr) AccessChain 34(data) 47 666
+             676: 28(i64vec4) Load 675
+             677:673(i64vec2) VectorShuffle 676 676 0 1
+             678:673(i64vec2) GroupNonUniformQuadBroadcast 43 677 42
+             679:    667(ptr) AccessChain 34(data) 672 666 38
+             680: 27(int64_t) CompositeExtract 678 0
+                              Store 679 680
+             681:    667(ptr) AccessChain 34(data) 672 666 42
+             682: 27(int64_t) CompositeExtract 678 1
+                              Store 681 682
+             683:      6(int) Load 8(invocation)
+             685:    674(ptr) AccessChain 34(data) 59 666
+             686: 28(i64vec4) Load 685
+             687:684(i64vec3) VectorShuffle 686 686 0 1 2
+             688:684(i64vec3) GroupNonUniformQuadBroadcast 43 687 42
+             689:    667(ptr) AccessChain 34(data) 683 666 38
+             690: 27(int64_t) CompositeExtract 688 0
+                              Store 689 690
+             691:    667(ptr) AccessChain 34(data) 683 666 42
+             692: 27(int64_t) CompositeExtract 688 1
+                              Store 691 692
+             693:    667(ptr) AccessChain 34(data) 683 666 69
+             694: 27(int64_t) CompositeExtract 688 2
+                              Store 693 694
+             695:      6(int) Load 8(invocation)
+             696:    674(ptr) AccessChain 34(data) 73 666
+             697: 28(i64vec4) Load 696
+             698: 28(i64vec4) GroupNonUniformQuadBroadcast 43 697 42
+             699:    674(ptr) AccessChain 34(data) 695 666
+                              Store 699 698
+             700:      6(int) Load 8(invocation)
+             701:    667(ptr) AccessChain 34(data) 37 666 38
+             702: 27(int64_t) Load 701
+             703: 27(int64_t) GroupNonUniformQuadSwap 43 702 38
+             704:    667(ptr) AccessChain 34(data) 700 666 38
+                              Store 704 703
+             705:      6(int) Load 8(invocation)
+             706:    674(ptr) AccessChain 34(data) 47 666
+             707: 28(i64vec4) Load 706
+             708:673(i64vec2) VectorShuffle 707 707 0 1
+             709:673(i64vec2) GroupNonUniformQuadSwap 43 708 38
+             710:    667(ptr) AccessChain 34(data) 705 666 38
+             711: 27(int64_t) CompositeExtract 709 0
+                              Store 710 711
+             712:    667(ptr) AccessChain 34(data) 705 666 42
+             713: 27(int64_t) CompositeExtract 709 1
+                              Store 712 713
+             714:      6(int) Load 8(invocation)
+             715:    674(ptr) AccessChain 34(data) 59 666
+             716: 28(i64vec4) Load 715
+             717:684(i64vec3) VectorShuffle 716 716 0 1 2
+             718:684(i64vec3) GroupNonUniformQuadSwap 43 717 38
+             719:    667(ptr) AccessChain 34(data) 714 666 38
+             720: 27(int64_t) CompositeExtract 718 0
+                              Store 719 720
+             721:    667(ptr) AccessChain 34(data) 714 666 42
+             722: 27(int64_t) CompositeExtract 718 1
+                              Store 721 722
+             723:    667(ptr) AccessChain 34(data) 714 666 69
+             724: 27(int64_t) CompositeExtract 718 2
+                              Store 723 724
              725:      6(int) Load 8(invocation)
-             726:    696(ptr) AccessChain 34(data) 37 695 38
-             727:29(float16_t) Load 726
-             728:29(float16_t) GroupNonUniformQuadSwap 43 727 38
-             729:    696(ptr) AccessChain 34(data) 725 695 38
+             726:    674(ptr) AccessChain 34(data) 73 666
+             727: 28(i64vec4) Load 726
+             728: 28(i64vec4) GroupNonUniformQuadSwap 43 727 38
+             729:    674(ptr) AccessChain 34(data) 725 666
                               Store 729 728
              730:      6(int) Load 8(invocation)
-             731:    703(ptr) AccessChain 34(data) 47 695
-             732: 30(f16vec4) Load 731
-             733:702(f16vec2) VectorShuffle 732 732 0 1
-             734:702(f16vec2) GroupNonUniformQuadSwap 43 733 38
-             735:    703(ptr) AccessChain 34(data) 730 695
-             736: 30(f16vec4) Load 735
-             737: 30(f16vec4) VectorShuffle 736 734 4 5 2 3
-                              Store 735 737
-             738:      6(int) Load 8(invocation)
-             739:    703(ptr) AccessChain 34(data) 58 695
-             740: 30(f16vec4) Load 739
-             741:712(f16vec3) VectorShuffle 740 740 0 1 2
-             742:712(f16vec3) GroupNonUniformQuadSwap 43 741 38
-             743:    703(ptr) AccessChain 34(data) 738 695
-             744: 30(f16vec4) Load 743
-             745: 30(f16vec4) VectorShuffle 744 742 4 5 6 3
-                              Store 743 745
-             746:      6(int) Load 8(invocation)
-             747:    703(ptr) AccessChain 34(data) 68 695
-             748: 30(f16vec4) Load 747
-             749: 30(f16vec4) GroupNonUniformQuadSwap 43 748 38
-             750:    703(ptr) AccessChain 34(data) 746 695
-                              Store 750 749
-             751:      6(int) Load 8(invocation)
-             752:    696(ptr) AccessChain 34(data) 37 695 38
-             753:29(float16_t) Load 752
-             754:29(float16_t) GroupNonUniformQuadSwap 43 753 42
-             755:    696(ptr) AccessChain 34(data) 751 695 38
-                              Store 755 754
-             756:      6(int) Load 8(invocation)
-             757:    703(ptr) AccessChain 34(data) 47 695
-             758: 30(f16vec4) Load 757
-             759:702(f16vec2) VectorShuffle 758 758 0 1
-             760:702(f16vec2) GroupNonUniformQuadSwap 43 759 42
-             761:    703(ptr) AccessChain 34(data) 756 695
-             762: 30(f16vec4) Load 761
-             763: 30(f16vec4) VectorShuffle 762 760 4 5 2 3
-                              Store 761 763
-             764:      6(int) Load 8(invocation)
-             765:    703(ptr) AccessChain 34(data) 58 695
-             766: 30(f16vec4) Load 765
-             767:712(f16vec3) VectorShuffle 766 766 0 1 2
-             768:712(f16vec3) GroupNonUniformQuadSwap 43 767 42
-             769:    703(ptr) AccessChain 34(data) 764 695
-             770: 30(f16vec4) Load 769
-             771: 30(f16vec4) VectorShuffle 770 768 4 5 6 3
-                              Store 769 771
-             772:      6(int) Load 8(invocation)
-             773:    703(ptr) AccessChain 34(data) 68 695
-             774: 30(f16vec4) Load 773
-             775: 30(f16vec4) GroupNonUniformQuadSwap 43 774 42
-             776:    703(ptr) AccessChain 34(data) 772 695
-                              Store 776 775
-             777:      6(int) Load 8(invocation)
-             778:    696(ptr) AccessChain 34(data) 37 695 38
-             779:29(float16_t) Load 778
-             780:29(float16_t) GroupNonUniformQuadSwap 43 779 128
-             781:    696(ptr) AccessChain 34(data) 777 695 38
-                              Store 781 780
-             782:      6(int) Load 8(invocation)
-             783:    703(ptr) AccessChain 34(data) 47 695
-             784: 30(f16vec4) Load 783
-             785:702(f16vec2) VectorShuffle 784 784 0 1
-             786:702(f16vec2) GroupNonUniformQuadSwap 43 785 128
-             787:    703(ptr) AccessChain 34(data) 782 695
-             788: 30(f16vec4) Load 787
-             789: 30(f16vec4) VectorShuffle 788 786 4 5 2 3
-                              Store 787 789
+             731:    667(ptr) AccessChain 34(data) 37 666 38
+             732: 27(int64_t) Load 731
+             733: 27(int64_t) GroupNonUniformQuadSwap 43 732 42
+             734:    667(ptr) AccessChain 34(data) 730 666 38
+                              Store 734 733
+             735:      6(int) Load 8(invocation)
+             736:    674(ptr) AccessChain 34(data) 47 666
+             737: 28(i64vec4) Load 736
+             738:673(i64vec2) VectorShuffle 737 737 0 1
+             739:673(i64vec2) GroupNonUniformQuadSwap 43 738 42
+             740:    667(ptr) AccessChain 34(data) 735 666 38
+             741: 27(int64_t) CompositeExtract 739 0
+                              Store 740 741
+             742:    667(ptr) AccessChain 34(data) 735 666 42
+             743: 27(int64_t) CompositeExtract 739 1
+                              Store 742 743
+             744:      6(int) Load 8(invocation)
+             745:    674(ptr) AccessChain 34(data) 59 666
+             746: 28(i64vec4) Load 745
+             747:684(i64vec3) VectorShuffle 746 746 0 1 2
+             748:684(i64vec3) GroupNonUniformQuadSwap 43 747 42
+             749:    667(ptr) AccessChain 34(data) 744 666 38
+             750: 27(int64_t) CompositeExtract 748 0
+                              Store 749 750
+             751:    667(ptr) AccessChain 34(data) 744 666 42
+             752: 27(int64_t) CompositeExtract 748 1
+                              Store 751 752
+             753:    667(ptr) AccessChain 34(data) 744 666 69
+             754: 27(int64_t) CompositeExtract 748 2
+                              Store 753 754
+             755:      6(int) Load 8(invocation)
+             756:    674(ptr) AccessChain 34(data) 73 666
+             757: 28(i64vec4) Load 756
+             758: 28(i64vec4) GroupNonUniformQuadSwap 43 757 42
+             759:    674(ptr) AccessChain 34(data) 755 666
+                              Store 759 758
+             760:      6(int) Load 8(invocation)
+             761:    667(ptr) AccessChain 34(data) 37 666 38
+             762: 27(int64_t) Load 761
+             763: 27(int64_t) GroupNonUniformQuadSwap 43 762 69
+             764:    667(ptr) AccessChain 34(data) 760 666 38
+                              Store 764 763
+             765:      6(int) Load 8(invocation)
+             766:    674(ptr) AccessChain 34(data) 47 666
+             767: 28(i64vec4) Load 766
+             768:673(i64vec2) VectorShuffle 767 767 0 1
+             769:673(i64vec2) GroupNonUniformQuadSwap 43 768 69
+             770:    667(ptr) AccessChain 34(data) 765 666 38
+             771: 27(int64_t) CompositeExtract 769 0
+                              Store 770 771
+             772:    667(ptr) AccessChain 34(data) 765 666 42
+             773: 27(int64_t) CompositeExtract 769 1
+                              Store 772 773
+             774:      6(int) Load 8(invocation)
+             775:    674(ptr) AccessChain 34(data) 59 666
+             776: 28(i64vec4) Load 775
+             777:684(i64vec3) VectorShuffle 776 776 0 1 2
+             778:684(i64vec3) GroupNonUniformQuadSwap 43 777 69
+             779:    667(ptr) AccessChain 34(data) 774 666 38
+             780: 27(int64_t) CompositeExtract 778 0
+                              Store 779 780
+             781:    667(ptr) AccessChain 34(data) 774 666 42
+             782: 27(int64_t) CompositeExtract 778 1
+                              Store 781 782
+             783:    667(ptr) AccessChain 34(data) 774 666 69
+             784: 27(int64_t) CompositeExtract 778 2
+                              Store 783 784
+             785:      6(int) Load 8(invocation)
+             786:    674(ptr) AccessChain 34(data) 73 666
+             787: 28(i64vec4) Load 786
+             788: 28(i64vec4) GroupNonUniformQuadSwap 43 787 69
+             789:    674(ptr) AccessChain 34(data) 785 666
+                              Store 789 788
              790:      6(int) Load 8(invocation)
-             791:    703(ptr) AccessChain 34(data) 58 695
-             792: 30(f16vec4) Load 791
-             793:712(f16vec3) VectorShuffle 792 792 0 1 2
-             794:712(f16vec3) GroupNonUniformQuadSwap 43 793 128
-             795:    703(ptr) AccessChain 34(data) 790 695
-             796: 30(f16vec4) Load 795
-             797: 30(f16vec4) VectorShuffle 796 794 4 5 6 3
-                              Store 795 797
-             798:      6(int) Load 8(invocation)
-             799:    703(ptr) AccessChain 34(data) 68 695
-             800: 30(f16vec4) Load 799
-             801: 30(f16vec4) GroupNonUniformQuadSwap 43 800 128
-             802:    703(ptr) AccessChain 34(data) 798 695
-                              Store 802 801
+             793:    792(ptr) AccessChain 34(data) 37 791 38
+             794:29(float16_t) Load 793
+             795:29(float16_t) GroupNonUniformQuadBroadcast 43 794 42
+             796:    792(ptr) AccessChain 34(data) 790 791 38
+                              Store 796 795
+             797:      6(int) Load 8(invocation)
+             800:    799(ptr) AccessChain 34(data) 47 791
+             801: 30(f16vec4) Load 800
+             802:798(f16vec2) VectorShuffle 801 801 0 1
+             803:798(f16vec2) GroupNonUniformQuadBroadcast 43 802 42
+             804:    792(ptr) AccessChain 34(data) 797 791 38
+             805:29(float16_t) CompositeExtract 803 0
+                              Store 804 805
+             806:    792(ptr) AccessChain 34(data) 797 791 42
+             807:29(float16_t) CompositeExtract 803 1
+                              Store 806 807
+             808:      6(int) Load 8(invocation)
+             810:    799(ptr) AccessChain 34(data) 59 791
+             811: 30(f16vec4) Load 810
+             812:809(f16vec3) VectorShuffle 811 811 0 1 2
+             813:809(f16vec3) GroupNonUniformQuadBroadcast 43 812 42
+             814:    792(ptr) AccessChain 34(data) 808 791 38
+             815:29(float16_t) CompositeExtract 813 0
+                              Store 814 815
+             816:    792(ptr) AccessChain 34(data) 808 791 42
+             817:29(float16_t) CompositeExtract 813 1
+                              Store 816 817
+             818:    792(ptr) AccessChain 34(data) 808 791 69
+             819:29(float16_t) CompositeExtract 813 2
+                              Store 818 819
+             820:      6(int) Load 8(invocation)
+             821:    799(ptr) AccessChain 34(data) 73 791
+             822: 30(f16vec4) Load 821
+             823: 30(f16vec4) GroupNonUniformQuadBroadcast 43 822 42
+             824:    799(ptr) AccessChain 34(data) 820 791
+                              Store 824 823
+             825:      6(int) Load 8(invocation)
+             826:    792(ptr) AccessChain 34(data) 37 791 38
+             827:29(float16_t) Load 826
+             828:29(float16_t) GroupNonUniformQuadSwap 43 827 38
+             829:    792(ptr) AccessChain 34(data) 825 791 38
+                              Store 829 828
+             830:      6(int) Load 8(invocation)
+             831:    799(ptr) AccessChain 34(data) 47 791
+             832: 30(f16vec4) Load 831
+             833:798(f16vec2) VectorShuffle 832 832 0 1
+             834:798(f16vec2) GroupNonUniformQuadSwap 43 833 38
+             835:    792(ptr) AccessChain 34(data) 830 791 38
+             836:29(float16_t) CompositeExtract 834 0
+                              Store 835 836
+             837:    792(ptr) AccessChain 34(data) 830 791 42
+             838:29(float16_t) CompositeExtract 834 1
+                              Store 837 838
+             839:      6(int) Load 8(invocation)
+             840:    799(ptr) AccessChain 34(data) 59 791
+             841: 30(f16vec4) Load 840
+             842:809(f16vec3) VectorShuffle 841 841 0 1 2
+             843:809(f16vec3) GroupNonUniformQuadSwap 43 842 38
+             844:    792(ptr) AccessChain 34(data) 839 791 38
+             845:29(float16_t) CompositeExtract 843 0
+                              Store 844 845
+             846:    792(ptr) AccessChain 34(data) 839 791 42
+             847:29(float16_t) CompositeExtract 843 1
+                              Store 846 847
+             848:    792(ptr) AccessChain 34(data) 839 791 69
+             849:29(float16_t) CompositeExtract 843 2
+                              Store 848 849
+             850:      6(int) Load 8(invocation)
+             851:    799(ptr) AccessChain 34(data) 73 791
+             852: 30(f16vec4) Load 851
+             853: 30(f16vec4) GroupNonUniformQuadSwap 43 852 38
+             854:    799(ptr) AccessChain 34(data) 850 791
+                              Store 854 853
+             855:      6(int) Load 8(invocation)
+             856:    792(ptr) AccessChain 34(data) 37 791 38
+             857:29(float16_t) Load 856
+             858:29(float16_t) GroupNonUniformQuadSwap 43 857 42
+             859:    792(ptr) AccessChain 34(data) 855 791 38
+                              Store 859 858
+             860:      6(int) Load 8(invocation)
+             861:    799(ptr) AccessChain 34(data) 47 791
+             862: 30(f16vec4) Load 861
+             863:798(f16vec2) VectorShuffle 862 862 0 1
+             864:798(f16vec2) GroupNonUniformQuadSwap 43 863 42
+             865:    792(ptr) AccessChain 34(data) 860 791 38
+             866:29(float16_t) CompositeExtract 864 0
+                              Store 865 866
+             867:    792(ptr) AccessChain 34(data) 860 791 42
+             868:29(float16_t) CompositeExtract 864 1
+                              Store 867 868
+             869:      6(int) Load 8(invocation)
+             870:    799(ptr) AccessChain 34(data) 59 791
+             871: 30(f16vec4) Load 870
+             872:809(f16vec3) VectorShuffle 871 871 0 1 2
+             873:809(f16vec3) GroupNonUniformQuadSwap 43 872 42
+             874:    792(ptr) AccessChain 34(data) 869 791 38
+             875:29(float16_t) CompositeExtract 873 0
+                              Store 874 875
+             876:    792(ptr) AccessChain 34(data) 869 791 42
+             877:29(float16_t) CompositeExtract 873 1
+                              Store 876 877
+             878:    792(ptr) AccessChain 34(data) 869 791 69
+             879:29(float16_t) CompositeExtract 873 2
+                              Store 878 879
+             880:      6(int) Load 8(invocation)
+             881:    799(ptr) AccessChain 34(data) 73 791
+             882: 30(f16vec4) Load 881
+             883: 30(f16vec4) GroupNonUniformQuadSwap 43 882 42
+             884:    799(ptr) AccessChain 34(data) 880 791
+                              Store 884 883
+             885:      6(int) Load 8(invocation)
+             886:    792(ptr) AccessChain 34(data) 37 791 38
+             887:29(float16_t) Load 886
+             888:29(float16_t) GroupNonUniformQuadSwap 43 887 69
+             889:    792(ptr) AccessChain 34(data) 885 791 38
+                              Store 889 888
+             890:      6(int) Load 8(invocation)
+             891:    799(ptr) AccessChain 34(data) 47 791
+             892: 30(f16vec4) Load 891
+             893:798(f16vec2) VectorShuffle 892 892 0 1
+             894:798(f16vec2) GroupNonUniformQuadSwap 43 893 69
+             895:    792(ptr) AccessChain 34(data) 890 791 38
+             896:29(float16_t) CompositeExtract 894 0
+                              Store 895 896
+             897:    792(ptr) AccessChain 34(data) 890 791 42
+             898:29(float16_t) CompositeExtract 894 1
+                              Store 897 898
+             899:      6(int) Load 8(invocation)
+             900:    799(ptr) AccessChain 34(data) 59 791
+             901: 30(f16vec4) Load 900
+             902:809(f16vec3) VectorShuffle 901 901 0 1 2
+             903:809(f16vec3) GroupNonUniformQuadSwap 43 902 69
+             904:    792(ptr) AccessChain 34(data) 899 791 38
+             905:29(float16_t) CompositeExtract 903 0
+                              Store 904 905
+             906:    792(ptr) AccessChain 34(data) 899 791 42
+             907:29(float16_t) CompositeExtract 903 1
+                              Store 906 907
+             908:    792(ptr) AccessChain 34(data) 899 791 69
+             909:29(float16_t) CompositeExtract 903 2
+                              Store 908 909
+             910:      6(int) Load 8(invocation)
+             911:    799(ptr) AccessChain 34(data) 73 791
+             912: 30(f16vec4) Load 911
+             913: 30(f16vec4) GroupNonUniformQuadSwap 43 912 69
+             914:    799(ptr) AccessChain 34(data) 910 791
+                              Store 914 913
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out
index b798bae..eaea708 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out
@@ -1,7 +1,7 @@
 spv.subgroupExtendedTypesShuffle.comp
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 497
+// Id's are bound by 554
 
                               Capability Shader
                               Capability Float16
@@ -59,7 +59,7 @@
                               Decorate 31(Buffers) Block
                               Decorate 34(data) DescriptorSet 0
                               Decorate 34(data) Binding 0
-                              Decorate 496 BuiltIn WorkgroupSize
+                              Decorate 553 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -94,40 +94,41 @@
               47:     36(int) Constant 1
               48:             TypeVector 17(int8_t) 2
               49:             TypePointer StorageBuffer 18(i8vec4)
-              59:     36(int) Constant 2
-              60:             TypeVector 17(int8_t) 3
-              70:     36(int) Constant 3
-             107:             TypePointer StorageBuffer 19(int8_t)
-             114:             TypeVector 19(int8_t) 2
-             115:             TypePointer StorageBuffer 20(i8vec4)
-             125:             TypeVector 19(int8_t) 3
-             171:             TypePointer StorageBuffer 21(int16_t)
-             178:             TypeVector 21(int16_t) 2
-             179:             TypePointer StorageBuffer 22(i16vec4)
-             189:             TypeVector 21(int16_t) 3
-             235:             TypePointer StorageBuffer 23(int16_t)
-             242:             TypeVector 23(int16_t) 2
-             243:             TypePointer StorageBuffer 24(i16vec4)
-             253:             TypeVector 23(int16_t) 3
-             299:     36(int) Constant 4
-             300:             TypePointer StorageBuffer 25(int64_t)
-             307:             TypeVector 25(int64_t) 2
-             308:             TypePointer StorageBuffer 26(i64vec4)
-             318:             TypeVector 25(int64_t) 3
-             364:     36(int) Constant 5
-             365:             TypePointer StorageBuffer 27(int64_t)
-             372:             TypeVector 27(int64_t) 2
-             373:             TypePointer StorageBuffer 28(i64vec4)
-             383:             TypeVector 27(int64_t) 3
-             429:     36(int) Constant 6
-             430:             TypePointer StorageBuffer 29(float16_t)
-             437:             TypeVector 29(float16_t) 2
-             438:             TypePointer StorageBuffer 30(f16vec4)
-             448:             TypeVector 29(float16_t) 3
-             493:             TypeVector 6(int) 3
-             494:      6(int) Constant 8
-             495:      6(int) Constant 1
-             496:  493(ivec3) ConstantComposite 494 495 495
+              57:      6(int) Constant 1
+              61:     36(int) Constant 2
+              62:             TypeVector 17(int8_t) 3
+              72:      6(int) Constant 2
+              76:     36(int) Constant 3
+             117:             TypePointer StorageBuffer 19(int8_t)
+             124:             TypeVector 19(int8_t) 2
+             125:             TypePointer StorageBuffer 20(i8vec4)
+             136:             TypeVector 19(int8_t) 3
+             189:             TypePointer StorageBuffer 21(int16_t)
+             196:             TypeVector 21(int16_t) 2
+             197:             TypePointer StorageBuffer 22(i16vec4)
+             208:             TypeVector 21(int16_t) 3
+             261:             TypePointer StorageBuffer 23(int16_t)
+             268:             TypeVector 23(int16_t) 2
+             269:             TypePointer StorageBuffer 24(i16vec4)
+             280:             TypeVector 23(int16_t) 3
+             333:     36(int) Constant 4
+             334:             TypePointer StorageBuffer 25(int64_t)
+             341:             TypeVector 25(int64_t) 2
+             342:             TypePointer StorageBuffer 26(i64vec4)
+             353:             TypeVector 25(int64_t) 3
+             406:     36(int) Constant 5
+             407:             TypePointer StorageBuffer 27(int64_t)
+             414:             TypeVector 27(int64_t) 2
+             415:             TypePointer StorageBuffer 28(i64vec4)
+             426:             TypeVector 27(int64_t) 3
+             479:     36(int) Constant 6
+             480:             TypePointer StorageBuffer 29(float16_t)
+             487:             TypeVector 29(float16_t) 2
+             488:             TypePointer StorageBuffer 30(f16vec4)
+             499:             TypeVector 29(float16_t) 3
+             551:             TypeVector 6(int) 3
+             552:      6(int) Constant 8
+             553:  551(ivec3) ConstantComposite 552 57 57
          4(main):           2 Function None 3
                5:             Label
    8(invocation):      7(ptr) Variable Function
@@ -149,468 +150,566 @@
               52:  48(i8vec2) VectorShuffle 51 51 0 1
               53:      6(int) Load 8(invocation)
               54:  48(i8vec2) GroupNonUniformShuffle 43 52 53
-              55:     49(ptr) AccessChain 34(data) 46 37
-              56:  18(i8vec4) Load 55
-              57:  18(i8vec4) VectorShuffle 56 54 4 5 2 3
-                              Store 55 57
-              58:      6(int) Load 8(invocation)
-              61:     49(ptr) AccessChain 34(data) 59 37
-              62:  18(i8vec4) Load 61
-              63:  60(i8vec3) VectorShuffle 62 62 0 1 2
-              64:      6(int) Load 8(invocation)
-              65:  60(i8vec3) GroupNonUniformShuffle 43 63 64
-              66:     49(ptr) AccessChain 34(data) 58 37
-              67:  18(i8vec4) Load 66
-              68:  18(i8vec4) VectorShuffle 67 65 4 5 6 3
-                              Store 66 68
-              69:      6(int) Load 8(invocation)
-              71:     49(ptr) AccessChain 34(data) 70 37
-              72:  18(i8vec4) Load 71
-              73:      6(int) Load 8(invocation)
-              74:  18(i8vec4) GroupNonUniformShuffle 43 72 73
-              75:     49(ptr) AccessChain 34(data) 69 37
-                              Store 75 74
-              76:      6(int) Load 8(invocation)
-              77:     39(ptr) AccessChain 34(data) 37 37 38
-              78:  17(int8_t) Load 77
+              55:     39(ptr) AccessChain 34(data) 46 37 38
+              56:  17(int8_t) CompositeExtract 54 0
+                              Store 55 56
+              58:     39(ptr) AccessChain 34(data) 46 37 57
+              59:  17(int8_t) CompositeExtract 54 1
+                              Store 58 59
+              60:      6(int) Load 8(invocation)
+              63:     49(ptr) AccessChain 34(data) 61 37
+              64:  18(i8vec4) Load 63
+              65:  62(i8vec3) VectorShuffle 64 64 0 1 2
+              66:      6(int) Load 8(invocation)
+              67:  62(i8vec3) GroupNonUniformShuffle 43 65 66
+              68:     39(ptr) AccessChain 34(data) 60 37 38
+              69:  17(int8_t) CompositeExtract 67 0
+                              Store 68 69
+              70:     39(ptr) AccessChain 34(data) 60 37 57
+              71:  17(int8_t) CompositeExtract 67 1
+                              Store 70 71
+              73:     39(ptr) AccessChain 34(data) 60 37 72
+              74:  17(int8_t) CompositeExtract 67 2
+                              Store 73 74
+              75:      6(int) Load 8(invocation)
+              77:     49(ptr) AccessChain 34(data) 76 37
+              78:  18(i8vec4) Load 77
               79:      6(int) Load 8(invocation)
-              80:  17(int8_t) GroupNonUniformShuffleXor 43 78 79
-              81:     39(ptr) AccessChain 34(data) 76 37 38
+              80:  18(i8vec4) GroupNonUniformShuffle 43 78 79
+              81:     49(ptr) AccessChain 34(data) 75 37
                               Store 81 80
               82:      6(int) Load 8(invocation)
-              83:     49(ptr) AccessChain 34(data) 47 37
-              84:  18(i8vec4) Load 83
-              85:  48(i8vec2) VectorShuffle 84 84 0 1
-              86:      6(int) Load 8(invocation)
-              87:  48(i8vec2) GroupNonUniformShuffleXor 43 85 86
-              88:     49(ptr) AccessChain 34(data) 82 37
-              89:  18(i8vec4) Load 88
-              90:  18(i8vec4) VectorShuffle 89 87 4 5 2 3
-                              Store 88 90
-              91:      6(int) Load 8(invocation)
-              92:     49(ptr) AccessChain 34(data) 59 37
-              93:  18(i8vec4) Load 92
-              94:  60(i8vec3) VectorShuffle 93 93 0 1 2
-              95:      6(int) Load 8(invocation)
-              96:  60(i8vec3) GroupNonUniformShuffleXor 43 94 95
-              97:     49(ptr) AccessChain 34(data) 91 37
-              98:  18(i8vec4) Load 97
-              99:  18(i8vec4) VectorShuffle 98 96 4 5 6 3
-                              Store 97 99
-             100:      6(int) Load 8(invocation)
-             101:     49(ptr) AccessChain 34(data) 70 37
-             102:  18(i8vec4) Load 101
-             103:      6(int) Load 8(invocation)
-             104:  18(i8vec4) GroupNonUniformShuffleXor 43 102 103
-             105:     49(ptr) AccessChain 34(data) 100 37
-                              Store 105 104
-             106:      6(int) Load 8(invocation)
-             108:    107(ptr) AccessChain 34(data) 37 47 38
-             109:  19(int8_t) Load 108
+              83:     39(ptr) AccessChain 34(data) 37 37 38
+              84:  17(int8_t) Load 83
+              85:      6(int) Load 8(invocation)
+              86:  17(int8_t) GroupNonUniformShuffleXor 43 84 85
+              87:     39(ptr) AccessChain 34(data) 82 37 38
+                              Store 87 86
+              88:      6(int) Load 8(invocation)
+              89:     49(ptr) AccessChain 34(data) 47 37
+              90:  18(i8vec4) Load 89
+              91:  48(i8vec2) VectorShuffle 90 90 0 1
+              92:      6(int) Load 8(invocation)
+              93:  48(i8vec2) GroupNonUniformShuffleXor 43 91 92
+              94:     39(ptr) AccessChain 34(data) 88 37 38
+              95:  17(int8_t) CompositeExtract 93 0
+                              Store 94 95
+              96:     39(ptr) AccessChain 34(data) 88 37 57
+              97:  17(int8_t) CompositeExtract 93 1
+                              Store 96 97
+              98:      6(int) Load 8(invocation)
+              99:     49(ptr) AccessChain 34(data) 61 37
+             100:  18(i8vec4) Load 99
+             101:  62(i8vec3) VectorShuffle 100 100 0 1 2
+             102:      6(int) Load 8(invocation)
+             103:  62(i8vec3) GroupNonUniformShuffleXor 43 101 102
+             104:     39(ptr) AccessChain 34(data) 98 37 38
+             105:  17(int8_t) CompositeExtract 103 0
+                              Store 104 105
+             106:     39(ptr) AccessChain 34(data) 98 37 57
+             107:  17(int8_t) CompositeExtract 103 1
+                              Store 106 107
+             108:     39(ptr) AccessChain 34(data) 98 37 72
+             109:  17(int8_t) CompositeExtract 103 2
+                              Store 108 109
              110:      6(int) Load 8(invocation)
-             111:  19(int8_t) GroupNonUniformShuffle 43 109 110
-             112:    107(ptr) AccessChain 34(data) 106 47 38
-                              Store 112 111
+             111:     49(ptr) AccessChain 34(data) 76 37
+             112:  18(i8vec4) Load 111
              113:      6(int) Load 8(invocation)
-             116:    115(ptr) AccessChain 34(data) 47 47
-             117:  20(i8vec4) Load 116
-             118: 114(i8vec2) VectorShuffle 117 117 0 1
-             119:      6(int) Load 8(invocation)
-             120: 114(i8vec2) GroupNonUniformShuffle 43 118 119
-             121:    115(ptr) AccessChain 34(data) 113 47
-             122:  20(i8vec4) Load 121
-             123:  20(i8vec4) VectorShuffle 122 120 4 5 2 3
-                              Store 121 123
-             124:      6(int) Load 8(invocation)
-             126:    115(ptr) AccessChain 34(data) 59 47
+             114:  18(i8vec4) GroupNonUniformShuffleXor 43 112 113
+             115:     49(ptr) AccessChain 34(data) 110 37
+                              Store 115 114
+             116:      6(int) Load 8(invocation)
+             118:    117(ptr) AccessChain 34(data) 37 47 38
+             119:  19(int8_t) Load 118
+             120:      6(int) Load 8(invocation)
+             121:  19(int8_t) GroupNonUniformShuffle 43 119 120
+             122:    117(ptr) AccessChain 34(data) 116 47 38
+                              Store 122 121
+             123:      6(int) Load 8(invocation)
+             126:    125(ptr) AccessChain 34(data) 47 47
              127:  20(i8vec4) Load 126
-             128: 125(i8vec3) VectorShuffle 127 127 0 1 2
+             128: 124(i8vec2) VectorShuffle 127 127 0 1
              129:      6(int) Load 8(invocation)
-             130: 125(i8vec3) GroupNonUniformShuffle 43 128 129
-             131:    115(ptr) AccessChain 34(data) 124 47
-             132:  20(i8vec4) Load 131
-             133:  20(i8vec4) VectorShuffle 132 130 4 5 6 3
-                              Store 131 133
-             134:      6(int) Load 8(invocation)
-             135:    115(ptr) AccessChain 34(data) 70 47
-             136:  20(i8vec4) Load 135
-             137:      6(int) Load 8(invocation)
-             138:  20(i8vec4) GroupNonUniformShuffle 43 136 137
-             139:    115(ptr) AccessChain 34(data) 134 47
-                              Store 139 138
+             130: 124(i8vec2) GroupNonUniformShuffle 43 128 129
+             131:    117(ptr) AccessChain 34(data) 123 47 38
+             132:  19(int8_t) CompositeExtract 130 0
+                              Store 131 132
+             133:    117(ptr) AccessChain 34(data) 123 47 57
+             134:  19(int8_t) CompositeExtract 130 1
+                              Store 133 134
+             135:      6(int) Load 8(invocation)
+             137:    125(ptr) AccessChain 34(data) 61 47
+             138:  20(i8vec4) Load 137
+             139: 136(i8vec3) VectorShuffle 138 138 0 1 2
              140:      6(int) Load 8(invocation)
-             141:    107(ptr) AccessChain 34(data) 37 47 38
-             142:  19(int8_t) Load 141
-             143:      6(int) Load 8(invocation)
-             144:  19(int8_t) GroupNonUniformShuffleXor 43 142 143
-             145:    107(ptr) AccessChain 34(data) 140 47 38
-                              Store 145 144
-             146:      6(int) Load 8(invocation)
-             147:    115(ptr) AccessChain 34(data) 47 47
-             148:  20(i8vec4) Load 147
-             149: 114(i8vec2) VectorShuffle 148 148 0 1
-             150:      6(int) Load 8(invocation)
-             151: 114(i8vec2) GroupNonUniformShuffleXor 43 149 150
-             152:    115(ptr) AccessChain 34(data) 146 47
-             153:  20(i8vec4) Load 152
-             154:  20(i8vec4) VectorShuffle 153 151 4 5 2 3
-                              Store 152 154
-             155:      6(int) Load 8(invocation)
-             156:    115(ptr) AccessChain 34(data) 59 47
-             157:  20(i8vec4) Load 156
-             158: 125(i8vec3) VectorShuffle 157 157 0 1 2
-             159:      6(int) Load 8(invocation)
-             160: 125(i8vec3) GroupNonUniformShuffleXor 43 158 159
-             161:    115(ptr) AccessChain 34(data) 155 47
+             141: 136(i8vec3) GroupNonUniformShuffle 43 139 140
+             142:    117(ptr) AccessChain 34(data) 135 47 38
+             143:  19(int8_t) CompositeExtract 141 0
+                              Store 142 143
+             144:    117(ptr) AccessChain 34(data) 135 47 57
+             145:  19(int8_t) CompositeExtract 141 1
+                              Store 144 145
+             146:    117(ptr) AccessChain 34(data) 135 47 72
+             147:  19(int8_t) CompositeExtract 141 2
+                              Store 146 147
+             148:      6(int) Load 8(invocation)
+             149:    125(ptr) AccessChain 34(data) 76 47
+             150:  20(i8vec4) Load 149
+             151:      6(int) Load 8(invocation)
+             152:  20(i8vec4) GroupNonUniformShuffle 43 150 151
+             153:    125(ptr) AccessChain 34(data) 148 47
+                              Store 153 152
+             154:      6(int) Load 8(invocation)
+             155:    117(ptr) AccessChain 34(data) 37 47 38
+             156:  19(int8_t) Load 155
+             157:      6(int) Load 8(invocation)
+             158:  19(int8_t) GroupNonUniformShuffleXor 43 156 157
+             159:    117(ptr) AccessChain 34(data) 154 47 38
+                              Store 159 158
+             160:      6(int) Load 8(invocation)
+             161:    125(ptr) AccessChain 34(data) 47 47
              162:  20(i8vec4) Load 161
-             163:  20(i8vec4) VectorShuffle 162 160 4 5 6 3
-                              Store 161 163
+             163: 124(i8vec2) VectorShuffle 162 162 0 1
              164:      6(int) Load 8(invocation)
-             165:    115(ptr) AccessChain 34(data) 70 47
-             166:  20(i8vec4) Load 165
-             167:      6(int) Load 8(invocation)
-             168:  20(i8vec4) GroupNonUniformShuffleXor 43 166 167
-             169:    115(ptr) AccessChain 34(data) 164 47
-                              Store 169 168
+             165: 124(i8vec2) GroupNonUniformShuffleXor 43 163 164
+             166:    117(ptr) AccessChain 34(data) 160 47 38
+             167:  19(int8_t) CompositeExtract 165 0
+                              Store 166 167
+             168:    117(ptr) AccessChain 34(data) 160 47 57
+             169:  19(int8_t) CompositeExtract 165 1
+                              Store 168 169
              170:      6(int) Load 8(invocation)
-             172:    171(ptr) AccessChain 34(data) 37 59 38
-             173: 21(int16_t) Load 172
+             171:    125(ptr) AccessChain 34(data) 61 47
+             172:  20(i8vec4) Load 171
+             173: 136(i8vec3) VectorShuffle 172 172 0 1 2
              174:      6(int) Load 8(invocation)
-             175: 21(int16_t) GroupNonUniformShuffle 43 173 174
-             176:    171(ptr) AccessChain 34(data) 170 59 38
-                              Store 176 175
-             177:      6(int) Load 8(invocation)
-             180:    179(ptr) AccessChain 34(data) 47 59
-             181: 22(i16vec4) Load 180
-             182:178(i16vec2) VectorShuffle 181 181 0 1
-             183:      6(int) Load 8(invocation)
-             184:178(i16vec2) GroupNonUniformShuffle 43 182 183
-             185:    179(ptr) AccessChain 34(data) 177 59
-             186: 22(i16vec4) Load 185
-             187: 22(i16vec4) VectorShuffle 186 184 4 5 2 3
-                              Store 185 187
+             175: 136(i8vec3) GroupNonUniformShuffleXor 43 173 174
+             176:    117(ptr) AccessChain 34(data) 170 47 38
+             177:  19(int8_t) CompositeExtract 175 0
+                              Store 176 177
+             178:    117(ptr) AccessChain 34(data) 170 47 57
+             179:  19(int8_t) CompositeExtract 175 1
+                              Store 178 179
+             180:    117(ptr) AccessChain 34(data) 170 47 72
+             181:  19(int8_t) CompositeExtract 175 2
+                              Store 180 181
+             182:      6(int) Load 8(invocation)
+             183:    125(ptr) AccessChain 34(data) 76 47
+             184:  20(i8vec4) Load 183
+             185:      6(int) Load 8(invocation)
+             186:  20(i8vec4) GroupNonUniformShuffleXor 43 184 185
+             187:    125(ptr) AccessChain 34(data) 182 47
+                              Store 187 186
              188:      6(int) Load 8(invocation)
-             190:    179(ptr) AccessChain 34(data) 59 59
-             191: 22(i16vec4) Load 190
-             192:189(i16vec3) VectorShuffle 191 191 0 1 2
-             193:      6(int) Load 8(invocation)
-             194:189(i16vec3) GroupNonUniformShuffle 43 192 193
-             195:    179(ptr) AccessChain 34(data) 188 59
-             196: 22(i16vec4) Load 195
-             197: 22(i16vec4) VectorShuffle 196 194 4 5 6 3
-                              Store 195 197
-             198:      6(int) Load 8(invocation)
-             199:    179(ptr) AccessChain 34(data) 70 59
-             200: 22(i16vec4) Load 199
+             190:    189(ptr) AccessChain 34(data) 37 61 38
+             191: 21(int16_t) Load 190
+             192:      6(int) Load 8(invocation)
+             193: 21(int16_t) GroupNonUniformShuffle 43 191 192
+             194:    189(ptr) AccessChain 34(data) 188 61 38
+                              Store 194 193
+             195:      6(int) Load 8(invocation)
+             198:    197(ptr) AccessChain 34(data) 47 61
+             199: 22(i16vec4) Load 198
+             200:196(i16vec2) VectorShuffle 199 199 0 1
              201:      6(int) Load 8(invocation)
-             202: 22(i16vec4) GroupNonUniformShuffle 43 200 201
-             203:    179(ptr) AccessChain 34(data) 198 59
-                              Store 203 202
-             204:      6(int) Load 8(invocation)
-             205:    171(ptr) AccessChain 34(data) 37 59 38
-             206: 21(int16_t) Load 205
+             202:196(i16vec2) GroupNonUniformShuffle 43 200 201
+             203:    189(ptr) AccessChain 34(data) 195 61 38
+             204: 21(int16_t) CompositeExtract 202 0
+                              Store 203 204
+             205:    189(ptr) AccessChain 34(data) 195 61 57
+             206: 21(int16_t) CompositeExtract 202 1
+                              Store 205 206
              207:      6(int) Load 8(invocation)
-             208: 21(int16_t) GroupNonUniformShuffleXor 43 206 207
-             209:    171(ptr) AccessChain 34(data) 204 59 38
-                              Store 209 208
-             210:      6(int) Load 8(invocation)
-             211:    179(ptr) AccessChain 34(data) 47 59
-             212: 22(i16vec4) Load 211
-             213:178(i16vec2) VectorShuffle 212 212 0 1
-             214:      6(int) Load 8(invocation)
-             215:178(i16vec2) GroupNonUniformShuffleXor 43 213 214
-             216:    179(ptr) AccessChain 34(data) 210 59
-             217: 22(i16vec4) Load 216
-             218: 22(i16vec4) VectorShuffle 217 215 4 5 2 3
-                              Store 216 218
-             219:      6(int) Load 8(invocation)
-             220:    179(ptr) AccessChain 34(data) 59 59
-             221: 22(i16vec4) Load 220
-             222:189(i16vec3) VectorShuffle 221 221 0 1 2
+             209:    197(ptr) AccessChain 34(data) 61 61
+             210: 22(i16vec4) Load 209
+             211:208(i16vec3) VectorShuffle 210 210 0 1 2
+             212:      6(int) Load 8(invocation)
+             213:208(i16vec3) GroupNonUniformShuffle 43 211 212
+             214:    189(ptr) AccessChain 34(data) 207 61 38
+             215: 21(int16_t) CompositeExtract 213 0
+                              Store 214 215
+             216:    189(ptr) AccessChain 34(data) 207 61 57
+             217: 21(int16_t) CompositeExtract 213 1
+                              Store 216 217
+             218:    189(ptr) AccessChain 34(data) 207 61 72
+             219: 21(int16_t) CompositeExtract 213 2
+                              Store 218 219
+             220:      6(int) Load 8(invocation)
+             221:    197(ptr) AccessChain 34(data) 76 61
+             222: 22(i16vec4) Load 221
              223:      6(int) Load 8(invocation)
-             224:189(i16vec3) GroupNonUniformShuffleXor 43 222 223
-             225:    179(ptr) AccessChain 34(data) 219 59
-             226: 22(i16vec4) Load 225
-             227: 22(i16vec4) VectorShuffle 226 224 4 5 6 3
-                              Store 225 227
-             228:      6(int) Load 8(invocation)
-             229:    179(ptr) AccessChain 34(data) 70 59
-             230: 22(i16vec4) Load 229
-             231:      6(int) Load 8(invocation)
-             232: 22(i16vec4) GroupNonUniformShuffleXor 43 230 231
-             233:    179(ptr) AccessChain 34(data) 228 59
-                              Store 233 232
-             234:      6(int) Load 8(invocation)
-             236:    235(ptr) AccessChain 34(data) 37 70 38
-             237: 23(int16_t) Load 236
-             238:      6(int) Load 8(invocation)
-             239: 23(int16_t) GroupNonUniformShuffle 43 237 238
-             240:    235(ptr) AccessChain 34(data) 234 70 38
-                              Store 240 239
-             241:      6(int) Load 8(invocation)
-             244:    243(ptr) AccessChain 34(data) 47 70
-             245: 24(i16vec4) Load 244
-             246:242(i16vec2) VectorShuffle 245 245 0 1
-             247:      6(int) Load 8(invocation)
-             248:242(i16vec2) GroupNonUniformShuffle 43 246 247
-             249:    243(ptr) AccessChain 34(data) 241 70
-             250: 24(i16vec4) Load 249
-             251: 24(i16vec4) VectorShuffle 250 248 4 5 2 3
-                              Store 249 251
-             252:      6(int) Load 8(invocation)
-             254:    243(ptr) AccessChain 34(data) 59 70
-             255: 24(i16vec4) Load 254
-             256:253(i16vec3) VectorShuffle 255 255 0 1 2
+             224: 22(i16vec4) GroupNonUniformShuffle 43 222 223
+             225:    197(ptr) AccessChain 34(data) 220 61
+                              Store 225 224
+             226:      6(int) Load 8(invocation)
+             227:    189(ptr) AccessChain 34(data) 37 61 38
+             228: 21(int16_t) Load 227
+             229:      6(int) Load 8(invocation)
+             230: 21(int16_t) GroupNonUniformShuffleXor 43 228 229
+             231:    189(ptr) AccessChain 34(data) 226 61 38
+                              Store 231 230
+             232:      6(int) Load 8(invocation)
+             233:    197(ptr) AccessChain 34(data) 47 61
+             234: 22(i16vec4) Load 233
+             235:196(i16vec2) VectorShuffle 234 234 0 1
+             236:      6(int) Load 8(invocation)
+             237:196(i16vec2) GroupNonUniformShuffleXor 43 235 236
+             238:    189(ptr) AccessChain 34(data) 232 61 38
+             239: 21(int16_t) CompositeExtract 237 0
+                              Store 238 239
+             240:    189(ptr) AccessChain 34(data) 232 61 57
+             241: 21(int16_t) CompositeExtract 237 1
+                              Store 240 241
+             242:      6(int) Load 8(invocation)
+             243:    197(ptr) AccessChain 34(data) 61 61
+             244: 22(i16vec4) Load 243
+             245:208(i16vec3) VectorShuffle 244 244 0 1 2
+             246:      6(int) Load 8(invocation)
+             247:208(i16vec3) GroupNonUniformShuffleXor 43 245 246
+             248:    189(ptr) AccessChain 34(data) 242 61 38
+             249: 21(int16_t) CompositeExtract 247 0
+                              Store 248 249
+             250:    189(ptr) AccessChain 34(data) 242 61 57
+             251: 21(int16_t) CompositeExtract 247 1
+                              Store 250 251
+             252:    189(ptr) AccessChain 34(data) 242 61 72
+             253: 21(int16_t) CompositeExtract 247 2
+                              Store 252 253
+             254:      6(int) Load 8(invocation)
+             255:    197(ptr) AccessChain 34(data) 76 61
+             256: 22(i16vec4) Load 255
              257:      6(int) Load 8(invocation)
-             258:253(i16vec3) GroupNonUniformShuffle 43 256 257
-             259:    243(ptr) AccessChain 34(data) 252 70
-             260: 24(i16vec4) Load 259
-             261: 24(i16vec4) VectorShuffle 260 258 4 5 6 3
-                              Store 259 261
-             262:      6(int) Load 8(invocation)
-             263:    243(ptr) AccessChain 34(data) 70 70
-             264: 24(i16vec4) Load 263
-             265:      6(int) Load 8(invocation)
-             266: 24(i16vec4) GroupNonUniformShuffle 43 264 265
-             267:    243(ptr) AccessChain 34(data) 262 70
-                              Store 267 266
-             268:      6(int) Load 8(invocation)
-             269:    235(ptr) AccessChain 34(data) 37 70 38
-             270: 23(int16_t) Load 269
-             271:      6(int) Load 8(invocation)
-             272: 23(int16_t) GroupNonUniformShuffleXor 43 270 271
-             273:    235(ptr) AccessChain 34(data) 268 70 38
-                              Store 273 272
-             274:      6(int) Load 8(invocation)
-             275:    243(ptr) AccessChain 34(data) 47 70
-             276: 24(i16vec4) Load 275
-             277:242(i16vec2) VectorShuffle 276 276 0 1
-             278:      6(int) Load 8(invocation)
-             279:242(i16vec2) GroupNonUniformShuffleXor 43 277 278
-             280:    243(ptr) AccessChain 34(data) 274 70
-             281: 24(i16vec4) Load 280
-             282: 24(i16vec4) VectorShuffle 281 279 4 5 2 3
-                              Store 280 282
-             283:      6(int) Load 8(invocation)
-             284:    243(ptr) AccessChain 34(data) 59 70
-             285: 24(i16vec4) Load 284
-             286:253(i16vec3) VectorShuffle 285 285 0 1 2
-             287:      6(int) Load 8(invocation)
-             288:253(i16vec3) GroupNonUniformShuffleXor 43 286 287
-             289:    243(ptr) AccessChain 34(data) 283 70
-             290: 24(i16vec4) Load 289
-             291: 24(i16vec4) VectorShuffle 290 288 4 5 6 3
-                              Store 289 291
+             258: 22(i16vec4) GroupNonUniformShuffleXor 43 256 257
+             259:    197(ptr) AccessChain 34(data) 254 61
+                              Store 259 258
+             260:      6(int) Load 8(invocation)
+             262:    261(ptr) AccessChain 34(data) 37 76 38
+             263: 23(int16_t) Load 262
+             264:      6(int) Load 8(invocation)
+             265: 23(int16_t) GroupNonUniformShuffle 43 263 264
+             266:    261(ptr) AccessChain 34(data) 260 76 38
+                              Store 266 265
+             267:      6(int) Load 8(invocation)
+             270:    269(ptr) AccessChain 34(data) 47 76
+             271: 24(i16vec4) Load 270
+             272:268(i16vec2) VectorShuffle 271 271 0 1
+             273:      6(int) Load 8(invocation)
+             274:268(i16vec2) GroupNonUniformShuffle 43 272 273
+             275:    261(ptr) AccessChain 34(data) 267 76 38
+             276: 23(int16_t) CompositeExtract 274 0
+                              Store 275 276
+             277:    261(ptr) AccessChain 34(data) 267 76 57
+             278: 23(int16_t) CompositeExtract 274 1
+                              Store 277 278
+             279:      6(int) Load 8(invocation)
+             281:    269(ptr) AccessChain 34(data) 61 76
+             282: 24(i16vec4) Load 281
+             283:280(i16vec3) VectorShuffle 282 282 0 1 2
+             284:      6(int) Load 8(invocation)
+             285:280(i16vec3) GroupNonUniformShuffle 43 283 284
+             286:    261(ptr) AccessChain 34(data) 279 76 38
+             287: 23(int16_t) CompositeExtract 285 0
+                              Store 286 287
+             288:    261(ptr) AccessChain 34(data) 279 76 57
+             289: 23(int16_t) CompositeExtract 285 1
+                              Store 288 289
+             290:    261(ptr) AccessChain 34(data) 279 76 72
+             291: 23(int16_t) CompositeExtract 285 2
+                              Store 290 291
              292:      6(int) Load 8(invocation)
-             293:    243(ptr) AccessChain 34(data) 70 70
+             293:    269(ptr) AccessChain 34(data) 76 76
              294: 24(i16vec4) Load 293
              295:      6(int) Load 8(invocation)
-             296: 24(i16vec4) GroupNonUniformShuffleXor 43 294 295
-             297:    243(ptr) AccessChain 34(data) 292 70
+             296: 24(i16vec4) GroupNonUniformShuffle 43 294 295
+             297:    269(ptr) AccessChain 34(data) 292 76
                               Store 297 296
              298:      6(int) Load 8(invocation)
-             301:    300(ptr) AccessChain 34(data) 37 299 38
-             302: 25(int64_t) Load 301
-             303:      6(int) Load 8(invocation)
-             304: 25(int64_t) GroupNonUniformShuffle 43 302 303
-             305:    300(ptr) AccessChain 34(data) 298 299 38
-                              Store 305 304
-             306:      6(int) Load 8(invocation)
-             309:    308(ptr) AccessChain 34(data) 47 299
-             310: 26(i64vec4) Load 309
-             311:307(i64vec2) VectorShuffle 310 310 0 1
-             312:      6(int) Load 8(invocation)
-             313:307(i64vec2) GroupNonUniformShuffle 43 311 312
-             314:    308(ptr) AccessChain 34(data) 306 299
-             315: 26(i64vec4) Load 314
-             316: 26(i64vec4) VectorShuffle 315 313 4 5 2 3
-                              Store 314 316
-             317:      6(int) Load 8(invocation)
-             319:    308(ptr) AccessChain 34(data) 59 299
-             320: 26(i64vec4) Load 319
-             321:318(i64vec3) VectorShuffle 320 320 0 1 2
-             322:      6(int) Load 8(invocation)
-             323:318(i64vec3) GroupNonUniformShuffle 43 321 322
-             324:    308(ptr) AccessChain 34(data) 317 299
-             325: 26(i64vec4) Load 324
-             326: 26(i64vec4) VectorShuffle 325 323 4 5 6 3
-                              Store 324 326
-             327:      6(int) Load 8(invocation)
-             328:    308(ptr) AccessChain 34(data) 70 299
-             329: 26(i64vec4) Load 328
-             330:      6(int) Load 8(invocation)
-             331: 26(i64vec4) GroupNonUniformShuffle 43 329 330
-             332:    308(ptr) AccessChain 34(data) 327 299
-                              Store 332 331
-             333:      6(int) Load 8(invocation)
-             334:    300(ptr) AccessChain 34(data) 37 299 38
-             335: 25(int64_t) Load 334
-             336:      6(int) Load 8(invocation)
-             337: 25(int64_t) GroupNonUniformShuffleXor 43 335 336
-             338:    300(ptr) AccessChain 34(data) 333 299 38
-                              Store 338 337
-             339:      6(int) Load 8(invocation)
-             340:    308(ptr) AccessChain 34(data) 47 299
-             341: 26(i64vec4) Load 340
-             342:307(i64vec2) VectorShuffle 341 341 0 1
-             343:      6(int) Load 8(invocation)
-             344:307(i64vec2) GroupNonUniformShuffleXor 43 342 343
-             345:    308(ptr) AccessChain 34(data) 339 299
-             346: 26(i64vec4) Load 345
-             347: 26(i64vec4) VectorShuffle 346 344 4 5 2 3
-                              Store 345 347
-             348:      6(int) Load 8(invocation)
-             349:    308(ptr) AccessChain 34(data) 59 299
-             350: 26(i64vec4) Load 349
-             351:318(i64vec3) VectorShuffle 350 350 0 1 2
+             299:    261(ptr) AccessChain 34(data) 37 76 38
+             300: 23(int16_t) Load 299
+             301:      6(int) Load 8(invocation)
+             302: 23(int16_t) GroupNonUniformShuffleXor 43 300 301
+             303:    261(ptr) AccessChain 34(data) 298 76 38
+                              Store 303 302
+             304:      6(int) Load 8(invocation)
+             305:    269(ptr) AccessChain 34(data) 47 76
+             306: 24(i16vec4) Load 305
+             307:268(i16vec2) VectorShuffle 306 306 0 1
+             308:      6(int) Load 8(invocation)
+             309:268(i16vec2) GroupNonUniformShuffleXor 43 307 308
+             310:    261(ptr) AccessChain 34(data) 304 76 38
+             311: 23(int16_t) CompositeExtract 309 0
+                              Store 310 311
+             312:    261(ptr) AccessChain 34(data) 304 76 57
+             313: 23(int16_t) CompositeExtract 309 1
+                              Store 312 313
+             314:      6(int) Load 8(invocation)
+             315:    269(ptr) AccessChain 34(data) 61 76
+             316: 24(i16vec4) Load 315
+             317:280(i16vec3) VectorShuffle 316 316 0 1 2
+             318:      6(int) Load 8(invocation)
+             319:280(i16vec3) GroupNonUniformShuffleXor 43 317 318
+             320:    261(ptr) AccessChain 34(data) 314 76 38
+             321: 23(int16_t) CompositeExtract 319 0
+                              Store 320 321
+             322:    261(ptr) AccessChain 34(data) 314 76 57
+             323: 23(int16_t) CompositeExtract 319 1
+                              Store 322 323
+             324:    261(ptr) AccessChain 34(data) 314 76 72
+             325: 23(int16_t) CompositeExtract 319 2
+                              Store 324 325
+             326:      6(int) Load 8(invocation)
+             327:    269(ptr) AccessChain 34(data) 76 76
+             328: 24(i16vec4) Load 327
+             329:      6(int) Load 8(invocation)
+             330: 24(i16vec4) GroupNonUniformShuffleXor 43 328 329
+             331:    269(ptr) AccessChain 34(data) 326 76
+                              Store 331 330
+             332:      6(int) Load 8(invocation)
+             335:    334(ptr) AccessChain 34(data) 37 333 38
+             336: 25(int64_t) Load 335
+             337:      6(int) Load 8(invocation)
+             338: 25(int64_t) GroupNonUniformShuffle 43 336 337
+             339:    334(ptr) AccessChain 34(data) 332 333 38
+                              Store 339 338
+             340:      6(int) Load 8(invocation)
+             343:    342(ptr) AccessChain 34(data) 47 333
+             344: 26(i64vec4) Load 343
+             345:341(i64vec2) VectorShuffle 344 344 0 1
+             346:      6(int) Load 8(invocation)
+             347:341(i64vec2) GroupNonUniformShuffle 43 345 346
+             348:    334(ptr) AccessChain 34(data) 340 333 38
+             349: 25(int64_t) CompositeExtract 347 0
+                              Store 348 349
+             350:    334(ptr) AccessChain 34(data) 340 333 57
+             351: 25(int64_t) CompositeExtract 347 1
+                              Store 350 351
              352:      6(int) Load 8(invocation)
-             353:318(i64vec3) GroupNonUniformShuffleXor 43 351 352
-             354:    308(ptr) AccessChain 34(data) 348 299
+             354:    342(ptr) AccessChain 34(data) 61 333
              355: 26(i64vec4) Load 354
-             356: 26(i64vec4) VectorShuffle 355 353 4 5 6 3
-                              Store 354 356
+             356:353(i64vec3) VectorShuffle 355 355 0 1 2
              357:      6(int) Load 8(invocation)
-             358:    308(ptr) AccessChain 34(data) 70 299
-             359: 26(i64vec4) Load 358
-             360:      6(int) Load 8(invocation)
-             361: 26(i64vec4) GroupNonUniformShuffleXor 43 359 360
-             362:    308(ptr) AccessChain 34(data) 357 299
-                              Store 362 361
-             363:      6(int) Load 8(invocation)
-             366:    365(ptr) AccessChain 34(data) 37 364 38
-             367: 27(int64_t) Load 366
+             358:353(i64vec3) GroupNonUniformShuffle 43 356 357
+             359:    334(ptr) AccessChain 34(data) 352 333 38
+             360: 25(int64_t) CompositeExtract 358 0
+                              Store 359 360
+             361:    334(ptr) AccessChain 34(data) 352 333 57
+             362: 25(int64_t) CompositeExtract 358 1
+                              Store 361 362
+             363:    334(ptr) AccessChain 34(data) 352 333 72
+             364: 25(int64_t) CompositeExtract 358 2
+                              Store 363 364
+             365:      6(int) Load 8(invocation)
+             366:    342(ptr) AccessChain 34(data) 76 333
+             367: 26(i64vec4) Load 366
              368:      6(int) Load 8(invocation)
-             369: 27(int64_t) GroupNonUniformShuffle 43 367 368
-             370:    365(ptr) AccessChain 34(data) 363 364 38
+             369: 26(i64vec4) GroupNonUniformShuffle 43 367 368
+             370:    342(ptr) AccessChain 34(data) 365 333
                               Store 370 369
              371:      6(int) Load 8(invocation)
-             374:    373(ptr) AccessChain 34(data) 47 364
-             375: 28(i64vec4) Load 374
-             376:372(i64vec2) VectorShuffle 375 375 0 1
+             372:    334(ptr) AccessChain 34(data) 37 333 38
+             373: 25(int64_t) Load 372
+             374:      6(int) Load 8(invocation)
+             375: 25(int64_t) GroupNonUniformShuffleXor 43 373 374
+             376:    334(ptr) AccessChain 34(data) 371 333 38
+                              Store 376 375
              377:      6(int) Load 8(invocation)
-             378:372(i64vec2) GroupNonUniformShuffle 43 376 377
-             379:    373(ptr) AccessChain 34(data) 371 364
-             380: 28(i64vec4) Load 379
-             381: 28(i64vec4) VectorShuffle 380 378 4 5 2 3
-                              Store 379 381
-             382:      6(int) Load 8(invocation)
-             384:    373(ptr) AccessChain 34(data) 59 364
-             385: 28(i64vec4) Load 384
-             386:383(i64vec3) VectorShuffle 385 385 0 1 2
+             378:    342(ptr) AccessChain 34(data) 47 333
+             379: 26(i64vec4) Load 378
+             380:341(i64vec2) VectorShuffle 379 379 0 1
+             381:      6(int) Load 8(invocation)
+             382:341(i64vec2) GroupNonUniformShuffleXor 43 380 381
+             383:    334(ptr) AccessChain 34(data) 377 333 38
+             384: 25(int64_t) CompositeExtract 382 0
+                              Store 383 384
+             385:    334(ptr) AccessChain 34(data) 377 333 57
+             386: 25(int64_t) CompositeExtract 382 1
+                              Store 385 386
              387:      6(int) Load 8(invocation)
-             388:383(i64vec3) GroupNonUniformShuffle 43 386 387
-             389:    373(ptr) AccessChain 34(data) 382 364
-             390: 28(i64vec4) Load 389
-             391: 28(i64vec4) VectorShuffle 390 388 4 5 6 3
-                              Store 389 391
-             392:      6(int) Load 8(invocation)
-             393:    373(ptr) AccessChain 34(data) 70 364
-             394: 28(i64vec4) Load 393
-             395:      6(int) Load 8(invocation)
-             396: 28(i64vec4) GroupNonUniformShuffle 43 394 395
-             397:    373(ptr) AccessChain 34(data) 392 364
-                              Store 397 396
-             398:      6(int) Load 8(invocation)
-             399:    365(ptr) AccessChain 34(data) 37 364 38
-             400: 27(int64_t) Load 399
-             401:      6(int) Load 8(invocation)
-             402: 27(int64_t) GroupNonUniformShuffleXor 43 400 401
-             403:    365(ptr) AccessChain 34(data) 398 364 38
-                              Store 403 402
-             404:      6(int) Load 8(invocation)
-             405:    373(ptr) AccessChain 34(data) 47 364
-             406: 28(i64vec4) Load 405
-             407:372(i64vec2) VectorShuffle 406 406 0 1
-             408:      6(int) Load 8(invocation)
-             409:372(i64vec2) GroupNonUniformShuffleXor 43 407 408
-             410:    373(ptr) AccessChain 34(data) 404 364
-             411: 28(i64vec4) Load 410
-             412: 28(i64vec4) VectorShuffle 411 409 4 5 2 3
-                              Store 410 412
+             388:    342(ptr) AccessChain 34(data) 61 333
+             389: 26(i64vec4) Load 388
+             390:353(i64vec3) VectorShuffle 389 389 0 1 2
+             391:      6(int) Load 8(invocation)
+             392:353(i64vec3) GroupNonUniformShuffleXor 43 390 391
+             393:    334(ptr) AccessChain 34(data) 387 333 38
+             394: 25(int64_t) CompositeExtract 392 0
+                              Store 393 394
+             395:    334(ptr) AccessChain 34(data) 387 333 57
+             396: 25(int64_t) CompositeExtract 392 1
+                              Store 395 396
+             397:    334(ptr) AccessChain 34(data) 387 333 72
+             398: 25(int64_t) CompositeExtract 392 2
+                              Store 397 398
+             399:      6(int) Load 8(invocation)
+             400:    342(ptr) AccessChain 34(data) 76 333
+             401: 26(i64vec4) Load 400
+             402:      6(int) Load 8(invocation)
+             403: 26(i64vec4) GroupNonUniformShuffleXor 43 401 402
+             404:    342(ptr) AccessChain 34(data) 399 333
+                              Store 404 403
+             405:      6(int) Load 8(invocation)
+             408:    407(ptr) AccessChain 34(data) 37 406 38
+             409: 27(int64_t) Load 408
+             410:      6(int) Load 8(invocation)
+             411: 27(int64_t) GroupNonUniformShuffle 43 409 410
+             412:    407(ptr) AccessChain 34(data) 405 406 38
+                              Store 412 411
              413:      6(int) Load 8(invocation)
-             414:    373(ptr) AccessChain 34(data) 59 364
-             415: 28(i64vec4) Load 414
-             416:383(i64vec3) VectorShuffle 415 415 0 1 2
-             417:      6(int) Load 8(invocation)
-             418:383(i64vec3) GroupNonUniformShuffleXor 43 416 417
-             419:    373(ptr) AccessChain 34(data) 413 364
-             420: 28(i64vec4) Load 419
-             421: 28(i64vec4) VectorShuffle 420 418 4 5 6 3
-                              Store 419 421
-             422:      6(int) Load 8(invocation)
-             423:    373(ptr) AccessChain 34(data) 70 364
-             424: 28(i64vec4) Load 423
+             416:    415(ptr) AccessChain 34(data) 47 406
+             417: 28(i64vec4) Load 416
+             418:414(i64vec2) VectorShuffle 417 417 0 1
+             419:      6(int) Load 8(invocation)
+             420:414(i64vec2) GroupNonUniformShuffle 43 418 419
+             421:    407(ptr) AccessChain 34(data) 413 406 38
+             422: 27(int64_t) CompositeExtract 420 0
+                              Store 421 422
+             423:    407(ptr) AccessChain 34(data) 413 406 57
+             424: 27(int64_t) CompositeExtract 420 1
+                              Store 423 424
              425:      6(int) Load 8(invocation)
-             426: 28(i64vec4) GroupNonUniformShuffleXor 43 424 425
-             427:    373(ptr) AccessChain 34(data) 422 364
-                              Store 427 426
-             428:      6(int) Load 8(invocation)
-             431:    430(ptr) AccessChain 34(data) 37 429 38
-             432:29(float16_t) Load 431
-             433:      6(int) Load 8(invocation)
-             434:29(float16_t) GroupNonUniformShuffle 43 432 433
-             435:    430(ptr) AccessChain 34(data) 428 429 38
-                              Store 435 434
-             436:      6(int) Load 8(invocation)
-             439:    438(ptr) AccessChain 34(data) 47 429
-             440: 30(f16vec4) Load 439
-             441:437(f16vec2) VectorShuffle 440 440 0 1
-             442:      6(int) Load 8(invocation)
-             443:437(f16vec2) GroupNonUniformShuffle 43 441 442
-             444:    438(ptr) AccessChain 34(data) 436 429
-             445: 30(f16vec4) Load 444
-             446: 30(f16vec4) VectorShuffle 445 443 4 5 2 3
-                              Store 444 446
+             427:    415(ptr) AccessChain 34(data) 61 406
+             428: 28(i64vec4) Load 427
+             429:426(i64vec3) VectorShuffle 428 428 0 1 2
+             430:      6(int) Load 8(invocation)
+             431:426(i64vec3) GroupNonUniformShuffle 43 429 430
+             432:    407(ptr) AccessChain 34(data) 425 406 38
+             433: 27(int64_t) CompositeExtract 431 0
+                              Store 432 433
+             434:    407(ptr) AccessChain 34(data) 425 406 57
+             435: 27(int64_t) CompositeExtract 431 1
+                              Store 434 435
+             436:    407(ptr) AccessChain 34(data) 425 406 72
+             437: 27(int64_t) CompositeExtract 431 2
+                              Store 436 437
+             438:      6(int) Load 8(invocation)
+             439:    415(ptr) AccessChain 34(data) 76 406
+             440: 28(i64vec4) Load 439
+             441:      6(int) Load 8(invocation)
+             442: 28(i64vec4) GroupNonUniformShuffle 43 440 441
+             443:    415(ptr) AccessChain 34(data) 438 406
+                              Store 443 442
+             444:      6(int) Load 8(invocation)
+             445:    407(ptr) AccessChain 34(data) 37 406 38
+             446: 27(int64_t) Load 445
              447:      6(int) Load 8(invocation)
-             449:    438(ptr) AccessChain 34(data) 59 429
-             450: 30(f16vec4) Load 449
-             451:448(f16vec3) VectorShuffle 450 450 0 1 2
-             452:      6(int) Load 8(invocation)
-             453:448(f16vec3) GroupNonUniformShuffle 43 451 452
-             454:    438(ptr) AccessChain 34(data) 447 429
-             455: 30(f16vec4) Load 454
-             456: 30(f16vec4) VectorShuffle 455 453 4 5 6 3
-                              Store 454 456
-             457:      6(int) Load 8(invocation)
-             458:    438(ptr) AccessChain 34(data) 70 429
-             459: 30(f16vec4) Load 458
+             448: 27(int64_t) GroupNonUniformShuffleXor 43 446 447
+             449:    407(ptr) AccessChain 34(data) 444 406 38
+                              Store 449 448
+             450:      6(int) Load 8(invocation)
+             451:    415(ptr) AccessChain 34(data) 47 406
+             452: 28(i64vec4) Load 451
+             453:414(i64vec2) VectorShuffle 452 452 0 1
+             454:      6(int) Load 8(invocation)
+             455:414(i64vec2) GroupNonUniformShuffleXor 43 453 454
+             456:    407(ptr) AccessChain 34(data) 450 406 38
+             457: 27(int64_t) CompositeExtract 455 0
+                              Store 456 457
+             458:    407(ptr) AccessChain 34(data) 450 406 57
+             459: 27(int64_t) CompositeExtract 455 1
+                              Store 458 459
              460:      6(int) Load 8(invocation)
-             461: 30(f16vec4) GroupNonUniformShuffle 43 459 460
-             462:    438(ptr) AccessChain 34(data) 457 429
-                              Store 462 461
-             463:      6(int) Load 8(invocation)
-             464:    430(ptr) AccessChain 34(data) 37 429 38
-             465:29(float16_t) Load 464
-             466:      6(int) Load 8(invocation)
-             467:29(float16_t) GroupNonUniformShuffleXor 43 465 466
-             468:    430(ptr) AccessChain 34(data) 463 429 38
-                              Store 468 467
-             469:      6(int) Load 8(invocation)
-             470:    438(ptr) AccessChain 34(data) 47 429
-             471: 30(f16vec4) Load 470
-             472:437(f16vec2) VectorShuffle 471 471 0 1
-             473:      6(int) Load 8(invocation)
-             474:437(f16vec2) GroupNonUniformShuffleXor 43 472 473
-             475:    438(ptr) AccessChain 34(data) 469 429
-             476: 30(f16vec4) Load 475
-             477: 30(f16vec4) VectorShuffle 476 474 4 5 2 3
-                              Store 475 477
+             461:    415(ptr) AccessChain 34(data) 61 406
+             462: 28(i64vec4) Load 461
+             463:426(i64vec3) VectorShuffle 462 462 0 1 2
+             464:      6(int) Load 8(invocation)
+             465:426(i64vec3) GroupNonUniformShuffleXor 43 463 464
+             466:    407(ptr) AccessChain 34(data) 460 406 38
+             467: 27(int64_t) CompositeExtract 465 0
+                              Store 466 467
+             468:    407(ptr) AccessChain 34(data) 460 406 57
+             469: 27(int64_t) CompositeExtract 465 1
+                              Store 468 469
+             470:    407(ptr) AccessChain 34(data) 460 406 72
+             471: 27(int64_t) CompositeExtract 465 2
+                              Store 470 471
+             472:      6(int) Load 8(invocation)
+             473:    415(ptr) AccessChain 34(data) 76 406
+             474: 28(i64vec4) Load 473
+             475:      6(int) Load 8(invocation)
+             476: 28(i64vec4) GroupNonUniformShuffleXor 43 474 475
+             477:    415(ptr) AccessChain 34(data) 472 406
+                              Store 477 476
              478:      6(int) Load 8(invocation)
-             479:    438(ptr) AccessChain 34(data) 59 429
-             480: 30(f16vec4) Load 479
-             481:448(f16vec3) VectorShuffle 480 480 0 1 2
-             482:      6(int) Load 8(invocation)
-             483:448(f16vec3) GroupNonUniformShuffleXor 43 481 482
-             484:    438(ptr) AccessChain 34(data) 478 429
-             485: 30(f16vec4) Load 484
-             486: 30(f16vec4) VectorShuffle 485 483 4 5 6 3
-                              Store 484 486
-             487:      6(int) Load 8(invocation)
-             488:    438(ptr) AccessChain 34(data) 70 429
-             489: 30(f16vec4) Load 488
-             490:      6(int) Load 8(invocation)
-             491: 30(f16vec4) GroupNonUniformShuffleXor 43 489 490
-             492:    438(ptr) AccessChain 34(data) 487 429
-                              Store 492 491
+             481:    480(ptr) AccessChain 34(data) 37 479 38
+             482:29(float16_t) Load 481
+             483:      6(int) Load 8(invocation)
+             484:29(float16_t) GroupNonUniformShuffle 43 482 483
+             485:    480(ptr) AccessChain 34(data) 478 479 38
+                              Store 485 484
+             486:      6(int) Load 8(invocation)
+             489:    488(ptr) AccessChain 34(data) 47 479
+             490: 30(f16vec4) Load 489
+             491:487(f16vec2) VectorShuffle 490 490 0 1
+             492:      6(int) Load 8(invocation)
+             493:487(f16vec2) GroupNonUniformShuffle 43 491 492
+             494:    480(ptr) AccessChain 34(data) 486 479 38
+             495:29(float16_t) CompositeExtract 493 0
+                              Store 494 495
+             496:    480(ptr) AccessChain 34(data) 486 479 57
+             497:29(float16_t) CompositeExtract 493 1
+                              Store 496 497
+             498:      6(int) Load 8(invocation)
+             500:    488(ptr) AccessChain 34(data) 61 479
+             501: 30(f16vec4) Load 500
+             502:499(f16vec3) VectorShuffle 501 501 0 1 2
+             503:      6(int) Load 8(invocation)
+             504:499(f16vec3) GroupNonUniformShuffle 43 502 503
+             505:    480(ptr) AccessChain 34(data) 498 479 38
+             506:29(float16_t) CompositeExtract 504 0
+                              Store 505 506
+             507:    480(ptr) AccessChain 34(data) 498 479 57
+             508:29(float16_t) CompositeExtract 504 1
+                              Store 507 508
+             509:    480(ptr) AccessChain 34(data) 498 479 72
+             510:29(float16_t) CompositeExtract 504 2
+                              Store 509 510
+             511:      6(int) Load 8(invocation)
+             512:    488(ptr) AccessChain 34(data) 76 479
+             513: 30(f16vec4) Load 512
+             514:      6(int) Load 8(invocation)
+             515: 30(f16vec4) GroupNonUniformShuffle 43 513 514
+             516:    488(ptr) AccessChain 34(data) 511 479
+                              Store 516 515
+             517:      6(int) Load 8(invocation)
+             518:    480(ptr) AccessChain 34(data) 37 479 38
+             519:29(float16_t) Load 518
+             520:      6(int) Load 8(invocation)
+             521:29(float16_t) GroupNonUniformShuffleXor 43 519 520
+             522:    480(ptr) AccessChain 34(data) 517 479 38
+                              Store 522 521
+             523:      6(int) Load 8(invocation)
+             524:    488(ptr) AccessChain 34(data) 47 479
+             525: 30(f16vec4) Load 524
+             526:487(f16vec2) VectorShuffle 525 525 0 1
+             527:      6(int) Load 8(invocation)
+             528:487(f16vec2) GroupNonUniformShuffleXor 43 526 527
+             529:    480(ptr) AccessChain 34(data) 523 479 38
+             530:29(float16_t) CompositeExtract 528 0
+                              Store 529 530
+             531:    480(ptr) AccessChain 34(data) 523 479 57
+             532:29(float16_t) CompositeExtract 528 1
+                              Store 531 532
+             533:      6(int) Load 8(invocation)
+             534:    488(ptr) AccessChain 34(data) 61 479
+             535: 30(f16vec4) Load 534
+             536:499(f16vec3) VectorShuffle 535 535 0 1 2
+             537:      6(int) Load 8(invocation)
+             538:499(f16vec3) GroupNonUniformShuffleXor 43 536 537
+             539:    480(ptr) AccessChain 34(data) 533 479 38
+             540:29(float16_t) CompositeExtract 538 0
+                              Store 539 540
+             541:    480(ptr) AccessChain 34(data) 533 479 57
+             542:29(float16_t) CompositeExtract 538 1
+                              Store 541 542
+             543:    480(ptr) AccessChain 34(data) 533 479 72
+             544:29(float16_t) CompositeExtract 538 2
+                              Store 543 544
+             545:      6(int) Load 8(invocation)
+             546:    488(ptr) AccessChain 34(data) 76 479
+             547: 30(f16vec4) Load 546
+             548:      6(int) Load 8(invocation)
+             549: 30(f16vec4) GroupNonUniformShuffleXor 43 547 548
+             550:    488(ptr) AccessChain 34(data) 545 479
+                              Store 550 549
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out
index d847be5..8665c46 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out
@@ -1,7 +1,7 @@
 spv.subgroupExtendedTypesShuffleRelative.comp
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 497
+// Id's are bound by 554
 
                               Capability Shader
                               Capability Float16
@@ -59,7 +59,7 @@
                               Decorate 31(Buffers) Block
                               Decorate 34(data) DescriptorSet 0
                               Decorate 34(data) Binding 0
-                              Decorate 496 BuiltIn WorkgroupSize
+                              Decorate 553 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -94,40 +94,41 @@
               47:     36(int) Constant 1
               48:             TypeVector 17(int8_t) 2
               49:             TypePointer StorageBuffer 18(i8vec4)
-              59:     36(int) Constant 2
-              60:             TypeVector 17(int8_t) 3
-              70:     36(int) Constant 3
-             107:             TypePointer StorageBuffer 19(int8_t)
-             114:             TypeVector 19(int8_t) 2
-             115:             TypePointer StorageBuffer 20(i8vec4)
-             125:             TypeVector 19(int8_t) 3
-             171:             TypePointer StorageBuffer 21(int16_t)
-             178:             TypeVector 21(int16_t) 2
-             179:             TypePointer StorageBuffer 22(i16vec4)
-             189:             TypeVector 21(int16_t) 3
-             235:             TypePointer StorageBuffer 23(int16_t)
-             242:             TypeVector 23(int16_t) 2
-             243:             TypePointer StorageBuffer 24(i16vec4)
-             253:             TypeVector 23(int16_t) 3
-             299:     36(int) Constant 4
-             300:             TypePointer StorageBuffer 25(int64_t)
-             307:             TypeVector 25(int64_t) 2
-             308:             TypePointer StorageBuffer 26(i64vec4)
-             318:             TypeVector 25(int64_t) 3
-             364:     36(int) Constant 5
-             365:             TypePointer StorageBuffer 27(int64_t)
-             372:             TypeVector 27(int64_t) 2
-             373:             TypePointer StorageBuffer 28(i64vec4)
-             383:             TypeVector 27(int64_t) 3
-             429:     36(int) Constant 6
-             430:             TypePointer StorageBuffer 29(float16_t)
-             437:             TypeVector 29(float16_t) 2
-             438:             TypePointer StorageBuffer 30(f16vec4)
-             448:             TypeVector 29(float16_t) 3
-             493:             TypeVector 6(int) 3
-             494:      6(int) Constant 8
-             495:      6(int) Constant 1
-             496:  493(ivec3) ConstantComposite 494 495 495
+              57:      6(int) Constant 1
+              61:     36(int) Constant 2
+              62:             TypeVector 17(int8_t) 3
+              72:      6(int) Constant 2
+              76:     36(int) Constant 3
+             117:             TypePointer StorageBuffer 19(int8_t)
+             124:             TypeVector 19(int8_t) 2
+             125:             TypePointer StorageBuffer 20(i8vec4)
+             136:             TypeVector 19(int8_t) 3
+             189:             TypePointer StorageBuffer 21(int16_t)
+             196:             TypeVector 21(int16_t) 2
+             197:             TypePointer StorageBuffer 22(i16vec4)
+             208:             TypeVector 21(int16_t) 3
+             261:             TypePointer StorageBuffer 23(int16_t)
+             268:             TypeVector 23(int16_t) 2
+             269:             TypePointer StorageBuffer 24(i16vec4)
+             280:             TypeVector 23(int16_t) 3
+             333:     36(int) Constant 4
+             334:             TypePointer StorageBuffer 25(int64_t)
+             341:             TypeVector 25(int64_t) 2
+             342:             TypePointer StorageBuffer 26(i64vec4)
+             353:             TypeVector 25(int64_t) 3
+             406:     36(int) Constant 5
+             407:             TypePointer StorageBuffer 27(int64_t)
+             414:             TypeVector 27(int64_t) 2
+             415:             TypePointer StorageBuffer 28(i64vec4)
+             426:             TypeVector 27(int64_t) 3
+             479:     36(int) Constant 6
+             480:             TypePointer StorageBuffer 29(float16_t)
+             487:             TypeVector 29(float16_t) 2
+             488:             TypePointer StorageBuffer 30(f16vec4)
+             499:             TypeVector 29(float16_t) 3
+             551:             TypeVector 6(int) 3
+             552:      6(int) Constant 8
+             553:  551(ivec3) ConstantComposite 552 57 57
          4(main):           2 Function None 3
                5:             Label
    8(invocation):      7(ptr) Variable Function
@@ -149,468 +150,566 @@
               52:  48(i8vec2) VectorShuffle 51 51 0 1
               53:      6(int) Load 8(invocation)
               54:  48(i8vec2) GroupNonUniformShuffleUp 43 52 53
-              55:     49(ptr) AccessChain 34(data) 46 37
-              56:  18(i8vec4) Load 55
-              57:  18(i8vec4) VectorShuffle 56 54 4 5 2 3
-                              Store 55 57
-              58:      6(int) Load 8(invocation)
-              61:     49(ptr) AccessChain 34(data) 59 37
-              62:  18(i8vec4) Load 61
-              63:  60(i8vec3) VectorShuffle 62 62 0 1 2
-              64:      6(int) Load 8(invocation)
-              65:  60(i8vec3) GroupNonUniformShuffleUp 43 63 64
-              66:     49(ptr) AccessChain 34(data) 58 37
-              67:  18(i8vec4) Load 66
-              68:  18(i8vec4) VectorShuffle 67 65 4 5 6 3
-                              Store 66 68
-              69:      6(int) Load 8(invocation)
-              71:     49(ptr) AccessChain 34(data) 70 37
-              72:  18(i8vec4) Load 71
-              73:      6(int) Load 8(invocation)
-              74:  18(i8vec4) GroupNonUniformShuffleUp 43 72 73
-              75:     49(ptr) AccessChain 34(data) 69 37
-                              Store 75 74
-              76:      6(int) Load 8(invocation)
-              77:     39(ptr) AccessChain 34(data) 37 37 38
-              78:  17(int8_t) Load 77
+              55:     39(ptr) AccessChain 34(data) 46 37 38
+              56:  17(int8_t) CompositeExtract 54 0
+                              Store 55 56
+              58:     39(ptr) AccessChain 34(data) 46 37 57
+              59:  17(int8_t) CompositeExtract 54 1
+                              Store 58 59
+              60:      6(int) Load 8(invocation)
+              63:     49(ptr) AccessChain 34(data) 61 37
+              64:  18(i8vec4) Load 63
+              65:  62(i8vec3) VectorShuffle 64 64 0 1 2
+              66:      6(int) Load 8(invocation)
+              67:  62(i8vec3) GroupNonUniformShuffleUp 43 65 66
+              68:     39(ptr) AccessChain 34(data) 60 37 38
+              69:  17(int8_t) CompositeExtract 67 0
+                              Store 68 69
+              70:     39(ptr) AccessChain 34(data) 60 37 57
+              71:  17(int8_t) CompositeExtract 67 1
+                              Store 70 71
+              73:     39(ptr) AccessChain 34(data) 60 37 72
+              74:  17(int8_t) CompositeExtract 67 2
+                              Store 73 74
+              75:      6(int) Load 8(invocation)
+              77:     49(ptr) AccessChain 34(data) 76 37
+              78:  18(i8vec4) Load 77
               79:      6(int) Load 8(invocation)
-              80:  17(int8_t) GroupNonUniformShuffleDown 43 78 79
-              81:     39(ptr) AccessChain 34(data) 76 37 38
+              80:  18(i8vec4) GroupNonUniformShuffleUp 43 78 79
+              81:     49(ptr) AccessChain 34(data) 75 37
                               Store 81 80
               82:      6(int) Load 8(invocation)
-              83:     49(ptr) AccessChain 34(data) 47 37
-              84:  18(i8vec4) Load 83
-              85:  48(i8vec2) VectorShuffle 84 84 0 1
-              86:      6(int) Load 8(invocation)
-              87:  48(i8vec2) GroupNonUniformShuffleDown 43 85 86
-              88:     49(ptr) AccessChain 34(data) 82 37
-              89:  18(i8vec4) Load 88
-              90:  18(i8vec4) VectorShuffle 89 87 4 5 2 3
-                              Store 88 90
-              91:      6(int) Load 8(invocation)
-              92:     49(ptr) AccessChain 34(data) 59 37
-              93:  18(i8vec4) Load 92
-              94:  60(i8vec3) VectorShuffle 93 93 0 1 2
-              95:      6(int) Load 8(invocation)
-              96:  60(i8vec3) GroupNonUniformShuffleDown 43 94 95
-              97:     49(ptr) AccessChain 34(data) 91 37
-              98:  18(i8vec4) Load 97
-              99:  18(i8vec4) VectorShuffle 98 96 4 5 6 3
-                              Store 97 99
-             100:      6(int) Load 8(invocation)
-             101:     49(ptr) AccessChain 34(data) 70 37
-             102:  18(i8vec4) Load 101
-             103:      6(int) Load 8(invocation)
-             104:  18(i8vec4) GroupNonUniformShuffleDown 43 102 103
-             105:     49(ptr) AccessChain 34(data) 100 37
-                              Store 105 104
-             106:      6(int) Load 8(invocation)
-             108:    107(ptr) AccessChain 34(data) 37 47 38
-             109:  19(int8_t) Load 108
+              83:     39(ptr) AccessChain 34(data) 37 37 38
+              84:  17(int8_t) Load 83
+              85:      6(int) Load 8(invocation)
+              86:  17(int8_t) GroupNonUniformShuffleDown 43 84 85
+              87:     39(ptr) AccessChain 34(data) 82 37 38
+                              Store 87 86
+              88:      6(int) Load 8(invocation)
+              89:     49(ptr) AccessChain 34(data) 47 37
+              90:  18(i8vec4) Load 89
+              91:  48(i8vec2) VectorShuffle 90 90 0 1
+              92:      6(int) Load 8(invocation)
+              93:  48(i8vec2) GroupNonUniformShuffleDown 43 91 92
+              94:     39(ptr) AccessChain 34(data) 88 37 38
+              95:  17(int8_t) CompositeExtract 93 0
+                              Store 94 95
+              96:     39(ptr) AccessChain 34(data) 88 37 57
+              97:  17(int8_t) CompositeExtract 93 1
+                              Store 96 97
+              98:      6(int) Load 8(invocation)
+              99:     49(ptr) AccessChain 34(data) 61 37
+             100:  18(i8vec4) Load 99
+             101:  62(i8vec3) VectorShuffle 100 100 0 1 2
+             102:      6(int) Load 8(invocation)
+             103:  62(i8vec3) GroupNonUniformShuffleDown 43 101 102
+             104:     39(ptr) AccessChain 34(data) 98 37 38
+             105:  17(int8_t) CompositeExtract 103 0
+                              Store 104 105
+             106:     39(ptr) AccessChain 34(data) 98 37 57
+             107:  17(int8_t) CompositeExtract 103 1
+                              Store 106 107
+             108:     39(ptr) AccessChain 34(data) 98 37 72
+             109:  17(int8_t) CompositeExtract 103 2
+                              Store 108 109
              110:      6(int) Load 8(invocation)
-             111:  19(int8_t) GroupNonUniformShuffleUp 43 109 110
-             112:    107(ptr) AccessChain 34(data) 106 47 38
-                              Store 112 111
+             111:     49(ptr) AccessChain 34(data) 76 37
+             112:  18(i8vec4) Load 111
              113:      6(int) Load 8(invocation)
-             116:    115(ptr) AccessChain 34(data) 47 47
-             117:  20(i8vec4) Load 116
-             118: 114(i8vec2) VectorShuffle 117 117 0 1
-             119:      6(int) Load 8(invocation)
-             120: 114(i8vec2) GroupNonUniformShuffleUp 43 118 119
-             121:    115(ptr) AccessChain 34(data) 113 47
-             122:  20(i8vec4) Load 121
-             123:  20(i8vec4) VectorShuffle 122 120 4 5 2 3
-                              Store 121 123
-             124:      6(int) Load 8(invocation)
-             126:    115(ptr) AccessChain 34(data) 59 47
+             114:  18(i8vec4) GroupNonUniformShuffleDown 43 112 113
+             115:     49(ptr) AccessChain 34(data) 110 37
+                              Store 115 114
+             116:      6(int) Load 8(invocation)
+             118:    117(ptr) AccessChain 34(data) 37 47 38
+             119:  19(int8_t) Load 118
+             120:      6(int) Load 8(invocation)
+             121:  19(int8_t) GroupNonUniformShuffleUp 43 119 120
+             122:    117(ptr) AccessChain 34(data) 116 47 38
+                              Store 122 121
+             123:      6(int) Load 8(invocation)
+             126:    125(ptr) AccessChain 34(data) 47 47
              127:  20(i8vec4) Load 126
-             128: 125(i8vec3) VectorShuffle 127 127 0 1 2
+             128: 124(i8vec2) VectorShuffle 127 127 0 1
              129:      6(int) Load 8(invocation)
-             130: 125(i8vec3) GroupNonUniformShuffleUp 43 128 129
-             131:    115(ptr) AccessChain 34(data) 124 47
-             132:  20(i8vec4) Load 131
-             133:  20(i8vec4) VectorShuffle 132 130 4 5 6 3
-                              Store 131 133
-             134:      6(int) Load 8(invocation)
-             135:    115(ptr) AccessChain 34(data) 70 47
-             136:  20(i8vec4) Load 135
-             137:      6(int) Load 8(invocation)
-             138:  20(i8vec4) GroupNonUniformShuffleUp 43 136 137
-             139:    115(ptr) AccessChain 34(data) 134 47
-                              Store 139 138
+             130: 124(i8vec2) GroupNonUniformShuffleUp 43 128 129
+             131:    117(ptr) AccessChain 34(data) 123 47 38
+             132:  19(int8_t) CompositeExtract 130 0
+                              Store 131 132
+             133:    117(ptr) AccessChain 34(data) 123 47 57
+             134:  19(int8_t) CompositeExtract 130 1
+                              Store 133 134
+             135:      6(int) Load 8(invocation)
+             137:    125(ptr) AccessChain 34(data) 61 47
+             138:  20(i8vec4) Load 137
+             139: 136(i8vec3) VectorShuffle 138 138 0 1 2
              140:      6(int) Load 8(invocation)
-             141:    107(ptr) AccessChain 34(data) 37 47 38
-             142:  19(int8_t) Load 141
-             143:      6(int) Load 8(invocation)
-             144:  19(int8_t) GroupNonUniformShuffleDown 43 142 143
-             145:    107(ptr) AccessChain 34(data) 140 47 38
-                              Store 145 144
-             146:      6(int) Load 8(invocation)
-             147:    115(ptr) AccessChain 34(data) 47 47
-             148:  20(i8vec4) Load 147
-             149: 114(i8vec2) VectorShuffle 148 148 0 1
-             150:      6(int) Load 8(invocation)
-             151: 114(i8vec2) GroupNonUniformShuffleDown 43 149 150
-             152:    115(ptr) AccessChain 34(data) 146 47
-             153:  20(i8vec4) Load 152
-             154:  20(i8vec4) VectorShuffle 153 151 4 5 2 3
-                              Store 152 154
-             155:      6(int) Load 8(invocation)
-             156:    115(ptr) AccessChain 34(data) 59 47
-             157:  20(i8vec4) Load 156
-             158: 125(i8vec3) VectorShuffle 157 157 0 1 2
-             159:      6(int) Load 8(invocation)
-             160: 125(i8vec3) GroupNonUniformShuffleDown 43 158 159
-             161:    115(ptr) AccessChain 34(data) 155 47
+             141: 136(i8vec3) GroupNonUniformShuffleUp 43 139 140
+             142:    117(ptr) AccessChain 34(data) 135 47 38
+             143:  19(int8_t) CompositeExtract 141 0
+                              Store 142 143
+             144:    117(ptr) AccessChain 34(data) 135 47 57
+             145:  19(int8_t) CompositeExtract 141 1
+                              Store 144 145
+             146:    117(ptr) AccessChain 34(data) 135 47 72
+             147:  19(int8_t) CompositeExtract 141 2
+                              Store 146 147
+             148:      6(int) Load 8(invocation)
+             149:    125(ptr) AccessChain 34(data) 76 47
+             150:  20(i8vec4) Load 149
+             151:      6(int) Load 8(invocation)
+             152:  20(i8vec4) GroupNonUniformShuffleUp 43 150 151
+             153:    125(ptr) AccessChain 34(data) 148 47
+                              Store 153 152
+             154:      6(int) Load 8(invocation)
+             155:    117(ptr) AccessChain 34(data) 37 47 38
+             156:  19(int8_t) Load 155
+             157:      6(int) Load 8(invocation)
+             158:  19(int8_t) GroupNonUniformShuffleDown 43 156 157
+             159:    117(ptr) AccessChain 34(data) 154 47 38
+                              Store 159 158
+             160:      6(int) Load 8(invocation)
+             161:    125(ptr) AccessChain 34(data) 47 47
              162:  20(i8vec4) Load 161
-             163:  20(i8vec4) VectorShuffle 162 160 4 5 6 3
-                              Store 161 163
+             163: 124(i8vec2) VectorShuffle 162 162 0 1
              164:      6(int) Load 8(invocation)
-             165:    115(ptr) AccessChain 34(data) 70 47
-             166:  20(i8vec4) Load 165
-             167:      6(int) Load 8(invocation)
-             168:  20(i8vec4) GroupNonUniformShuffleDown 43 166 167
-             169:    115(ptr) AccessChain 34(data) 164 47
-                              Store 169 168
+             165: 124(i8vec2) GroupNonUniformShuffleDown 43 163 164
+             166:    117(ptr) AccessChain 34(data) 160 47 38
+             167:  19(int8_t) CompositeExtract 165 0
+                              Store 166 167
+             168:    117(ptr) AccessChain 34(data) 160 47 57
+             169:  19(int8_t) CompositeExtract 165 1
+                              Store 168 169
              170:      6(int) Load 8(invocation)
-             172:    171(ptr) AccessChain 34(data) 37 59 38
-             173: 21(int16_t) Load 172
+             171:    125(ptr) AccessChain 34(data) 61 47
+             172:  20(i8vec4) Load 171
+             173: 136(i8vec3) VectorShuffle 172 172 0 1 2
              174:      6(int) Load 8(invocation)
-             175: 21(int16_t) GroupNonUniformShuffleUp 43 173 174
-             176:    171(ptr) AccessChain 34(data) 170 59 38
-                              Store 176 175
-             177:      6(int) Load 8(invocation)
-             180:    179(ptr) AccessChain 34(data) 47 59
-             181: 22(i16vec4) Load 180
-             182:178(i16vec2) VectorShuffle 181 181 0 1
-             183:      6(int) Load 8(invocation)
-             184:178(i16vec2) GroupNonUniformShuffleUp 43 182 183
-             185:    179(ptr) AccessChain 34(data) 177 59
-             186: 22(i16vec4) Load 185
-             187: 22(i16vec4) VectorShuffle 186 184 4 5 2 3
-                              Store 185 187
+             175: 136(i8vec3) GroupNonUniformShuffleDown 43 173 174
+             176:    117(ptr) AccessChain 34(data) 170 47 38
+             177:  19(int8_t) CompositeExtract 175 0
+                              Store 176 177
+             178:    117(ptr) AccessChain 34(data) 170 47 57
+             179:  19(int8_t) CompositeExtract 175 1
+                              Store 178 179
+             180:    117(ptr) AccessChain 34(data) 170 47 72
+             181:  19(int8_t) CompositeExtract 175 2
+                              Store 180 181
+             182:      6(int) Load 8(invocation)
+             183:    125(ptr) AccessChain 34(data) 76 47
+             184:  20(i8vec4) Load 183
+             185:      6(int) Load 8(invocation)
+             186:  20(i8vec4) GroupNonUniformShuffleDown 43 184 185
+             187:    125(ptr) AccessChain 34(data) 182 47
+                              Store 187 186
              188:      6(int) Load 8(invocation)
-             190:    179(ptr) AccessChain 34(data) 59 59
-             191: 22(i16vec4) Load 190
-             192:189(i16vec3) VectorShuffle 191 191 0 1 2
-             193:      6(int) Load 8(invocation)
-             194:189(i16vec3) GroupNonUniformShuffleUp 43 192 193
-             195:    179(ptr) AccessChain 34(data) 188 59
-             196: 22(i16vec4) Load 195
-             197: 22(i16vec4) VectorShuffle 196 194 4 5 6 3
-                              Store 195 197
-             198:      6(int) Load 8(invocation)
-             199:    179(ptr) AccessChain 34(data) 70 59
-             200: 22(i16vec4) Load 199
+             190:    189(ptr) AccessChain 34(data) 37 61 38
+             191: 21(int16_t) Load 190
+             192:      6(int) Load 8(invocation)
+             193: 21(int16_t) GroupNonUniformShuffleUp 43 191 192
+             194:    189(ptr) AccessChain 34(data) 188 61 38
+                              Store 194 193
+             195:      6(int) Load 8(invocation)
+             198:    197(ptr) AccessChain 34(data) 47 61
+             199: 22(i16vec4) Load 198
+             200:196(i16vec2) VectorShuffle 199 199 0 1
              201:      6(int) Load 8(invocation)
-             202: 22(i16vec4) GroupNonUniformShuffleUp 43 200 201
-             203:    179(ptr) AccessChain 34(data) 198 59
-                              Store 203 202
-             204:      6(int) Load 8(invocation)
-             205:    171(ptr) AccessChain 34(data) 37 59 38
-             206: 21(int16_t) Load 205
+             202:196(i16vec2) GroupNonUniformShuffleUp 43 200 201
+             203:    189(ptr) AccessChain 34(data) 195 61 38
+             204: 21(int16_t) CompositeExtract 202 0
+                              Store 203 204
+             205:    189(ptr) AccessChain 34(data) 195 61 57
+             206: 21(int16_t) CompositeExtract 202 1
+                              Store 205 206
              207:      6(int) Load 8(invocation)
-             208: 21(int16_t) GroupNonUniformShuffleDown 43 206 207
-             209:    171(ptr) AccessChain 34(data) 204 59 38
-                              Store 209 208
-             210:      6(int) Load 8(invocation)
-             211:    179(ptr) AccessChain 34(data) 47 59
-             212: 22(i16vec4) Load 211
-             213:178(i16vec2) VectorShuffle 212 212 0 1
-             214:      6(int) Load 8(invocation)
-             215:178(i16vec2) GroupNonUniformShuffleDown 43 213 214
-             216:    179(ptr) AccessChain 34(data) 210 59
-             217: 22(i16vec4) Load 216
-             218: 22(i16vec4) VectorShuffle 217 215 4 5 2 3
-                              Store 216 218
-             219:      6(int) Load 8(invocation)
-             220:    179(ptr) AccessChain 34(data) 59 59
-             221: 22(i16vec4) Load 220
-             222:189(i16vec3) VectorShuffle 221 221 0 1 2
+             209:    197(ptr) AccessChain 34(data) 61 61
+             210: 22(i16vec4) Load 209
+             211:208(i16vec3) VectorShuffle 210 210 0 1 2
+             212:      6(int) Load 8(invocation)
+             213:208(i16vec3) GroupNonUniformShuffleUp 43 211 212
+             214:    189(ptr) AccessChain 34(data) 207 61 38
+             215: 21(int16_t) CompositeExtract 213 0
+                              Store 214 215
+             216:    189(ptr) AccessChain 34(data) 207 61 57
+             217: 21(int16_t) CompositeExtract 213 1
+                              Store 216 217
+             218:    189(ptr) AccessChain 34(data) 207 61 72
+             219: 21(int16_t) CompositeExtract 213 2
+                              Store 218 219
+             220:      6(int) Load 8(invocation)
+             221:    197(ptr) AccessChain 34(data) 76 61
+             222: 22(i16vec4) Load 221
              223:      6(int) Load 8(invocation)
-             224:189(i16vec3) GroupNonUniformShuffleDown 43 222 223
-             225:    179(ptr) AccessChain 34(data) 219 59
-             226: 22(i16vec4) Load 225
-             227: 22(i16vec4) VectorShuffle 226 224 4 5 6 3
-                              Store 225 227
-             228:      6(int) Load 8(invocation)
-             229:    179(ptr) AccessChain 34(data) 70 59
-             230: 22(i16vec4) Load 229
-             231:      6(int) Load 8(invocation)
-             232: 22(i16vec4) GroupNonUniformShuffleDown 43 230 231
-             233:    179(ptr) AccessChain 34(data) 228 59
-                              Store 233 232
-             234:      6(int) Load 8(invocation)
-             236:    235(ptr) AccessChain 34(data) 37 70 38
-             237: 23(int16_t) Load 236
-             238:      6(int) Load 8(invocation)
-             239: 23(int16_t) GroupNonUniformShuffleUp 43 237 238
-             240:    235(ptr) AccessChain 34(data) 234 70 38
-                              Store 240 239
-             241:      6(int) Load 8(invocation)
-             244:    243(ptr) AccessChain 34(data) 47 70
-             245: 24(i16vec4) Load 244
-             246:242(i16vec2) VectorShuffle 245 245 0 1
-             247:      6(int) Load 8(invocation)
-             248:242(i16vec2) GroupNonUniformShuffleUp 43 246 247
-             249:    243(ptr) AccessChain 34(data) 241 70
-             250: 24(i16vec4) Load 249
-             251: 24(i16vec4) VectorShuffle 250 248 4 5 2 3
-                              Store 249 251
-             252:      6(int) Load 8(invocation)
-             254:    243(ptr) AccessChain 34(data) 59 70
-             255: 24(i16vec4) Load 254
-             256:253(i16vec3) VectorShuffle 255 255 0 1 2
+             224: 22(i16vec4) GroupNonUniformShuffleUp 43 222 223
+             225:    197(ptr) AccessChain 34(data) 220 61
+                              Store 225 224
+             226:      6(int) Load 8(invocation)
+             227:    189(ptr) AccessChain 34(data) 37 61 38
+             228: 21(int16_t) Load 227
+             229:      6(int) Load 8(invocation)
+             230: 21(int16_t) GroupNonUniformShuffleDown 43 228 229
+             231:    189(ptr) AccessChain 34(data) 226 61 38
+                              Store 231 230
+             232:      6(int) Load 8(invocation)
+             233:    197(ptr) AccessChain 34(data) 47 61
+             234: 22(i16vec4) Load 233
+             235:196(i16vec2) VectorShuffle 234 234 0 1
+             236:      6(int) Load 8(invocation)
+             237:196(i16vec2) GroupNonUniformShuffleDown 43 235 236
+             238:    189(ptr) AccessChain 34(data) 232 61 38
+             239: 21(int16_t) CompositeExtract 237 0
+                              Store 238 239
+             240:    189(ptr) AccessChain 34(data) 232 61 57
+             241: 21(int16_t) CompositeExtract 237 1
+                              Store 240 241
+             242:      6(int) Load 8(invocation)
+             243:    197(ptr) AccessChain 34(data) 61 61
+             244: 22(i16vec4) Load 243
+             245:208(i16vec3) VectorShuffle 244 244 0 1 2
+             246:      6(int) Load 8(invocation)
+             247:208(i16vec3) GroupNonUniformShuffleDown 43 245 246
+             248:    189(ptr) AccessChain 34(data) 242 61 38
+             249: 21(int16_t) CompositeExtract 247 0
+                              Store 248 249
+             250:    189(ptr) AccessChain 34(data) 242 61 57
+             251: 21(int16_t) CompositeExtract 247 1
+                              Store 250 251
+             252:    189(ptr) AccessChain 34(data) 242 61 72
+             253: 21(int16_t) CompositeExtract 247 2
+                              Store 252 253
+             254:      6(int) Load 8(invocation)
+             255:    197(ptr) AccessChain 34(data) 76 61
+             256: 22(i16vec4) Load 255
              257:      6(int) Load 8(invocation)
-             258:253(i16vec3) GroupNonUniformShuffleUp 43 256 257
-             259:    243(ptr) AccessChain 34(data) 252 70
-             260: 24(i16vec4) Load 259
-             261: 24(i16vec4) VectorShuffle 260 258 4 5 6 3
-                              Store 259 261
-             262:      6(int) Load 8(invocation)
-             263:    243(ptr) AccessChain 34(data) 70 70
-             264: 24(i16vec4) Load 263
-             265:      6(int) Load 8(invocation)
-             266: 24(i16vec4) GroupNonUniformShuffleUp 43 264 265
-             267:    243(ptr) AccessChain 34(data) 262 70
-                              Store 267 266
-             268:      6(int) Load 8(invocation)
-             269:    235(ptr) AccessChain 34(data) 37 70 38
-             270: 23(int16_t) Load 269
-             271:      6(int) Load 8(invocation)
-             272: 23(int16_t) GroupNonUniformShuffleDown 43 270 271
-             273:    235(ptr) AccessChain 34(data) 268 70 38
-                              Store 273 272
-             274:      6(int) Load 8(invocation)
-             275:    243(ptr) AccessChain 34(data) 47 70
-             276: 24(i16vec4) Load 275
-             277:242(i16vec2) VectorShuffle 276 276 0 1
-             278:      6(int) Load 8(invocation)
-             279:242(i16vec2) GroupNonUniformShuffleDown 43 277 278
-             280:    243(ptr) AccessChain 34(data) 274 70
-             281: 24(i16vec4) Load 280
-             282: 24(i16vec4) VectorShuffle 281 279 4 5 2 3
-                              Store 280 282
-             283:      6(int) Load 8(invocation)
-             284:    243(ptr) AccessChain 34(data) 59 70
-             285: 24(i16vec4) Load 284
-             286:253(i16vec3) VectorShuffle 285 285 0 1 2
-             287:      6(int) Load 8(invocation)
-             288:253(i16vec3) GroupNonUniformShuffleDown 43 286 287
-             289:    243(ptr) AccessChain 34(data) 283 70
-             290: 24(i16vec4) Load 289
-             291: 24(i16vec4) VectorShuffle 290 288 4 5 6 3
-                              Store 289 291
+             258: 22(i16vec4) GroupNonUniformShuffleDown 43 256 257
+             259:    197(ptr) AccessChain 34(data) 254 61
+                              Store 259 258
+             260:      6(int) Load 8(invocation)
+             262:    261(ptr) AccessChain 34(data) 37 76 38
+             263: 23(int16_t) Load 262
+             264:      6(int) Load 8(invocation)
+             265: 23(int16_t) GroupNonUniformShuffleUp 43 263 264
+             266:    261(ptr) AccessChain 34(data) 260 76 38
+                              Store 266 265
+             267:      6(int) Load 8(invocation)
+             270:    269(ptr) AccessChain 34(data) 47 76
+             271: 24(i16vec4) Load 270
+             272:268(i16vec2) VectorShuffle 271 271 0 1
+             273:      6(int) Load 8(invocation)
+             274:268(i16vec2) GroupNonUniformShuffleUp 43 272 273
+             275:    261(ptr) AccessChain 34(data) 267 76 38
+             276: 23(int16_t) CompositeExtract 274 0
+                              Store 275 276
+             277:    261(ptr) AccessChain 34(data) 267 76 57
+             278: 23(int16_t) CompositeExtract 274 1
+                              Store 277 278
+             279:      6(int) Load 8(invocation)
+             281:    269(ptr) AccessChain 34(data) 61 76
+             282: 24(i16vec4) Load 281
+             283:280(i16vec3) VectorShuffle 282 282 0 1 2
+             284:      6(int) Load 8(invocation)
+             285:280(i16vec3) GroupNonUniformShuffleUp 43 283 284
+             286:    261(ptr) AccessChain 34(data) 279 76 38
+             287: 23(int16_t) CompositeExtract 285 0
+                              Store 286 287
+             288:    261(ptr) AccessChain 34(data) 279 76 57
+             289: 23(int16_t) CompositeExtract 285 1
+                              Store 288 289
+             290:    261(ptr) AccessChain 34(data) 279 76 72
+             291: 23(int16_t) CompositeExtract 285 2
+                              Store 290 291
              292:      6(int) Load 8(invocation)
-             293:    243(ptr) AccessChain 34(data) 70 70
+             293:    269(ptr) AccessChain 34(data) 76 76
              294: 24(i16vec4) Load 293
              295:      6(int) Load 8(invocation)
-             296: 24(i16vec4) GroupNonUniformShuffleDown 43 294 295
-             297:    243(ptr) AccessChain 34(data) 292 70
+             296: 24(i16vec4) GroupNonUniformShuffleUp 43 294 295
+             297:    269(ptr) AccessChain 34(data) 292 76
                               Store 297 296
              298:      6(int) Load 8(invocation)
-             301:    300(ptr) AccessChain 34(data) 37 299 38
-             302: 25(int64_t) Load 301
-             303:      6(int) Load 8(invocation)
-             304: 25(int64_t) GroupNonUniformShuffleUp 43 302 303
-             305:    300(ptr) AccessChain 34(data) 298 299 38
-                              Store 305 304
-             306:      6(int) Load 8(invocation)
-             309:    308(ptr) AccessChain 34(data) 47 299
-             310: 26(i64vec4) Load 309
-             311:307(i64vec2) VectorShuffle 310 310 0 1
-             312:      6(int) Load 8(invocation)
-             313:307(i64vec2) GroupNonUniformShuffleUp 43 311 312
-             314:    308(ptr) AccessChain 34(data) 306 299
-             315: 26(i64vec4) Load 314
-             316: 26(i64vec4) VectorShuffle 315 313 4 5 2 3
-                              Store 314 316
-             317:      6(int) Load 8(invocation)
-             319:    308(ptr) AccessChain 34(data) 59 299
-             320: 26(i64vec4) Load 319
-             321:318(i64vec3) VectorShuffle 320 320 0 1 2
-             322:      6(int) Load 8(invocation)
-             323:318(i64vec3) GroupNonUniformShuffleUp 43 321 322
-             324:    308(ptr) AccessChain 34(data) 317 299
-             325: 26(i64vec4) Load 324
-             326: 26(i64vec4) VectorShuffle 325 323 4 5 6 3
-                              Store 324 326
-             327:      6(int) Load 8(invocation)
-             328:    308(ptr) AccessChain 34(data) 70 299
-             329: 26(i64vec4) Load 328
-             330:      6(int) Load 8(invocation)
-             331: 26(i64vec4) GroupNonUniformShuffleUp 43 329 330
-             332:    308(ptr) AccessChain 34(data) 327 299
-                              Store 332 331
-             333:      6(int) Load 8(invocation)
-             334:    300(ptr) AccessChain 34(data) 37 299 38
-             335: 25(int64_t) Load 334
-             336:      6(int) Load 8(invocation)
-             337: 25(int64_t) GroupNonUniformShuffleDown 43 335 336
-             338:    300(ptr) AccessChain 34(data) 333 299 38
-                              Store 338 337
-             339:      6(int) Load 8(invocation)
-             340:    308(ptr) AccessChain 34(data) 47 299
-             341: 26(i64vec4) Load 340
-             342:307(i64vec2) VectorShuffle 341 341 0 1
-             343:      6(int) Load 8(invocation)
-             344:307(i64vec2) GroupNonUniformShuffleDown 43 342 343
-             345:    308(ptr) AccessChain 34(data) 339 299
-             346: 26(i64vec4) Load 345
-             347: 26(i64vec4) VectorShuffle 346 344 4 5 2 3
-                              Store 345 347
-             348:      6(int) Load 8(invocation)
-             349:    308(ptr) AccessChain 34(data) 59 299
-             350: 26(i64vec4) Load 349
-             351:318(i64vec3) VectorShuffle 350 350 0 1 2
+             299:    261(ptr) AccessChain 34(data) 37 76 38
+             300: 23(int16_t) Load 299
+             301:      6(int) Load 8(invocation)
+             302: 23(int16_t) GroupNonUniformShuffleDown 43 300 301
+             303:    261(ptr) AccessChain 34(data) 298 76 38
+                              Store 303 302
+             304:      6(int) Load 8(invocation)
+             305:    269(ptr) AccessChain 34(data) 47 76
+             306: 24(i16vec4) Load 305
+             307:268(i16vec2) VectorShuffle 306 306 0 1
+             308:      6(int) Load 8(invocation)
+             309:268(i16vec2) GroupNonUniformShuffleDown 43 307 308
+             310:    261(ptr) AccessChain 34(data) 304 76 38
+             311: 23(int16_t) CompositeExtract 309 0
+                              Store 310 311
+             312:    261(ptr) AccessChain 34(data) 304 76 57
+             313: 23(int16_t) CompositeExtract 309 1
+                              Store 312 313
+             314:      6(int) Load 8(invocation)
+             315:    269(ptr) AccessChain 34(data) 61 76
+             316: 24(i16vec4) Load 315
+             317:280(i16vec3) VectorShuffle 316 316 0 1 2
+             318:      6(int) Load 8(invocation)
+             319:280(i16vec3) GroupNonUniformShuffleDown 43 317 318
+             320:    261(ptr) AccessChain 34(data) 314 76 38
+             321: 23(int16_t) CompositeExtract 319 0
+                              Store 320 321
+             322:    261(ptr) AccessChain 34(data) 314 76 57
+             323: 23(int16_t) CompositeExtract 319 1
+                              Store 322 323
+             324:    261(ptr) AccessChain 34(data) 314 76 72
+             325: 23(int16_t) CompositeExtract 319 2
+                              Store 324 325
+             326:      6(int) Load 8(invocation)
+             327:    269(ptr) AccessChain 34(data) 76 76
+             328: 24(i16vec4) Load 327
+             329:      6(int) Load 8(invocation)
+             330: 24(i16vec4) GroupNonUniformShuffleDown 43 328 329
+             331:    269(ptr) AccessChain 34(data) 326 76
+                              Store 331 330
+             332:      6(int) Load 8(invocation)
+             335:    334(ptr) AccessChain 34(data) 37 333 38
+             336: 25(int64_t) Load 335
+             337:      6(int) Load 8(invocation)
+             338: 25(int64_t) GroupNonUniformShuffleUp 43 336 337
+             339:    334(ptr) AccessChain 34(data) 332 333 38
+                              Store 339 338
+             340:      6(int) Load 8(invocation)
+             343:    342(ptr) AccessChain 34(data) 47 333
+             344: 26(i64vec4) Load 343
+             345:341(i64vec2) VectorShuffle 344 344 0 1
+             346:      6(int) Load 8(invocation)
+             347:341(i64vec2) GroupNonUniformShuffleUp 43 345 346
+             348:    334(ptr) AccessChain 34(data) 340 333 38
+             349: 25(int64_t) CompositeExtract 347 0
+                              Store 348 349
+             350:    334(ptr) AccessChain 34(data) 340 333 57
+             351: 25(int64_t) CompositeExtract 347 1
+                              Store 350 351
              352:      6(int) Load 8(invocation)
-             353:318(i64vec3) GroupNonUniformShuffleDown 43 351 352
-             354:    308(ptr) AccessChain 34(data) 348 299
+             354:    342(ptr) AccessChain 34(data) 61 333
              355: 26(i64vec4) Load 354
-             356: 26(i64vec4) VectorShuffle 355 353 4 5 6 3
-                              Store 354 356
+             356:353(i64vec3) VectorShuffle 355 355 0 1 2
              357:      6(int) Load 8(invocation)
-             358:    308(ptr) AccessChain 34(data) 70 299
-             359: 26(i64vec4) Load 358
-             360:      6(int) Load 8(invocation)
-             361: 26(i64vec4) GroupNonUniformShuffleDown 43 359 360
-             362:    308(ptr) AccessChain 34(data) 357 299
-                              Store 362 361
-             363:      6(int) Load 8(invocation)
-             366:    365(ptr) AccessChain 34(data) 37 364 38
-             367: 27(int64_t) Load 366
+             358:353(i64vec3) GroupNonUniformShuffleUp 43 356 357
+             359:    334(ptr) AccessChain 34(data) 352 333 38
+             360: 25(int64_t) CompositeExtract 358 0
+                              Store 359 360
+             361:    334(ptr) AccessChain 34(data) 352 333 57
+             362: 25(int64_t) CompositeExtract 358 1
+                              Store 361 362
+             363:    334(ptr) AccessChain 34(data) 352 333 72
+             364: 25(int64_t) CompositeExtract 358 2
+                              Store 363 364
+             365:      6(int) Load 8(invocation)
+             366:    342(ptr) AccessChain 34(data) 76 333
+             367: 26(i64vec4) Load 366
              368:      6(int) Load 8(invocation)
-             369: 27(int64_t) GroupNonUniformShuffleUp 43 367 368
-             370:    365(ptr) AccessChain 34(data) 363 364 38
+             369: 26(i64vec4) GroupNonUniformShuffleUp 43 367 368
+             370:    342(ptr) AccessChain 34(data) 365 333
                               Store 370 369
              371:      6(int) Load 8(invocation)
-             374:    373(ptr) AccessChain 34(data) 47 364
-             375: 28(i64vec4) Load 374
-             376:372(i64vec2) VectorShuffle 375 375 0 1
+             372:    334(ptr) AccessChain 34(data) 37 333 38
+             373: 25(int64_t) Load 372
+             374:      6(int) Load 8(invocation)
+             375: 25(int64_t) GroupNonUniformShuffleDown 43 373 374
+             376:    334(ptr) AccessChain 34(data) 371 333 38
+                              Store 376 375
              377:      6(int) Load 8(invocation)
-             378:372(i64vec2) GroupNonUniformShuffleUp 43 376 377
-             379:    373(ptr) AccessChain 34(data) 371 364
-             380: 28(i64vec4) Load 379
-             381: 28(i64vec4) VectorShuffle 380 378 4 5 2 3
-                              Store 379 381
-             382:      6(int) Load 8(invocation)
-             384:    373(ptr) AccessChain 34(data) 59 364
-             385: 28(i64vec4) Load 384
-             386:383(i64vec3) VectorShuffle 385 385 0 1 2
+             378:    342(ptr) AccessChain 34(data) 47 333
+             379: 26(i64vec4) Load 378
+             380:341(i64vec2) VectorShuffle 379 379 0 1
+             381:      6(int) Load 8(invocation)
+             382:341(i64vec2) GroupNonUniformShuffleDown 43 380 381
+             383:    334(ptr) AccessChain 34(data) 377 333 38
+             384: 25(int64_t) CompositeExtract 382 0
+                              Store 383 384
+             385:    334(ptr) AccessChain 34(data) 377 333 57
+             386: 25(int64_t) CompositeExtract 382 1
+                              Store 385 386
              387:      6(int) Load 8(invocation)
-             388:383(i64vec3) GroupNonUniformShuffleUp 43 386 387
-             389:    373(ptr) AccessChain 34(data) 382 364
-             390: 28(i64vec4) Load 389
-             391: 28(i64vec4) VectorShuffle 390 388 4 5 6 3
-                              Store 389 391
-             392:      6(int) Load 8(invocation)
-             393:    373(ptr) AccessChain 34(data) 70 364
-             394: 28(i64vec4) Load 393
-             395:      6(int) Load 8(invocation)
-             396: 28(i64vec4) GroupNonUniformShuffleUp 43 394 395
-             397:    373(ptr) AccessChain 34(data) 392 364
-                              Store 397 396
-             398:      6(int) Load 8(invocation)
-             399:    365(ptr) AccessChain 34(data) 37 364 38
-             400: 27(int64_t) Load 399
-             401:      6(int) Load 8(invocation)
-             402: 27(int64_t) GroupNonUniformShuffleDown 43 400 401
-             403:    365(ptr) AccessChain 34(data) 398 364 38
-                              Store 403 402
-             404:      6(int) Load 8(invocation)
-             405:    373(ptr) AccessChain 34(data) 47 364
-             406: 28(i64vec4) Load 405
-             407:372(i64vec2) VectorShuffle 406 406 0 1
-             408:      6(int) Load 8(invocation)
-             409:372(i64vec2) GroupNonUniformShuffleDown 43 407 408
-             410:    373(ptr) AccessChain 34(data) 404 364
-             411: 28(i64vec4) Load 410
-             412: 28(i64vec4) VectorShuffle 411 409 4 5 2 3
-                              Store 410 412
+             388:    342(ptr) AccessChain 34(data) 61 333
+             389: 26(i64vec4) Load 388
+             390:353(i64vec3) VectorShuffle 389 389 0 1 2
+             391:      6(int) Load 8(invocation)
+             392:353(i64vec3) GroupNonUniformShuffleDown 43 390 391
+             393:    334(ptr) AccessChain 34(data) 387 333 38
+             394: 25(int64_t) CompositeExtract 392 0
+                              Store 393 394
+             395:    334(ptr) AccessChain 34(data) 387 333 57
+             396: 25(int64_t) CompositeExtract 392 1
+                              Store 395 396
+             397:    334(ptr) AccessChain 34(data) 387 333 72
+             398: 25(int64_t) CompositeExtract 392 2
+                              Store 397 398
+             399:      6(int) Load 8(invocation)
+             400:    342(ptr) AccessChain 34(data) 76 333
+             401: 26(i64vec4) Load 400
+             402:      6(int) Load 8(invocation)
+             403: 26(i64vec4) GroupNonUniformShuffleDown 43 401 402
+             404:    342(ptr) AccessChain 34(data) 399 333
+                              Store 404 403
+             405:      6(int) Load 8(invocation)
+             408:    407(ptr) AccessChain 34(data) 37 406 38
+             409: 27(int64_t) Load 408
+             410:      6(int) Load 8(invocation)
+             411: 27(int64_t) GroupNonUniformShuffleUp 43 409 410
+             412:    407(ptr) AccessChain 34(data) 405 406 38
+                              Store 412 411
              413:      6(int) Load 8(invocation)
-             414:    373(ptr) AccessChain 34(data) 59 364
-             415: 28(i64vec4) Load 414
-             416:383(i64vec3) VectorShuffle 415 415 0 1 2
-             417:      6(int) Load 8(invocation)
-             418:383(i64vec3) GroupNonUniformShuffleDown 43 416 417
-             419:    373(ptr) AccessChain 34(data) 413 364
-             420: 28(i64vec4) Load 419
-             421: 28(i64vec4) VectorShuffle 420 418 4 5 6 3
-                              Store 419 421
-             422:      6(int) Load 8(invocation)
-             423:    373(ptr) AccessChain 34(data) 70 364
-             424: 28(i64vec4) Load 423
+             416:    415(ptr) AccessChain 34(data) 47 406
+             417: 28(i64vec4) Load 416
+             418:414(i64vec2) VectorShuffle 417 417 0 1
+             419:      6(int) Load 8(invocation)
+             420:414(i64vec2) GroupNonUniformShuffleUp 43 418 419
+             421:    407(ptr) AccessChain 34(data) 413 406 38
+             422: 27(int64_t) CompositeExtract 420 0
+                              Store 421 422
+             423:    407(ptr) AccessChain 34(data) 413 406 57
+             424: 27(int64_t) CompositeExtract 420 1
+                              Store 423 424
              425:      6(int) Load 8(invocation)
-             426: 28(i64vec4) GroupNonUniformShuffleDown 43 424 425
-             427:    373(ptr) AccessChain 34(data) 422 364
-                              Store 427 426
-             428:      6(int) Load 8(invocation)
-             431:    430(ptr) AccessChain 34(data) 37 429 38
-             432:29(float16_t) Load 431
-             433:      6(int) Load 8(invocation)
-             434:29(float16_t) GroupNonUniformShuffleUp 43 432 433
-             435:    430(ptr) AccessChain 34(data) 428 429 38
-                              Store 435 434
-             436:      6(int) Load 8(invocation)
-             439:    438(ptr) AccessChain 34(data) 47 429
-             440: 30(f16vec4) Load 439
-             441:437(f16vec2) VectorShuffle 440 440 0 1
-             442:      6(int) Load 8(invocation)
-             443:437(f16vec2) GroupNonUniformShuffleUp 43 441 442
-             444:    438(ptr) AccessChain 34(data) 436 429
-             445: 30(f16vec4) Load 444
-             446: 30(f16vec4) VectorShuffle 445 443 4 5 2 3
-                              Store 444 446
+             427:    415(ptr) AccessChain 34(data) 61 406
+             428: 28(i64vec4) Load 427
+             429:426(i64vec3) VectorShuffle 428 428 0 1 2
+             430:      6(int) Load 8(invocation)
+             431:426(i64vec3) GroupNonUniformShuffleUp 43 429 430
+             432:    407(ptr) AccessChain 34(data) 425 406 38
+             433: 27(int64_t) CompositeExtract 431 0
+                              Store 432 433
+             434:    407(ptr) AccessChain 34(data) 425 406 57
+             435: 27(int64_t) CompositeExtract 431 1
+                              Store 434 435
+             436:    407(ptr) AccessChain 34(data) 425 406 72
+             437: 27(int64_t) CompositeExtract 431 2
+                              Store 436 437
+             438:      6(int) Load 8(invocation)
+             439:    415(ptr) AccessChain 34(data) 76 406
+             440: 28(i64vec4) Load 439
+             441:      6(int) Load 8(invocation)
+             442: 28(i64vec4) GroupNonUniformShuffleUp 43 440 441
+             443:    415(ptr) AccessChain 34(data) 438 406
+                              Store 443 442
+             444:      6(int) Load 8(invocation)
+             445:    407(ptr) AccessChain 34(data) 37 406 38
+             446: 27(int64_t) Load 445
              447:      6(int) Load 8(invocation)
-             449:    438(ptr) AccessChain 34(data) 59 429
-             450: 30(f16vec4) Load 449
-             451:448(f16vec3) VectorShuffle 450 450 0 1 2
-             452:      6(int) Load 8(invocation)
-             453:448(f16vec3) GroupNonUniformShuffleUp 43 451 452
-             454:    438(ptr) AccessChain 34(data) 447 429
-             455: 30(f16vec4) Load 454
-             456: 30(f16vec4) VectorShuffle 455 453 4 5 6 3
-                              Store 454 456
-             457:      6(int) Load 8(invocation)
-             458:    438(ptr) AccessChain 34(data) 70 429
-             459: 30(f16vec4) Load 458
+             448: 27(int64_t) GroupNonUniformShuffleDown 43 446 447
+             449:    407(ptr) AccessChain 34(data) 444 406 38
+                              Store 449 448
+             450:      6(int) Load 8(invocation)
+             451:    415(ptr) AccessChain 34(data) 47 406
+             452: 28(i64vec4) Load 451
+             453:414(i64vec2) VectorShuffle 452 452 0 1
+             454:      6(int) Load 8(invocation)
+             455:414(i64vec2) GroupNonUniformShuffleDown 43 453 454
+             456:    407(ptr) AccessChain 34(data) 450 406 38
+             457: 27(int64_t) CompositeExtract 455 0
+                              Store 456 457
+             458:    407(ptr) AccessChain 34(data) 450 406 57
+             459: 27(int64_t) CompositeExtract 455 1
+                              Store 458 459
              460:      6(int) Load 8(invocation)
-             461: 30(f16vec4) GroupNonUniformShuffleUp 43 459 460
-             462:    438(ptr) AccessChain 34(data) 457 429
-                              Store 462 461
-             463:      6(int) Load 8(invocation)
-             464:    430(ptr) AccessChain 34(data) 37 429 38
-             465:29(float16_t) Load 464
-             466:      6(int) Load 8(invocation)
-             467:29(float16_t) GroupNonUniformShuffleDown 43 465 466
-             468:    430(ptr) AccessChain 34(data) 463 429 38
-                              Store 468 467
-             469:      6(int) Load 8(invocation)
-             470:    438(ptr) AccessChain 34(data) 47 429
-             471: 30(f16vec4) Load 470
-             472:437(f16vec2) VectorShuffle 471 471 0 1
-             473:      6(int) Load 8(invocation)
-             474:437(f16vec2) GroupNonUniformShuffleDown 43 472 473
-             475:    438(ptr) AccessChain 34(data) 469 429
-             476: 30(f16vec4) Load 475
-             477: 30(f16vec4) VectorShuffle 476 474 4 5 2 3
-                              Store 475 477
+             461:    415(ptr) AccessChain 34(data) 61 406
+             462: 28(i64vec4) Load 461
+             463:426(i64vec3) VectorShuffle 462 462 0 1 2
+             464:      6(int) Load 8(invocation)
+             465:426(i64vec3) GroupNonUniformShuffleDown 43 463 464
+             466:    407(ptr) AccessChain 34(data) 460 406 38
+             467: 27(int64_t) CompositeExtract 465 0
+                              Store 466 467
+             468:    407(ptr) AccessChain 34(data) 460 406 57
+             469: 27(int64_t) CompositeExtract 465 1
+                              Store 468 469
+             470:    407(ptr) AccessChain 34(data) 460 406 72
+             471: 27(int64_t) CompositeExtract 465 2
+                              Store 470 471
+             472:      6(int) Load 8(invocation)
+             473:    415(ptr) AccessChain 34(data) 76 406
+             474: 28(i64vec4) Load 473
+             475:      6(int) Load 8(invocation)
+             476: 28(i64vec4) GroupNonUniformShuffleDown 43 474 475
+             477:    415(ptr) AccessChain 34(data) 472 406
+                              Store 477 476
              478:      6(int) Load 8(invocation)
-             479:    438(ptr) AccessChain 34(data) 59 429
-             480: 30(f16vec4) Load 479
-             481:448(f16vec3) VectorShuffle 480 480 0 1 2
-             482:      6(int) Load 8(invocation)
-             483:448(f16vec3) GroupNonUniformShuffleDown 43 481 482
-             484:    438(ptr) AccessChain 34(data) 478 429
-             485: 30(f16vec4) Load 484
-             486: 30(f16vec4) VectorShuffle 485 483 4 5 6 3
-                              Store 484 486
-             487:      6(int) Load 8(invocation)
-             488:    438(ptr) AccessChain 34(data) 70 429
-             489: 30(f16vec4) Load 488
-             490:      6(int) Load 8(invocation)
-             491: 30(f16vec4) GroupNonUniformShuffleDown 43 489 490
-             492:    438(ptr) AccessChain 34(data) 487 429
-                              Store 492 491
+             481:    480(ptr) AccessChain 34(data) 37 479 38
+             482:29(float16_t) Load 481
+             483:      6(int) Load 8(invocation)
+             484:29(float16_t) GroupNonUniformShuffleUp 43 482 483
+             485:    480(ptr) AccessChain 34(data) 478 479 38
+                              Store 485 484
+             486:      6(int) Load 8(invocation)
+             489:    488(ptr) AccessChain 34(data) 47 479
+             490: 30(f16vec4) Load 489
+             491:487(f16vec2) VectorShuffle 490 490 0 1
+             492:      6(int) Load 8(invocation)
+             493:487(f16vec2) GroupNonUniformShuffleUp 43 491 492
+             494:    480(ptr) AccessChain 34(data) 486 479 38
+             495:29(float16_t) CompositeExtract 493 0
+                              Store 494 495
+             496:    480(ptr) AccessChain 34(data) 486 479 57
+             497:29(float16_t) CompositeExtract 493 1
+                              Store 496 497
+             498:      6(int) Load 8(invocation)
+             500:    488(ptr) AccessChain 34(data) 61 479
+             501: 30(f16vec4) Load 500
+             502:499(f16vec3) VectorShuffle 501 501 0 1 2
+             503:      6(int) Load 8(invocation)
+             504:499(f16vec3) GroupNonUniformShuffleUp 43 502 503
+             505:    480(ptr) AccessChain 34(data) 498 479 38
+             506:29(float16_t) CompositeExtract 504 0
+                              Store 505 506
+             507:    480(ptr) AccessChain 34(data) 498 479 57
+             508:29(float16_t) CompositeExtract 504 1
+                              Store 507 508
+             509:    480(ptr) AccessChain 34(data) 498 479 72
+             510:29(float16_t) CompositeExtract 504 2
+                              Store 509 510
+             511:      6(int) Load 8(invocation)
+             512:    488(ptr) AccessChain 34(data) 76 479
+             513: 30(f16vec4) Load 512
+             514:      6(int) Load 8(invocation)
+             515: 30(f16vec4) GroupNonUniformShuffleUp 43 513 514
+             516:    488(ptr) AccessChain 34(data) 511 479
+                              Store 516 515
+             517:      6(int) Load 8(invocation)
+             518:    480(ptr) AccessChain 34(data) 37 479 38
+             519:29(float16_t) Load 518
+             520:      6(int) Load 8(invocation)
+             521:29(float16_t) GroupNonUniformShuffleDown 43 519 520
+             522:    480(ptr) AccessChain 34(data) 517 479 38
+                              Store 522 521
+             523:      6(int) Load 8(invocation)
+             524:    488(ptr) AccessChain 34(data) 47 479
+             525: 30(f16vec4) Load 524
+             526:487(f16vec2) VectorShuffle 525 525 0 1
+             527:      6(int) Load 8(invocation)
+             528:487(f16vec2) GroupNonUniformShuffleDown 43 526 527
+             529:    480(ptr) AccessChain 34(data) 523 479 38
+             530:29(float16_t) CompositeExtract 528 0
+                              Store 529 530
+             531:    480(ptr) AccessChain 34(data) 523 479 57
+             532:29(float16_t) CompositeExtract 528 1
+                              Store 531 532
+             533:      6(int) Load 8(invocation)
+             534:    488(ptr) AccessChain 34(data) 61 479
+             535: 30(f16vec4) Load 534
+             536:499(f16vec3) VectorShuffle 535 535 0 1 2
+             537:      6(int) Load 8(invocation)
+             538:499(f16vec3) GroupNonUniformShuffleDown 43 536 537
+             539:    480(ptr) AccessChain 34(data) 533 479 38
+             540:29(float16_t) CompositeExtract 538 0
+                              Store 539 540
+             541:    480(ptr) AccessChain 34(data) 533 479 57
+             542:29(float16_t) CompositeExtract 538 1
+                              Store 541 542
+             543:    480(ptr) AccessChain 34(data) 533 479 72
+             544:29(float16_t) CompositeExtract 538 2
+                              Store 543 544
+             545:      6(int) Load 8(invocation)
+             546:    488(ptr) AccessChain 34(data) 76 479
+             547: 30(f16vec4) Load 546
+             548:      6(int) Load 8(invocation)
+             549: 30(f16vec4) GroupNonUniformShuffleDown 43 547 548
+             550:    488(ptr) AccessChain 34(data) 545 479
+                              Store 550 549
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.subgroupPartitioned.comp.out b/Test/baseResults/spv.subgroupPartitioned.comp.out
index 7c7a0f9..0e7b7ef 100644
--- a/Test/baseResults/spv.subgroupPartitioned.comp.out
+++ b/Test/baseResults/spv.subgroupPartitioned.comp.out
@@ -1,7 +1,7 @@
 spv.subgroupPartitioned.comp
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 2506
+// Id's are bound by 2807
 
                               Capability Shader
                               Capability Float64
@@ -41,7 +41,7 @@
                               Decorate 28(Buffers) Block
                               Decorate 31(data) DescriptorSet 0
                               Decorate 31(data) Binding 0
-                              Decorate 2505 BuiltIn WorkgroupSize
+                              Decorate 2806 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -91,15 +91,16 @@
              169:             TypeVector 144(bool) 4
              170:   17(ivec4) ConstantComposite 35 35 35 35
              178:      6(int) Constant 3
-             727:   70(ivec2) ConstantComposite 34 34
-             731:   70(ivec2) ConstantComposite 63 63
-             740:   78(ivec3) ConstantComposite 34 34 34
-             744:   78(ivec3) ConstantComposite 63 63 63
-             752:   25(ivec4) ConstantComposite 34 34 34 34
-             756:   25(ivec4) ConstantComposite 63 63 63 63
-            2503:      6(int) Constant 8
-            2504:      6(int) Constant 1
-            2505:  103(ivec3) ConstantComposite 2503 2504 2504
+             189:      6(int) Constant 1
+             202:      6(int) Constant 2
+             801:   70(ivec2) ConstantComposite 34 34
+             805:   70(ivec2) ConstantComposite 63 63
+             815:   78(ivec3) ConstantComposite 34 34 34
+             819:   78(ivec3) ConstantComposite 63 63 63
+             830:   25(ivec4) ConstantComposite 34 34 34 34
+             834:   25(ivec4) ConstantComposite 63 63 63 63
+            2805:      6(int) Constant 8
+            2806:  103(ivec3) ConstantComposite 2805 189 189
          4(main):           2 Function None 3
                5:             Label
    8(invocation):      7(ptr) Variable Function
@@ -259,2614 +260,3139 @@
              184:   43(fvec2) VectorShuffle 183 183 0 1
              185:   17(ivec4) Load 19(ballot)
              186:   43(fvec2) GroupNonUniformFAdd 178 PartitionedReduceNV 184 185
-             187:     44(ptr) AccessChain 31(data) 181 34
-             188:   23(fvec4) Load 187
-             189:   23(fvec4) VectorShuffle 188 186 4 5 2 3
-                              Store 187 189
-             190:      6(int) Load 8(invocation)
-             191:     44(ptr) AccessChain 31(data) 33 34
-             192:   23(fvec4) Load 191
-             193:   51(fvec3) VectorShuffle 192 192 0 1 2
-             194:   17(ivec4) Load 19(ballot)
-             195:   51(fvec3) GroupNonUniformFAdd 178 PartitionedReduceNV 193 194
-             196:     44(ptr) AccessChain 31(data) 190 34
-             197:   23(fvec4) Load 196
-             198:   23(fvec4) VectorShuffle 197 195 4 5 6 3
-                              Store 196 198
-             199:      6(int) Load 8(invocation)
-             200:     44(ptr) AccessChain 31(data) 115 34
-             201:   23(fvec4) Load 200
-             202:   17(ivec4) Load 19(ballot)
-             203:   23(fvec4) GroupNonUniformFAdd 178 PartitionedReduceNV 201 202
-             204:     44(ptr) AccessChain 31(data) 199 34
-                              Store 204 203
+             187:     36(ptr) AccessChain 31(data) 181 34 35
+             188:   22(float) CompositeExtract 186 0
+                              Store 187 188
+             190:     36(ptr) AccessChain 31(data) 181 34 189
+             191:   22(float) CompositeExtract 186 1
+                              Store 190 191
+             192:      6(int) Load 8(invocation)
+             193:     44(ptr) AccessChain 31(data) 33 34
+             194:   23(fvec4) Load 193
+             195:   51(fvec3) VectorShuffle 194 194 0 1 2
+             196:   17(ivec4) Load 19(ballot)
+             197:   51(fvec3) GroupNonUniformFAdd 178 PartitionedReduceNV 195 196
+             198:     36(ptr) AccessChain 31(data) 192 34 35
+             199:   22(float) CompositeExtract 197 0
+                              Store 198 199
+             200:     36(ptr) AccessChain 31(data) 192 34 189
+             201:   22(float) CompositeExtract 197 1
+                              Store 200 201
+             203:     36(ptr) AccessChain 31(data) 192 34 202
+             204:   22(float) CompositeExtract 197 2
+                              Store 203 204
              205:      6(int) Load 8(invocation)
-             206:     64(ptr) AccessChain 31(data) 34 63 35
-             207:     24(int) Load 206
+             206:     44(ptr) AccessChain 31(data) 115 34
+             207:   23(fvec4) Load 206
              208:   17(ivec4) Load 19(ballot)
-             209:     24(int) GroupNonUniformIAdd 178 PartitionedReduceNV 207 208
-             210:     64(ptr) AccessChain 31(data) 205 63 35
+             209:   23(fvec4) GroupNonUniformFAdd 178 PartitionedReduceNV 207 208
+             210:     44(ptr) AccessChain 31(data) 205 34
                               Store 210 209
              211:      6(int) Load 8(invocation)
-             212:     71(ptr) AccessChain 31(data) 63 63
-             213:   25(ivec4) Load 212
-             214:   70(ivec2) VectorShuffle 213 213 0 1
-             215:   17(ivec4) Load 19(ballot)
-             216:   70(ivec2) GroupNonUniformIAdd 178 PartitionedReduceNV 214 215
-             217:     71(ptr) AccessChain 31(data) 211 63
-             218:   25(ivec4) Load 217
-             219:   25(ivec4) VectorShuffle 218 216 4 5 2 3
-                              Store 217 219
-             220:      6(int) Load 8(invocation)
-             221:     71(ptr) AccessChain 31(data) 33 63
-             222:   25(ivec4) Load 221
-             223:   78(ivec3) VectorShuffle 222 222 0 1 2
-             224:   17(ivec4) Load 19(ballot)
-             225:   78(ivec3) GroupNonUniformIAdd 178 PartitionedReduceNV 223 224
-             226:     71(ptr) AccessChain 31(data) 220 63
-             227:   25(ivec4) Load 226
-             228:   25(ivec4) VectorShuffle 227 225 4 5 6 3
-                              Store 226 228
-             229:      6(int) Load 8(invocation)
-             230:     71(ptr) AccessChain 31(data) 115 63
-             231:   25(ivec4) Load 230
-             232:   17(ivec4) Load 19(ballot)
-             233:   25(ivec4) GroupNonUniformIAdd 178 PartitionedReduceNV 231 232
-             234:     71(ptr) AccessChain 31(data) 229 63
-                              Store 234 233
-             235:      6(int) Load 8(invocation)
-             236:     90(ptr) AccessChain 31(data) 34 33 35
-             237:      6(int) Load 236
-             238:   17(ivec4) Load 19(ballot)
-             239:      6(int) GroupNonUniformIAdd 178 PartitionedReduceNV 237 238
-             240:     90(ptr) AccessChain 31(data) 235 33 35
-                              Store 240 239
-             241:      6(int) Load 8(invocation)
-             242:     40(ptr) AccessChain 31(data) 63 33
-             243:   17(ivec4) Load 242
-             244:   96(ivec2) VectorShuffle 243 243 0 1
-             245:   17(ivec4) Load 19(ballot)
-             246:   96(ivec2) GroupNonUniformIAdd 178 PartitionedReduceNV 244 245
-             247:     40(ptr) AccessChain 31(data) 241 33
-             248:   17(ivec4) Load 247
-             249:   17(ivec4) VectorShuffle 248 246 4 5 2 3
-                              Store 247 249
-             250:      6(int) Load 8(invocation)
-             251:     40(ptr) AccessChain 31(data) 33 33
-             252:   17(ivec4) Load 251
-             253:  103(ivec3) VectorShuffle 252 252 0 1 2
-             254:   17(ivec4) Load 19(ballot)
-             255:  103(ivec3) GroupNonUniformIAdd 178 PartitionedReduceNV 253 254
-             256:     40(ptr) AccessChain 31(data) 250 33
-             257:   17(ivec4) Load 256
-             258:   17(ivec4) VectorShuffle 257 255 4 5 6 3
-                              Store 256 258
-             259:      6(int) Load 8(invocation)
-             260:     40(ptr) AccessChain 31(data) 115 33
-             261:   17(ivec4) Load 260
-             262:   17(ivec4) Load 19(ballot)
-             263:   17(ivec4) GroupNonUniformIAdd 178 PartitionedReduceNV 261 262
-             264:     40(ptr) AccessChain 31(data) 259 33
-                              Store 264 263
-             265:      6(int) Load 8(invocation)
-             266:    116(ptr) AccessChain 31(data) 34 115 35
-             267:26(float64_t) Load 266
-             268:   17(ivec4) Load 19(ballot)
-             269:26(float64_t) GroupNonUniformFAdd 178 PartitionedReduceNV 267 268
-             270:    116(ptr) AccessChain 31(data) 265 115 35
-                              Store 270 269
-             271:      6(int) Load 8(invocation)
-             272:    123(ptr) AccessChain 31(data) 63 115
-             273: 27(f64vec4) Load 272
-             274:122(f64vec2) VectorShuffle 273 273 0 1
-             275:   17(ivec4) Load 19(ballot)
-             276:122(f64vec2) GroupNonUniformFAdd 178 PartitionedReduceNV 274 275
-             277:    123(ptr) AccessChain 31(data) 271 115
-             278: 27(f64vec4) Load 277
-             279: 27(f64vec4) VectorShuffle 278 276 4 5 2 3
-                              Store 277 279
-             280:      6(int) Load 8(invocation)
-             281:    123(ptr) AccessChain 31(data) 33 115
-             282: 27(f64vec4) Load 281
-             283:130(f64vec3) VectorShuffle 282 282 0 1 2
-             284:   17(ivec4) Load 19(ballot)
-             285:130(f64vec3) GroupNonUniformFAdd 178 PartitionedReduceNV 283 284
-             286:    123(ptr) AccessChain 31(data) 280 115
+             212:     64(ptr) AccessChain 31(data) 34 63 35
+             213:     24(int) Load 212
+             214:   17(ivec4) Load 19(ballot)
+             215:     24(int) GroupNonUniformIAdd 178 PartitionedReduceNV 213 214
+             216:     64(ptr) AccessChain 31(data) 211 63 35
+                              Store 216 215
+             217:      6(int) Load 8(invocation)
+             218:     71(ptr) AccessChain 31(data) 63 63
+             219:   25(ivec4) Load 218
+             220:   70(ivec2) VectorShuffle 219 219 0 1
+             221:   17(ivec4) Load 19(ballot)
+             222:   70(ivec2) GroupNonUniformIAdd 178 PartitionedReduceNV 220 221
+             223:     64(ptr) AccessChain 31(data) 217 63 35
+             224:     24(int) CompositeExtract 222 0
+                              Store 223 224
+             225:     64(ptr) AccessChain 31(data) 217 63 189
+             226:     24(int) CompositeExtract 222 1
+                              Store 225 226
+             227:      6(int) Load 8(invocation)
+             228:     71(ptr) AccessChain 31(data) 33 63
+             229:   25(ivec4) Load 228
+             230:   78(ivec3) VectorShuffle 229 229 0 1 2
+             231:   17(ivec4) Load 19(ballot)
+             232:   78(ivec3) GroupNonUniformIAdd 178 PartitionedReduceNV 230 231
+             233:     64(ptr) AccessChain 31(data) 227 63 35
+             234:     24(int) CompositeExtract 232 0
+                              Store 233 234
+             235:     64(ptr) AccessChain 31(data) 227 63 189
+             236:     24(int) CompositeExtract 232 1
+                              Store 235 236
+             237:     64(ptr) AccessChain 31(data) 227 63 202
+             238:     24(int) CompositeExtract 232 2
+                              Store 237 238
+             239:      6(int) Load 8(invocation)
+             240:     71(ptr) AccessChain 31(data) 115 63
+             241:   25(ivec4) Load 240
+             242:   17(ivec4) Load 19(ballot)
+             243:   25(ivec4) GroupNonUniformIAdd 178 PartitionedReduceNV 241 242
+             244:     71(ptr) AccessChain 31(data) 239 63
+                              Store 244 243
+             245:      6(int) Load 8(invocation)
+             246:     90(ptr) AccessChain 31(data) 34 33 35
+             247:      6(int) Load 246
+             248:   17(ivec4) Load 19(ballot)
+             249:      6(int) GroupNonUniformIAdd 178 PartitionedReduceNV 247 248
+             250:     90(ptr) AccessChain 31(data) 245 33 35
+                              Store 250 249
+             251:      6(int) Load 8(invocation)
+             252:     40(ptr) AccessChain 31(data) 63 33
+             253:   17(ivec4) Load 252
+             254:   96(ivec2) VectorShuffle 253 253 0 1
+             255:   17(ivec4) Load 19(ballot)
+             256:   96(ivec2) GroupNonUniformIAdd 178 PartitionedReduceNV 254 255
+             257:     90(ptr) AccessChain 31(data) 251 33 35
+             258:      6(int) CompositeExtract 256 0
+                              Store 257 258
+             259:     90(ptr) AccessChain 31(data) 251 33 189
+             260:      6(int) CompositeExtract 256 1
+                              Store 259 260
+             261:      6(int) Load 8(invocation)
+             262:     40(ptr) AccessChain 31(data) 33 33
+             263:   17(ivec4) Load 262
+             264:  103(ivec3) VectorShuffle 263 263 0 1 2
+             265:   17(ivec4) Load 19(ballot)
+             266:  103(ivec3) GroupNonUniformIAdd 178 PartitionedReduceNV 264 265
+             267:     90(ptr) AccessChain 31(data) 261 33 35
+             268:      6(int) CompositeExtract 266 0
+                              Store 267 268
+             269:     90(ptr) AccessChain 31(data) 261 33 189
+             270:      6(int) CompositeExtract 266 1
+                              Store 269 270
+             271:     90(ptr) AccessChain 31(data) 261 33 202
+             272:      6(int) CompositeExtract 266 2
+                              Store 271 272
+             273:      6(int) Load 8(invocation)
+             274:     40(ptr) AccessChain 31(data) 115 33
+             275:   17(ivec4) Load 274
+             276:   17(ivec4) Load 19(ballot)
+             277:   17(ivec4) GroupNonUniformIAdd 178 PartitionedReduceNV 275 276
+             278:     40(ptr) AccessChain 31(data) 273 33
+                              Store 278 277
+             279:      6(int) Load 8(invocation)
+             280:    116(ptr) AccessChain 31(data) 34 115 35
+             281:26(float64_t) Load 280
+             282:   17(ivec4) Load 19(ballot)
+             283:26(float64_t) GroupNonUniformFAdd 178 PartitionedReduceNV 281 282
+             284:    116(ptr) AccessChain 31(data) 279 115 35
+                              Store 284 283
+             285:      6(int) Load 8(invocation)
+             286:    123(ptr) AccessChain 31(data) 63 115
              287: 27(f64vec4) Load 286
-             288: 27(f64vec4) VectorShuffle 287 285 4 5 6 3
-                              Store 286 288
-             289:      6(int) Load 8(invocation)
-             290:    123(ptr) AccessChain 31(data) 115 115
-             291: 27(f64vec4) Load 290
-             292:   17(ivec4) Load 19(ballot)
-             293: 27(f64vec4) GroupNonUniformFAdd 178 PartitionedReduceNV 291 292
-             294:    123(ptr) AccessChain 31(data) 289 115
-                              Store 294 293
+             288:122(f64vec2) VectorShuffle 287 287 0 1
+             289:   17(ivec4) Load 19(ballot)
+             290:122(f64vec2) GroupNonUniformFAdd 178 PartitionedReduceNV 288 289
+             291:    116(ptr) AccessChain 31(data) 285 115 35
+             292:26(float64_t) CompositeExtract 290 0
+                              Store 291 292
+             293:    116(ptr) AccessChain 31(data) 285 115 189
+             294:26(float64_t) CompositeExtract 290 1
+                              Store 293 294
              295:      6(int) Load 8(invocation)
-             296:     36(ptr) AccessChain 31(data) 34 34 35
-             297:   22(float) Load 296
-             298:   17(ivec4) Load 19(ballot)
-             299:   22(float) GroupNonUniformFMul 178 PartitionedReduceNV 297 298
-             300:     36(ptr) AccessChain 31(data) 295 34 35
-                              Store 300 299
-             301:      6(int) Load 8(invocation)
-             302:     44(ptr) AccessChain 31(data) 63 34
-             303:   23(fvec4) Load 302
-             304:   43(fvec2) VectorShuffle 303 303 0 1
-             305:   17(ivec4) Load 19(ballot)
-             306:   43(fvec2) GroupNonUniformFMul 178 PartitionedReduceNV 304 305
-             307:     44(ptr) AccessChain 31(data) 301 34
-             308:   23(fvec4) Load 307
-             309:   23(fvec4) VectorShuffle 308 306 4 5 2 3
-                              Store 307 309
-             310:      6(int) Load 8(invocation)
-             311:     44(ptr) AccessChain 31(data) 33 34
-             312:   23(fvec4) Load 311
-             313:   51(fvec3) VectorShuffle 312 312 0 1 2
-             314:   17(ivec4) Load 19(ballot)
-             315:   51(fvec3) GroupNonUniformFMul 178 PartitionedReduceNV 313 314
-             316:     44(ptr) AccessChain 31(data) 310 34
-             317:   23(fvec4) Load 316
-             318:   23(fvec4) VectorShuffle 317 315 4 5 6 3
-                              Store 316 318
+             296:    123(ptr) AccessChain 31(data) 33 115
+             297: 27(f64vec4) Load 296
+             298:130(f64vec3) VectorShuffle 297 297 0 1 2
+             299:   17(ivec4) Load 19(ballot)
+             300:130(f64vec3) GroupNonUniformFAdd 178 PartitionedReduceNV 298 299
+             301:    116(ptr) AccessChain 31(data) 295 115 35
+             302:26(float64_t) CompositeExtract 300 0
+                              Store 301 302
+             303:    116(ptr) AccessChain 31(data) 295 115 189
+             304:26(float64_t) CompositeExtract 300 1
+                              Store 303 304
+             305:    116(ptr) AccessChain 31(data) 295 115 202
+             306:26(float64_t) CompositeExtract 300 2
+                              Store 305 306
+             307:      6(int) Load 8(invocation)
+             308:    123(ptr) AccessChain 31(data) 115 115
+             309: 27(f64vec4) Load 308
+             310:   17(ivec4) Load 19(ballot)
+             311: 27(f64vec4) GroupNonUniformFAdd 178 PartitionedReduceNV 309 310
+             312:    123(ptr) AccessChain 31(data) 307 115
+                              Store 312 311
+             313:      6(int) Load 8(invocation)
+             314:     36(ptr) AccessChain 31(data) 34 34 35
+             315:   22(float) Load 314
+             316:   17(ivec4) Load 19(ballot)
+             317:   22(float) GroupNonUniformFMul 178 PartitionedReduceNV 315 316
+             318:     36(ptr) AccessChain 31(data) 313 34 35
+                              Store 318 317
              319:      6(int) Load 8(invocation)
-             320:     44(ptr) AccessChain 31(data) 115 34
+             320:     44(ptr) AccessChain 31(data) 63 34
              321:   23(fvec4) Load 320
-             322:   17(ivec4) Load 19(ballot)
-             323:   23(fvec4) GroupNonUniformFMul 178 PartitionedReduceNV 321 322
-             324:     44(ptr) AccessChain 31(data) 319 34
-                              Store 324 323
-             325:      6(int) Load 8(invocation)
-             326:     64(ptr) AccessChain 31(data) 34 63 35
-             327:     24(int) Load 326
-             328:   17(ivec4) Load 19(ballot)
-             329:     24(int) GroupNonUniformIMul 178 PartitionedReduceNV 327 328
-             330:     64(ptr) AccessChain 31(data) 325 63 35
-                              Store 330 329
-             331:      6(int) Load 8(invocation)
-             332:     71(ptr) AccessChain 31(data) 63 63
-             333:   25(ivec4) Load 332
-             334:   70(ivec2) VectorShuffle 333 333 0 1
-             335:   17(ivec4) Load 19(ballot)
-             336:   70(ivec2) GroupNonUniformIMul 178 PartitionedReduceNV 334 335
-             337:     71(ptr) AccessChain 31(data) 331 63
-             338:   25(ivec4) Load 337
-             339:   25(ivec4) VectorShuffle 338 336 4 5 2 3
-                              Store 337 339
-             340:      6(int) Load 8(invocation)
-             341:     71(ptr) AccessChain 31(data) 33 63
-             342:   25(ivec4) Load 341
-             343:   78(ivec3) VectorShuffle 342 342 0 1 2
+             322:   43(fvec2) VectorShuffle 321 321 0 1
+             323:   17(ivec4) Load 19(ballot)
+             324:   43(fvec2) GroupNonUniformFMul 178 PartitionedReduceNV 322 323
+             325:     36(ptr) AccessChain 31(data) 319 34 35
+             326:   22(float) CompositeExtract 324 0
+                              Store 325 326
+             327:     36(ptr) AccessChain 31(data) 319 34 189
+             328:   22(float) CompositeExtract 324 1
+                              Store 327 328
+             329:      6(int) Load 8(invocation)
+             330:     44(ptr) AccessChain 31(data) 33 34
+             331:   23(fvec4) Load 330
+             332:   51(fvec3) VectorShuffle 331 331 0 1 2
+             333:   17(ivec4) Load 19(ballot)
+             334:   51(fvec3) GroupNonUniformFMul 178 PartitionedReduceNV 332 333
+             335:     36(ptr) AccessChain 31(data) 329 34 35
+             336:   22(float) CompositeExtract 334 0
+                              Store 335 336
+             337:     36(ptr) AccessChain 31(data) 329 34 189
+             338:   22(float) CompositeExtract 334 1
+                              Store 337 338
+             339:     36(ptr) AccessChain 31(data) 329 34 202
+             340:   22(float) CompositeExtract 334 2
+                              Store 339 340
+             341:      6(int) Load 8(invocation)
+             342:     44(ptr) AccessChain 31(data) 115 34
+             343:   23(fvec4) Load 342
              344:   17(ivec4) Load 19(ballot)
-             345:   78(ivec3) GroupNonUniformIMul 178 PartitionedReduceNV 343 344
-             346:     71(ptr) AccessChain 31(data) 340 63
-             347:   25(ivec4) Load 346
-             348:   25(ivec4) VectorShuffle 347 345 4 5 6 3
-                              Store 346 348
-             349:      6(int) Load 8(invocation)
-             350:     71(ptr) AccessChain 31(data) 115 63
-             351:   25(ivec4) Load 350
-             352:   17(ivec4) Load 19(ballot)
-             353:   25(ivec4) GroupNonUniformIMul 178 PartitionedReduceNV 351 352
-             354:     71(ptr) AccessChain 31(data) 349 63
-                              Store 354 353
-             355:      6(int) Load 8(invocation)
-             356:     90(ptr) AccessChain 31(data) 34 33 35
-             357:      6(int) Load 356
-             358:   17(ivec4) Load 19(ballot)
-             359:      6(int) GroupNonUniformIMul 178 PartitionedReduceNV 357 358
-             360:     90(ptr) AccessChain 31(data) 355 33 35
-                              Store 360 359
-             361:      6(int) Load 8(invocation)
-             362:     40(ptr) AccessChain 31(data) 63 33
-             363:   17(ivec4) Load 362
-             364:   96(ivec2) VectorShuffle 363 363 0 1
-             365:   17(ivec4) Load 19(ballot)
-             366:   96(ivec2) GroupNonUniformIMul 178 PartitionedReduceNV 364 365
-             367:     40(ptr) AccessChain 31(data) 361 33
-             368:   17(ivec4) Load 367
-             369:   17(ivec4) VectorShuffle 368 366 4 5 2 3
-                              Store 367 369
-             370:      6(int) Load 8(invocation)
-             371:     40(ptr) AccessChain 31(data) 33 33
-             372:   17(ivec4) Load 371
-             373:  103(ivec3) VectorShuffle 372 372 0 1 2
-             374:   17(ivec4) Load 19(ballot)
-             375:  103(ivec3) GroupNonUniformIMul 178 PartitionedReduceNV 373 374
-             376:     40(ptr) AccessChain 31(data) 370 33
-             377:   17(ivec4) Load 376
-             378:   17(ivec4) VectorShuffle 377 375 4 5 6 3
-                              Store 376 378
-             379:      6(int) Load 8(invocation)
-             380:     40(ptr) AccessChain 31(data) 115 33
-             381:   17(ivec4) Load 380
-             382:   17(ivec4) Load 19(ballot)
-             383:   17(ivec4) GroupNonUniformIMul 178 PartitionedReduceNV 381 382
-             384:     40(ptr) AccessChain 31(data) 379 33
-                              Store 384 383
-             385:      6(int) Load 8(invocation)
-             386:    116(ptr) AccessChain 31(data) 34 115 35
-             387:26(float64_t) Load 386
-             388:   17(ivec4) Load 19(ballot)
-             389:26(float64_t) GroupNonUniformFMul 178 PartitionedReduceNV 387 388
-             390:    116(ptr) AccessChain 31(data) 385 115 35
-                              Store 390 389
-             391:      6(int) Load 8(invocation)
-             392:    123(ptr) AccessChain 31(data) 63 115
-             393: 27(f64vec4) Load 392
-             394:122(f64vec2) VectorShuffle 393 393 0 1
-             395:   17(ivec4) Load 19(ballot)
-             396:122(f64vec2) GroupNonUniformFMul 178 PartitionedReduceNV 394 395
-             397:    123(ptr) AccessChain 31(data) 391 115
-             398: 27(f64vec4) Load 397
-             399: 27(f64vec4) VectorShuffle 398 396 4 5 2 3
-                              Store 397 399
-             400:      6(int) Load 8(invocation)
-             401:    123(ptr) AccessChain 31(data) 33 115
-             402: 27(f64vec4) Load 401
-             403:130(f64vec3) VectorShuffle 402 402 0 1 2
-             404:   17(ivec4) Load 19(ballot)
-             405:130(f64vec3) GroupNonUniformFMul 178 PartitionedReduceNV 403 404
-             406:    123(ptr) AccessChain 31(data) 400 115
-             407: 27(f64vec4) Load 406
-             408: 27(f64vec4) VectorShuffle 407 405 4 5 6 3
-                              Store 406 408
+             345:   23(fvec4) GroupNonUniformFMul 178 PartitionedReduceNV 343 344
+             346:     44(ptr) AccessChain 31(data) 341 34
+                              Store 346 345
+             347:      6(int) Load 8(invocation)
+             348:     64(ptr) AccessChain 31(data) 34 63 35
+             349:     24(int) Load 348
+             350:   17(ivec4) Load 19(ballot)
+             351:     24(int) GroupNonUniformIMul 178 PartitionedReduceNV 349 350
+             352:     64(ptr) AccessChain 31(data) 347 63 35
+                              Store 352 351
+             353:      6(int) Load 8(invocation)
+             354:     71(ptr) AccessChain 31(data) 63 63
+             355:   25(ivec4) Load 354
+             356:   70(ivec2) VectorShuffle 355 355 0 1
+             357:   17(ivec4) Load 19(ballot)
+             358:   70(ivec2) GroupNonUniformIMul 178 PartitionedReduceNV 356 357
+             359:     64(ptr) AccessChain 31(data) 353 63 35
+             360:     24(int) CompositeExtract 358 0
+                              Store 359 360
+             361:     64(ptr) AccessChain 31(data) 353 63 189
+             362:     24(int) CompositeExtract 358 1
+                              Store 361 362
+             363:      6(int) Load 8(invocation)
+             364:     71(ptr) AccessChain 31(data) 33 63
+             365:   25(ivec4) Load 364
+             366:   78(ivec3) VectorShuffle 365 365 0 1 2
+             367:   17(ivec4) Load 19(ballot)
+             368:   78(ivec3) GroupNonUniformIMul 178 PartitionedReduceNV 366 367
+             369:     64(ptr) AccessChain 31(data) 363 63 35
+             370:     24(int) CompositeExtract 368 0
+                              Store 369 370
+             371:     64(ptr) AccessChain 31(data) 363 63 189
+             372:     24(int) CompositeExtract 368 1
+                              Store 371 372
+             373:     64(ptr) AccessChain 31(data) 363 63 202
+             374:     24(int) CompositeExtract 368 2
+                              Store 373 374
+             375:      6(int) Load 8(invocation)
+             376:     71(ptr) AccessChain 31(data) 115 63
+             377:   25(ivec4) Load 376
+             378:   17(ivec4) Load 19(ballot)
+             379:   25(ivec4) GroupNonUniformIMul 178 PartitionedReduceNV 377 378
+             380:     71(ptr) AccessChain 31(data) 375 63
+                              Store 380 379
+             381:      6(int) Load 8(invocation)
+             382:     90(ptr) AccessChain 31(data) 34 33 35
+             383:      6(int) Load 382
+             384:   17(ivec4) Load 19(ballot)
+             385:      6(int) GroupNonUniformIMul 178 PartitionedReduceNV 383 384
+             386:     90(ptr) AccessChain 31(data) 381 33 35
+                              Store 386 385
+             387:      6(int) Load 8(invocation)
+             388:     40(ptr) AccessChain 31(data) 63 33
+             389:   17(ivec4) Load 388
+             390:   96(ivec2) VectorShuffle 389 389 0 1
+             391:   17(ivec4) Load 19(ballot)
+             392:   96(ivec2) GroupNonUniformIMul 178 PartitionedReduceNV 390 391
+             393:     90(ptr) AccessChain 31(data) 387 33 35
+             394:      6(int) CompositeExtract 392 0
+                              Store 393 394
+             395:     90(ptr) AccessChain 31(data) 387 33 189
+             396:      6(int) CompositeExtract 392 1
+                              Store 395 396
+             397:      6(int) Load 8(invocation)
+             398:     40(ptr) AccessChain 31(data) 33 33
+             399:   17(ivec4) Load 398
+             400:  103(ivec3) VectorShuffle 399 399 0 1 2
+             401:   17(ivec4) Load 19(ballot)
+             402:  103(ivec3) GroupNonUniformIMul 178 PartitionedReduceNV 400 401
+             403:     90(ptr) AccessChain 31(data) 397 33 35
+             404:      6(int) CompositeExtract 402 0
+                              Store 403 404
+             405:     90(ptr) AccessChain 31(data) 397 33 189
+             406:      6(int) CompositeExtract 402 1
+                              Store 405 406
+             407:     90(ptr) AccessChain 31(data) 397 33 202
+             408:      6(int) CompositeExtract 402 2
+                              Store 407 408
              409:      6(int) Load 8(invocation)
-             410:    123(ptr) AccessChain 31(data) 115 115
-             411: 27(f64vec4) Load 410
+             410:     40(ptr) AccessChain 31(data) 115 33
+             411:   17(ivec4) Load 410
              412:   17(ivec4) Load 19(ballot)
-             413: 27(f64vec4) GroupNonUniformFMul 178 PartitionedReduceNV 411 412
-             414:    123(ptr) AccessChain 31(data) 409 115
+             413:   17(ivec4) GroupNonUniformIMul 178 PartitionedReduceNV 411 412
+             414:     40(ptr) AccessChain 31(data) 409 33
                               Store 414 413
              415:      6(int) Load 8(invocation)
-             416:     36(ptr) AccessChain 31(data) 34 34 35
-             417:   22(float) Load 416
+             416:    116(ptr) AccessChain 31(data) 34 115 35
+             417:26(float64_t) Load 416
              418:   17(ivec4) Load 19(ballot)
-             419:   22(float) GroupNonUniformFMin 178 PartitionedReduceNV 417 418
-             420:     36(ptr) AccessChain 31(data) 415 34 35
+             419:26(float64_t) GroupNonUniformFMul 178 PartitionedReduceNV 417 418
+             420:    116(ptr) AccessChain 31(data) 415 115 35
                               Store 420 419
              421:      6(int) Load 8(invocation)
-             422:     44(ptr) AccessChain 31(data) 63 34
-             423:   23(fvec4) Load 422
-             424:   43(fvec2) VectorShuffle 423 423 0 1
+             422:    123(ptr) AccessChain 31(data) 63 115
+             423: 27(f64vec4) Load 422
+             424:122(f64vec2) VectorShuffle 423 423 0 1
              425:   17(ivec4) Load 19(ballot)
-             426:   43(fvec2) GroupNonUniformFMin 178 PartitionedReduceNV 424 425
-             427:     44(ptr) AccessChain 31(data) 421 34
-             428:   23(fvec4) Load 427
-             429:   23(fvec4) VectorShuffle 428 426 4 5 2 3
-                              Store 427 429
-             430:      6(int) Load 8(invocation)
-             431:     44(ptr) AccessChain 31(data) 33 34
-             432:   23(fvec4) Load 431
-             433:   51(fvec3) VectorShuffle 432 432 0 1 2
-             434:   17(ivec4) Load 19(ballot)
-             435:   51(fvec3) GroupNonUniformFMin 178 PartitionedReduceNV 433 434
-             436:     44(ptr) AccessChain 31(data) 430 34
-             437:   23(fvec4) Load 436
-             438:   23(fvec4) VectorShuffle 437 435 4 5 6 3
-                              Store 436 438
-             439:      6(int) Load 8(invocation)
-             440:     44(ptr) AccessChain 31(data) 115 34
-             441:   23(fvec4) Load 440
-             442:   17(ivec4) Load 19(ballot)
-             443:   23(fvec4) GroupNonUniformFMin 178 PartitionedReduceNV 441 442
-             444:     44(ptr) AccessChain 31(data) 439 34
-                              Store 444 443
-             445:      6(int) Load 8(invocation)
-             446:     64(ptr) AccessChain 31(data) 34 63 35
-             447:     24(int) Load 446
-             448:   17(ivec4) Load 19(ballot)
-             449:     24(int) GroupNonUniformSMin 178 PartitionedReduceNV 447 448
-             450:     64(ptr) AccessChain 31(data) 445 63 35
-                              Store 450 449
-             451:      6(int) Load 8(invocation)
-             452:     71(ptr) AccessChain 31(data) 63 63
-             453:   25(ivec4) Load 452
-             454:   70(ivec2) VectorShuffle 453 453 0 1
-             455:   17(ivec4) Load 19(ballot)
-             456:   70(ivec2) GroupNonUniformSMin 178 PartitionedReduceNV 454 455
-             457:     71(ptr) AccessChain 31(data) 451 63
-             458:   25(ivec4) Load 457
-             459:   25(ivec4) VectorShuffle 458 456 4 5 2 3
-                              Store 457 459
-             460:      6(int) Load 8(invocation)
-             461:     71(ptr) AccessChain 31(data) 33 63
-             462:   25(ivec4) Load 461
-             463:   78(ivec3) VectorShuffle 462 462 0 1 2
-             464:   17(ivec4) Load 19(ballot)
-             465:   78(ivec3) GroupNonUniformSMin 178 PartitionedReduceNV 463 464
-             466:     71(ptr) AccessChain 31(data) 460 63
-             467:   25(ivec4) Load 466
-             468:   25(ivec4) VectorShuffle 467 465 4 5 6 3
-                              Store 466 468
-             469:      6(int) Load 8(invocation)
-             470:     71(ptr) AccessChain 31(data) 115 63
-             471:   25(ivec4) Load 470
-             472:   17(ivec4) Load 19(ballot)
-             473:   25(ivec4) GroupNonUniformSMin 178 PartitionedReduceNV 471 472
-             474:     71(ptr) AccessChain 31(data) 469 63
-                              Store 474 473
-             475:      6(int) Load 8(invocation)
-             476:     90(ptr) AccessChain 31(data) 34 33 35
-             477:      6(int) Load 476
-             478:   17(ivec4) Load 19(ballot)
-             479:      6(int) GroupNonUniformUMin 178 PartitionedReduceNV 477 478
-             480:     90(ptr) AccessChain 31(data) 475 33 35
-                              Store 480 479
-             481:      6(int) Load 8(invocation)
-             482:     40(ptr) AccessChain 31(data) 63 33
-             483:   17(ivec4) Load 482
-             484:   96(ivec2) VectorShuffle 483 483 0 1
-             485:   17(ivec4) Load 19(ballot)
-             486:   96(ivec2) GroupNonUniformUMin 178 PartitionedReduceNV 484 485
-             487:     40(ptr) AccessChain 31(data) 481 33
-             488:   17(ivec4) Load 487
-             489:   17(ivec4) VectorShuffle 488 486 4 5 2 3
-                              Store 487 489
-             490:      6(int) Load 8(invocation)
-             491:     40(ptr) AccessChain 31(data) 33 33
-             492:   17(ivec4) Load 491
-             493:  103(ivec3) VectorShuffle 492 492 0 1 2
-             494:   17(ivec4) Load 19(ballot)
-             495:  103(ivec3) GroupNonUniformUMin 178 PartitionedReduceNV 493 494
-             496:     40(ptr) AccessChain 31(data) 490 33
-             497:   17(ivec4) Load 496
-             498:   17(ivec4) VectorShuffle 497 495 4 5 6 3
-                              Store 496 498
+             426:122(f64vec2) GroupNonUniformFMul 178 PartitionedReduceNV 424 425
+             427:    116(ptr) AccessChain 31(data) 421 115 35
+             428:26(float64_t) CompositeExtract 426 0
+                              Store 427 428
+             429:    116(ptr) AccessChain 31(data) 421 115 189
+             430:26(float64_t) CompositeExtract 426 1
+                              Store 429 430
+             431:      6(int) Load 8(invocation)
+             432:    123(ptr) AccessChain 31(data) 33 115
+             433: 27(f64vec4) Load 432
+             434:130(f64vec3) VectorShuffle 433 433 0 1 2
+             435:   17(ivec4) Load 19(ballot)
+             436:130(f64vec3) GroupNonUniformFMul 178 PartitionedReduceNV 434 435
+             437:    116(ptr) AccessChain 31(data) 431 115 35
+             438:26(float64_t) CompositeExtract 436 0
+                              Store 437 438
+             439:    116(ptr) AccessChain 31(data) 431 115 189
+             440:26(float64_t) CompositeExtract 436 1
+                              Store 439 440
+             441:    116(ptr) AccessChain 31(data) 431 115 202
+             442:26(float64_t) CompositeExtract 436 2
+                              Store 441 442
+             443:      6(int) Load 8(invocation)
+             444:    123(ptr) AccessChain 31(data) 115 115
+             445: 27(f64vec4) Load 444
+             446:   17(ivec4) Load 19(ballot)
+             447: 27(f64vec4) GroupNonUniformFMul 178 PartitionedReduceNV 445 446
+             448:    123(ptr) AccessChain 31(data) 443 115
+                              Store 448 447
+             449:      6(int) Load 8(invocation)
+             450:     36(ptr) AccessChain 31(data) 34 34 35
+             451:   22(float) Load 450
+             452:   17(ivec4) Load 19(ballot)
+             453:   22(float) GroupNonUniformFMin 178 PartitionedReduceNV 451 452
+             454:     36(ptr) AccessChain 31(data) 449 34 35
+                              Store 454 453
+             455:      6(int) Load 8(invocation)
+             456:     44(ptr) AccessChain 31(data) 63 34
+             457:   23(fvec4) Load 456
+             458:   43(fvec2) VectorShuffle 457 457 0 1
+             459:   17(ivec4) Load 19(ballot)
+             460:   43(fvec2) GroupNonUniformFMin 178 PartitionedReduceNV 458 459
+             461:     36(ptr) AccessChain 31(data) 455 34 35
+             462:   22(float) CompositeExtract 460 0
+                              Store 461 462
+             463:     36(ptr) AccessChain 31(data) 455 34 189
+             464:   22(float) CompositeExtract 460 1
+                              Store 463 464
+             465:      6(int) Load 8(invocation)
+             466:     44(ptr) AccessChain 31(data) 33 34
+             467:   23(fvec4) Load 466
+             468:   51(fvec3) VectorShuffle 467 467 0 1 2
+             469:   17(ivec4) Load 19(ballot)
+             470:   51(fvec3) GroupNonUniformFMin 178 PartitionedReduceNV 468 469
+             471:     36(ptr) AccessChain 31(data) 465 34 35
+             472:   22(float) CompositeExtract 470 0
+                              Store 471 472
+             473:     36(ptr) AccessChain 31(data) 465 34 189
+             474:   22(float) CompositeExtract 470 1
+                              Store 473 474
+             475:     36(ptr) AccessChain 31(data) 465 34 202
+             476:   22(float) CompositeExtract 470 2
+                              Store 475 476
+             477:      6(int) Load 8(invocation)
+             478:     44(ptr) AccessChain 31(data) 115 34
+             479:   23(fvec4) Load 478
+             480:   17(ivec4) Load 19(ballot)
+             481:   23(fvec4) GroupNonUniformFMin 178 PartitionedReduceNV 479 480
+             482:     44(ptr) AccessChain 31(data) 477 34
+                              Store 482 481
+             483:      6(int) Load 8(invocation)
+             484:     64(ptr) AccessChain 31(data) 34 63 35
+             485:     24(int) Load 484
+             486:   17(ivec4) Load 19(ballot)
+             487:     24(int) GroupNonUniformSMin 178 PartitionedReduceNV 485 486
+             488:     64(ptr) AccessChain 31(data) 483 63 35
+                              Store 488 487
+             489:      6(int) Load 8(invocation)
+             490:     71(ptr) AccessChain 31(data) 63 63
+             491:   25(ivec4) Load 490
+             492:   70(ivec2) VectorShuffle 491 491 0 1
+             493:   17(ivec4) Load 19(ballot)
+             494:   70(ivec2) GroupNonUniformSMin 178 PartitionedReduceNV 492 493
+             495:     64(ptr) AccessChain 31(data) 489 63 35
+             496:     24(int) CompositeExtract 494 0
+                              Store 495 496
+             497:     64(ptr) AccessChain 31(data) 489 63 189
+             498:     24(int) CompositeExtract 494 1
+                              Store 497 498
              499:      6(int) Load 8(invocation)
-             500:     40(ptr) AccessChain 31(data) 115 33
-             501:   17(ivec4) Load 500
-             502:   17(ivec4) Load 19(ballot)
-             503:   17(ivec4) GroupNonUniformUMin 178 PartitionedReduceNV 501 502
-             504:     40(ptr) AccessChain 31(data) 499 33
-                              Store 504 503
-             505:      6(int) Load 8(invocation)
-             506:    116(ptr) AccessChain 31(data) 34 115 35
-             507:26(float64_t) Load 506
-             508:   17(ivec4) Load 19(ballot)
-             509:26(float64_t) GroupNonUniformFMin 178 PartitionedReduceNV 507 508
-             510:    116(ptr) AccessChain 31(data) 505 115 35
-                              Store 510 509
+             500:     71(ptr) AccessChain 31(data) 33 63
+             501:   25(ivec4) Load 500
+             502:   78(ivec3) VectorShuffle 501 501 0 1 2
+             503:   17(ivec4) Load 19(ballot)
+             504:   78(ivec3) GroupNonUniformSMin 178 PartitionedReduceNV 502 503
+             505:     64(ptr) AccessChain 31(data) 499 63 35
+             506:     24(int) CompositeExtract 504 0
+                              Store 505 506
+             507:     64(ptr) AccessChain 31(data) 499 63 189
+             508:     24(int) CompositeExtract 504 1
+                              Store 507 508
+             509:     64(ptr) AccessChain 31(data) 499 63 202
+             510:     24(int) CompositeExtract 504 2
+                              Store 509 510
              511:      6(int) Load 8(invocation)
-             512:    123(ptr) AccessChain 31(data) 63 115
-             513: 27(f64vec4) Load 512
-             514:122(f64vec2) VectorShuffle 513 513 0 1
-             515:   17(ivec4) Load 19(ballot)
-             516:122(f64vec2) GroupNonUniformFMin 178 PartitionedReduceNV 514 515
-             517:    123(ptr) AccessChain 31(data) 511 115
-             518: 27(f64vec4) Load 517
-             519: 27(f64vec4) VectorShuffle 518 516 4 5 2 3
-                              Store 517 519
-             520:      6(int) Load 8(invocation)
-             521:    123(ptr) AccessChain 31(data) 33 115
-             522: 27(f64vec4) Load 521
-             523:130(f64vec3) VectorShuffle 522 522 0 1 2
-             524:   17(ivec4) Load 19(ballot)
-             525:130(f64vec3) GroupNonUniformFMin 178 PartitionedReduceNV 523 524
-             526:    123(ptr) AccessChain 31(data) 520 115
-             527: 27(f64vec4) Load 526
-             528: 27(f64vec4) VectorShuffle 527 525 4 5 6 3
-                              Store 526 528
-             529:      6(int) Load 8(invocation)
-             530:    123(ptr) AccessChain 31(data) 115 115
-             531: 27(f64vec4) Load 530
-             532:   17(ivec4) Load 19(ballot)
-             533: 27(f64vec4) GroupNonUniformFMin 178 PartitionedReduceNV 531 532
-             534:    123(ptr) AccessChain 31(data) 529 115
-                              Store 534 533
-             535:      6(int) Load 8(invocation)
-             536:     36(ptr) AccessChain 31(data) 34 34 35
-             537:   22(float) Load 536
-             538:   17(ivec4) Load 19(ballot)
-             539:   22(float) GroupNonUniformFMax 178 PartitionedReduceNV 537 538
-             540:     36(ptr) AccessChain 31(data) 535 34 35
-                              Store 540 539
-             541:      6(int) Load 8(invocation)
-             542:     44(ptr) AccessChain 31(data) 63 34
-             543:   23(fvec4) Load 542
-             544:   43(fvec2) VectorShuffle 543 543 0 1
-             545:   17(ivec4) Load 19(ballot)
-             546:   43(fvec2) GroupNonUniformFMax 178 PartitionedReduceNV 544 545
-             547:     44(ptr) AccessChain 31(data) 541 34
-             548:   23(fvec4) Load 547
-             549:   23(fvec4) VectorShuffle 548 546 4 5 2 3
-                              Store 547 549
-             550:      6(int) Load 8(invocation)
-             551:     44(ptr) AccessChain 31(data) 33 34
-             552:   23(fvec4) Load 551
-             553:   51(fvec3) VectorShuffle 552 552 0 1 2
+             512:     71(ptr) AccessChain 31(data) 115 63
+             513:   25(ivec4) Load 512
+             514:   17(ivec4) Load 19(ballot)
+             515:   25(ivec4) GroupNonUniformSMin 178 PartitionedReduceNV 513 514
+             516:     71(ptr) AccessChain 31(data) 511 63
+                              Store 516 515
+             517:      6(int) Load 8(invocation)
+             518:     90(ptr) AccessChain 31(data) 34 33 35
+             519:      6(int) Load 518
+             520:   17(ivec4) Load 19(ballot)
+             521:      6(int) GroupNonUniformUMin 178 PartitionedReduceNV 519 520
+             522:     90(ptr) AccessChain 31(data) 517 33 35
+                              Store 522 521
+             523:      6(int) Load 8(invocation)
+             524:     40(ptr) AccessChain 31(data) 63 33
+             525:   17(ivec4) Load 524
+             526:   96(ivec2) VectorShuffle 525 525 0 1
+             527:   17(ivec4) Load 19(ballot)
+             528:   96(ivec2) GroupNonUniformUMin 178 PartitionedReduceNV 526 527
+             529:     90(ptr) AccessChain 31(data) 523 33 35
+             530:      6(int) CompositeExtract 528 0
+                              Store 529 530
+             531:     90(ptr) AccessChain 31(data) 523 33 189
+             532:      6(int) CompositeExtract 528 1
+                              Store 531 532
+             533:      6(int) Load 8(invocation)
+             534:     40(ptr) AccessChain 31(data) 33 33
+             535:   17(ivec4) Load 534
+             536:  103(ivec3) VectorShuffle 535 535 0 1 2
+             537:   17(ivec4) Load 19(ballot)
+             538:  103(ivec3) GroupNonUniformUMin 178 PartitionedReduceNV 536 537
+             539:     90(ptr) AccessChain 31(data) 533 33 35
+             540:      6(int) CompositeExtract 538 0
+                              Store 539 540
+             541:     90(ptr) AccessChain 31(data) 533 33 189
+             542:      6(int) CompositeExtract 538 1
+                              Store 541 542
+             543:     90(ptr) AccessChain 31(data) 533 33 202
+             544:      6(int) CompositeExtract 538 2
+                              Store 543 544
+             545:      6(int) Load 8(invocation)
+             546:     40(ptr) AccessChain 31(data) 115 33
+             547:   17(ivec4) Load 546
+             548:   17(ivec4) Load 19(ballot)
+             549:   17(ivec4) GroupNonUniformUMin 178 PartitionedReduceNV 547 548
+             550:     40(ptr) AccessChain 31(data) 545 33
+                              Store 550 549
+             551:      6(int) Load 8(invocation)
+             552:    116(ptr) AccessChain 31(data) 34 115 35
+             553:26(float64_t) Load 552
              554:   17(ivec4) Load 19(ballot)
-             555:   51(fvec3) GroupNonUniformFMax 178 PartitionedReduceNV 553 554
-             556:     44(ptr) AccessChain 31(data) 550 34
-             557:   23(fvec4) Load 556
-             558:   23(fvec4) VectorShuffle 557 555 4 5 6 3
-                              Store 556 558
-             559:      6(int) Load 8(invocation)
-             560:     44(ptr) AccessChain 31(data) 115 34
-             561:   23(fvec4) Load 560
-             562:   17(ivec4) Load 19(ballot)
-             563:   23(fvec4) GroupNonUniformFMax 178 PartitionedReduceNV 561 562
-             564:     44(ptr) AccessChain 31(data) 559 34
-                              Store 564 563
-             565:      6(int) Load 8(invocation)
-             566:     64(ptr) AccessChain 31(data) 34 63 35
-             567:     24(int) Load 566
-             568:   17(ivec4) Load 19(ballot)
-             569:     24(int) GroupNonUniformSMax 178 PartitionedReduceNV 567 568
-             570:     64(ptr) AccessChain 31(data) 565 63 35
-                              Store 570 569
-             571:      6(int) Load 8(invocation)
-             572:     71(ptr) AccessChain 31(data) 63 63
-             573:   25(ivec4) Load 572
-             574:   70(ivec2) VectorShuffle 573 573 0 1
-             575:   17(ivec4) Load 19(ballot)
-             576:   70(ivec2) GroupNonUniformSMax 178 PartitionedReduceNV 574 575
-             577:     71(ptr) AccessChain 31(data) 571 63
-             578:   25(ivec4) Load 577
-             579:   25(ivec4) VectorShuffle 578 576 4 5 2 3
-                              Store 577 579
-             580:      6(int) Load 8(invocation)
-             581:     71(ptr) AccessChain 31(data) 33 63
-             582:   25(ivec4) Load 581
-             583:   78(ivec3) VectorShuffle 582 582 0 1 2
-             584:   17(ivec4) Load 19(ballot)
-             585:   78(ivec3) GroupNonUniformSMax 178 PartitionedReduceNV 583 584
-             586:     71(ptr) AccessChain 31(data) 580 63
-             587:   25(ivec4) Load 586
-             588:   25(ivec4) VectorShuffle 587 585 4 5 6 3
-                              Store 586 588
-             589:      6(int) Load 8(invocation)
-             590:     71(ptr) AccessChain 31(data) 115 63
-             591:   25(ivec4) Load 590
-             592:   17(ivec4) Load 19(ballot)
-             593:   25(ivec4) GroupNonUniformSMax 178 PartitionedReduceNV 591 592
-             594:     71(ptr) AccessChain 31(data) 589 63
-                              Store 594 593
-             595:      6(int) Load 8(invocation)
-             596:     90(ptr) AccessChain 31(data) 34 33 35
-             597:      6(int) Load 596
-             598:   17(ivec4) Load 19(ballot)
-             599:      6(int) GroupNonUniformUMax 178 PartitionedReduceNV 597 598
-             600:     90(ptr) AccessChain 31(data) 595 33 35
-                              Store 600 599
+             555:26(float64_t) GroupNonUniformFMin 178 PartitionedReduceNV 553 554
+             556:    116(ptr) AccessChain 31(data) 551 115 35
+                              Store 556 555
+             557:      6(int) Load 8(invocation)
+             558:    123(ptr) AccessChain 31(data) 63 115
+             559: 27(f64vec4) Load 558
+             560:122(f64vec2) VectorShuffle 559 559 0 1
+             561:   17(ivec4) Load 19(ballot)
+             562:122(f64vec2) GroupNonUniformFMin 178 PartitionedReduceNV 560 561
+             563:    116(ptr) AccessChain 31(data) 557 115 35
+             564:26(float64_t) CompositeExtract 562 0
+                              Store 563 564
+             565:    116(ptr) AccessChain 31(data) 557 115 189
+             566:26(float64_t) CompositeExtract 562 1
+                              Store 565 566
+             567:      6(int) Load 8(invocation)
+             568:    123(ptr) AccessChain 31(data) 33 115
+             569: 27(f64vec4) Load 568
+             570:130(f64vec3) VectorShuffle 569 569 0 1 2
+             571:   17(ivec4) Load 19(ballot)
+             572:130(f64vec3) GroupNonUniformFMin 178 PartitionedReduceNV 570 571
+             573:    116(ptr) AccessChain 31(data) 567 115 35
+             574:26(float64_t) CompositeExtract 572 0
+                              Store 573 574
+             575:    116(ptr) AccessChain 31(data) 567 115 189
+             576:26(float64_t) CompositeExtract 572 1
+                              Store 575 576
+             577:    116(ptr) AccessChain 31(data) 567 115 202
+             578:26(float64_t) CompositeExtract 572 2
+                              Store 577 578
+             579:      6(int) Load 8(invocation)
+             580:    123(ptr) AccessChain 31(data) 115 115
+             581: 27(f64vec4) Load 580
+             582:   17(ivec4) Load 19(ballot)
+             583: 27(f64vec4) GroupNonUniformFMin 178 PartitionedReduceNV 581 582
+             584:    123(ptr) AccessChain 31(data) 579 115
+                              Store 584 583
+             585:      6(int) Load 8(invocation)
+             586:     36(ptr) AccessChain 31(data) 34 34 35
+             587:   22(float) Load 586
+             588:   17(ivec4) Load 19(ballot)
+             589:   22(float) GroupNonUniformFMax 178 PartitionedReduceNV 587 588
+             590:     36(ptr) AccessChain 31(data) 585 34 35
+                              Store 590 589
+             591:      6(int) Load 8(invocation)
+             592:     44(ptr) AccessChain 31(data) 63 34
+             593:   23(fvec4) Load 592
+             594:   43(fvec2) VectorShuffle 593 593 0 1
+             595:   17(ivec4) Load 19(ballot)
+             596:   43(fvec2) GroupNonUniformFMax 178 PartitionedReduceNV 594 595
+             597:     36(ptr) AccessChain 31(data) 591 34 35
+             598:   22(float) CompositeExtract 596 0
+                              Store 597 598
+             599:     36(ptr) AccessChain 31(data) 591 34 189
+             600:   22(float) CompositeExtract 596 1
+                              Store 599 600
              601:      6(int) Load 8(invocation)
-             602:     40(ptr) AccessChain 31(data) 63 33
-             603:   17(ivec4) Load 602
-             604:   96(ivec2) VectorShuffle 603 603 0 1
+             602:     44(ptr) AccessChain 31(data) 33 34
+             603:   23(fvec4) Load 602
+             604:   51(fvec3) VectorShuffle 603 603 0 1 2
              605:   17(ivec4) Load 19(ballot)
-             606:   96(ivec2) GroupNonUniformUMax 178 PartitionedReduceNV 604 605
-             607:     40(ptr) AccessChain 31(data) 601 33
-             608:   17(ivec4) Load 607
-             609:   17(ivec4) VectorShuffle 608 606 4 5 2 3
-                              Store 607 609
-             610:      6(int) Load 8(invocation)
-             611:     40(ptr) AccessChain 31(data) 33 33
-             612:   17(ivec4) Load 611
-             613:  103(ivec3) VectorShuffle 612 612 0 1 2
-             614:   17(ivec4) Load 19(ballot)
-             615:  103(ivec3) GroupNonUniformUMax 178 PartitionedReduceNV 613 614
-             616:     40(ptr) AccessChain 31(data) 610 33
-             617:   17(ivec4) Load 616
-             618:   17(ivec4) VectorShuffle 617 615 4 5 6 3
-                              Store 616 618
+             606:   51(fvec3) GroupNonUniformFMax 178 PartitionedReduceNV 604 605
+             607:     36(ptr) AccessChain 31(data) 601 34 35
+             608:   22(float) CompositeExtract 606 0
+                              Store 607 608
+             609:     36(ptr) AccessChain 31(data) 601 34 189
+             610:   22(float) CompositeExtract 606 1
+                              Store 609 610
+             611:     36(ptr) AccessChain 31(data) 601 34 202
+             612:   22(float) CompositeExtract 606 2
+                              Store 611 612
+             613:      6(int) Load 8(invocation)
+             614:     44(ptr) AccessChain 31(data) 115 34
+             615:   23(fvec4) Load 614
+             616:   17(ivec4) Load 19(ballot)
+             617:   23(fvec4) GroupNonUniformFMax 178 PartitionedReduceNV 615 616
+             618:     44(ptr) AccessChain 31(data) 613 34
+                              Store 618 617
              619:      6(int) Load 8(invocation)
-             620:     40(ptr) AccessChain 31(data) 115 33
-             621:   17(ivec4) Load 620
+             620:     64(ptr) AccessChain 31(data) 34 63 35
+             621:     24(int) Load 620
              622:   17(ivec4) Load 19(ballot)
-             623:   17(ivec4) GroupNonUniformUMax 178 PartitionedReduceNV 621 622
-             624:     40(ptr) AccessChain 31(data) 619 33
+             623:     24(int) GroupNonUniformSMax 178 PartitionedReduceNV 621 622
+             624:     64(ptr) AccessChain 31(data) 619 63 35
                               Store 624 623
              625:      6(int) Load 8(invocation)
-             626:    116(ptr) AccessChain 31(data) 34 115 35
-             627:26(float64_t) Load 626
-             628:   17(ivec4) Load 19(ballot)
-             629:26(float64_t) GroupNonUniformFMax 178 PartitionedReduceNV 627 628
-             630:    116(ptr) AccessChain 31(data) 625 115 35
-                              Store 630 629
-             631:      6(int) Load 8(invocation)
-             632:    123(ptr) AccessChain 31(data) 63 115
-             633: 27(f64vec4) Load 632
-             634:122(f64vec2) VectorShuffle 633 633 0 1
-             635:   17(ivec4) Load 19(ballot)
-             636:122(f64vec2) GroupNonUniformFMax 178 PartitionedReduceNV 634 635
-             637:    123(ptr) AccessChain 31(data) 631 115
-             638: 27(f64vec4) Load 637
-             639: 27(f64vec4) VectorShuffle 638 636 4 5 2 3
-                              Store 637 639
-             640:      6(int) Load 8(invocation)
-             641:    123(ptr) AccessChain 31(data) 33 115
-             642: 27(f64vec4) Load 641
-             643:130(f64vec3) VectorShuffle 642 642 0 1 2
-             644:   17(ivec4) Load 19(ballot)
-             645:130(f64vec3) GroupNonUniformFMax 178 PartitionedReduceNV 643 644
-             646:    123(ptr) AccessChain 31(data) 640 115
-             647: 27(f64vec4) Load 646
-             648: 27(f64vec4) VectorShuffle 647 645 4 5 6 3
-                              Store 646 648
-             649:      6(int) Load 8(invocation)
-             650:    123(ptr) AccessChain 31(data) 115 115
-             651: 27(f64vec4) Load 650
-             652:   17(ivec4) Load 19(ballot)
-             653: 27(f64vec4) GroupNonUniformFMax 178 PartitionedReduceNV 651 652
-             654:    123(ptr) AccessChain 31(data) 649 115
-                              Store 654 653
-             655:      6(int) Load 8(invocation)
-             656:     64(ptr) AccessChain 31(data) 34 63 35
-             657:     24(int) Load 656
-             658:   17(ivec4) Load 19(ballot)
-             659:     24(int) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 657 658
-             660:     64(ptr) AccessChain 31(data) 655 63 35
-                              Store 660 659
-             661:      6(int) Load 8(invocation)
-             662:     71(ptr) AccessChain 31(data) 63 63
-             663:   25(ivec4) Load 662
-             664:   70(ivec2) VectorShuffle 663 663 0 1
-             665:   17(ivec4) Load 19(ballot)
-             666:   70(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 664 665
-             667:     71(ptr) AccessChain 31(data) 661 63
-             668:   25(ivec4) Load 667
-             669:   25(ivec4) VectorShuffle 668 666 4 5 2 3
-                              Store 667 669
-             670:      6(int) Load 8(invocation)
-             671:     71(ptr) AccessChain 31(data) 33 63
-             672:   25(ivec4) Load 671
-             673:   78(ivec3) VectorShuffle 672 672 0 1 2
-             674:   17(ivec4) Load 19(ballot)
-             675:   78(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 673 674
-             676:     71(ptr) AccessChain 31(data) 670 63
-             677:   25(ivec4) Load 676
-             678:   25(ivec4) VectorShuffle 677 675 4 5 6 3
-                              Store 676 678
-             679:      6(int) Load 8(invocation)
-             680:     71(ptr) AccessChain 31(data) 115 63
-             681:   25(ivec4) Load 680
-             682:   17(ivec4) Load 19(ballot)
-             683:   25(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 681 682
-             684:     71(ptr) AccessChain 31(data) 679 63
-                              Store 684 683
-             685:      6(int) Load 8(invocation)
-             686:     90(ptr) AccessChain 31(data) 34 33 35
-             687:      6(int) Load 686
-             688:   17(ivec4) Load 19(ballot)
-             689:      6(int) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 687 688
-             690:     90(ptr) AccessChain 31(data) 685 33 35
-                              Store 690 689
-             691:      6(int) Load 8(invocation)
-             692:     40(ptr) AccessChain 31(data) 63 33
-             693:   17(ivec4) Load 692
-             694:   96(ivec2) VectorShuffle 693 693 0 1
-             695:   17(ivec4) Load 19(ballot)
-             696:   96(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 694 695
-             697:     40(ptr) AccessChain 31(data) 691 33
-             698:   17(ivec4) Load 697
-             699:   17(ivec4) VectorShuffle 698 696 4 5 2 3
-                              Store 697 699
-             700:      6(int) Load 8(invocation)
-             701:     40(ptr) AccessChain 31(data) 33 33
-             702:   17(ivec4) Load 701
-             703:  103(ivec3) VectorShuffle 702 702 0 1 2
-             704:   17(ivec4) Load 19(ballot)
-             705:  103(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 703 704
-             706:     40(ptr) AccessChain 31(data) 700 33
-             707:   17(ivec4) Load 706
-             708:   17(ivec4) VectorShuffle 707 705 4 5 6 3
-                              Store 706 708
-             709:      6(int) Load 8(invocation)
-             710:     40(ptr) AccessChain 31(data) 115 33
-             711:   17(ivec4) Load 710
-             712:   17(ivec4) Load 19(ballot)
-             713:   17(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 711 712
-             714:     40(ptr) AccessChain 31(data) 709 33
-                              Store 714 713
+             626:     71(ptr) AccessChain 31(data) 63 63
+             627:   25(ivec4) Load 626
+             628:   70(ivec2) VectorShuffle 627 627 0 1
+             629:   17(ivec4) Load 19(ballot)
+             630:   70(ivec2) GroupNonUniformSMax 178 PartitionedReduceNV 628 629
+             631:     64(ptr) AccessChain 31(data) 625 63 35
+             632:     24(int) CompositeExtract 630 0
+                              Store 631 632
+             633:     64(ptr) AccessChain 31(data) 625 63 189
+             634:     24(int) CompositeExtract 630 1
+                              Store 633 634
+             635:      6(int) Load 8(invocation)
+             636:     71(ptr) AccessChain 31(data) 33 63
+             637:   25(ivec4) Load 636
+             638:   78(ivec3) VectorShuffle 637 637 0 1 2
+             639:   17(ivec4) Load 19(ballot)
+             640:   78(ivec3) GroupNonUniformSMax 178 PartitionedReduceNV 638 639
+             641:     64(ptr) AccessChain 31(data) 635 63 35
+             642:     24(int) CompositeExtract 640 0
+                              Store 641 642
+             643:     64(ptr) AccessChain 31(data) 635 63 189
+             644:     24(int) CompositeExtract 640 1
+                              Store 643 644
+             645:     64(ptr) AccessChain 31(data) 635 63 202
+             646:     24(int) CompositeExtract 640 2
+                              Store 645 646
+             647:      6(int) Load 8(invocation)
+             648:     71(ptr) AccessChain 31(data) 115 63
+             649:   25(ivec4) Load 648
+             650:   17(ivec4) Load 19(ballot)
+             651:   25(ivec4) GroupNonUniformSMax 178 PartitionedReduceNV 649 650
+             652:     71(ptr) AccessChain 31(data) 647 63
+                              Store 652 651
+             653:      6(int) Load 8(invocation)
+             654:     90(ptr) AccessChain 31(data) 34 33 35
+             655:      6(int) Load 654
+             656:   17(ivec4) Load 19(ballot)
+             657:      6(int) GroupNonUniformUMax 178 PartitionedReduceNV 655 656
+             658:     90(ptr) AccessChain 31(data) 653 33 35
+                              Store 658 657
+             659:      6(int) Load 8(invocation)
+             660:     40(ptr) AccessChain 31(data) 63 33
+             661:   17(ivec4) Load 660
+             662:   96(ivec2) VectorShuffle 661 661 0 1
+             663:   17(ivec4) Load 19(ballot)
+             664:   96(ivec2) GroupNonUniformUMax 178 PartitionedReduceNV 662 663
+             665:     90(ptr) AccessChain 31(data) 659 33 35
+             666:      6(int) CompositeExtract 664 0
+                              Store 665 666
+             667:     90(ptr) AccessChain 31(data) 659 33 189
+             668:      6(int) CompositeExtract 664 1
+                              Store 667 668
+             669:      6(int) Load 8(invocation)
+             670:     40(ptr) AccessChain 31(data) 33 33
+             671:   17(ivec4) Load 670
+             672:  103(ivec3) VectorShuffle 671 671 0 1 2
+             673:   17(ivec4) Load 19(ballot)
+             674:  103(ivec3) GroupNonUniformUMax 178 PartitionedReduceNV 672 673
+             675:     90(ptr) AccessChain 31(data) 669 33 35
+             676:      6(int) CompositeExtract 674 0
+                              Store 675 676
+             677:     90(ptr) AccessChain 31(data) 669 33 189
+             678:      6(int) CompositeExtract 674 1
+                              Store 677 678
+             679:     90(ptr) AccessChain 31(data) 669 33 202
+             680:      6(int) CompositeExtract 674 2
+                              Store 679 680
+             681:      6(int) Load 8(invocation)
+             682:     40(ptr) AccessChain 31(data) 115 33
+             683:   17(ivec4) Load 682
+             684:   17(ivec4) Load 19(ballot)
+             685:   17(ivec4) GroupNonUniformUMax 178 PartitionedReduceNV 683 684
+             686:     40(ptr) AccessChain 31(data) 681 33
+                              Store 686 685
+             687:      6(int) Load 8(invocation)
+             688:    116(ptr) AccessChain 31(data) 34 115 35
+             689:26(float64_t) Load 688
+             690:   17(ivec4) Load 19(ballot)
+             691:26(float64_t) GroupNonUniformFMax 178 PartitionedReduceNV 689 690
+             692:    116(ptr) AccessChain 31(data) 687 115 35
+                              Store 692 691
+             693:      6(int) Load 8(invocation)
+             694:    123(ptr) AccessChain 31(data) 63 115
+             695: 27(f64vec4) Load 694
+             696:122(f64vec2) VectorShuffle 695 695 0 1
+             697:   17(ivec4) Load 19(ballot)
+             698:122(f64vec2) GroupNonUniformFMax 178 PartitionedReduceNV 696 697
+             699:    116(ptr) AccessChain 31(data) 693 115 35
+             700:26(float64_t) CompositeExtract 698 0
+                              Store 699 700
+             701:    116(ptr) AccessChain 31(data) 693 115 189
+             702:26(float64_t) CompositeExtract 698 1
+                              Store 701 702
+             703:      6(int) Load 8(invocation)
+             704:    123(ptr) AccessChain 31(data) 33 115
+             705: 27(f64vec4) Load 704
+             706:130(f64vec3) VectorShuffle 705 705 0 1 2
+             707:   17(ivec4) Load 19(ballot)
+             708:130(f64vec3) GroupNonUniformFMax 178 PartitionedReduceNV 706 707
+             709:    116(ptr) AccessChain 31(data) 703 115 35
+             710:26(float64_t) CompositeExtract 708 0
+                              Store 709 710
+             711:    116(ptr) AccessChain 31(data) 703 115 189
+             712:26(float64_t) CompositeExtract 708 1
+                              Store 711 712
+             713:    116(ptr) AccessChain 31(data) 703 115 202
+             714:26(float64_t) CompositeExtract 708 2
+                              Store 713 714
              715:      6(int) Load 8(invocation)
-             716:     64(ptr) AccessChain 31(data) 34 63 35
-             717:     24(int) Load 716
-             718:   144(bool) SLessThan 717 34
-             719:   17(ivec4) Load 19(ballot)
-             720:   144(bool) GroupNonUniformLogicalAnd 178 PartitionedReduceNV 718 719
-             721:     24(int) Select 720 63 34
-             722:     64(ptr) AccessChain 31(data) 715 63 35
-                              Store 722 721
-             723:      6(int) Load 8(invocation)
-             724:     71(ptr) AccessChain 31(data) 63 63
-             725:   25(ivec4) Load 724
-             726:   70(ivec2) VectorShuffle 725 725 0 1
-             728:  152(bvec2) SLessThan 726 727
-             729:   17(ivec4) Load 19(ballot)
-             730:  152(bvec2) GroupNonUniformLogicalAnd 178 PartitionedReduceNV 728 729
-             732:   70(ivec2) Select 730 731 727
-             733:     71(ptr) AccessChain 31(data) 723 63
-             734:   25(ivec4) Load 733
-             735:   25(ivec4) VectorShuffle 734 732 4 5 2 3
-                              Store 733 735
-             736:      6(int) Load 8(invocation)
-             737:     71(ptr) AccessChain 31(data) 63 63
-             738:   25(ivec4) Load 737
-             739:   78(ivec3) VectorShuffle 738 738 0 1 2
-             741:  161(bvec3) SLessThan 739 740
-             742:   17(ivec4) Load 19(ballot)
-             743:  161(bvec3) GroupNonUniformLogicalAnd 178 PartitionedReduceNV 741 742
-             745:   78(ivec3) Select 743 744 740
-             746:     71(ptr) AccessChain 31(data) 736 63
-             747:   25(ivec4) Load 746
-             748:   25(ivec4) VectorShuffle 747 745 4 5 6 3
-                              Store 746 748
+             716:    123(ptr) AccessChain 31(data) 115 115
+             717: 27(f64vec4) Load 716
+             718:   17(ivec4) Load 19(ballot)
+             719: 27(f64vec4) GroupNonUniformFMax 178 PartitionedReduceNV 717 718
+             720:    123(ptr) AccessChain 31(data) 715 115
+                              Store 720 719
+             721:      6(int) Load 8(invocation)
+             722:     64(ptr) AccessChain 31(data) 34 63 35
+             723:     24(int) Load 722
+             724:   17(ivec4) Load 19(ballot)
+             725:     24(int) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 723 724
+             726:     64(ptr) AccessChain 31(data) 721 63 35
+                              Store 726 725
+             727:      6(int) Load 8(invocation)
+             728:     71(ptr) AccessChain 31(data) 63 63
+             729:   25(ivec4) Load 728
+             730:   70(ivec2) VectorShuffle 729 729 0 1
+             731:   17(ivec4) Load 19(ballot)
+             732:   70(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 730 731
+             733:     64(ptr) AccessChain 31(data) 727 63 35
+             734:     24(int) CompositeExtract 732 0
+                              Store 733 734
+             735:     64(ptr) AccessChain 31(data) 727 63 189
+             736:     24(int) CompositeExtract 732 1
+                              Store 735 736
+             737:      6(int) Load 8(invocation)
+             738:     71(ptr) AccessChain 31(data) 33 63
+             739:   25(ivec4) Load 738
+             740:   78(ivec3) VectorShuffle 739 739 0 1 2
+             741:   17(ivec4) Load 19(ballot)
+             742:   78(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 740 741
+             743:     64(ptr) AccessChain 31(data) 737 63 35
+             744:     24(int) CompositeExtract 742 0
+                              Store 743 744
+             745:     64(ptr) AccessChain 31(data) 737 63 189
+             746:     24(int) CompositeExtract 742 1
+                              Store 745 746
+             747:     64(ptr) AccessChain 31(data) 737 63 202
+             748:     24(int) CompositeExtract 742 2
+                              Store 747 748
              749:      6(int) Load 8(invocation)
-             750:     71(ptr) AccessChain 31(data) 63 63
+             750:     71(ptr) AccessChain 31(data) 115 63
              751:   25(ivec4) Load 750
-             753:  169(bvec4) SLessThan 751 752
-             754:   17(ivec4) Load 19(ballot)
-             755:  169(bvec4) GroupNonUniformLogicalAnd 178 PartitionedReduceNV 753 754
-             757:   25(ivec4) Select 755 756 752
-             758:     71(ptr) AccessChain 31(data) 749 63
-                              Store 758 757
-             759:      6(int) Load 8(invocation)
-             760:     64(ptr) AccessChain 31(data) 34 63 35
-             761:     24(int) Load 760
-             762:   17(ivec4) Load 19(ballot)
-             763:     24(int) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 761 762
-             764:     64(ptr) AccessChain 31(data) 759 63 35
-                              Store 764 763
-             765:      6(int) Load 8(invocation)
-             766:     71(ptr) AccessChain 31(data) 63 63
-             767:   25(ivec4) Load 766
-             768:   70(ivec2) VectorShuffle 767 767 0 1
-             769:   17(ivec4) Load 19(ballot)
-             770:   70(ivec2) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 768 769
-             771:     71(ptr) AccessChain 31(data) 765 63
-             772:   25(ivec4) Load 771
-             773:   25(ivec4) VectorShuffle 772 770 4 5 2 3
-                              Store 771 773
-             774:      6(int) Load 8(invocation)
-             775:     71(ptr) AccessChain 31(data) 33 63
-             776:   25(ivec4) Load 775
-             777:   78(ivec3) VectorShuffle 776 776 0 1 2
-             778:   17(ivec4) Load 19(ballot)
-             779:   78(ivec3) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 777 778
-             780:     71(ptr) AccessChain 31(data) 774 63
-             781:   25(ivec4) Load 780
-             782:   25(ivec4) VectorShuffle 781 779 4 5 6 3
-                              Store 780 782
+             752:   17(ivec4) Load 19(ballot)
+             753:   25(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 751 752
+             754:     71(ptr) AccessChain 31(data) 749 63
+                              Store 754 753
+             755:      6(int) Load 8(invocation)
+             756:     90(ptr) AccessChain 31(data) 34 33 35
+             757:      6(int) Load 756
+             758:   17(ivec4) Load 19(ballot)
+             759:      6(int) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 757 758
+             760:     90(ptr) AccessChain 31(data) 755 33 35
+                              Store 760 759
+             761:      6(int) Load 8(invocation)
+             762:     40(ptr) AccessChain 31(data) 63 33
+             763:   17(ivec4) Load 762
+             764:   96(ivec2) VectorShuffle 763 763 0 1
+             765:   17(ivec4) Load 19(ballot)
+             766:   96(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 764 765
+             767:     90(ptr) AccessChain 31(data) 761 33 35
+             768:      6(int) CompositeExtract 766 0
+                              Store 767 768
+             769:     90(ptr) AccessChain 31(data) 761 33 189
+             770:      6(int) CompositeExtract 766 1
+                              Store 769 770
+             771:      6(int) Load 8(invocation)
+             772:     40(ptr) AccessChain 31(data) 33 33
+             773:   17(ivec4) Load 772
+             774:  103(ivec3) VectorShuffle 773 773 0 1 2
+             775:   17(ivec4) Load 19(ballot)
+             776:  103(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 774 775
+             777:     90(ptr) AccessChain 31(data) 771 33 35
+             778:      6(int) CompositeExtract 776 0
+                              Store 777 778
+             779:     90(ptr) AccessChain 31(data) 771 33 189
+             780:      6(int) CompositeExtract 776 1
+                              Store 779 780
+             781:     90(ptr) AccessChain 31(data) 771 33 202
+             782:      6(int) CompositeExtract 776 2
+                              Store 781 782
              783:      6(int) Load 8(invocation)
-             784:     71(ptr) AccessChain 31(data) 115 63
-             785:   25(ivec4) Load 784
+             784:     40(ptr) AccessChain 31(data) 115 33
+             785:   17(ivec4) Load 784
              786:   17(ivec4) Load 19(ballot)
-             787:   25(ivec4) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 785 786
-             788:     71(ptr) AccessChain 31(data) 783 63
+             787:   17(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedReduceNV 785 786
+             788:     40(ptr) AccessChain 31(data) 783 33
                               Store 788 787
              789:      6(int) Load 8(invocation)
-             790:     90(ptr) AccessChain 31(data) 34 33 35
-             791:      6(int) Load 790
-             792:   17(ivec4) Load 19(ballot)
-             793:      6(int) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 791 792
-             794:     90(ptr) AccessChain 31(data) 789 33 35
-                              Store 794 793
-             795:      6(int) Load 8(invocation)
-             796:     40(ptr) AccessChain 31(data) 63 33
-             797:   17(ivec4) Load 796
-             798:   96(ivec2) VectorShuffle 797 797 0 1
-             799:   17(ivec4) Load 19(ballot)
-             800:   96(ivec2) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 798 799
-             801:     40(ptr) AccessChain 31(data) 795 33
-             802:   17(ivec4) Load 801
-             803:   17(ivec4) VectorShuffle 802 800 4 5 2 3
-                              Store 801 803
-             804:      6(int) Load 8(invocation)
-             805:     40(ptr) AccessChain 31(data) 33 33
-             806:   17(ivec4) Load 805
-             807:  103(ivec3) VectorShuffle 806 806 0 1 2
-             808:   17(ivec4) Load 19(ballot)
-             809:  103(ivec3) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 807 808
-             810:     40(ptr) AccessChain 31(data) 804 33
-             811:   17(ivec4) Load 810
-             812:   17(ivec4) VectorShuffle 811 809 4 5 6 3
-                              Store 810 812
-             813:      6(int) Load 8(invocation)
-             814:     40(ptr) AccessChain 31(data) 115 33
-             815:   17(ivec4) Load 814
-             816:   17(ivec4) Load 19(ballot)
-             817:   17(ivec4) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 815 816
-             818:     40(ptr) AccessChain 31(data) 813 33
-                              Store 818 817
-             819:      6(int) Load 8(invocation)
-             820:     64(ptr) AccessChain 31(data) 34 63 35
-             821:     24(int) Load 820
-             822:   144(bool) SLessThan 821 34
-             823:   17(ivec4) Load 19(ballot)
-             824:   144(bool) GroupNonUniformLogicalOr 178 PartitionedReduceNV 822 823
-             825:     24(int) Select 824 63 34
-             826:     64(ptr) AccessChain 31(data) 819 63 35
-                              Store 826 825
+             790:     64(ptr) AccessChain 31(data) 34 63 35
+             791:     24(int) Load 790
+             792:   144(bool) SLessThan 791 34
+             793:   17(ivec4) Load 19(ballot)
+             794:   144(bool) GroupNonUniformLogicalAnd 178 PartitionedReduceNV 792 793
+             795:     24(int) Select 794 63 34
+             796:     64(ptr) AccessChain 31(data) 789 63 35
+                              Store 796 795
+             797:      6(int) Load 8(invocation)
+             798:     71(ptr) AccessChain 31(data) 63 63
+             799:   25(ivec4) Load 798
+             800:   70(ivec2) VectorShuffle 799 799 0 1
+             802:  152(bvec2) SLessThan 800 801
+             803:   17(ivec4) Load 19(ballot)
+             804:  152(bvec2) GroupNonUniformLogicalAnd 178 PartitionedReduceNV 802 803
+             806:   70(ivec2) Select 804 805 801
+             807:     64(ptr) AccessChain 31(data) 797 63 35
+             808:     24(int) CompositeExtract 806 0
+                              Store 807 808
+             809:     64(ptr) AccessChain 31(data) 797 63 189
+             810:     24(int) CompositeExtract 806 1
+                              Store 809 810
+             811:      6(int) Load 8(invocation)
+             812:     71(ptr) AccessChain 31(data) 63 63
+             813:   25(ivec4) Load 812
+             814:   78(ivec3) VectorShuffle 813 813 0 1 2
+             816:  161(bvec3) SLessThan 814 815
+             817:   17(ivec4) Load 19(ballot)
+             818:  161(bvec3) GroupNonUniformLogicalAnd 178 PartitionedReduceNV 816 817
+             820:   78(ivec3) Select 818 819 815
+             821:     64(ptr) AccessChain 31(data) 811 63 35
+             822:     24(int) CompositeExtract 820 0
+                              Store 821 822
+             823:     64(ptr) AccessChain 31(data) 811 63 189
+             824:     24(int) CompositeExtract 820 1
+                              Store 823 824
+             825:     64(ptr) AccessChain 31(data) 811 63 202
+             826:     24(int) CompositeExtract 820 2
+                              Store 825 826
              827:      6(int) Load 8(invocation)
              828:     71(ptr) AccessChain 31(data) 63 63
              829:   25(ivec4) Load 828
-             830:   70(ivec2) VectorShuffle 829 829 0 1
-             831:  152(bvec2) SLessThan 830 727
+             831:  169(bvec4) SLessThan 829 830
              832:   17(ivec4) Load 19(ballot)
-             833:  152(bvec2) GroupNonUniformLogicalOr 178 PartitionedReduceNV 831 832
-             834:   70(ivec2) Select 833 731 727
-             835:     71(ptr) AccessChain 31(data) 827 63
-             836:   25(ivec4) Load 835
-             837:   25(ivec4) VectorShuffle 836 834 4 5 2 3
-                              Store 835 837
-             838:      6(int) Load 8(invocation)
-             839:     71(ptr) AccessChain 31(data) 63 63
-             840:   25(ivec4) Load 839
-             841:   78(ivec3) VectorShuffle 840 840 0 1 2
-             842:  161(bvec3) SLessThan 841 740
-             843:   17(ivec4) Load 19(ballot)
-             844:  161(bvec3) GroupNonUniformLogicalOr 178 PartitionedReduceNV 842 843
-             845:   78(ivec3) Select 844 744 740
-             846:     71(ptr) AccessChain 31(data) 838 63
-             847:   25(ivec4) Load 846
-             848:   25(ivec4) VectorShuffle 847 845 4 5 6 3
-                              Store 846 848
-             849:      6(int) Load 8(invocation)
-             850:     71(ptr) AccessChain 31(data) 63 63
-             851:   25(ivec4) Load 850
-             852:  169(bvec4) SLessThan 851 752
-             853:   17(ivec4) Load 19(ballot)
-             854:  169(bvec4) GroupNonUniformLogicalOr 178 PartitionedReduceNV 852 853
-             855:   25(ivec4) Select 854 756 752
-             856:     71(ptr) AccessChain 31(data) 849 63
-                              Store 856 855
-             857:      6(int) Load 8(invocation)
-             858:     64(ptr) AccessChain 31(data) 34 63 35
-             859:     24(int) Load 858
-             860:   17(ivec4) Load 19(ballot)
-             861:     24(int) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 859 860
-             862:     64(ptr) AccessChain 31(data) 857 63 35
-                              Store 862 861
-             863:      6(int) Load 8(invocation)
-             864:     71(ptr) AccessChain 31(data) 63 63
-             865:   25(ivec4) Load 864
-             866:   70(ivec2) VectorShuffle 865 865 0 1
-             867:   17(ivec4) Load 19(ballot)
-             868:   70(ivec2) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 866 867
-             869:     71(ptr) AccessChain 31(data) 863 63
-             870:   25(ivec4) Load 869
-             871:   25(ivec4) VectorShuffle 870 868 4 5 2 3
-                              Store 869 871
-             872:      6(int) Load 8(invocation)
-             873:     71(ptr) AccessChain 31(data) 33 63
-             874:   25(ivec4) Load 873
-             875:   78(ivec3) VectorShuffle 874 874 0 1 2
-             876:   17(ivec4) Load 19(ballot)
-             877:   78(ivec3) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 875 876
-             878:     71(ptr) AccessChain 31(data) 872 63
-             879:   25(ivec4) Load 878
-             880:   25(ivec4) VectorShuffle 879 877 4 5 6 3
-                              Store 878 880
-             881:      6(int) Load 8(invocation)
-             882:     71(ptr) AccessChain 31(data) 115 63
-             883:   25(ivec4) Load 882
-             884:   17(ivec4) Load 19(ballot)
-             885:   25(ivec4) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 883 884
-             886:     71(ptr) AccessChain 31(data) 881 63
-                              Store 886 885
+             833:  169(bvec4) GroupNonUniformLogicalAnd 178 PartitionedReduceNV 831 832
+             835:   25(ivec4) Select 833 834 830
+             836:     71(ptr) AccessChain 31(data) 827 63
+                              Store 836 835
+             837:      6(int) Load 8(invocation)
+             838:     64(ptr) AccessChain 31(data) 34 63 35
+             839:     24(int) Load 838
+             840:   17(ivec4) Load 19(ballot)
+             841:     24(int) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 839 840
+             842:     64(ptr) AccessChain 31(data) 837 63 35
+                              Store 842 841
+             843:      6(int) Load 8(invocation)
+             844:     71(ptr) AccessChain 31(data) 63 63
+             845:   25(ivec4) Load 844
+             846:   70(ivec2) VectorShuffle 845 845 0 1
+             847:   17(ivec4) Load 19(ballot)
+             848:   70(ivec2) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 846 847
+             849:     64(ptr) AccessChain 31(data) 843 63 35
+             850:     24(int) CompositeExtract 848 0
+                              Store 849 850
+             851:     64(ptr) AccessChain 31(data) 843 63 189
+             852:     24(int) CompositeExtract 848 1
+                              Store 851 852
+             853:      6(int) Load 8(invocation)
+             854:     71(ptr) AccessChain 31(data) 33 63
+             855:   25(ivec4) Load 854
+             856:   78(ivec3) VectorShuffle 855 855 0 1 2
+             857:   17(ivec4) Load 19(ballot)
+             858:   78(ivec3) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 856 857
+             859:     64(ptr) AccessChain 31(data) 853 63 35
+             860:     24(int) CompositeExtract 858 0
+                              Store 859 860
+             861:     64(ptr) AccessChain 31(data) 853 63 189
+             862:     24(int) CompositeExtract 858 1
+                              Store 861 862
+             863:     64(ptr) AccessChain 31(data) 853 63 202
+             864:     24(int) CompositeExtract 858 2
+                              Store 863 864
+             865:      6(int) Load 8(invocation)
+             866:     71(ptr) AccessChain 31(data) 115 63
+             867:   25(ivec4) Load 866
+             868:   17(ivec4) Load 19(ballot)
+             869:   25(ivec4) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 867 868
+             870:     71(ptr) AccessChain 31(data) 865 63
+                              Store 870 869
+             871:      6(int) Load 8(invocation)
+             872:     90(ptr) AccessChain 31(data) 34 33 35
+             873:      6(int) Load 872
+             874:   17(ivec4) Load 19(ballot)
+             875:      6(int) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 873 874
+             876:     90(ptr) AccessChain 31(data) 871 33 35
+                              Store 876 875
+             877:      6(int) Load 8(invocation)
+             878:     40(ptr) AccessChain 31(data) 63 33
+             879:   17(ivec4) Load 878
+             880:   96(ivec2) VectorShuffle 879 879 0 1
+             881:   17(ivec4) Load 19(ballot)
+             882:   96(ivec2) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 880 881
+             883:     90(ptr) AccessChain 31(data) 877 33 35
+             884:      6(int) CompositeExtract 882 0
+                              Store 883 884
+             885:     90(ptr) AccessChain 31(data) 877 33 189
+             886:      6(int) CompositeExtract 882 1
+                              Store 885 886
              887:      6(int) Load 8(invocation)
-             888:     90(ptr) AccessChain 31(data) 34 33 35
-             889:      6(int) Load 888
-             890:   17(ivec4) Load 19(ballot)
-             891:      6(int) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 889 890
-             892:     90(ptr) AccessChain 31(data) 887 33 35
-                              Store 892 891
-             893:      6(int) Load 8(invocation)
-             894:     40(ptr) AccessChain 31(data) 63 33
-             895:   17(ivec4) Load 894
-             896:   96(ivec2) VectorShuffle 895 895 0 1
-             897:   17(ivec4) Load 19(ballot)
-             898:   96(ivec2) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 896 897
-             899:     40(ptr) AccessChain 31(data) 893 33
-             900:   17(ivec4) Load 899
-             901:   17(ivec4) VectorShuffle 900 898 4 5 2 3
-                              Store 899 901
-             902:      6(int) Load 8(invocation)
-             903:     40(ptr) AccessChain 31(data) 33 33
-             904:   17(ivec4) Load 903
-             905:  103(ivec3) VectorShuffle 904 904 0 1 2
-             906:   17(ivec4) Load 19(ballot)
-             907:  103(ivec3) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 905 906
-             908:     40(ptr) AccessChain 31(data) 902 33
-             909:   17(ivec4) Load 908
-             910:   17(ivec4) VectorShuffle 909 907 4 5 6 3
-                              Store 908 910
-             911:      6(int) Load 8(invocation)
-             912:     40(ptr) AccessChain 31(data) 115 33
-             913:   17(ivec4) Load 912
-             914:   17(ivec4) Load 19(ballot)
-             915:   17(ivec4) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 913 914
-             916:     40(ptr) AccessChain 31(data) 911 33
-                              Store 916 915
-             917:      6(int) Load 8(invocation)
-             918:     64(ptr) AccessChain 31(data) 34 63 35
-             919:     24(int) Load 918
-             920:   144(bool) SLessThan 919 34
-             921:   17(ivec4) Load 19(ballot)
-             922:   144(bool) GroupNonUniformLogicalXor 178 PartitionedReduceNV 920 921
-             923:     24(int) Select 922 63 34
-             924:     64(ptr) AccessChain 31(data) 917 63 35
-                              Store 924 923
+             888:     40(ptr) AccessChain 31(data) 33 33
+             889:   17(ivec4) Load 888
+             890:  103(ivec3) VectorShuffle 889 889 0 1 2
+             891:   17(ivec4) Load 19(ballot)
+             892:  103(ivec3) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 890 891
+             893:     90(ptr) AccessChain 31(data) 887 33 35
+             894:      6(int) CompositeExtract 892 0
+                              Store 893 894
+             895:     90(ptr) AccessChain 31(data) 887 33 189
+             896:      6(int) CompositeExtract 892 1
+                              Store 895 896
+             897:     90(ptr) AccessChain 31(data) 887 33 202
+             898:      6(int) CompositeExtract 892 2
+                              Store 897 898
+             899:      6(int) Load 8(invocation)
+             900:     40(ptr) AccessChain 31(data) 115 33
+             901:   17(ivec4) Load 900
+             902:   17(ivec4) Load 19(ballot)
+             903:   17(ivec4) GroupNonUniformBitwiseOr 178 PartitionedReduceNV 901 902
+             904:     40(ptr) AccessChain 31(data) 899 33
+                              Store 904 903
+             905:      6(int) Load 8(invocation)
+             906:     64(ptr) AccessChain 31(data) 34 63 35
+             907:     24(int) Load 906
+             908:   144(bool) SLessThan 907 34
+             909:   17(ivec4) Load 19(ballot)
+             910:   144(bool) GroupNonUniformLogicalOr 178 PartitionedReduceNV 908 909
+             911:     24(int) Select 910 63 34
+             912:     64(ptr) AccessChain 31(data) 905 63 35
+                              Store 912 911
+             913:      6(int) Load 8(invocation)
+             914:     71(ptr) AccessChain 31(data) 63 63
+             915:   25(ivec4) Load 914
+             916:   70(ivec2) VectorShuffle 915 915 0 1
+             917:  152(bvec2) SLessThan 916 801
+             918:   17(ivec4) Load 19(ballot)
+             919:  152(bvec2) GroupNonUniformLogicalOr 178 PartitionedReduceNV 917 918
+             920:   70(ivec2) Select 919 805 801
+             921:     64(ptr) AccessChain 31(data) 913 63 35
+             922:     24(int) CompositeExtract 920 0
+                              Store 921 922
+             923:     64(ptr) AccessChain 31(data) 913 63 189
+             924:     24(int) CompositeExtract 920 1
+                              Store 923 924
              925:      6(int) Load 8(invocation)
              926:     71(ptr) AccessChain 31(data) 63 63
              927:   25(ivec4) Load 926
-             928:   70(ivec2) VectorShuffle 927 927 0 1
-             929:  152(bvec2) SLessThan 928 727
+             928:   78(ivec3) VectorShuffle 927 927 0 1 2
+             929:  161(bvec3) SLessThan 928 815
              930:   17(ivec4) Load 19(ballot)
-             931:  152(bvec2) GroupNonUniformLogicalXor 178 PartitionedReduceNV 929 930
-             932:   70(ivec2) Select 931 731 727
-             933:     71(ptr) AccessChain 31(data) 925 63
-             934:   25(ivec4) Load 933
-             935:   25(ivec4) VectorShuffle 934 932 4 5 2 3
-                              Store 933 935
-             936:      6(int) Load 8(invocation)
-             937:     71(ptr) AccessChain 31(data) 63 63
-             938:   25(ivec4) Load 937
-             939:   78(ivec3) VectorShuffle 938 938 0 1 2
-             940:  161(bvec3) SLessThan 939 740
-             941:   17(ivec4) Load 19(ballot)
-             942:  161(bvec3) GroupNonUniformLogicalXor 178 PartitionedReduceNV 940 941
-             943:   78(ivec3) Select 942 744 740
-             944:     71(ptr) AccessChain 31(data) 936 63
-             945:   25(ivec4) Load 944
-             946:   25(ivec4) VectorShuffle 945 943 4 5 6 3
-                              Store 944 946
+             931:  161(bvec3) GroupNonUniformLogicalOr 178 PartitionedReduceNV 929 930
+             932:   78(ivec3) Select 931 819 815
+             933:     64(ptr) AccessChain 31(data) 925 63 35
+             934:     24(int) CompositeExtract 932 0
+                              Store 933 934
+             935:     64(ptr) AccessChain 31(data) 925 63 189
+             936:     24(int) CompositeExtract 932 1
+                              Store 935 936
+             937:     64(ptr) AccessChain 31(data) 925 63 202
+             938:     24(int) CompositeExtract 932 2
+                              Store 937 938
+             939:      6(int) Load 8(invocation)
+             940:     71(ptr) AccessChain 31(data) 63 63
+             941:   25(ivec4) Load 940
+             942:  169(bvec4) SLessThan 941 830
+             943:   17(ivec4) Load 19(ballot)
+             944:  169(bvec4) GroupNonUniformLogicalOr 178 PartitionedReduceNV 942 943
+             945:   25(ivec4) Select 944 834 830
+             946:     71(ptr) AccessChain 31(data) 939 63
+                              Store 946 945
              947:      6(int) Load 8(invocation)
-             948:     71(ptr) AccessChain 31(data) 63 63
-             949:   25(ivec4) Load 948
-             950:  169(bvec4) SLessThan 949 752
-             951:   17(ivec4) Load 19(ballot)
-             952:  169(bvec4) GroupNonUniformLogicalXor 178 PartitionedReduceNV 950 951
-             953:   25(ivec4) Select 952 756 752
-             954:     71(ptr) AccessChain 31(data) 947 63
-                              Store 954 953
-             955:      6(int) Load 8(invocation)
-             956:     36(ptr) AccessChain 31(data) 34 34 35
-             957:   22(float) Load 956
-             958:   17(ivec4) Load 19(ballot)
-             959:   22(float) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 957 958
-             960:     36(ptr) AccessChain 31(data) 955 34 35
-                              Store 960 959
-             961:      6(int) Load 8(invocation)
-             962:     44(ptr) AccessChain 31(data) 63 34
-             963:   23(fvec4) Load 962
-             964:   43(fvec2) VectorShuffle 963 963 0 1
-             965:   17(ivec4) Load 19(ballot)
-             966:   43(fvec2) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 964 965
-             967:     44(ptr) AccessChain 31(data) 961 34
-             968:   23(fvec4) Load 967
-             969:   23(fvec4) VectorShuffle 968 966 4 5 2 3
-                              Store 967 969
-             970:      6(int) Load 8(invocation)
-             971:     44(ptr) AccessChain 31(data) 33 34
-             972:   23(fvec4) Load 971
-             973:   51(fvec3) VectorShuffle 972 972 0 1 2
-             974:   17(ivec4) Load 19(ballot)
-             975:   51(fvec3) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 973 974
-             976:     44(ptr) AccessChain 31(data) 970 34
-             977:   23(fvec4) Load 976
-             978:   23(fvec4) VectorShuffle 977 975 4 5 6 3
-                              Store 976 978
-             979:      6(int) Load 8(invocation)
-             980:     44(ptr) AccessChain 31(data) 115 34
-             981:   23(fvec4) Load 980
-             982:   17(ivec4) Load 19(ballot)
-             983:   23(fvec4) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 981 982
-             984:     44(ptr) AccessChain 31(data) 979 34
-                              Store 984 983
-             985:      6(int) Load 8(invocation)
-             986:     64(ptr) AccessChain 31(data) 34 63 35
-             987:     24(int) Load 986
-             988:   17(ivec4) Load 19(ballot)
-             989:     24(int) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 987 988
-             990:     64(ptr) AccessChain 31(data) 985 63 35
-                              Store 990 989
-             991:      6(int) Load 8(invocation)
-             992:     71(ptr) AccessChain 31(data) 63 63
-             993:   25(ivec4) Load 992
-             994:   70(ivec2) VectorShuffle 993 993 0 1
-             995:   17(ivec4) Load 19(ballot)
-             996:   70(ivec2) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 994 995
-             997:     71(ptr) AccessChain 31(data) 991 63
-             998:   25(ivec4) Load 997
-             999:   25(ivec4) VectorShuffle 998 996 4 5 2 3
-                              Store 997 999
-            1000:      6(int) Load 8(invocation)
-            1001:     71(ptr) AccessChain 31(data) 33 63
-            1002:   25(ivec4) Load 1001
-            1003:   78(ivec3) VectorShuffle 1002 1002 0 1 2
-            1004:   17(ivec4) Load 19(ballot)
-            1005:   78(ivec3) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1003 1004
-            1006:     71(ptr) AccessChain 31(data) 1000 63
-            1007:   25(ivec4) Load 1006
-            1008:   25(ivec4) VectorShuffle 1007 1005 4 5 6 3
-                              Store 1006 1008
+             948:     64(ptr) AccessChain 31(data) 34 63 35
+             949:     24(int) Load 948
+             950:   17(ivec4) Load 19(ballot)
+             951:     24(int) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 949 950
+             952:     64(ptr) AccessChain 31(data) 947 63 35
+                              Store 952 951
+             953:      6(int) Load 8(invocation)
+             954:     71(ptr) AccessChain 31(data) 63 63
+             955:   25(ivec4) Load 954
+             956:   70(ivec2) VectorShuffle 955 955 0 1
+             957:   17(ivec4) Load 19(ballot)
+             958:   70(ivec2) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 956 957
+             959:     64(ptr) AccessChain 31(data) 953 63 35
+             960:     24(int) CompositeExtract 958 0
+                              Store 959 960
+             961:     64(ptr) AccessChain 31(data) 953 63 189
+             962:     24(int) CompositeExtract 958 1
+                              Store 961 962
+             963:      6(int) Load 8(invocation)
+             964:     71(ptr) AccessChain 31(data) 33 63
+             965:   25(ivec4) Load 964
+             966:   78(ivec3) VectorShuffle 965 965 0 1 2
+             967:   17(ivec4) Load 19(ballot)
+             968:   78(ivec3) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 966 967
+             969:     64(ptr) AccessChain 31(data) 963 63 35
+             970:     24(int) CompositeExtract 968 0
+                              Store 969 970
+             971:     64(ptr) AccessChain 31(data) 963 63 189
+             972:     24(int) CompositeExtract 968 1
+                              Store 971 972
+             973:     64(ptr) AccessChain 31(data) 963 63 202
+             974:     24(int) CompositeExtract 968 2
+                              Store 973 974
+             975:      6(int) Load 8(invocation)
+             976:     71(ptr) AccessChain 31(data) 115 63
+             977:   25(ivec4) Load 976
+             978:   17(ivec4) Load 19(ballot)
+             979:   25(ivec4) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 977 978
+             980:     71(ptr) AccessChain 31(data) 975 63
+                              Store 980 979
+             981:      6(int) Load 8(invocation)
+             982:     90(ptr) AccessChain 31(data) 34 33 35
+             983:      6(int) Load 982
+             984:   17(ivec4) Load 19(ballot)
+             985:      6(int) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 983 984
+             986:     90(ptr) AccessChain 31(data) 981 33 35
+                              Store 986 985
+             987:      6(int) Load 8(invocation)
+             988:     40(ptr) AccessChain 31(data) 63 33
+             989:   17(ivec4) Load 988
+             990:   96(ivec2) VectorShuffle 989 989 0 1
+             991:   17(ivec4) Load 19(ballot)
+             992:   96(ivec2) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 990 991
+             993:     90(ptr) AccessChain 31(data) 987 33 35
+             994:      6(int) CompositeExtract 992 0
+                              Store 993 994
+             995:     90(ptr) AccessChain 31(data) 987 33 189
+             996:      6(int) CompositeExtract 992 1
+                              Store 995 996
+             997:      6(int) Load 8(invocation)
+             998:     40(ptr) AccessChain 31(data) 33 33
+             999:   17(ivec4) Load 998
+            1000:  103(ivec3) VectorShuffle 999 999 0 1 2
+            1001:   17(ivec4) Load 19(ballot)
+            1002:  103(ivec3) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 1000 1001
+            1003:     90(ptr) AccessChain 31(data) 997 33 35
+            1004:      6(int) CompositeExtract 1002 0
+                              Store 1003 1004
+            1005:     90(ptr) AccessChain 31(data) 997 33 189
+            1006:      6(int) CompositeExtract 1002 1
+                              Store 1005 1006
+            1007:     90(ptr) AccessChain 31(data) 997 33 202
+            1008:      6(int) CompositeExtract 1002 2
+                              Store 1007 1008
             1009:      6(int) Load 8(invocation)
-            1010:     71(ptr) AccessChain 31(data) 115 63
-            1011:   25(ivec4) Load 1010
+            1010:     40(ptr) AccessChain 31(data) 115 33
+            1011:   17(ivec4) Load 1010
             1012:   17(ivec4) Load 19(ballot)
-            1013:   25(ivec4) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1011 1012
-            1014:     71(ptr) AccessChain 31(data) 1009 63
+            1013:   17(ivec4) GroupNonUniformBitwiseXor 178 PartitionedReduceNV 1011 1012
+            1014:     40(ptr) AccessChain 31(data) 1009 33
                               Store 1014 1013
             1015:      6(int) Load 8(invocation)
-            1016:     90(ptr) AccessChain 31(data) 34 33 35
-            1017:      6(int) Load 1016
-            1018:   17(ivec4) Load 19(ballot)
-            1019:      6(int) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1017 1018
-            1020:     90(ptr) AccessChain 31(data) 1015 33 35
-                              Store 1020 1019
-            1021:      6(int) Load 8(invocation)
-            1022:     40(ptr) AccessChain 31(data) 63 33
-            1023:   17(ivec4) Load 1022
-            1024:   96(ivec2) VectorShuffle 1023 1023 0 1
-            1025:   17(ivec4) Load 19(ballot)
-            1026:   96(ivec2) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1024 1025
-            1027:     40(ptr) AccessChain 31(data) 1021 33
-            1028:   17(ivec4) Load 1027
-            1029:   17(ivec4) VectorShuffle 1028 1026 4 5 2 3
-                              Store 1027 1029
-            1030:      6(int) Load 8(invocation)
-            1031:     40(ptr) AccessChain 31(data) 33 33
-            1032:   17(ivec4) Load 1031
-            1033:  103(ivec3) VectorShuffle 1032 1032 0 1 2
-            1034:   17(ivec4) Load 19(ballot)
-            1035:  103(ivec3) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1033 1034
-            1036:     40(ptr) AccessChain 31(data) 1030 33
-            1037:   17(ivec4) Load 1036
-            1038:   17(ivec4) VectorShuffle 1037 1035 4 5 6 3
-                              Store 1036 1038
-            1039:      6(int) Load 8(invocation)
-            1040:     40(ptr) AccessChain 31(data) 115 33
-            1041:   17(ivec4) Load 1040
-            1042:   17(ivec4) Load 19(ballot)
-            1043:   17(ivec4) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1041 1042
-            1044:     40(ptr) AccessChain 31(data) 1039 33
-                              Store 1044 1043
-            1045:      6(int) Load 8(invocation)
-            1046:    116(ptr) AccessChain 31(data) 34 115 35
-            1047:26(float64_t) Load 1046
-            1048:   17(ivec4) Load 19(ballot)
-            1049:26(float64_t) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1047 1048
-            1050:    116(ptr) AccessChain 31(data) 1045 115 35
-                              Store 1050 1049
-            1051:      6(int) Load 8(invocation)
-            1052:    123(ptr) AccessChain 31(data) 63 115
-            1053: 27(f64vec4) Load 1052
-            1054:122(f64vec2) VectorShuffle 1053 1053 0 1
-            1055:   17(ivec4) Load 19(ballot)
-            1056:122(f64vec2) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1054 1055
-            1057:    123(ptr) AccessChain 31(data) 1051 115
-            1058: 27(f64vec4) Load 1057
-            1059: 27(f64vec4) VectorShuffle 1058 1056 4 5 2 3
-                              Store 1057 1059
-            1060:      6(int) Load 8(invocation)
-            1061:    123(ptr) AccessChain 31(data) 33 115
-            1062: 27(f64vec4) Load 1061
-            1063:130(f64vec3) VectorShuffle 1062 1062 0 1 2
-            1064:   17(ivec4) Load 19(ballot)
-            1065:130(f64vec3) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1063 1064
-            1066:    123(ptr) AccessChain 31(data) 1060 115
-            1067: 27(f64vec4) Load 1066
-            1068: 27(f64vec4) VectorShuffle 1067 1065 4 5 6 3
-                              Store 1066 1068
-            1069:      6(int) Load 8(invocation)
-            1070:    123(ptr) AccessChain 31(data) 115 115
-            1071: 27(f64vec4) Load 1070
-            1072:   17(ivec4) Load 19(ballot)
-            1073: 27(f64vec4) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1071 1072
-            1074:    123(ptr) AccessChain 31(data) 1069 115
-                              Store 1074 1073
-            1075:      6(int) Load 8(invocation)
-            1076:     36(ptr) AccessChain 31(data) 34 34 35
-            1077:   22(float) Load 1076
-            1078:   17(ivec4) Load 19(ballot)
-            1079:   22(float) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1077 1078
-            1080:     36(ptr) AccessChain 31(data) 1075 34 35
-                              Store 1080 1079
-            1081:      6(int) Load 8(invocation)
-            1082:     44(ptr) AccessChain 31(data) 63 34
-            1083:   23(fvec4) Load 1082
-            1084:   43(fvec2) VectorShuffle 1083 1083 0 1
-            1085:   17(ivec4) Load 19(ballot)
-            1086:   43(fvec2) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1084 1085
-            1087:     44(ptr) AccessChain 31(data) 1081 34
-            1088:   23(fvec4) Load 1087
-            1089:   23(fvec4) VectorShuffle 1088 1086 4 5 2 3
-                              Store 1087 1089
-            1090:      6(int) Load 8(invocation)
-            1091:     44(ptr) AccessChain 31(data) 33 34
-            1092:   23(fvec4) Load 1091
-            1093:   51(fvec3) VectorShuffle 1092 1092 0 1 2
+            1016:     64(ptr) AccessChain 31(data) 34 63 35
+            1017:     24(int) Load 1016
+            1018:   144(bool) SLessThan 1017 34
+            1019:   17(ivec4) Load 19(ballot)
+            1020:   144(bool) GroupNonUniformLogicalXor 178 PartitionedReduceNV 1018 1019
+            1021:     24(int) Select 1020 63 34
+            1022:     64(ptr) AccessChain 31(data) 1015 63 35
+                              Store 1022 1021
+            1023:      6(int) Load 8(invocation)
+            1024:     71(ptr) AccessChain 31(data) 63 63
+            1025:   25(ivec4) Load 1024
+            1026:   70(ivec2) VectorShuffle 1025 1025 0 1
+            1027:  152(bvec2) SLessThan 1026 801
+            1028:   17(ivec4) Load 19(ballot)
+            1029:  152(bvec2) GroupNonUniformLogicalXor 178 PartitionedReduceNV 1027 1028
+            1030:   70(ivec2) Select 1029 805 801
+            1031:     64(ptr) AccessChain 31(data) 1023 63 35
+            1032:     24(int) CompositeExtract 1030 0
+                              Store 1031 1032
+            1033:     64(ptr) AccessChain 31(data) 1023 63 189
+            1034:     24(int) CompositeExtract 1030 1
+                              Store 1033 1034
+            1035:      6(int) Load 8(invocation)
+            1036:     71(ptr) AccessChain 31(data) 63 63
+            1037:   25(ivec4) Load 1036
+            1038:   78(ivec3) VectorShuffle 1037 1037 0 1 2
+            1039:  161(bvec3) SLessThan 1038 815
+            1040:   17(ivec4) Load 19(ballot)
+            1041:  161(bvec3) GroupNonUniformLogicalXor 178 PartitionedReduceNV 1039 1040
+            1042:   78(ivec3) Select 1041 819 815
+            1043:     64(ptr) AccessChain 31(data) 1035 63 35
+            1044:     24(int) CompositeExtract 1042 0
+                              Store 1043 1044
+            1045:     64(ptr) AccessChain 31(data) 1035 63 189
+            1046:     24(int) CompositeExtract 1042 1
+                              Store 1045 1046
+            1047:     64(ptr) AccessChain 31(data) 1035 63 202
+            1048:     24(int) CompositeExtract 1042 2
+                              Store 1047 1048
+            1049:      6(int) Load 8(invocation)
+            1050:     71(ptr) AccessChain 31(data) 63 63
+            1051:   25(ivec4) Load 1050
+            1052:  169(bvec4) SLessThan 1051 830
+            1053:   17(ivec4) Load 19(ballot)
+            1054:  169(bvec4) GroupNonUniformLogicalXor 178 PartitionedReduceNV 1052 1053
+            1055:   25(ivec4) Select 1054 834 830
+            1056:     71(ptr) AccessChain 31(data) 1049 63
+                              Store 1056 1055
+            1057:      6(int) Load 8(invocation)
+            1058:     36(ptr) AccessChain 31(data) 34 34 35
+            1059:   22(float) Load 1058
+            1060:   17(ivec4) Load 19(ballot)
+            1061:   22(float) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1059 1060
+            1062:     36(ptr) AccessChain 31(data) 1057 34 35
+                              Store 1062 1061
+            1063:      6(int) Load 8(invocation)
+            1064:     44(ptr) AccessChain 31(data) 63 34
+            1065:   23(fvec4) Load 1064
+            1066:   43(fvec2) VectorShuffle 1065 1065 0 1
+            1067:   17(ivec4) Load 19(ballot)
+            1068:   43(fvec2) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1066 1067
+            1069:     36(ptr) AccessChain 31(data) 1063 34 35
+            1070:   22(float) CompositeExtract 1068 0
+                              Store 1069 1070
+            1071:     36(ptr) AccessChain 31(data) 1063 34 189
+            1072:   22(float) CompositeExtract 1068 1
+                              Store 1071 1072
+            1073:      6(int) Load 8(invocation)
+            1074:     44(ptr) AccessChain 31(data) 33 34
+            1075:   23(fvec4) Load 1074
+            1076:   51(fvec3) VectorShuffle 1075 1075 0 1 2
+            1077:   17(ivec4) Load 19(ballot)
+            1078:   51(fvec3) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1076 1077
+            1079:     36(ptr) AccessChain 31(data) 1073 34 35
+            1080:   22(float) CompositeExtract 1078 0
+                              Store 1079 1080
+            1081:     36(ptr) AccessChain 31(data) 1073 34 189
+            1082:   22(float) CompositeExtract 1078 1
+                              Store 1081 1082
+            1083:     36(ptr) AccessChain 31(data) 1073 34 202
+            1084:   22(float) CompositeExtract 1078 2
+                              Store 1083 1084
+            1085:      6(int) Load 8(invocation)
+            1086:     44(ptr) AccessChain 31(data) 115 34
+            1087:   23(fvec4) Load 1086
+            1088:   17(ivec4) Load 19(ballot)
+            1089:   23(fvec4) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1087 1088
+            1090:     44(ptr) AccessChain 31(data) 1085 34
+                              Store 1090 1089
+            1091:      6(int) Load 8(invocation)
+            1092:     64(ptr) AccessChain 31(data) 34 63 35
+            1093:     24(int) Load 1092
             1094:   17(ivec4) Load 19(ballot)
-            1095:   51(fvec3) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1093 1094
-            1096:     44(ptr) AccessChain 31(data) 1090 34
-            1097:   23(fvec4) Load 1096
-            1098:   23(fvec4) VectorShuffle 1097 1095 4 5 6 3
-                              Store 1096 1098
-            1099:      6(int) Load 8(invocation)
-            1100:     44(ptr) AccessChain 31(data) 115 34
-            1101:   23(fvec4) Load 1100
-            1102:   17(ivec4) Load 19(ballot)
-            1103:   23(fvec4) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1101 1102
-            1104:     44(ptr) AccessChain 31(data) 1099 34
-                              Store 1104 1103
-            1105:      6(int) Load 8(invocation)
-            1106:     64(ptr) AccessChain 31(data) 34 63 35
-            1107:     24(int) Load 1106
-            1108:   17(ivec4) Load 19(ballot)
-            1109:     24(int) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1107 1108
-            1110:     64(ptr) AccessChain 31(data) 1105 63 35
-                              Store 1110 1109
-            1111:      6(int) Load 8(invocation)
-            1112:     71(ptr) AccessChain 31(data) 63 63
-            1113:   25(ivec4) Load 1112
-            1114:   70(ivec2) VectorShuffle 1113 1113 0 1
-            1115:   17(ivec4) Load 19(ballot)
-            1116:   70(ivec2) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1114 1115
-            1117:     71(ptr) AccessChain 31(data) 1111 63
-            1118:   25(ivec4) Load 1117
-            1119:   25(ivec4) VectorShuffle 1118 1116 4 5 2 3
-                              Store 1117 1119
-            1120:      6(int) Load 8(invocation)
-            1121:     71(ptr) AccessChain 31(data) 33 63
-            1122:   25(ivec4) Load 1121
-            1123:   78(ivec3) VectorShuffle 1122 1122 0 1 2
-            1124:   17(ivec4) Load 19(ballot)
-            1125:   78(ivec3) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1123 1124
-            1126:     71(ptr) AccessChain 31(data) 1120 63
-            1127:   25(ivec4) Load 1126
-            1128:   25(ivec4) VectorShuffle 1127 1125 4 5 6 3
-                              Store 1126 1128
-            1129:      6(int) Load 8(invocation)
-            1130:     71(ptr) AccessChain 31(data) 115 63
-            1131:   25(ivec4) Load 1130
-            1132:   17(ivec4) Load 19(ballot)
-            1133:   25(ivec4) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1131 1132
-            1134:     71(ptr) AccessChain 31(data) 1129 63
-                              Store 1134 1133
-            1135:      6(int) Load 8(invocation)
-            1136:     90(ptr) AccessChain 31(data) 34 33 35
-            1137:      6(int) Load 1136
-            1138:   17(ivec4) Load 19(ballot)
-            1139:      6(int) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1137 1138
-            1140:     90(ptr) AccessChain 31(data) 1135 33 35
-                              Store 1140 1139
+            1095:     24(int) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1093 1094
+            1096:     64(ptr) AccessChain 31(data) 1091 63 35
+                              Store 1096 1095
+            1097:      6(int) Load 8(invocation)
+            1098:     71(ptr) AccessChain 31(data) 63 63
+            1099:   25(ivec4) Load 1098
+            1100:   70(ivec2) VectorShuffle 1099 1099 0 1
+            1101:   17(ivec4) Load 19(ballot)
+            1102:   70(ivec2) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1100 1101
+            1103:     64(ptr) AccessChain 31(data) 1097 63 35
+            1104:     24(int) CompositeExtract 1102 0
+                              Store 1103 1104
+            1105:     64(ptr) AccessChain 31(data) 1097 63 189
+            1106:     24(int) CompositeExtract 1102 1
+                              Store 1105 1106
+            1107:      6(int) Load 8(invocation)
+            1108:     71(ptr) AccessChain 31(data) 33 63
+            1109:   25(ivec4) Load 1108
+            1110:   78(ivec3) VectorShuffle 1109 1109 0 1 2
+            1111:   17(ivec4) Load 19(ballot)
+            1112:   78(ivec3) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1110 1111
+            1113:     64(ptr) AccessChain 31(data) 1107 63 35
+            1114:     24(int) CompositeExtract 1112 0
+                              Store 1113 1114
+            1115:     64(ptr) AccessChain 31(data) 1107 63 189
+            1116:     24(int) CompositeExtract 1112 1
+                              Store 1115 1116
+            1117:     64(ptr) AccessChain 31(data) 1107 63 202
+            1118:     24(int) CompositeExtract 1112 2
+                              Store 1117 1118
+            1119:      6(int) Load 8(invocation)
+            1120:     71(ptr) AccessChain 31(data) 115 63
+            1121:   25(ivec4) Load 1120
+            1122:   17(ivec4) Load 19(ballot)
+            1123:   25(ivec4) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1121 1122
+            1124:     71(ptr) AccessChain 31(data) 1119 63
+                              Store 1124 1123
+            1125:      6(int) Load 8(invocation)
+            1126:     90(ptr) AccessChain 31(data) 34 33 35
+            1127:      6(int) Load 1126
+            1128:   17(ivec4) Load 19(ballot)
+            1129:      6(int) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1127 1128
+            1130:     90(ptr) AccessChain 31(data) 1125 33 35
+                              Store 1130 1129
+            1131:      6(int) Load 8(invocation)
+            1132:     40(ptr) AccessChain 31(data) 63 33
+            1133:   17(ivec4) Load 1132
+            1134:   96(ivec2) VectorShuffle 1133 1133 0 1
+            1135:   17(ivec4) Load 19(ballot)
+            1136:   96(ivec2) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1134 1135
+            1137:     90(ptr) AccessChain 31(data) 1131 33 35
+            1138:      6(int) CompositeExtract 1136 0
+                              Store 1137 1138
+            1139:     90(ptr) AccessChain 31(data) 1131 33 189
+            1140:      6(int) CompositeExtract 1136 1
+                              Store 1139 1140
             1141:      6(int) Load 8(invocation)
-            1142:     40(ptr) AccessChain 31(data) 63 33
+            1142:     40(ptr) AccessChain 31(data) 33 33
             1143:   17(ivec4) Load 1142
-            1144:   96(ivec2) VectorShuffle 1143 1143 0 1
+            1144:  103(ivec3) VectorShuffle 1143 1143 0 1 2
             1145:   17(ivec4) Load 19(ballot)
-            1146:   96(ivec2) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1144 1145
-            1147:     40(ptr) AccessChain 31(data) 1141 33
-            1148:   17(ivec4) Load 1147
-            1149:   17(ivec4) VectorShuffle 1148 1146 4 5 2 3
-                              Store 1147 1149
-            1150:      6(int) Load 8(invocation)
-            1151:     40(ptr) AccessChain 31(data) 33 33
-            1152:   17(ivec4) Load 1151
-            1153:  103(ivec3) VectorShuffle 1152 1152 0 1 2
-            1154:   17(ivec4) Load 19(ballot)
-            1155:  103(ivec3) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1153 1154
-            1156:     40(ptr) AccessChain 31(data) 1150 33
-            1157:   17(ivec4) Load 1156
-            1158:   17(ivec4) VectorShuffle 1157 1155 4 5 6 3
-                              Store 1156 1158
+            1146:  103(ivec3) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1144 1145
+            1147:     90(ptr) AccessChain 31(data) 1141 33 35
+            1148:      6(int) CompositeExtract 1146 0
+                              Store 1147 1148
+            1149:     90(ptr) AccessChain 31(data) 1141 33 189
+            1150:      6(int) CompositeExtract 1146 1
+                              Store 1149 1150
+            1151:     90(ptr) AccessChain 31(data) 1141 33 202
+            1152:      6(int) CompositeExtract 1146 2
+                              Store 1151 1152
+            1153:      6(int) Load 8(invocation)
+            1154:     40(ptr) AccessChain 31(data) 115 33
+            1155:   17(ivec4) Load 1154
+            1156:   17(ivec4) Load 19(ballot)
+            1157:   17(ivec4) GroupNonUniformIAdd 178 PartitionedInclusiveScanNV 1155 1156
+            1158:     40(ptr) AccessChain 31(data) 1153 33
+                              Store 1158 1157
             1159:      6(int) Load 8(invocation)
-            1160:     40(ptr) AccessChain 31(data) 115 33
-            1161:   17(ivec4) Load 1160
+            1160:    116(ptr) AccessChain 31(data) 34 115 35
+            1161:26(float64_t) Load 1160
             1162:   17(ivec4) Load 19(ballot)
-            1163:   17(ivec4) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1161 1162
-            1164:     40(ptr) AccessChain 31(data) 1159 33
+            1163:26(float64_t) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1161 1162
+            1164:    116(ptr) AccessChain 31(data) 1159 115 35
                               Store 1164 1163
             1165:      6(int) Load 8(invocation)
-            1166:    116(ptr) AccessChain 31(data) 34 115 35
-            1167:26(float64_t) Load 1166
-            1168:   17(ivec4) Load 19(ballot)
-            1169:26(float64_t) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1167 1168
-            1170:    116(ptr) AccessChain 31(data) 1165 115 35
-                              Store 1170 1169
-            1171:      6(int) Load 8(invocation)
-            1172:    123(ptr) AccessChain 31(data) 63 115
-            1173: 27(f64vec4) Load 1172
-            1174:122(f64vec2) VectorShuffle 1173 1173 0 1
-            1175:   17(ivec4) Load 19(ballot)
-            1176:122(f64vec2) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1174 1175
-            1177:    123(ptr) AccessChain 31(data) 1171 115
-            1178: 27(f64vec4) Load 1177
-            1179: 27(f64vec4) VectorShuffle 1178 1176 4 5 2 3
-                              Store 1177 1179
-            1180:      6(int) Load 8(invocation)
-            1181:    123(ptr) AccessChain 31(data) 33 115
-            1182: 27(f64vec4) Load 1181
-            1183:130(f64vec3) VectorShuffle 1182 1182 0 1 2
-            1184:   17(ivec4) Load 19(ballot)
-            1185:130(f64vec3) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1183 1184
-            1186:    123(ptr) AccessChain 31(data) 1180 115
-            1187: 27(f64vec4) Load 1186
-            1188: 27(f64vec4) VectorShuffle 1187 1185 4 5 6 3
-                              Store 1186 1188
-            1189:      6(int) Load 8(invocation)
-            1190:    123(ptr) AccessChain 31(data) 115 115
-            1191: 27(f64vec4) Load 1190
-            1192:   17(ivec4) Load 19(ballot)
-            1193: 27(f64vec4) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1191 1192
-            1194:    123(ptr) AccessChain 31(data) 1189 115
-                              Store 1194 1193
-            1195:      6(int) Load 8(invocation)
-            1196:     36(ptr) AccessChain 31(data) 34 34 35
-            1197:   22(float) Load 1196
-            1198:   17(ivec4) Load 19(ballot)
-            1199:   22(float) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1197 1198
-            1200:     36(ptr) AccessChain 31(data) 1195 34 35
-                              Store 1200 1199
-            1201:      6(int) Load 8(invocation)
-            1202:     44(ptr) AccessChain 31(data) 63 34
-            1203:   23(fvec4) Load 1202
-            1204:   43(fvec2) VectorShuffle 1203 1203 0 1
-            1205:   17(ivec4) Load 19(ballot)
-            1206:   43(fvec2) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1204 1205
-            1207:     44(ptr) AccessChain 31(data) 1201 34
-            1208:   23(fvec4) Load 1207
-            1209:   23(fvec4) VectorShuffle 1208 1206 4 5 2 3
-                              Store 1207 1209
-            1210:      6(int) Load 8(invocation)
-            1211:     44(ptr) AccessChain 31(data) 33 34
-            1212:   23(fvec4) Load 1211
-            1213:   51(fvec3) VectorShuffle 1212 1212 0 1 2
-            1214:   17(ivec4) Load 19(ballot)
-            1215:   51(fvec3) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1213 1214
-            1216:     44(ptr) AccessChain 31(data) 1210 34
-            1217:   23(fvec4) Load 1216
-            1218:   23(fvec4) VectorShuffle 1217 1215 4 5 6 3
-                              Store 1216 1218
-            1219:      6(int) Load 8(invocation)
-            1220:     44(ptr) AccessChain 31(data) 115 34
-            1221:   23(fvec4) Load 1220
-            1222:   17(ivec4) Load 19(ballot)
-            1223:   23(fvec4) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1221 1222
-            1224:     44(ptr) AccessChain 31(data) 1219 34
-                              Store 1224 1223
-            1225:      6(int) Load 8(invocation)
-            1226:     64(ptr) AccessChain 31(data) 34 63 35
-            1227:     24(int) Load 1226
-            1228:   17(ivec4) Load 19(ballot)
-            1229:     24(int) GroupNonUniformSMin 178 PartitionedInclusiveScanNV 1227 1228
-            1230:     64(ptr) AccessChain 31(data) 1225 63 35
-                              Store 1230 1229
-            1231:      6(int) Load 8(invocation)
-            1232:     71(ptr) AccessChain 31(data) 63 63
-            1233:   25(ivec4) Load 1232
-            1234:   70(ivec2) VectorShuffle 1233 1233 0 1
-            1235:   17(ivec4) Load 19(ballot)
-            1236:   70(ivec2) GroupNonUniformSMin 178 PartitionedInclusiveScanNV 1234 1235
-            1237:     71(ptr) AccessChain 31(data) 1231 63
-            1238:   25(ivec4) Load 1237
-            1239:   25(ivec4) VectorShuffle 1238 1236 4 5 2 3
-                              Store 1237 1239
-            1240:      6(int) Load 8(invocation)
-            1241:     71(ptr) AccessChain 31(data) 33 63
-            1242:   25(ivec4) Load 1241
-            1243:   78(ivec3) VectorShuffle 1242 1242 0 1 2
-            1244:   17(ivec4) Load 19(ballot)
-            1245:   78(ivec3) GroupNonUniformSMin 178 PartitionedInclusiveScanNV 1243 1244
-            1246:     71(ptr) AccessChain 31(data) 1240 63
-            1247:   25(ivec4) Load 1246
-            1248:   25(ivec4) VectorShuffle 1247 1245 4 5 6 3
-                              Store 1246 1248
-            1249:      6(int) Load 8(invocation)
-            1250:     71(ptr) AccessChain 31(data) 115 63
-            1251:   25(ivec4) Load 1250
-            1252:   17(ivec4) Load 19(ballot)
-            1253:   25(ivec4) GroupNonUniformSMin 178 PartitionedInclusiveScanNV 1251 1252
-            1254:     71(ptr) AccessChain 31(data) 1249 63
-                              Store 1254 1253
+            1166:    123(ptr) AccessChain 31(data) 63 115
+            1167: 27(f64vec4) Load 1166
+            1168:122(f64vec2) VectorShuffle 1167 1167 0 1
+            1169:   17(ivec4) Load 19(ballot)
+            1170:122(f64vec2) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1168 1169
+            1171:    116(ptr) AccessChain 31(data) 1165 115 35
+            1172:26(float64_t) CompositeExtract 1170 0
+                              Store 1171 1172
+            1173:    116(ptr) AccessChain 31(data) 1165 115 189
+            1174:26(float64_t) CompositeExtract 1170 1
+                              Store 1173 1174
+            1175:      6(int) Load 8(invocation)
+            1176:    123(ptr) AccessChain 31(data) 33 115
+            1177: 27(f64vec4) Load 1176
+            1178:130(f64vec3) VectorShuffle 1177 1177 0 1 2
+            1179:   17(ivec4) Load 19(ballot)
+            1180:130(f64vec3) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1178 1179
+            1181:    116(ptr) AccessChain 31(data) 1175 115 35
+            1182:26(float64_t) CompositeExtract 1180 0
+                              Store 1181 1182
+            1183:    116(ptr) AccessChain 31(data) 1175 115 189
+            1184:26(float64_t) CompositeExtract 1180 1
+                              Store 1183 1184
+            1185:    116(ptr) AccessChain 31(data) 1175 115 202
+            1186:26(float64_t) CompositeExtract 1180 2
+                              Store 1185 1186
+            1187:      6(int) Load 8(invocation)
+            1188:    123(ptr) AccessChain 31(data) 115 115
+            1189: 27(f64vec4) Load 1188
+            1190:   17(ivec4) Load 19(ballot)
+            1191: 27(f64vec4) GroupNonUniformFAdd 178 PartitionedInclusiveScanNV 1189 1190
+            1192:    123(ptr) AccessChain 31(data) 1187 115
+                              Store 1192 1191
+            1193:      6(int) Load 8(invocation)
+            1194:     36(ptr) AccessChain 31(data) 34 34 35
+            1195:   22(float) Load 1194
+            1196:   17(ivec4) Load 19(ballot)
+            1197:   22(float) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1195 1196
+            1198:     36(ptr) AccessChain 31(data) 1193 34 35
+                              Store 1198 1197
+            1199:      6(int) Load 8(invocation)
+            1200:     44(ptr) AccessChain 31(data) 63 34
+            1201:   23(fvec4) Load 1200
+            1202:   43(fvec2) VectorShuffle 1201 1201 0 1
+            1203:   17(ivec4) Load 19(ballot)
+            1204:   43(fvec2) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1202 1203
+            1205:     36(ptr) AccessChain 31(data) 1199 34 35
+            1206:   22(float) CompositeExtract 1204 0
+                              Store 1205 1206
+            1207:     36(ptr) AccessChain 31(data) 1199 34 189
+            1208:   22(float) CompositeExtract 1204 1
+                              Store 1207 1208
+            1209:      6(int) Load 8(invocation)
+            1210:     44(ptr) AccessChain 31(data) 33 34
+            1211:   23(fvec4) Load 1210
+            1212:   51(fvec3) VectorShuffle 1211 1211 0 1 2
+            1213:   17(ivec4) Load 19(ballot)
+            1214:   51(fvec3) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1212 1213
+            1215:     36(ptr) AccessChain 31(data) 1209 34 35
+            1216:   22(float) CompositeExtract 1214 0
+                              Store 1215 1216
+            1217:     36(ptr) AccessChain 31(data) 1209 34 189
+            1218:   22(float) CompositeExtract 1214 1
+                              Store 1217 1218
+            1219:     36(ptr) AccessChain 31(data) 1209 34 202
+            1220:   22(float) CompositeExtract 1214 2
+                              Store 1219 1220
+            1221:      6(int) Load 8(invocation)
+            1222:     44(ptr) AccessChain 31(data) 115 34
+            1223:   23(fvec4) Load 1222
+            1224:   17(ivec4) Load 19(ballot)
+            1225:   23(fvec4) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1223 1224
+            1226:     44(ptr) AccessChain 31(data) 1221 34
+                              Store 1226 1225
+            1227:      6(int) Load 8(invocation)
+            1228:     64(ptr) AccessChain 31(data) 34 63 35
+            1229:     24(int) Load 1228
+            1230:   17(ivec4) Load 19(ballot)
+            1231:     24(int) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1229 1230
+            1232:     64(ptr) AccessChain 31(data) 1227 63 35
+                              Store 1232 1231
+            1233:      6(int) Load 8(invocation)
+            1234:     71(ptr) AccessChain 31(data) 63 63
+            1235:   25(ivec4) Load 1234
+            1236:   70(ivec2) VectorShuffle 1235 1235 0 1
+            1237:   17(ivec4) Load 19(ballot)
+            1238:   70(ivec2) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1236 1237
+            1239:     64(ptr) AccessChain 31(data) 1233 63 35
+            1240:     24(int) CompositeExtract 1238 0
+                              Store 1239 1240
+            1241:     64(ptr) AccessChain 31(data) 1233 63 189
+            1242:     24(int) CompositeExtract 1238 1
+                              Store 1241 1242
+            1243:      6(int) Load 8(invocation)
+            1244:     71(ptr) AccessChain 31(data) 33 63
+            1245:   25(ivec4) Load 1244
+            1246:   78(ivec3) VectorShuffle 1245 1245 0 1 2
+            1247:   17(ivec4) Load 19(ballot)
+            1248:   78(ivec3) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1246 1247
+            1249:     64(ptr) AccessChain 31(data) 1243 63 35
+            1250:     24(int) CompositeExtract 1248 0
+                              Store 1249 1250
+            1251:     64(ptr) AccessChain 31(data) 1243 63 189
+            1252:     24(int) CompositeExtract 1248 1
+                              Store 1251 1252
+            1253:     64(ptr) AccessChain 31(data) 1243 63 202
+            1254:     24(int) CompositeExtract 1248 2
+                              Store 1253 1254
             1255:      6(int) Load 8(invocation)
-            1256:     90(ptr) AccessChain 31(data) 34 33 35
-            1257:      6(int) Load 1256
+            1256:     71(ptr) AccessChain 31(data) 115 63
+            1257:   25(ivec4) Load 1256
             1258:   17(ivec4) Load 19(ballot)
-            1259:      6(int) GroupNonUniformUMin 178 PartitionedInclusiveScanNV 1257 1258
-            1260:     90(ptr) AccessChain 31(data) 1255 33 35
+            1259:   25(ivec4) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1257 1258
+            1260:     71(ptr) AccessChain 31(data) 1255 63
                               Store 1260 1259
             1261:      6(int) Load 8(invocation)
-            1262:     40(ptr) AccessChain 31(data) 63 33
-            1263:   17(ivec4) Load 1262
-            1264:   96(ivec2) VectorShuffle 1263 1263 0 1
-            1265:   17(ivec4) Load 19(ballot)
-            1266:   96(ivec2) GroupNonUniformUMin 178 PartitionedInclusiveScanNV 1264 1265
-            1267:     40(ptr) AccessChain 31(data) 1261 33
-            1268:   17(ivec4) Load 1267
-            1269:   17(ivec4) VectorShuffle 1268 1266 4 5 2 3
-                              Store 1267 1269
-            1270:      6(int) Load 8(invocation)
-            1271:     40(ptr) AccessChain 31(data) 33 33
-            1272:   17(ivec4) Load 1271
-            1273:  103(ivec3) VectorShuffle 1272 1272 0 1 2
-            1274:   17(ivec4) Load 19(ballot)
-            1275:  103(ivec3) GroupNonUniformUMin 178 PartitionedInclusiveScanNV 1273 1274
-            1276:     40(ptr) AccessChain 31(data) 1270 33
-            1277:   17(ivec4) Load 1276
-            1278:   17(ivec4) VectorShuffle 1277 1275 4 5 6 3
-                              Store 1276 1278
-            1279:      6(int) Load 8(invocation)
-            1280:     40(ptr) AccessChain 31(data) 115 33
-            1281:   17(ivec4) Load 1280
-            1282:   17(ivec4) Load 19(ballot)
-            1283:   17(ivec4) GroupNonUniformUMin 178 PartitionedInclusiveScanNV 1281 1282
-            1284:     40(ptr) AccessChain 31(data) 1279 33
-                              Store 1284 1283
-            1285:      6(int) Load 8(invocation)
-            1286:    116(ptr) AccessChain 31(data) 34 115 35
-            1287:26(float64_t) Load 1286
-            1288:   17(ivec4) Load 19(ballot)
-            1289:26(float64_t) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1287 1288
-            1290:    116(ptr) AccessChain 31(data) 1285 115 35
-                              Store 1290 1289
-            1291:      6(int) Load 8(invocation)
-            1292:    123(ptr) AccessChain 31(data) 63 115
-            1293: 27(f64vec4) Load 1292
-            1294:122(f64vec2) VectorShuffle 1293 1293 0 1
-            1295:   17(ivec4) Load 19(ballot)
-            1296:122(f64vec2) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1294 1295
-            1297:    123(ptr) AccessChain 31(data) 1291 115
-            1298: 27(f64vec4) Load 1297
-            1299: 27(f64vec4) VectorShuffle 1298 1296 4 5 2 3
-                              Store 1297 1299
-            1300:      6(int) Load 8(invocation)
-            1301:    123(ptr) AccessChain 31(data) 33 115
-            1302: 27(f64vec4) Load 1301
-            1303:130(f64vec3) VectorShuffle 1302 1302 0 1 2
-            1304:   17(ivec4) Load 19(ballot)
-            1305:130(f64vec3) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1303 1304
-            1306:    123(ptr) AccessChain 31(data) 1300 115
-            1307: 27(f64vec4) Load 1306
-            1308: 27(f64vec4) VectorShuffle 1307 1305 4 5 6 3
-                              Store 1306 1308
-            1309:      6(int) Load 8(invocation)
-            1310:    123(ptr) AccessChain 31(data) 115 115
-            1311: 27(f64vec4) Load 1310
-            1312:   17(ivec4) Load 19(ballot)
-            1313: 27(f64vec4) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1311 1312
-            1314:    123(ptr) AccessChain 31(data) 1309 115
-                              Store 1314 1313
-            1315:      6(int) Load 8(invocation)
-            1316:     36(ptr) AccessChain 31(data) 34 34 35
-            1317:   22(float) Load 1316
-            1318:   17(ivec4) Load 19(ballot)
-            1319:   22(float) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1317 1318
-            1320:     36(ptr) AccessChain 31(data) 1315 34 35
-                              Store 1320 1319
-            1321:      6(int) Load 8(invocation)
-            1322:     44(ptr) AccessChain 31(data) 63 34
-            1323:   23(fvec4) Load 1322
-            1324:   43(fvec2) VectorShuffle 1323 1323 0 1
-            1325:   17(ivec4) Load 19(ballot)
-            1326:   43(fvec2) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1324 1325
-            1327:     44(ptr) AccessChain 31(data) 1321 34
-            1328:   23(fvec4) Load 1327
-            1329:   23(fvec4) VectorShuffle 1328 1326 4 5 2 3
-                              Store 1327 1329
-            1330:      6(int) Load 8(invocation)
-            1331:     44(ptr) AccessChain 31(data) 33 34
-            1332:   23(fvec4) Load 1331
-            1333:   51(fvec3) VectorShuffle 1332 1332 0 1 2
-            1334:   17(ivec4) Load 19(ballot)
-            1335:   51(fvec3) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1333 1334
-            1336:     44(ptr) AccessChain 31(data) 1330 34
+            1262:     90(ptr) AccessChain 31(data) 34 33 35
+            1263:      6(int) Load 1262
+            1264:   17(ivec4) Load 19(ballot)
+            1265:      6(int) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1263 1264
+            1266:     90(ptr) AccessChain 31(data) 1261 33 35
+                              Store 1266 1265
+            1267:      6(int) Load 8(invocation)
+            1268:     40(ptr) AccessChain 31(data) 63 33
+            1269:   17(ivec4) Load 1268
+            1270:   96(ivec2) VectorShuffle 1269 1269 0 1
+            1271:   17(ivec4) Load 19(ballot)
+            1272:   96(ivec2) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1270 1271
+            1273:     90(ptr) AccessChain 31(data) 1267 33 35
+            1274:      6(int) CompositeExtract 1272 0
+                              Store 1273 1274
+            1275:     90(ptr) AccessChain 31(data) 1267 33 189
+            1276:      6(int) CompositeExtract 1272 1
+                              Store 1275 1276
+            1277:      6(int) Load 8(invocation)
+            1278:     40(ptr) AccessChain 31(data) 33 33
+            1279:   17(ivec4) Load 1278
+            1280:  103(ivec3) VectorShuffle 1279 1279 0 1 2
+            1281:   17(ivec4) Load 19(ballot)
+            1282:  103(ivec3) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1280 1281
+            1283:     90(ptr) AccessChain 31(data) 1277 33 35
+            1284:      6(int) CompositeExtract 1282 0
+                              Store 1283 1284
+            1285:     90(ptr) AccessChain 31(data) 1277 33 189
+            1286:      6(int) CompositeExtract 1282 1
+                              Store 1285 1286
+            1287:     90(ptr) AccessChain 31(data) 1277 33 202
+            1288:      6(int) CompositeExtract 1282 2
+                              Store 1287 1288
+            1289:      6(int) Load 8(invocation)
+            1290:     40(ptr) AccessChain 31(data) 115 33
+            1291:   17(ivec4) Load 1290
+            1292:   17(ivec4) Load 19(ballot)
+            1293:   17(ivec4) GroupNonUniformIMul 178 PartitionedInclusiveScanNV 1291 1292
+            1294:     40(ptr) AccessChain 31(data) 1289 33
+                              Store 1294 1293
+            1295:      6(int) Load 8(invocation)
+            1296:    116(ptr) AccessChain 31(data) 34 115 35
+            1297:26(float64_t) Load 1296
+            1298:   17(ivec4) Load 19(ballot)
+            1299:26(float64_t) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1297 1298
+            1300:    116(ptr) AccessChain 31(data) 1295 115 35
+                              Store 1300 1299
+            1301:      6(int) Load 8(invocation)
+            1302:    123(ptr) AccessChain 31(data) 63 115
+            1303: 27(f64vec4) Load 1302
+            1304:122(f64vec2) VectorShuffle 1303 1303 0 1
+            1305:   17(ivec4) Load 19(ballot)
+            1306:122(f64vec2) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1304 1305
+            1307:    116(ptr) AccessChain 31(data) 1301 115 35
+            1308:26(float64_t) CompositeExtract 1306 0
+                              Store 1307 1308
+            1309:    116(ptr) AccessChain 31(data) 1301 115 189
+            1310:26(float64_t) CompositeExtract 1306 1
+                              Store 1309 1310
+            1311:      6(int) Load 8(invocation)
+            1312:    123(ptr) AccessChain 31(data) 33 115
+            1313: 27(f64vec4) Load 1312
+            1314:130(f64vec3) VectorShuffle 1313 1313 0 1 2
+            1315:   17(ivec4) Load 19(ballot)
+            1316:130(f64vec3) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1314 1315
+            1317:    116(ptr) AccessChain 31(data) 1311 115 35
+            1318:26(float64_t) CompositeExtract 1316 0
+                              Store 1317 1318
+            1319:    116(ptr) AccessChain 31(data) 1311 115 189
+            1320:26(float64_t) CompositeExtract 1316 1
+                              Store 1319 1320
+            1321:    116(ptr) AccessChain 31(data) 1311 115 202
+            1322:26(float64_t) CompositeExtract 1316 2
+                              Store 1321 1322
+            1323:      6(int) Load 8(invocation)
+            1324:    123(ptr) AccessChain 31(data) 115 115
+            1325: 27(f64vec4) Load 1324
+            1326:   17(ivec4) Load 19(ballot)
+            1327: 27(f64vec4) GroupNonUniformFMul 178 PartitionedInclusiveScanNV 1325 1326
+            1328:    123(ptr) AccessChain 31(data) 1323 115
+                              Store 1328 1327
+            1329:      6(int) Load 8(invocation)
+            1330:     36(ptr) AccessChain 31(data) 34 34 35
+            1331:   22(float) Load 1330
+            1332:   17(ivec4) Load 19(ballot)
+            1333:   22(float) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1331 1332
+            1334:     36(ptr) AccessChain 31(data) 1329 34 35
+                              Store 1334 1333
+            1335:      6(int) Load 8(invocation)
+            1336:     44(ptr) AccessChain 31(data) 63 34
             1337:   23(fvec4) Load 1336
-            1338:   23(fvec4) VectorShuffle 1337 1335 4 5 6 3
-                              Store 1336 1338
-            1339:      6(int) Load 8(invocation)
-            1340:     44(ptr) AccessChain 31(data) 115 34
-            1341:   23(fvec4) Load 1340
-            1342:   17(ivec4) Load 19(ballot)
-            1343:   23(fvec4) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1341 1342
-            1344:     44(ptr) AccessChain 31(data) 1339 34
-                              Store 1344 1343
+            1338:   43(fvec2) VectorShuffle 1337 1337 0 1
+            1339:   17(ivec4) Load 19(ballot)
+            1340:   43(fvec2) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1338 1339
+            1341:     36(ptr) AccessChain 31(data) 1335 34 35
+            1342:   22(float) CompositeExtract 1340 0
+                              Store 1341 1342
+            1343:     36(ptr) AccessChain 31(data) 1335 34 189
+            1344:   22(float) CompositeExtract 1340 1
+                              Store 1343 1344
             1345:      6(int) Load 8(invocation)
-            1346:     64(ptr) AccessChain 31(data) 34 63 35
-            1347:     24(int) Load 1346
-            1348:   17(ivec4) Load 19(ballot)
-            1349:     24(int) GroupNonUniformSMax 178 PartitionedInclusiveScanNV 1347 1348
-            1350:     64(ptr) AccessChain 31(data) 1345 63 35
-                              Store 1350 1349
-            1351:      6(int) Load 8(invocation)
-            1352:     71(ptr) AccessChain 31(data) 63 63
-            1353:   25(ivec4) Load 1352
-            1354:   70(ivec2) VectorShuffle 1353 1353 0 1
-            1355:   17(ivec4) Load 19(ballot)
-            1356:   70(ivec2) GroupNonUniformSMax 178 PartitionedInclusiveScanNV 1354 1355
-            1357:     71(ptr) AccessChain 31(data) 1351 63
-            1358:   25(ivec4) Load 1357
-            1359:   25(ivec4) VectorShuffle 1358 1356 4 5 2 3
-                              Store 1357 1359
-            1360:      6(int) Load 8(invocation)
-            1361:     71(ptr) AccessChain 31(data) 33 63
-            1362:   25(ivec4) Load 1361
-            1363:   78(ivec3) VectorShuffle 1362 1362 0 1 2
-            1364:   17(ivec4) Load 19(ballot)
-            1365:   78(ivec3) GroupNonUniformSMax 178 PartitionedInclusiveScanNV 1363 1364
-            1366:     71(ptr) AccessChain 31(data) 1360 63
-            1367:   25(ivec4) Load 1366
-            1368:   25(ivec4) VectorShuffle 1367 1365 4 5 6 3
-                              Store 1366 1368
+            1346:     44(ptr) AccessChain 31(data) 33 34
+            1347:   23(fvec4) Load 1346
+            1348:   51(fvec3) VectorShuffle 1347 1347 0 1 2
+            1349:   17(ivec4) Load 19(ballot)
+            1350:   51(fvec3) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1348 1349
+            1351:     36(ptr) AccessChain 31(data) 1345 34 35
+            1352:   22(float) CompositeExtract 1350 0
+                              Store 1351 1352
+            1353:     36(ptr) AccessChain 31(data) 1345 34 189
+            1354:   22(float) CompositeExtract 1350 1
+                              Store 1353 1354
+            1355:     36(ptr) AccessChain 31(data) 1345 34 202
+            1356:   22(float) CompositeExtract 1350 2
+                              Store 1355 1356
+            1357:      6(int) Load 8(invocation)
+            1358:     44(ptr) AccessChain 31(data) 115 34
+            1359:   23(fvec4) Load 1358
+            1360:   17(ivec4) Load 19(ballot)
+            1361:   23(fvec4) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1359 1360
+            1362:     44(ptr) AccessChain 31(data) 1357 34
+                              Store 1362 1361
+            1363:      6(int) Load 8(invocation)
+            1364:     64(ptr) AccessChain 31(data) 34 63 35
+            1365:     24(int) Load 1364
+            1366:   17(ivec4) Load 19(ballot)
+            1367:     24(int) GroupNonUniformSMin 178 PartitionedInclusiveScanNV 1365 1366
+            1368:     64(ptr) AccessChain 31(data) 1363 63 35
+                              Store 1368 1367
             1369:      6(int) Load 8(invocation)
-            1370:     71(ptr) AccessChain 31(data) 115 63
+            1370:     71(ptr) AccessChain 31(data) 63 63
             1371:   25(ivec4) Load 1370
-            1372:   17(ivec4) Load 19(ballot)
-            1373:   25(ivec4) GroupNonUniformSMax 178 PartitionedInclusiveScanNV 1371 1372
-            1374:     71(ptr) AccessChain 31(data) 1369 63
-                              Store 1374 1373
-            1375:      6(int) Load 8(invocation)
-            1376:     90(ptr) AccessChain 31(data) 34 33 35
-            1377:      6(int) Load 1376
-            1378:   17(ivec4) Load 19(ballot)
-            1379:      6(int) GroupNonUniformUMax 178 PartitionedInclusiveScanNV 1377 1378
-            1380:     90(ptr) AccessChain 31(data) 1375 33 35
-                              Store 1380 1379
-            1381:      6(int) Load 8(invocation)
-            1382:     40(ptr) AccessChain 31(data) 63 33
-            1383:   17(ivec4) Load 1382
-            1384:   96(ivec2) VectorShuffle 1383 1383 0 1
-            1385:   17(ivec4) Load 19(ballot)
-            1386:   96(ivec2) GroupNonUniformUMax 178 PartitionedInclusiveScanNV 1384 1385
-            1387:     40(ptr) AccessChain 31(data) 1381 33
-            1388:   17(ivec4) Load 1387
-            1389:   17(ivec4) VectorShuffle 1388 1386 4 5 2 3
-                              Store 1387 1389
-            1390:      6(int) Load 8(invocation)
-            1391:     40(ptr) AccessChain 31(data) 33 33
-            1392:   17(ivec4) Load 1391
-            1393:  103(ivec3) VectorShuffle 1392 1392 0 1 2
+            1372:   70(ivec2) VectorShuffle 1371 1371 0 1
+            1373:   17(ivec4) Load 19(ballot)
+            1374:   70(ivec2) GroupNonUniformSMin 178 PartitionedInclusiveScanNV 1372 1373
+            1375:     64(ptr) AccessChain 31(data) 1369 63 35
+            1376:     24(int) CompositeExtract 1374 0
+                              Store 1375 1376
+            1377:     64(ptr) AccessChain 31(data) 1369 63 189
+            1378:     24(int) CompositeExtract 1374 1
+                              Store 1377 1378
+            1379:      6(int) Load 8(invocation)
+            1380:     71(ptr) AccessChain 31(data) 33 63
+            1381:   25(ivec4) Load 1380
+            1382:   78(ivec3) VectorShuffle 1381 1381 0 1 2
+            1383:   17(ivec4) Load 19(ballot)
+            1384:   78(ivec3) GroupNonUniformSMin 178 PartitionedInclusiveScanNV 1382 1383
+            1385:     64(ptr) AccessChain 31(data) 1379 63 35
+            1386:     24(int) CompositeExtract 1384 0
+                              Store 1385 1386
+            1387:     64(ptr) AccessChain 31(data) 1379 63 189
+            1388:     24(int) CompositeExtract 1384 1
+                              Store 1387 1388
+            1389:     64(ptr) AccessChain 31(data) 1379 63 202
+            1390:     24(int) CompositeExtract 1384 2
+                              Store 1389 1390
+            1391:      6(int) Load 8(invocation)
+            1392:     71(ptr) AccessChain 31(data) 115 63
+            1393:   25(ivec4) Load 1392
             1394:   17(ivec4) Load 19(ballot)
-            1395:  103(ivec3) GroupNonUniformUMax 178 PartitionedInclusiveScanNV 1393 1394
-            1396:     40(ptr) AccessChain 31(data) 1390 33
-            1397:   17(ivec4) Load 1396
-            1398:   17(ivec4) VectorShuffle 1397 1395 4 5 6 3
-                              Store 1396 1398
-            1399:      6(int) Load 8(invocation)
-            1400:     40(ptr) AccessChain 31(data) 115 33
-            1401:   17(ivec4) Load 1400
-            1402:   17(ivec4) Load 19(ballot)
-            1403:   17(ivec4) GroupNonUniformUMax 178 PartitionedInclusiveScanNV 1401 1402
-            1404:     40(ptr) AccessChain 31(data) 1399 33
-                              Store 1404 1403
-            1405:      6(int) Load 8(invocation)
-            1406:    116(ptr) AccessChain 31(data) 34 115 35
-            1407:26(float64_t) Load 1406
-            1408:   17(ivec4) Load 19(ballot)
-            1409:26(float64_t) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1407 1408
-            1410:    116(ptr) AccessChain 31(data) 1405 115 35
-                              Store 1410 1409
-            1411:      6(int) Load 8(invocation)
-            1412:    123(ptr) AccessChain 31(data) 63 115
-            1413: 27(f64vec4) Load 1412
-            1414:122(f64vec2) VectorShuffle 1413 1413 0 1
-            1415:   17(ivec4) Load 19(ballot)
-            1416:122(f64vec2) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1414 1415
-            1417:    123(ptr) AccessChain 31(data) 1411 115
-            1418: 27(f64vec4) Load 1417
-            1419: 27(f64vec4) VectorShuffle 1418 1416 4 5 2 3
-                              Store 1417 1419
-            1420:      6(int) Load 8(invocation)
-            1421:    123(ptr) AccessChain 31(data) 33 115
-            1422: 27(f64vec4) Load 1421
-            1423:130(f64vec3) VectorShuffle 1422 1422 0 1 2
-            1424:   17(ivec4) Load 19(ballot)
-            1425:130(f64vec3) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1423 1424
-            1426:    123(ptr) AccessChain 31(data) 1420 115
-            1427: 27(f64vec4) Load 1426
-            1428: 27(f64vec4) VectorShuffle 1427 1425 4 5 6 3
-                              Store 1426 1428
-            1429:      6(int) Load 8(invocation)
-            1430:    123(ptr) AccessChain 31(data) 115 115
-            1431: 27(f64vec4) Load 1430
-            1432:   17(ivec4) Load 19(ballot)
-            1433: 27(f64vec4) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1431 1432
-            1434:    123(ptr) AccessChain 31(data) 1429 115
-                              Store 1434 1433
-            1435:      6(int) Load 8(invocation)
-            1436:     64(ptr) AccessChain 31(data) 34 63 35
-            1437:     24(int) Load 1436
-            1438:   17(ivec4) Load 19(ballot)
-            1439:     24(int) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1437 1438
-            1440:     64(ptr) AccessChain 31(data) 1435 63 35
-                              Store 1440 1439
-            1441:      6(int) Load 8(invocation)
-            1442:     71(ptr) AccessChain 31(data) 63 63
-            1443:   25(ivec4) Load 1442
-            1444:   70(ivec2) VectorShuffle 1443 1443 0 1
-            1445:   17(ivec4) Load 19(ballot)
-            1446:   70(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1444 1445
-            1447:     71(ptr) AccessChain 31(data) 1441 63
-            1448:   25(ivec4) Load 1447
-            1449:   25(ivec4) VectorShuffle 1448 1446 4 5 2 3
-                              Store 1447 1449
-            1450:      6(int) Load 8(invocation)
-            1451:     71(ptr) AccessChain 31(data) 33 63
-            1452:   25(ivec4) Load 1451
-            1453:   78(ivec3) VectorShuffle 1452 1452 0 1 2
-            1454:   17(ivec4) Load 19(ballot)
-            1455:   78(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1453 1454
-            1456:     71(ptr) AccessChain 31(data) 1450 63
-            1457:   25(ivec4) Load 1456
-            1458:   25(ivec4) VectorShuffle 1457 1455 4 5 6 3
-                              Store 1456 1458
+            1395:   25(ivec4) GroupNonUniformSMin 178 PartitionedInclusiveScanNV 1393 1394
+            1396:     71(ptr) AccessChain 31(data) 1391 63
+                              Store 1396 1395
+            1397:      6(int) Load 8(invocation)
+            1398:     90(ptr) AccessChain 31(data) 34 33 35
+            1399:      6(int) Load 1398
+            1400:   17(ivec4) Load 19(ballot)
+            1401:      6(int) GroupNonUniformUMin 178 PartitionedInclusiveScanNV 1399 1400
+            1402:     90(ptr) AccessChain 31(data) 1397 33 35
+                              Store 1402 1401
+            1403:      6(int) Load 8(invocation)
+            1404:     40(ptr) AccessChain 31(data) 63 33
+            1405:   17(ivec4) Load 1404
+            1406:   96(ivec2) VectorShuffle 1405 1405 0 1
+            1407:   17(ivec4) Load 19(ballot)
+            1408:   96(ivec2) GroupNonUniformUMin 178 PartitionedInclusiveScanNV 1406 1407
+            1409:     90(ptr) AccessChain 31(data) 1403 33 35
+            1410:      6(int) CompositeExtract 1408 0
+                              Store 1409 1410
+            1411:     90(ptr) AccessChain 31(data) 1403 33 189
+            1412:      6(int) CompositeExtract 1408 1
+                              Store 1411 1412
+            1413:      6(int) Load 8(invocation)
+            1414:     40(ptr) AccessChain 31(data) 33 33
+            1415:   17(ivec4) Load 1414
+            1416:  103(ivec3) VectorShuffle 1415 1415 0 1 2
+            1417:   17(ivec4) Load 19(ballot)
+            1418:  103(ivec3) GroupNonUniformUMin 178 PartitionedInclusiveScanNV 1416 1417
+            1419:     90(ptr) AccessChain 31(data) 1413 33 35
+            1420:      6(int) CompositeExtract 1418 0
+                              Store 1419 1420
+            1421:     90(ptr) AccessChain 31(data) 1413 33 189
+            1422:      6(int) CompositeExtract 1418 1
+                              Store 1421 1422
+            1423:     90(ptr) AccessChain 31(data) 1413 33 202
+            1424:      6(int) CompositeExtract 1418 2
+                              Store 1423 1424
+            1425:      6(int) Load 8(invocation)
+            1426:     40(ptr) AccessChain 31(data) 115 33
+            1427:   17(ivec4) Load 1426
+            1428:   17(ivec4) Load 19(ballot)
+            1429:   17(ivec4) GroupNonUniformUMin 178 PartitionedInclusiveScanNV 1427 1428
+            1430:     40(ptr) AccessChain 31(data) 1425 33
+                              Store 1430 1429
+            1431:      6(int) Load 8(invocation)
+            1432:    116(ptr) AccessChain 31(data) 34 115 35
+            1433:26(float64_t) Load 1432
+            1434:   17(ivec4) Load 19(ballot)
+            1435:26(float64_t) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1433 1434
+            1436:    116(ptr) AccessChain 31(data) 1431 115 35
+                              Store 1436 1435
+            1437:      6(int) Load 8(invocation)
+            1438:    123(ptr) AccessChain 31(data) 63 115
+            1439: 27(f64vec4) Load 1438
+            1440:122(f64vec2) VectorShuffle 1439 1439 0 1
+            1441:   17(ivec4) Load 19(ballot)
+            1442:122(f64vec2) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1440 1441
+            1443:    116(ptr) AccessChain 31(data) 1437 115 35
+            1444:26(float64_t) CompositeExtract 1442 0
+                              Store 1443 1444
+            1445:    116(ptr) AccessChain 31(data) 1437 115 189
+            1446:26(float64_t) CompositeExtract 1442 1
+                              Store 1445 1446
+            1447:      6(int) Load 8(invocation)
+            1448:    123(ptr) AccessChain 31(data) 33 115
+            1449: 27(f64vec4) Load 1448
+            1450:130(f64vec3) VectorShuffle 1449 1449 0 1 2
+            1451:   17(ivec4) Load 19(ballot)
+            1452:130(f64vec3) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1450 1451
+            1453:    116(ptr) AccessChain 31(data) 1447 115 35
+            1454:26(float64_t) CompositeExtract 1452 0
+                              Store 1453 1454
+            1455:    116(ptr) AccessChain 31(data) 1447 115 189
+            1456:26(float64_t) CompositeExtract 1452 1
+                              Store 1455 1456
+            1457:    116(ptr) AccessChain 31(data) 1447 115 202
+            1458:26(float64_t) CompositeExtract 1452 2
+                              Store 1457 1458
             1459:      6(int) Load 8(invocation)
-            1460:     71(ptr) AccessChain 31(data) 115 63
-            1461:   25(ivec4) Load 1460
+            1460:    123(ptr) AccessChain 31(data) 115 115
+            1461: 27(f64vec4) Load 1460
             1462:   17(ivec4) Load 19(ballot)
-            1463:   25(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1461 1462
-            1464:     71(ptr) AccessChain 31(data) 1459 63
+            1463: 27(f64vec4) GroupNonUniformFMin 178 PartitionedInclusiveScanNV 1461 1462
+            1464:    123(ptr) AccessChain 31(data) 1459 115
                               Store 1464 1463
             1465:      6(int) Load 8(invocation)
-            1466:     90(ptr) AccessChain 31(data) 34 33 35
-            1467:      6(int) Load 1466
+            1466:     36(ptr) AccessChain 31(data) 34 34 35
+            1467:   22(float) Load 1466
             1468:   17(ivec4) Load 19(ballot)
-            1469:      6(int) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1467 1468
-            1470:     90(ptr) AccessChain 31(data) 1465 33 35
+            1469:   22(float) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1467 1468
+            1470:     36(ptr) AccessChain 31(data) 1465 34 35
                               Store 1470 1469
             1471:      6(int) Load 8(invocation)
-            1472:     40(ptr) AccessChain 31(data) 63 33
-            1473:   17(ivec4) Load 1472
-            1474:   96(ivec2) VectorShuffle 1473 1473 0 1
+            1472:     44(ptr) AccessChain 31(data) 63 34
+            1473:   23(fvec4) Load 1472
+            1474:   43(fvec2) VectorShuffle 1473 1473 0 1
             1475:   17(ivec4) Load 19(ballot)
-            1476:   96(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1474 1475
-            1477:     40(ptr) AccessChain 31(data) 1471 33
-            1478:   17(ivec4) Load 1477
-            1479:   17(ivec4) VectorShuffle 1478 1476 4 5 2 3
-                              Store 1477 1479
-            1480:      6(int) Load 8(invocation)
-            1481:     40(ptr) AccessChain 31(data) 33 33
-            1482:   17(ivec4) Load 1481
-            1483:  103(ivec3) VectorShuffle 1482 1482 0 1 2
-            1484:   17(ivec4) Load 19(ballot)
-            1485:  103(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1483 1484
-            1486:     40(ptr) AccessChain 31(data) 1480 33
-            1487:   17(ivec4) Load 1486
-            1488:   17(ivec4) VectorShuffle 1487 1485 4 5 6 3
-                              Store 1486 1488
-            1489:      6(int) Load 8(invocation)
-            1490:     40(ptr) AccessChain 31(data) 115 33
-            1491:   17(ivec4) Load 1490
-            1492:   17(ivec4) Load 19(ballot)
-            1493:   17(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1491 1492
-            1494:     40(ptr) AccessChain 31(data) 1489 33
-                              Store 1494 1493
-            1495:      6(int) Load 8(invocation)
-            1496:     64(ptr) AccessChain 31(data) 34 63 35
-            1497:     24(int) Load 1496
-            1498:   144(bool) SLessThan 1497 34
-            1499:   17(ivec4) Load 19(ballot)
-            1500:   144(bool) GroupNonUniformLogicalAnd 178 PartitionedInclusiveScanNV 1498 1499
-            1501:     24(int) Select 1500 63 34
-            1502:     64(ptr) AccessChain 31(data) 1495 63 35
-                              Store 1502 1501
-            1503:      6(int) Load 8(invocation)
-            1504:     71(ptr) AccessChain 31(data) 63 63
-            1505:   25(ivec4) Load 1504
-            1506:   70(ivec2) VectorShuffle 1505 1505 0 1
-            1507:  152(bvec2) SLessThan 1506 727
-            1508:   17(ivec4) Load 19(ballot)
-            1509:  152(bvec2) GroupNonUniformLogicalAnd 178 PartitionedInclusiveScanNV 1507 1508
-            1510:   70(ivec2) Select 1509 731 727
-            1511:     71(ptr) AccessChain 31(data) 1503 63
-            1512:   25(ivec4) Load 1511
-            1513:   25(ivec4) VectorShuffle 1512 1510 4 5 2 3
-                              Store 1511 1513
-            1514:      6(int) Load 8(invocation)
-            1515:     71(ptr) AccessChain 31(data) 63 63
-            1516:   25(ivec4) Load 1515
-            1517:   78(ivec3) VectorShuffle 1516 1516 0 1 2
-            1518:  161(bvec3) SLessThan 1517 740
+            1476:   43(fvec2) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1474 1475
+            1477:     36(ptr) AccessChain 31(data) 1471 34 35
+            1478:   22(float) CompositeExtract 1476 0
+                              Store 1477 1478
+            1479:     36(ptr) AccessChain 31(data) 1471 34 189
+            1480:   22(float) CompositeExtract 1476 1
+                              Store 1479 1480
+            1481:      6(int) Load 8(invocation)
+            1482:     44(ptr) AccessChain 31(data) 33 34
+            1483:   23(fvec4) Load 1482
+            1484:   51(fvec3) VectorShuffle 1483 1483 0 1 2
+            1485:   17(ivec4) Load 19(ballot)
+            1486:   51(fvec3) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1484 1485
+            1487:     36(ptr) AccessChain 31(data) 1481 34 35
+            1488:   22(float) CompositeExtract 1486 0
+                              Store 1487 1488
+            1489:     36(ptr) AccessChain 31(data) 1481 34 189
+            1490:   22(float) CompositeExtract 1486 1
+                              Store 1489 1490
+            1491:     36(ptr) AccessChain 31(data) 1481 34 202
+            1492:   22(float) CompositeExtract 1486 2
+                              Store 1491 1492
+            1493:      6(int) Load 8(invocation)
+            1494:     44(ptr) AccessChain 31(data) 115 34
+            1495:   23(fvec4) Load 1494
+            1496:   17(ivec4) Load 19(ballot)
+            1497:   23(fvec4) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1495 1496
+            1498:     44(ptr) AccessChain 31(data) 1493 34
+                              Store 1498 1497
+            1499:      6(int) Load 8(invocation)
+            1500:     64(ptr) AccessChain 31(data) 34 63 35
+            1501:     24(int) Load 1500
+            1502:   17(ivec4) Load 19(ballot)
+            1503:     24(int) GroupNonUniformSMax 178 PartitionedInclusiveScanNV 1501 1502
+            1504:     64(ptr) AccessChain 31(data) 1499 63 35
+                              Store 1504 1503
+            1505:      6(int) Load 8(invocation)
+            1506:     71(ptr) AccessChain 31(data) 63 63
+            1507:   25(ivec4) Load 1506
+            1508:   70(ivec2) VectorShuffle 1507 1507 0 1
+            1509:   17(ivec4) Load 19(ballot)
+            1510:   70(ivec2) GroupNonUniformSMax 178 PartitionedInclusiveScanNV 1508 1509
+            1511:     64(ptr) AccessChain 31(data) 1505 63 35
+            1512:     24(int) CompositeExtract 1510 0
+                              Store 1511 1512
+            1513:     64(ptr) AccessChain 31(data) 1505 63 189
+            1514:     24(int) CompositeExtract 1510 1
+                              Store 1513 1514
+            1515:      6(int) Load 8(invocation)
+            1516:     71(ptr) AccessChain 31(data) 33 63
+            1517:   25(ivec4) Load 1516
+            1518:   78(ivec3) VectorShuffle 1517 1517 0 1 2
             1519:   17(ivec4) Load 19(ballot)
-            1520:  161(bvec3) GroupNonUniformLogicalAnd 178 PartitionedInclusiveScanNV 1518 1519
-            1521:   78(ivec3) Select 1520 744 740
-            1522:     71(ptr) AccessChain 31(data) 1514 63
-            1523:   25(ivec4) Load 1522
-            1524:   25(ivec4) VectorShuffle 1523 1521 4 5 6 3
-                              Store 1522 1524
-            1525:      6(int) Load 8(invocation)
-            1526:     71(ptr) AccessChain 31(data) 63 63
-            1527:   25(ivec4) Load 1526
-            1528:  169(bvec4) SLessThan 1527 752
-            1529:   17(ivec4) Load 19(ballot)
-            1530:  169(bvec4) GroupNonUniformLogicalAnd 178 PartitionedInclusiveScanNV 1528 1529
-            1531:   25(ivec4) Select 1530 756 752
-            1532:     71(ptr) AccessChain 31(data) 1525 63
+            1520:   78(ivec3) GroupNonUniformSMax 178 PartitionedInclusiveScanNV 1518 1519
+            1521:     64(ptr) AccessChain 31(data) 1515 63 35
+            1522:     24(int) CompositeExtract 1520 0
+                              Store 1521 1522
+            1523:     64(ptr) AccessChain 31(data) 1515 63 189
+            1524:     24(int) CompositeExtract 1520 1
+                              Store 1523 1524
+            1525:     64(ptr) AccessChain 31(data) 1515 63 202
+            1526:     24(int) CompositeExtract 1520 2
+                              Store 1525 1526
+            1527:      6(int) Load 8(invocation)
+            1528:     71(ptr) AccessChain 31(data) 115 63
+            1529:   25(ivec4) Load 1528
+            1530:   17(ivec4) Load 19(ballot)
+            1531:   25(ivec4) GroupNonUniformSMax 178 PartitionedInclusiveScanNV 1529 1530
+            1532:     71(ptr) AccessChain 31(data) 1527 63
                               Store 1532 1531
             1533:      6(int) Load 8(invocation)
-            1534:     64(ptr) AccessChain 31(data) 34 63 35
-            1535:     24(int) Load 1534
+            1534:     90(ptr) AccessChain 31(data) 34 33 35
+            1535:      6(int) Load 1534
             1536:   17(ivec4) Load 19(ballot)
-            1537:     24(int) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1535 1536
-            1538:     64(ptr) AccessChain 31(data) 1533 63 35
+            1537:      6(int) GroupNonUniformUMax 178 PartitionedInclusiveScanNV 1535 1536
+            1538:     90(ptr) AccessChain 31(data) 1533 33 35
                               Store 1538 1537
             1539:      6(int) Load 8(invocation)
-            1540:     71(ptr) AccessChain 31(data) 63 63
-            1541:   25(ivec4) Load 1540
-            1542:   70(ivec2) VectorShuffle 1541 1541 0 1
+            1540:     40(ptr) AccessChain 31(data) 63 33
+            1541:   17(ivec4) Load 1540
+            1542:   96(ivec2) VectorShuffle 1541 1541 0 1
             1543:   17(ivec4) Load 19(ballot)
-            1544:   70(ivec2) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1542 1543
-            1545:     71(ptr) AccessChain 31(data) 1539 63
-            1546:   25(ivec4) Load 1545
-            1547:   25(ivec4) VectorShuffle 1546 1544 4 5 2 3
-                              Store 1545 1547
-            1548:      6(int) Load 8(invocation)
-            1549:     71(ptr) AccessChain 31(data) 33 63
-            1550:   25(ivec4) Load 1549
-            1551:   78(ivec3) VectorShuffle 1550 1550 0 1 2
-            1552:   17(ivec4) Load 19(ballot)
-            1553:   78(ivec3) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1551 1552
-            1554:     71(ptr) AccessChain 31(data) 1548 63
-            1555:   25(ivec4) Load 1554
-            1556:   25(ivec4) VectorShuffle 1555 1553 4 5 6 3
-                              Store 1554 1556
-            1557:      6(int) Load 8(invocation)
-            1558:     71(ptr) AccessChain 31(data) 115 63
-            1559:   25(ivec4) Load 1558
-            1560:   17(ivec4) Load 19(ballot)
-            1561:   25(ivec4) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1559 1560
-            1562:     71(ptr) AccessChain 31(data) 1557 63
-                              Store 1562 1561
-            1563:      6(int) Load 8(invocation)
-            1564:     90(ptr) AccessChain 31(data) 34 33 35
-            1565:      6(int) Load 1564
-            1566:   17(ivec4) Load 19(ballot)
-            1567:      6(int) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1565 1566
-            1568:     90(ptr) AccessChain 31(data) 1563 33 35
-                              Store 1568 1567
-            1569:      6(int) Load 8(invocation)
-            1570:     40(ptr) AccessChain 31(data) 63 33
-            1571:   17(ivec4) Load 1570
-            1572:   96(ivec2) VectorShuffle 1571 1571 0 1
-            1573:   17(ivec4) Load 19(ballot)
-            1574:   96(ivec2) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1572 1573
-            1575:     40(ptr) AccessChain 31(data) 1569 33
-            1576:   17(ivec4) Load 1575
-            1577:   17(ivec4) VectorShuffle 1576 1574 4 5 2 3
-                              Store 1575 1577
-            1578:      6(int) Load 8(invocation)
-            1579:     40(ptr) AccessChain 31(data) 33 33
-            1580:   17(ivec4) Load 1579
-            1581:  103(ivec3) VectorShuffle 1580 1580 0 1 2
-            1582:   17(ivec4) Load 19(ballot)
-            1583:  103(ivec3) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1581 1582
-            1584:     40(ptr) AccessChain 31(data) 1578 33
-            1585:   17(ivec4) Load 1584
-            1586:   17(ivec4) VectorShuffle 1585 1583 4 5 6 3
-                              Store 1584 1586
-            1587:      6(int) Load 8(invocation)
-            1588:     40(ptr) AccessChain 31(data) 115 33
-            1589:   17(ivec4) Load 1588
-            1590:   17(ivec4) Load 19(ballot)
-            1591:   17(ivec4) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1589 1590
-            1592:     40(ptr) AccessChain 31(data) 1587 33
-                              Store 1592 1591
-            1593:      6(int) Load 8(invocation)
-            1594:     64(ptr) AccessChain 31(data) 34 63 35
-            1595:     24(int) Load 1594
-            1596:   144(bool) SLessThan 1595 34
-            1597:   17(ivec4) Load 19(ballot)
-            1598:   144(bool) GroupNonUniformLogicalOr 178 PartitionedInclusiveScanNV 1596 1597
-            1599:     24(int) Select 1598 63 34
-            1600:     64(ptr) AccessChain 31(data) 1593 63 35
+            1544:   96(ivec2) GroupNonUniformUMax 178 PartitionedInclusiveScanNV 1542 1543
+            1545:     90(ptr) AccessChain 31(data) 1539 33 35
+            1546:      6(int) CompositeExtract 1544 0
+                              Store 1545 1546
+            1547:     90(ptr) AccessChain 31(data) 1539 33 189
+            1548:      6(int) CompositeExtract 1544 1
+                              Store 1547 1548
+            1549:      6(int) Load 8(invocation)
+            1550:     40(ptr) AccessChain 31(data) 33 33
+            1551:   17(ivec4) Load 1550
+            1552:  103(ivec3) VectorShuffle 1551 1551 0 1 2
+            1553:   17(ivec4) Load 19(ballot)
+            1554:  103(ivec3) GroupNonUniformUMax 178 PartitionedInclusiveScanNV 1552 1553
+            1555:     90(ptr) AccessChain 31(data) 1549 33 35
+            1556:      6(int) CompositeExtract 1554 0
+                              Store 1555 1556
+            1557:     90(ptr) AccessChain 31(data) 1549 33 189
+            1558:      6(int) CompositeExtract 1554 1
+                              Store 1557 1558
+            1559:     90(ptr) AccessChain 31(data) 1549 33 202
+            1560:      6(int) CompositeExtract 1554 2
+                              Store 1559 1560
+            1561:      6(int) Load 8(invocation)
+            1562:     40(ptr) AccessChain 31(data) 115 33
+            1563:   17(ivec4) Load 1562
+            1564:   17(ivec4) Load 19(ballot)
+            1565:   17(ivec4) GroupNonUniformUMax 178 PartitionedInclusiveScanNV 1563 1564
+            1566:     40(ptr) AccessChain 31(data) 1561 33
+                              Store 1566 1565
+            1567:      6(int) Load 8(invocation)
+            1568:    116(ptr) AccessChain 31(data) 34 115 35
+            1569:26(float64_t) Load 1568
+            1570:   17(ivec4) Load 19(ballot)
+            1571:26(float64_t) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1569 1570
+            1572:    116(ptr) AccessChain 31(data) 1567 115 35
+                              Store 1572 1571
+            1573:      6(int) Load 8(invocation)
+            1574:    123(ptr) AccessChain 31(data) 63 115
+            1575: 27(f64vec4) Load 1574
+            1576:122(f64vec2) VectorShuffle 1575 1575 0 1
+            1577:   17(ivec4) Load 19(ballot)
+            1578:122(f64vec2) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1576 1577
+            1579:    116(ptr) AccessChain 31(data) 1573 115 35
+            1580:26(float64_t) CompositeExtract 1578 0
+                              Store 1579 1580
+            1581:    116(ptr) AccessChain 31(data) 1573 115 189
+            1582:26(float64_t) CompositeExtract 1578 1
+                              Store 1581 1582
+            1583:      6(int) Load 8(invocation)
+            1584:    123(ptr) AccessChain 31(data) 33 115
+            1585: 27(f64vec4) Load 1584
+            1586:130(f64vec3) VectorShuffle 1585 1585 0 1 2
+            1587:   17(ivec4) Load 19(ballot)
+            1588:130(f64vec3) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1586 1587
+            1589:    116(ptr) AccessChain 31(data) 1583 115 35
+            1590:26(float64_t) CompositeExtract 1588 0
+                              Store 1589 1590
+            1591:    116(ptr) AccessChain 31(data) 1583 115 189
+            1592:26(float64_t) CompositeExtract 1588 1
+                              Store 1591 1592
+            1593:    116(ptr) AccessChain 31(data) 1583 115 202
+            1594:26(float64_t) CompositeExtract 1588 2
+                              Store 1593 1594
+            1595:      6(int) Load 8(invocation)
+            1596:    123(ptr) AccessChain 31(data) 115 115
+            1597: 27(f64vec4) Load 1596
+            1598:   17(ivec4) Load 19(ballot)
+            1599: 27(f64vec4) GroupNonUniformFMax 178 PartitionedInclusiveScanNV 1597 1598
+            1600:    123(ptr) AccessChain 31(data) 1595 115
                               Store 1600 1599
             1601:      6(int) Load 8(invocation)
-            1602:     71(ptr) AccessChain 31(data) 63 63
-            1603:   25(ivec4) Load 1602
-            1604:   70(ivec2) VectorShuffle 1603 1603 0 1
-            1605:  152(bvec2) SLessThan 1604 727
-            1606:   17(ivec4) Load 19(ballot)
-            1607:  152(bvec2) GroupNonUniformLogicalOr 178 PartitionedInclusiveScanNV 1605 1606
-            1608:   70(ivec2) Select 1607 731 727
-            1609:     71(ptr) AccessChain 31(data) 1601 63
-            1610:   25(ivec4) Load 1609
-            1611:   25(ivec4) VectorShuffle 1610 1608 4 5 2 3
-                              Store 1609 1611
-            1612:      6(int) Load 8(invocation)
-            1613:     71(ptr) AccessChain 31(data) 63 63
-            1614:   25(ivec4) Load 1613
-            1615:   78(ivec3) VectorShuffle 1614 1614 0 1 2
-            1616:  161(bvec3) SLessThan 1615 740
-            1617:   17(ivec4) Load 19(ballot)
-            1618:  161(bvec3) GroupNonUniformLogicalOr 178 PartitionedInclusiveScanNV 1616 1617
-            1619:   78(ivec3) Select 1618 744 740
-            1620:     71(ptr) AccessChain 31(data) 1612 63
-            1621:   25(ivec4) Load 1620
-            1622:   25(ivec4) VectorShuffle 1621 1619 4 5 6 3
-                              Store 1620 1622
-            1623:      6(int) Load 8(invocation)
-            1624:     71(ptr) AccessChain 31(data) 63 63
-            1625:   25(ivec4) Load 1624
-            1626:  169(bvec4) SLessThan 1625 752
-            1627:   17(ivec4) Load 19(ballot)
-            1628:  169(bvec4) GroupNonUniformLogicalOr 178 PartitionedInclusiveScanNV 1626 1627
-            1629:   25(ivec4) Select 1628 756 752
-            1630:     71(ptr) AccessChain 31(data) 1623 63
-                              Store 1630 1629
-            1631:      6(int) Load 8(invocation)
-            1632:     64(ptr) AccessChain 31(data) 34 63 35
-            1633:     24(int) Load 1632
-            1634:   17(ivec4) Load 19(ballot)
-            1635:     24(int) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1633 1634
-            1636:     64(ptr) AccessChain 31(data) 1631 63 35
-                              Store 1636 1635
-            1637:      6(int) Load 8(invocation)
-            1638:     71(ptr) AccessChain 31(data) 63 63
-            1639:   25(ivec4) Load 1638
-            1640:   70(ivec2) VectorShuffle 1639 1639 0 1
-            1641:   17(ivec4) Load 19(ballot)
-            1642:   70(ivec2) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1640 1641
-            1643:     71(ptr) AccessChain 31(data) 1637 63
-            1644:   25(ivec4) Load 1643
-            1645:   25(ivec4) VectorShuffle 1644 1642 4 5 2 3
-                              Store 1643 1645
-            1646:      6(int) Load 8(invocation)
-            1647:     71(ptr) AccessChain 31(data) 33 63
-            1648:   25(ivec4) Load 1647
-            1649:   78(ivec3) VectorShuffle 1648 1648 0 1 2
-            1650:   17(ivec4) Load 19(ballot)
-            1651:   78(ivec3) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1649 1650
-            1652:     71(ptr) AccessChain 31(data) 1646 63
-            1653:   25(ivec4) Load 1652
-            1654:   25(ivec4) VectorShuffle 1653 1651 4 5 6 3
-                              Store 1652 1654
-            1655:      6(int) Load 8(invocation)
-            1656:     71(ptr) AccessChain 31(data) 115 63
-            1657:   25(ivec4) Load 1656
-            1658:   17(ivec4) Load 19(ballot)
-            1659:   25(ivec4) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1657 1658
-            1660:     71(ptr) AccessChain 31(data) 1655 63
-                              Store 1660 1659
-            1661:      6(int) Load 8(invocation)
-            1662:     90(ptr) AccessChain 31(data) 34 33 35
-            1663:      6(int) Load 1662
-            1664:   17(ivec4) Load 19(ballot)
-            1665:      6(int) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1663 1664
-            1666:     90(ptr) AccessChain 31(data) 1661 33 35
-                              Store 1666 1665
-            1667:      6(int) Load 8(invocation)
-            1668:     40(ptr) AccessChain 31(data) 63 33
-            1669:   17(ivec4) Load 1668
-            1670:   96(ivec2) VectorShuffle 1669 1669 0 1
-            1671:   17(ivec4) Load 19(ballot)
-            1672:   96(ivec2) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1670 1671
-            1673:     40(ptr) AccessChain 31(data) 1667 33
-            1674:   17(ivec4) Load 1673
-            1675:   17(ivec4) VectorShuffle 1674 1672 4 5 2 3
-                              Store 1673 1675
-            1676:      6(int) Load 8(invocation)
-            1677:     40(ptr) AccessChain 31(data) 33 33
-            1678:   17(ivec4) Load 1677
-            1679:  103(ivec3) VectorShuffle 1678 1678 0 1 2
-            1680:   17(ivec4) Load 19(ballot)
-            1681:  103(ivec3) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1679 1680
-            1682:     40(ptr) AccessChain 31(data) 1676 33
-            1683:   17(ivec4) Load 1682
-            1684:   17(ivec4) VectorShuffle 1683 1681 4 5 6 3
-                              Store 1682 1684
-            1685:      6(int) Load 8(invocation)
-            1686:     40(ptr) AccessChain 31(data) 115 33
-            1687:   17(ivec4) Load 1686
-            1688:   17(ivec4) Load 19(ballot)
-            1689:   17(ivec4) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1687 1688
-            1690:     40(ptr) AccessChain 31(data) 1685 33
-                              Store 1690 1689
-            1691:      6(int) Load 8(invocation)
-            1692:     64(ptr) AccessChain 31(data) 34 63 35
-            1693:     24(int) Load 1692
-            1694:   144(bool) SLessThan 1693 34
-            1695:   17(ivec4) Load 19(ballot)
-            1696:   144(bool) GroupNonUniformLogicalXor 178 PartitionedInclusiveScanNV 1694 1695
-            1697:     24(int) Select 1696 63 34
-            1698:     64(ptr) AccessChain 31(data) 1691 63 35
-                              Store 1698 1697
-            1699:      6(int) Load 8(invocation)
-            1700:     71(ptr) AccessChain 31(data) 63 63
-            1701:   25(ivec4) Load 1700
-            1702:   70(ivec2) VectorShuffle 1701 1701 0 1
-            1703:  152(bvec2) SLessThan 1702 727
-            1704:   17(ivec4) Load 19(ballot)
-            1705:  152(bvec2) GroupNonUniformLogicalXor 178 PartitionedInclusiveScanNV 1703 1704
-            1706:   70(ivec2) Select 1705 731 727
-            1707:     71(ptr) AccessChain 31(data) 1699 63
-            1708:   25(ivec4) Load 1707
-            1709:   25(ivec4) VectorShuffle 1708 1706 4 5 2 3
-                              Store 1707 1709
-            1710:      6(int) Load 8(invocation)
-            1711:     71(ptr) AccessChain 31(data) 63 63
-            1712:   25(ivec4) Load 1711
-            1713:   78(ivec3) VectorShuffle 1712 1712 0 1 2
-            1714:  161(bvec3) SLessThan 1713 740
-            1715:   17(ivec4) Load 19(ballot)
-            1716:  161(bvec3) GroupNonUniformLogicalXor 178 PartitionedInclusiveScanNV 1714 1715
-            1717:   78(ivec3) Select 1716 744 740
-            1718:     71(ptr) AccessChain 31(data) 1710 63
+            1602:     64(ptr) AccessChain 31(data) 34 63 35
+            1603:     24(int) Load 1602
+            1604:   17(ivec4) Load 19(ballot)
+            1605:     24(int) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1603 1604
+            1606:     64(ptr) AccessChain 31(data) 1601 63 35
+                              Store 1606 1605
+            1607:      6(int) Load 8(invocation)
+            1608:     71(ptr) AccessChain 31(data) 63 63
+            1609:   25(ivec4) Load 1608
+            1610:   70(ivec2) VectorShuffle 1609 1609 0 1
+            1611:   17(ivec4) Load 19(ballot)
+            1612:   70(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1610 1611
+            1613:     64(ptr) AccessChain 31(data) 1607 63 35
+            1614:     24(int) CompositeExtract 1612 0
+                              Store 1613 1614
+            1615:     64(ptr) AccessChain 31(data) 1607 63 189
+            1616:     24(int) CompositeExtract 1612 1
+                              Store 1615 1616
+            1617:      6(int) Load 8(invocation)
+            1618:     71(ptr) AccessChain 31(data) 33 63
+            1619:   25(ivec4) Load 1618
+            1620:   78(ivec3) VectorShuffle 1619 1619 0 1 2
+            1621:   17(ivec4) Load 19(ballot)
+            1622:   78(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1620 1621
+            1623:     64(ptr) AccessChain 31(data) 1617 63 35
+            1624:     24(int) CompositeExtract 1622 0
+                              Store 1623 1624
+            1625:     64(ptr) AccessChain 31(data) 1617 63 189
+            1626:     24(int) CompositeExtract 1622 1
+                              Store 1625 1626
+            1627:     64(ptr) AccessChain 31(data) 1617 63 202
+            1628:     24(int) CompositeExtract 1622 2
+                              Store 1627 1628
+            1629:      6(int) Load 8(invocation)
+            1630:     71(ptr) AccessChain 31(data) 115 63
+            1631:   25(ivec4) Load 1630
+            1632:   17(ivec4) Load 19(ballot)
+            1633:   25(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1631 1632
+            1634:     71(ptr) AccessChain 31(data) 1629 63
+                              Store 1634 1633
+            1635:      6(int) Load 8(invocation)
+            1636:     90(ptr) AccessChain 31(data) 34 33 35
+            1637:      6(int) Load 1636
+            1638:   17(ivec4) Load 19(ballot)
+            1639:      6(int) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1637 1638
+            1640:     90(ptr) AccessChain 31(data) 1635 33 35
+                              Store 1640 1639
+            1641:      6(int) Load 8(invocation)
+            1642:     40(ptr) AccessChain 31(data) 63 33
+            1643:   17(ivec4) Load 1642
+            1644:   96(ivec2) VectorShuffle 1643 1643 0 1
+            1645:   17(ivec4) Load 19(ballot)
+            1646:   96(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1644 1645
+            1647:     90(ptr) AccessChain 31(data) 1641 33 35
+            1648:      6(int) CompositeExtract 1646 0
+                              Store 1647 1648
+            1649:     90(ptr) AccessChain 31(data) 1641 33 189
+            1650:      6(int) CompositeExtract 1646 1
+                              Store 1649 1650
+            1651:      6(int) Load 8(invocation)
+            1652:     40(ptr) AccessChain 31(data) 33 33
+            1653:   17(ivec4) Load 1652
+            1654:  103(ivec3) VectorShuffle 1653 1653 0 1 2
+            1655:   17(ivec4) Load 19(ballot)
+            1656:  103(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1654 1655
+            1657:     90(ptr) AccessChain 31(data) 1651 33 35
+            1658:      6(int) CompositeExtract 1656 0
+                              Store 1657 1658
+            1659:     90(ptr) AccessChain 31(data) 1651 33 189
+            1660:      6(int) CompositeExtract 1656 1
+                              Store 1659 1660
+            1661:     90(ptr) AccessChain 31(data) 1651 33 202
+            1662:      6(int) CompositeExtract 1656 2
+                              Store 1661 1662
+            1663:      6(int) Load 8(invocation)
+            1664:     40(ptr) AccessChain 31(data) 115 33
+            1665:   17(ivec4) Load 1664
+            1666:   17(ivec4) Load 19(ballot)
+            1667:   17(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedInclusiveScanNV 1665 1666
+            1668:     40(ptr) AccessChain 31(data) 1663 33
+                              Store 1668 1667
+            1669:      6(int) Load 8(invocation)
+            1670:     64(ptr) AccessChain 31(data) 34 63 35
+            1671:     24(int) Load 1670
+            1672:   144(bool) SLessThan 1671 34
+            1673:   17(ivec4) Load 19(ballot)
+            1674:   144(bool) GroupNonUniformLogicalAnd 178 PartitionedInclusiveScanNV 1672 1673
+            1675:     24(int) Select 1674 63 34
+            1676:     64(ptr) AccessChain 31(data) 1669 63 35
+                              Store 1676 1675
+            1677:      6(int) Load 8(invocation)
+            1678:     71(ptr) AccessChain 31(data) 63 63
+            1679:   25(ivec4) Load 1678
+            1680:   70(ivec2) VectorShuffle 1679 1679 0 1
+            1681:  152(bvec2) SLessThan 1680 801
+            1682:   17(ivec4) Load 19(ballot)
+            1683:  152(bvec2) GroupNonUniformLogicalAnd 178 PartitionedInclusiveScanNV 1681 1682
+            1684:   70(ivec2) Select 1683 805 801
+            1685:     64(ptr) AccessChain 31(data) 1677 63 35
+            1686:     24(int) CompositeExtract 1684 0
+                              Store 1685 1686
+            1687:     64(ptr) AccessChain 31(data) 1677 63 189
+            1688:     24(int) CompositeExtract 1684 1
+                              Store 1687 1688
+            1689:      6(int) Load 8(invocation)
+            1690:     71(ptr) AccessChain 31(data) 63 63
+            1691:   25(ivec4) Load 1690
+            1692:   78(ivec3) VectorShuffle 1691 1691 0 1 2
+            1693:  161(bvec3) SLessThan 1692 815
+            1694:   17(ivec4) Load 19(ballot)
+            1695:  161(bvec3) GroupNonUniformLogicalAnd 178 PartitionedInclusiveScanNV 1693 1694
+            1696:   78(ivec3) Select 1695 819 815
+            1697:     64(ptr) AccessChain 31(data) 1689 63 35
+            1698:     24(int) CompositeExtract 1696 0
+                              Store 1697 1698
+            1699:     64(ptr) AccessChain 31(data) 1689 63 189
+            1700:     24(int) CompositeExtract 1696 1
+                              Store 1699 1700
+            1701:     64(ptr) AccessChain 31(data) 1689 63 202
+            1702:     24(int) CompositeExtract 1696 2
+                              Store 1701 1702
+            1703:      6(int) Load 8(invocation)
+            1704:     71(ptr) AccessChain 31(data) 63 63
+            1705:   25(ivec4) Load 1704
+            1706:  169(bvec4) SLessThan 1705 830
+            1707:   17(ivec4) Load 19(ballot)
+            1708:  169(bvec4) GroupNonUniformLogicalAnd 178 PartitionedInclusiveScanNV 1706 1707
+            1709:   25(ivec4) Select 1708 834 830
+            1710:     71(ptr) AccessChain 31(data) 1703 63
+                              Store 1710 1709
+            1711:      6(int) Load 8(invocation)
+            1712:     64(ptr) AccessChain 31(data) 34 63 35
+            1713:     24(int) Load 1712
+            1714:   17(ivec4) Load 19(ballot)
+            1715:     24(int) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1713 1714
+            1716:     64(ptr) AccessChain 31(data) 1711 63 35
+                              Store 1716 1715
+            1717:      6(int) Load 8(invocation)
+            1718:     71(ptr) AccessChain 31(data) 63 63
             1719:   25(ivec4) Load 1718
-            1720:   25(ivec4) VectorShuffle 1719 1717 4 5 6 3
-                              Store 1718 1720
-            1721:      6(int) Load 8(invocation)
-            1722:     71(ptr) AccessChain 31(data) 63 63
-            1723:   25(ivec4) Load 1722
-            1724:  169(bvec4) SLessThan 1723 752
-            1725:   17(ivec4) Load 19(ballot)
-            1726:  169(bvec4) GroupNonUniformLogicalXor 178 PartitionedInclusiveScanNV 1724 1725
-            1727:   25(ivec4) Select 1726 756 752
-            1728:     71(ptr) AccessChain 31(data) 1721 63
-                              Store 1728 1727
-            1729:      6(int) Load 8(invocation)
-            1730:     36(ptr) AccessChain 31(data) 34 34 35
-            1731:   22(float) Load 1730
-            1732:   17(ivec4) Load 19(ballot)
-            1733:   22(float) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1731 1732
-            1734:     36(ptr) AccessChain 31(data) 1729 34 35
-                              Store 1734 1733
-            1735:      6(int) Load 8(invocation)
-            1736:     44(ptr) AccessChain 31(data) 63 34
-            1737:   23(fvec4) Load 1736
-            1738:   43(fvec2) VectorShuffle 1737 1737 0 1
-            1739:   17(ivec4) Load 19(ballot)
-            1740:   43(fvec2) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1738 1739
-            1741:     44(ptr) AccessChain 31(data) 1735 34
-            1742:   23(fvec4) Load 1741
-            1743:   23(fvec4) VectorShuffle 1742 1740 4 5 2 3
-                              Store 1741 1743
-            1744:      6(int) Load 8(invocation)
-            1745:     44(ptr) AccessChain 31(data) 33 34
-            1746:   23(fvec4) Load 1745
-            1747:   51(fvec3) VectorShuffle 1746 1746 0 1 2
+            1720:   70(ivec2) VectorShuffle 1719 1719 0 1
+            1721:   17(ivec4) Load 19(ballot)
+            1722:   70(ivec2) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1720 1721
+            1723:     64(ptr) AccessChain 31(data) 1717 63 35
+            1724:     24(int) CompositeExtract 1722 0
+                              Store 1723 1724
+            1725:     64(ptr) AccessChain 31(data) 1717 63 189
+            1726:     24(int) CompositeExtract 1722 1
+                              Store 1725 1726
+            1727:      6(int) Load 8(invocation)
+            1728:     71(ptr) AccessChain 31(data) 33 63
+            1729:   25(ivec4) Load 1728
+            1730:   78(ivec3) VectorShuffle 1729 1729 0 1 2
+            1731:   17(ivec4) Load 19(ballot)
+            1732:   78(ivec3) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1730 1731
+            1733:     64(ptr) AccessChain 31(data) 1727 63 35
+            1734:     24(int) CompositeExtract 1732 0
+                              Store 1733 1734
+            1735:     64(ptr) AccessChain 31(data) 1727 63 189
+            1736:     24(int) CompositeExtract 1732 1
+                              Store 1735 1736
+            1737:     64(ptr) AccessChain 31(data) 1727 63 202
+            1738:     24(int) CompositeExtract 1732 2
+                              Store 1737 1738
+            1739:      6(int) Load 8(invocation)
+            1740:     71(ptr) AccessChain 31(data) 115 63
+            1741:   25(ivec4) Load 1740
+            1742:   17(ivec4) Load 19(ballot)
+            1743:   25(ivec4) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1741 1742
+            1744:     71(ptr) AccessChain 31(data) 1739 63
+                              Store 1744 1743
+            1745:      6(int) Load 8(invocation)
+            1746:     90(ptr) AccessChain 31(data) 34 33 35
+            1747:      6(int) Load 1746
             1748:   17(ivec4) Load 19(ballot)
-            1749:   51(fvec3) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1747 1748
-            1750:     44(ptr) AccessChain 31(data) 1744 34
-            1751:   23(fvec4) Load 1750
-            1752:   23(fvec4) VectorShuffle 1751 1749 4 5 6 3
-                              Store 1750 1752
-            1753:      6(int) Load 8(invocation)
-            1754:     44(ptr) AccessChain 31(data) 115 34
-            1755:   23(fvec4) Load 1754
-            1756:   17(ivec4) Load 19(ballot)
-            1757:   23(fvec4) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1755 1756
-            1758:     44(ptr) AccessChain 31(data) 1753 34
-                              Store 1758 1757
-            1759:      6(int) Load 8(invocation)
-            1760:     64(ptr) AccessChain 31(data) 34 63 35
-            1761:     24(int) Load 1760
-            1762:   17(ivec4) Load 19(ballot)
-            1763:     24(int) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1761 1762
-            1764:     64(ptr) AccessChain 31(data) 1759 63 35
-                              Store 1764 1763
-            1765:      6(int) Load 8(invocation)
-            1766:     71(ptr) AccessChain 31(data) 63 63
-            1767:   25(ivec4) Load 1766
-            1768:   70(ivec2) VectorShuffle 1767 1767 0 1
-            1769:   17(ivec4) Load 19(ballot)
-            1770:   70(ivec2) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1768 1769
-            1771:     71(ptr) AccessChain 31(data) 1765 63
-            1772:   25(ivec4) Load 1771
-            1773:   25(ivec4) VectorShuffle 1772 1770 4 5 2 3
-                              Store 1771 1773
-            1774:      6(int) Load 8(invocation)
-            1775:     71(ptr) AccessChain 31(data) 33 63
-            1776:   25(ivec4) Load 1775
-            1777:   78(ivec3) VectorShuffle 1776 1776 0 1 2
-            1778:   17(ivec4) Load 19(ballot)
-            1779:   78(ivec3) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1777 1778
-            1780:     71(ptr) AccessChain 31(data) 1774 63
-            1781:   25(ivec4) Load 1780
-            1782:   25(ivec4) VectorShuffle 1781 1779 4 5 6 3
-                              Store 1780 1782
-            1783:      6(int) Load 8(invocation)
-            1784:     71(ptr) AccessChain 31(data) 115 63
-            1785:   25(ivec4) Load 1784
-            1786:   17(ivec4) Load 19(ballot)
-            1787:   25(ivec4) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1785 1786
-            1788:     71(ptr) AccessChain 31(data) 1783 63
-                              Store 1788 1787
-            1789:      6(int) Load 8(invocation)
-            1790:     90(ptr) AccessChain 31(data) 34 33 35
-            1791:      6(int) Load 1790
+            1749:      6(int) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1747 1748
+            1750:     90(ptr) AccessChain 31(data) 1745 33 35
+                              Store 1750 1749
+            1751:      6(int) Load 8(invocation)
+            1752:     40(ptr) AccessChain 31(data) 63 33
+            1753:   17(ivec4) Load 1752
+            1754:   96(ivec2) VectorShuffle 1753 1753 0 1
+            1755:   17(ivec4) Load 19(ballot)
+            1756:   96(ivec2) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1754 1755
+            1757:     90(ptr) AccessChain 31(data) 1751 33 35
+            1758:      6(int) CompositeExtract 1756 0
+                              Store 1757 1758
+            1759:     90(ptr) AccessChain 31(data) 1751 33 189
+            1760:      6(int) CompositeExtract 1756 1
+                              Store 1759 1760
+            1761:      6(int) Load 8(invocation)
+            1762:     40(ptr) AccessChain 31(data) 33 33
+            1763:   17(ivec4) Load 1762
+            1764:  103(ivec3) VectorShuffle 1763 1763 0 1 2
+            1765:   17(ivec4) Load 19(ballot)
+            1766:  103(ivec3) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1764 1765
+            1767:     90(ptr) AccessChain 31(data) 1761 33 35
+            1768:      6(int) CompositeExtract 1766 0
+                              Store 1767 1768
+            1769:     90(ptr) AccessChain 31(data) 1761 33 189
+            1770:      6(int) CompositeExtract 1766 1
+                              Store 1769 1770
+            1771:     90(ptr) AccessChain 31(data) 1761 33 202
+            1772:      6(int) CompositeExtract 1766 2
+                              Store 1771 1772
+            1773:      6(int) Load 8(invocation)
+            1774:     40(ptr) AccessChain 31(data) 115 33
+            1775:   17(ivec4) Load 1774
+            1776:   17(ivec4) Load 19(ballot)
+            1777:   17(ivec4) GroupNonUniformBitwiseOr 178 PartitionedInclusiveScanNV 1775 1776
+            1778:     40(ptr) AccessChain 31(data) 1773 33
+                              Store 1778 1777
+            1779:      6(int) Load 8(invocation)
+            1780:     64(ptr) AccessChain 31(data) 34 63 35
+            1781:     24(int) Load 1780
+            1782:   144(bool) SLessThan 1781 34
+            1783:   17(ivec4) Load 19(ballot)
+            1784:   144(bool) GroupNonUniformLogicalOr 178 PartitionedInclusiveScanNV 1782 1783
+            1785:     24(int) Select 1784 63 34
+            1786:     64(ptr) AccessChain 31(data) 1779 63 35
+                              Store 1786 1785
+            1787:      6(int) Load 8(invocation)
+            1788:     71(ptr) AccessChain 31(data) 63 63
+            1789:   25(ivec4) Load 1788
+            1790:   70(ivec2) VectorShuffle 1789 1789 0 1
+            1791:  152(bvec2) SLessThan 1790 801
             1792:   17(ivec4) Load 19(ballot)
-            1793:      6(int) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1791 1792
-            1794:     90(ptr) AccessChain 31(data) 1789 33 35
-                              Store 1794 1793
-            1795:      6(int) Load 8(invocation)
-            1796:     40(ptr) AccessChain 31(data) 63 33
-            1797:   17(ivec4) Load 1796
-            1798:   96(ivec2) VectorShuffle 1797 1797 0 1
-            1799:   17(ivec4) Load 19(ballot)
-            1800:   96(ivec2) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1798 1799
-            1801:     40(ptr) AccessChain 31(data) 1795 33
-            1802:   17(ivec4) Load 1801
-            1803:   17(ivec4) VectorShuffle 1802 1800 4 5 2 3
-                              Store 1801 1803
-            1804:      6(int) Load 8(invocation)
-            1805:     40(ptr) AccessChain 31(data) 33 33
-            1806:   17(ivec4) Load 1805
-            1807:  103(ivec3) VectorShuffle 1806 1806 0 1 2
-            1808:   17(ivec4) Load 19(ballot)
-            1809:  103(ivec3) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1807 1808
-            1810:     40(ptr) AccessChain 31(data) 1804 33
-            1811:   17(ivec4) Load 1810
-            1812:   17(ivec4) VectorShuffle 1811 1809 4 5 6 3
-                              Store 1810 1812
+            1793:  152(bvec2) GroupNonUniformLogicalOr 178 PartitionedInclusiveScanNV 1791 1792
+            1794:   70(ivec2) Select 1793 805 801
+            1795:     64(ptr) AccessChain 31(data) 1787 63 35
+            1796:     24(int) CompositeExtract 1794 0
+                              Store 1795 1796
+            1797:     64(ptr) AccessChain 31(data) 1787 63 189
+            1798:     24(int) CompositeExtract 1794 1
+                              Store 1797 1798
+            1799:      6(int) Load 8(invocation)
+            1800:     71(ptr) AccessChain 31(data) 63 63
+            1801:   25(ivec4) Load 1800
+            1802:   78(ivec3) VectorShuffle 1801 1801 0 1 2
+            1803:  161(bvec3) SLessThan 1802 815
+            1804:   17(ivec4) Load 19(ballot)
+            1805:  161(bvec3) GroupNonUniformLogicalOr 178 PartitionedInclusiveScanNV 1803 1804
+            1806:   78(ivec3) Select 1805 819 815
+            1807:     64(ptr) AccessChain 31(data) 1799 63 35
+            1808:     24(int) CompositeExtract 1806 0
+                              Store 1807 1808
+            1809:     64(ptr) AccessChain 31(data) 1799 63 189
+            1810:     24(int) CompositeExtract 1806 1
+                              Store 1809 1810
+            1811:     64(ptr) AccessChain 31(data) 1799 63 202
+            1812:     24(int) CompositeExtract 1806 2
+                              Store 1811 1812
             1813:      6(int) Load 8(invocation)
-            1814:     40(ptr) AccessChain 31(data) 115 33
-            1815:   17(ivec4) Load 1814
-            1816:   17(ivec4) Load 19(ballot)
-            1817:   17(ivec4) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1815 1816
-            1818:     40(ptr) AccessChain 31(data) 1813 33
-                              Store 1818 1817
-            1819:      6(int) Load 8(invocation)
-            1820:    116(ptr) AccessChain 31(data) 34 115 35
-            1821:26(float64_t) Load 1820
-            1822:   17(ivec4) Load 19(ballot)
-            1823:26(float64_t) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1821 1822
-            1824:    116(ptr) AccessChain 31(data) 1819 115 35
-                              Store 1824 1823
-            1825:      6(int) Load 8(invocation)
-            1826:    123(ptr) AccessChain 31(data) 63 115
-            1827: 27(f64vec4) Load 1826
-            1828:122(f64vec2) VectorShuffle 1827 1827 0 1
-            1829:   17(ivec4) Load 19(ballot)
-            1830:122(f64vec2) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1828 1829
-            1831:    123(ptr) AccessChain 31(data) 1825 115
-            1832: 27(f64vec4) Load 1831
-            1833: 27(f64vec4) VectorShuffle 1832 1830 4 5 2 3
-                              Store 1831 1833
-            1834:      6(int) Load 8(invocation)
-            1835:    123(ptr) AccessChain 31(data) 33 115
-            1836: 27(f64vec4) Load 1835
-            1837:130(f64vec3) VectorShuffle 1836 1836 0 1 2
-            1838:   17(ivec4) Load 19(ballot)
-            1839:130(f64vec3) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1837 1838
-            1840:    123(ptr) AccessChain 31(data) 1834 115
-            1841: 27(f64vec4) Load 1840
-            1842: 27(f64vec4) VectorShuffle 1841 1839 4 5 6 3
-                              Store 1840 1842
-            1843:      6(int) Load 8(invocation)
-            1844:    123(ptr) AccessChain 31(data) 115 115
-            1845: 27(f64vec4) Load 1844
-            1846:   17(ivec4) Load 19(ballot)
-            1847: 27(f64vec4) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1845 1846
-            1848:    123(ptr) AccessChain 31(data) 1843 115
-                              Store 1848 1847
+            1814:     71(ptr) AccessChain 31(data) 63 63
+            1815:   25(ivec4) Load 1814
+            1816:  169(bvec4) SLessThan 1815 830
+            1817:   17(ivec4) Load 19(ballot)
+            1818:  169(bvec4) GroupNonUniformLogicalOr 178 PartitionedInclusiveScanNV 1816 1817
+            1819:   25(ivec4) Select 1818 834 830
+            1820:     71(ptr) AccessChain 31(data) 1813 63
+                              Store 1820 1819
+            1821:      6(int) Load 8(invocation)
+            1822:     64(ptr) AccessChain 31(data) 34 63 35
+            1823:     24(int) Load 1822
+            1824:   17(ivec4) Load 19(ballot)
+            1825:     24(int) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1823 1824
+            1826:     64(ptr) AccessChain 31(data) 1821 63 35
+                              Store 1826 1825
+            1827:      6(int) Load 8(invocation)
+            1828:     71(ptr) AccessChain 31(data) 63 63
+            1829:   25(ivec4) Load 1828
+            1830:   70(ivec2) VectorShuffle 1829 1829 0 1
+            1831:   17(ivec4) Load 19(ballot)
+            1832:   70(ivec2) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1830 1831
+            1833:     64(ptr) AccessChain 31(data) 1827 63 35
+            1834:     24(int) CompositeExtract 1832 0
+                              Store 1833 1834
+            1835:     64(ptr) AccessChain 31(data) 1827 63 189
+            1836:     24(int) CompositeExtract 1832 1
+                              Store 1835 1836
+            1837:      6(int) Load 8(invocation)
+            1838:     71(ptr) AccessChain 31(data) 33 63
+            1839:   25(ivec4) Load 1838
+            1840:   78(ivec3) VectorShuffle 1839 1839 0 1 2
+            1841:   17(ivec4) Load 19(ballot)
+            1842:   78(ivec3) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1840 1841
+            1843:     64(ptr) AccessChain 31(data) 1837 63 35
+            1844:     24(int) CompositeExtract 1842 0
+                              Store 1843 1844
+            1845:     64(ptr) AccessChain 31(data) 1837 63 189
+            1846:     24(int) CompositeExtract 1842 1
+                              Store 1845 1846
+            1847:     64(ptr) AccessChain 31(data) 1837 63 202
+            1848:     24(int) CompositeExtract 1842 2
+                              Store 1847 1848
             1849:      6(int) Load 8(invocation)
-            1850:     36(ptr) AccessChain 31(data) 34 34 35
-            1851:   22(float) Load 1850
+            1850:     71(ptr) AccessChain 31(data) 115 63
+            1851:   25(ivec4) Load 1850
             1852:   17(ivec4) Load 19(ballot)
-            1853:   22(float) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 1851 1852
-            1854:     36(ptr) AccessChain 31(data) 1849 34 35
+            1853:   25(ivec4) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1851 1852
+            1854:     71(ptr) AccessChain 31(data) 1849 63
                               Store 1854 1853
             1855:      6(int) Load 8(invocation)
-            1856:     44(ptr) AccessChain 31(data) 63 34
-            1857:   23(fvec4) Load 1856
-            1858:   43(fvec2) VectorShuffle 1857 1857 0 1
-            1859:   17(ivec4) Load 19(ballot)
-            1860:   43(fvec2) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 1858 1859
-            1861:     44(ptr) AccessChain 31(data) 1855 34
-            1862:   23(fvec4) Load 1861
-            1863:   23(fvec4) VectorShuffle 1862 1860 4 5 2 3
-                              Store 1861 1863
-            1864:      6(int) Load 8(invocation)
-            1865:     44(ptr) AccessChain 31(data) 33 34
-            1866:   23(fvec4) Load 1865
-            1867:   51(fvec3) VectorShuffle 1866 1866 0 1 2
-            1868:   17(ivec4) Load 19(ballot)
-            1869:   51(fvec3) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 1867 1868
-            1870:     44(ptr) AccessChain 31(data) 1864 34
-            1871:   23(fvec4) Load 1870
-            1872:   23(fvec4) VectorShuffle 1871 1869 4 5 6 3
-                              Store 1870 1872
-            1873:      6(int) Load 8(invocation)
-            1874:     44(ptr) AccessChain 31(data) 115 34
-            1875:   23(fvec4) Load 1874
-            1876:   17(ivec4) Load 19(ballot)
-            1877:   23(fvec4) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 1875 1876
-            1878:     44(ptr) AccessChain 31(data) 1873 34
-                              Store 1878 1877
-            1879:      6(int) Load 8(invocation)
-            1880:     64(ptr) AccessChain 31(data) 34 63 35
-            1881:     24(int) Load 1880
-            1882:   17(ivec4) Load 19(ballot)
-            1883:     24(int) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 1881 1882
-            1884:     64(ptr) AccessChain 31(data) 1879 63 35
-                              Store 1884 1883
-            1885:      6(int) Load 8(invocation)
-            1886:     71(ptr) AccessChain 31(data) 63 63
-            1887:   25(ivec4) Load 1886
-            1888:   70(ivec2) VectorShuffle 1887 1887 0 1
-            1889:   17(ivec4) Load 19(ballot)
-            1890:   70(ivec2) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 1888 1889
-            1891:     71(ptr) AccessChain 31(data) 1885 63
-            1892:   25(ivec4) Load 1891
-            1893:   25(ivec4) VectorShuffle 1892 1890 4 5 2 3
-                              Store 1891 1893
-            1894:      6(int) Load 8(invocation)
-            1895:     71(ptr) AccessChain 31(data) 33 63
-            1896:   25(ivec4) Load 1895
-            1897:   78(ivec3) VectorShuffle 1896 1896 0 1 2
-            1898:   17(ivec4) Load 19(ballot)
-            1899:   78(ivec3) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 1897 1898
-            1900:     71(ptr) AccessChain 31(data) 1894 63
-            1901:   25(ivec4) Load 1900
-            1902:   25(ivec4) VectorShuffle 1901 1899 4 5 6 3
-                              Store 1900 1902
-            1903:      6(int) Load 8(invocation)
-            1904:     71(ptr) AccessChain 31(data) 115 63
-            1905:   25(ivec4) Load 1904
-            1906:   17(ivec4) Load 19(ballot)
-            1907:   25(ivec4) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 1905 1906
-            1908:     71(ptr) AccessChain 31(data) 1903 63
-                              Store 1908 1907
+            1856:     90(ptr) AccessChain 31(data) 34 33 35
+            1857:      6(int) Load 1856
+            1858:   17(ivec4) Load 19(ballot)
+            1859:      6(int) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1857 1858
+            1860:     90(ptr) AccessChain 31(data) 1855 33 35
+                              Store 1860 1859
+            1861:      6(int) Load 8(invocation)
+            1862:     40(ptr) AccessChain 31(data) 63 33
+            1863:   17(ivec4) Load 1862
+            1864:   96(ivec2) VectorShuffle 1863 1863 0 1
+            1865:   17(ivec4) Load 19(ballot)
+            1866:   96(ivec2) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1864 1865
+            1867:     90(ptr) AccessChain 31(data) 1861 33 35
+            1868:      6(int) CompositeExtract 1866 0
+                              Store 1867 1868
+            1869:     90(ptr) AccessChain 31(data) 1861 33 189
+            1870:      6(int) CompositeExtract 1866 1
+                              Store 1869 1870
+            1871:      6(int) Load 8(invocation)
+            1872:     40(ptr) AccessChain 31(data) 33 33
+            1873:   17(ivec4) Load 1872
+            1874:  103(ivec3) VectorShuffle 1873 1873 0 1 2
+            1875:   17(ivec4) Load 19(ballot)
+            1876:  103(ivec3) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1874 1875
+            1877:     90(ptr) AccessChain 31(data) 1871 33 35
+            1878:      6(int) CompositeExtract 1876 0
+                              Store 1877 1878
+            1879:     90(ptr) AccessChain 31(data) 1871 33 189
+            1880:      6(int) CompositeExtract 1876 1
+                              Store 1879 1880
+            1881:     90(ptr) AccessChain 31(data) 1871 33 202
+            1882:      6(int) CompositeExtract 1876 2
+                              Store 1881 1882
+            1883:      6(int) Load 8(invocation)
+            1884:     40(ptr) AccessChain 31(data) 115 33
+            1885:   17(ivec4) Load 1884
+            1886:   17(ivec4) Load 19(ballot)
+            1887:   17(ivec4) GroupNonUniformBitwiseXor 178 PartitionedInclusiveScanNV 1885 1886
+            1888:     40(ptr) AccessChain 31(data) 1883 33
+                              Store 1888 1887
+            1889:      6(int) Load 8(invocation)
+            1890:     64(ptr) AccessChain 31(data) 34 63 35
+            1891:     24(int) Load 1890
+            1892:   144(bool) SLessThan 1891 34
+            1893:   17(ivec4) Load 19(ballot)
+            1894:   144(bool) GroupNonUniformLogicalXor 178 PartitionedInclusiveScanNV 1892 1893
+            1895:     24(int) Select 1894 63 34
+            1896:     64(ptr) AccessChain 31(data) 1889 63 35
+                              Store 1896 1895
+            1897:      6(int) Load 8(invocation)
+            1898:     71(ptr) AccessChain 31(data) 63 63
+            1899:   25(ivec4) Load 1898
+            1900:   70(ivec2) VectorShuffle 1899 1899 0 1
+            1901:  152(bvec2) SLessThan 1900 801
+            1902:   17(ivec4) Load 19(ballot)
+            1903:  152(bvec2) GroupNonUniformLogicalXor 178 PartitionedInclusiveScanNV 1901 1902
+            1904:   70(ivec2) Select 1903 805 801
+            1905:     64(ptr) AccessChain 31(data) 1897 63 35
+            1906:     24(int) CompositeExtract 1904 0
+                              Store 1905 1906
+            1907:     64(ptr) AccessChain 31(data) 1897 63 189
+            1908:     24(int) CompositeExtract 1904 1
+                              Store 1907 1908
             1909:      6(int) Load 8(invocation)
-            1910:     90(ptr) AccessChain 31(data) 34 33 35
-            1911:      6(int) Load 1910
-            1912:   17(ivec4) Load 19(ballot)
-            1913:      6(int) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 1911 1912
-            1914:     90(ptr) AccessChain 31(data) 1909 33 35
-                              Store 1914 1913
-            1915:      6(int) Load 8(invocation)
-            1916:     40(ptr) AccessChain 31(data) 63 33
-            1917:   17(ivec4) Load 1916
-            1918:   96(ivec2) VectorShuffle 1917 1917 0 1
-            1919:   17(ivec4) Load 19(ballot)
-            1920:   96(ivec2) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 1918 1919
-            1921:     40(ptr) AccessChain 31(data) 1915 33
-            1922:   17(ivec4) Load 1921
-            1923:   17(ivec4) VectorShuffle 1922 1920 4 5 2 3
-                              Store 1921 1923
-            1924:      6(int) Load 8(invocation)
-            1925:     40(ptr) AccessChain 31(data) 33 33
-            1926:   17(ivec4) Load 1925
-            1927:  103(ivec3) VectorShuffle 1926 1926 0 1 2
-            1928:   17(ivec4) Load 19(ballot)
-            1929:  103(ivec3) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 1927 1928
-            1930:     40(ptr) AccessChain 31(data) 1924 33
-            1931:   17(ivec4) Load 1930
-            1932:   17(ivec4) VectorShuffle 1931 1929 4 5 6 3
-                              Store 1930 1932
-            1933:      6(int) Load 8(invocation)
-            1934:     40(ptr) AccessChain 31(data) 115 33
-            1935:   17(ivec4) Load 1934
-            1936:   17(ivec4) Load 19(ballot)
-            1937:   17(ivec4) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 1935 1936
-            1938:     40(ptr) AccessChain 31(data) 1933 33
-                              Store 1938 1937
-            1939:      6(int) Load 8(invocation)
-            1940:    116(ptr) AccessChain 31(data) 34 115 35
-            1941:26(float64_t) Load 1940
-            1942:   17(ivec4) Load 19(ballot)
-            1943:26(float64_t) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 1941 1942
-            1944:    116(ptr) AccessChain 31(data) 1939 115 35
-                              Store 1944 1943
-            1945:      6(int) Load 8(invocation)
-            1946:    123(ptr) AccessChain 31(data) 63 115
-            1947: 27(f64vec4) Load 1946
-            1948:122(f64vec2) VectorShuffle 1947 1947 0 1
-            1949:   17(ivec4) Load 19(ballot)
-            1950:122(f64vec2) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 1948 1949
-            1951:    123(ptr) AccessChain 31(data) 1945 115
-            1952: 27(f64vec4) Load 1951
-            1953: 27(f64vec4) VectorShuffle 1952 1950 4 5 2 3
-                              Store 1951 1953
-            1954:      6(int) Load 8(invocation)
-            1955:    123(ptr) AccessChain 31(data) 33 115
-            1956: 27(f64vec4) Load 1955
-            1957:130(f64vec3) VectorShuffle 1956 1956 0 1 2
-            1958:   17(ivec4) Load 19(ballot)
-            1959:130(f64vec3) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 1957 1958
-            1960:    123(ptr) AccessChain 31(data) 1954 115
-            1961: 27(f64vec4) Load 1960
-            1962: 27(f64vec4) VectorShuffle 1961 1959 4 5 6 3
-                              Store 1960 1962
-            1963:      6(int) Load 8(invocation)
-            1964:    123(ptr) AccessChain 31(data) 115 115
-            1965: 27(f64vec4) Load 1964
-            1966:   17(ivec4) Load 19(ballot)
-            1967: 27(f64vec4) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 1965 1966
-            1968:    123(ptr) AccessChain 31(data) 1963 115
-                              Store 1968 1967
-            1969:      6(int) Load 8(invocation)
-            1970:     36(ptr) AccessChain 31(data) 34 34 35
-            1971:   22(float) Load 1970
-            1972:   17(ivec4) Load 19(ballot)
-            1973:   22(float) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 1971 1972
-            1974:     36(ptr) AccessChain 31(data) 1969 34 35
-                              Store 1974 1973
-            1975:      6(int) Load 8(invocation)
-            1976:     44(ptr) AccessChain 31(data) 63 34
-            1977:   23(fvec4) Load 1976
-            1978:   43(fvec2) VectorShuffle 1977 1977 0 1
-            1979:   17(ivec4) Load 19(ballot)
-            1980:   43(fvec2) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 1978 1979
-            1981:     44(ptr) AccessChain 31(data) 1975 34
-            1982:   23(fvec4) Load 1981
-            1983:   23(fvec4) VectorShuffle 1982 1980 4 5 2 3
-                              Store 1981 1983
-            1984:      6(int) Load 8(invocation)
-            1985:     44(ptr) AccessChain 31(data) 33 34
-            1986:   23(fvec4) Load 1985
-            1987:   51(fvec3) VectorShuffle 1986 1986 0 1 2
-            1988:   17(ivec4) Load 19(ballot)
-            1989:   51(fvec3) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 1987 1988
-            1990:     44(ptr) AccessChain 31(data) 1984 34
-            1991:   23(fvec4) Load 1990
-            1992:   23(fvec4) VectorShuffle 1991 1989 4 5 6 3
-                              Store 1990 1992
+            1910:     71(ptr) AccessChain 31(data) 63 63
+            1911:   25(ivec4) Load 1910
+            1912:   78(ivec3) VectorShuffle 1911 1911 0 1 2
+            1913:  161(bvec3) SLessThan 1912 815
+            1914:   17(ivec4) Load 19(ballot)
+            1915:  161(bvec3) GroupNonUniformLogicalXor 178 PartitionedInclusiveScanNV 1913 1914
+            1916:   78(ivec3) Select 1915 819 815
+            1917:     64(ptr) AccessChain 31(data) 1909 63 35
+            1918:     24(int) CompositeExtract 1916 0
+                              Store 1917 1918
+            1919:     64(ptr) AccessChain 31(data) 1909 63 189
+            1920:     24(int) CompositeExtract 1916 1
+                              Store 1919 1920
+            1921:     64(ptr) AccessChain 31(data) 1909 63 202
+            1922:     24(int) CompositeExtract 1916 2
+                              Store 1921 1922
+            1923:      6(int) Load 8(invocation)
+            1924:     71(ptr) AccessChain 31(data) 63 63
+            1925:   25(ivec4) Load 1924
+            1926:  169(bvec4) SLessThan 1925 830
+            1927:   17(ivec4) Load 19(ballot)
+            1928:  169(bvec4) GroupNonUniformLogicalXor 178 PartitionedInclusiveScanNV 1926 1927
+            1929:   25(ivec4) Select 1928 834 830
+            1930:     71(ptr) AccessChain 31(data) 1923 63
+                              Store 1930 1929
+            1931:      6(int) Load 8(invocation)
+            1932:     36(ptr) AccessChain 31(data) 34 34 35
+            1933:   22(float) Load 1932
+            1934:   17(ivec4) Load 19(ballot)
+            1935:   22(float) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1933 1934
+            1936:     36(ptr) AccessChain 31(data) 1931 34 35
+                              Store 1936 1935
+            1937:      6(int) Load 8(invocation)
+            1938:     44(ptr) AccessChain 31(data) 63 34
+            1939:   23(fvec4) Load 1938
+            1940:   43(fvec2) VectorShuffle 1939 1939 0 1
+            1941:   17(ivec4) Load 19(ballot)
+            1942:   43(fvec2) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1940 1941
+            1943:     36(ptr) AccessChain 31(data) 1937 34 35
+            1944:   22(float) CompositeExtract 1942 0
+                              Store 1943 1944
+            1945:     36(ptr) AccessChain 31(data) 1937 34 189
+            1946:   22(float) CompositeExtract 1942 1
+                              Store 1945 1946
+            1947:      6(int) Load 8(invocation)
+            1948:     44(ptr) AccessChain 31(data) 33 34
+            1949:   23(fvec4) Load 1948
+            1950:   51(fvec3) VectorShuffle 1949 1949 0 1 2
+            1951:   17(ivec4) Load 19(ballot)
+            1952:   51(fvec3) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1950 1951
+            1953:     36(ptr) AccessChain 31(data) 1947 34 35
+            1954:   22(float) CompositeExtract 1952 0
+                              Store 1953 1954
+            1955:     36(ptr) AccessChain 31(data) 1947 34 189
+            1956:   22(float) CompositeExtract 1952 1
+                              Store 1955 1956
+            1957:     36(ptr) AccessChain 31(data) 1947 34 202
+            1958:   22(float) CompositeExtract 1952 2
+                              Store 1957 1958
+            1959:      6(int) Load 8(invocation)
+            1960:     44(ptr) AccessChain 31(data) 115 34
+            1961:   23(fvec4) Load 1960
+            1962:   17(ivec4) Load 19(ballot)
+            1963:   23(fvec4) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 1961 1962
+            1964:     44(ptr) AccessChain 31(data) 1959 34
+                              Store 1964 1963
+            1965:      6(int) Load 8(invocation)
+            1966:     64(ptr) AccessChain 31(data) 34 63 35
+            1967:     24(int) Load 1966
+            1968:   17(ivec4) Load 19(ballot)
+            1969:     24(int) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1967 1968
+            1970:     64(ptr) AccessChain 31(data) 1965 63 35
+                              Store 1970 1969
+            1971:      6(int) Load 8(invocation)
+            1972:     71(ptr) AccessChain 31(data) 63 63
+            1973:   25(ivec4) Load 1972
+            1974:   70(ivec2) VectorShuffle 1973 1973 0 1
+            1975:   17(ivec4) Load 19(ballot)
+            1976:   70(ivec2) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1974 1975
+            1977:     64(ptr) AccessChain 31(data) 1971 63 35
+            1978:     24(int) CompositeExtract 1976 0
+                              Store 1977 1978
+            1979:     64(ptr) AccessChain 31(data) 1971 63 189
+            1980:     24(int) CompositeExtract 1976 1
+                              Store 1979 1980
+            1981:      6(int) Load 8(invocation)
+            1982:     71(ptr) AccessChain 31(data) 33 63
+            1983:   25(ivec4) Load 1982
+            1984:   78(ivec3) VectorShuffle 1983 1983 0 1 2
+            1985:   17(ivec4) Load 19(ballot)
+            1986:   78(ivec3) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1984 1985
+            1987:     64(ptr) AccessChain 31(data) 1981 63 35
+            1988:     24(int) CompositeExtract 1986 0
+                              Store 1987 1988
+            1989:     64(ptr) AccessChain 31(data) 1981 63 189
+            1990:     24(int) CompositeExtract 1986 1
+                              Store 1989 1990
+            1991:     64(ptr) AccessChain 31(data) 1981 63 202
+            1992:     24(int) CompositeExtract 1986 2
+                              Store 1991 1992
             1993:      6(int) Load 8(invocation)
-            1994:     44(ptr) AccessChain 31(data) 115 34
-            1995:   23(fvec4) Load 1994
+            1994:     71(ptr) AccessChain 31(data) 115 63
+            1995:   25(ivec4) Load 1994
             1996:   17(ivec4) Load 19(ballot)
-            1997:   23(fvec4) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 1995 1996
-            1998:     44(ptr) AccessChain 31(data) 1993 34
+            1997:   25(ivec4) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 1995 1996
+            1998:     71(ptr) AccessChain 31(data) 1993 63
                               Store 1998 1997
             1999:      6(int) Load 8(invocation)
-            2000:     64(ptr) AccessChain 31(data) 34 63 35
-            2001:     24(int) Load 2000
+            2000:     90(ptr) AccessChain 31(data) 34 33 35
+            2001:      6(int) Load 2000
             2002:   17(ivec4) Load 19(ballot)
-            2003:     24(int) GroupNonUniformSMin 178 PartitionedExclusiveScanNV 2001 2002
-            2004:     64(ptr) AccessChain 31(data) 1999 63 35
+            2003:      6(int) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 2001 2002
+            2004:     90(ptr) AccessChain 31(data) 1999 33 35
                               Store 2004 2003
             2005:      6(int) Load 8(invocation)
-            2006:     71(ptr) AccessChain 31(data) 63 63
-            2007:   25(ivec4) Load 2006
-            2008:   70(ivec2) VectorShuffle 2007 2007 0 1
+            2006:     40(ptr) AccessChain 31(data) 63 33
+            2007:   17(ivec4) Load 2006
+            2008:   96(ivec2) VectorShuffle 2007 2007 0 1
             2009:   17(ivec4) Load 19(ballot)
-            2010:   70(ivec2) GroupNonUniformSMin 178 PartitionedExclusiveScanNV 2008 2009
-            2011:     71(ptr) AccessChain 31(data) 2005 63
-            2012:   25(ivec4) Load 2011
-            2013:   25(ivec4) VectorShuffle 2012 2010 4 5 2 3
-                              Store 2011 2013
-            2014:      6(int) Load 8(invocation)
-            2015:     71(ptr) AccessChain 31(data) 33 63
-            2016:   25(ivec4) Load 2015
-            2017:   78(ivec3) VectorShuffle 2016 2016 0 1 2
-            2018:   17(ivec4) Load 19(ballot)
-            2019:   78(ivec3) GroupNonUniformSMin 178 PartitionedExclusiveScanNV 2017 2018
-            2020:     71(ptr) AccessChain 31(data) 2014 63
-            2021:   25(ivec4) Load 2020
-            2022:   25(ivec4) VectorShuffle 2021 2019 4 5 6 3
-                              Store 2020 2022
-            2023:      6(int) Load 8(invocation)
-            2024:     71(ptr) AccessChain 31(data) 115 63
-            2025:   25(ivec4) Load 2024
-            2026:   17(ivec4) Load 19(ballot)
-            2027:   25(ivec4) GroupNonUniformSMin 178 PartitionedExclusiveScanNV 2025 2026
-            2028:     71(ptr) AccessChain 31(data) 2023 63
-                              Store 2028 2027
-            2029:      6(int) Load 8(invocation)
-            2030:     90(ptr) AccessChain 31(data) 34 33 35
-            2031:      6(int) Load 2030
-            2032:   17(ivec4) Load 19(ballot)
-            2033:      6(int) GroupNonUniformUMin 178 PartitionedExclusiveScanNV 2031 2032
-            2034:     90(ptr) AccessChain 31(data) 2029 33 35
-                              Store 2034 2033
-            2035:      6(int) Load 8(invocation)
-            2036:     40(ptr) AccessChain 31(data) 63 33
-            2037:   17(ivec4) Load 2036
-            2038:   96(ivec2) VectorShuffle 2037 2037 0 1
-            2039:   17(ivec4) Load 19(ballot)
-            2040:   96(ivec2) GroupNonUniformUMin 178 PartitionedExclusiveScanNV 2038 2039
-            2041:     40(ptr) AccessChain 31(data) 2035 33
-            2042:   17(ivec4) Load 2041
-            2043:   17(ivec4) VectorShuffle 2042 2040 4 5 2 3
-                              Store 2041 2043
-            2044:      6(int) Load 8(invocation)
-            2045:     40(ptr) AccessChain 31(data) 33 33
-            2046:   17(ivec4) Load 2045
-            2047:  103(ivec3) VectorShuffle 2046 2046 0 1 2
-            2048:   17(ivec4) Load 19(ballot)
-            2049:  103(ivec3) GroupNonUniformUMin 178 PartitionedExclusiveScanNV 2047 2048
-            2050:     40(ptr) AccessChain 31(data) 2044 33
-            2051:   17(ivec4) Load 2050
-            2052:   17(ivec4) VectorShuffle 2051 2049 4 5 6 3
-                              Store 2050 2052
-            2053:      6(int) Load 8(invocation)
-            2054:     40(ptr) AccessChain 31(data) 115 33
-            2055:   17(ivec4) Load 2054
-            2056:   17(ivec4) Load 19(ballot)
-            2057:   17(ivec4) GroupNonUniformUMin 178 PartitionedExclusiveScanNV 2055 2056
-            2058:     40(ptr) AccessChain 31(data) 2053 33
-                              Store 2058 2057
-            2059:      6(int) Load 8(invocation)
-            2060:    116(ptr) AccessChain 31(data) 34 115 35
-            2061:26(float64_t) Load 2060
-            2062:   17(ivec4) Load 19(ballot)
-            2063:26(float64_t) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2061 2062
-            2064:    116(ptr) AccessChain 31(data) 2059 115 35
-                              Store 2064 2063
-            2065:      6(int) Load 8(invocation)
-            2066:    123(ptr) AccessChain 31(data) 63 115
-            2067: 27(f64vec4) Load 2066
-            2068:122(f64vec2) VectorShuffle 2067 2067 0 1
-            2069:   17(ivec4) Load 19(ballot)
-            2070:122(f64vec2) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2068 2069
-            2071:    123(ptr) AccessChain 31(data) 2065 115
-            2072: 27(f64vec4) Load 2071
-            2073: 27(f64vec4) VectorShuffle 2072 2070 4 5 2 3
-                              Store 2071 2073
-            2074:      6(int) Load 8(invocation)
-            2075:    123(ptr) AccessChain 31(data) 33 115
-            2076: 27(f64vec4) Load 2075
-            2077:130(f64vec3) VectorShuffle 2076 2076 0 1 2
-            2078:   17(ivec4) Load 19(ballot)
-            2079:130(f64vec3) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2077 2078
-            2080:    123(ptr) AccessChain 31(data) 2074 115
-            2081: 27(f64vec4) Load 2080
-            2082: 27(f64vec4) VectorShuffle 2081 2079 4 5 6 3
-                              Store 2080 2082
+            2010:   96(ivec2) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 2008 2009
+            2011:     90(ptr) AccessChain 31(data) 2005 33 35
+            2012:      6(int) CompositeExtract 2010 0
+                              Store 2011 2012
+            2013:     90(ptr) AccessChain 31(data) 2005 33 189
+            2014:      6(int) CompositeExtract 2010 1
+                              Store 2013 2014
+            2015:      6(int) Load 8(invocation)
+            2016:     40(ptr) AccessChain 31(data) 33 33
+            2017:   17(ivec4) Load 2016
+            2018:  103(ivec3) VectorShuffle 2017 2017 0 1 2
+            2019:   17(ivec4) Load 19(ballot)
+            2020:  103(ivec3) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 2018 2019
+            2021:     90(ptr) AccessChain 31(data) 2015 33 35
+            2022:      6(int) CompositeExtract 2020 0
+                              Store 2021 2022
+            2023:     90(ptr) AccessChain 31(data) 2015 33 189
+            2024:      6(int) CompositeExtract 2020 1
+                              Store 2023 2024
+            2025:     90(ptr) AccessChain 31(data) 2015 33 202
+            2026:      6(int) CompositeExtract 2020 2
+                              Store 2025 2026
+            2027:      6(int) Load 8(invocation)
+            2028:     40(ptr) AccessChain 31(data) 115 33
+            2029:   17(ivec4) Load 2028
+            2030:   17(ivec4) Load 19(ballot)
+            2031:   17(ivec4) GroupNonUniformIAdd 178 PartitionedExclusiveScanNV 2029 2030
+            2032:     40(ptr) AccessChain 31(data) 2027 33
+                              Store 2032 2031
+            2033:      6(int) Load 8(invocation)
+            2034:    116(ptr) AccessChain 31(data) 34 115 35
+            2035:26(float64_t) Load 2034
+            2036:   17(ivec4) Load 19(ballot)
+            2037:26(float64_t) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 2035 2036
+            2038:    116(ptr) AccessChain 31(data) 2033 115 35
+                              Store 2038 2037
+            2039:      6(int) Load 8(invocation)
+            2040:    123(ptr) AccessChain 31(data) 63 115
+            2041: 27(f64vec4) Load 2040
+            2042:122(f64vec2) VectorShuffle 2041 2041 0 1
+            2043:   17(ivec4) Load 19(ballot)
+            2044:122(f64vec2) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 2042 2043
+            2045:    116(ptr) AccessChain 31(data) 2039 115 35
+            2046:26(float64_t) CompositeExtract 2044 0
+                              Store 2045 2046
+            2047:    116(ptr) AccessChain 31(data) 2039 115 189
+            2048:26(float64_t) CompositeExtract 2044 1
+                              Store 2047 2048
+            2049:      6(int) Load 8(invocation)
+            2050:    123(ptr) AccessChain 31(data) 33 115
+            2051: 27(f64vec4) Load 2050
+            2052:130(f64vec3) VectorShuffle 2051 2051 0 1 2
+            2053:   17(ivec4) Load 19(ballot)
+            2054:130(f64vec3) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 2052 2053
+            2055:    116(ptr) AccessChain 31(data) 2049 115 35
+            2056:26(float64_t) CompositeExtract 2054 0
+                              Store 2055 2056
+            2057:    116(ptr) AccessChain 31(data) 2049 115 189
+            2058:26(float64_t) CompositeExtract 2054 1
+                              Store 2057 2058
+            2059:    116(ptr) AccessChain 31(data) 2049 115 202
+            2060:26(float64_t) CompositeExtract 2054 2
+                              Store 2059 2060
+            2061:      6(int) Load 8(invocation)
+            2062:    123(ptr) AccessChain 31(data) 115 115
+            2063: 27(f64vec4) Load 2062
+            2064:   17(ivec4) Load 19(ballot)
+            2065: 27(f64vec4) GroupNonUniformFAdd 178 PartitionedExclusiveScanNV 2063 2064
+            2066:    123(ptr) AccessChain 31(data) 2061 115
+                              Store 2066 2065
+            2067:      6(int) Load 8(invocation)
+            2068:     36(ptr) AccessChain 31(data) 34 34 35
+            2069:   22(float) Load 2068
+            2070:   17(ivec4) Load 19(ballot)
+            2071:   22(float) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 2069 2070
+            2072:     36(ptr) AccessChain 31(data) 2067 34 35
+                              Store 2072 2071
+            2073:      6(int) Load 8(invocation)
+            2074:     44(ptr) AccessChain 31(data) 63 34
+            2075:   23(fvec4) Load 2074
+            2076:   43(fvec2) VectorShuffle 2075 2075 0 1
+            2077:   17(ivec4) Load 19(ballot)
+            2078:   43(fvec2) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 2076 2077
+            2079:     36(ptr) AccessChain 31(data) 2073 34 35
+            2080:   22(float) CompositeExtract 2078 0
+                              Store 2079 2080
+            2081:     36(ptr) AccessChain 31(data) 2073 34 189
+            2082:   22(float) CompositeExtract 2078 1
+                              Store 2081 2082
             2083:      6(int) Load 8(invocation)
-            2084:    123(ptr) AccessChain 31(data) 115 115
-            2085: 27(f64vec4) Load 2084
-            2086:   17(ivec4) Load 19(ballot)
-            2087: 27(f64vec4) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2085 2086
-            2088:    123(ptr) AccessChain 31(data) 2083 115
-                              Store 2088 2087
-            2089:      6(int) Load 8(invocation)
-            2090:     36(ptr) AccessChain 31(data) 34 34 35
-            2091:   22(float) Load 2090
-            2092:   17(ivec4) Load 19(ballot)
-            2093:   22(float) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2091 2092
-            2094:     36(ptr) AccessChain 31(data) 2089 34 35
-                              Store 2094 2093
+            2084:     44(ptr) AccessChain 31(data) 33 34
+            2085:   23(fvec4) Load 2084
+            2086:   51(fvec3) VectorShuffle 2085 2085 0 1 2
+            2087:   17(ivec4) Load 19(ballot)
+            2088:   51(fvec3) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 2086 2087
+            2089:     36(ptr) AccessChain 31(data) 2083 34 35
+            2090:   22(float) CompositeExtract 2088 0
+                              Store 2089 2090
+            2091:     36(ptr) AccessChain 31(data) 2083 34 189
+            2092:   22(float) CompositeExtract 2088 1
+                              Store 2091 2092
+            2093:     36(ptr) AccessChain 31(data) 2083 34 202
+            2094:   22(float) CompositeExtract 2088 2
+                              Store 2093 2094
             2095:      6(int) Load 8(invocation)
-            2096:     44(ptr) AccessChain 31(data) 63 34
+            2096:     44(ptr) AccessChain 31(data) 115 34
             2097:   23(fvec4) Load 2096
-            2098:   43(fvec2) VectorShuffle 2097 2097 0 1
-            2099:   17(ivec4) Load 19(ballot)
-            2100:   43(fvec2) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2098 2099
-            2101:     44(ptr) AccessChain 31(data) 2095 34
-            2102:   23(fvec4) Load 2101
-            2103:   23(fvec4) VectorShuffle 2102 2100 4 5 2 3
-                              Store 2101 2103
-            2104:      6(int) Load 8(invocation)
-            2105:     44(ptr) AccessChain 31(data) 33 34
-            2106:   23(fvec4) Load 2105
-            2107:   51(fvec3) VectorShuffle 2106 2106 0 1 2
-            2108:   17(ivec4) Load 19(ballot)
-            2109:   51(fvec3) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2107 2108
-            2110:     44(ptr) AccessChain 31(data) 2104 34
-            2111:   23(fvec4) Load 2110
-            2112:   23(fvec4) VectorShuffle 2111 2109 4 5 6 3
-                              Store 2110 2112
-            2113:      6(int) Load 8(invocation)
-            2114:     44(ptr) AccessChain 31(data) 115 34
-            2115:   23(fvec4) Load 2114
-            2116:   17(ivec4) Load 19(ballot)
-            2117:   23(fvec4) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2115 2116
-            2118:     44(ptr) AccessChain 31(data) 2113 34
-                              Store 2118 2117
-            2119:      6(int) Load 8(invocation)
-            2120:     64(ptr) AccessChain 31(data) 34 63 35
-            2121:     24(int) Load 2120
-            2122:   17(ivec4) Load 19(ballot)
-            2123:     24(int) GroupNonUniformSMax 178 PartitionedExclusiveScanNV 2121 2122
-            2124:     64(ptr) AccessChain 31(data) 2119 63 35
-                              Store 2124 2123
-            2125:      6(int) Load 8(invocation)
-            2126:     71(ptr) AccessChain 31(data) 63 63
-            2127:   25(ivec4) Load 2126
-            2128:   70(ivec2) VectorShuffle 2127 2127 0 1
-            2129:   17(ivec4) Load 19(ballot)
-            2130:   70(ivec2) GroupNonUniformSMax 178 PartitionedExclusiveScanNV 2128 2129
-            2131:     71(ptr) AccessChain 31(data) 2125 63
-            2132:   25(ivec4) Load 2131
-            2133:   25(ivec4) VectorShuffle 2132 2130 4 5 2 3
-                              Store 2131 2133
-            2134:      6(int) Load 8(invocation)
-            2135:     71(ptr) AccessChain 31(data) 33 63
-            2136:   25(ivec4) Load 2135
-            2137:   78(ivec3) VectorShuffle 2136 2136 0 1 2
+            2098:   17(ivec4) Load 19(ballot)
+            2099:   23(fvec4) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 2097 2098
+            2100:     44(ptr) AccessChain 31(data) 2095 34
+                              Store 2100 2099
+            2101:      6(int) Load 8(invocation)
+            2102:     64(ptr) AccessChain 31(data) 34 63 35
+            2103:     24(int) Load 2102
+            2104:   17(ivec4) Load 19(ballot)
+            2105:     24(int) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 2103 2104
+            2106:     64(ptr) AccessChain 31(data) 2101 63 35
+                              Store 2106 2105
+            2107:      6(int) Load 8(invocation)
+            2108:     71(ptr) AccessChain 31(data) 63 63
+            2109:   25(ivec4) Load 2108
+            2110:   70(ivec2) VectorShuffle 2109 2109 0 1
+            2111:   17(ivec4) Load 19(ballot)
+            2112:   70(ivec2) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 2110 2111
+            2113:     64(ptr) AccessChain 31(data) 2107 63 35
+            2114:     24(int) CompositeExtract 2112 0
+                              Store 2113 2114
+            2115:     64(ptr) AccessChain 31(data) 2107 63 189
+            2116:     24(int) CompositeExtract 2112 1
+                              Store 2115 2116
+            2117:      6(int) Load 8(invocation)
+            2118:     71(ptr) AccessChain 31(data) 33 63
+            2119:   25(ivec4) Load 2118
+            2120:   78(ivec3) VectorShuffle 2119 2119 0 1 2
+            2121:   17(ivec4) Load 19(ballot)
+            2122:   78(ivec3) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 2120 2121
+            2123:     64(ptr) AccessChain 31(data) 2117 63 35
+            2124:     24(int) CompositeExtract 2122 0
+                              Store 2123 2124
+            2125:     64(ptr) AccessChain 31(data) 2117 63 189
+            2126:     24(int) CompositeExtract 2122 1
+                              Store 2125 2126
+            2127:     64(ptr) AccessChain 31(data) 2117 63 202
+            2128:     24(int) CompositeExtract 2122 2
+                              Store 2127 2128
+            2129:      6(int) Load 8(invocation)
+            2130:     71(ptr) AccessChain 31(data) 115 63
+            2131:   25(ivec4) Load 2130
+            2132:   17(ivec4) Load 19(ballot)
+            2133:   25(ivec4) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 2131 2132
+            2134:     71(ptr) AccessChain 31(data) 2129 63
+                              Store 2134 2133
+            2135:      6(int) Load 8(invocation)
+            2136:     90(ptr) AccessChain 31(data) 34 33 35
+            2137:      6(int) Load 2136
             2138:   17(ivec4) Load 19(ballot)
-            2139:   78(ivec3) GroupNonUniformSMax 178 PartitionedExclusiveScanNV 2137 2138
-            2140:     71(ptr) AccessChain 31(data) 2134 63
-            2141:   25(ivec4) Load 2140
-            2142:   25(ivec4) VectorShuffle 2141 2139 4 5 6 3
-                              Store 2140 2142
-            2143:      6(int) Load 8(invocation)
-            2144:     71(ptr) AccessChain 31(data) 115 63
-            2145:   25(ivec4) Load 2144
-            2146:   17(ivec4) Load 19(ballot)
-            2147:   25(ivec4) GroupNonUniformSMax 178 PartitionedExclusiveScanNV 2145 2146
-            2148:     71(ptr) AccessChain 31(data) 2143 63
-                              Store 2148 2147
-            2149:      6(int) Load 8(invocation)
-            2150:     90(ptr) AccessChain 31(data) 34 33 35
-            2151:      6(int) Load 2150
-            2152:   17(ivec4) Load 19(ballot)
-            2153:      6(int) GroupNonUniformUMax 178 PartitionedExclusiveScanNV 2151 2152
-            2154:     90(ptr) AccessChain 31(data) 2149 33 35
-                              Store 2154 2153
-            2155:      6(int) Load 8(invocation)
-            2156:     40(ptr) AccessChain 31(data) 63 33
-            2157:   17(ivec4) Load 2156
-            2158:   96(ivec2) VectorShuffle 2157 2157 0 1
-            2159:   17(ivec4) Load 19(ballot)
-            2160:   96(ivec2) GroupNonUniformUMax 178 PartitionedExclusiveScanNV 2158 2159
-            2161:     40(ptr) AccessChain 31(data) 2155 33
-            2162:   17(ivec4) Load 2161
-            2163:   17(ivec4) VectorShuffle 2162 2160 4 5 2 3
-                              Store 2161 2163
-            2164:      6(int) Load 8(invocation)
-            2165:     40(ptr) AccessChain 31(data) 33 33
-            2166:   17(ivec4) Load 2165
-            2167:  103(ivec3) VectorShuffle 2166 2166 0 1 2
-            2168:   17(ivec4) Load 19(ballot)
-            2169:  103(ivec3) GroupNonUniformUMax 178 PartitionedExclusiveScanNV 2167 2168
-            2170:     40(ptr) AccessChain 31(data) 2164 33
-            2171:   17(ivec4) Load 2170
-            2172:   17(ivec4) VectorShuffle 2171 2169 4 5 6 3
-                              Store 2170 2172
-            2173:      6(int) Load 8(invocation)
-            2174:     40(ptr) AccessChain 31(data) 115 33
-            2175:   17(ivec4) Load 2174
-            2176:   17(ivec4) Load 19(ballot)
-            2177:   17(ivec4) GroupNonUniformUMax 178 PartitionedExclusiveScanNV 2175 2176
-            2178:     40(ptr) AccessChain 31(data) 2173 33
-                              Store 2178 2177
-            2179:      6(int) Load 8(invocation)
-            2180:    116(ptr) AccessChain 31(data) 34 115 35
-            2181:26(float64_t) Load 2180
-            2182:   17(ivec4) Load 19(ballot)
-            2183:26(float64_t) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2181 2182
-            2184:    116(ptr) AccessChain 31(data) 2179 115 35
-                              Store 2184 2183
+            2139:      6(int) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 2137 2138
+            2140:     90(ptr) AccessChain 31(data) 2135 33 35
+                              Store 2140 2139
+            2141:      6(int) Load 8(invocation)
+            2142:     40(ptr) AccessChain 31(data) 63 33
+            2143:   17(ivec4) Load 2142
+            2144:   96(ivec2) VectorShuffle 2143 2143 0 1
+            2145:   17(ivec4) Load 19(ballot)
+            2146:   96(ivec2) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 2144 2145
+            2147:     90(ptr) AccessChain 31(data) 2141 33 35
+            2148:      6(int) CompositeExtract 2146 0
+                              Store 2147 2148
+            2149:     90(ptr) AccessChain 31(data) 2141 33 189
+            2150:      6(int) CompositeExtract 2146 1
+                              Store 2149 2150
+            2151:      6(int) Load 8(invocation)
+            2152:     40(ptr) AccessChain 31(data) 33 33
+            2153:   17(ivec4) Load 2152
+            2154:  103(ivec3) VectorShuffle 2153 2153 0 1 2
+            2155:   17(ivec4) Load 19(ballot)
+            2156:  103(ivec3) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 2154 2155
+            2157:     90(ptr) AccessChain 31(data) 2151 33 35
+            2158:      6(int) CompositeExtract 2156 0
+                              Store 2157 2158
+            2159:     90(ptr) AccessChain 31(data) 2151 33 189
+            2160:      6(int) CompositeExtract 2156 1
+                              Store 2159 2160
+            2161:     90(ptr) AccessChain 31(data) 2151 33 202
+            2162:      6(int) CompositeExtract 2156 2
+                              Store 2161 2162
+            2163:      6(int) Load 8(invocation)
+            2164:     40(ptr) AccessChain 31(data) 115 33
+            2165:   17(ivec4) Load 2164
+            2166:   17(ivec4) Load 19(ballot)
+            2167:   17(ivec4) GroupNonUniformIMul 178 PartitionedExclusiveScanNV 2165 2166
+            2168:     40(ptr) AccessChain 31(data) 2163 33
+                              Store 2168 2167
+            2169:      6(int) Load 8(invocation)
+            2170:    116(ptr) AccessChain 31(data) 34 115 35
+            2171:26(float64_t) Load 2170
+            2172:   17(ivec4) Load 19(ballot)
+            2173:26(float64_t) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 2171 2172
+            2174:    116(ptr) AccessChain 31(data) 2169 115 35
+                              Store 2174 2173
+            2175:      6(int) Load 8(invocation)
+            2176:    123(ptr) AccessChain 31(data) 63 115
+            2177: 27(f64vec4) Load 2176
+            2178:122(f64vec2) VectorShuffle 2177 2177 0 1
+            2179:   17(ivec4) Load 19(ballot)
+            2180:122(f64vec2) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 2178 2179
+            2181:    116(ptr) AccessChain 31(data) 2175 115 35
+            2182:26(float64_t) CompositeExtract 2180 0
+                              Store 2181 2182
+            2183:    116(ptr) AccessChain 31(data) 2175 115 189
+            2184:26(float64_t) CompositeExtract 2180 1
+                              Store 2183 2184
             2185:      6(int) Load 8(invocation)
-            2186:    123(ptr) AccessChain 31(data) 63 115
+            2186:    123(ptr) AccessChain 31(data) 33 115
             2187: 27(f64vec4) Load 2186
-            2188:122(f64vec2) VectorShuffle 2187 2187 0 1
+            2188:130(f64vec3) VectorShuffle 2187 2187 0 1 2
             2189:   17(ivec4) Load 19(ballot)
-            2190:122(f64vec2) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2188 2189
-            2191:    123(ptr) AccessChain 31(data) 2185 115
-            2192: 27(f64vec4) Load 2191
-            2193: 27(f64vec4) VectorShuffle 2192 2190 4 5 2 3
-                              Store 2191 2193
-            2194:      6(int) Load 8(invocation)
-            2195:    123(ptr) AccessChain 31(data) 33 115
-            2196: 27(f64vec4) Load 2195
-            2197:130(f64vec3) VectorShuffle 2196 2196 0 1 2
-            2198:   17(ivec4) Load 19(ballot)
-            2199:130(f64vec3) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2197 2198
-            2200:    123(ptr) AccessChain 31(data) 2194 115
-            2201: 27(f64vec4) Load 2200
-            2202: 27(f64vec4) VectorShuffle 2201 2199 4 5 6 3
-                              Store 2200 2202
+            2190:130(f64vec3) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 2188 2189
+            2191:    116(ptr) AccessChain 31(data) 2185 115 35
+            2192:26(float64_t) CompositeExtract 2190 0
+                              Store 2191 2192
+            2193:    116(ptr) AccessChain 31(data) 2185 115 189
+            2194:26(float64_t) CompositeExtract 2190 1
+                              Store 2193 2194
+            2195:    116(ptr) AccessChain 31(data) 2185 115 202
+            2196:26(float64_t) CompositeExtract 2190 2
+                              Store 2195 2196
+            2197:      6(int) Load 8(invocation)
+            2198:    123(ptr) AccessChain 31(data) 115 115
+            2199: 27(f64vec4) Load 2198
+            2200:   17(ivec4) Load 19(ballot)
+            2201: 27(f64vec4) GroupNonUniformFMul 178 PartitionedExclusiveScanNV 2199 2200
+            2202:    123(ptr) AccessChain 31(data) 2197 115
+                              Store 2202 2201
             2203:      6(int) Load 8(invocation)
-            2204:    123(ptr) AccessChain 31(data) 115 115
-            2205: 27(f64vec4) Load 2204
+            2204:     36(ptr) AccessChain 31(data) 34 34 35
+            2205:   22(float) Load 2204
             2206:   17(ivec4) Load 19(ballot)
-            2207: 27(f64vec4) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2205 2206
-            2208:    123(ptr) AccessChain 31(data) 2203 115
+            2207:   22(float) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2205 2206
+            2208:     36(ptr) AccessChain 31(data) 2203 34 35
                               Store 2208 2207
             2209:      6(int) Load 8(invocation)
-            2210:     64(ptr) AccessChain 31(data) 34 63 35
-            2211:     24(int) Load 2210
-            2212:   17(ivec4) Load 19(ballot)
-            2213:     24(int) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2211 2212
-            2214:     64(ptr) AccessChain 31(data) 2209 63 35
-                              Store 2214 2213
-            2215:      6(int) Load 8(invocation)
-            2216:     71(ptr) AccessChain 31(data) 63 63
-            2217:   25(ivec4) Load 2216
-            2218:   70(ivec2) VectorShuffle 2217 2217 0 1
-            2219:   17(ivec4) Load 19(ballot)
-            2220:   70(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2218 2219
-            2221:     71(ptr) AccessChain 31(data) 2215 63
-            2222:   25(ivec4) Load 2221
-            2223:   25(ivec4) VectorShuffle 2222 2220 4 5 2 3
-                              Store 2221 2223
-            2224:      6(int) Load 8(invocation)
-            2225:     71(ptr) AccessChain 31(data) 33 63
-            2226:   25(ivec4) Load 2225
-            2227:   78(ivec3) VectorShuffle 2226 2226 0 1 2
-            2228:   17(ivec4) Load 19(ballot)
-            2229:   78(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2227 2228
-            2230:     71(ptr) AccessChain 31(data) 2224 63
-            2231:   25(ivec4) Load 2230
-            2232:   25(ivec4) VectorShuffle 2231 2229 4 5 6 3
-                              Store 2230 2232
-            2233:      6(int) Load 8(invocation)
-            2234:     71(ptr) AccessChain 31(data) 115 63
-            2235:   25(ivec4) Load 2234
-            2236:   17(ivec4) Load 19(ballot)
-            2237:   25(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2235 2236
-            2238:     71(ptr) AccessChain 31(data) 2233 63
-                              Store 2238 2237
-            2239:      6(int) Load 8(invocation)
-            2240:     90(ptr) AccessChain 31(data) 34 33 35
-            2241:      6(int) Load 2240
-            2242:   17(ivec4) Load 19(ballot)
-            2243:      6(int) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2241 2242
-            2244:     90(ptr) AccessChain 31(data) 2239 33 35
-                              Store 2244 2243
-            2245:      6(int) Load 8(invocation)
-            2246:     40(ptr) AccessChain 31(data) 63 33
-            2247:   17(ivec4) Load 2246
-            2248:   96(ivec2) VectorShuffle 2247 2247 0 1
-            2249:   17(ivec4) Load 19(ballot)
-            2250:   96(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2248 2249
-            2251:     40(ptr) AccessChain 31(data) 2245 33
-            2252:   17(ivec4) Load 2251
-            2253:   17(ivec4) VectorShuffle 2252 2250 4 5 2 3
-                              Store 2251 2253
-            2254:      6(int) Load 8(invocation)
-            2255:     40(ptr) AccessChain 31(data) 33 33
-            2256:   17(ivec4) Load 2255
-            2257:  103(ivec3) VectorShuffle 2256 2256 0 1 2
-            2258:   17(ivec4) Load 19(ballot)
-            2259:  103(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2257 2258
-            2260:     40(ptr) AccessChain 31(data) 2254 33
-            2261:   17(ivec4) Load 2260
-            2262:   17(ivec4) VectorShuffle 2261 2259 4 5 6 3
-                              Store 2260 2262
-            2263:      6(int) Load 8(invocation)
-            2264:     40(ptr) AccessChain 31(data) 115 33
-            2265:   17(ivec4) Load 2264
-            2266:   17(ivec4) Load 19(ballot)
-            2267:   17(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2265 2266
-            2268:     40(ptr) AccessChain 31(data) 2263 33
-                              Store 2268 2267
-            2269:      6(int) Load 8(invocation)
-            2270:     64(ptr) AccessChain 31(data) 34 63 35
-            2271:     24(int) Load 2270
-            2272:   144(bool) SLessThan 2271 34
-            2273:   17(ivec4) Load 19(ballot)
-            2274:   144(bool) GroupNonUniformLogicalAnd 178 PartitionedExclusiveScanNV 2272 2273
-            2275:     24(int) Select 2274 63 34
-            2276:     64(ptr) AccessChain 31(data) 2269 63 35
+            2210:     44(ptr) AccessChain 31(data) 63 34
+            2211:   23(fvec4) Load 2210
+            2212:   43(fvec2) VectorShuffle 2211 2211 0 1
+            2213:   17(ivec4) Load 19(ballot)
+            2214:   43(fvec2) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2212 2213
+            2215:     36(ptr) AccessChain 31(data) 2209 34 35
+            2216:   22(float) CompositeExtract 2214 0
+                              Store 2215 2216
+            2217:     36(ptr) AccessChain 31(data) 2209 34 189
+            2218:   22(float) CompositeExtract 2214 1
+                              Store 2217 2218
+            2219:      6(int) Load 8(invocation)
+            2220:     44(ptr) AccessChain 31(data) 33 34
+            2221:   23(fvec4) Load 2220
+            2222:   51(fvec3) VectorShuffle 2221 2221 0 1 2
+            2223:   17(ivec4) Load 19(ballot)
+            2224:   51(fvec3) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2222 2223
+            2225:     36(ptr) AccessChain 31(data) 2219 34 35
+            2226:   22(float) CompositeExtract 2224 0
+                              Store 2225 2226
+            2227:     36(ptr) AccessChain 31(data) 2219 34 189
+            2228:   22(float) CompositeExtract 2224 1
+                              Store 2227 2228
+            2229:     36(ptr) AccessChain 31(data) 2219 34 202
+            2230:   22(float) CompositeExtract 2224 2
+                              Store 2229 2230
+            2231:      6(int) Load 8(invocation)
+            2232:     44(ptr) AccessChain 31(data) 115 34
+            2233:   23(fvec4) Load 2232
+            2234:   17(ivec4) Load 19(ballot)
+            2235:   23(fvec4) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2233 2234
+            2236:     44(ptr) AccessChain 31(data) 2231 34
+                              Store 2236 2235
+            2237:      6(int) Load 8(invocation)
+            2238:     64(ptr) AccessChain 31(data) 34 63 35
+            2239:     24(int) Load 2238
+            2240:   17(ivec4) Load 19(ballot)
+            2241:     24(int) GroupNonUniformSMin 178 PartitionedExclusiveScanNV 2239 2240
+            2242:     64(ptr) AccessChain 31(data) 2237 63 35
+                              Store 2242 2241
+            2243:      6(int) Load 8(invocation)
+            2244:     71(ptr) AccessChain 31(data) 63 63
+            2245:   25(ivec4) Load 2244
+            2246:   70(ivec2) VectorShuffle 2245 2245 0 1
+            2247:   17(ivec4) Load 19(ballot)
+            2248:   70(ivec2) GroupNonUniformSMin 178 PartitionedExclusiveScanNV 2246 2247
+            2249:     64(ptr) AccessChain 31(data) 2243 63 35
+            2250:     24(int) CompositeExtract 2248 0
+                              Store 2249 2250
+            2251:     64(ptr) AccessChain 31(data) 2243 63 189
+            2252:     24(int) CompositeExtract 2248 1
+                              Store 2251 2252
+            2253:      6(int) Load 8(invocation)
+            2254:     71(ptr) AccessChain 31(data) 33 63
+            2255:   25(ivec4) Load 2254
+            2256:   78(ivec3) VectorShuffle 2255 2255 0 1 2
+            2257:   17(ivec4) Load 19(ballot)
+            2258:   78(ivec3) GroupNonUniformSMin 178 PartitionedExclusiveScanNV 2256 2257
+            2259:     64(ptr) AccessChain 31(data) 2253 63 35
+            2260:     24(int) CompositeExtract 2258 0
+                              Store 2259 2260
+            2261:     64(ptr) AccessChain 31(data) 2253 63 189
+            2262:     24(int) CompositeExtract 2258 1
+                              Store 2261 2262
+            2263:     64(ptr) AccessChain 31(data) 2253 63 202
+            2264:     24(int) CompositeExtract 2258 2
+                              Store 2263 2264
+            2265:      6(int) Load 8(invocation)
+            2266:     71(ptr) AccessChain 31(data) 115 63
+            2267:   25(ivec4) Load 2266
+            2268:   17(ivec4) Load 19(ballot)
+            2269:   25(ivec4) GroupNonUniformSMin 178 PartitionedExclusiveScanNV 2267 2268
+            2270:     71(ptr) AccessChain 31(data) 2265 63
+                              Store 2270 2269
+            2271:      6(int) Load 8(invocation)
+            2272:     90(ptr) AccessChain 31(data) 34 33 35
+            2273:      6(int) Load 2272
+            2274:   17(ivec4) Load 19(ballot)
+            2275:      6(int) GroupNonUniformUMin 178 PartitionedExclusiveScanNV 2273 2274
+            2276:     90(ptr) AccessChain 31(data) 2271 33 35
                               Store 2276 2275
             2277:      6(int) Load 8(invocation)
-            2278:     71(ptr) AccessChain 31(data) 63 63
-            2279:   25(ivec4) Load 2278
-            2280:   70(ivec2) VectorShuffle 2279 2279 0 1
-            2281:  152(bvec2) SLessThan 2280 727
-            2282:   17(ivec4) Load 19(ballot)
-            2283:  152(bvec2) GroupNonUniformLogicalAnd 178 PartitionedExclusiveScanNV 2281 2282
-            2284:   70(ivec2) Select 2283 731 727
-            2285:     71(ptr) AccessChain 31(data) 2277 63
-            2286:   25(ivec4) Load 2285
-            2287:   25(ivec4) VectorShuffle 2286 2284 4 5 2 3
-                              Store 2285 2287
-            2288:      6(int) Load 8(invocation)
-            2289:     71(ptr) AccessChain 31(data) 63 63
-            2290:   25(ivec4) Load 2289
-            2291:   78(ivec3) VectorShuffle 2290 2290 0 1 2
-            2292:  161(bvec3) SLessThan 2291 740
-            2293:   17(ivec4) Load 19(ballot)
-            2294:  161(bvec3) GroupNonUniformLogicalAnd 178 PartitionedExclusiveScanNV 2292 2293
-            2295:   78(ivec3) Select 2294 744 740
-            2296:     71(ptr) AccessChain 31(data) 2288 63
-            2297:   25(ivec4) Load 2296
-            2298:   25(ivec4) VectorShuffle 2297 2295 4 5 6 3
-                              Store 2296 2298
+            2278:     40(ptr) AccessChain 31(data) 63 33
+            2279:   17(ivec4) Load 2278
+            2280:   96(ivec2) VectorShuffle 2279 2279 0 1
+            2281:   17(ivec4) Load 19(ballot)
+            2282:   96(ivec2) GroupNonUniformUMin 178 PartitionedExclusiveScanNV 2280 2281
+            2283:     90(ptr) AccessChain 31(data) 2277 33 35
+            2284:      6(int) CompositeExtract 2282 0
+                              Store 2283 2284
+            2285:     90(ptr) AccessChain 31(data) 2277 33 189
+            2286:      6(int) CompositeExtract 2282 1
+                              Store 2285 2286
+            2287:      6(int) Load 8(invocation)
+            2288:     40(ptr) AccessChain 31(data) 33 33
+            2289:   17(ivec4) Load 2288
+            2290:  103(ivec3) VectorShuffle 2289 2289 0 1 2
+            2291:   17(ivec4) Load 19(ballot)
+            2292:  103(ivec3) GroupNonUniformUMin 178 PartitionedExclusiveScanNV 2290 2291
+            2293:     90(ptr) AccessChain 31(data) 2287 33 35
+            2294:      6(int) CompositeExtract 2292 0
+                              Store 2293 2294
+            2295:     90(ptr) AccessChain 31(data) 2287 33 189
+            2296:      6(int) CompositeExtract 2292 1
+                              Store 2295 2296
+            2297:     90(ptr) AccessChain 31(data) 2287 33 202
+            2298:      6(int) CompositeExtract 2292 2
+                              Store 2297 2298
             2299:      6(int) Load 8(invocation)
-            2300:     71(ptr) AccessChain 31(data) 63 63
-            2301:   25(ivec4) Load 2300
-            2302:  169(bvec4) SLessThan 2301 752
-            2303:   17(ivec4) Load 19(ballot)
-            2304:  169(bvec4) GroupNonUniformLogicalAnd 178 PartitionedExclusiveScanNV 2302 2303
-            2305:   25(ivec4) Select 2304 756 752
-            2306:     71(ptr) AccessChain 31(data) 2299 63
-                              Store 2306 2305
-            2307:      6(int) Load 8(invocation)
-            2308:     64(ptr) AccessChain 31(data) 34 63 35
-            2309:     24(int) Load 2308
-            2310:   17(ivec4) Load 19(ballot)
-            2311:     24(int) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2309 2310
-            2312:     64(ptr) AccessChain 31(data) 2307 63 35
-                              Store 2312 2311
-            2313:      6(int) Load 8(invocation)
-            2314:     71(ptr) AccessChain 31(data) 63 63
-            2315:   25(ivec4) Load 2314
-            2316:   70(ivec2) VectorShuffle 2315 2315 0 1
-            2317:   17(ivec4) Load 19(ballot)
-            2318:   70(ivec2) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2316 2317
-            2319:     71(ptr) AccessChain 31(data) 2313 63
-            2320:   25(ivec4) Load 2319
-            2321:   25(ivec4) VectorShuffle 2320 2318 4 5 2 3
-                              Store 2319 2321
-            2322:      6(int) Load 8(invocation)
-            2323:     71(ptr) AccessChain 31(data) 33 63
-            2324:   25(ivec4) Load 2323
-            2325:   78(ivec3) VectorShuffle 2324 2324 0 1 2
-            2326:   17(ivec4) Load 19(ballot)
-            2327:   78(ivec3) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2325 2326
-            2328:     71(ptr) AccessChain 31(data) 2322 63
-            2329:   25(ivec4) Load 2328
-            2330:   25(ivec4) VectorShuffle 2329 2327 4 5 6 3
-                              Store 2328 2330
-            2331:      6(int) Load 8(invocation)
-            2332:     71(ptr) AccessChain 31(data) 115 63
-            2333:   25(ivec4) Load 2332
-            2334:   17(ivec4) Load 19(ballot)
-            2335:   25(ivec4) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2333 2334
-            2336:     71(ptr) AccessChain 31(data) 2331 63
-                              Store 2336 2335
-            2337:      6(int) Load 8(invocation)
-            2338:     90(ptr) AccessChain 31(data) 34 33 35
-            2339:      6(int) Load 2338
-            2340:   17(ivec4) Load 19(ballot)
-            2341:      6(int) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2339 2340
-            2342:     90(ptr) AccessChain 31(data) 2337 33 35
-                              Store 2342 2341
-            2343:      6(int) Load 8(invocation)
-            2344:     40(ptr) AccessChain 31(data) 63 33
-            2345:   17(ivec4) Load 2344
-            2346:   96(ivec2) VectorShuffle 2345 2345 0 1
-            2347:   17(ivec4) Load 19(ballot)
-            2348:   96(ivec2) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2346 2347
-            2349:     40(ptr) AccessChain 31(data) 2343 33
-            2350:   17(ivec4) Load 2349
-            2351:   17(ivec4) VectorShuffle 2350 2348 4 5 2 3
-                              Store 2349 2351
-            2352:      6(int) Load 8(invocation)
-            2353:     40(ptr) AccessChain 31(data) 33 33
-            2354:   17(ivec4) Load 2353
-            2355:  103(ivec3) VectorShuffle 2354 2354 0 1 2
-            2356:   17(ivec4) Load 19(ballot)
-            2357:  103(ivec3) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2355 2356
-            2358:     40(ptr) AccessChain 31(data) 2352 33
-            2359:   17(ivec4) Load 2358
-            2360:   17(ivec4) VectorShuffle 2359 2357 4 5 6 3
-                              Store 2358 2360
-            2361:      6(int) Load 8(invocation)
-            2362:     40(ptr) AccessChain 31(data) 115 33
-            2363:   17(ivec4) Load 2362
-            2364:   17(ivec4) Load 19(ballot)
-            2365:   17(ivec4) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2363 2364
-            2366:     40(ptr) AccessChain 31(data) 2361 33
-                              Store 2366 2365
+            2300:     40(ptr) AccessChain 31(data) 115 33
+            2301:   17(ivec4) Load 2300
+            2302:   17(ivec4) Load 19(ballot)
+            2303:   17(ivec4) GroupNonUniformUMin 178 PartitionedExclusiveScanNV 2301 2302
+            2304:     40(ptr) AccessChain 31(data) 2299 33
+                              Store 2304 2303
+            2305:      6(int) Load 8(invocation)
+            2306:    116(ptr) AccessChain 31(data) 34 115 35
+            2307:26(float64_t) Load 2306
+            2308:   17(ivec4) Load 19(ballot)
+            2309:26(float64_t) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2307 2308
+            2310:    116(ptr) AccessChain 31(data) 2305 115 35
+                              Store 2310 2309
+            2311:      6(int) Load 8(invocation)
+            2312:    123(ptr) AccessChain 31(data) 63 115
+            2313: 27(f64vec4) Load 2312
+            2314:122(f64vec2) VectorShuffle 2313 2313 0 1
+            2315:   17(ivec4) Load 19(ballot)
+            2316:122(f64vec2) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2314 2315
+            2317:    116(ptr) AccessChain 31(data) 2311 115 35
+            2318:26(float64_t) CompositeExtract 2316 0
+                              Store 2317 2318
+            2319:    116(ptr) AccessChain 31(data) 2311 115 189
+            2320:26(float64_t) CompositeExtract 2316 1
+                              Store 2319 2320
+            2321:      6(int) Load 8(invocation)
+            2322:    123(ptr) AccessChain 31(data) 33 115
+            2323: 27(f64vec4) Load 2322
+            2324:130(f64vec3) VectorShuffle 2323 2323 0 1 2
+            2325:   17(ivec4) Load 19(ballot)
+            2326:130(f64vec3) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2324 2325
+            2327:    116(ptr) AccessChain 31(data) 2321 115 35
+            2328:26(float64_t) CompositeExtract 2326 0
+                              Store 2327 2328
+            2329:    116(ptr) AccessChain 31(data) 2321 115 189
+            2330:26(float64_t) CompositeExtract 2326 1
+                              Store 2329 2330
+            2331:    116(ptr) AccessChain 31(data) 2321 115 202
+            2332:26(float64_t) CompositeExtract 2326 2
+                              Store 2331 2332
+            2333:      6(int) Load 8(invocation)
+            2334:    123(ptr) AccessChain 31(data) 115 115
+            2335: 27(f64vec4) Load 2334
+            2336:   17(ivec4) Load 19(ballot)
+            2337: 27(f64vec4) GroupNonUniformFMin 178 PartitionedExclusiveScanNV 2335 2336
+            2338:    123(ptr) AccessChain 31(data) 2333 115
+                              Store 2338 2337
+            2339:      6(int) Load 8(invocation)
+            2340:     36(ptr) AccessChain 31(data) 34 34 35
+            2341:   22(float) Load 2340
+            2342:   17(ivec4) Load 19(ballot)
+            2343:   22(float) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2341 2342
+            2344:     36(ptr) AccessChain 31(data) 2339 34 35
+                              Store 2344 2343
+            2345:      6(int) Load 8(invocation)
+            2346:     44(ptr) AccessChain 31(data) 63 34
+            2347:   23(fvec4) Load 2346
+            2348:   43(fvec2) VectorShuffle 2347 2347 0 1
+            2349:   17(ivec4) Load 19(ballot)
+            2350:   43(fvec2) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2348 2349
+            2351:     36(ptr) AccessChain 31(data) 2345 34 35
+            2352:   22(float) CompositeExtract 2350 0
+                              Store 2351 2352
+            2353:     36(ptr) AccessChain 31(data) 2345 34 189
+            2354:   22(float) CompositeExtract 2350 1
+                              Store 2353 2354
+            2355:      6(int) Load 8(invocation)
+            2356:     44(ptr) AccessChain 31(data) 33 34
+            2357:   23(fvec4) Load 2356
+            2358:   51(fvec3) VectorShuffle 2357 2357 0 1 2
+            2359:   17(ivec4) Load 19(ballot)
+            2360:   51(fvec3) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2358 2359
+            2361:     36(ptr) AccessChain 31(data) 2355 34 35
+            2362:   22(float) CompositeExtract 2360 0
+                              Store 2361 2362
+            2363:     36(ptr) AccessChain 31(data) 2355 34 189
+            2364:   22(float) CompositeExtract 2360 1
+                              Store 2363 2364
+            2365:     36(ptr) AccessChain 31(data) 2355 34 202
+            2366:   22(float) CompositeExtract 2360 2
+                              Store 2365 2366
             2367:      6(int) Load 8(invocation)
-            2368:     64(ptr) AccessChain 31(data) 34 63 35
-            2369:     24(int) Load 2368
-            2370:   144(bool) SLessThan 2369 34
-            2371:   17(ivec4) Load 19(ballot)
-            2372:   144(bool) GroupNonUniformLogicalOr 178 PartitionedExclusiveScanNV 2370 2371
-            2373:     24(int) Select 2372 63 34
-            2374:     64(ptr) AccessChain 31(data) 2367 63 35
-                              Store 2374 2373
-            2375:      6(int) Load 8(invocation)
-            2376:     71(ptr) AccessChain 31(data) 63 63
-            2377:   25(ivec4) Load 2376
-            2378:   70(ivec2) VectorShuffle 2377 2377 0 1
-            2379:  152(bvec2) SLessThan 2378 727
-            2380:   17(ivec4) Load 19(ballot)
-            2381:  152(bvec2) GroupNonUniformLogicalOr 178 PartitionedExclusiveScanNV 2379 2380
-            2382:   70(ivec2) Select 2381 731 727
-            2383:     71(ptr) AccessChain 31(data) 2375 63
-            2384:   25(ivec4) Load 2383
-            2385:   25(ivec4) VectorShuffle 2384 2382 4 5 2 3
-                              Store 2383 2385
-            2386:      6(int) Load 8(invocation)
-            2387:     71(ptr) AccessChain 31(data) 63 63
-            2388:   25(ivec4) Load 2387
-            2389:   78(ivec3) VectorShuffle 2388 2388 0 1 2
-            2390:  161(bvec3) SLessThan 2389 740
-            2391:   17(ivec4) Load 19(ballot)
-            2392:  161(bvec3) GroupNonUniformLogicalOr 178 PartitionedExclusiveScanNV 2390 2391
-            2393:   78(ivec3) Select 2392 744 740
-            2394:     71(ptr) AccessChain 31(data) 2386 63
-            2395:   25(ivec4) Load 2394
-            2396:   25(ivec4) VectorShuffle 2395 2393 4 5 6 3
-                              Store 2394 2396
-            2397:      6(int) Load 8(invocation)
-            2398:     71(ptr) AccessChain 31(data) 63 63
-            2399:   25(ivec4) Load 2398
-            2400:  169(bvec4) SLessThan 2399 752
-            2401:   17(ivec4) Load 19(ballot)
-            2402:  169(bvec4) GroupNonUniformLogicalOr 178 PartitionedExclusiveScanNV 2400 2401
-            2403:   25(ivec4) Select 2402 756 752
-            2404:     71(ptr) AccessChain 31(data) 2397 63
-                              Store 2404 2403
-            2405:      6(int) Load 8(invocation)
-            2406:     64(ptr) AccessChain 31(data) 34 63 35
-            2407:     24(int) Load 2406
-            2408:   17(ivec4) Load 19(ballot)
-            2409:     24(int) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2407 2408
-            2410:     64(ptr) AccessChain 31(data) 2405 63 35
-                              Store 2410 2409
-            2411:      6(int) Load 8(invocation)
-            2412:     71(ptr) AccessChain 31(data) 63 63
-            2413:   25(ivec4) Load 2412
-            2414:   70(ivec2) VectorShuffle 2413 2413 0 1
-            2415:   17(ivec4) Load 19(ballot)
-            2416:   70(ivec2) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2414 2415
-            2417:     71(ptr) AccessChain 31(data) 2411 63
-            2418:   25(ivec4) Load 2417
-            2419:   25(ivec4) VectorShuffle 2418 2416 4 5 2 3
-                              Store 2417 2419
-            2420:      6(int) Load 8(invocation)
-            2421:     71(ptr) AccessChain 31(data) 33 63
-            2422:   25(ivec4) Load 2421
-            2423:   78(ivec3) VectorShuffle 2422 2422 0 1 2
-            2424:   17(ivec4) Load 19(ballot)
-            2425:   78(ivec3) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2423 2424
-            2426:     71(ptr) AccessChain 31(data) 2420 63
-            2427:   25(ivec4) Load 2426
-            2428:   25(ivec4) VectorShuffle 2427 2425 4 5 6 3
-                              Store 2426 2428
-            2429:      6(int) Load 8(invocation)
-            2430:     71(ptr) AccessChain 31(data) 115 63
-            2431:   25(ivec4) Load 2430
-            2432:   17(ivec4) Load 19(ballot)
-            2433:   25(ivec4) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2431 2432
-            2434:     71(ptr) AccessChain 31(data) 2429 63
-                              Store 2434 2433
+            2368:     44(ptr) AccessChain 31(data) 115 34
+            2369:   23(fvec4) Load 2368
+            2370:   17(ivec4) Load 19(ballot)
+            2371:   23(fvec4) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2369 2370
+            2372:     44(ptr) AccessChain 31(data) 2367 34
+                              Store 2372 2371
+            2373:      6(int) Load 8(invocation)
+            2374:     64(ptr) AccessChain 31(data) 34 63 35
+            2375:     24(int) Load 2374
+            2376:   17(ivec4) Load 19(ballot)
+            2377:     24(int) GroupNonUniformSMax 178 PartitionedExclusiveScanNV 2375 2376
+            2378:     64(ptr) AccessChain 31(data) 2373 63 35
+                              Store 2378 2377
+            2379:      6(int) Load 8(invocation)
+            2380:     71(ptr) AccessChain 31(data) 63 63
+            2381:   25(ivec4) Load 2380
+            2382:   70(ivec2) VectorShuffle 2381 2381 0 1
+            2383:   17(ivec4) Load 19(ballot)
+            2384:   70(ivec2) GroupNonUniformSMax 178 PartitionedExclusiveScanNV 2382 2383
+            2385:     64(ptr) AccessChain 31(data) 2379 63 35
+            2386:     24(int) CompositeExtract 2384 0
+                              Store 2385 2386
+            2387:     64(ptr) AccessChain 31(data) 2379 63 189
+            2388:     24(int) CompositeExtract 2384 1
+                              Store 2387 2388
+            2389:      6(int) Load 8(invocation)
+            2390:     71(ptr) AccessChain 31(data) 33 63
+            2391:   25(ivec4) Load 2390
+            2392:   78(ivec3) VectorShuffle 2391 2391 0 1 2
+            2393:   17(ivec4) Load 19(ballot)
+            2394:   78(ivec3) GroupNonUniformSMax 178 PartitionedExclusiveScanNV 2392 2393
+            2395:     64(ptr) AccessChain 31(data) 2389 63 35
+            2396:     24(int) CompositeExtract 2394 0
+                              Store 2395 2396
+            2397:     64(ptr) AccessChain 31(data) 2389 63 189
+            2398:     24(int) CompositeExtract 2394 1
+                              Store 2397 2398
+            2399:     64(ptr) AccessChain 31(data) 2389 63 202
+            2400:     24(int) CompositeExtract 2394 2
+                              Store 2399 2400
+            2401:      6(int) Load 8(invocation)
+            2402:     71(ptr) AccessChain 31(data) 115 63
+            2403:   25(ivec4) Load 2402
+            2404:   17(ivec4) Load 19(ballot)
+            2405:   25(ivec4) GroupNonUniformSMax 178 PartitionedExclusiveScanNV 2403 2404
+            2406:     71(ptr) AccessChain 31(data) 2401 63
+                              Store 2406 2405
+            2407:      6(int) Load 8(invocation)
+            2408:     90(ptr) AccessChain 31(data) 34 33 35
+            2409:      6(int) Load 2408
+            2410:   17(ivec4) Load 19(ballot)
+            2411:      6(int) GroupNonUniformUMax 178 PartitionedExclusiveScanNV 2409 2410
+            2412:     90(ptr) AccessChain 31(data) 2407 33 35
+                              Store 2412 2411
+            2413:      6(int) Load 8(invocation)
+            2414:     40(ptr) AccessChain 31(data) 63 33
+            2415:   17(ivec4) Load 2414
+            2416:   96(ivec2) VectorShuffle 2415 2415 0 1
+            2417:   17(ivec4) Load 19(ballot)
+            2418:   96(ivec2) GroupNonUniformUMax 178 PartitionedExclusiveScanNV 2416 2417
+            2419:     90(ptr) AccessChain 31(data) 2413 33 35
+            2420:      6(int) CompositeExtract 2418 0
+                              Store 2419 2420
+            2421:     90(ptr) AccessChain 31(data) 2413 33 189
+            2422:      6(int) CompositeExtract 2418 1
+                              Store 2421 2422
+            2423:      6(int) Load 8(invocation)
+            2424:     40(ptr) AccessChain 31(data) 33 33
+            2425:   17(ivec4) Load 2424
+            2426:  103(ivec3) VectorShuffle 2425 2425 0 1 2
+            2427:   17(ivec4) Load 19(ballot)
+            2428:  103(ivec3) GroupNonUniformUMax 178 PartitionedExclusiveScanNV 2426 2427
+            2429:     90(ptr) AccessChain 31(data) 2423 33 35
+            2430:      6(int) CompositeExtract 2428 0
+                              Store 2429 2430
+            2431:     90(ptr) AccessChain 31(data) 2423 33 189
+            2432:      6(int) CompositeExtract 2428 1
+                              Store 2431 2432
+            2433:     90(ptr) AccessChain 31(data) 2423 33 202
+            2434:      6(int) CompositeExtract 2428 2
+                              Store 2433 2434
             2435:      6(int) Load 8(invocation)
-            2436:     90(ptr) AccessChain 31(data) 34 33 35
-            2437:      6(int) Load 2436
+            2436:     40(ptr) AccessChain 31(data) 115 33
+            2437:   17(ivec4) Load 2436
             2438:   17(ivec4) Load 19(ballot)
-            2439:      6(int) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2437 2438
-            2440:     90(ptr) AccessChain 31(data) 2435 33 35
+            2439:   17(ivec4) GroupNonUniformUMax 178 PartitionedExclusiveScanNV 2437 2438
+            2440:     40(ptr) AccessChain 31(data) 2435 33
                               Store 2440 2439
             2441:      6(int) Load 8(invocation)
-            2442:     40(ptr) AccessChain 31(data) 63 33
-            2443:   17(ivec4) Load 2442
-            2444:   96(ivec2) VectorShuffle 2443 2443 0 1
-            2445:   17(ivec4) Load 19(ballot)
-            2446:   96(ivec2) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2444 2445
-            2447:     40(ptr) AccessChain 31(data) 2441 33
-            2448:   17(ivec4) Load 2447
-            2449:   17(ivec4) VectorShuffle 2448 2446 4 5 2 3
-                              Store 2447 2449
-            2450:      6(int) Load 8(invocation)
-            2451:     40(ptr) AccessChain 31(data) 33 33
-            2452:   17(ivec4) Load 2451
-            2453:  103(ivec3) VectorShuffle 2452 2452 0 1 2
-            2454:   17(ivec4) Load 19(ballot)
-            2455:  103(ivec3) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2453 2454
-            2456:     40(ptr) AccessChain 31(data) 2450 33
-            2457:   17(ivec4) Load 2456
-            2458:   17(ivec4) VectorShuffle 2457 2455 4 5 6 3
-                              Store 2456 2458
-            2459:      6(int) Load 8(invocation)
-            2460:     40(ptr) AccessChain 31(data) 115 33
-            2461:   17(ivec4) Load 2460
-            2462:   17(ivec4) Load 19(ballot)
-            2463:   17(ivec4) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2461 2462
-            2464:     40(ptr) AccessChain 31(data) 2459 33
-                              Store 2464 2463
-            2465:      6(int) Load 8(invocation)
-            2466:     64(ptr) AccessChain 31(data) 34 63 35
-            2467:     24(int) Load 2466
-            2468:   144(bool) SLessThan 2467 34
-            2469:   17(ivec4) Load 19(ballot)
-            2470:   144(bool) GroupNonUniformLogicalXor 178 PartitionedExclusiveScanNV 2468 2469
-            2471:     24(int) Select 2470 63 34
-            2472:     64(ptr) AccessChain 31(data) 2465 63 35
-                              Store 2472 2471
-            2473:      6(int) Load 8(invocation)
-            2474:     71(ptr) AccessChain 31(data) 63 63
-            2475:   25(ivec4) Load 2474
-            2476:   70(ivec2) VectorShuffle 2475 2475 0 1
-            2477:  152(bvec2) SLessThan 2476 727
+            2442:    116(ptr) AccessChain 31(data) 34 115 35
+            2443:26(float64_t) Load 2442
+            2444:   17(ivec4) Load 19(ballot)
+            2445:26(float64_t) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2443 2444
+            2446:    116(ptr) AccessChain 31(data) 2441 115 35
+                              Store 2446 2445
+            2447:      6(int) Load 8(invocation)
+            2448:    123(ptr) AccessChain 31(data) 63 115
+            2449: 27(f64vec4) Load 2448
+            2450:122(f64vec2) VectorShuffle 2449 2449 0 1
+            2451:   17(ivec4) Load 19(ballot)
+            2452:122(f64vec2) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2450 2451
+            2453:    116(ptr) AccessChain 31(data) 2447 115 35
+            2454:26(float64_t) CompositeExtract 2452 0
+                              Store 2453 2454
+            2455:    116(ptr) AccessChain 31(data) 2447 115 189
+            2456:26(float64_t) CompositeExtract 2452 1
+                              Store 2455 2456
+            2457:      6(int) Load 8(invocation)
+            2458:    123(ptr) AccessChain 31(data) 33 115
+            2459: 27(f64vec4) Load 2458
+            2460:130(f64vec3) VectorShuffle 2459 2459 0 1 2
+            2461:   17(ivec4) Load 19(ballot)
+            2462:130(f64vec3) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2460 2461
+            2463:    116(ptr) AccessChain 31(data) 2457 115 35
+            2464:26(float64_t) CompositeExtract 2462 0
+                              Store 2463 2464
+            2465:    116(ptr) AccessChain 31(data) 2457 115 189
+            2466:26(float64_t) CompositeExtract 2462 1
+                              Store 2465 2466
+            2467:    116(ptr) AccessChain 31(data) 2457 115 202
+            2468:26(float64_t) CompositeExtract 2462 2
+                              Store 2467 2468
+            2469:      6(int) Load 8(invocation)
+            2470:    123(ptr) AccessChain 31(data) 115 115
+            2471: 27(f64vec4) Load 2470
+            2472:   17(ivec4) Load 19(ballot)
+            2473: 27(f64vec4) GroupNonUniformFMax 178 PartitionedExclusiveScanNV 2471 2472
+            2474:    123(ptr) AccessChain 31(data) 2469 115
+                              Store 2474 2473
+            2475:      6(int) Load 8(invocation)
+            2476:     64(ptr) AccessChain 31(data) 34 63 35
+            2477:     24(int) Load 2476
             2478:   17(ivec4) Load 19(ballot)
-            2479:  152(bvec2) GroupNonUniformLogicalXor 178 PartitionedExclusiveScanNV 2477 2478
-            2480:   70(ivec2) Select 2479 731 727
-            2481:     71(ptr) AccessChain 31(data) 2473 63
-            2482:   25(ivec4) Load 2481
-            2483:   25(ivec4) VectorShuffle 2482 2480 4 5 2 3
-                              Store 2481 2483
-            2484:      6(int) Load 8(invocation)
-            2485:     71(ptr) AccessChain 31(data) 63 63
-            2486:   25(ivec4) Load 2485
-            2487:   78(ivec3) VectorShuffle 2486 2486 0 1 2
-            2488:  161(bvec3) SLessThan 2487 740
-            2489:   17(ivec4) Load 19(ballot)
-            2490:  161(bvec3) GroupNonUniformLogicalXor 178 PartitionedExclusiveScanNV 2488 2489
-            2491:   78(ivec3) Select 2490 744 740
-            2492:     71(ptr) AccessChain 31(data) 2484 63
+            2479:     24(int) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2477 2478
+            2480:     64(ptr) AccessChain 31(data) 2475 63 35
+                              Store 2480 2479
+            2481:      6(int) Load 8(invocation)
+            2482:     71(ptr) AccessChain 31(data) 63 63
+            2483:   25(ivec4) Load 2482
+            2484:   70(ivec2) VectorShuffle 2483 2483 0 1
+            2485:   17(ivec4) Load 19(ballot)
+            2486:   70(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2484 2485
+            2487:     64(ptr) AccessChain 31(data) 2481 63 35
+            2488:     24(int) CompositeExtract 2486 0
+                              Store 2487 2488
+            2489:     64(ptr) AccessChain 31(data) 2481 63 189
+            2490:     24(int) CompositeExtract 2486 1
+                              Store 2489 2490
+            2491:      6(int) Load 8(invocation)
+            2492:     71(ptr) AccessChain 31(data) 33 63
             2493:   25(ivec4) Load 2492
-            2494:   25(ivec4) VectorShuffle 2493 2491 4 5 6 3
-                              Store 2492 2494
-            2495:      6(int) Load 8(invocation)
-            2496:     71(ptr) AccessChain 31(data) 63 63
-            2497:   25(ivec4) Load 2496
-            2498:  169(bvec4) SLessThan 2497 752
-            2499:   17(ivec4) Load 19(ballot)
-            2500:  169(bvec4) GroupNonUniformLogicalXor 178 PartitionedExclusiveScanNV 2498 2499
-            2501:   25(ivec4) Select 2500 756 752
-            2502:     71(ptr) AccessChain 31(data) 2495 63
-                              Store 2502 2501
+            2494:   78(ivec3) VectorShuffle 2493 2493 0 1 2
+            2495:   17(ivec4) Load 19(ballot)
+            2496:   78(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2494 2495
+            2497:     64(ptr) AccessChain 31(data) 2491 63 35
+            2498:     24(int) CompositeExtract 2496 0
+                              Store 2497 2498
+            2499:     64(ptr) AccessChain 31(data) 2491 63 189
+            2500:     24(int) CompositeExtract 2496 1
+                              Store 2499 2500
+            2501:     64(ptr) AccessChain 31(data) 2491 63 202
+            2502:     24(int) CompositeExtract 2496 2
+                              Store 2501 2502
+            2503:      6(int) Load 8(invocation)
+            2504:     71(ptr) AccessChain 31(data) 115 63
+            2505:   25(ivec4) Load 2504
+            2506:   17(ivec4) Load 19(ballot)
+            2507:   25(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2505 2506
+            2508:     71(ptr) AccessChain 31(data) 2503 63
+                              Store 2508 2507
+            2509:      6(int) Load 8(invocation)
+            2510:     90(ptr) AccessChain 31(data) 34 33 35
+            2511:      6(int) Load 2510
+            2512:   17(ivec4) Load 19(ballot)
+            2513:      6(int) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2511 2512
+            2514:     90(ptr) AccessChain 31(data) 2509 33 35
+                              Store 2514 2513
+            2515:      6(int) Load 8(invocation)
+            2516:     40(ptr) AccessChain 31(data) 63 33
+            2517:   17(ivec4) Load 2516
+            2518:   96(ivec2) VectorShuffle 2517 2517 0 1
+            2519:   17(ivec4) Load 19(ballot)
+            2520:   96(ivec2) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2518 2519
+            2521:     90(ptr) AccessChain 31(data) 2515 33 35
+            2522:      6(int) CompositeExtract 2520 0
+                              Store 2521 2522
+            2523:     90(ptr) AccessChain 31(data) 2515 33 189
+            2524:      6(int) CompositeExtract 2520 1
+                              Store 2523 2524
+            2525:      6(int) Load 8(invocation)
+            2526:     40(ptr) AccessChain 31(data) 33 33
+            2527:   17(ivec4) Load 2526
+            2528:  103(ivec3) VectorShuffle 2527 2527 0 1 2
+            2529:   17(ivec4) Load 19(ballot)
+            2530:  103(ivec3) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2528 2529
+            2531:     90(ptr) AccessChain 31(data) 2525 33 35
+            2532:      6(int) CompositeExtract 2530 0
+                              Store 2531 2532
+            2533:     90(ptr) AccessChain 31(data) 2525 33 189
+            2534:      6(int) CompositeExtract 2530 1
+                              Store 2533 2534
+            2535:     90(ptr) AccessChain 31(data) 2525 33 202
+            2536:      6(int) CompositeExtract 2530 2
+                              Store 2535 2536
+            2537:      6(int) Load 8(invocation)
+            2538:     40(ptr) AccessChain 31(data) 115 33
+            2539:   17(ivec4) Load 2538
+            2540:   17(ivec4) Load 19(ballot)
+            2541:   17(ivec4) GroupNonUniformBitwiseAnd 178 PartitionedExclusiveScanNV 2539 2540
+            2542:     40(ptr) AccessChain 31(data) 2537 33
+                              Store 2542 2541
+            2543:      6(int) Load 8(invocation)
+            2544:     64(ptr) AccessChain 31(data) 34 63 35
+            2545:     24(int) Load 2544
+            2546:   144(bool) SLessThan 2545 34
+            2547:   17(ivec4) Load 19(ballot)
+            2548:   144(bool) GroupNonUniformLogicalAnd 178 PartitionedExclusiveScanNV 2546 2547
+            2549:     24(int) Select 2548 63 34
+            2550:     64(ptr) AccessChain 31(data) 2543 63 35
+                              Store 2550 2549
+            2551:      6(int) Load 8(invocation)
+            2552:     71(ptr) AccessChain 31(data) 63 63
+            2553:   25(ivec4) Load 2552
+            2554:   70(ivec2) VectorShuffle 2553 2553 0 1
+            2555:  152(bvec2) SLessThan 2554 801
+            2556:   17(ivec4) Load 19(ballot)
+            2557:  152(bvec2) GroupNonUniformLogicalAnd 178 PartitionedExclusiveScanNV 2555 2556
+            2558:   70(ivec2) Select 2557 805 801
+            2559:     64(ptr) AccessChain 31(data) 2551 63 35
+            2560:     24(int) CompositeExtract 2558 0
+                              Store 2559 2560
+            2561:     64(ptr) AccessChain 31(data) 2551 63 189
+            2562:     24(int) CompositeExtract 2558 1
+                              Store 2561 2562
+            2563:      6(int) Load 8(invocation)
+            2564:     71(ptr) AccessChain 31(data) 63 63
+            2565:   25(ivec4) Load 2564
+            2566:   78(ivec3) VectorShuffle 2565 2565 0 1 2
+            2567:  161(bvec3) SLessThan 2566 815
+            2568:   17(ivec4) Load 19(ballot)
+            2569:  161(bvec3) GroupNonUniformLogicalAnd 178 PartitionedExclusiveScanNV 2567 2568
+            2570:   78(ivec3) Select 2569 819 815
+            2571:     64(ptr) AccessChain 31(data) 2563 63 35
+            2572:     24(int) CompositeExtract 2570 0
+                              Store 2571 2572
+            2573:     64(ptr) AccessChain 31(data) 2563 63 189
+            2574:     24(int) CompositeExtract 2570 1
+                              Store 2573 2574
+            2575:     64(ptr) AccessChain 31(data) 2563 63 202
+            2576:     24(int) CompositeExtract 2570 2
+                              Store 2575 2576
+            2577:      6(int) Load 8(invocation)
+            2578:     71(ptr) AccessChain 31(data) 63 63
+            2579:   25(ivec4) Load 2578
+            2580:  169(bvec4) SLessThan 2579 830
+            2581:   17(ivec4) Load 19(ballot)
+            2582:  169(bvec4) GroupNonUniformLogicalAnd 178 PartitionedExclusiveScanNV 2580 2581
+            2583:   25(ivec4) Select 2582 834 830
+            2584:     71(ptr) AccessChain 31(data) 2577 63
+                              Store 2584 2583
+            2585:      6(int) Load 8(invocation)
+            2586:     64(ptr) AccessChain 31(data) 34 63 35
+            2587:     24(int) Load 2586
+            2588:   17(ivec4) Load 19(ballot)
+            2589:     24(int) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2587 2588
+            2590:     64(ptr) AccessChain 31(data) 2585 63 35
+                              Store 2590 2589
+            2591:      6(int) Load 8(invocation)
+            2592:     71(ptr) AccessChain 31(data) 63 63
+            2593:   25(ivec4) Load 2592
+            2594:   70(ivec2) VectorShuffle 2593 2593 0 1
+            2595:   17(ivec4) Load 19(ballot)
+            2596:   70(ivec2) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2594 2595
+            2597:     64(ptr) AccessChain 31(data) 2591 63 35
+            2598:     24(int) CompositeExtract 2596 0
+                              Store 2597 2598
+            2599:     64(ptr) AccessChain 31(data) 2591 63 189
+            2600:     24(int) CompositeExtract 2596 1
+                              Store 2599 2600
+            2601:      6(int) Load 8(invocation)
+            2602:     71(ptr) AccessChain 31(data) 33 63
+            2603:   25(ivec4) Load 2602
+            2604:   78(ivec3) VectorShuffle 2603 2603 0 1 2
+            2605:   17(ivec4) Load 19(ballot)
+            2606:   78(ivec3) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2604 2605
+            2607:     64(ptr) AccessChain 31(data) 2601 63 35
+            2608:     24(int) CompositeExtract 2606 0
+                              Store 2607 2608
+            2609:     64(ptr) AccessChain 31(data) 2601 63 189
+            2610:     24(int) CompositeExtract 2606 1
+                              Store 2609 2610
+            2611:     64(ptr) AccessChain 31(data) 2601 63 202
+            2612:     24(int) CompositeExtract 2606 2
+                              Store 2611 2612
+            2613:      6(int) Load 8(invocation)
+            2614:     71(ptr) AccessChain 31(data) 115 63
+            2615:   25(ivec4) Load 2614
+            2616:   17(ivec4) Load 19(ballot)
+            2617:   25(ivec4) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2615 2616
+            2618:     71(ptr) AccessChain 31(data) 2613 63
+                              Store 2618 2617
+            2619:      6(int) Load 8(invocation)
+            2620:     90(ptr) AccessChain 31(data) 34 33 35
+            2621:      6(int) Load 2620
+            2622:   17(ivec4) Load 19(ballot)
+            2623:      6(int) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2621 2622
+            2624:     90(ptr) AccessChain 31(data) 2619 33 35
+                              Store 2624 2623
+            2625:      6(int) Load 8(invocation)
+            2626:     40(ptr) AccessChain 31(data) 63 33
+            2627:   17(ivec4) Load 2626
+            2628:   96(ivec2) VectorShuffle 2627 2627 0 1
+            2629:   17(ivec4) Load 19(ballot)
+            2630:   96(ivec2) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2628 2629
+            2631:     90(ptr) AccessChain 31(data) 2625 33 35
+            2632:      6(int) CompositeExtract 2630 0
+                              Store 2631 2632
+            2633:     90(ptr) AccessChain 31(data) 2625 33 189
+            2634:      6(int) CompositeExtract 2630 1
+                              Store 2633 2634
+            2635:      6(int) Load 8(invocation)
+            2636:     40(ptr) AccessChain 31(data) 33 33
+            2637:   17(ivec4) Load 2636
+            2638:  103(ivec3) VectorShuffle 2637 2637 0 1 2
+            2639:   17(ivec4) Load 19(ballot)
+            2640:  103(ivec3) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2638 2639
+            2641:     90(ptr) AccessChain 31(data) 2635 33 35
+            2642:      6(int) CompositeExtract 2640 0
+                              Store 2641 2642
+            2643:     90(ptr) AccessChain 31(data) 2635 33 189
+            2644:      6(int) CompositeExtract 2640 1
+                              Store 2643 2644
+            2645:     90(ptr) AccessChain 31(data) 2635 33 202
+            2646:      6(int) CompositeExtract 2640 2
+                              Store 2645 2646
+            2647:      6(int) Load 8(invocation)
+            2648:     40(ptr) AccessChain 31(data) 115 33
+            2649:   17(ivec4) Load 2648
+            2650:   17(ivec4) Load 19(ballot)
+            2651:   17(ivec4) GroupNonUniformBitwiseOr 178 PartitionedExclusiveScanNV 2649 2650
+            2652:     40(ptr) AccessChain 31(data) 2647 33
+                              Store 2652 2651
+            2653:      6(int) Load 8(invocation)
+            2654:     64(ptr) AccessChain 31(data) 34 63 35
+            2655:     24(int) Load 2654
+            2656:   144(bool) SLessThan 2655 34
+            2657:   17(ivec4) Load 19(ballot)
+            2658:   144(bool) GroupNonUniformLogicalOr 178 PartitionedExclusiveScanNV 2656 2657
+            2659:     24(int) Select 2658 63 34
+            2660:     64(ptr) AccessChain 31(data) 2653 63 35
+                              Store 2660 2659
+            2661:      6(int) Load 8(invocation)
+            2662:     71(ptr) AccessChain 31(data) 63 63
+            2663:   25(ivec4) Load 2662
+            2664:   70(ivec2) VectorShuffle 2663 2663 0 1
+            2665:  152(bvec2) SLessThan 2664 801
+            2666:   17(ivec4) Load 19(ballot)
+            2667:  152(bvec2) GroupNonUniformLogicalOr 178 PartitionedExclusiveScanNV 2665 2666
+            2668:   70(ivec2) Select 2667 805 801
+            2669:     64(ptr) AccessChain 31(data) 2661 63 35
+            2670:     24(int) CompositeExtract 2668 0
+                              Store 2669 2670
+            2671:     64(ptr) AccessChain 31(data) 2661 63 189
+            2672:     24(int) CompositeExtract 2668 1
+                              Store 2671 2672
+            2673:      6(int) Load 8(invocation)
+            2674:     71(ptr) AccessChain 31(data) 63 63
+            2675:   25(ivec4) Load 2674
+            2676:   78(ivec3) VectorShuffle 2675 2675 0 1 2
+            2677:  161(bvec3) SLessThan 2676 815
+            2678:   17(ivec4) Load 19(ballot)
+            2679:  161(bvec3) GroupNonUniformLogicalOr 178 PartitionedExclusiveScanNV 2677 2678
+            2680:   78(ivec3) Select 2679 819 815
+            2681:     64(ptr) AccessChain 31(data) 2673 63 35
+            2682:     24(int) CompositeExtract 2680 0
+                              Store 2681 2682
+            2683:     64(ptr) AccessChain 31(data) 2673 63 189
+            2684:     24(int) CompositeExtract 2680 1
+                              Store 2683 2684
+            2685:     64(ptr) AccessChain 31(data) 2673 63 202
+            2686:     24(int) CompositeExtract 2680 2
+                              Store 2685 2686
+            2687:      6(int) Load 8(invocation)
+            2688:     71(ptr) AccessChain 31(data) 63 63
+            2689:   25(ivec4) Load 2688
+            2690:  169(bvec4) SLessThan 2689 830
+            2691:   17(ivec4) Load 19(ballot)
+            2692:  169(bvec4) GroupNonUniformLogicalOr 178 PartitionedExclusiveScanNV 2690 2691
+            2693:   25(ivec4) Select 2692 834 830
+            2694:     71(ptr) AccessChain 31(data) 2687 63
+                              Store 2694 2693
+            2695:      6(int) Load 8(invocation)
+            2696:     64(ptr) AccessChain 31(data) 34 63 35
+            2697:     24(int) Load 2696
+            2698:   17(ivec4) Load 19(ballot)
+            2699:     24(int) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2697 2698
+            2700:     64(ptr) AccessChain 31(data) 2695 63 35
+                              Store 2700 2699
+            2701:      6(int) Load 8(invocation)
+            2702:     71(ptr) AccessChain 31(data) 63 63
+            2703:   25(ivec4) Load 2702
+            2704:   70(ivec2) VectorShuffle 2703 2703 0 1
+            2705:   17(ivec4) Load 19(ballot)
+            2706:   70(ivec2) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2704 2705
+            2707:     64(ptr) AccessChain 31(data) 2701 63 35
+            2708:     24(int) CompositeExtract 2706 0
+                              Store 2707 2708
+            2709:     64(ptr) AccessChain 31(data) 2701 63 189
+            2710:     24(int) CompositeExtract 2706 1
+                              Store 2709 2710
+            2711:      6(int) Load 8(invocation)
+            2712:     71(ptr) AccessChain 31(data) 33 63
+            2713:   25(ivec4) Load 2712
+            2714:   78(ivec3) VectorShuffle 2713 2713 0 1 2
+            2715:   17(ivec4) Load 19(ballot)
+            2716:   78(ivec3) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2714 2715
+            2717:     64(ptr) AccessChain 31(data) 2711 63 35
+            2718:     24(int) CompositeExtract 2716 0
+                              Store 2717 2718
+            2719:     64(ptr) AccessChain 31(data) 2711 63 189
+            2720:     24(int) CompositeExtract 2716 1
+                              Store 2719 2720
+            2721:     64(ptr) AccessChain 31(data) 2711 63 202
+            2722:     24(int) CompositeExtract 2716 2
+                              Store 2721 2722
+            2723:      6(int) Load 8(invocation)
+            2724:     71(ptr) AccessChain 31(data) 115 63
+            2725:   25(ivec4) Load 2724
+            2726:   17(ivec4) Load 19(ballot)
+            2727:   25(ivec4) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2725 2726
+            2728:     71(ptr) AccessChain 31(data) 2723 63
+                              Store 2728 2727
+            2729:      6(int) Load 8(invocation)
+            2730:     90(ptr) AccessChain 31(data) 34 33 35
+            2731:      6(int) Load 2730
+            2732:   17(ivec4) Load 19(ballot)
+            2733:      6(int) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2731 2732
+            2734:     90(ptr) AccessChain 31(data) 2729 33 35
+                              Store 2734 2733
+            2735:      6(int) Load 8(invocation)
+            2736:     40(ptr) AccessChain 31(data) 63 33
+            2737:   17(ivec4) Load 2736
+            2738:   96(ivec2) VectorShuffle 2737 2737 0 1
+            2739:   17(ivec4) Load 19(ballot)
+            2740:   96(ivec2) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2738 2739
+            2741:     90(ptr) AccessChain 31(data) 2735 33 35
+            2742:      6(int) CompositeExtract 2740 0
+                              Store 2741 2742
+            2743:     90(ptr) AccessChain 31(data) 2735 33 189
+            2744:      6(int) CompositeExtract 2740 1
+                              Store 2743 2744
+            2745:      6(int) Load 8(invocation)
+            2746:     40(ptr) AccessChain 31(data) 33 33
+            2747:   17(ivec4) Load 2746
+            2748:  103(ivec3) VectorShuffle 2747 2747 0 1 2
+            2749:   17(ivec4) Load 19(ballot)
+            2750:  103(ivec3) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2748 2749
+            2751:     90(ptr) AccessChain 31(data) 2745 33 35
+            2752:      6(int) CompositeExtract 2750 0
+                              Store 2751 2752
+            2753:     90(ptr) AccessChain 31(data) 2745 33 189
+            2754:      6(int) CompositeExtract 2750 1
+                              Store 2753 2754
+            2755:     90(ptr) AccessChain 31(data) 2745 33 202
+            2756:      6(int) CompositeExtract 2750 2
+                              Store 2755 2756
+            2757:      6(int) Load 8(invocation)
+            2758:     40(ptr) AccessChain 31(data) 115 33
+            2759:   17(ivec4) Load 2758
+            2760:   17(ivec4) Load 19(ballot)
+            2761:   17(ivec4) GroupNonUniformBitwiseXor 178 PartitionedExclusiveScanNV 2759 2760
+            2762:     40(ptr) AccessChain 31(data) 2757 33
+                              Store 2762 2761
+            2763:      6(int) Load 8(invocation)
+            2764:     64(ptr) AccessChain 31(data) 34 63 35
+            2765:     24(int) Load 2764
+            2766:   144(bool) SLessThan 2765 34
+            2767:   17(ivec4) Load 19(ballot)
+            2768:   144(bool) GroupNonUniformLogicalXor 178 PartitionedExclusiveScanNV 2766 2767
+            2769:     24(int) Select 2768 63 34
+            2770:     64(ptr) AccessChain 31(data) 2763 63 35
+                              Store 2770 2769
+            2771:      6(int) Load 8(invocation)
+            2772:     71(ptr) AccessChain 31(data) 63 63
+            2773:   25(ivec4) Load 2772
+            2774:   70(ivec2) VectorShuffle 2773 2773 0 1
+            2775:  152(bvec2) SLessThan 2774 801
+            2776:   17(ivec4) Load 19(ballot)
+            2777:  152(bvec2) GroupNonUniformLogicalXor 178 PartitionedExclusiveScanNV 2775 2776
+            2778:   70(ivec2) Select 2777 805 801
+            2779:     64(ptr) AccessChain 31(data) 2771 63 35
+            2780:     24(int) CompositeExtract 2778 0
+                              Store 2779 2780
+            2781:     64(ptr) AccessChain 31(data) 2771 63 189
+            2782:     24(int) CompositeExtract 2778 1
+                              Store 2781 2782
+            2783:      6(int) Load 8(invocation)
+            2784:     71(ptr) AccessChain 31(data) 63 63
+            2785:   25(ivec4) Load 2784
+            2786:   78(ivec3) VectorShuffle 2785 2785 0 1 2
+            2787:  161(bvec3) SLessThan 2786 815
+            2788:   17(ivec4) Load 19(ballot)
+            2789:  161(bvec3) GroupNonUniformLogicalXor 178 PartitionedExclusiveScanNV 2787 2788
+            2790:   78(ivec3) Select 2789 819 815
+            2791:     64(ptr) AccessChain 31(data) 2783 63 35
+            2792:     24(int) CompositeExtract 2790 0
+                              Store 2791 2792
+            2793:     64(ptr) AccessChain 31(data) 2783 63 189
+            2794:     24(int) CompositeExtract 2790 1
+                              Store 2793 2794
+            2795:     64(ptr) AccessChain 31(data) 2783 63 202
+            2796:     24(int) CompositeExtract 2790 2
+                              Store 2795 2796
+            2797:      6(int) Load 8(invocation)
+            2798:     71(ptr) AccessChain 31(data) 63 63
+            2799:   25(ivec4) Load 2798
+            2800:  169(bvec4) SLessThan 2799 830
+            2801:   17(ivec4) Load 19(ballot)
+            2802:  169(bvec4) GroupNonUniformLogicalXor 178 PartitionedExclusiveScanNV 2800 2801
+            2803:   25(ivec4) Select 2802 834 830
+            2804:     71(ptr) AccessChain 31(data) 2797 63
+                              Store 2804 2803
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.subgroupQuad.comp.out b/Test/baseResults/spv.subgroupQuad.comp.out
index 644fa72..143d01d 100644
--- a/Test/baseResults/spv.subgroupQuad.comp.out
+++ b/Test/baseResults/spv.subgroupQuad.comp.out
@@ -1,7 +1,7 @@
 spv.subgroupQuad.comp
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 616
+// Id's are bound by 696
 
                               Capability Shader
                               Capability Float64
@@ -39,7 +39,7 @@
                               Decorate 24(Buffers) Block
                               Decorate 27(data) DescriptorSet 0
                               Decorate 27(data) Binding 0
-                              Decorate 615 BuiltIn WorkgroupSize
+                              Decorate 695 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -67,34 +67,34 @@
               39:     19(int) Constant 1
               40:             TypeVector 17(float) 2
               41:             TypePointer StorageBuffer 18(fvec4)
-              50:     19(int) Constant 2
-              51:             TypeVector 17(float) 3
-              60:     19(int) Constant 3
-              66:             TypePointer StorageBuffer 19(int)
-              72:             TypeVector 19(int) 2
-              73:             TypePointer StorageBuffer 20(ivec4)
-              82:             TypeVector 19(int) 3
-              96:             TypePointer StorageBuffer 6(int)
-             102:             TypeVector 6(int) 2
-             103:             TypePointer StorageBuffer 21(ivec4)
-             112:             TypeVector 6(int) 3
-             126:             TypePointer StorageBuffer 22(float64_t)
-             132:             TypeVector 22(float64_t) 2
-             133:             TypePointer StorageBuffer 23(f64vec4)
-             142:             TypeVector 22(float64_t) 3
-             158:             TypeBool
-             167:   72(ivec2) ConstantComposite 29 29
-             168:             TypeVector 158(bool) 2
-             171:   72(ivec2) ConstantComposite 39 39
-             180:   82(ivec3) ConstantComposite 29 29 29
-             181:             TypeVector 158(bool) 3
-             184:   82(ivec3) ConstantComposite 39 39 39
-             192:   20(ivec4) ConstantComposite 29 29 29 29
-             193:             TypeVector 158(bool) 4
-             196:   20(ivec4) ConstantComposite 39 39 39 39
-             478:      6(int) Constant 2
-             614:      6(int) Constant 8
-             615:  112(ivec3) ConstantComposite 614 34 34
+              51:     19(int) Constant 2
+              52:             TypeVector 17(float) 3
+              61:      6(int) Constant 2
+              65:     19(int) Constant 3
+              71:             TypePointer StorageBuffer 19(int)
+              77:             TypeVector 19(int) 2
+              78:             TypePointer StorageBuffer 20(ivec4)
+              88:             TypeVector 19(int) 3
+             105:             TypePointer StorageBuffer 6(int)
+             111:             TypeVector 6(int) 2
+             112:             TypePointer StorageBuffer 21(ivec4)
+             122:             TypeVector 6(int) 3
+             139:             TypePointer StorageBuffer 22(float64_t)
+             145:             TypeVector 22(float64_t) 2
+             146:             TypePointer StorageBuffer 23(f64vec4)
+             156:             TypeVector 22(float64_t) 3
+             175:             TypeBool
+             184:   77(ivec2) ConstantComposite 29 29
+             185:             TypeVector 175(bool) 2
+             188:   77(ivec2) ConstantComposite 39 39
+             198:   88(ivec3) ConstantComposite 29 29 29
+             199:             TypeVector 175(bool) 3
+             202:   88(ivec3) ConstantComposite 39 39 39
+             213:   20(ivec4) ConstantComposite 29 29 29 29
+             214:             TypeVector 175(bool) 4
+             217:   20(ivec4) ConstantComposite 39 39 39 39
+             694:      6(int) Constant 8
+             695:  122(ivec3) ConstantComposite 694 34 34
          4(main):           2 Function None 3
                5:             Label
    8(invocation):      7(ptr) Variable Function
@@ -114,626 +114,766 @@
               43:   18(fvec4) Load 42
               44:   40(fvec2) VectorShuffle 43 43 0 1
               45:   40(fvec2) GroupNonUniformQuadBroadcast 35 44 34
-              46:     41(ptr) AccessChain 27(data) 38 29
-              47:   18(fvec4) Load 46
-              48:   18(fvec4) VectorShuffle 47 45 4 5 2 3
-                              Store 46 48
-              49:      6(int) Load 8(invocation)
-              52:     41(ptr) AccessChain 27(data) 50 29
-              53:   18(fvec4) Load 52
-              54:   51(fvec3) VectorShuffle 53 53 0 1 2
-              55:   51(fvec3) GroupNonUniformQuadBroadcast 35 54 34
-              56:     41(ptr) AccessChain 27(data) 49 29
-              57:   18(fvec4) Load 56
-              58:   18(fvec4) VectorShuffle 57 55 4 5 6 3
-                              Store 56 58
-              59:      6(int) Load 8(invocation)
-              61:     41(ptr) AccessChain 27(data) 60 29
-              62:   18(fvec4) Load 61
-              63:   18(fvec4) GroupNonUniformQuadBroadcast 35 62 34
-              64:     41(ptr) AccessChain 27(data) 59 29
-                              Store 64 63
-              65:      6(int) Load 8(invocation)
-              67:     66(ptr) AccessChain 27(data) 29 39 30
-              68:     19(int) Load 67
-              69:     19(int) GroupNonUniformQuadBroadcast 35 68 34
-              70:     66(ptr) AccessChain 27(data) 65 39 30
-                              Store 70 69
-              71:      6(int) Load 8(invocation)
-              74:     73(ptr) AccessChain 27(data) 39 39
-              75:   20(ivec4) Load 74
-              76:   72(ivec2) VectorShuffle 75 75 0 1
-              77:   72(ivec2) GroupNonUniformQuadBroadcast 35 76 34
-              78:     73(ptr) AccessChain 27(data) 71 39
-              79:   20(ivec4) Load 78
-              80:   20(ivec4) VectorShuffle 79 77 4 5 2 3
-                              Store 78 80
-              81:      6(int) Load 8(invocation)
-              83:     73(ptr) AccessChain 27(data) 50 39
-              84:   20(ivec4) Load 83
-              85:   82(ivec3) VectorShuffle 84 84 0 1 2
-              86:   82(ivec3) GroupNonUniformQuadBroadcast 35 85 34
-              87:     73(ptr) AccessChain 27(data) 81 39
-              88:   20(ivec4) Load 87
-              89:   20(ivec4) VectorShuffle 88 86 4 5 6 3
-                              Store 87 89
-              90:      6(int) Load 8(invocation)
-              91:     73(ptr) AccessChain 27(data) 60 39
-              92:   20(ivec4) Load 91
-              93:   20(ivec4) GroupNonUniformQuadBroadcast 35 92 34
-              94:     73(ptr) AccessChain 27(data) 90 39
-                              Store 94 93
-              95:      6(int) Load 8(invocation)
-              97:     96(ptr) AccessChain 27(data) 29 50 30
-              98:      6(int) Load 97
-              99:      6(int) GroupNonUniformQuadBroadcast 35 98 34
-             100:     96(ptr) AccessChain 27(data) 95 50 30
-                              Store 100 99
-             101:      6(int) Load 8(invocation)
-             104:    103(ptr) AccessChain 27(data) 39 50
-             105:   21(ivec4) Load 104
-             106:  102(ivec2) VectorShuffle 105 105 0 1
-             107:  102(ivec2) GroupNonUniformQuadBroadcast 35 106 34
-             108:    103(ptr) AccessChain 27(data) 101 50
-             109:   21(ivec4) Load 108
-             110:   21(ivec4) VectorShuffle 109 107 4 5 2 3
-                              Store 108 110
-             111:      6(int) Load 8(invocation)
-             113:    103(ptr) AccessChain 27(data) 50 50
+              46:     31(ptr) AccessChain 27(data) 38 29 30
+              47:   17(float) CompositeExtract 45 0
+                              Store 46 47
+              48:     31(ptr) AccessChain 27(data) 38 29 34
+              49:   17(float) CompositeExtract 45 1
+                              Store 48 49
+              50:      6(int) Load 8(invocation)
+              53:     41(ptr) AccessChain 27(data) 51 29
+              54:   18(fvec4) Load 53
+              55:   52(fvec3) VectorShuffle 54 54 0 1 2
+              56:   52(fvec3) GroupNonUniformQuadBroadcast 35 55 34
+              57:     31(ptr) AccessChain 27(data) 50 29 30
+              58:   17(float) CompositeExtract 56 0
+                              Store 57 58
+              59:     31(ptr) AccessChain 27(data) 50 29 34
+              60:   17(float) CompositeExtract 56 1
+                              Store 59 60
+              62:     31(ptr) AccessChain 27(data) 50 29 61
+              63:   17(float) CompositeExtract 56 2
+                              Store 62 63
+              64:      6(int) Load 8(invocation)
+              66:     41(ptr) AccessChain 27(data) 65 29
+              67:   18(fvec4) Load 66
+              68:   18(fvec4) GroupNonUniformQuadBroadcast 35 67 34
+              69:     41(ptr) AccessChain 27(data) 64 29
+                              Store 69 68
+              70:      6(int) Load 8(invocation)
+              72:     71(ptr) AccessChain 27(data) 29 39 30
+              73:     19(int) Load 72
+              74:     19(int) GroupNonUniformQuadBroadcast 35 73 34
+              75:     71(ptr) AccessChain 27(data) 70 39 30
+                              Store 75 74
+              76:      6(int) Load 8(invocation)
+              79:     78(ptr) AccessChain 27(data) 39 39
+              80:   20(ivec4) Load 79
+              81:   77(ivec2) VectorShuffle 80 80 0 1
+              82:   77(ivec2) GroupNonUniformQuadBroadcast 35 81 34
+              83:     71(ptr) AccessChain 27(data) 76 39 30
+              84:     19(int) CompositeExtract 82 0
+                              Store 83 84
+              85:     71(ptr) AccessChain 27(data) 76 39 34
+              86:     19(int) CompositeExtract 82 1
+                              Store 85 86
+              87:      6(int) Load 8(invocation)
+              89:     78(ptr) AccessChain 27(data) 51 39
+              90:   20(ivec4) Load 89
+              91:   88(ivec3) VectorShuffle 90 90 0 1 2
+              92:   88(ivec3) GroupNonUniformQuadBroadcast 35 91 34
+              93:     71(ptr) AccessChain 27(data) 87 39 30
+              94:     19(int) CompositeExtract 92 0
+                              Store 93 94
+              95:     71(ptr) AccessChain 27(data) 87 39 34
+              96:     19(int) CompositeExtract 92 1
+                              Store 95 96
+              97:     71(ptr) AccessChain 27(data) 87 39 61
+              98:     19(int) CompositeExtract 92 2
+                              Store 97 98
+              99:      6(int) Load 8(invocation)
+             100:     78(ptr) AccessChain 27(data) 65 39
+             101:   20(ivec4) Load 100
+             102:   20(ivec4) GroupNonUniformQuadBroadcast 35 101 34
+             103:     78(ptr) AccessChain 27(data) 99 39
+                              Store 103 102
+             104:      6(int) Load 8(invocation)
+             106:    105(ptr) AccessChain 27(data) 29 51 30
+             107:      6(int) Load 106
+             108:      6(int) GroupNonUniformQuadBroadcast 35 107 34
+             109:    105(ptr) AccessChain 27(data) 104 51 30
+                              Store 109 108
+             110:      6(int) Load 8(invocation)
+             113:    112(ptr) AccessChain 27(data) 39 51
              114:   21(ivec4) Load 113
-             115:  112(ivec3) VectorShuffle 114 114 0 1 2
-             116:  112(ivec3) GroupNonUniformQuadBroadcast 35 115 34
-             117:    103(ptr) AccessChain 27(data) 111 50
-             118:   21(ivec4) Load 117
-             119:   21(ivec4) VectorShuffle 118 116 4 5 6 3
-                              Store 117 119
-             120:      6(int) Load 8(invocation)
-             121:    103(ptr) AccessChain 27(data) 60 50
-             122:   21(ivec4) Load 121
-             123:   21(ivec4) GroupNonUniformQuadBroadcast 35 122 34
-             124:    103(ptr) AccessChain 27(data) 120 50
-                              Store 124 123
-             125:      6(int) Load 8(invocation)
-             127:    126(ptr) AccessChain 27(data) 29 60 30
-             128:22(float64_t) Load 127
-             129:22(float64_t) GroupNonUniformQuadBroadcast 35 128 34
-             130:    126(ptr) AccessChain 27(data) 125 60 30
-                              Store 130 129
-             131:      6(int) Load 8(invocation)
-             134:    133(ptr) AccessChain 27(data) 39 60
-             135: 23(f64vec4) Load 134
-             136:132(f64vec2) VectorShuffle 135 135 0 1
-             137:132(f64vec2) GroupNonUniformQuadBroadcast 35 136 34
-             138:    133(ptr) AccessChain 27(data) 131 60
-             139: 23(f64vec4) Load 138
-             140: 23(f64vec4) VectorShuffle 139 137 4 5 2 3
-                              Store 138 140
-             141:      6(int) Load 8(invocation)
-             143:    133(ptr) AccessChain 27(data) 50 60
-             144: 23(f64vec4) Load 143
-             145:142(f64vec3) VectorShuffle 144 144 0 1 2
-             146:142(f64vec3) GroupNonUniformQuadBroadcast 35 145 34
-             147:    133(ptr) AccessChain 27(data) 141 60
+             115:  111(ivec2) VectorShuffle 114 114 0 1
+             116:  111(ivec2) GroupNonUniformQuadBroadcast 35 115 34
+             117:    105(ptr) AccessChain 27(data) 110 51 30
+             118:      6(int) CompositeExtract 116 0
+                              Store 117 118
+             119:    105(ptr) AccessChain 27(data) 110 51 34
+             120:      6(int) CompositeExtract 116 1
+                              Store 119 120
+             121:      6(int) Load 8(invocation)
+             123:    112(ptr) AccessChain 27(data) 51 51
+             124:   21(ivec4) Load 123
+             125:  122(ivec3) VectorShuffle 124 124 0 1 2
+             126:  122(ivec3) GroupNonUniformQuadBroadcast 35 125 34
+             127:    105(ptr) AccessChain 27(data) 121 51 30
+             128:      6(int) CompositeExtract 126 0
+                              Store 127 128
+             129:    105(ptr) AccessChain 27(data) 121 51 34
+             130:      6(int) CompositeExtract 126 1
+                              Store 129 130
+             131:    105(ptr) AccessChain 27(data) 121 51 61
+             132:      6(int) CompositeExtract 126 2
+                              Store 131 132
+             133:      6(int) Load 8(invocation)
+             134:    112(ptr) AccessChain 27(data) 65 51
+             135:   21(ivec4) Load 134
+             136:   21(ivec4) GroupNonUniformQuadBroadcast 35 135 34
+             137:    112(ptr) AccessChain 27(data) 133 51
+                              Store 137 136
+             138:      6(int) Load 8(invocation)
+             140:    139(ptr) AccessChain 27(data) 29 65 30
+             141:22(float64_t) Load 140
+             142:22(float64_t) GroupNonUniformQuadBroadcast 35 141 34
+             143:    139(ptr) AccessChain 27(data) 138 65 30
+                              Store 143 142
+             144:      6(int) Load 8(invocation)
+             147:    146(ptr) AccessChain 27(data) 39 65
              148: 23(f64vec4) Load 147
-             149: 23(f64vec4) VectorShuffle 148 146 4 5 6 3
-                              Store 147 149
-             150:      6(int) Load 8(invocation)
-             151:    133(ptr) AccessChain 27(data) 60 60
-             152: 23(f64vec4) Load 151
-             153: 23(f64vec4) GroupNonUniformQuadBroadcast 35 152 34
-             154:    133(ptr) AccessChain 27(data) 150 60
-                              Store 154 153
+             149:145(f64vec2) VectorShuffle 148 148 0 1
+             150:145(f64vec2) GroupNonUniformQuadBroadcast 35 149 34
+             151:    139(ptr) AccessChain 27(data) 144 65 30
+             152:22(float64_t) CompositeExtract 150 0
+                              Store 151 152
+             153:    139(ptr) AccessChain 27(data) 144 65 34
+             154:22(float64_t) CompositeExtract 150 1
+                              Store 153 154
              155:      6(int) Load 8(invocation)
-             156:     66(ptr) AccessChain 27(data) 29 39 30
-             157:     19(int) Load 156
-             159:   158(bool) SLessThan 157 29
-             160:   158(bool) GroupNonUniformQuadBroadcast 35 159 34
-             161:     19(int) Select 160 39 29
-             162:     66(ptr) AccessChain 27(data) 155 39 30
-                              Store 162 161
-             163:      6(int) Load 8(invocation)
-             164:     73(ptr) AccessChain 27(data) 39 39
-             165:   20(ivec4) Load 164
-             166:   72(ivec2) VectorShuffle 165 165 0 1
-             169:  168(bvec2) SLessThan 166 167
-             170:  168(bvec2) GroupNonUniformQuadBroadcast 35 169 34
-             172:   72(ivec2) Select 170 171 167
-             173:     73(ptr) AccessChain 27(data) 163 39
-             174:   20(ivec4) Load 173
-             175:   20(ivec4) VectorShuffle 174 172 4 5 2 3
-                              Store 173 175
-             176:      6(int) Load 8(invocation)
-             177:     73(ptr) AccessChain 27(data) 39 39
-             178:   20(ivec4) Load 177
-             179:   82(ivec3) VectorShuffle 178 178 0 1 2
-             182:  181(bvec3) SLessThan 179 180
-             183:  181(bvec3) GroupNonUniformQuadBroadcast 35 182 34
-             185:   82(ivec3) Select 183 184 180
-             186:     73(ptr) AccessChain 27(data) 176 39
-             187:   20(ivec4) Load 186
-             188:   20(ivec4) VectorShuffle 187 185 4 5 6 3
-                              Store 186 188
-             189:      6(int) Load 8(invocation)
-             190:     73(ptr) AccessChain 27(data) 39 39
-             191:   20(ivec4) Load 190
-             194:  193(bvec4) SLessThan 191 192
-             195:  193(bvec4) GroupNonUniformQuadBroadcast 35 194 34
-             197:   20(ivec4) Select 195 196 192
-             198:     73(ptr) AccessChain 27(data) 189 39
-                              Store 198 197
-             199:      6(int) Load 8(invocation)
-             200:     31(ptr) AccessChain 27(data) 29 29 30
-             201:   17(float) Load 200
-             202:   17(float) GroupNonUniformQuadSwap 35 201 30
-             203:     31(ptr) AccessChain 27(data) 199 29 30
-                              Store 203 202
-             204:      6(int) Load 8(invocation)
-             205:     41(ptr) AccessChain 27(data) 39 29
-             206:   18(fvec4) Load 205
-             207:   40(fvec2) VectorShuffle 206 206 0 1
-             208:   40(fvec2) GroupNonUniformQuadSwap 35 207 30
-             209:     41(ptr) AccessChain 27(data) 204 29
-             210:   18(fvec4) Load 209
-             211:   18(fvec4) VectorShuffle 210 208 4 5 2 3
-                              Store 209 211
-             212:      6(int) Load 8(invocation)
-             213:     41(ptr) AccessChain 27(data) 50 29
-             214:   18(fvec4) Load 213
-             215:   51(fvec3) VectorShuffle 214 214 0 1 2
-             216:   51(fvec3) GroupNonUniformQuadSwap 35 215 30
-             217:     41(ptr) AccessChain 27(data) 212 29
-             218:   18(fvec4) Load 217
-             219:   18(fvec4) VectorShuffle 218 216 4 5 6 3
-                              Store 217 219
+             157:    146(ptr) AccessChain 27(data) 51 65
+             158: 23(f64vec4) Load 157
+             159:156(f64vec3) VectorShuffle 158 158 0 1 2
+             160:156(f64vec3) GroupNonUniformQuadBroadcast 35 159 34
+             161:    139(ptr) AccessChain 27(data) 155 65 30
+             162:22(float64_t) CompositeExtract 160 0
+                              Store 161 162
+             163:    139(ptr) AccessChain 27(data) 155 65 34
+             164:22(float64_t) CompositeExtract 160 1
+                              Store 163 164
+             165:    139(ptr) AccessChain 27(data) 155 65 61
+             166:22(float64_t) CompositeExtract 160 2
+                              Store 165 166
+             167:      6(int) Load 8(invocation)
+             168:    146(ptr) AccessChain 27(data) 65 65
+             169: 23(f64vec4) Load 168
+             170: 23(f64vec4) GroupNonUniformQuadBroadcast 35 169 34
+             171:    146(ptr) AccessChain 27(data) 167 65
+                              Store 171 170
+             172:      6(int) Load 8(invocation)
+             173:     71(ptr) AccessChain 27(data) 29 39 30
+             174:     19(int) Load 173
+             176:   175(bool) SLessThan 174 29
+             177:   175(bool) GroupNonUniformQuadBroadcast 35 176 34
+             178:     19(int) Select 177 39 29
+             179:     71(ptr) AccessChain 27(data) 172 39 30
+                              Store 179 178
+             180:      6(int) Load 8(invocation)
+             181:     78(ptr) AccessChain 27(data) 39 39
+             182:   20(ivec4) Load 181
+             183:   77(ivec2) VectorShuffle 182 182 0 1
+             186:  185(bvec2) SLessThan 183 184
+             187:  185(bvec2) GroupNonUniformQuadBroadcast 35 186 34
+             189:   77(ivec2) Select 187 188 184
+             190:     71(ptr) AccessChain 27(data) 180 39 30
+             191:     19(int) CompositeExtract 189 0
+                              Store 190 191
+             192:     71(ptr) AccessChain 27(data) 180 39 34
+             193:     19(int) CompositeExtract 189 1
+                              Store 192 193
+             194:      6(int) Load 8(invocation)
+             195:     78(ptr) AccessChain 27(data) 39 39
+             196:   20(ivec4) Load 195
+             197:   88(ivec3) VectorShuffle 196 196 0 1 2
+             200:  199(bvec3) SLessThan 197 198
+             201:  199(bvec3) GroupNonUniformQuadBroadcast 35 200 34
+             203:   88(ivec3) Select 201 202 198
+             204:     71(ptr) AccessChain 27(data) 194 39 30
+             205:     19(int) CompositeExtract 203 0
+                              Store 204 205
+             206:     71(ptr) AccessChain 27(data) 194 39 34
+             207:     19(int) CompositeExtract 203 1
+                              Store 206 207
+             208:     71(ptr) AccessChain 27(data) 194 39 61
+             209:     19(int) CompositeExtract 203 2
+                              Store 208 209
+             210:      6(int) Load 8(invocation)
+             211:     78(ptr) AccessChain 27(data) 39 39
+             212:   20(ivec4) Load 211
+             215:  214(bvec4) SLessThan 212 213
+             216:  214(bvec4) GroupNonUniformQuadBroadcast 35 215 34
+             218:   20(ivec4) Select 216 217 213
+             219:     78(ptr) AccessChain 27(data) 210 39
+                              Store 219 218
              220:      6(int) Load 8(invocation)
-             221:     41(ptr) AccessChain 27(data) 60 29
-             222:   18(fvec4) Load 221
-             223:   18(fvec4) GroupNonUniformQuadSwap 35 222 30
-             224:     41(ptr) AccessChain 27(data) 220 29
+             221:     31(ptr) AccessChain 27(data) 29 29 30
+             222:   17(float) Load 221
+             223:   17(float) GroupNonUniformQuadSwap 35 222 30
+             224:     31(ptr) AccessChain 27(data) 220 29 30
                               Store 224 223
              225:      6(int) Load 8(invocation)
-             226:     66(ptr) AccessChain 27(data) 29 39 30
-             227:     19(int) Load 226
-             228:     19(int) GroupNonUniformQuadSwap 35 227 30
-             229:     66(ptr) AccessChain 27(data) 225 39 30
-                              Store 229 228
-             230:      6(int) Load 8(invocation)
-             231:     73(ptr) AccessChain 27(data) 39 39
-             232:   20(ivec4) Load 231
-             233:   72(ivec2) VectorShuffle 232 232 0 1
-             234:   72(ivec2) GroupNonUniformQuadSwap 35 233 30
-             235:     73(ptr) AccessChain 27(data) 230 39
-             236:   20(ivec4) Load 235
-             237:   20(ivec4) VectorShuffle 236 234 4 5 2 3
-                              Store 235 237
-             238:      6(int) Load 8(invocation)
-             239:     73(ptr) AccessChain 27(data) 50 39
-             240:   20(ivec4) Load 239
-             241:   82(ivec3) VectorShuffle 240 240 0 1 2
-             242:   82(ivec3) GroupNonUniformQuadSwap 35 241 30
-             243:     73(ptr) AccessChain 27(data) 238 39
-             244:   20(ivec4) Load 243
-             245:   20(ivec4) VectorShuffle 244 242 4 5 6 3
-                              Store 243 245
-             246:      6(int) Load 8(invocation)
-             247:     73(ptr) AccessChain 27(data) 60 39
-             248:   20(ivec4) Load 247
-             249:   20(ivec4) GroupNonUniformQuadSwap 35 248 30
-             250:     73(ptr) AccessChain 27(data) 246 39
-                              Store 250 249
-             251:      6(int) Load 8(invocation)
-             252:     96(ptr) AccessChain 27(data) 29 50 30
-             253:      6(int) Load 252
-             254:      6(int) GroupNonUniformQuadSwap 35 253 30
-             255:     96(ptr) AccessChain 27(data) 251 50 30
-                              Store 255 254
-             256:      6(int) Load 8(invocation)
-             257:    103(ptr) AccessChain 27(data) 39 50
-             258:   21(ivec4) Load 257
-             259:  102(ivec2) VectorShuffle 258 258 0 1
-             260:  102(ivec2) GroupNonUniformQuadSwap 35 259 30
-             261:    103(ptr) AccessChain 27(data) 256 50
-             262:   21(ivec4) Load 261
-             263:   21(ivec4) VectorShuffle 262 260 4 5 2 3
-                              Store 261 263
+             226:     41(ptr) AccessChain 27(data) 39 29
+             227:   18(fvec4) Load 226
+             228:   40(fvec2) VectorShuffle 227 227 0 1
+             229:   40(fvec2) GroupNonUniformQuadSwap 35 228 30
+             230:     31(ptr) AccessChain 27(data) 225 29 30
+             231:   17(float) CompositeExtract 229 0
+                              Store 230 231
+             232:     31(ptr) AccessChain 27(data) 225 29 34
+             233:   17(float) CompositeExtract 229 1
+                              Store 232 233
+             234:      6(int) Load 8(invocation)
+             235:     41(ptr) AccessChain 27(data) 51 29
+             236:   18(fvec4) Load 235
+             237:   52(fvec3) VectorShuffle 236 236 0 1 2
+             238:   52(fvec3) GroupNonUniformQuadSwap 35 237 30
+             239:     31(ptr) AccessChain 27(data) 234 29 30
+             240:   17(float) CompositeExtract 238 0
+                              Store 239 240
+             241:     31(ptr) AccessChain 27(data) 234 29 34
+             242:   17(float) CompositeExtract 238 1
+                              Store 241 242
+             243:     31(ptr) AccessChain 27(data) 234 29 61
+             244:   17(float) CompositeExtract 238 2
+                              Store 243 244
+             245:      6(int) Load 8(invocation)
+             246:     41(ptr) AccessChain 27(data) 65 29
+             247:   18(fvec4) Load 246
+             248:   18(fvec4) GroupNonUniformQuadSwap 35 247 30
+             249:     41(ptr) AccessChain 27(data) 245 29
+                              Store 249 248
+             250:      6(int) Load 8(invocation)
+             251:     71(ptr) AccessChain 27(data) 29 39 30
+             252:     19(int) Load 251
+             253:     19(int) GroupNonUniformQuadSwap 35 252 30
+             254:     71(ptr) AccessChain 27(data) 250 39 30
+                              Store 254 253
+             255:      6(int) Load 8(invocation)
+             256:     78(ptr) AccessChain 27(data) 39 39
+             257:   20(ivec4) Load 256
+             258:   77(ivec2) VectorShuffle 257 257 0 1
+             259:   77(ivec2) GroupNonUniformQuadSwap 35 258 30
+             260:     71(ptr) AccessChain 27(data) 255 39 30
+             261:     19(int) CompositeExtract 259 0
+                              Store 260 261
+             262:     71(ptr) AccessChain 27(data) 255 39 34
+             263:     19(int) CompositeExtract 259 1
+                              Store 262 263
              264:      6(int) Load 8(invocation)
-             265:    103(ptr) AccessChain 27(data) 50 50
-             266:   21(ivec4) Load 265
-             267:  112(ivec3) VectorShuffle 266 266 0 1 2
-             268:  112(ivec3) GroupNonUniformQuadSwap 35 267 30
-             269:    103(ptr) AccessChain 27(data) 264 50
-             270:   21(ivec4) Load 269
-             271:   21(ivec4) VectorShuffle 270 268 4 5 6 3
-                              Store 269 271
-             272:      6(int) Load 8(invocation)
-             273:    103(ptr) AccessChain 27(data) 60 50
-             274:   21(ivec4) Load 273
-             275:   21(ivec4) GroupNonUniformQuadSwap 35 274 30
-             276:    103(ptr) AccessChain 27(data) 272 50
-                              Store 276 275
-             277:      6(int) Load 8(invocation)
-             278:    126(ptr) AccessChain 27(data) 29 60 30
-             279:22(float64_t) Load 278
-             280:22(float64_t) GroupNonUniformQuadSwap 35 279 30
-             281:    126(ptr) AccessChain 27(data) 277 60 30
-                              Store 281 280
-             282:      6(int) Load 8(invocation)
-             283:    133(ptr) AccessChain 27(data) 39 60
-             284: 23(f64vec4) Load 283
-             285:132(f64vec2) VectorShuffle 284 284 0 1
-             286:132(f64vec2) GroupNonUniformQuadSwap 35 285 30
-             287:    133(ptr) AccessChain 27(data) 282 60
-             288: 23(f64vec4) Load 287
-             289: 23(f64vec4) VectorShuffle 288 286 4 5 2 3
-                              Store 287 289
-             290:      6(int) Load 8(invocation)
-             291:    133(ptr) AccessChain 27(data) 50 60
-             292: 23(f64vec4) Load 291
-             293:142(f64vec3) VectorShuffle 292 292 0 1 2
-             294:142(f64vec3) GroupNonUniformQuadSwap 35 293 30
-             295:    133(ptr) AccessChain 27(data) 290 60
-             296: 23(f64vec4) Load 295
-             297: 23(f64vec4) VectorShuffle 296 294 4 5 6 3
-                              Store 295 297
-             298:      6(int) Load 8(invocation)
-             299:    133(ptr) AccessChain 27(data) 60 60
-             300: 23(f64vec4) Load 299
-             301: 23(f64vec4) GroupNonUniformQuadSwap 35 300 30
-             302:    133(ptr) AccessChain 27(data) 298 60
-                              Store 302 301
-             303:      6(int) Load 8(invocation)
-             304:     66(ptr) AccessChain 27(data) 29 39 30
-             305:     19(int) Load 304
-             306:   158(bool) SLessThan 305 29
-             307:   158(bool) GroupNonUniformQuadSwap 35 306 30
-             308:     19(int) Select 307 39 29
-             309:     66(ptr) AccessChain 27(data) 303 39 30
+             265:     78(ptr) AccessChain 27(data) 51 39
+             266:   20(ivec4) Load 265
+             267:   88(ivec3) VectorShuffle 266 266 0 1 2
+             268:   88(ivec3) GroupNonUniformQuadSwap 35 267 30
+             269:     71(ptr) AccessChain 27(data) 264 39 30
+             270:     19(int) CompositeExtract 268 0
+                              Store 269 270
+             271:     71(ptr) AccessChain 27(data) 264 39 34
+             272:     19(int) CompositeExtract 268 1
+                              Store 271 272
+             273:     71(ptr) AccessChain 27(data) 264 39 61
+             274:     19(int) CompositeExtract 268 2
+                              Store 273 274
+             275:      6(int) Load 8(invocation)
+             276:     78(ptr) AccessChain 27(data) 65 39
+             277:   20(ivec4) Load 276
+             278:   20(ivec4) GroupNonUniformQuadSwap 35 277 30
+             279:     78(ptr) AccessChain 27(data) 275 39
+                              Store 279 278
+             280:      6(int) Load 8(invocation)
+             281:    105(ptr) AccessChain 27(data) 29 51 30
+             282:      6(int) Load 281
+             283:      6(int) GroupNonUniformQuadSwap 35 282 30
+             284:    105(ptr) AccessChain 27(data) 280 51 30
+                              Store 284 283
+             285:      6(int) Load 8(invocation)
+             286:    112(ptr) AccessChain 27(data) 39 51
+             287:   21(ivec4) Load 286
+             288:  111(ivec2) VectorShuffle 287 287 0 1
+             289:  111(ivec2) GroupNonUniformQuadSwap 35 288 30
+             290:    105(ptr) AccessChain 27(data) 285 51 30
+             291:      6(int) CompositeExtract 289 0
+                              Store 290 291
+             292:    105(ptr) AccessChain 27(data) 285 51 34
+             293:      6(int) CompositeExtract 289 1
+                              Store 292 293
+             294:      6(int) Load 8(invocation)
+             295:    112(ptr) AccessChain 27(data) 51 51
+             296:   21(ivec4) Load 295
+             297:  122(ivec3) VectorShuffle 296 296 0 1 2
+             298:  122(ivec3) GroupNonUniformQuadSwap 35 297 30
+             299:    105(ptr) AccessChain 27(data) 294 51 30
+             300:      6(int) CompositeExtract 298 0
+                              Store 299 300
+             301:    105(ptr) AccessChain 27(data) 294 51 34
+             302:      6(int) CompositeExtract 298 1
+                              Store 301 302
+             303:    105(ptr) AccessChain 27(data) 294 51 61
+             304:      6(int) CompositeExtract 298 2
+                              Store 303 304
+             305:      6(int) Load 8(invocation)
+             306:    112(ptr) AccessChain 27(data) 65 51
+             307:   21(ivec4) Load 306
+             308:   21(ivec4) GroupNonUniformQuadSwap 35 307 30
+             309:    112(ptr) AccessChain 27(data) 305 51
                               Store 309 308
              310:      6(int) Load 8(invocation)
-             311:     73(ptr) AccessChain 27(data) 39 39
-             312:   20(ivec4) Load 311
-             313:   72(ivec2) VectorShuffle 312 312 0 1
-             314:  168(bvec2) SLessThan 313 167
-             315:  168(bvec2) GroupNonUniformQuadSwap 35 314 30
-             316:   72(ivec2) Select 315 171 167
-             317:     73(ptr) AccessChain 27(data) 310 39
-             318:   20(ivec4) Load 317
-             319:   20(ivec4) VectorShuffle 318 316 4 5 2 3
-                              Store 317 319
-             320:      6(int) Load 8(invocation)
-             321:     73(ptr) AccessChain 27(data) 39 39
-             322:   20(ivec4) Load 321
-             323:   82(ivec3) VectorShuffle 322 322 0 1 2
-             324:  181(bvec3) SLessThan 323 180
-             325:  181(bvec3) GroupNonUniformQuadSwap 35 324 30
-             326:   82(ivec3) Select 325 184 180
-             327:     73(ptr) AccessChain 27(data) 320 39
-             328:   20(ivec4) Load 327
-             329:   20(ivec4) VectorShuffle 328 326 4 5 6 3
-                              Store 327 329
-             330:      6(int) Load 8(invocation)
-             331:     73(ptr) AccessChain 27(data) 39 39
-             332:   20(ivec4) Load 331
-             333:  193(bvec4) SLessThan 332 192
-             334:  193(bvec4) GroupNonUniformQuadSwap 35 333 30
-             335:   20(ivec4) Select 334 196 192
-             336:     73(ptr) AccessChain 27(data) 330 39
-                              Store 336 335
-             337:      6(int) Load 8(invocation)
-             338:     31(ptr) AccessChain 27(data) 29 29 30
-             339:   17(float) Load 338
-             340:   17(float) GroupNonUniformQuadSwap 35 339 34
-             341:     31(ptr) AccessChain 27(data) 337 29 30
-                              Store 341 340
-             342:      6(int) Load 8(invocation)
-             343:     41(ptr) AccessChain 27(data) 39 29
-             344:   18(fvec4) Load 343
-             345:   40(fvec2) VectorShuffle 344 344 0 1
-             346:   40(fvec2) GroupNonUniformQuadSwap 35 345 34
-             347:     41(ptr) AccessChain 27(data) 342 29
-             348:   18(fvec4) Load 347
-             349:   18(fvec4) VectorShuffle 348 346 4 5 2 3
-                              Store 347 349
-             350:      6(int) Load 8(invocation)
-             351:     41(ptr) AccessChain 27(data) 50 29
-             352:   18(fvec4) Load 351
-             353:   51(fvec3) VectorShuffle 352 352 0 1 2
-             354:   51(fvec3) GroupNonUniformQuadSwap 35 353 34
-             355:     41(ptr) AccessChain 27(data) 350 29
-             356:   18(fvec4) Load 355
-             357:   18(fvec4) VectorShuffle 356 354 4 5 6 3
-                              Store 355 357
+             311:    139(ptr) AccessChain 27(data) 29 65 30
+             312:22(float64_t) Load 311
+             313:22(float64_t) GroupNonUniformQuadSwap 35 312 30
+             314:    139(ptr) AccessChain 27(data) 310 65 30
+                              Store 314 313
+             315:      6(int) Load 8(invocation)
+             316:    146(ptr) AccessChain 27(data) 39 65
+             317: 23(f64vec4) Load 316
+             318:145(f64vec2) VectorShuffle 317 317 0 1
+             319:145(f64vec2) GroupNonUniformQuadSwap 35 318 30
+             320:    139(ptr) AccessChain 27(data) 315 65 30
+             321:22(float64_t) CompositeExtract 319 0
+                              Store 320 321
+             322:    139(ptr) AccessChain 27(data) 315 65 34
+             323:22(float64_t) CompositeExtract 319 1
+                              Store 322 323
+             324:      6(int) Load 8(invocation)
+             325:    146(ptr) AccessChain 27(data) 51 65
+             326: 23(f64vec4) Load 325
+             327:156(f64vec3) VectorShuffle 326 326 0 1 2
+             328:156(f64vec3) GroupNonUniformQuadSwap 35 327 30
+             329:    139(ptr) AccessChain 27(data) 324 65 30
+             330:22(float64_t) CompositeExtract 328 0
+                              Store 329 330
+             331:    139(ptr) AccessChain 27(data) 324 65 34
+             332:22(float64_t) CompositeExtract 328 1
+                              Store 331 332
+             333:    139(ptr) AccessChain 27(data) 324 65 61
+             334:22(float64_t) CompositeExtract 328 2
+                              Store 333 334
+             335:      6(int) Load 8(invocation)
+             336:    146(ptr) AccessChain 27(data) 65 65
+             337: 23(f64vec4) Load 336
+             338: 23(f64vec4) GroupNonUniformQuadSwap 35 337 30
+             339:    146(ptr) AccessChain 27(data) 335 65
+                              Store 339 338
+             340:      6(int) Load 8(invocation)
+             341:     71(ptr) AccessChain 27(data) 29 39 30
+             342:     19(int) Load 341
+             343:   175(bool) SLessThan 342 29
+             344:   175(bool) GroupNonUniformQuadSwap 35 343 30
+             345:     19(int) Select 344 39 29
+             346:     71(ptr) AccessChain 27(data) 340 39 30
+                              Store 346 345
+             347:      6(int) Load 8(invocation)
+             348:     78(ptr) AccessChain 27(data) 39 39
+             349:   20(ivec4) Load 348
+             350:   77(ivec2) VectorShuffle 349 349 0 1
+             351:  185(bvec2) SLessThan 350 184
+             352:  185(bvec2) GroupNonUniformQuadSwap 35 351 30
+             353:   77(ivec2) Select 352 188 184
+             354:     71(ptr) AccessChain 27(data) 347 39 30
+             355:     19(int) CompositeExtract 353 0
+                              Store 354 355
+             356:     71(ptr) AccessChain 27(data) 347 39 34
+             357:     19(int) CompositeExtract 353 1
+                              Store 356 357
              358:      6(int) Load 8(invocation)
-             359:     41(ptr) AccessChain 27(data) 60 29
-             360:   18(fvec4) Load 359
-             361:   18(fvec4) GroupNonUniformQuadSwap 35 360 34
-             362:     41(ptr) AccessChain 27(data) 358 29
-                              Store 362 361
-             363:      6(int) Load 8(invocation)
-             364:     66(ptr) AccessChain 27(data) 29 39 30
-             365:     19(int) Load 364
-             366:     19(int) GroupNonUniformQuadSwap 35 365 34
-             367:     66(ptr) AccessChain 27(data) 363 39 30
-                              Store 367 366
-             368:      6(int) Load 8(invocation)
-             369:     73(ptr) AccessChain 27(data) 39 39
-             370:   20(ivec4) Load 369
-             371:   72(ivec2) VectorShuffle 370 370 0 1
-             372:   72(ivec2) GroupNonUniformQuadSwap 35 371 34
-             373:     73(ptr) AccessChain 27(data) 368 39
-             374:   20(ivec4) Load 373
-             375:   20(ivec4) VectorShuffle 374 372 4 5 2 3
-                              Store 373 375
-             376:      6(int) Load 8(invocation)
-             377:     73(ptr) AccessChain 27(data) 50 39
-             378:   20(ivec4) Load 377
-             379:   82(ivec3) VectorShuffle 378 378 0 1 2
-             380:   82(ivec3) GroupNonUniformQuadSwap 35 379 34
-             381:     73(ptr) AccessChain 27(data) 376 39
-             382:   20(ivec4) Load 381
-             383:   20(ivec4) VectorShuffle 382 380 4 5 6 3
-                              Store 381 383
-             384:      6(int) Load 8(invocation)
-             385:     73(ptr) AccessChain 27(data) 60 39
-             386:   20(ivec4) Load 385
-             387:   20(ivec4) GroupNonUniformQuadSwap 35 386 34
-             388:     73(ptr) AccessChain 27(data) 384 39
-                              Store 388 387
-             389:      6(int) Load 8(invocation)
-             390:     96(ptr) AccessChain 27(data) 29 50 30
-             391:      6(int) Load 390
-             392:      6(int) GroupNonUniformQuadSwap 35 391 34
-             393:     96(ptr) AccessChain 27(data) 389 50 30
-                              Store 393 392
-             394:      6(int) Load 8(invocation)
-             395:    103(ptr) AccessChain 27(data) 39 50
-             396:   21(ivec4) Load 395
-             397:  102(ivec2) VectorShuffle 396 396 0 1
-             398:  102(ivec2) GroupNonUniformQuadSwap 35 397 34
-             399:    103(ptr) AccessChain 27(data) 394 50
-             400:   21(ivec4) Load 399
-             401:   21(ivec4) VectorShuffle 400 398 4 5 2 3
-                              Store 399 401
-             402:      6(int) Load 8(invocation)
-             403:    103(ptr) AccessChain 27(data) 50 50
-             404:   21(ivec4) Load 403
-             405:  112(ivec3) VectorShuffle 404 404 0 1 2
-             406:  112(ivec3) GroupNonUniformQuadSwap 35 405 34
-             407:    103(ptr) AccessChain 27(data) 402 50
-             408:   21(ivec4) Load 407
-             409:   21(ivec4) VectorShuffle 408 406 4 5 6 3
-                              Store 407 409
-             410:      6(int) Load 8(invocation)
-             411:    103(ptr) AccessChain 27(data) 60 50
-             412:   21(ivec4) Load 411
-             413:   21(ivec4) GroupNonUniformQuadSwap 35 412 34
-             414:    103(ptr) AccessChain 27(data) 410 50
-                              Store 414 413
-             415:      6(int) Load 8(invocation)
-             416:    126(ptr) AccessChain 27(data) 29 60 30
-             417:22(float64_t) Load 416
-             418:22(float64_t) GroupNonUniformQuadSwap 35 417 34
-             419:    126(ptr) AccessChain 27(data) 415 60 30
-                              Store 419 418
-             420:      6(int) Load 8(invocation)
-             421:    133(ptr) AccessChain 27(data) 39 60
-             422: 23(f64vec4) Load 421
-             423:132(f64vec2) VectorShuffle 422 422 0 1
-             424:132(f64vec2) GroupNonUniformQuadSwap 35 423 34
-             425:    133(ptr) AccessChain 27(data) 420 60
-             426: 23(f64vec4) Load 425
-             427: 23(f64vec4) VectorShuffle 426 424 4 5 2 3
-                              Store 425 427
-             428:      6(int) Load 8(invocation)
-             429:    133(ptr) AccessChain 27(data) 50 60
-             430: 23(f64vec4) Load 429
-             431:142(f64vec3) VectorShuffle 430 430 0 1 2
-             432:142(f64vec3) GroupNonUniformQuadSwap 35 431 34
-             433:    133(ptr) AccessChain 27(data) 428 60
-             434: 23(f64vec4) Load 433
-             435: 23(f64vec4) VectorShuffle 434 432 4 5 6 3
-                              Store 433 435
-             436:      6(int) Load 8(invocation)
-             437:    133(ptr) AccessChain 27(data) 60 60
-             438: 23(f64vec4) Load 437
-             439: 23(f64vec4) GroupNonUniformQuadSwap 35 438 34
-             440:    133(ptr) AccessChain 27(data) 436 60
-                              Store 440 439
-             441:      6(int) Load 8(invocation)
-             442:     66(ptr) AccessChain 27(data) 29 39 30
-             443:     19(int) Load 442
-             444:   158(bool) SLessThan 443 29
-             445:   158(bool) GroupNonUniformQuadSwap 35 444 34
-             446:     19(int) Select 445 39 29
-             447:     66(ptr) AccessChain 27(data) 441 39 30
-                              Store 447 446
-             448:      6(int) Load 8(invocation)
-             449:     73(ptr) AccessChain 27(data) 39 39
-             450:   20(ivec4) Load 449
-             451:   72(ivec2) VectorShuffle 450 450 0 1
-             452:  168(bvec2) SLessThan 451 167
-             453:  168(bvec2) GroupNonUniformQuadSwap 35 452 34
-             454:   72(ivec2) Select 453 171 167
-             455:     73(ptr) AccessChain 27(data) 448 39
-             456:   20(ivec4) Load 455
-             457:   20(ivec4) VectorShuffle 456 454 4 5 2 3
-                              Store 455 457
-             458:      6(int) Load 8(invocation)
-             459:     73(ptr) AccessChain 27(data) 39 39
-             460:   20(ivec4) Load 459
-             461:   82(ivec3) VectorShuffle 460 460 0 1 2
-             462:  181(bvec3) SLessThan 461 180
-             463:  181(bvec3) GroupNonUniformQuadSwap 35 462 34
-             464:   82(ivec3) Select 463 184 180
-             465:     73(ptr) AccessChain 27(data) 458 39
-             466:   20(ivec4) Load 465
-             467:   20(ivec4) VectorShuffle 466 464 4 5 6 3
-                              Store 465 467
+             359:     78(ptr) AccessChain 27(data) 39 39
+             360:   20(ivec4) Load 359
+             361:   88(ivec3) VectorShuffle 360 360 0 1 2
+             362:  199(bvec3) SLessThan 361 198
+             363:  199(bvec3) GroupNonUniformQuadSwap 35 362 30
+             364:   88(ivec3) Select 363 202 198
+             365:     71(ptr) AccessChain 27(data) 358 39 30
+             366:     19(int) CompositeExtract 364 0
+                              Store 365 366
+             367:     71(ptr) AccessChain 27(data) 358 39 34
+             368:     19(int) CompositeExtract 364 1
+                              Store 367 368
+             369:     71(ptr) AccessChain 27(data) 358 39 61
+             370:     19(int) CompositeExtract 364 2
+                              Store 369 370
+             371:      6(int) Load 8(invocation)
+             372:     78(ptr) AccessChain 27(data) 39 39
+             373:   20(ivec4) Load 372
+             374:  214(bvec4) SLessThan 373 213
+             375:  214(bvec4) GroupNonUniformQuadSwap 35 374 30
+             376:   20(ivec4) Select 375 217 213
+             377:     78(ptr) AccessChain 27(data) 371 39
+                              Store 377 376
+             378:      6(int) Load 8(invocation)
+             379:     31(ptr) AccessChain 27(data) 29 29 30
+             380:   17(float) Load 379
+             381:   17(float) GroupNonUniformQuadSwap 35 380 34
+             382:     31(ptr) AccessChain 27(data) 378 29 30
+                              Store 382 381
+             383:      6(int) Load 8(invocation)
+             384:     41(ptr) AccessChain 27(data) 39 29
+             385:   18(fvec4) Load 384
+             386:   40(fvec2) VectorShuffle 385 385 0 1
+             387:   40(fvec2) GroupNonUniformQuadSwap 35 386 34
+             388:     31(ptr) AccessChain 27(data) 383 29 30
+             389:   17(float) CompositeExtract 387 0
+                              Store 388 389
+             390:     31(ptr) AccessChain 27(data) 383 29 34
+             391:   17(float) CompositeExtract 387 1
+                              Store 390 391
+             392:      6(int) Load 8(invocation)
+             393:     41(ptr) AccessChain 27(data) 51 29
+             394:   18(fvec4) Load 393
+             395:   52(fvec3) VectorShuffle 394 394 0 1 2
+             396:   52(fvec3) GroupNonUniformQuadSwap 35 395 34
+             397:     31(ptr) AccessChain 27(data) 392 29 30
+             398:   17(float) CompositeExtract 396 0
+                              Store 397 398
+             399:     31(ptr) AccessChain 27(data) 392 29 34
+             400:   17(float) CompositeExtract 396 1
+                              Store 399 400
+             401:     31(ptr) AccessChain 27(data) 392 29 61
+             402:   17(float) CompositeExtract 396 2
+                              Store 401 402
+             403:      6(int) Load 8(invocation)
+             404:     41(ptr) AccessChain 27(data) 65 29
+             405:   18(fvec4) Load 404
+             406:   18(fvec4) GroupNonUniformQuadSwap 35 405 34
+             407:     41(ptr) AccessChain 27(data) 403 29
+                              Store 407 406
+             408:      6(int) Load 8(invocation)
+             409:     71(ptr) AccessChain 27(data) 29 39 30
+             410:     19(int) Load 409
+             411:     19(int) GroupNonUniformQuadSwap 35 410 34
+             412:     71(ptr) AccessChain 27(data) 408 39 30
+                              Store 412 411
+             413:      6(int) Load 8(invocation)
+             414:     78(ptr) AccessChain 27(data) 39 39
+             415:   20(ivec4) Load 414
+             416:   77(ivec2) VectorShuffle 415 415 0 1
+             417:   77(ivec2) GroupNonUniformQuadSwap 35 416 34
+             418:     71(ptr) AccessChain 27(data) 413 39 30
+             419:     19(int) CompositeExtract 417 0
+                              Store 418 419
+             420:     71(ptr) AccessChain 27(data) 413 39 34
+             421:     19(int) CompositeExtract 417 1
+                              Store 420 421
+             422:      6(int) Load 8(invocation)
+             423:     78(ptr) AccessChain 27(data) 51 39
+             424:   20(ivec4) Load 423
+             425:   88(ivec3) VectorShuffle 424 424 0 1 2
+             426:   88(ivec3) GroupNonUniformQuadSwap 35 425 34
+             427:     71(ptr) AccessChain 27(data) 422 39 30
+             428:     19(int) CompositeExtract 426 0
+                              Store 427 428
+             429:     71(ptr) AccessChain 27(data) 422 39 34
+             430:     19(int) CompositeExtract 426 1
+                              Store 429 430
+             431:     71(ptr) AccessChain 27(data) 422 39 61
+             432:     19(int) CompositeExtract 426 2
+                              Store 431 432
+             433:      6(int) Load 8(invocation)
+             434:     78(ptr) AccessChain 27(data) 65 39
+             435:   20(ivec4) Load 434
+             436:   20(ivec4) GroupNonUniformQuadSwap 35 435 34
+             437:     78(ptr) AccessChain 27(data) 433 39
+                              Store 437 436
+             438:      6(int) Load 8(invocation)
+             439:    105(ptr) AccessChain 27(data) 29 51 30
+             440:      6(int) Load 439
+             441:      6(int) GroupNonUniformQuadSwap 35 440 34
+             442:    105(ptr) AccessChain 27(data) 438 51 30
+                              Store 442 441
+             443:      6(int) Load 8(invocation)
+             444:    112(ptr) AccessChain 27(data) 39 51
+             445:   21(ivec4) Load 444
+             446:  111(ivec2) VectorShuffle 445 445 0 1
+             447:  111(ivec2) GroupNonUniformQuadSwap 35 446 34
+             448:    105(ptr) AccessChain 27(data) 443 51 30
+             449:      6(int) CompositeExtract 447 0
+                              Store 448 449
+             450:    105(ptr) AccessChain 27(data) 443 51 34
+             451:      6(int) CompositeExtract 447 1
+                              Store 450 451
+             452:      6(int) Load 8(invocation)
+             453:    112(ptr) AccessChain 27(data) 51 51
+             454:   21(ivec4) Load 453
+             455:  122(ivec3) VectorShuffle 454 454 0 1 2
+             456:  122(ivec3) GroupNonUniformQuadSwap 35 455 34
+             457:    105(ptr) AccessChain 27(data) 452 51 30
+             458:      6(int) CompositeExtract 456 0
+                              Store 457 458
+             459:    105(ptr) AccessChain 27(data) 452 51 34
+             460:      6(int) CompositeExtract 456 1
+                              Store 459 460
+             461:    105(ptr) AccessChain 27(data) 452 51 61
+             462:      6(int) CompositeExtract 456 2
+                              Store 461 462
+             463:      6(int) Load 8(invocation)
+             464:    112(ptr) AccessChain 27(data) 65 51
+             465:   21(ivec4) Load 464
+             466:   21(ivec4) GroupNonUniformQuadSwap 35 465 34
+             467:    112(ptr) AccessChain 27(data) 463 51
+                              Store 467 466
              468:      6(int) Load 8(invocation)
-             469:     73(ptr) AccessChain 27(data) 39 39
-             470:   20(ivec4) Load 469
-             471:  193(bvec4) SLessThan 470 192
-             472:  193(bvec4) GroupNonUniformQuadSwap 35 471 34
-             473:   20(ivec4) Select 472 196 192
-             474:     73(ptr) AccessChain 27(data) 468 39
-                              Store 474 473
-             475:      6(int) Load 8(invocation)
-             476:     31(ptr) AccessChain 27(data) 29 29 30
-             477:   17(float) Load 476
-             479:   17(float) GroupNonUniformQuadSwap 35 477 478
-             480:     31(ptr) AccessChain 27(data) 475 29 30
-                              Store 480 479
-             481:      6(int) Load 8(invocation)
-             482:     41(ptr) AccessChain 27(data) 39 29
-             483:   18(fvec4) Load 482
-             484:   40(fvec2) VectorShuffle 483 483 0 1
-             485:   40(fvec2) GroupNonUniformQuadSwap 35 484 478
-             486:     41(ptr) AccessChain 27(data) 481 29
-             487:   18(fvec4) Load 486
-             488:   18(fvec4) VectorShuffle 487 485 4 5 2 3
-                              Store 486 488
-             489:      6(int) Load 8(invocation)
-             490:     41(ptr) AccessChain 27(data) 50 29
-             491:   18(fvec4) Load 490
-             492:   51(fvec3) VectorShuffle 491 491 0 1 2
-             493:   51(fvec3) GroupNonUniformQuadSwap 35 492 478
-             494:     41(ptr) AccessChain 27(data) 489 29
-             495:   18(fvec4) Load 494
-             496:   18(fvec4) VectorShuffle 495 493 4 5 6 3
-                              Store 494 496
-             497:      6(int) Load 8(invocation)
-             498:     41(ptr) AccessChain 27(data) 60 29
-             499:   18(fvec4) Load 498
-             500:   18(fvec4) GroupNonUniformQuadSwap 35 499 478
-             501:     41(ptr) AccessChain 27(data) 497 29
-                              Store 501 500
-             502:      6(int) Load 8(invocation)
-             503:     66(ptr) AccessChain 27(data) 29 39 30
-             504:     19(int) Load 503
-             505:     19(int) GroupNonUniformQuadSwap 35 504 478
-             506:     66(ptr) AccessChain 27(data) 502 39 30
-                              Store 506 505
-             507:      6(int) Load 8(invocation)
-             508:     73(ptr) AccessChain 27(data) 39 39
-             509:   20(ivec4) Load 508
-             510:   72(ivec2) VectorShuffle 509 509 0 1
-             511:   72(ivec2) GroupNonUniformQuadSwap 35 510 478
-             512:     73(ptr) AccessChain 27(data) 507 39
-             513:   20(ivec4) Load 512
-             514:   20(ivec4) VectorShuffle 513 511 4 5 2 3
-                              Store 512 514
-             515:      6(int) Load 8(invocation)
-             516:     73(ptr) AccessChain 27(data) 50 39
-             517:   20(ivec4) Load 516
-             518:   82(ivec3) VectorShuffle 517 517 0 1 2
-             519:   82(ivec3) GroupNonUniformQuadSwap 35 518 478
-             520:     73(ptr) AccessChain 27(data) 515 39
-             521:   20(ivec4) Load 520
-             522:   20(ivec4) VectorShuffle 521 519 4 5 6 3
-                              Store 520 522
-             523:      6(int) Load 8(invocation)
-             524:     73(ptr) AccessChain 27(data) 60 39
-             525:   20(ivec4) Load 524
-             526:   20(ivec4) GroupNonUniformQuadSwap 35 525 478
-             527:     73(ptr) AccessChain 27(data) 523 39
-                              Store 527 526
-             528:      6(int) Load 8(invocation)
-             529:     96(ptr) AccessChain 27(data) 29 50 30
-             530:      6(int) Load 529
-             531:      6(int) GroupNonUniformQuadSwap 35 530 478
-             532:     96(ptr) AccessChain 27(data) 528 50 30
-                              Store 532 531
-             533:      6(int) Load 8(invocation)
-             534:    103(ptr) AccessChain 27(data) 39 50
-             535:   21(ivec4) Load 534
-             536:  102(ivec2) VectorShuffle 535 535 0 1
-             537:  102(ivec2) GroupNonUniformQuadSwap 35 536 478
-             538:    103(ptr) AccessChain 27(data) 533 50
-             539:   21(ivec4) Load 538
-             540:   21(ivec4) VectorShuffle 539 537 4 5 2 3
-                              Store 538 540
+             469:    139(ptr) AccessChain 27(data) 29 65 30
+             470:22(float64_t) Load 469
+             471:22(float64_t) GroupNonUniformQuadSwap 35 470 34
+             472:    139(ptr) AccessChain 27(data) 468 65 30
+                              Store 472 471
+             473:      6(int) Load 8(invocation)
+             474:    146(ptr) AccessChain 27(data) 39 65
+             475: 23(f64vec4) Load 474
+             476:145(f64vec2) VectorShuffle 475 475 0 1
+             477:145(f64vec2) GroupNonUniformQuadSwap 35 476 34
+             478:    139(ptr) AccessChain 27(data) 473 65 30
+             479:22(float64_t) CompositeExtract 477 0
+                              Store 478 479
+             480:    139(ptr) AccessChain 27(data) 473 65 34
+             481:22(float64_t) CompositeExtract 477 1
+                              Store 480 481
+             482:      6(int) Load 8(invocation)
+             483:    146(ptr) AccessChain 27(data) 51 65
+             484: 23(f64vec4) Load 483
+             485:156(f64vec3) VectorShuffle 484 484 0 1 2
+             486:156(f64vec3) GroupNonUniformQuadSwap 35 485 34
+             487:    139(ptr) AccessChain 27(data) 482 65 30
+             488:22(float64_t) CompositeExtract 486 0
+                              Store 487 488
+             489:    139(ptr) AccessChain 27(data) 482 65 34
+             490:22(float64_t) CompositeExtract 486 1
+                              Store 489 490
+             491:    139(ptr) AccessChain 27(data) 482 65 61
+             492:22(float64_t) CompositeExtract 486 2
+                              Store 491 492
+             493:      6(int) Load 8(invocation)
+             494:    146(ptr) AccessChain 27(data) 65 65
+             495: 23(f64vec4) Load 494
+             496: 23(f64vec4) GroupNonUniformQuadSwap 35 495 34
+             497:    146(ptr) AccessChain 27(data) 493 65
+                              Store 497 496
+             498:      6(int) Load 8(invocation)
+             499:     71(ptr) AccessChain 27(data) 29 39 30
+             500:     19(int) Load 499
+             501:   175(bool) SLessThan 500 29
+             502:   175(bool) GroupNonUniformQuadSwap 35 501 34
+             503:     19(int) Select 502 39 29
+             504:     71(ptr) AccessChain 27(data) 498 39 30
+                              Store 504 503
+             505:      6(int) Load 8(invocation)
+             506:     78(ptr) AccessChain 27(data) 39 39
+             507:   20(ivec4) Load 506
+             508:   77(ivec2) VectorShuffle 507 507 0 1
+             509:  185(bvec2) SLessThan 508 184
+             510:  185(bvec2) GroupNonUniformQuadSwap 35 509 34
+             511:   77(ivec2) Select 510 188 184
+             512:     71(ptr) AccessChain 27(data) 505 39 30
+             513:     19(int) CompositeExtract 511 0
+                              Store 512 513
+             514:     71(ptr) AccessChain 27(data) 505 39 34
+             515:     19(int) CompositeExtract 511 1
+                              Store 514 515
+             516:      6(int) Load 8(invocation)
+             517:     78(ptr) AccessChain 27(data) 39 39
+             518:   20(ivec4) Load 517
+             519:   88(ivec3) VectorShuffle 518 518 0 1 2
+             520:  199(bvec3) SLessThan 519 198
+             521:  199(bvec3) GroupNonUniformQuadSwap 35 520 34
+             522:   88(ivec3) Select 521 202 198
+             523:     71(ptr) AccessChain 27(data) 516 39 30
+             524:     19(int) CompositeExtract 522 0
+                              Store 523 524
+             525:     71(ptr) AccessChain 27(data) 516 39 34
+             526:     19(int) CompositeExtract 522 1
+                              Store 525 526
+             527:     71(ptr) AccessChain 27(data) 516 39 61
+             528:     19(int) CompositeExtract 522 2
+                              Store 527 528
+             529:      6(int) Load 8(invocation)
+             530:     78(ptr) AccessChain 27(data) 39 39
+             531:   20(ivec4) Load 530
+             532:  214(bvec4) SLessThan 531 213
+             533:  214(bvec4) GroupNonUniformQuadSwap 35 532 34
+             534:   20(ivec4) Select 533 217 213
+             535:     78(ptr) AccessChain 27(data) 529 39
+                              Store 535 534
+             536:      6(int) Load 8(invocation)
+             537:     31(ptr) AccessChain 27(data) 29 29 30
+             538:   17(float) Load 537
+             539:   17(float) GroupNonUniformQuadSwap 35 538 61
+             540:     31(ptr) AccessChain 27(data) 536 29 30
+                              Store 540 539
              541:      6(int) Load 8(invocation)
-             542:    103(ptr) AccessChain 27(data) 50 50
-             543:   21(ivec4) Load 542
-             544:  112(ivec3) VectorShuffle 543 543 0 1 2
-             545:  112(ivec3) GroupNonUniformQuadSwap 35 544 478
-             546:    103(ptr) AccessChain 27(data) 541 50
-             547:   21(ivec4) Load 546
-             548:   21(ivec4) VectorShuffle 547 545 4 5 6 3
-                              Store 546 548
-             549:      6(int) Load 8(invocation)
-             550:    103(ptr) AccessChain 27(data) 60 50
-             551:   21(ivec4) Load 550
-             552:   21(ivec4) GroupNonUniformQuadSwap 35 551 478
-             553:    103(ptr) AccessChain 27(data) 549 50
-                              Store 553 552
-             554:      6(int) Load 8(invocation)
-             555:    126(ptr) AccessChain 27(data) 29 60 30
-             556:22(float64_t) Load 555
-             557:22(float64_t) GroupNonUniformQuadSwap 35 556 478
-             558:    126(ptr) AccessChain 27(data) 554 60 30
-                              Store 558 557
-             559:      6(int) Load 8(invocation)
-             560:    133(ptr) AccessChain 27(data) 39 60
-             561: 23(f64vec4) Load 560
-             562:132(f64vec2) VectorShuffle 561 561 0 1
-             563:132(f64vec2) GroupNonUniformQuadSwap 35 562 478
-             564:    133(ptr) AccessChain 27(data) 559 60
-             565: 23(f64vec4) Load 564
-             566: 23(f64vec4) VectorShuffle 565 563 4 5 2 3
-                              Store 564 566
-             567:      6(int) Load 8(invocation)
-             568:    133(ptr) AccessChain 27(data) 50 60
-             569: 23(f64vec4) Load 568
-             570:142(f64vec3) VectorShuffle 569 569 0 1 2
-             571:142(f64vec3) GroupNonUniformQuadSwap 35 570 478
-             572:    133(ptr) AccessChain 27(data) 567 60
-             573: 23(f64vec4) Load 572
-             574: 23(f64vec4) VectorShuffle 573 571 4 5 6 3
-                              Store 572 574
-             575:      6(int) Load 8(invocation)
-             576:    133(ptr) AccessChain 27(data) 60 60
-             577: 23(f64vec4) Load 576
-             578: 23(f64vec4) GroupNonUniformQuadSwap 35 577 478
-             579:    133(ptr) AccessChain 27(data) 575 60
-                              Store 579 578
+             542:     41(ptr) AccessChain 27(data) 39 29
+             543:   18(fvec4) Load 542
+             544:   40(fvec2) VectorShuffle 543 543 0 1
+             545:   40(fvec2) GroupNonUniformQuadSwap 35 544 61
+             546:     31(ptr) AccessChain 27(data) 541 29 30
+             547:   17(float) CompositeExtract 545 0
+                              Store 546 547
+             548:     31(ptr) AccessChain 27(data) 541 29 34
+             549:   17(float) CompositeExtract 545 1
+                              Store 548 549
+             550:      6(int) Load 8(invocation)
+             551:     41(ptr) AccessChain 27(data) 51 29
+             552:   18(fvec4) Load 551
+             553:   52(fvec3) VectorShuffle 552 552 0 1 2
+             554:   52(fvec3) GroupNonUniformQuadSwap 35 553 61
+             555:     31(ptr) AccessChain 27(data) 550 29 30
+             556:   17(float) CompositeExtract 554 0
+                              Store 555 556
+             557:     31(ptr) AccessChain 27(data) 550 29 34
+             558:   17(float) CompositeExtract 554 1
+                              Store 557 558
+             559:     31(ptr) AccessChain 27(data) 550 29 61
+             560:   17(float) CompositeExtract 554 2
+                              Store 559 560
+             561:      6(int) Load 8(invocation)
+             562:     41(ptr) AccessChain 27(data) 65 29
+             563:   18(fvec4) Load 562
+             564:   18(fvec4) GroupNonUniformQuadSwap 35 563 61
+             565:     41(ptr) AccessChain 27(data) 561 29
+                              Store 565 564
+             566:      6(int) Load 8(invocation)
+             567:     71(ptr) AccessChain 27(data) 29 39 30
+             568:     19(int) Load 567
+             569:     19(int) GroupNonUniformQuadSwap 35 568 61
+             570:     71(ptr) AccessChain 27(data) 566 39 30
+                              Store 570 569
+             571:      6(int) Load 8(invocation)
+             572:     78(ptr) AccessChain 27(data) 39 39
+             573:   20(ivec4) Load 572
+             574:   77(ivec2) VectorShuffle 573 573 0 1
+             575:   77(ivec2) GroupNonUniformQuadSwap 35 574 61
+             576:     71(ptr) AccessChain 27(data) 571 39 30
+             577:     19(int) CompositeExtract 575 0
+                              Store 576 577
+             578:     71(ptr) AccessChain 27(data) 571 39 34
+             579:     19(int) CompositeExtract 575 1
+                              Store 578 579
              580:      6(int) Load 8(invocation)
-             581:     66(ptr) AccessChain 27(data) 29 39 30
-             582:     19(int) Load 581
-             583:   158(bool) SLessThan 582 29
-             584:   158(bool) GroupNonUniformQuadSwap 35 583 478
-             585:     19(int) Select 584 39 29
-             586:     66(ptr) AccessChain 27(data) 580 39 30
-                              Store 586 585
-             587:      6(int) Load 8(invocation)
-             588:     73(ptr) AccessChain 27(data) 39 39
-             589:   20(ivec4) Load 588
-             590:   72(ivec2) VectorShuffle 589 589 0 1
-             591:  168(bvec2) SLessThan 590 167
-             592:  168(bvec2) GroupNonUniformQuadSwap 35 591 478
-             593:   72(ivec2) Select 592 171 167
-             594:     73(ptr) AccessChain 27(data) 587 39
-             595:   20(ivec4) Load 594
-             596:   20(ivec4) VectorShuffle 595 593 4 5 2 3
-                              Store 594 596
-             597:      6(int) Load 8(invocation)
-             598:     73(ptr) AccessChain 27(data) 39 39
-             599:   20(ivec4) Load 598
-             600:   82(ivec3) VectorShuffle 599 599 0 1 2
-             601:  181(bvec3) SLessThan 600 180
-             602:  181(bvec3) GroupNonUniformQuadSwap 35 601 478
-             603:   82(ivec3) Select 602 184 180
-             604:     73(ptr) AccessChain 27(data) 597 39
-             605:   20(ivec4) Load 604
-             606:   20(ivec4) VectorShuffle 605 603 4 5 6 3
-                              Store 604 606
-             607:      6(int) Load 8(invocation)
-             608:     73(ptr) AccessChain 27(data) 39 39
-             609:   20(ivec4) Load 608
-             610:  193(bvec4) SLessThan 609 192
-             611:  193(bvec4) GroupNonUniformQuadSwap 35 610 478
-             612:   20(ivec4) Select 611 196 192
-             613:     73(ptr) AccessChain 27(data) 607 39
-                              Store 613 612
+             581:     78(ptr) AccessChain 27(data) 51 39
+             582:   20(ivec4) Load 581
+             583:   88(ivec3) VectorShuffle 582 582 0 1 2
+             584:   88(ivec3) GroupNonUniformQuadSwap 35 583 61
+             585:     71(ptr) AccessChain 27(data) 580 39 30
+             586:     19(int) CompositeExtract 584 0
+                              Store 585 586
+             587:     71(ptr) AccessChain 27(data) 580 39 34
+             588:     19(int) CompositeExtract 584 1
+                              Store 587 588
+             589:     71(ptr) AccessChain 27(data) 580 39 61
+             590:     19(int) CompositeExtract 584 2
+                              Store 589 590
+             591:      6(int) Load 8(invocation)
+             592:     78(ptr) AccessChain 27(data) 65 39
+             593:   20(ivec4) Load 592
+             594:   20(ivec4) GroupNonUniformQuadSwap 35 593 61
+             595:     78(ptr) AccessChain 27(data) 591 39
+                              Store 595 594
+             596:      6(int) Load 8(invocation)
+             597:    105(ptr) AccessChain 27(data) 29 51 30
+             598:      6(int) Load 597
+             599:      6(int) GroupNonUniformQuadSwap 35 598 61
+             600:    105(ptr) AccessChain 27(data) 596 51 30
+                              Store 600 599
+             601:      6(int) Load 8(invocation)
+             602:    112(ptr) AccessChain 27(data) 39 51
+             603:   21(ivec4) Load 602
+             604:  111(ivec2) VectorShuffle 603 603 0 1
+             605:  111(ivec2) GroupNonUniformQuadSwap 35 604 61
+             606:    105(ptr) AccessChain 27(data) 601 51 30
+             607:      6(int) CompositeExtract 605 0
+                              Store 606 607
+             608:    105(ptr) AccessChain 27(data) 601 51 34
+             609:      6(int) CompositeExtract 605 1
+                              Store 608 609
+             610:      6(int) Load 8(invocation)
+             611:    112(ptr) AccessChain 27(data) 51 51
+             612:   21(ivec4) Load 611
+             613:  122(ivec3) VectorShuffle 612 612 0 1 2
+             614:  122(ivec3) GroupNonUniformQuadSwap 35 613 61
+             615:    105(ptr) AccessChain 27(data) 610 51 30
+             616:      6(int) CompositeExtract 614 0
+                              Store 615 616
+             617:    105(ptr) AccessChain 27(data) 610 51 34
+             618:      6(int) CompositeExtract 614 1
+                              Store 617 618
+             619:    105(ptr) AccessChain 27(data) 610 51 61
+             620:      6(int) CompositeExtract 614 2
+                              Store 619 620
+             621:      6(int) Load 8(invocation)
+             622:    112(ptr) AccessChain 27(data) 65 51
+             623:   21(ivec4) Load 622
+             624:   21(ivec4) GroupNonUniformQuadSwap 35 623 61
+             625:    112(ptr) AccessChain 27(data) 621 51
+                              Store 625 624
+             626:      6(int) Load 8(invocation)
+             627:    139(ptr) AccessChain 27(data) 29 65 30
+             628:22(float64_t) Load 627
+             629:22(float64_t) GroupNonUniformQuadSwap 35 628 61
+             630:    139(ptr) AccessChain 27(data) 626 65 30
+                              Store 630 629
+             631:      6(int) Load 8(invocation)
+             632:    146(ptr) AccessChain 27(data) 39 65
+             633: 23(f64vec4) Load 632
+             634:145(f64vec2) VectorShuffle 633 633 0 1
+             635:145(f64vec2) GroupNonUniformQuadSwap 35 634 61
+             636:    139(ptr) AccessChain 27(data) 631 65 30
+             637:22(float64_t) CompositeExtract 635 0
+                              Store 636 637
+             638:    139(ptr) AccessChain 27(data) 631 65 34
+             639:22(float64_t) CompositeExtract 635 1
+                              Store 638 639
+             640:      6(int) Load 8(invocation)
+             641:    146(ptr) AccessChain 27(data) 51 65
+             642: 23(f64vec4) Load 641
+             643:156(f64vec3) VectorShuffle 642 642 0 1 2
+             644:156(f64vec3) GroupNonUniformQuadSwap 35 643 61
+             645:    139(ptr) AccessChain 27(data) 640 65 30
+             646:22(float64_t) CompositeExtract 644 0
+                              Store 645 646
+             647:    139(ptr) AccessChain 27(data) 640 65 34
+             648:22(float64_t) CompositeExtract 644 1
+                              Store 647 648
+             649:    139(ptr) AccessChain 27(data) 640 65 61
+             650:22(float64_t) CompositeExtract 644 2
+                              Store 649 650
+             651:      6(int) Load 8(invocation)
+             652:    146(ptr) AccessChain 27(data) 65 65
+             653: 23(f64vec4) Load 652
+             654: 23(f64vec4) GroupNonUniformQuadSwap 35 653 61
+             655:    146(ptr) AccessChain 27(data) 651 65
+                              Store 655 654
+             656:      6(int) Load 8(invocation)
+             657:     71(ptr) AccessChain 27(data) 29 39 30
+             658:     19(int) Load 657
+             659:   175(bool) SLessThan 658 29
+             660:   175(bool) GroupNonUniformQuadSwap 35 659 61
+             661:     19(int) Select 660 39 29
+             662:     71(ptr) AccessChain 27(data) 656 39 30
+                              Store 662 661
+             663:      6(int) Load 8(invocation)
+             664:     78(ptr) AccessChain 27(data) 39 39
+             665:   20(ivec4) Load 664
+             666:   77(ivec2) VectorShuffle 665 665 0 1
+             667:  185(bvec2) SLessThan 666 184
+             668:  185(bvec2) GroupNonUniformQuadSwap 35 667 61
+             669:   77(ivec2) Select 668 188 184
+             670:     71(ptr) AccessChain 27(data) 663 39 30
+             671:     19(int) CompositeExtract 669 0
+                              Store 670 671
+             672:     71(ptr) AccessChain 27(data) 663 39 34
+             673:     19(int) CompositeExtract 669 1
+                              Store 672 673
+             674:      6(int) Load 8(invocation)
+             675:     78(ptr) AccessChain 27(data) 39 39
+             676:   20(ivec4) Load 675
+             677:   88(ivec3) VectorShuffle 676 676 0 1 2
+             678:  199(bvec3) SLessThan 677 198
+             679:  199(bvec3) GroupNonUniformQuadSwap 35 678 61
+             680:   88(ivec3) Select 679 202 198
+             681:     71(ptr) AccessChain 27(data) 674 39 30
+             682:     19(int) CompositeExtract 680 0
+                              Store 681 682
+             683:     71(ptr) AccessChain 27(data) 674 39 34
+             684:     19(int) CompositeExtract 680 1
+                              Store 683 684
+             685:     71(ptr) AccessChain 27(data) 674 39 61
+             686:     19(int) CompositeExtract 680 2
+                              Store 685 686
+             687:      6(int) Load 8(invocation)
+             688:     78(ptr) AccessChain 27(data) 39 39
+             689:   20(ivec4) Load 688
+             690:  214(bvec4) SLessThan 689 213
+             691:  214(bvec4) GroupNonUniformQuadSwap 35 690 61
+             692:   20(ivec4) Select 691 217 213
+             693:     78(ptr) AccessChain 27(data) 687 39
+                              Store 693 692
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.subgroupShuffle.comp.out b/Test/baseResults/spv.subgroupShuffle.comp.out
index b160c5f..02cf89f 100644
--- a/Test/baseResults/spv.subgroupShuffle.comp.out
+++ b/Test/baseResults/spv.subgroupShuffle.comp.out
@@ -1,7 +1,7 @@
 spv.subgroupShuffle.comp
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 379
+// Id's are bound by 420
 
                               Capability Shader
                               Capability Float64
@@ -39,7 +39,7 @@
                               Decorate 24(Buffers) Block
                               Decorate 27(data) DescriptorSet 0
                               Decorate 27(data) Binding 0
-                              Decorate 378 BuiltIn WorkgroupSize
+                              Decorate 419 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -66,34 +66,35 @@
               39:     19(int) Constant 1
               40:             TypeVector 17(float) 2
               41:             TypePointer StorageBuffer 18(fvec4)
-              51:     19(int) Constant 2
-              52:             TypeVector 17(float) 3
-              62:     19(int) Constant 3
-              69:             TypePointer StorageBuffer 19(int)
-              76:             TypeVector 19(int) 2
-              77:             TypePointer StorageBuffer 20(ivec4)
-              87:             TypeVector 19(int) 3
-             103:             TypePointer StorageBuffer 6(int)
-             110:             TypeVector 6(int) 2
-             111:             TypePointer StorageBuffer 21(ivec4)
-             121:             TypeVector 6(int) 3
-             137:             TypePointer StorageBuffer 22(float64_t)
-             144:             TypeVector 22(float64_t) 2
-             145:             TypePointer StorageBuffer 23(f64vec4)
-             155:             TypeVector 22(float64_t) 3
-             173:             TypeBool
-             183:   76(ivec2) ConstantComposite 29 29
-             184:             TypeVector 173(bool) 2
-             188:   76(ivec2) ConstantComposite 39 39
-             197:   87(ivec3) ConstantComposite 29 29 29
-             198:             TypeVector 173(bool) 3
-             202:   87(ivec3) ConstantComposite 39 39 39
-             210:   20(ivec4) ConstantComposite 29 29 29 29
-             211:             TypeVector 173(bool) 4
-             215:   20(ivec4) ConstantComposite 39 39 39 39
-             376:      6(int) Constant 8
-             377:      6(int) Constant 1
-             378:  121(ivec3) ConstantComposite 376 376 377
+              49:      6(int) Constant 1
+              53:     19(int) Constant 2
+              54:             TypeVector 17(float) 3
+              64:      6(int) Constant 2
+              68:     19(int) Constant 3
+              75:             TypePointer StorageBuffer 19(int)
+              82:             TypeVector 19(int) 2
+              83:             TypePointer StorageBuffer 20(ivec4)
+              94:             TypeVector 19(int) 3
+             113:             TypePointer StorageBuffer 6(int)
+             120:             TypeVector 6(int) 2
+             121:             TypePointer StorageBuffer 21(ivec4)
+             132:             TypeVector 6(int) 3
+             151:             TypePointer StorageBuffer 22(float64_t)
+             158:             TypeVector 22(float64_t) 2
+             159:             TypePointer StorageBuffer 23(f64vec4)
+             170:             TypeVector 22(float64_t) 3
+             191:             TypeBool
+             201:   82(ivec2) ConstantComposite 29 29
+             202:             TypeVector 191(bool) 2
+             206:   82(ivec2) ConstantComposite 39 39
+             216:   94(ivec3) ConstantComposite 29 29 29
+             217:             TypeVector 191(bool) 3
+             221:   94(ivec3) ConstantComposite 39 39 39
+             232:   20(ivec4) ConstantComposite 29 29 29 29
+             233:             TypeVector 191(bool) 4
+             237:   20(ivec4) ConstantComposite 39 39 39 39
+             418:      6(int) Constant 8
+             419:  132(ivec3) ConstantComposite 418 418 49
          4(main):           2 Function None 3
                5:             Label
    8(invocation):      7(ptr) Variable Function
@@ -115,348 +116,418 @@
               44:   40(fvec2) VectorShuffle 43 43 0 1
               45:      6(int) Load 8(invocation)
               46:   40(fvec2) GroupNonUniformShuffle 35 44 45
-              47:     41(ptr) AccessChain 27(data) 38 29
-              48:   18(fvec4) Load 47
-              49:   18(fvec4) VectorShuffle 48 46 4 5 2 3
-                              Store 47 49
-              50:      6(int) Load 8(invocation)
-              53:     41(ptr) AccessChain 27(data) 51 29
-              54:   18(fvec4) Load 53
-              55:   52(fvec3) VectorShuffle 54 54 0 1 2
-              56:      6(int) Load 8(invocation)
-              57:   52(fvec3) GroupNonUniformShuffle 35 55 56
-              58:     41(ptr) AccessChain 27(data) 50 29
-              59:   18(fvec4) Load 58
-              60:   18(fvec4) VectorShuffle 59 57 4 5 6 3
-                              Store 58 60
-              61:      6(int) Load 8(invocation)
-              63:     41(ptr) AccessChain 27(data) 62 29
-              64:   18(fvec4) Load 63
-              65:      6(int) Load 8(invocation)
-              66:   18(fvec4) GroupNonUniformShuffle 35 64 65
-              67:     41(ptr) AccessChain 27(data) 61 29
-                              Store 67 66
-              68:      6(int) Load 8(invocation)
-              70:     69(ptr) AccessChain 27(data) 29 39 30
-              71:     19(int) Load 70
-              72:      6(int) Load 8(invocation)
-              73:     19(int) GroupNonUniformShuffle 35 71 72
-              74:     69(ptr) AccessChain 27(data) 68 39 30
-                              Store 74 73
-              75:      6(int) Load 8(invocation)
-              78:     77(ptr) AccessChain 27(data) 39 39
-              79:   20(ivec4) Load 78
-              80:   76(ivec2) VectorShuffle 79 79 0 1
+              47:     31(ptr) AccessChain 27(data) 38 29 30
+              48:   17(float) CompositeExtract 46 0
+                              Store 47 48
+              50:     31(ptr) AccessChain 27(data) 38 29 49
+              51:   17(float) CompositeExtract 46 1
+                              Store 50 51
+              52:      6(int) Load 8(invocation)
+              55:     41(ptr) AccessChain 27(data) 53 29
+              56:   18(fvec4) Load 55
+              57:   54(fvec3) VectorShuffle 56 56 0 1 2
+              58:      6(int) Load 8(invocation)
+              59:   54(fvec3) GroupNonUniformShuffle 35 57 58
+              60:     31(ptr) AccessChain 27(data) 52 29 30
+              61:   17(float) CompositeExtract 59 0
+                              Store 60 61
+              62:     31(ptr) AccessChain 27(data) 52 29 49
+              63:   17(float) CompositeExtract 59 1
+                              Store 62 63
+              65:     31(ptr) AccessChain 27(data) 52 29 64
+              66:   17(float) CompositeExtract 59 2
+                              Store 65 66
+              67:      6(int) Load 8(invocation)
+              69:     41(ptr) AccessChain 27(data) 68 29
+              70:   18(fvec4) Load 69
+              71:      6(int) Load 8(invocation)
+              72:   18(fvec4) GroupNonUniformShuffle 35 70 71
+              73:     41(ptr) AccessChain 27(data) 67 29
+                              Store 73 72
+              74:      6(int) Load 8(invocation)
+              76:     75(ptr) AccessChain 27(data) 29 39 30
+              77:     19(int) Load 76
+              78:      6(int) Load 8(invocation)
+              79:     19(int) GroupNonUniformShuffle 35 77 78
+              80:     75(ptr) AccessChain 27(data) 74 39 30
+                              Store 80 79
               81:      6(int) Load 8(invocation)
-              82:   76(ivec2) GroupNonUniformShuffle 35 80 81
-              83:     77(ptr) AccessChain 27(data) 75 39
-              84:   20(ivec4) Load 83
-              85:   20(ivec4) VectorShuffle 84 82 4 5 2 3
-                              Store 83 85
-              86:      6(int) Load 8(invocation)
-              88:     77(ptr) AccessChain 27(data) 51 39
-              89:   20(ivec4) Load 88
-              90:   87(ivec3) VectorShuffle 89 89 0 1 2
-              91:      6(int) Load 8(invocation)
-              92:   87(ivec3) GroupNonUniformShuffle 35 90 91
-              93:     77(ptr) AccessChain 27(data) 86 39
-              94:   20(ivec4) Load 93
-              95:   20(ivec4) VectorShuffle 94 92 4 5 6 3
-                              Store 93 95
-              96:      6(int) Load 8(invocation)
-              97:     77(ptr) AccessChain 27(data) 62 39
-              98:   20(ivec4) Load 97
-              99:      6(int) Load 8(invocation)
-             100:   20(ivec4) GroupNonUniformShuffle 35 98 99
-             101:     77(ptr) AccessChain 27(data) 96 39
-                              Store 101 100
-             102:      6(int) Load 8(invocation)
-             104:    103(ptr) AccessChain 27(data) 29 51 30
-             105:      6(int) Load 104
+              84:     83(ptr) AccessChain 27(data) 39 39
+              85:   20(ivec4) Load 84
+              86:   82(ivec2) VectorShuffle 85 85 0 1
+              87:      6(int) Load 8(invocation)
+              88:   82(ivec2) GroupNonUniformShuffle 35 86 87
+              89:     75(ptr) AccessChain 27(data) 81 39 30
+              90:     19(int) CompositeExtract 88 0
+                              Store 89 90
+              91:     75(ptr) AccessChain 27(data) 81 39 49
+              92:     19(int) CompositeExtract 88 1
+                              Store 91 92
+              93:      6(int) Load 8(invocation)
+              95:     83(ptr) AccessChain 27(data) 53 39
+              96:   20(ivec4) Load 95
+              97:   94(ivec3) VectorShuffle 96 96 0 1 2
+              98:      6(int) Load 8(invocation)
+              99:   94(ivec3) GroupNonUniformShuffle 35 97 98
+             100:     75(ptr) AccessChain 27(data) 93 39 30
+             101:     19(int) CompositeExtract 99 0
+                              Store 100 101
+             102:     75(ptr) AccessChain 27(data) 93 39 49
+             103:     19(int) CompositeExtract 99 1
+                              Store 102 103
+             104:     75(ptr) AccessChain 27(data) 93 39 64
+             105:     19(int) CompositeExtract 99 2
+                              Store 104 105
              106:      6(int) Load 8(invocation)
-             107:      6(int) GroupNonUniformShuffle 35 105 106
-             108:    103(ptr) AccessChain 27(data) 102 51 30
-                              Store 108 107
+             107:     83(ptr) AccessChain 27(data) 68 39
+             108:   20(ivec4) Load 107
              109:      6(int) Load 8(invocation)
-             112:    111(ptr) AccessChain 27(data) 39 51
-             113:   21(ivec4) Load 112
-             114:  110(ivec2) VectorShuffle 113 113 0 1
-             115:      6(int) Load 8(invocation)
-             116:  110(ivec2) GroupNonUniformShuffle 35 114 115
-             117:    111(ptr) AccessChain 27(data) 109 51
-             118:   21(ivec4) Load 117
-             119:   21(ivec4) VectorShuffle 118 116 4 5 2 3
-                              Store 117 119
-             120:      6(int) Load 8(invocation)
-             122:    111(ptr) AccessChain 27(data) 51 51
+             110:   20(ivec4) GroupNonUniformShuffle 35 108 109
+             111:     83(ptr) AccessChain 27(data) 106 39
+                              Store 111 110
+             112:      6(int) Load 8(invocation)
+             114:    113(ptr) AccessChain 27(data) 29 53 30
+             115:      6(int) Load 114
+             116:      6(int) Load 8(invocation)
+             117:      6(int) GroupNonUniformShuffle 35 115 116
+             118:    113(ptr) AccessChain 27(data) 112 53 30
+                              Store 118 117
+             119:      6(int) Load 8(invocation)
+             122:    121(ptr) AccessChain 27(data) 39 53
              123:   21(ivec4) Load 122
-             124:  121(ivec3) VectorShuffle 123 123 0 1 2
+             124:  120(ivec2) VectorShuffle 123 123 0 1
              125:      6(int) Load 8(invocation)
-             126:  121(ivec3) GroupNonUniformShuffle 35 124 125
-             127:    111(ptr) AccessChain 27(data) 120 51
-             128:   21(ivec4) Load 127
-             129:   21(ivec4) VectorShuffle 128 126 4 5 6 3
-                              Store 127 129
-             130:      6(int) Load 8(invocation)
-             131:    111(ptr) AccessChain 27(data) 62 51
-             132:   21(ivec4) Load 131
-             133:      6(int) Load 8(invocation)
-             134:   21(ivec4) GroupNonUniformShuffle 35 132 133
-             135:    111(ptr) AccessChain 27(data) 130 51
-                              Store 135 134
+             126:  120(ivec2) GroupNonUniformShuffle 35 124 125
+             127:    113(ptr) AccessChain 27(data) 119 53 30
+             128:      6(int) CompositeExtract 126 0
+                              Store 127 128
+             129:    113(ptr) AccessChain 27(data) 119 53 49
+             130:      6(int) CompositeExtract 126 1
+                              Store 129 130
+             131:      6(int) Load 8(invocation)
+             133:    121(ptr) AccessChain 27(data) 53 53
+             134:   21(ivec4) Load 133
+             135:  132(ivec3) VectorShuffle 134 134 0 1 2
              136:      6(int) Load 8(invocation)
-             138:    137(ptr) AccessChain 27(data) 29 62 30
-             139:22(float64_t) Load 138
-             140:      6(int) Load 8(invocation)
-             141:22(float64_t) GroupNonUniformShuffle 35 139 140
-             142:    137(ptr) AccessChain 27(data) 136 62 30
-                              Store 142 141
-             143:      6(int) Load 8(invocation)
-             146:    145(ptr) AccessChain 27(data) 39 62
-             147: 23(f64vec4) Load 146
-             148:144(f64vec2) VectorShuffle 147 147 0 1
-             149:      6(int) Load 8(invocation)
-             150:144(f64vec2) GroupNonUniformShuffle 35 148 149
-             151:    145(ptr) AccessChain 27(data) 143 62
-             152: 23(f64vec4) Load 151
-             153: 23(f64vec4) VectorShuffle 152 150 4 5 2 3
-                              Store 151 153
+             137:  132(ivec3) GroupNonUniformShuffle 35 135 136
+             138:    113(ptr) AccessChain 27(data) 131 53 30
+             139:      6(int) CompositeExtract 137 0
+                              Store 138 139
+             140:    113(ptr) AccessChain 27(data) 131 53 49
+             141:      6(int) CompositeExtract 137 1
+                              Store 140 141
+             142:    113(ptr) AccessChain 27(data) 131 53 64
+             143:      6(int) CompositeExtract 137 2
+                              Store 142 143
+             144:      6(int) Load 8(invocation)
+             145:    121(ptr) AccessChain 27(data) 68 53
+             146:   21(ivec4) Load 145
+             147:      6(int) Load 8(invocation)
+             148:   21(ivec4) GroupNonUniformShuffle 35 146 147
+             149:    121(ptr) AccessChain 27(data) 144 53
+                              Store 149 148
+             150:      6(int) Load 8(invocation)
+             152:    151(ptr) AccessChain 27(data) 29 68 30
+             153:22(float64_t) Load 152
              154:      6(int) Load 8(invocation)
-             156:    145(ptr) AccessChain 27(data) 51 62
-             157: 23(f64vec4) Load 156
-             158:155(f64vec3) VectorShuffle 157 157 0 1 2
-             159:      6(int) Load 8(invocation)
-             160:155(f64vec3) GroupNonUniformShuffle 35 158 159
-             161:    145(ptr) AccessChain 27(data) 154 62
-             162: 23(f64vec4) Load 161
-             163: 23(f64vec4) VectorShuffle 162 160 4 5 6 3
-                              Store 161 163
-             164:      6(int) Load 8(invocation)
-             165:    145(ptr) AccessChain 27(data) 62 62
-             166: 23(f64vec4) Load 165
-             167:      6(int) Load 8(invocation)
-             168: 23(f64vec4) GroupNonUniformShuffle 35 166 167
-             169:    145(ptr) AccessChain 27(data) 164 62
-                              Store 169 168
-             170:      6(int) Load 8(invocation)
-             171:     69(ptr) AccessChain 27(data) 29 39 30
-             172:     19(int) Load 171
-             174:   173(bool) SLessThan 172 29
-             175:      6(int) Load 8(invocation)
-             176:   173(bool) GroupNonUniformShuffle 35 174 175
-             177:     19(int) Select 176 39 29
-             178:     69(ptr) AccessChain 27(data) 170 39 30
-                              Store 178 177
-             179:      6(int) Load 8(invocation)
-             180:     77(ptr) AccessChain 27(data) 39 39
-             181:   20(ivec4) Load 180
-             182:   76(ivec2) VectorShuffle 181 181 0 1
-             185:  184(bvec2) SLessThan 182 183
-             186:      6(int) Load 8(invocation)
-             187:  184(bvec2) GroupNonUniformShuffle 35 185 186
-             189:   76(ivec2) Select 187 188 183
-             190:     77(ptr) AccessChain 27(data) 179 39
-             191:   20(ivec4) Load 190
-             192:   20(ivec4) VectorShuffle 191 189 4 5 2 3
-                              Store 190 192
+             155:22(float64_t) GroupNonUniformShuffle 35 153 154
+             156:    151(ptr) AccessChain 27(data) 150 68 30
+                              Store 156 155
+             157:      6(int) Load 8(invocation)
+             160:    159(ptr) AccessChain 27(data) 39 68
+             161: 23(f64vec4) Load 160
+             162:158(f64vec2) VectorShuffle 161 161 0 1
+             163:      6(int) Load 8(invocation)
+             164:158(f64vec2) GroupNonUniformShuffle 35 162 163
+             165:    151(ptr) AccessChain 27(data) 157 68 30
+             166:22(float64_t) CompositeExtract 164 0
+                              Store 165 166
+             167:    151(ptr) AccessChain 27(data) 157 68 49
+             168:22(float64_t) CompositeExtract 164 1
+                              Store 167 168
+             169:      6(int) Load 8(invocation)
+             171:    159(ptr) AccessChain 27(data) 53 68
+             172: 23(f64vec4) Load 171
+             173:170(f64vec3) VectorShuffle 172 172 0 1 2
+             174:      6(int) Load 8(invocation)
+             175:170(f64vec3) GroupNonUniformShuffle 35 173 174
+             176:    151(ptr) AccessChain 27(data) 169 68 30
+             177:22(float64_t) CompositeExtract 175 0
+                              Store 176 177
+             178:    151(ptr) AccessChain 27(data) 169 68 49
+             179:22(float64_t) CompositeExtract 175 1
+                              Store 178 179
+             180:    151(ptr) AccessChain 27(data) 169 68 64
+             181:22(float64_t) CompositeExtract 175 2
+                              Store 180 181
+             182:      6(int) Load 8(invocation)
+             183:    159(ptr) AccessChain 27(data) 68 68
+             184: 23(f64vec4) Load 183
+             185:      6(int) Load 8(invocation)
+             186: 23(f64vec4) GroupNonUniformShuffle 35 184 185
+             187:    159(ptr) AccessChain 27(data) 182 68
+                              Store 187 186
+             188:      6(int) Load 8(invocation)
+             189:     75(ptr) AccessChain 27(data) 29 39 30
+             190:     19(int) Load 189
+             192:   191(bool) SLessThan 190 29
              193:      6(int) Load 8(invocation)
-             194:     77(ptr) AccessChain 27(data) 39 39
-             195:   20(ivec4) Load 194
-             196:   87(ivec3) VectorShuffle 195 195 0 1 2
-             199:  198(bvec3) SLessThan 196 197
-             200:      6(int) Load 8(invocation)
-             201:  198(bvec3) GroupNonUniformShuffle 35 199 200
-             203:   87(ivec3) Select 201 202 197
-             204:     77(ptr) AccessChain 27(data) 193 39
-             205:   20(ivec4) Load 204
-             206:   20(ivec4) VectorShuffle 205 203 4 5 6 3
-                              Store 204 206
-             207:      6(int) Load 8(invocation)
-             208:     77(ptr) AccessChain 27(data) 39 39
-             209:   20(ivec4) Load 208
-             212:  211(bvec4) SLessThan 209 210
-             213:      6(int) Load 8(invocation)
-             214:  211(bvec4) GroupNonUniformShuffle 35 212 213
-             216:   20(ivec4) Select 214 215 210
-             217:     77(ptr) AccessChain 27(data) 207 39
-                              Store 217 216
-             218:      6(int) Load 8(invocation)
-             219:     31(ptr) AccessChain 27(data) 29 29 30
-             220:   17(float) Load 219
-             221:      6(int) Load 8(invocation)
-             222:   17(float) GroupNonUniformShuffleXor 35 220 221
-             223:     31(ptr) AccessChain 27(data) 218 29 30
-                              Store 223 222
-             224:      6(int) Load 8(invocation)
-             225:     41(ptr) AccessChain 27(data) 39 29
-             226:   18(fvec4) Load 225
-             227:   40(fvec2) VectorShuffle 226 226 0 1
-             228:      6(int) Load 8(invocation)
-             229:   40(fvec2) GroupNonUniformShuffleXor 35 227 228
-             230:     41(ptr) AccessChain 27(data) 224 29
-             231:   18(fvec4) Load 230
-             232:   18(fvec4) VectorShuffle 231 229 4 5 2 3
-                              Store 230 232
-             233:      6(int) Load 8(invocation)
-             234:     41(ptr) AccessChain 27(data) 51 29
-             235:   18(fvec4) Load 234
-             236:   52(fvec3) VectorShuffle 235 235 0 1 2
-             237:      6(int) Load 8(invocation)
-             238:   52(fvec3) GroupNonUniformShuffleXor 35 236 237
-             239:     41(ptr) AccessChain 27(data) 233 29
-             240:   18(fvec4) Load 239
-             241:   18(fvec4) VectorShuffle 240 238 4 5 6 3
-                              Store 239 241
-             242:      6(int) Load 8(invocation)
-             243:     41(ptr) AccessChain 27(data) 62 29
-             244:   18(fvec4) Load 243
-             245:      6(int) Load 8(invocation)
-             246:   18(fvec4) GroupNonUniformShuffleXor 35 244 245
-             247:     41(ptr) AccessChain 27(data) 242 29
-                              Store 247 246
-             248:      6(int) Load 8(invocation)
-             249:     69(ptr) AccessChain 27(data) 29 39 30
-             250:     19(int) Load 249
-             251:      6(int) Load 8(invocation)
-             252:     19(int) GroupNonUniformShuffleXor 35 250 251
-             253:     69(ptr) AccessChain 27(data) 248 39 30
-                              Store 253 252
-             254:      6(int) Load 8(invocation)
-             255:     77(ptr) AccessChain 27(data) 39 39
-             256:   20(ivec4) Load 255
-             257:   76(ivec2) VectorShuffle 256 256 0 1
-             258:      6(int) Load 8(invocation)
-             259:   76(ivec2) GroupNonUniformShuffleXor 35 257 258
-             260:     77(ptr) AccessChain 27(data) 254 39
-             261:   20(ivec4) Load 260
-             262:   20(ivec4) VectorShuffle 261 259 4 5 2 3
-                              Store 260 262
-             263:      6(int) Load 8(invocation)
-             264:     77(ptr) AccessChain 27(data) 51 39
-             265:   20(ivec4) Load 264
-             266:   87(ivec3) VectorShuffle 265 265 0 1 2
-             267:      6(int) Load 8(invocation)
-             268:   87(ivec3) GroupNonUniformShuffleXor 35 266 267
-             269:     77(ptr) AccessChain 27(data) 263 39
-             270:   20(ivec4) Load 269
-             271:   20(ivec4) VectorShuffle 270 268 4 5 6 3
-                              Store 269 271
-             272:      6(int) Load 8(invocation)
-             273:     77(ptr) AccessChain 27(data) 62 39
-             274:   20(ivec4) Load 273
-             275:      6(int) Load 8(invocation)
-             276:   20(ivec4) GroupNonUniformShuffleXor 35 274 275
-             277:     77(ptr) AccessChain 27(data) 272 39
-                              Store 277 276
-             278:      6(int) Load 8(invocation)
-             279:    103(ptr) AccessChain 27(data) 29 51 30
-             280:      6(int) Load 279
-             281:      6(int) Load 8(invocation)
-             282:      6(int) GroupNonUniformShuffleXor 35 280 281
-             283:    103(ptr) AccessChain 27(data) 278 51 30
-                              Store 283 282
+             194:   191(bool) GroupNonUniformShuffle 35 192 193
+             195:     19(int) Select 194 39 29
+             196:     75(ptr) AccessChain 27(data) 188 39 30
+                              Store 196 195
+             197:      6(int) Load 8(invocation)
+             198:     83(ptr) AccessChain 27(data) 39 39
+             199:   20(ivec4) Load 198
+             200:   82(ivec2) VectorShuffle 199 199 0 1
+             203:  202(bvec2) SLessThan 200 201
+             204:      6(int) Load 8(invocation)
+             205:  202(bvec2) GroupNonUniformShuffle 35 203 204
+             207:   82(ivec2) Select 205 206 201
+             208:     75(ptr) AccessChain 27(data) 197 39 30
+             209:     19(int) CompositeExtract 207 0
+                              Store 208 209
+             210:     75(ptr) AccessChain 27(data) 197 39 49
+             211:     19(int) CompositeExtract 207 1
+                              Store 210 211
+             212:      6(int) Load 8(invocation)
+             213:     83(ptr) AccessChain 27(data) 39 39
+             214:   20(ivec4) Load 213
+             215:   94(ivec3) VectorShuffle 214 214 0 1 2
+             218:  217(bvec3) SLessThan 215 216
+             219:      6(int) Load 8(invocation)
+             220:  217(bvec3) GroupNonUniformShuffle 35 218 219
+             222:   94(ivec3) Select 220 221 216
+             223:     75(ptr) AccessChain 27(data) 212 39 30
+             224:     19(int) CompositeExtract 222 0
+                              Store 223 224
+             225:     75(ptr) AccessChain 27(data) 212 39 49
+             226:     19(int) CompositeExtract 222 1
+                              Store 225 226
+             227:     75(ptr) AccessChain 27(data) 212 39 64
+             228:     19(int) CompositeExtract 222 2
+                              Store 227 228
+             229:      6(int) Load 8(invocation)
+             230:     83(ptr) AccessChain 27(data) 39 39
+             231:   20(ivec4) Load 230
+             234:  233(bvec4) SLessThan 231 232
+             235:      6(int) Load 8(invocation)
+             236:  233(bvec4) GroupNonUniformShuffle 35 234 235
+             238:   20(ivec4) Select 236 237 232
+             239:     83(ptr) AccessChain 27(data) 229 39
+                              Store 239 238
+             240:      6(int) Load 8(invocation)
+             241:     31(ptr) AccessChain 27(data) 29 29 30
+             242:   17(float) Load 241
+             243:      6(int) Load 8(invocation)
+             244:   17(float) GroupNonUniformShuffleXor 35 242 243
+             245:     31(ptr) AccessChain 27(data) 240 29 30
+                              Store 245 244
+             246:      6(int) Load 8(invocation)
+             247:     41(ptr) AccessChain 27(data) 39 29
+             248:   18(fvec4) Load 247
+             249:   40(fvec2) VectorShuffle 248 248 0 1
+             250:      6(int) Load 8(invocation)
+             251:   40(fvec2) GroupNonUniformShuffleXor 35 249 250
+             252:     31(ptr) AccessChain 27(data) 246 29 30
+             253:   17(float) CompositeExtract 251 0
+                              Store 252 253
+             254:     31(ptr) AccessChain 27(data) 246 29 49
+             255:   17(float) CompositeExtract 251 1
+                              Store 254 255
+             256:      6(int) Load 8(invocation)
+             257:     41(ptr) AccessChain 27(data) 53 29
+             258:   18(fvec4) Load 257
+             259:   54(fvec3) VectorShuffle 258 258 0 1 2
+             260:      6(int) Load 8(invocation)
+             261:   54(fvec3) GroupNonUniformShuffleXor 35 259 260
+             262:     31(ptr) AccessChain 27(data) 256 29 30
+             263:   17(float) CompositeExtract 261 0
+                              Store 262 263
+             264:     31(ptr) AccessChain 27(data) 256 29 49
+             265:   17(float) CompositeExtract 261 1
+                              Store 264 265
+             266:     31(ptr) AccessChain 27(data) 256 29 64
+             267:   17(float) CompositeExtract 261 2
+                              Store 266 267
+             268:      6(int) Load 8(invocation)
+             269:     41(ptr) AccessChain 27(data) 68 29
+             270:   18(fvec4) Load 269
+             271:      6(int) Load 8(invocation)
+             272:   18(fvec4) GroupNonUniformShuffleXor 35 270 271
+             273:     41(ptr) AccessChain 27(data) 268 29
+                              Store 273 272
+             274:      6(int) Load 8(invocation)
+             275:     75(ptr) AccessChain 27(data) 29 39 30
+             276:     19(int) Load 275
+             277:      6(int) Load 8(invocation)
+             278:     19(int) GroupNonUniformShuffleXor 35 276 277
+             279:     75(ptr) AccessChain 27(data) 274 39 30
+                              Store 279 278
+             280:      6(int) Load 8(invocation)
+             281:     83(ptr) AccessChain 27(data) 39 39
+             282:   20(ivec4) Load 281
+             283:   82(ivec2) VectorShuffle 282 282 0 1
              284:      6(int) Load 8(invocation)
-             285:    111(ptr) AccessChain 27(data) 39 51
-             286:   21(ivec4) Load 285
-             287:  110(ivec2) VectorShuffle 286 286 0 1
-             288:      6(int) Load 8(invocation)
-             289:  110(ivec2) GroupNonUniformShuffleXor 35 287 288
-             290:    111(ptr) AccessChain 27(data) 284 51
-             291:   21(ivec4) Load 290
-             292:   21(ivec4) VectorShuffle 291 289 4 5 2 3
-                              Store 290 292
-             293:      6(int) Load 8(invocation)
-             294:    111(ptr) AccessChain 27(data) 51 51
-             295:   21(ivec4) Load 294
-             296:  121(ivec3) VectorShuffle 295 295 0 1 2
-             297:      6(int) Load 8(invocation)
-             298:  121(ivec3) GroupNonUniformShuffleXor 35 296 297
-             299:    111(ptr) AccessChain 27(data) 293 51
-             300:   21(ivec4) Load 299
-             301:   21(ivec4) VectorShuffle 300 298 4 5 6 3
-                              Store 299 301
+             285:   82(ivec2) GroupNonUniformShuffleXor 35 283 284
+             286:     75(ptr) AccessChain 27(data) 280 39 30
+             287:     19(int) CompositeExtract 285 0
+                              Store 286 287
+             288:     75(ptr) AccessChain 27(data) 280 39 49
+             289:     19(int) CompositeExtract 285 1
+                              Store 288 289
+             290:      6(int) Load 8(invocation)
+             291:     83(ptr) AccessChain 27(data) 53 39
+             292:   20(ivec4) Load 291
+             293:   94(ivec3) VectorShuffle 292 292 0 1 2
+             294:      6(int) Load 8(invocation)
+             295:   94(ivec3) GroupNonUniformShuffleXor 35 293 294
+             296:     75(ptr) AccessChain 27(data) 290 39 30
+             297:     19(int) CompositeExtract 295 0
+                              Store 296 297
+             298:     75(ptr) AccessChain 27(data) 290 39 49
+             299:     19(int) CompositeExtract 295 1
+                              Store 298 299
+             300:     75(ptr) AccessChain 27(data) 290 39 64
+             301:     19(int) CompositeExtract 295 2
+                              Store 300 301
              302:      6(int) Load 8(invocation)
-             303:    111(ptr) AccessChain 27(data) 62 51
-             304:   21(ivec4) Load 303
+             303:     83(ptr) AccessChain 27(data) 68 39
+             304:   20(ivec4) Load 303
              305:      6(int) Load 8(invocation)
-             306:   21(ivec4) GroupNonUniformShuffleXor 35 304 305
-             307:    111(ptr) AccessChain 27(data) 302 51
+             306:   20(ivec4) GroupNonUniformShuffleXor 35 304 305
+             307:     83(ptr) AccessChain 27(data) 302 39
                               Store 307 306
              308:      6(int) Load 8(invocation)
-             309:    137(ptr) AccessChain 27(data) 29 62 30
-             310:22(float64_t) Load 309
+             309:    113(ptr) AccessChain 27(data) 29 53 30
+             310:      6(int) Load 309
              311:      6(int) Load 8(invocation)
-             312:22(float64_t) GroupNonUniformShuffleXor 35 310 311
-             313:    137(ptr) AccessChain 27(data) 308 62 30
+             312:      6(int) GroupNonUniformShuffleXor 35 310 311
+             313:    113(ptr) AccessChain 27(data) 308 53 30
                               Store 313 312
              314:      6(int) Load 8(invocation)
-             315:    145(ptr) AccessChain 27(data) 39 62
-             316: 23(f64vec4) Load 315
-             317:144(f64vec2) VectorShuffle 316 316 0 1
+             315:    121(ptr) AccessChain 27(data) 39 53
+             316:   21(ivec4) Load 315
+             317:  120(ivec2) VectorShuffle 316 316 0 1
              318:      6(int) Load 8(invocation)
-             319:144(f64vec2) GroupNonUniformShuffleXor 35 317 318
-             320:    145(ptr) AccessChain 27(data) 314 62
-             321: 23(f64vec4) Load 320
-             322: 23(f64vec4) VectorShuffle 321 319 4 5 2 3
-                              Store 320 322
-             323:      6(int) Load 8(invocation)
-             324:    145(ptr) AccessChain 27(data) 51 62
-             325: 23(f64vec4) Load 324
-             326:155(f64vec3) VectorShuffle 325 325 0 1 2
-             327:      6(int) Load 8(invocation)
-             328:155(f64vec3) GroupNonUniformShuffleXor 35 326 327
-             329:    145(ptr) AccessChain 27(data) 323 62
-             330: 23(f64vec4) Load 329
-             331: 23(f64vec4) VectorShuffle 330 328 4 5 6 3
-                              Store 329 331
-             332:      6(int) Load 8(invocation)
-             333:    145(ptr) AccessChain 27(data) 62 62
-             334: 23(f64vec4) Load 333
-             335:      6(int) Load 8(invocation)
-             336: 23(f64vec4) GroupNonUniformShuffleXor 35 334 335
-             337:    145(ptr) AccessChain 27(data) 332 62
-                              Store 337 336
-             338:      6(int) Load 8(invocation)
-             339:     69(ptr) AccessChain 27(data) 29 39 30
-             340:     19(int) Load 339
-             341:   173(bool) SLessThan 340 29
+             319:  120(ivec2) GroupNonUniformShuffleXor 35 317 318
+             320:    113(ptr) AccessChain 27(data) 314 53 30
+             321:      6(int) CompositeExtract 319 0
+                              Store 320 321
+             322:    113(ptr) AccessChain 27(data) 314 53 49
+             323:      6(int) CompositeExtract 319 1
+                              Store 322 323
+             324:      6(int) Load 8(invocation)
+             325:    121(ptr) AccessChain 27(data) 53 53
+             326:   21(ivec4) Load 325
+             327:  132(ivec3) VectorShuffle 326 326 0 1 2
+             328:      6(int) Load 8(invocation)
+             329:  132(ivec3) GroupNonUniformShuffleXor 35 327 328
+             330:    113(ptr) AccessChain 27(data) 324 53 30
+             331:      6(int) CompositeExtract 329 0
+                              Store 330 331
+             332:    113(ptr) AccessChain 27(data) 324 53 49
+             333:      6(int) CompositeExtract 329 1
+                              Store 332 333
+             334:    113(ptr) AccessChain 27(data) 324 53 64
+             335:      6(int) CompositeExtract 329 2
+                              Store 334 335
+             336:      6(int) Load 8(invocation)
+             337:    121(ptr) AccessChain 27(data) 68 53
+             338:   21(ivec4) Load 337
+             339:      6(int) Load 8(invocation)
+             340:   21(ivec4) GroupNonUniformShuffleXor 35 338 339
+             341:    121(ptr) AccessChain 27(data) 336 53
+                              Store 341 340
              342:      6(int) Load 8(invocation)
-             343:   173(bool) GroupNonUniformShuffleXor 35 341 342
-             344:     19(int) Select 343 39 29
-             345:     69(ptr) AccessChain 27(data) 338 39 30
-                              Store 345 344
-             346:      6(int) Load 8(invocation)
-             347:     77(ptr) AccessChain 27(data) 39 39
-             348:   20(ivec4) Load 347
-             349:   76(ivec2) VectorShuffle 348 348 0 1
-             350:  184(bvec2) SLessThan 349 183
-             351:      6(int) Load 8(invocation)
-             352:  184(bvec2) GroupNonUniformShuffleXor 35 350 351
-             353:   76(ivec2) Select 352 188 183
-             354:     77(ptr) AccessChain 27(data) 346 39
-             355:   20(ivec4) Load 354
-             356:   20(ivec4) VectorShuffle 355 353 4 5 2 3
-                              Store 354 356
-             357:      6(int) Load 8(invocation)
-             358:     77(ptr) AccessChain 27(data) 39 39
-             359:   20(ivec4) Load 358
-             360:   87(ivec3) VectorShuffle 359 359 0 1 2
-             361:  198(bvec3) SLessThan 360 197
+             343:    151(ptr) AccessChain 27(data) 29 68 30
+             344:22(float64_t) Load 343
+             345:      6(int) Load 8(invocation)
+             346:22(float64_t) GroupNonUniformShuffleXor 35 344 345
+             347:    151(ptr) AccessChain 27(data) 342 68 30
+                              Store 347 346
+             348:      6(int) Load 8(invocation)
+             349:    159(ptr) AccessChain 27(data) 39 68
+             350: 23(f64vec4) Load 349
+             351:158(f64vec2) VectorShuffle 350 350 0 1
+             352:      6(int) Load 8(invocation)
+             353:158(f64vec2) GroupNonUniformShuffleXor 35 351 352
+             354:    151(ptr) AccessChain 27(data) 348 68 30
+             355:22(float64_t) CompositeExtract 353 0
+                              Store 354 355
+             356:    151(ptr) AccessChain 27(data) 348 68 49
+             357:22(float64_t) CompositeExtract 353 1
+                              Store 356 357
+             358:      6(int) Load 8(invocation)
+             359:    159(ptr) AccessChain 27(data) 53 68
+             360: 23(f64vec4) Load 359
+             361:170(f64vec3) VectorShuffle 360 360 0 1 2
              362:      6(int) Load 8(invocation)
-             363:  198(bvec3) GroupNonUniformShuffleXor 35 361 362
-             364:   87(ivec3) Select 363 202 197
-             365:     77(ptr) AccessChain 27(data) 357 39
-             366:   20(ivec4) Load 365
-             367:   20(ivec4) VectorShuffle 366 364 4 5 6 3
-                              Store 365 367
-             368:      6(int) Load 8(invocation)
-             369:     77(ptr) AccessChain 27(data) 39 39
-             370:   20(ivec4) Load 369
-             371:  211(bvec4) SLessThan 370 210
-             372:      6(int) Load 8(invocation)
-             373:  211(bvec4) GroupNonUniformShuffleXor 35 371 372
-             374:   20(ivec4) Select 373 215 210
-             375:     77(ptr) AccessChain 27(data) 368 39
+             363:170(f64vec3) GroupNonUniformShuffleXor 35 361 362
+             364:    151(ptr) AccessChain 27(data) 358 68 30
+             365:22(float64_t) CompositeExtract 363 0
+                              Store 364 365
+             366:    151(ptr) AccessChain 27(data) 358 68 49
+             367:22(float64_t) CompositeExtract 363 1
+                              Store 366 367
+             368:    151(ptr) AccessChain 27(data) 358 68 64
+             369:22(float64_t) CompositeExtract 363 2
+                              Store 368 369
+             370:      6(int) Load 8(invocation)
+             371:    159(ptr) AccessChain 27(data) 68 68
+             372: 23(f64vec4) Load 371
+             373:      6(int) Load 8(invocation)
+             374: 23(f64vec4) GroupNonUniformShuffleXor 35 372 373
+             375:    159(ptr) AccessChain 27(data) 370 68
                               Store 375 374
+             376:      6(int) Load 8(invocation)
+             377:     75(ptr) AccessChain 27(data) 29 39 30
+             378:     19(int) Load 377
+             379:   191(bool) SLessThan 378 29
+             380:      6(int) Load 8(invocation)
+             381:   191(bool) GroupNonUniformShuffleXor 35 379 380
+             382:     19(int) Select 381 39 29
+             383:     75(ptr) AccessChain 27(data) 376 39 30
+                              Store 383 382
+             384:      6(int) Load 8(invocation)
+             385:     83(ptr) AccessChain 27(data) 39 39
+             386:   20(ivec4) Load 385
+             387:   82(ivec2) VectorShuffle 386 386 0 1
+             388:  202(bvec2) SLessThan 387 201
+             389:      6(int) Load 8(invocation)
+             390:  202(bvec2) GroupNonUniformShuffleXor 35 388 389
+             391:   82(ivec2) Select 390 206 201
+             392:     75(ptr) AccessChain 27(data) 384 39 30
+             393:     19(int) CompositeExtract 391 0
+                              Store 392 393
+             394:     75(ptr) AccessChain 27(data) 384 39 49
+             395:     19(int) CompositeExtract 391 1
+                              Store 394 395
+             396:      6(int) Load 8(invocation)
+             397:     83(ptr) AccessChain 27(data) 39 39
+             398:   20(ivec4) Load 397
+             399:   94(ivec3) VectorShuffle 398 398 0 1 2
+             400:  217(bvec3) SLessThan 399 216
+             401:      6(int) Load 8(invocation)
+             402:  217(bvec3) GroupNonUniformShuffleXor 35 400 401
+             403:   94(ivec3) Select 402 221 216
+             404:     75(ptr) AccessChain 27(data) 396 39 30
+             405:     19(int) CompositeExtract 403 0
+                              Store 404 405
+             406:     75(ptr) AccessChain 27(data) 396 39 49
+             407:     19(int) CompositeExtract 403 1
+                              Store 406 407
+             408:     75(ptr) AccessChain 27(data) 396 39 64
+             409:     19(int) CompositeExtract 403 2
+                              Store 408 409
+             410:      6(int) Load 8(invocation)
+             411:     83(ptr) AccessChain 27(data) 39 39
+             412:   20(ivec4) Load 411
+             413:  233(bvec4) SLessThan 412 232
+             414:      6(int) Load 8(invocation)
+             415:  233(bvec4) GroupNonUniformShuffleXor 35 413 414
+             416:   20(ivec4) Select 415 237 232
+             417:     83(ptr) AccessChain 27(data) 410 39
+                              Store 417 416
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.subgroupShuffleRelative.comp.out b/Test/baseResults/spv.subgroupShuffleRelative.comp.out
index 68cd101..e8486b6 100644
--- a/Test/baseResults/spv.subgroupShuffleRelative.comp.out
+++ b/Test/baseResults/spv.subgroupShuffleRelative.comp.out
@@ -1,7 +1,7 @@
 spv.subgroupShuffleRelative.comp
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 379
+// Id's are bound by 420
 
                               Capability Shader
                               Capability Float64
@@ -39,7 +39,7 @@
                               Decorate 24(Buffers) Block
                               Decorate 27(data) DescriptorSet 0
                               Decorate 27(data) Binding 0
-                              Decorate 378 BuiltIn WorkgroupSize
+                              Decorate 419 BuiltIn WorkgroupSize
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 0
@@ -66,34 +66,35 @@
               39:     19(int) Constant 1
               40:             TypeVector 17(float) 2
               41:             TypePointer StorageBuffer 18(fvec4)
-              51:     19(int) Constant 2
-              52:             TypeVector 17(float) 3
-              62:     19(int) Constant 3
-              69:             TypePointer StorageBuffer 19(int)
-              76:             TypeVector 19(int) 2
-              77:             TypePointer StorageBuffer 20(ivec4)
-              87:             TypeVector 19(int) 3
-             103:             TypePointer StorageBuffer 6(int)
-             110:             TypeVector 6(int) 2
-             111:             TypePointer StorageBuffer 21(ivec4)
-             121:             TypeVector 6(int) 3
-             137:             TypePointer StorageBuffer 22(float64_t)
-             144:             TypeVector 22(float64_t) 2
-             145:             TypePointer StorageBuffer 23(f64vec4)
-             155:             TypeVector 22(float64_t) 3
-             173:             TypeBool
-             183:   76(ivec2) ConstantComposite 29 29
-             184:             TypeVector 173(bool) 2
-             188:   76(ivec2) ConstantComposite 39 39
-             197:   87(ivec3) ConstantComposite 29 29 29
-             198:             TypeVector 173(bool) 3
-             202:   87(ivec3) ConstantComposite 39 39 39
-             210:   20(ivec4) ConstantComposite 29 29 29 29
-             211:             TypeVector 173(bool) 4
-             215:   20(ivec4) ConstantComposite 39 39 39 39
-             376:      6(int) Constant 8
-             377:      6(int) Constant 1
-             378:  121(ivec3) ConstantComposite 376 376 377
+              49:      6(int) Constant 1
+              53:     19(int) Constant 2
+              54:             TypeVector 17(float) 3
+              64:      6(int) Constant 2
+              68:     19(int) Constant 3
+              75:             TypePointer StorageBuffer 19(int)
+              82:             TypeVector 19(int) 2
+              83:             TypePointer StorageBuffer 20(ivec4)
+              94:             TypeVector 19(int) 3
+             113:             TypePointer StorageBuffer 6(int)
+             120:             TypeVector 6(int) 2
+             121:             TypePointer StorageBuffer 21(ivec4)
+             132:             TypeVector 6(int) 3
+             151:             TypePointer StorageBuffer 22(float64_t)
+             158:             TypeVector 22(float64_t) 2
+             159:             TypePointer StorageBuffer 23(f64vec4)
+             170:             TypeVector 22(float64_t) 3
+             191:             TypeBool
+             201:   82(ivec2) ConstantComposite 29 29
+             202:             TypeVector 191(bool) 2
+             206:   82(ivec2) ConstantComposite 39 39
+             216:   94(ivec3) ConstantComposite 29 29 29
+             217:             TypeVector 191(bool) 3
+             221:   94(ivec3) ConstantComposite 39 39 39
+             232:   20(ivec4) ConstantComposite 29 29 29 29
+             233:             TypeVector 191(bool) 4
+             237:   20(ivec4) ConstantComposite 39 39 39 39
+             418:      6(int) Constant 8
+             419:  132(ivec3) ConstantComposite 418 418 49
          4(main):           2 Function None 3
                5:             Label
    8(invocation):      7(ptr) Variable Function
@@ -115,348 +116,418 @@
               44:   40(fvec2) VectorShuffle 43 43 0 1
               45:      6(int) Load 8(invocation)
               46:   40(fvec2) GroupNonUniformShuffleUp 35 44 45
-              47:     41(ptr) AccessChain 27(data) 38 29
-              48:   18(fvec4) Load 47
-              49:   18(fvec4) VectorShuffle 48 46 4 5 2 3
-                              Store 47 49
-              50:      6(int) Load 8(invocation)
-              53:     41(ptr) AccessChain 27(data) 51 29
-              54:   18(fvec4) Load 53
-              55:   52(fvec3) VectorShuffle 54 54 0 1 2
-              56:      6(int) Load 8(invocation)
-              57:   52(fvec3) GroupNonUniformShuffleUp 35 55 56
-              58:     41(ptr) AccessChain 27(data) 50 29
-              59:   18(fvec4) Load 58
-              60:   18(fvec4) VectorShuffle 59 57 4 5 6 3
-                              Store 58 60
-              61:      6(int) Load 8(invocation)
-              63:     41(ptr) AccessChain 27(data) 62 29
-              64:   18(fvec4) Load 63
-              65:      6(int) Load 8(invocation)
-              66:   18(fvec4) GroupNonUniformShuffleUp 35 64 65
-              67:     41(ptr) AccessChain 27(data) 61 29
-                              Store 67 66
-              68:      6(int) Load 8(invocation)
-              70:     69(ptr) AccessChain 27(data) 29 39 30
-              71:     19(int) Load 70
-              72:      6(int) Load 8(invocation)
-              73:     19(int) GroupNonUniformShuffleUp 35 71 72
-              74:     69(ptr) AccessChain 27(data) 68 39 30
-                              Store 74 73
-              75:      6(int) Load 8(invocation)
-              78:     77(ptr) AccessChain 27(data) 39 39
-              79:   20(ivec4) Load 78
-              80:   76(ivec2) VectorShuffle 79 79 0 1
+              47:     31(ptr) AccessChain 27(data) 38 29 30
+              48:   17(float) CompositeExtract 46 0
+                              Store 47 48
+              50:     31(ptr) AccessChain 27(data) 38 29 49
+              51:   17(float) CompositeExtract 46 1
+                              Store 50 51
+              52:      6(int) Load 8(invocation)
+              55:     41(ptr) AccessChain 27(data) 53 29
+              56:   18(fvec4) Load 55
+              57:   54(fvec3) VectorShuffle 56 56 0 1 2
+              58:      6(int) Load 8(invocation)
+              59:   54(fvec3) GroupNonUniformShuffleUp 35 57 58
+              60:     31(ptr) AccessChain 27(data) 52 29 30
+              61:   17(float) CompositeExtract 59 0
+                              Store 60 61
+              62:     31(ptr) AccessChain 27(data) 52 29 49
+              63:   17(float) CompositeExtract 59 1
+                              Store 62 63
+              65:     31(ptr) AccessChain 27(data) 52 29 64
+              66:   17(float) CompositeExtract 59 2
+                              Store 65 66
+              67:      6(int) Load 8(invocation)
+              69:     41(ptr) AccessChain 27(data) 68 29
+              70:   18(fvec4) Load 69
+              71:      6(int) Load 8(invocation)
+              72:   18(fvec4) GroupNonUniformShuffleUp 35 70 71
+              73:     41(ptr) AccessChain 27(data) 67 29
+                              Store 73 72
+              74:      6(int) Load 8(invocation)
+              76:     75(ptr) AccessChain 27(data) 29 39 30
+              77:     19(int) Load 76
+              78:      6(int) Load 8(invocation)
+              79:     19(int) GroupNonUniformShuffleUp 35 77 78
+              80:     75(ptr) AccessChain 27(data) 74 39 30
+                              Store 80 79
               81:      6(int) Load 8(invocation)
-              82:   76(ivec2) GroupNonUniformShuffleUp 35 80 81
-              83:     77(ptr) AccessChain 27(data) 75 39
-              84:   20(ivec4) Load 83
-              85:   20(ivec4) VectorShuffle 84 82 4 5 2 3
-                              Store 83 85
-              86:      6(int) Load 8(invocation)
-              88:     77(ptr) AccessChain 27(data) 51 39
-              89:   20(ivec4) Load 88
-              90:   87(ivec3) VectorShuffle 89 89 0 1 2
-              91:      6(int) Load 8(invocation)
-              92:   87(ivec3) GroupNonUniformShuffleUp 35 90 91
-              93:     77(ptr) AccessChain 27(data) 86 39
-              94:   20(ivec4) Load 93
-              95:   20(ivec4) VectorShuffle 94 92 4 5 6 3
-                              Store 93 95
-              96:      6(int) Load 8(invocation)
-              97:     77(ptr) AccessChain 27(data) 62 39
-              98:   20(ivec4) Load 97
-              99:      6(int) Load 8(invocation)
-             100:   20(ivec4) GroupNonUniformShuffleUp 35 98 99
-             101:     77(ptr) AccessChain 27(data) 96 39
-                              Store 101 100
-             102:      6(int) Load 8(invocation)
-             104:    103(ptr) AccessChain 27(data) 29 51 30
-             105:      6(int) Load 104
+              84:     83(ptr) AccessChain 27(data) 39 39
+              85:   20(ivec4) Load 84
+              86:   82(ivec2) VectorShuffle 85 85 0 1
+              87:      6(int) Load 8(invocation)
+              88:   82(ivec2) GroupNonUniformShuffleUp 35 86 87
+              89:     75(ptr) AccessChain 27(data) 81 39 30
+              90:     19(int) CompositeExtract 88 0
+                              Store 89 90
+              91:     75(ptr) AccessChain 27(data) 81 39 49
+              92:     19(int) CompositeExtract 88 1
+                              Store 91 92
+              93:      6(int) Load 8(invocation)
+              95:     83(ptr) AccessChain 27(data) 53 39
+              96:   20(ivec4) Load 95
+              97:   94(ivec3) VectorShuffle 96 96 0 1 2
+              98:      6(int) Load 8(invocation)
+              99:   94(ivec3) GroupNonUniformShuffleUp 35 97 98
+             100:     75(ptr) AccessChain 27(data) 93 39 30
+             101:     19(int) CompositeExtract 99 0
+                              Store 100 101
+             102:     75(ptr) AccessChain 27(data) 93 39 49
+             103:     19(int) CompositeExtract 99 1
+                              Store 102 103
+             104:     75(ptr) AccessChain 27(data) 93 39 64
+             105:     19(int) CompositeExtract 99 2
+                              Store 104 105
              106:      6(int) Load 8(invocation)
-             107:      6(int) GroupNonUniformShuffleUp 35 105 106
-             108:    103(ptr) AccessChain 27(data) 102 51 30
-                              Store 108 107
+             107:     83(ptr) AccessChain 27(data) 68 39
+             108:   20(ivec4) Load 107
              109:      6(int) Load 8(invocation)
-             112:    111(ptr) AccessChain 27(data) 39 51
-             113:   21(ivec4) Load 112
-             114:  110(ivec2) VectorShuffle 113 113 0 1
-             115:      6(int) Load 8(invocation)
-             116:  110(ivec2) GroupNonUniformShuffleUp 35 114 115
-             117:    111(ptr) AccessChain 27(data) 109 51
-             118:   21(ivec4) Load 117
-             119:   21(ivec4) VectorShuffle 118 116 4 5 2 3
-                              Store 117 119
-             120:      6(int) Load 8(invocation)
-             122:    111(ptr) AccessChain 27(data) 51 51
+             110:   20(ivec4) GroupNonUniformShuffleUp 35 108 109
+             111:     83(ptr) AccessChain 27(data) 106 39
+                              Store 111 110
+             112:      6(int) Load 8(invocation)
+             114:    113(ptr) AccessChain 27(data) 29 53 30
+             115:      6(int) Load 114
+             116:      6(int) Load 8(invocation)
+             117:      6(int) GroupNonUniformShuffleUp 35 115 116
+             118:    113(ptr) AccessChain 27(data) 112 53 30
+                              Store 118 117
+             119:      6(int) Load 8(invocation)
+             122:    121(ptr) AccessChain 27(data) 39 53
              123:   21(ivec4) Load 122
-             124:  121(ivec3) VectorShuffle 123 123 0 1 2
+             124:  120(ivec2) VectorShuffle 123 123 0 1
              125:      6(int) Load 8(invocation)
-             126:  121(ivec3) GroupNonUniformShuffleUp 35 124 125
-             127:    111(ptr) AccessChain 27(data) 120 51
-             128:   21(ivec4) Load 127
-             129:   21(ivec4) VectorShuffle 128 126 4 5 6 3
-                              Store 127 129
-             130:      6(int) Load 8(invocation)
-             131:    111(ptr) AccessChain 27(data) 62 51
-             132:   21(ivec4) Load 131
-             133:      6(int) Load 8(invocation)
-             134:   21(ivec4) GroupNonUniformShuffleUp 35 132 133
-             135:    111(ptr) AccessChain 27(data) 130 51
-                              Store 135 134
+             126:  120(ivec2) GroupNonUniformShuffleUp 35 124 125
+             127:    113(ptr) AccessChain 27(data) 119 53 30
+             128:      6(int) CompositeExtract 126 0
+                              Store 127 128
+             129:    113(ptr) AccessChain 27(data) 119 53 49
+             130:      6(int) CompositeExtract 126 1
+                              Store 129 130
+             131:      6(int) Load 8(invocation)
+             133:    121(ptr) AccessChain 27(data) 53 53
+             134:   21(ivec4) Load 133
+             135:  132(ivec3) VectorShuffle 134 134 0 1 2
              136:      6(int) Load 8(invocation)
-             138:    137(ptr) AccessChain 27(data) 29 62 30
-             139:22(float64_t) Load 138
-             140:      6(int) Load 8(invocation)
-             141:22(float64_t) GroupNonUniformShuffleUp 35 139 140
-             142:    137(ptr) AccessChain 27(data) 136 62 30
-                              Store 142 141
-             143:      6(int) Load 8(invocation)
-             146:    145(ptr) AccessChain 27(data) 39 62
-             147: 23(f64vec4) Load 146
-             148:144(f64vec2) VectorShuffle 147 147 0 1
-             149:      6(int) Load 8(invocation)
-             150:144(f64vec2) GroupNonUniformShuffleUp 35 148 149
-             151:    145(ptr) AccessChain 27(data) 143 62
-             152: 23(f64vec4) Load 151
-             153: 23(f64vec4) VectorShuffle 152 150 4 5 2 3
-                              Store 151 153
+             137:  132(ivec3) GroupNonUniformShuffleUp 35 135 136
+             138:    113(ptr) AccessChain 27(data) 131 53 30
+             139:      6(int) CompositeExtract 137 0
+                              Store 138 139
+             140:    113(ptr) AccessChain 27(data) 131 53 49
+             141:      6(int) CompositeExtract 137 1
+                              Store 140 141
+             142:    113(ptr) AccessChain 27(data) 131 53 64
+             143:      6(int) CompositeExtract 137 2
+                              Store 142 143
+             144:      6(int) Load 8(invocation)
+             145:    121(ptr) AccessChain 27(data) 68 53
+             146:   21(ivec4) Load 145
+             147:      6(int) Load 8(invocation)
+             148:   21(ivec4) GroupNonUniformShuffleUp 35 146 147
+             149:    121(ptr) AccessChain 27(data) 144 53
+                              Store 149 148
+             150:      6(int) Load 8(invocation)
+             152:    151(ptr) AccessChain 27(data) 29 68 30
+             153:22(float64_t) Load 152
              154:      6(int) Load 8(invocation)
-             156:    145(ptr) AccessChain 27(data) 51 62
-             157: 23(f64vec4) Load 156
-             158:155(f64vec3) VectorShuffle 157 157 0 1 2
-             159:      6(int) Load 8(invocation)
-             160:155(f64vec3) GroupNonUniformShuffleUp 35 158 159
-             161:    145(ptr) AccessChain 27(data) 154 62
-             162: 23(f64vec4) Load 161
-             163: 23(f64vec4) VectorShuffle 162 160 4 5 6 3
-                              Store 161 163
-             164:      6(int) Load 8(invocation)
-             165:    145(ptr) AccessChain 27(data) 62 62
-             166: 23(f64vec4) Load 165
-             167:      6(int) Load 8(invocation)
-             168: 23(f64vec4) GroupNonUniformShuffleUp 35 166 167
-             169:    145(ptr) AccessChain 27(data) 164 62
-                              Store 169 168
-             170:      6(int) Load 8(invocation)
-             171:     69(ptr) AccessChain 27(data) 29 39 30
-             172:     19(int) Load 171
-             174:   173(bool) SLessThan 172 29
-             175:      6(int) Load 8(invocation)
-             176:   173(bool) GroupNonUniformShuffleUp 35 174 175
-             177:     19(int) Select 176 39 29
-             178:     69(ptr) AccessChain 27(data) 170 39 30
-                              Store 178 177
-             179:      6(int) Load 8(invocation)
-             180:     77(ptr) AccessChain 27(data) 39 39
-             181:   20(ivec4) Load 180
-             182:   76(ivec2) VectorShuffle 181 181 0 1
-             185:  184(bvec2) SLessThan 182 183
-             186:      6(int) Load 8(invocation)
-             187:  184(bvec2) GroupNonUniformShuffleUp 35 185 186
-             189:   76(ivec2) Select 187 188 183
-             190:     77(ptr) AccessChain 27(data) 179 39
-             191:   20(ivec4) Load 190
-             192:   20(ivec4) VectorShuffle 191 189 4 5 2 3
-                              Store 190 192
+             155:22(float64_t) GroupNonUniformShuffleUp 35 153 154
+             156:    151(ptr) AccessChain 27(data) 150 68 30
+                              Store 156 155
+             157:      6(int) Load 8(invocation)
+             160:    159(ptr) AccessChain 27(data) 39 68
+             161: 23(f64vec4) Load 160
+             162:158(f64vec2) VectorShuffle 161 161 0 1
+             163:      6(int) Load 8(invocation)
+             164:158(f64vec2) GroupNonUniformShuffleUp 35 162 163
+             165:    151(ptr) AccessChain 27(data) 157 68 30
+             166:22(float64_t) CompositeExtract 164 0
+                              Store 165 166
+             167:    151(ptr) AccessChain 27(data) 157 68 49
+             168:22(float64_t) CompositeExtract 164 1
+                              Store 167 168
+             169:      6(int) Load 8(invocation)
+             171:    159(ptr) AccessChain 27(data) 53 68
+             172: 23(f64vec4) Load 171
+             173:170(f64vec3) VectorShuffle 172 172 0 1 2
+             174:      6(int) Load 8(invocation)
+             175:170(f64vec3) GroupNonUniformShuffleUp 35 173 174
+             176:    151(ptr) AccessChain 27(data) 169 68 30
+             177:22(float64_t) CompositeExtract 175 0
+                              Store 176 177
+             178:    151(ptr) AccessChain 27(data) 169 68 49
+             179:22(float64_t) CompositeExtract 175 1
+                              Store 178 179
+             180:    151(ptr) AccessChain 27(data) 169 68 64
+             181:22(float64_t) CompositeExtract 175 2
+                              Store 180 181
+             182:      6(int) Load 8(invocation)
+             183:    159(ptr) AccessChain 27(data) 68 68
+             184: 23(f64vec4) Load 183
+             185:      6(int) Load 8(invocation)
+             186: 23(f64vec4) GroupNonUniformShuffleUp 35 184 185
+             187:    159(ptr) AccessChain 27(data) 182 68
+                              Store 187 186
+             188:      6(int) Load 8(invocation)
+             189:     75(ptr) AccessChain 27(data) 29 39 30
+             190:     19(int) Load 189
+             192:   191(bool) SLessThan 190 29
              193:      6(int) Load 8(invocation)
-             194:     77(ptr) AccessChain 27(data) 39 39
-             195:   20(ivec4) Load 194
-             196:   87(ivec3) VectorShuffle 195 195 0 1 2
-             199:  198(bvec3) SLessThan 196 197
-             200:      6(int) Load 8(invocation)
-             201:  198(bvec3) GroupNonUniformShuffleUp 35 199 200
-             203:   87(ivec3) Select 201 202 197
-             204:     77(ptr) AccessChain 27(data) 193 39
-             205:   20(ivec4) Load 204
-             206:   20(ivec4) VectorShuffle 205 203 4 5 6 3
-                              Store 204 206
-             207:      6(int) Load 8(invocation)
-             208:     77(ptr) AccessChain 27(data) 39 39
-             209:   20(ivec4) Load 208
-             212:  211(bvec4) SLessThan 209 210
-             213:      6(int) Load 8(invocation)
-             214:  211(bvec4) GroupNonUniformShuffleUp 35 212 213
-             216:   20(ivec4) Select 214 215 210
-             217:     77(ptr) AccessChain 27(data) 207 39
-                              Store 217 216
-             218:      6(int) Load 8(invocation)
-             219:     31(ptr) AccessChain 27(data) 29 29 30
-             220:   17(float) Load 219
-             221:      6(int) Load 8(invocation)
-             222:   17(float) GroupNonUniformShuffleDown 35 220 221
-             223:     31(ptr) AccessChain 27(data) 218 29 30
-                              Store 223 222
-             224:      6(int) Load 8(invocation)
-             225:     41(ptr) AccessChain 27(data) 39 29
-             226:   18(fvec4) Load 225
-             227:   40(fvec2) VectorShuffle 226 226 0 1
-             228:      6(int) Load 8(invocation)
-             229:   40(fvec2) GroupNonUniformShuffleDown 35 227 228
-             230:     41(ptr) AccessChain 27(data) 224 29
-             231:   18(fvec4) Load 230
-             232:   18(fvec4) VectorShuffle 231 229 4 5 2 3
-                              Store 230 232
-             233:      6(int) Load 8(invocation)
-             234:     41(ptr) AccessChain 27(data) 51 29
-             235:   18(fvec4) Load 234
-             236:   52(fvec3) VectorShuffle 235 235 0 1 2
-             237:      6(int) Load 8(invocation)
-             238:   52(fvec3) GroupNonUniformShuffleDown 35 236 237
-             239:     41(ptr) AccessChain 27(data) 233 29
-             240:   18(fvec4) Load 239
-             241:   18(fvec4) VectorShuffle 240 238 4 5 6 3
-                              Store 239 241
-             242:      6(int) Load 8(invocation)
-             243:     41(ptr) AccessChain 27(data) 62 29
-             244:   18(fvec4) Load 243
-             245:      6(int) Load 8(invocation)
-             246:   18(fvec4) GroupNonUniformShuffleDown 35 244 245
-             247:     41(ptr) AccessChain 27(data) 242 29
-                              Store 247 246
-             248:      6(int) Load 8(invocation)
-             249:     69(ptr) AccessChain 27(data) 29 39 30
-             250:     19(int) Load 249
-             251:      6(int) Load 8(invocation)
-             252:     19(int) GroupNonUniformShuffleDown 35 250 251
-             253:     69(ptr) AccessChain 27(data) 248 39 30
-                              Store 253 252
-             254:      6(int) Load 8(invocation)
-             255:     77(ptr) AccessChain 27(data) 39 39
-             256:   20(ivec4) Load 255
-             257:   76(ivec2) VectorShuffle 256 256 0 1
-             258:      6(int) Load 8(invocation)
-             259:   76(ivec2) GroupNonUniformShuffleDown 35 257 258
-             260:     77(ptr) AccessChain 27(data) 254 39
-             261:   20(ivec4) Load 260
-             262:   20(ivec4) VectorShuffle 261 259 4 5 2 3
-                              Store 260 262
-             263:      6(int) Load 8(invocation)
-             264:     77(ptr) AccessChain 27(data) 51 39
-             265:   20(ivec4) Load 264
-             266:   87(ivec3) VectorShuffle 265 265 0 1 2
-             267:      6(int) Load 8(invocation)
-             268:   87(ivec3) GroupNonUniformShuffleDown 35 266 267
-             269:     77(ptr) AccessChain 27(data) 263 39
-             270:   20(ivec4) Load 269
-             271:   20(ivec4) VectorShuffle 270 268 4 5 6 3
-                              Store 269 271
-             272:      6(int) Load 8(invocation)
-             273:     77(ptr) AccessChain 27(data) 62 39
-             274:   20(ivec4) Load 273
-             275:      6(int) Load 8(invocation)
-             276:   20(ivec4) GroupNonUniformShuffleDown 35 274 275
-             277:     77(ptr) AccessChain 27(data) 272 39
-                              Store 277 276
-             278:      6(int) Load 8(invocation)
-             279:    103(ptr) AccessChain 27(data) 29 51 30
-             280:      6(int) Load 279
-             281:      6(int) Load 8(invocation)
-             282:      6(int) GroupNonUniformShuffleDown 35 280 281
-             283:    103(ptr) AccessChain 27(data) 278 51 30
-                              Store 283 282
+             194:   191(bool) GroupNonUniformShuffleUp 35 192 193
+             195:     19(int) Select 194 39 29
+             196:     75(ptr) AccessChain 27(data) 188 39 30
+                              Store 196 195
+             197:      6(int) Load 8(invocation)
+             198:     83(ptr) AccessChain 27(data) 39 39
+             199:   20(ivec4) Load 198
+             200:   82(ivec2) VectorShuffle 199 199 0 1
+             203:  202(bvec2) SLessThan 200 201
+             204:      6(int) Load 8(invocation)
+             205:  202(bvec2) GroupNonUniformShuffleUp 35 203 204
+             207:   82(ivec2) Select 205 206 201
+             208:     75(ptr) AccessChain 27(data) 197 39 30
+             209:     19(int) CompositeExtract 207 0
+                              Store 208 209
+             210:     75(ptr) AccessChain 27(data) 197 39 49
+             211:     19(int) CompositeExtract 207 1
+                              Store 210 211
+             212:      6(int) Load 8(invocation)
+             213:     83(ptr) AccessChain 27(data) 39 39
+             214:   20(ivec4) Load 213
+             215:   94(ivec3) VectorShuffle 214 214 0 1 2
+             218:  217(bvec3) SLessThan 215 216
+             219:      6(int) Load 8(invocation)
+             220:  217(bvec3) GroupNonUniformShuffleUp 35 218 219
+             222:   94(ivec3) Select 220 221 216
+             223:     75(ptr) AccessChain 27(data) 212 39 30
+             224:     19(int) CompositeExtract 222 0
+                              Store 223 224
+             225:     75(ptr) AccessChain 27(data) 212 39 49
+             226:     19(int) CompositeExtract 222 1
+                              Store 225 226
+             227:     75(ptr) AccessChain 27(data) 212 39 64
+             228:     19(int) CompositeExtract 222 2
+                              Store 227 228
+             229:      6(int) Load 8(invocation)
+             230:     83(ptr) AccessChain 27(data) 39 39
+             231:   20(ivec4) Load 230
+             234:  233(bvec4) SLessThan 231 232
+             235:      6(int) Load 8(invocation)
+             236:  233(bvec4) GroupNonUniformShuffleUp 35 234 235
+             238:   20(ivec4) Select 236 237 232
+             239:     83(ptr) AccessChain 27(data) 229 39
+                              Store 239 238
+             240:      6(int) Load 8(invocation)
+             241:     31(ptr) AccessChain 27(data) 29 29 30
+             242:   17(float) Load 241
+             243:      6(int) Load 8(invocation)
+             244:   17(float) GroupNonUniformShuffleDown 35 242 243
+             245:     31(ptr) AccessChain 27(data) 240 29 30
+                              Store 245 244
+             246:      6(int) Load 8(invocation)
+             247:     41(ptr) AccessChain 27(data) 39 29
+             248:   18(fvec4) Load 247
+             249:   40(fvec2) VectorShuffle 248 248 0 1
+             250:      6(int) Load 8(invocation)
+             251:   40(fvec2) GroupNonUniformShuffleDown 35 249 250
+             252:     31(ptr) AccessChain 27(data) 246 29 30
+             253:   17(float) CompositeExtract 251 0
+                              Store 252 253
+             254:     31(ptr) AccessChain 27(data) 246 29 49
+             255:   17(float) CompositeExtract 251 1
+                              Store 254 255
+             256:      6(int) Load 8(invocation)
+             257:     41(ptr) AccessChain 27(data) 53 29
+             258:   18(fvec4) Load 257
+             259:   54(fvec3) VectorShuffle 258 258 0 1 2
+             260:      6(int) Load 8(invocation)
+             261:   54(fvec3) GroupNonUniformShuffleDown 35 259 260
+             262:     31(ptr) AccessChain 27(data) 256 29 30
+             263:   17(float) CompositeExtract 261 0
+                              Store 262 263
+             264:     31(ptr) AccessChain 27(data) 256 29 49
+             265:   17(float) CompositeExtract 261 1
+                              Store 264 265
+             266:     31(ptr) AccessChain 27(data) 256 29 64
+             267:   17(float) CompositeExtract 261 2
+                              Store 266 267
+             268:      6(int) Load 8(invocation)
+             269:     41(ptr) AccessChain 27(data) 68 29
+             270:   18(fvec4) Load 269
+             271:      6(int) Load 8(invocation)
+             272:   18(fvec4) GroupNonUniformShuffleDown 35 270 271
+             273:     41(ptr) AccessChain 27(data) 268 29
+                              Store 273 272
+             274:      6(int) Load 8(invocation)
+             275:     75(ptr) AccessChain 27(data) 29 39 30
+             276:     19(int) Load 275
+             277:      6(int) Load 8(invocation)
+             278:     19(int) GroupNonUniformShuffleDown 35 276 277
+             279:     75(ptr) AccessChain 27(data) 274 39 30
+                              Store 279 278
+             280:      6(int) Load 8(invocation)
+             281:     83(ptr) AccessChain 27(data) 39 39
+             282:   20(ivec4) Load 281
+             283:   82(ivec2) VectorShuffle 282 282 0 1
              284:      6(int) Load 8(invocation)
-             285:    111(ptr) AccessChain 27(data) 39 51
-             286:   21(ivec4) Load 285
-             287:  110(ivec2) VectorShuffle 286 286 0 1
-             288:      6(int) Load 8(invocation)
-             289:  110(ivec2) GroupNonUniformShuffleDown 35 287 288
-             290:    111(ptr) AccessChain 27(data) 284 51
-             291:   21(ivec4) Load 290
-             292:   21(ivec4) VectorShuffle 291 289 4 5 2 3
-                              Store 290 292
-             293:      6(int) Load 8(invocation)
-             294:    111(ptr) AccessChain 27(data) 51 51
-             295:   21(ivec4) Load 294
-             296:  121(ivec3) VectorShuffle 295 295 0 1 2
-             297:      6(int) Load 8(invocation)
-             298:  121(ivec3) GroupNonUniformShuffleDown 35 296 297
-             299:    111(ptr) AccessChain 27(data) 293 51
-             300:   21(ivec4) Load 299
-             301:   21(ivec4) VectorShuffle 300 298 4 5 6 3
-                              Store 299 301
+             285:   82(ivec2) GroupNonUniformShuffleDown 35 283 284
+             286:     75(ptr) AccessChain 27(data) 280 39 30
+             287:     19(int) CompositeExtract 285 0
+                              Store 286 287
+             288:     75(ptr) AccessChain 27(data) 280 39 49
+             289:     19(int) CompositeExtract 285 1
+                              Store 288 289
+             290:      6(int) Load 8(invocation)
+             291:     83(ptr) AccessChain 27(data) 53 39
+             292:   20(ivec4) Load 291
+             293:   94(ivec3) VectorShuffle 292 292 0 1 2
+             294:      6(int) Load 8(invocation)
+             295:   94(ivec3) GroupNonUniformShuffleDown 35 293 294
+             296:     75(ptr) AccessChain 27(data) 290 39 30
+             297:     19(int) CompositeExtract 295 0
+                              Store 296 297
+             298:     75(ptr) AccessChain 27(data) 290 39 49
+             299:     19(int) CompositeExtract 295 1
+                              Store 298 299
+             300:     75(ptr) AccessChain 27(data) 290 39 64
+             301:     19(int) CompositeExtract 295 2
+                              Store 300 301
              302:      6(int) Load 8(invocation)
-             303:    111(ptr) AccessChain 27(data) 62 51
-             304:   21(ivec4) Load 303
+             303:     83(ptr) AccessChain 27(data) 68 39
+             304:   20(ivec4) Load 303
              305:      6(int) Load 8(invocation)
-             306:   21(ivec4) GroupNonUniformShuffleDown 35 304 305
-             307:    111(ptr) AccessChain 27(data) 302 51
+             306:   20(ivec4) GroupNonUniformShuffleDown 35 304 305
+             307:     83(ptr) AccessChain 27(data) 302 39
                               Store 307 306
              308:      6(int) Load 8(invocation)
-             309:    137(ptr) AccessChain 27(data) 29 62 30
-             310:22(float64_t) Load 309
+             309:    113(ptr) AccessChain 27(data) 29 53 30
+             310:      6(int) Load 309
              311:      6(int) Load 8(invocation)
-             312:22(float64_t) GroupNonUniformShuffleDown 35 310 311
-             313:    137(ptr) AccessChain 27(data) 308 62 30
+             312:      6(int) GroupNonUniformShuffleDown 35 310 311
+             313:    113(ptr) AccessChain 27(data) 308 53 30
                               Store 313 312
              314:      6(int) Load 8(invocation)
-             315:    145(ptr) AccessChain 27(data) 39 62
-             316: 23(f64vec4) Load 315
-             317:144(f64vec2) VectorShuffle 316 316 0 1
+             315:    121(ptr) AccessChain 27(data) 39 53
+             316:   21(ivec4) Load 315
+             317:  120(ivec2) VectorShuffle 316 316 0 1
              318:      6(int) Load 8(invocation)
-             319:144(f64vec2) GroupNonUniformShuffleDown 35 317 318
-             320:    145(ptr) AccessChain 27(data) 314 62
-             321: 23(f64vec4) Load 320
-             322: 23(f64vec4) VectorShuffle 321 319 4 5 2 3
-                              Store 320 322
-             323:      6(int) Load 8(invocation)
-             324:    145(ptr) AccessChain 27(data) 51 62
-             325: 23(f64vec4) Load 324
-             326:155(f64vec3) VectorShuffle 325 325 0 1 2
-             327:      6(int) Load 8(invocation)
-             328:155(f64vec3) GroupNonUniformShuffleDown 35 326 327
-             329:    145(ptr) AccessChain 27(data) 323 62
-             330: 23(f64vec4) Load 329
-             331: 23(f64vec4) VectorShuffle 330 328 4 5 6 3
-                              Store 329 331
-             332:      6(int) Load 8(invocation)
-             333:    145(ptr) AccessChain 27(data) 62 62
-             334: 23(f64vec4) Load 333
-             335:      6(int) Load 8(invocation)
-             336: 23(f64vec4) GroupNonUniformShuffleDown 35 334 335
-             337:    145(ptr) AccessChain 27(data) 332 62
-                              Store 337 336
-             338:      6(int) Load 8(invocation)
-             339:     69(ptr) AccessChain 27(data) 29 39 30
-             340:     19(int) Load 339
-             341:   173(bool) SLessThan 340 29
+             319:  120(ivec2) GroupNonUniformShuffleDown 35 317 318
+             320:    113(ptr) AccessChain 27(data) 314 53 30
+             321:      6(int) CompositeExtract 319 0
+                              Store 320 321
+             322:    113(ptr) AccessChain 27(data) 314 53 49
+             323:      6(int) CompositeExtract 319 1
+                              Store 322 323
+             324:      6(int) Load 8(invocation)
+             325:    121(ptr) AccessChain 27(data) 53 53
+             326:   21(ivec4) Load 325
+             327:  132(ivec3) VectorShuffle 326 326 0 1 2
+             328:      6(int) Load 8(invocation)
+             329:  132(ivec3) GroupNonUniformShuffleDown 35 327 328
+             330:    113(ptr) AccessChain 27(data) 324 53 30
+             331:      6(int) CompositeExtract 329 0
+                              Store 330 331
+             332:    113(ptr) AccessChain 27(data) 324 53 49
+             333:      6(int) CompositeExtract 329 1
+                              Store 332 333
+             334:    113(ptr) AccessChain 27(data) 324 53 64
+             335:      6(int) CompositeExtract 329 2
+                              Store 334 335
+             336:      6(int) Load 8(invocation)
+             337:    121(ptr) AccessChain 27(data) 68 53
+             338:   21(ivec4) Load 337
+             339:      6(int) Load 8(invocation)
+             340:   21(ivec4) GroupNonUniformShuffleDown 35 338 339
+             341:    121(ptr) AccessChain 27(data) 336 53
+                              Store 341 340
              342:      6(int) Load 8(invocation)
-             343:   173(bool) GroupNonUniformShuffleDown 35 341 342
-             344:     19(int) Select 343 39 29
-             345:     69(ptr) AccessChain 27(data) 338 39 30
-                              Store 345 344
-             346:      6(int) Load 8(invocation)
-             347:     77(ptr) AccessChain 27(data) 39 39
-             348:   20(ivec4) Load 347
-             349:   76(ivec2) VectorShuffle 348 348 0 1
-             350:  184(bvec2) SLessThan 349 183
-             351:      6(int) Load 8(invocation)
-             352:  184(bvec2) GroupNonUniformShuffleDown 35 350 351
-             353:   76(ivec2) Select 352 188 183
-             354:     77(ptr) AccessChain 27(data) 346 39
-             355:   20(ivec4) Load 354
-             356:   20(ivec4) VectorShuffle 355 353 4 5 2 3
-                              Store 354 356
-             357:      6(int) Load 8(invocation)
-             358:     77(ptr) AccessChain 27(data) 39 39
-             359:   20(ivec4) Load 358
-             360:   87(ivec3) VectorShuffle 359 359 0 1 2
-             361:  198(bvec3) SLessThan 360 197
+             343:    151(ptr) AccessChain 27(data) 29 68 30
+             344:22(float64_t) Load 343
+             345:      6(int) Load 8(invocation)
+             346:22(float64_t) GroupNonUniformShuffleDown 35 344 345
+             347:    151(ptr) AccessChain 27(data) 342 68 30
+                              Store 347 346
+             348:      6(int) Load 8(invocation)
+             349:    159(ptr) AccessChain 27(data) 39 68
+             350: 23(f64vec4) Load 349
+             351:158(f64vec2) VectorShuffle 350 350 0 1
+             352:      6(int) Load 8(invocation)
+             353:158(f64vec2) GroupNonUniformShuffleDown 35 351 352
+             354:    151(ptr) AccessChain 27(data) 348 68 30
+             355:22(float64_t) CompositeExtract 353 0
+                              Store 354 355
+             356:    151(ptr) AccessChain 27(data) 348 68 49
+             357:22(float64_t) CompositeExtract 353 1
+                              Store 356 357
+             358:      6(int) Load 8(invocation)
+             359:    159(ptr) AccessChain 27(data) 53 68
+             360: 23(f64vec4) Load 359
+             361:170(f64vec3) VectorShuffle 360 360 0 1 2
              362:      6(int) Load 8(invocation)
-             363:  198(bvec3) GroupNonUniformShuffleDown 35 361 362
-             364:   87(ivec3) Select 363 202 197
-             365:     77(ptr) AccessChain 27(data) 357 39
-             366:   20(ivec4) Load 365
-             367:   20(ivec4) VectorShuffle 366 364 4 5 6 3
-                              Store 365 367
-             368:      6(int) Load 8(invocation)
-             369:     77(ptr) AccessChain 27(data) 39 39
-             370:   20(ivec4) Load 369
-             371:  211(bvec4) SLessThan 370 210
-             372:      6(int) Load 8(invocation)
-             373:  211(bvec4) GroupNonUniformShuffleDown 35 371 372
-             374:   20(ivec4) Select 373 215 210
-             375:     77(ptr) AccessChain 27(data) 368 39
+             363:170(f64vec3) GroupNonUniformShuffleDown 35 361 362
+             364:    151(ptr) AccessChain 27(data) 358 68 30
+             365:22(float64_t) CompositeExtract 363 0
+                              Store 364 365
+             366:    151(ptr) AccessChain 27(data) 358 68 49
+             367:22(float64_t) CompositeExtract 363 1
+                              Store 366 367
+             368:    151(ptr) AccessChain 27(data) 358 68 64
+             369:22(float64_t) CompositeExtract 363 2
+                              Store 368 369
+             370:      6(int) Load 8(invocation)
+             371:    159(ptr) AccessChain 27(data) 68 68
+             372: 23(f64vec4) Load 371
+             373:      6(int) Load 8(invocation)
+             374: 23(f64vec4) GroupNonUniformShuffleDown 35 372 373
+             375:    159(ptr) AccessChain 27(data) 370 68
                               Store 375 374
+             376:      6(int) Load 8(invocation)
+             377:     75(ptr) AccessChain 27(data) 29 39 30
+             378:     19(int) Load 377
+             379:   191(bool) SLessThan 378 29
+             380:      6(int) Load 8(invocation)
+             381:   191(bool) GroupNonUniformShuffleDown 35 379 380
+             382:     19(int) Select 381 39 29
+             383:     75(ptr) AccessChain 27(data) 376 39 30
+                              Store 383 382
+             384:      6(int) Load 8(invocation)
+             385:     83(ptr) AccessChain 27(data) 39 39
+             386:   20(ivec4) Load 385
+             387:   82(ivec2) VectorShuffle 386 386 0 1
+             388:  202(bvec2) SLessThan 387 201
+             389:      6(int) Load 8(invocation)
+             390:  202(bvec2) GroupNonUniformShuffleDown 35 388 389
+             391:   82(ivec2) Select 390 206 201
+             392:     75(ptr) AccessChain 27(data) 384 39 30
+             393:     19(int) CompositeExtract 391 0
+                              Store 392 393
+             394:     75(ptr) AccessChain 27(data) 384 39 49
+             395:     19(int) CompositeExtract 391 1
+                              Store 394 395
+             396:      6(int) Load 8(invocation)
+             397:     83(ptr) AccessChain 27(data) 39 39
+             398:   20(ivec4) Load 397
+             399:   94(ivec3) VectorShuffle 398 398 0 1 2
+             400:  217(bvec3) SLessThan 399 216
+             401:      6(int) Load 8(invocation)
+             402:  217(bvec3) GroupNonUniformShuffleDown 35 400 401
+             403:   94(ivec3) Select 402 221 216
+             404:     75(ptr) AccessChain 27(data) 396 39 30
+             405:     19(int) CompositeExtract 403 0
+                              Store 404 405
+             406:     75(ptr) AccessChain 27(data) 396 39 49
+             407:     19(int) CompositeExtract 403 1
+                              Store 406 407
+             408:     75(ptr) AccessChain 27(data) 396 39 64
+             409:     19(int) CompositeExtract 403 2
+                              Store 408 409
+             410:      6(int) Load 8(invocation)
+             411:     83(ptr) AccessChain 27(data) 39 39
+             412:   20(ivec4) Load 411
+             413:  233(bvec4) SLessThan 412 232
+             414:      6(int) Load 8(invocation)
+             415:  233(bvec4) GroupNonUniformShuffleDown 35 413 414
+             416:   20(ivec4) Select 415 237 232
+             417:     83(ptr) AccessChain 27(data) 410 39
+                              Store 417 416
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.subgroupUniformControlFlow.vert.out b/Test/baseResults/spv.subgroupUniformControlFlow.vert.out
new file mode 100644
index 0000000..b7fce5a
--- /dev/null
+++ b/Test/baseResults/spv.subgroupUniformControlFlow.vert.out
@@ -0,0 +1,22 @@
+spv.subgroupUniformControlFlow.vert
+WARNING: 0:7: '' : attribute with arguments not recognized, skipping 
+
+// Module Version 10000
+// Generated by (magic number): 8000a
+// Id's are bound by 6
+
+                              Capability Shader
+                              Extension  "SPV_KHR_subgroup_uniform_control_flow"
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main"
+                              ExecutionMode 4 SubgroupUniformControlFlow
+                              Source GLSL 460
+                              SourceExtension  "GL_EXT_subgroup_uniform_control_flow"
+                              Name 4  "main"
+               2:             TypeVoid
+               3:             TypeFunction 2
+         4(main):           2 Function None 3
+               5:             Label
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.swizzle.frag.out b/Test/baseResults/spv.swizzle.frag.out
index 7e42c3e..2aa31e8 100644
--- a/Test/baseResults/spv.swizzle.frag.out
+++ b/Test/baseResults/spv.swizzle.frag.out
@@ -1,12 +1,12 @@
 spv.swizzle.frag
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 108
+// Id's are bound by 117
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 14 30 69 107
+                              EntryPoint Fragment 4  "main" 14 30 78 116
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 140
                               Name 4  "main"
@@ -18,16 +18,16 @@
                               Name 20  "w2"
                               Name 22  "w_flow"
                               Name 30  "t"
-                              Name 49  "w_undef"
-                              Name 56  "p"
-                              Name 69  "gl_FragColor"
-                              Name 81  "c"
-                              Name 83  "rep"
-                              Name 107  "blend"
+                              Name 56  "w_undef"
+                              Name 65  "p"
+                              Name 78  "gl_FragColor"
+                              Name 90  "c"
+                              Name 92  "rep"
+                              Name 116  "blend"
                               Decorate 14(u) Location 1
                               Decorate 30(t) Location 2
-                              Decorate 69(gl_FragColor) Location 0
-                              Decorate 107(blend) Location 0
+                              Decorate 78(gl_FragColor) Location 0
+                              Decorate 116(blend) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -42,21 +42,22 @@
               28:             TypeVector 6(float) 2
               29:             TypePointer Input 28(fvec2)
            30(t):     29(ptr) Variable Input
-              35:     25(int) Constant 0
-              40:     25(int) Constant 1
-              54:             TypeBool
-              55:             TypePointer Private 54(bool)
-           56(p):     55(ptr) Variable Private
-              60:             TypePointer Input 6(float)
-              68:             TypePointer Output 10(fvec4)
-69(gl_FragColor):     68(ptr) Variable Output
-              80:             TypePointer Function 28(fvec2)
-              84:    6(float) Constant 0
-              85:    6(float) Constant 1065353216
-              86:   10(fvec4) ConstantComposite 84 84 84 85
-              92:    6(float) Constant 3212836864
-             102:    6(float) Constant 1079613850
-      107(blend):     60(ptr) Variable Input
+              32:     25(int) Constant 3
+              35:     25(int) Constant 1
+              39:     25(int) Constant 0
+              63:             TypeBool
+              64:             TypePointer Private 63(bool)
+           65(p):     64(ptr) Variable Private
+              69:             TypePointer Input 6(float)
+              77:             TypePointer Output 10(fvec4)
+78(gl_FragColor):     77(ptr) Variable Output
+              89:             TypePointer Function 28(fvec2)
+              93:    6(float) Constant 0
+              94:    6(float) Constant 1065353216
+              95:   10(fvec4) ConstantComposite 93 93 93 94
+             101:    6(float) Constant 3212836864
+             111:    6(float) Constant 1079613850
+      116(blend):     69(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
    8(blendscale):      7(ptr) Variable Function
@@ -65,9 +66,9 @@
    18(w_reorder):     11(ptr) Variable Function
           20(w2):     11(ptr) Variable Function
       22(w_flow):     11(ptr) Variable Function
-     49(w_undef):     11(ptr) Variable Function
-           81(c):     80(ptr) Variable Function
-         83(rep):     11(ptr) Variable Function
+     56(w_undef):     11(ptr) Variable Function
+           90(c):     89(ptr) Variable Function
+         92(rep):     11(ptr) Variable Function
                               Store 8(blendscale) 9
               15:   10(fvec4) Load 14(u)
                               Store 12(w) 15
@@ -83,88 +84,100 @@
               27:      7(ptr) AccessChain 18(w_reorder) 26
                               Store 27 24
               31:   28(fvec2) Load 30(t)
-              32:   10(fvec4) Load 12(w)
-              33:   10(fvec4) VectorShuffle 32 31 0 5 2 4
-                              Store 12(w) 33
-              34:    6(float) Load 8(blendscale)
-              36:      7(ptr) AccessChain 18(w_reorder) 35
-                              Store 36 34
-              37:   10(fvec4) Load 14(u)
-              38:   10(fvec4) VectorShuffle 37 37 2 3 0 1
-                              Store 20(w2) 38
-              39:    6(float) Load 8(blendscale)
-              41:      7(ptr) AccessChain 18(w_reorder) 40
-                              Store 41 39
-              42:   10(fvec4) Load 20(w2)
-              43:   28(fvec2) VectorShuffle 42 42 0 2
-              44:   10(fvec4) Load 16(w_dep)
-              45:   10(fvec4) VectorShuffle 44 43 4 5 2 3
-                              Store 16(w_dep) 45
-              46:   28(fvec2) Load 30(t)
-              47:   10(fvec4) Load 16(w_dep)
-              48:   10(fvec4) VectorShuffle 47 46 0 1 4 5
-                              Store 16(w_dep) 48
-              50:   10(fvec4) Load 14(u)
-              51:   28(fvec2) VectorShuffle 50 50 2 3
-              52:   10(fvec4) Load 49(w_undef)
-              53:   10(fvec4) VectorShuffle 52 51 4 5 2 3
-                              Store 49(w_undef) 53
-              57:    54(bool) Load 56(p)
-                              SelectionMerge 59 None
-                              BranchConditional 57 58 64
-              58:               Label
-              61:     60(ptr)   AccessChain 30(t) 35
-              62:    6(float)   Load 61
-              63:      7(ptr)   AccessChain 22(w_flow) 35
-                                Store 63 62
-                                Branch 59
-              64:               Label
-              65:     60(ptr)   AccessChain 30(t) 40
-              66:    6(float)   Load 65
-              67:      7(ptr)   AccessChain 22(w_flow) 35
-                                Store 67 66
-                                Branch 59
-              59:             Label
-              70:   10(fvec4) Load 18(w_reorder)
-              71:   10(fvec4) Load 49(w_undef)
-              72:   10(fvec4) Load 12(w)
-              73:   10(fvec4) Load 20(w2)
-              74:   10(fvec4) FMul 72 73
-              75:   10(fvec4) Load 16(w_dep)
-              76:   10(fvec4) FMul 74 75
-              77:   10(fvec4) Load 22(w_flow)
-              78:   10(fvec4) FMul 76 77
-              79:   10(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 70 71 78
-                              Store 69(gl_FragColor) 79
-              82:   28(fvec2) Load 30(t)
-                              Store 81(c) 82
-                              Store 83(rep) 86
-              87:      7(ptr) AccessChain 81(c) 35
-              88:    6(float) Load 87
-              89:    54(bool) FOrdLessThan 88 84
-                              SelectionMerge 91 None
-                              BranchConditional 89 90 91
-              90:               Label
-              93:      7(ptr)   AccessChain 81(c) 35
-              94:    6(float)   Load 93
-              95:    6(float)   FMul 94 92
-              96:      7(ptr)   AccessChain 81(c) 35
-                                Store 96 95
-                                Branch 91
-              91:             Label
-              97:      7(ptr) AccessChain 81(c) 35
-              98:    6(float) Load 97
-              99:    54(bool) FOrdLessThanEqual 98 85
-                              SelectionMerge 101 None
-                              BranchConditional 99 100 101
-             100:               Label
-             103:      7(ptr)   AccessChain 83(rep) 35
-                                Store 103 102
-                                Branch 101
-             101:             Label
-             104:   10(fvec4) Load 83(rep)
-             105:   10(fvec4) Load 69(gl_FragColor)
-             106:   10(fvec4) FAdd 105 104
-                              Store 69(gl_FragColor) 106
+              33:      7(ptr) AccessChain 12(w) 32
+              34:    6(float) CompositeExtract 31 0
+                              Store 33 34
+              36:      7(ptr) AccessChain 12(w) 35
+              37:    6(float) CompositeExtract 31 1
+                              Store 36 37
+              38:    6(float) Load 8(blendscale)
+              40:      7(ptr) AccessChain 18(w_reorder) 39
+                              Store 40 38
+              41:   10(fvec4) Load 14(u)
+              42:   10(fvec4) VectorShuffle 41 41 2 3 0 1
+                              Store 20(w2) 42
+              43:    6(float) Load 8(blendscale)
+              44:      7(ptr) AccessChain 18(w_reorder) 35
+                              Store 44 43
+              45:   10(fvec4) Load 20(w2)
+              46:   28(fvec2) VectorShuffle 45 45 0 2
+              47:      7(ptr) AccessChain 16(w_dep) 39
+              48:    6(float) CompositeExtract 46 0
+                              Store 47 48
+              49:      7(ptr) AccessChain 16(w_dep) 35
+              50:    6(float) CompositeExtract 46 1
+                              Store 49 50
+              51:   28(fvec2) Load 30(t)
+              52:      7(ptr) AccessChain 16(w_dep) 26
+              53:    6(float) CompositeExtract 51 0
+                              Store 52 53
+              54:      7(ptr) AccessChain 16(w_dep) 32
+              55:    6(float) CompositeExtract 51 1
+                              Store 54 55
+              57:   10(fvec4) Load 14(u)
+              58:   28(fvec2) VectorShuffle 57 57 2 3
+              59:      7(ptr) AccessChain 56(w_undef) 39
+              60:    6(float) CompositeExtract 58 0
+                              Store 59 60
+              61:      7(ptr) AccessChain 56(w_undef) 35
+              62:    6(float) CompositeExtract 58 1
+                              Store 61 62
+              66:    63(bool) Load 65(p)
+                              SelectionMerge 68 None
+                              BranchConditional 66 67 73
+              67:               Label
+              70:     69(ptr)   AccessChain 30(t) 39
+              71:    6(float)   Load 70
+              72:      7(ptr)   AccessChain 22(w_flow) 39
+                                Store 72 71
+                                Branch 68
+              73:               Label
+              74:     69(ptr)   AccessChain 30(t) 35
+              75:    6(float)   Load 74
+              76:      7(ptr)   AccessChain 22(w_flow) 39
+                                Store 76 75
+                                Branch 68
+              68:             Label
+              79:   10(fvec4) Load 18(w_reorder)
+              80:   10(fvec4) Load 56(w_undef)
+              81:   10(fvec4) Load 12(w)
+              82:   10(fvec4) Load 20(w2)
+              83:   10(fvec4) FMul 81 82
+              84:   10(fvec4) Load 16(w_dep)
+              85:   10(fvec4) FMul 83 84
+              86:   10(fvec4) Load 22(w_flow)
+              87:   10(fvec4) FMul 85 86
+              88:   10(fvec4) ExtInst 1(GLSL.std.450) 46(FMix) 79 80 87
+                              Store 78(gl_FragColor) 88
+              91:   28(fvec2) Load 30(t)
+                              Store 90(c) 91
+                              Store 92(rep) 95
+              96:      7(ptr) AccessChain 90(c) 39
+              97:    6(float) Load 96
+              98:    63(bool) FOrdLessThan 97 93
+                              SelectionMerge 100 None
+                              BranchConditional 98 99 100
+              99:               Label
+             102:      7(ptr)   AccessChain 90(c) 39
+             103:    6(float)   Load 102
+             104:    6(float)   FMul 103 101
+             105:      7(ptr)   AccessChain 90(c) 39
+                                Store 105 104
+                                Branch 100
+             100:             Label
+             106:      7(ptr) AccessChain 90(c) 39
+             107:    6(float) Load 106
+             108:    63(bool) FOrdLessThanEqual 107 94
+                              SelectionMerge 110 None
+                              BranchConditional 108 109 110
+             109:               Label
+             112:      7(ptr)   AccessChain 92(rep) 39
+                                Store 112 111
+                                Branch 110
+             110:             Label
+             113:   10(fvec4) Load 92(rep)
+             114:   10(fvec4) Load 78(gl_FragColor)
+             115:   10(fvec4) FAdd 114 113
+                              Store 78(gl_FragColor) 115
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.uint.frag.out b/Test/baseResults/spv.uint.frag.out
index c19064d..7dbc3b3 100644
--- a/Test/baseResults/spv.uint.frag.out
+++ b/Test/baseResults/spv.uint.frag.out
@@ -75,6 +75,7 @@
                               Decorate 90 RelaxedPrecision
                               Decorate 91 RelaxedPrecision
                               Decorate 92 RelaxedPrecision
+                              Decorate 93 RelaxedPrecision
                               Decorate 97 RelaxedPrecision
                               Decorate 98 RelaxedPrecision
                               Decorate 101 RelaxedPrecision
diff --git a/Test/baseResults/spv.uniformArray.frag.out b/Test/baseResults/spv.uniformArray.frag.out
index 8134383..fa66f2b 100644
--- a/Test/baseResults/spv.uniformArray.frag.out
+++ b/Test/baseResults/spv.uniformArray.frag.out
@@ -1,27 +1,27 @@
 spv.uniformArray.frag
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 53
+// Id's are bound by 60
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 14 25 35 47
+                              EntryPoint Fragment 4  "main" 14 25 43 54
                               ExecutionMode 4 OriginUpperLeft
                               Source GLSL 140
                               Name 4  "main"
                               Name 9  "texColor"
                               Name 14  "color"
                               Name 25  "inColor"
-                              Name 35  "alpha"
-                              Name 47  "gl_FragColor"
-                              Name 52  "texSampler2D"
+                              Name 43  "alpha"
+                              Name 54  "gl_FragColor"
+                              Name 59  "texSampler2D"
                               Decorate 14(color) Location 1
                               Decorate 25(inColor) Location 0
-                              Decorate 35(alpha) Location 7
-                              Decorate 47(gl_FragColor) Location 0
-                              Decorate 52(texSampler2D) DescriptorSet 0
-                              Decorate 52(texSampler2D) Binding 0
+                              Decorate 43(alpha) Location 7
+                              Decorate 54(gl_FragColor) Location 0
+                              Decorate 59(texSampler2D) DescriptorSet 0
+                              Decorate 59(texSampler2D) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -38,20 +38,23 @@
               23:             TypeVector 6(float) 3
               24:             TypePointer Input 23(fvec3)
      25(inColor):     24(ptr) Variable Input
-              32:     10(int) Constant 16
-              33:             TypeArray 6(float) 32
-              34:             TypePointer Input 33
-       35(alpha):     34(ptr) Variable Input
-              36:     15(int) Constant 12
-              37:             TypePointer Input 6(float)
-              40:     10(int) Constant 3
-              41:             TypePointer Function 6(float)
-              46:             TypePointer Output 7(fvec4)
-47(gl_FragColor):     46(ptr) Variable Output
-              49:             TypeImage 6(float) 2D sampled format:Unknown
-              50:             TypeSampledImage 49
-              51:             TypePointer UniformConstant 50
-52(texSampler2D):     51(ptr) Variable UniformConstant
+              30:     10(int) Constant 0
+              31:             TypePointer Function 6(float)
+              34:     10(int) Constant 1
+              37:     10(int) Constant 2
+              40:     10(int) Constant 16
+              41:             TypeArray 6(float) 40
+              42:             TypePointer Input 41
+       43(alpha):     42(ptr) Variable Input
+              44:     15(int) Constant 12
+              45:             TypePointer Input 6(float)
+              48:     10(int) Constant 3
+              53:             TypePointer Output 7(fvec4)
+54(gl_FragColor):     53(ptr) Variable Output
+              56:             TypeImage 6(float) 2D sampled format:Unknown
+              57:             TypeSampledImage 56
+              58:             TypePointer UniformConstant 57
+59(texSampler2D):     58(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
      9(texColor):      8(ptr) Variable Function
@@ -65,17 +68,23 @@
               27:    7(fvec4) Load 9(texColor)
               28:   23(fvec3) VectorShuffle 27 27 0 1 2
               29:   23(fvec3) FAdd 28 26
-              30:    7(fvec4) Load 9(texColor)
-              31:    7(fvec4) VectorShuffle 30 29 4 5 6 3
-                              Store 9(texColor) 31
-              38:     37(ptr) AccessChain 35(alpha) 36
-              39:    6(float) Load 38
-              42:     41(ptr) AccessChain 9(texColor) 40
-              43:    6(float) Load 42
-              44:    6(float) FAdd 43 39
-              45:     41(ptr) AccessChain 9(texColor) 40
-                              Store 45 44
-              48:    7(fvec4) Load 9(texColor)
-                              Store 47(gl_FragColor) 48
+              32:     31(ptr) AccessChain 9(texColor) 30
+              33:    6(float) CompositeExtract 29 0
+                              Store 32 33
+              35:     31(ptr) AccessChain 9(texColor) 34
+              36:    6(float) CompositeExtract 29 1
+                              Store 35 36
+              38:     31(ptr) AccessChain 9(texColor) 37
+              39:    6(float) CompositeExtract 29 2
+                              Store 38 39
+              46:     45(ptr) AccessChain 43(alpha) 44
+              47:    6(float) Load 46
+              49:     31(ptr) AccessChain 9(texColor) 48
+              50:    6(float) Load 49
+              51:    6(float) FAdd 50 47
+              52:     31(ptr) AccessChain 9(texColor) 48
+                              Store 52 51
+              55:    7(fvec4) Load 9(texColor)
+                              Store 54(gl_FragColor) 55
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.viewportArray2.tesc.out b/Test/baseResults/spv.viewportArray2.tesc.out
index 74235a5..e95ada4 100644
--- a/Test/baseResults/spv.viewportArray2.tesc.out
+++ b/Test/baseResults/spv.viewportArray2.tesc.out
@@ -1,8 +1,7 @@
 spv.viewportArray2.tesc
-Validation failed
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 25
+// Id's are bound by 23
 
                               Capability Tessellation
                               Capability ShaderViewportIndexLayerNV
@@ -11,23 +10,21 @@
                               Extension  "SPV_NV_viewport_array2"
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint TessellationControl 4  "main" 14 16 22 24
+                              EntryPoint TessellationControl 4  "main" 14 16 22
                               ExecutionMode 4 OutputVertices 4
-                              Source GLSL 450
+                              Source GLSL 430
                               SourceExtension  "GL_NV_viewport_array2"
                               Name 4  "main"
                               Name 10  "gl_PerVertex"
                               MemberName 10(gl_PerVertex) 0  "gl_ViewportMask"
                               Name 14  "gl_out"
                               Name 16  "gl_InvocationID"
-                              Name 22  "gl_ViewportIndex"
-                              Name 24  "gl_Layer"
+                              Name 22  "gl_Layer"
                               MemberDecorate 10(gl_PerVertex) 0 BuiltIn ViewportMaskNV
                               Decorate 10(gl_PerVertex) Block
                               Decorate 16(gl_InvocationID) BuiltIn InvocationId
-                              Decorate 22(gl_ViewportIndex) BuiltIn ViewportIndex
-                              Decorate 24(gl_Layer) BuiltIn Layer
-                              Decorate 24(gl_Layer) ViewportRelativeNV
+                              Decorate 22(gl_Layer) BuiltIn Layer
+                              Decorate 22(gl_Layer) ViewportRelativeNV
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeInt 32 1
@@ -44,14 +41,11 @@
               18:      6(int) Constant 0
               19:      6(int) Constant 1
               20:             TypePointer Output 6(int)
-22(gl_ViewportIndex):     20(ptr) Variable Output
-              23:      6(int) Constant 2
-    24(gl_Layer):     20(ptr) Variable Output
+    22(gl_Layer):     20(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
               17:      6(int) Load 16(gl_InvocationID)
               21:     20(ptr) AccessChain 14(gl_out) 17 18 18
                               Store 21 19
-                              Store 22(gl_ViewportIndex) 23
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.vulkan110.int16.frag.out b/Test/baseResults/spv.vulkan110.int16.frag.out
index 39b36cb..47388a2 100644
--- a/Test/baseResults/spv.vulkan110.int16.frag.out
+++ b/Test/baseResults/spv.vulkan110.int16.frag.out
@@ -1,7 +1,7 @@
 spv.vulkan110.int16.frag
 // Module Version 10300
 // Generated by (magic number): 8000a
-// Id's are bound by 523
+// Id's are bound by 535
 
                               Capability Shader
                               Capability Float16
@@ -65,35 +65,35 @@
                               Name 442  "u64"
                               Name 445  "u16v4"
                               Name 457  "bv"
-                              Name 518  "Block"
-                              MemberName 518(Block) 0  "i16"
-                              MemberName 518(Block) 1  "i16v2"
-                              MemberName 518(Block) 2  "i16v3"
-                              MemberName 518(Block) 3  "i16v4"
-                              MemberName 518(Block) 4  "u16"
-                              MemberName 518(Block) 5  "u16v2"
-                              MemberName 518(Block) 6  "u16v3"
-                              MemberName 518(Block) 7  "u16v4"
-                              Name 520  "block"
-                              Name 521  "si16"
-                              Name 522  "su16"
+                              Name 530  "Block"
+                              MemberName 530(Block) 0  "i16"
+                              MemberName 530(Block) 1  "i16v2"
+                              MemberName 530(Block) 2  "i16v3"
+                              MemberName 530(Block) 3  "i16v4"
+                              MemberName 530(Block) 4  "u16"
+                              MemberName 530(Block) 5  "u16v2"
+                              MemberName 530(Block) 6  "u16v3"
+                              MemberName 530(Block) 7  "u16v4"
+                              Name 532  "block"
+                              Name 533  "si16"
+                              Name 534  "su16"
                               MemberDecorate 24(Uniforms) 0 Offset 0
                               Decorate 24(Uniforms) Block
                               Decorate 26 DescriptorSet 0
                               Decorate 26 Binding 0
-                              MemberDecorate 518(Block) 0 Offset 0
-                              MemberDecorate 518(Block) 1 Offset 4
-                              MemberDecorate 518(Block) 2 Offset 8
-                              MemberDecorate 518(Block) 3 Offset 16
-                              MemberDecorate 518(Block) 4 Offset 24
-                              MemberDecorate 518(Block) 5 Offset 28
-                              MemberDecorate 518(Block) 6 Offset 32
-                              MemberDecorate 518(Block) 7 Offset 40
-                              Decorate 518(Block) Block
-                              Decorate 520(block) DescriptorSet 0
-                              Decorate 520(block) Binding 1
-                              Decorate 521(si16) SpecId 100
-                              Decorate 522(su16) SpecId 101
+                              MemberDecorate 530(Block) 0 Offset 0
+                              MemberDecorate 530(Block) 1 Offset 4
+                              MemberDecorate 530(Block) 2 Offset 8
+                              MemberDecorate 530(Block) 3 Offset 16
+                              MemberDecorate 530(Block) 4 Offset 24
+                              MemberDecorate 530(Block) 5 Offset 28
+                              MemberDecorate 530(Block) 6 Offset 32
+                              MemberDecorate 530(Block) 7 Offset 40
+                              Decorate 530(Block) Block
+                              Decorate 532(block) DescriptorSet 0
+                              Decorate 532(block) Binding 1
+                              Decorate 533(si16) SpecId 100
+                              Decorate 534(su16) SpecId 101
                2:             TypeVoid
                3:             TypeFunction 2
               14:             TypeInt 16 1
@@ -185,11 +185,11 @@
              443:             TypeVector 36(int16_t) 4
              444:             TypePointer Function 443(i16vec4)
              456:             TypePointer Function 425(bvec3)
-      518(Block):             TypeStruct 14(int16_t) 52(i16vec2) 197(i16vec3) 432(i16vec4) 36(int16_t) 57(i16vec2) 193(i16vec3) 443(i16vec4)
-             519:             TypePointer Uniform 518(Block)
-      520(block):    519(ptr) Variable Uniform
-       521(si16): 14(int16_t) SpecConstant 4294967286
-       522(su16): 36(int16_t) SpecConstant 20
+      530(Block):             TypeStruct 14(int16_t) 52(i16vec2) 197(i16vec3) 432(i16vec4) 36(int16_t) 57(i16vec2) 193(i16vec3) 443(i16vec4)
+             531:             TypePointer Uniform 530(Block)
+      532(block):    531(ptr) Variable Uniform
+       533(si16): 14(int16_t) SpecConstant 4294967286
+       534(su16): 36(int16_t) SpecConstant 20
          4(main):           2 Function None 3
                5:             Label
                               Return
@@ -674,68 +674,86 @@
              463: 14(int16_t) Load 346(i16)
              464: 52(i16vec2) CompositeConstruct 463 463
              465:  174(bvec2) SLessThan 462 464
-             466:  425(bvec3) Load 457(bv)
-             467:  425(bvec3) VectorShuffle 466 465 3 4 2
-                              Store 457(bv) 467
-             468:193(i16vec3) Load 356(u16v)
-             469: 36(int16_t) Load 358(u16)
-             470:193(i16vec3) CompositeConstruct 469 469 469
-             471:  425(bvec3) ULessThanEqual 468 470
-                              Store 457(bv) 471
-             472: 52(i16vec2) Load 343(i16v)
-             473: 14(int16_t) Load 346(i16)
-             474: 52(i16vec2) CompositeConstruct 473 473
-             475:  174(bvec2) SLessThanEqual 472 474
-             476:  425(bvec3) Load 457(bv)
-             477:  425(bvec3) VectorShuffle 476 475 3 4 2
-                              Store 457(bv) 477
-             478:193(i16vec3) Load 356(u16v)
-             479: 36(int16_t) Load 358(u16)
-             480:193(i16vec3) CompositeConstruct 479 479 479
-             481:  425(bvec3) UGreaterThan 478 480
-                              Store 457(bv) 481
-             482: 52(i16vec2) Load 343(i16v)
-             483: 14(int16_t) Load 346(i16)
-             484: 52(i16vec2) CompositeConstruct 483 483
-             485:  174(bvec2) SGreaterThan 482 484
-             486:  425(bvec3) Load 457(bv)
-             487:  425(bvec3) VectorShuffle 486 485 3 4 2
-                              Store 457(bv) 487
-             488:193(i16vec3) Load 356(u16v)
-             489: 36(int16_t) Load 358(u16)
-             490:193(i16vec3) CompositeConstruct 489 489 489
-             491:  425(bvec3) UGreaterThanEqual 488 490
-                              Store 457(bv) 491
-             492: 52(i16vec2) Load 343(i16v)
-             493: 14(int16_t) Load 346(i16)
-             494: 52(i16vec2) CompositeConstruct 493 493
-             495:  174(bvec2) SGreaterThanEqual 492 494
-             496:  425(bvec3) Load 457(bv)
-             497:  425(bvec3) VectorShuffle 496 495 3 4 2
+             466:    280(ptr) AccessChain 457(bv) 282
+             467:   173(bool) CompositeExtract 465 0
+                              Store 466 467
+             468:    280(ptr) AccessChain 457(bv) 264
+             469:   173(bool) CompositeExtract 465 1
+                              Store 468 469
+             470:193(i16vec3) Load 356(u16v)
+             471: 36(int16_t) Load 358(u16)
+             472:193(i16vec3) CompositeConstruct 471 471 471
+             473:  425(bvec3) ULessThanEqual 470 472
+                              Store 457(bv) 473
+             474: 52(i16vec2) Load 343(i16v)
+             475: 14(int16_t) Load 346(i16)
+             476: 52(i16vec2) CompositeConstruct 475 475
+             477:  174(bvec2) SLessThanEqual 474 476
+             478:    280(ptr) AccessChain 457(bv) 282
+             479:   173(bool) CompositeExtract 477 0
+                              Store 478 479
+             480:    280(ptr) AccessChain 457(bv) 264
+             481:   173(bool) CompositeExtract 477 1
+                              Store 480 481
+             482:193(i16vec3) Load 356(u16v)
+             483: 36(int16_t) Load 358(u16)
+             484:193(i16vec3) CompositeConstruct 483 483 483
+             485:  425(bvec3) UGreaterThan 482 484
+                              Store 457(bv) 485
+             486: 52(i16vec2) Load 343(i16v)
+             487: 14(int16_t) Load 346(i16)
+             488: 52(i16vec2) CompositeConstruct 487 487
+             489:  174(bvec2) SGreaterThan 486 488
+             490:    280(ptr) AccessChain 457(bv) 282
+             491:   173(bool) CompositeExtract 489 0
+                              Store 490 491
+             492:    280(ptr) AccessChain 457(bv) 264
+             493:   173(bool) CompositeExtract 489 1
+                              Store 492 493
+             494:193(i16vec3) Load 356(u16v)
+             495: 36(int16_t) Load 358(u16)
+             496:193(i16vec3) CompositeConstruct 495 495 495
+             497:  425(bvec3) UGreaterThanEqual 494 496
                               Store 457(bv) 497
-             498:193(i16vec3) Load 356(u16v)
-             499: 36(int16_t) Load 358(u16)
-             500:193(i16vec3) CompositeConstruct 499 499 499
-             501:  425(bvec3) IEqual 498 500
-                              Store 457(bv) 501
-             502: 52(i16vec2) Load 343(i16v)
-             503: 14(int16_t) Load 346(i16)
-             504: 52(i16vec2) CompositeConstruct 503 503
-             505:  174(bvec2) IEqual 502 504
-             506:  425(bvec3) Load 457(bv)
-             507:  425(bvec3) VectorShuffle 506 505 3 4 2
-                              Store 457(bv) 507
-             508:193(i16vec3) Load 356(u16v)
-             509: 36(int16_t) Load 358(u16)
-             510:193(i16vec3) CompositeConstruct 509 509 509
-             511:  425(bvec3) INotEqual 508 510
-                              Store 457(bv) 511
-             512: 52(i16vec2) Load 343(i16v)
-             513: 14(int16_t) Load 346(i16)
-             514: 52(i16vec2) CompositeConstruct 513 513
-             515:  174(bvec2) INotEqual 512 514
-             516:  425(bvec3) Load 457(bv)
-             517:  425(bvec3) VectorShuffle 516 515 3 4 2
-                              Store 457(bv) 517
+             498: 52(i16vec2) Load 343(i16v)
+             499: 14(int16_t) Load 346(i16)
+             500: 52(i16vec2) CompositeConstruct 499 499
+             501:  174(bvec2) SGreaterThanEqual 498 500
+             502:    280(ptr) AccessChain 457(bv) 282
+             503:   173(bool) CompositeExtract 501 0
+                              Store 502 503
+             504:    280(ptr) AccessChain 457(bv) 264
+             505:   173(bool) CompositeExtract 501 1
+                              Store 504 505
+             506:193(i16vec3) Load 356(u16v)
+             507: 36(int16_t) Load 358(u16)
+             508:193(i16vec3) CompositeConstruct 507 507 507
+             509:  425(bvec3) IEqual 506 508
+                              Store 457(bv) 509
+             510: 52(i16vec2) Load 343(i16v)
+             511: 14(int16_t) Load 346(i16)
+             512: 52(i16vec2) CompositeConstruct 511 511
+             513:  174(bvec2) IEqual 510 512
+             514:    280(ptr) AccessChain 457(bv) 282
+             515:   173(bool) CompositeExtract 513 0
+                              Store 514 515
+             516:    280(ptr) AccessChain 457(bv) 264
+             517:   173(bool) CompositeExtract 513 1
+                              Store 516 517
+             518:193(i16vec3) Load 356(u16v)
+             519: 36(int16_t) Load 358(u16)
+             520:193(i16vec3) CompositeConstruct 519 519 519
+             521:  425(bvec3) INotEqual 518 520
+                              Store 457(bv) 521
+             522: 52(i16vec2) Load 343(i16v)
+             523: 14(int16_t) Load 346(i16)
+             524: 52(i16vec2) CompositeConstruct 523 523
+             525:  174(bvec2) INotEqual 522 524
+             526:    280(ptr) AccessChain 457(bv) 282
+             527:   173(bool) CompositeExtract 525 0
+                              Store 526 527
+             528:    280(ptr) AccessChain 457(bv) 264
+             529:   173(bool) CompositeExtract 525 1
+                              Store 528 529
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/textureoffset_sampler2darrayshadow.vert.out b/Test/baseResults/textureoffset_sampler2darrayshadow.vert.out
new file mode 100644
index 0000000..44d8e97
--- /dev/null
+++ b/Test/baseResults/textureoffset_sampler2darrayshadow.vert.out
@@ -0,0 +1,63 @@
+textureoffset_sampler2darrayshadow.vert
+ERROR: 0:9: 'sampler' : TextureOffset does not support sampler2DArrayShadow :  ES Profile
+ERROR: 1 compilation errors.  No code generated.
+
+
+Shader version: 300
+ERROR: node is still EOpNull!
+0:7  Function Definition: main( ( global void)
+0:7    Function Parameters: 
+0:9    Sequence
+0:9      move second child to first child ( temp highp 4-component vector of float)
+0:9        'gl_Position' ( gl_Position highp 4-component vector of float Position)
+0:9        Construct vec4 ( temp highp 4-component vector of float)
+0:9          textureOffset ( global mediump float)
+0:9            's' ( uniform mediump sampler2DArrayShadow)
+0:9            Constant:
+0:9              0.000000
+0:9              0.000000
+0:9              0.000000
+0:9              0.000000
+0:9            Constant:
+0:9              0 (const int)
+0:9              0 (const int)
+0:10      move second child to first child ( temp highp 4-component vector of float)
+0:10        'gl_Position' ( gl_Position highp 4-component vector of float Position)
+0:10        'dEQP_Position' ( in highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'dEQP_Position' ( in highp 4-component vector of float)
+0:?     's' ( uniform mediump sampler2DArrayShadow)
+0:?     'gl_VertexID' ( gl_VertexId highp int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId highp int InstanceId)
+
+
+Linked vertex stage:
+
+
+Shader version: 300
+ERROR: node is still EOpNull!
+0:7  Function Definition: main( ( global void)
+0:7    Function Parameters: 
+0:9    Sequence
+0:9      move second child to first child ( temp highp 4-component vector of float)
+0:9        'gl_Position' ( gl_Position highp 4-component vector of float Position)
+0:9        Construct vec4 ( temp highp 4-component vector of float)
+0:9          textureOffset ( global mediump float)
+0:9            's' ( uniform mediump sampler2DArrayShadow)
+0:9            Constant:
+0:9              0.000000
+0:9              0.000000
+0:9              0.000000
+0:9              0.000000
+0:9            Constant:
+0:9              0 (const int)
+0:9              0 (const int)
+0:10      move second child to first child ( temp highp 4-component vector of float)
+0:10        'gl_Position' ( gl_Position highp 4-component vector of float Position)
+0:10        'dEQP_Position' ( in highp 4-component vector of float)
+0:?   Linker Objects
+0:?     'dEQP_Position' ( in highp 4-component vector of float)
+0:?     's' ( uniform mediump sampler2DArrayShadow)
+0:?     'gl_VertexID' ( gl_VertexId highp int VertexId)
+0:?     'gl_InstanceID' ( gl_InstanceId highp int InstanceId)
+
diff --git a/Test/baseResults/uint.frag.out b/Test/baseResults/uint.frag.out
index 3a12d6b..ce6d02d 100644
--- a/Test/baseResults/uint.frag.out
+++ b/Test/baseResults/uint.frag.out
@@ -134,7 +134,7 @@
 0:59        Condition
 0:59        Compare Equal ( temp bool)
 0:59          'shiftedii' ( temp mediump int)
-0:59          Convert uint to int ( temp int)
+0:59          Convert uint to int ( temp mediump int)
 0:59            'shiftedui' ( temp mediump uint)
 0:59        true case
 0:60        move second child to first child ( temp mediump 4-component vector of uint)
@@ -433,7 +433,7 @@
 0:59        Condition
 0:59        Compare Equal ( temp bool)
 0:59          'shiftedii' ( temp mediump int)
-0:59          Convert uint to int ( temp int)
+0:59          Convert uint to int ( temp mediump int)
 0:59            'shiftedui' ( temp mediump uint)
 0:59        true case
 0:60        move second child to first child ( temp mediump 4-component vector of uint)
diff --git a/Test/baseResults/versionsErrors.vert.out b/Test/baseResults/versionsErrors.vert.out
index 6551364..a7a59ea 100644
--- a/Test/baseResults/versionsErrors.vert.out
+++ b/Test/baseResults/versionsErrors.vert.out
@@ -13,7 +13,7 @@
 0:44    Sequence
 0:44      move second child to first child ( temp 4-component vector of float)
 0:44        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
-0:44          '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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:44          '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})
 0:44          Constant:
 0:44            0 (const uint)
 0:44        Construct vec4 ( temp 4-component vector of float)
@@ -24,7 +24,7 @@
 0:?   Linker Objects
 0:?     'color' ( in 3-component vector of float)
 0:?     'foo' ( uniform sampler2DRect)
-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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out unsized 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+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})
 0:?     'gl_VertexID' ( gl_VertexId int VertexId)
 0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
 
@@ -40,7 +40,7 @@
 0:44    Sequence
 0:44      move second child to first child ( temp 4-component vector of float)
 0:44        gl_Position: direct index for structure ( gl_Position 4-component vector of float Position)
-0:44          '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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+0:44          '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})
 0:44          Constant:
 0:44            0 (const uint)
 0:44        Construct vec4 ( temp 4-component vector of float)
@@ -51,7 +51,7 @@
 0:?   Linker Objects
 0:?     'color' ( in 3-component vector of float)
 0:?     'foo' ( uniform sampler2DRect)
-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,  gl_ClipVertex 4-component vector of float ClipVertex gl_ClipVertex,  out 4-component vector of float FrontColor gl_FrontColor,  out 4-component vector of float BackColor gl_BackColor,  out 4-component vector of float FrontSecondaryColor gl_FrontSecondaryColor,  out 4-component vector of float BackSecondaryColor gl_BackSecondaryColor,  out 1-element array of 4-component vector of float TexCoord gl_TexCoord,  out float FogFragCoord gl_FogFragCoord})
+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})
 0:?     'gl_VertexID' ( gl_VertexId int VertexId)
 0:?     'gl_InstanceID' ( gl_InstanceId int InstanceId)
 
diff --git a/Test/baseResults/vk.relaxed.changeSet.vert.out b/Test/baseResults/vk.relaxed.changeSet.vert.out
index f6bce29..d2beff9 100755
--- a/Test/baseResults/vk.relaxed.changeSet.vert.out
+++ b/Test/baseResults/vk.relaxed.changeSet.vert.out
@@ -34,8 +34,8 @@
 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)
+0:?     'gl_VertexIndex' ( in int VertexIndex)
+0:?     'gl_InstanceIndex' ( in int InstanceIndex)
 
 vk.relaxed.changeSet.frag
 Shader version: 460
@@ -108,8 +108,8 @@
 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)
+0:?     'gl_VertexIndex' ( in int VertexIndex)
+0:?     'gl_InstanceIndex' ( in int InstanceIndex)
 Shader version: 460
 gl_FragCoord origin is upper left
 0:? Sequence
@@ -162,8 +162,8 @@
                               MemberName 28(gl_DefaultUniformBlock) 0  "projectionMatrix"
                               Name 30  ""
                               Name 34  "aPos"
-                              Name 44  "gl_VertexID"
-                              Name 45  "gl_InstanceID"
+                              Name 44  "gl_VertexIndex"
+                              Name 45  "gl_InstanceIndex"
                               Decorate 9(Color) Location 0
                               Decorate 11(aColor) Location 2
                               Decorate 15(UV) Location 1
@@ -180,8 +180,8 @@
                               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
+                              Decorate 44(gl_VertexIndex) BuiltIn VertexIndex
+                              Decorate 45(gl_InstanceIndex) BuiltIn InstanceIndex
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -212,8 +212,8 @@
               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
+44(gl_VertexIndex):     43(ptr) Variable Input
+45(gl_InstanceIndex):     43(ptr) Variable Input
          4(main):           2 Function None 3
                5:             Label
               12:    7(fvec4) Load 11(aColor)
diff --git a/Test/baseResults/vk.relaxed.errorcheck.vert.out b/Test/baseResults/vk.relaxed.errorcheck.vert.out
index f19eae6..5c6ecf9 100644
--- a/Test/baseResults/vk.relaxed.errorcheck.vert.out
+++ b/Test/baseResults/vk.relaxed.errorcheck.vert.out
@@ -28,8 +28,8 @@
 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)
+0:?     'gl_VertexIndex' ( in int VertexIndex)
+0:?     'gl_InstanceIndex' ( in int InstanceIndex)
 
 vk.relaxed.errorcheck.frag
 Shader version: 460
@@ -94,8 +94,8 @@
 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)
+0:?     'gl_VertexIndex' ( in int VertexIndex)
+0:?     'gl_InstanceIndex' ( in int InstanceIndex)
 Shader version: 460
 gl_FragCoord origin is upper left
 0:? Sequence
diff --git a/Test/baseResults/vk.relaxed.stagelink.vert.out b/Test/baseResults/vk.relaxed.stagelink.vert.out
index a63f10c..b9173f2 100644
--- a/Test/baseResults/vk.relaxed.stagelink.vert.out
+++ b/Test/baseResults/vk.relaxed.stagelink.vert.out
@@ -93,7 +93,9 @@
 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:28            subtract ( temp int)
+0:28              'gl_VertexIndex' ( in int VertexIndex)
+0:28              'gl_VertexIndex' ( 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)
@@ -105,7 +107,9 @@
 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:29            subtract ( temp highp int)
+0:29              'gl_InstanceIndex' ( in highp int InstanceIndex)
+0:29              'gl_InstanceIndex' ( 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)
@@ -113,8 +117,8 @@
 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)
+0:?     'gl_VertexIndex' ( in int VertexIndex)
+0:?     'gl_InstanceIndex' ( in int InstanceIndex)
 
 vk.relaxed.stagelink.frag
 Shader version: 460
@@ -311,7 +315,9 @@
 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:28            subtract ( temp int)
+0:28              'gl_VertexIndex' ( in int VertexIndex)
+0:28              'gl_VertexIndex' ( 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)
@@ -323,7 +329,9 @@
 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:29            subtract ( temp highp int)
+0:29              'gl_InstanceIndex' ( in highp int InstanceIndex)
+0:29              'gl_InstanceIndex' ( 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)
@@ -331,8 +339,8 @@
 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)
+0:?     'gl_VertexIndex' ( in int VertexIndex)
+0:?     'gl_InstanceIndex' ( in int InstanceIndex)
 Shader version: 460
 gl_FragCoord origin is upper left
 0:? Sequence
@@ -428,12 +436,12 @@
 
 // Module Version 10000
 // Generated by (magic number): 8000a
-// Id's are bound by 88
+// Id's are bound by 92
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Vertex 4  "main" 72 80 86
+                              EntryPoint Vertex 4  "main" 72 82 90
                               Source GLSL 460
                               Name 4  "main"
                               Name 9  "foo("
@@ -454,9 +462,9 @@
                               MemberName 35(gl_DefaultUniformBlock) 6  "c1"
                               Name 37  ""
                               Name 67  "v"
-                              Name 72  "gl_VertexID"
-                              Name 80  "gl_InstanceID"
-                              Name 86  "io"
+                              Name 72  "gl_VertexIndex"
+                              Name 82  "gl_InstanceIndex"
+                              Name 90  "io"
                               MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Coherent
                               MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Volatile
                               MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Coherent
@@ -483,9 +491,9 @@
                               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
+                              Decorate 72(gl_VertexIndex) BuiltIn VertexIndex
+                              Decorate 82(gl_InstanceIndex) BuiltIn InstanceIndex
+                              Decorate 90(io) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -517,31 +525,35 @@
               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
+72(gl_VertexIndex):     71(ptr) Variable Input
+              79:             TypePointer Function 6(float)
+82(gl_InstanceIndex):     71(ptr) Variable Input
+              89:             TypePointer Output 7(fvec4)
+          90(io):     89(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
+              73:     17(int) Load 72(gl_VertexIndex)
+              74:     17(int) Load 72(gl_VertexIndex)
+              75:     17(int) ISub 73 74
+              76:     38(ptr) AccessChain 37 70 75
+              77:    7(fvec4) Load 76
+              78:    7(fvec4) FAdd 69 77
+                              Store 67(v) 78
+              80:     79(ptr) AccessChain 67(v) 22
+              81:    6(float) Load 80
+              83:     17(int) Load 82(gl_InstanceIndex)
+              84:     17(int) Load 82(gl_InstanceIndex)
+              85:     17(int) ISub 83 84
+              86:    6(float) ConvertSToF 85
+              87:    6(float) FSub 81 86
+              88:     79(ptr) AccessChain 67(v) 22
+                              Store 88 87
+              91:    7(fvec4) Load 67(v)
+                              Store 90(io) 91
                               Return
                               FunctionEnd
          9(foo():    7(fvec4) Function None 8
diff --git a/Test/baseResults/vulkan.ast.vert.out b/Test/baseResults/vulkan.ast.vert.out
index d19c963..68e892b 100644
--- a/Test/baseResults/vulkan.ast.vert.out
+++ b/Test/baseResults/vulkan.ast.vert.out
@@ -19,10 +19,10 @@
 0:14      Convert bool to float ( temp float)
 0:14        'scbt' ( specialization-constant const bool)
 0:14          true (const bool)
-0:15      Convert int to float ( temp float)
+0:15      Convert int to float ( temp highp float)
 0:15        'sci2' ( specialization-constant const highp int)
 0:15          2 (const int)
-0:17      Convert float to int ( temp int)
+0:17      Convert float to int ( temp highp int)
 0:17        'scf1' ( specialization-constant const highp float)
 0:17          1.000000
 0:18      Convert bool to int ( specialization-constant const int)
@@ -86,34 +86,34 @@
 0:35          2 (const int)
 0:35        'sci2' ( specialization-constant const highp int)
 0:35          2 (const int)
-0:37      Construct ivec2 ( specialization-constant const 2-component vector of int)
+0:37      Construct ivec2 ( specialization-constant const highp 2-component vector of int)
 0:37        'sci2' ( specialization-constant const highp int)
 0:37          2 (const int)
 0:37        'sci2' ( specialization-constant const highp int)
 0:37          2 (const int)
-0:38      Construct ivec2 ( temp 2-element array of 2-component vector of int)
-0:38        Construct ivec2 ( specialization-constant const 2-component vector of int)
+0:38      Construct ivec2 ( temp 2-element array of highp 2-component vector of int)
+0:38        Construct ivec2 ( specialization-constant const highp 2-component vector of int)
 0:38          'sci2' ( specialization-constant const highp int)
 0:38            2 (const int)
 0:38          'sci2' ( specialization-constant const highp int)
 0:38            2 (const int)
-0:38        Construct ivec2 ( specialization-constant const 2-component vector of int)
+0:38        Construct ivec2 ( specialization-constant const highp 2-component vector of int)
 0:38          'sci2' ( specialization-constant const highp int)
 0:38            2 (const int)
 0:38          'sci2' ( specialization-constant const highp int)
 0:38            2 (const int)
-0:40      Construct vec2 ( temp 2-component vector of float)
+0:40      Construct vec2 ( specialization-constant const highp 2-component vector of float)
 0:40        'scf1' ( specialization-constant const highp float)
 0:40          1.000000
 0:40        'scf1' ( specialization-constant const highp float)
 0:40          1.000000
-0:41      Construct vec2 ( temp 2-element array of 2-component vector of float)
-0:41        Construct vec2 ( temp 2-component vector of float)
+0:41      Construct vec2 ( temp 2-element array of highp 2-component vector of float)
+0:41        Construct vec2 ( specialization-constant const highp 2-component vector of float)
 0:41          'scf1' ( specialization-constant const highp float)
 0:41            1.000000
 0:41          'scf1' ( specialization-constant const highp float)
 0:41            1.000000
-0:41        Construct vec2 ( temp 2-component vector of float)
+0:41        Construct vec2 ( specialization-constant const highp 2-component vector of float)
 0:41          'scf1' ( specialization-constant const highp float)
 0:41            1.000000
 0:41          'scf1' ( specialization-constant const highp float)
@@ -150,10 +150,10 @@
 0:14      Convert bool to float ( temp float)
 0:14        'scbt' ( specialization-constant const bool)
 0:14          true (const bool)
-0:15      Convert int to float ( temp float)
+0:15      Convert int to float ( temp highp float)
 0:15        'sci2' ( specialization-constant const highp int)
 0:15          2 (const int)
-0:17      Convert float to int ( temp int)
+0:17      Convert float to int ( temp highp int)
 0:17        'scf1' ( specialization-constant const highp float)
 0:17          1.000000
 0:18      Convert bool to int ( specialization-constant const int)
@@ -217,34 +217,34 @@
 0:35          2 (const int)
 0:35        'sci2' ( specialization-constant const highp int)
 0:35          2 (const int)
-0:37      Construct ivec2 ( specialization-constant const 2-component vector of int)
+0:37      Construct ivec2 ( specialization-constant const highp 2-component vector of int)
 0:37        'sci2' ( specialization-constant const highp int)
 0:37          2 (const int)
 0:37        'sci2' ( specialization-constant const highp int)
 0:37          2 (const int)
-0:38      Construct ivec2 ( temp 2-element array of 2-component vector of int)
-0:38        Construct ivec2 ( specialization-constant const 2-component vector of int)
+0:38      Construct ivec2 ( temp 2-element array of highp 2-component vector of int)
+0:38        Construct ivec2 ( specialization-constant const highp 2-component vector of int)
 0:38          'sci2' ( specialization-constant const highp int)
 0:38            2 (const int)
 0:38          'sci2' ( specialization-constant const highp int)
 0:38            2 (const int)
-0:38        Construct ivec2 ( specialization-constant const 2-component vector of int)
+0:38        Construct ivec2 ( specialization-constant const highp 2-component vector of int)
 0:38          'sci2' ( specialization-constant const highp int)
 0:38            2 (const int)
 0:38          'sci2' ( specialization-constant const highp int)
 0:38            2 (const int)
-0:40      Construct vec2 ( temp 2-component vector of float)
+0:40      Construct vec2 ( specialization-constant const highp 2-component vector of float)
 0:40        'scf1' ( specialization-constant const highp float)
 0:40          1.000000
 0:40        'scf1' ( specialization-constant const highp float)
 0:40          1.000000
-0:41      Construct vec2 ( temp 2-element array of 2-component vector of float)
-0:41        Construct vec2 ( temp 2-component vector of float)
+0:41      Construct vec2 ( temp 2-element array of highp 2-component vector of float)
+0:41        Construct vec2 ( specialization-constant const highp 2-component vector of float)
 0:41          'scf1' ( specialization-constant const highp float)
 0:41            1.000000
 0:41          'scf1' ( specialization-constant const highp float)
 0:41            1.000000
-0:41        Construct vec2 ( temp 2-component vector of float)
+0:41        Construct vec2 ( specialization-constant const highp 2-component vector of float)
 0:41          'scf1' ( specialization-constant const highp float)
 0:41            1.000000
 0:41          'scf1' ( specialization-constant const highp float)
@@ -303,6 +303,9 @@
               41:     14(int) Constant 2
               42:             TypeArray 37(ivec2) 41
               44:             TypeVector 6(float) 2
+              45:   44(fvec2) SpecConstantComposite 7(scf1) 7(scf1)
+              46:   44(fvec2) SpecConstantComposite 7(scf1) 7(scf1)
+              47:   44(fvec2) SpecConstantComposite 7(scf1) 7(scf1)
               48:             TypeArray 44(fvec2) 41
          4(main):           2 Function None 3
                5:             Label
@@ -317,9 +320,6 @@
               32:     8(bool) FOrdGreaterThan 7(scf1) 7(scf1)
               34:     8(bool) FUnordNotEqual 7(scf1) 7(scf1)
               43:          42 CompositeConstruct 39 40
-              45:   44(fvec2) CompositeConstruct 7(scf1) 7(scf1)
-              46:   44(fvec2) CompositeConstruct 7(scf1) 7(scf1)
-              47:   44(fvec2) CompositeConstruct 7(scf1) 7(scf1)
               49:          48 CompositeConstruct 46 47
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/vulkan.frag.out b/Test/baseResults/vulkan.frag.out
index e620898..28134ae 100644
--- a/Test/baseResults/vulkan.frag.out
+++ b/Test/baseResults/vulkan.frag.out
@@ -24,37 +24,38 @@
 ERROR: 0:43: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan 
 ERROR: 0:43: 'push_constant' : can only be used with a block 
 ERROR: 0:45: 'push_constant' : cannot declare a default, can only be used on a block 
-ERROR: 0:51: 'binding' : sampler/texture/image requires layout(binding=X) 
-ERROR: 0:52: 'binding' : sampler/texture/image requires layout(binding=X) 
-ERROR: 0:52: 'input_attachment_index' : can only be used with a subpass 
-ERROR: 0:53: 'binding' : sampler/texture/image requires layout(binding=X) 
-ERROR: 0:53: 'input_attachment_index' : can only be used with a subpass 
+ERROR: 0:46: 'binding' : cannot be used with push_constant 
 ERROR: 0:54: 'binding' : sampler/texture/image requires layout(binding=X) 
-ERROR: 0:54: 'subpass' : requires an input_attachment_index layout qualifier 
 ERROR: 0:55: 'binding' : sampler/texture/image requires layout(binding=X) 
-ERROR: 0:60: 'subpassLoadMS' : no matching overloaded function found 
-ERROR: 0:61: 'subpassLoad' : no matching overloaded function found 
+ERROR: 0:55: 'input_attachment_index' : can only be used with a subpass 
+ERROR: 0:56: 'binding' : sampler/texture/image requires layout(binding=X) 
+ERROR: 0:56: 'input_attachment_index' : can only be used with a subpass 
+ERROR: 0:57: 'binding' : sampler/texture/image requires layout(binding=X) 
+ERROR: 0:57: 'subpass' : requires an input_attachment_index layout qualifier 
+ERROR: 0:58: 'binding' : sampler/texture/image requires layout(binding=X) 
 ERROR: 0:63: 'subpassLoadMS' : no matching overloaded function found 
-ERROR: 0:66: 'subroutine' : not allowed when generating SPIR-V 
-ERROR: 0:66: 'subroutine' : feature not yet implemented 
-ERROR: 0:67: 'subroutine' : not allowed when generating SPIR-V 
-ERROR: 0:67: 'subroutine' : feature not yet implemented 
-ERROR: 0:69: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan 
-ERROR: 0:73: 'texture' : no matching overloaded function found 
-ERROR: 0:74: 'imageStore' : no matching overloaded function found 
-WARNING: 0:82: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
+ERROR: 0:64: 'subpassLoad' : no matching overloaded function found 
+ERROR: 0:66: 'subpassLoadMS' : no matching overloaded function found 
+ERROR: 0:69: 'subroutine' : not allowed when generating SPIR-V 
+ERROR: 0:69: 'subroutine' : feature not yet implemented 
+ERROR: 0:70: 'subroutine' : not allowed when generating SPIR-V 
+ERROR: 0:70: 'subroutine' : feature not yet implemented 
+ERROR: 0:72: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan 
+ERROR: 0:76: 'texture' : no matching overloaded function found 
+ERROR: 0:77: 'imageStore' : no matching overloaded function found 
+WARNING: 0:85: '' : all default precisions are highp; use precision statements to quiet warning, e.g.:
          "precision mediump int; precision highp float;" 
-ERROR: 0:91: 'call argument' : sampler constructor must appear at point of use 
-ERROR: 0:92: 'call argument' : sampler constructor must appear at point of use 
-ERROR: 0:93: ',' : sampler constructor must appear at point of use 
-ERROR: 0:94: ':' :  wrong operand types: no operation ':' exists that takes a left-hand operand of type ' temp sampler2D' and a right operand of type ' temp sampler2D' (or there is no acceptable conversion)
 ERROR: 0:94: 'call argument' : sampler constructor must appear at point of use 
-ERROR: 0:96: 'gl_NumSamples' : undeclared identifier 
-ERROR: 0:101: 'noise1' : no matching overloaded function found 
-ERROR: 0:102: 'noise2' : no matching overloaded function found 
-ERROR: 0:103: 'noise3' : no matching overloaded function found 
-ERROR: 0:104: 'noise4' : no matching overloaded function found 
-ERROR: 53 compilation errors.  No code generated.
+ERROR: 0:95: 'call argument' : sampler constructor must appear at point of use 
+ERROR: 0:96: ',' : sampler constructor must appear at point of use 
+ERROR: 0:97: ':' :  wrong operand types: no operation ':' exists that takes a left-hand operand of type ' temp sampler2D' and a right operand of type ' temp sampler2D' (or there is no acceptable conversion)
+ERROR: 0:97: 'call argument' : sampler constructor must appear at point of use 
+ERROR: 0:99: 'gl_NumSamples' : undeclared identifier 
+ERROR: 0:104: 'noise1' : no matching overloaded function found 
+ERROR: 0:105: 'noise2' : no matching overloaded function found 
+ERROR: 0:106: 'noise3' : no matching overloaded function found 
+ERROR: 0:107: 'noise4' : no matching overloaded function found 
+ERROR: 54 compilation errors.  No code generated.
 
 
 ERROR: Linking fragment stage: Only one push_constant block is allowed per stage
diff --git a/Test/glsl.autosampledtextures.frag b/Test/glsl.autosampledtextures.frag
new file mode 100644
index 0000000..db4e68e
--- /dev/null
+++ b/Test/glsl.autosampledtextures.frag
@@ -0,0 +1,13 @@
+#version 460

+

+layout (location = 0) in vec2 in_UV;

+

+layout (set=0, binding=0) uniform texture2D u_Tex;

+layout (set=0, binding=0) uniform sampler u_Sampler;

+

+layout (location = 0) out vec4 out_Color;

+

+void main() {

+    vec4 color = texture(sampler2D(u_Tex, u_Sampler), in_UV);

+    out_Color = color;

+}

diff --git a/Test/hlsl.attribute.expression.comp b/Test/hlsl.attribute.expression.comp
index 535fbad..23489fa 100644
--- a/Test/hlsl.attribute.expression.comp
+++ b/Test/hlsl.attribute.expression.comp
@@ -5,11 +5,9 @@
 #define BAR 2
 
 [numthreads(2+2, 2*3, (1+FOO)*BAR)]
-float4 main() : SV_TARGET
+void main()
 {
     [unroll(5*2 + 1) ]
         for (int x=0; x<bound; ++x)
             ;
-    
-    return float4(0,0,0,0);
 }
diff --git a/Test/hlsl.autosampledtextures.frag b/Test/hlsl.autosampledtextures.frag
new file mode 100644
index 0000000..7c72bec
--- /dev/null
+++ b/Test/hlsl.autosampledtextures.frag
@@ -0,0 +1,21 @@
+Texture2D g_tColor;

+

+SamplerState g_sAniso;

+

+struct PS_INPUT

+{

+    float2 vTextureCoords : TEXCOORD2 ;

+} ;

+

+struct PS_OUTPUT

+{

+    float4 vColor : SV_Target0 ;

+} ;

+

+PS_OUTPUT MainPs ( PS_INPUT i )

+{

+    PS_OUTPUT ps_output ;

+

+    ps_output . vColor = g_tColor . Sample ( g_sAniso , i . vTextureCoords . xy ) ;

+    return ps_output ;

+}
\ No newline at end of file
diff --git a/Test/hlsl.imagefetch-subvec4.comp b/Test/hlsl.imagefetch-subvec4.comp
index 2a83dd2..a5d70c2 100644
--- a/Test/hlsl.imagefetch-subvec4.comp
+++ b/Test/hlsl.imagefetch-subvec4.comp
@@ -1,8 +1,41 @@
-Texture3D<int> IN: register(t0);
-RWTexture3D<uint> OUT: register(u1);
+Texture1D<float>            i1D:            register(t0);
+Texture2D<float>            i2D:            register(t1);
+Texture3D<float>            i3D:            register(t2);
+Texture1DArray<float>       i1DArray:       register(t3);
+Texture2DArray<float>       i2DArray:       register(t4);
+Texture2DMS<float>          i2DMS:          register(t5);
+Texture2DMSArray<float>     i2DMSArray:     register(t6);
+
+Texture1D<int>              ii1D:           register(t7);
+Texture2D<int>              ii2D:           register(t8);
+Texture3D<int>              ii3D:           register(t9);
+Texture1DArray<int>         ii1DArray:      register(t10);
+Texture2DArray<int>         ii2DArray:      register(t11);
+Texture2DMS<int>            ii2DMS:         register(t12);
+Texture2DMSArray<int>       ii2DMSArray:    register(t13);
+
+RWTexture3D<float> OUT: register(u0);
 
 [numthreads(8,8,8)]
 void main(uint3 tid: SV_DispatchThreadID)
 {
-    OUT[tid] = IN[tid];
+    float f = 0.0;
+    f += i1D[tid.x];
+    f += i2D[tid.xy];
+    f += i3D[tid];
+    f += i1DArray[tid.xy];
+    f += i2DArray[tid];
+    f += i2DMS.Load(tid.xy, 1);
+    f += i2DMSArray.Load(tid, 3);
+
+    int i = 0.0;
+    i += ii1D[tid.x];
+    i += ii2D[tid.xy];
+    i += ii3D[tid];
+    i += ii1DArray[tid.xy];
+    i += ii2DArray[tid];
+    i += ii2DMS.Load(tid.xy, 1);
+    i += ii2DMSArray.Load(tid, 3);
+
+    OUT[tid] = f + float(i);
 }
diff --git a/Test/hlsl.imageload-subvec4.comp b/Test/hlsl.imageload-subvec4.comp
new file mode 100644
index 0000000..b465cdb
--- /dev/null
+++ b/Test/hlsl.imageload-subvec4.comp
@@ -0,0 +1,33 @@
+RWTexture1D<float>          i1D:            register(u0);
+RWTexture2D<float>          i2D:            register(u1);
+RWTexture3D<float>          i3D:            register(u2);
+RWTexture1DArray<float>     i1DArray:       register(u3);
+RWTexture2DArray<float>     i2DArray:       register(u4);
+
+RWTexture1D<int>            ii1D:           register(u5);
+RWTexture2D<int>            ii2D:           register(u6);
+RWTexture3D<int>            ii3D:           register(u7);
+RWTexture1DArray<int>       ii1DArray:      register(u8);
+RWTexture2DArray<int>       ii2DArray:      register(u9);
+
+RWTexture3D<float> OUT: register(u10);
+
+[numthreads(8,8,8)]
+void main(uint3 tid: SV_DispatchThreadID)
+{
+    float f = 0.0;
+    f += i1D[tid.x];
+    f += i2D[tid.xy];
+    f += i3D[tid];
+    f += i1DArray[tid.xy];
+    f += i2DArray[tid];
+
+    int i = 0.0;
+    i += ii1D[tid.x];
+    i += ii2D[tid.xy];
+    i += ii3D[tid];
+    i += ii1DArray[tid.xy];
+    i += ii2DArray[tid];
+
+    OUT[tid] = f + float(i);
+}
diff --git a/Test/hlsl.intrinsics.barriers.comp b/Test/hlsl.intrinsics.barriers.comp
index c9f6a8d..c9768f6 100644
--- a/Test/hlsl.intrinsics.barriers.comp
+++ b/Test/hlsl.intrinsics.barriers.comp
@@ -1,5 +1,5 @@
 
-float ComputeShaderFunction()
+void ComputeShaderFunction()
 {
     AllMemoryBarrier();
     AllMemoryBarrierWithGroupSync();
@@ -7,7 +7,5 @@
     DeviceMemoryBarrierWithGroupSync();
     GroupMemoryBarrier();
     GroupMemoryBarrierWithGroupSync();
-
-    return 0.0;
 }
 
diff --git a/Test/hlsl.intrinsics.negative.comp b/Test/hlsl.intrinsics.negative.comp
index fe612d6..44e885e 100644
--- a/Test/hlsl.intrinsics.negative.comp
+++ b/Test/hlsl.intrinsics.negative.comp
@@ -1,4 +1,4 @@
-float ComputeShaderFunctionS(float inF0, float inF1, float inF2, int inI0)
+void ComputeShaderFunctionS(float inF0, float inF1, float inF2, int inI0)
 {
     uint out_u1;
 
@@ -49,20 +49,16 @@
     // transpose(inF0);                          // expect error: only valid on mats
 
     // TODO: texture intrinsics, when we can declare samplers.
-
-    return 0.0;
 }
 
-float1 ComputeShaderFunction1(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
+void ComputeShaderFunction1(float1 inF0, float1 inF1, float1 inF2, int1 inI0)
 {
     // TODO: ... add when float1 prototypes are generated
 
     // GetRenderTargetSamplePosition(inF0); // expected error: only integer inputs
-
-    return 0.0;
 }
 
-float2 ComputeShaderFunction2(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
+void ComputeShaderFunction2(float2 inF0, float2 inF1, float2 inF2, int2 inI0)
 {
     uint2 out_u2;
 
@@ -105,11 +101,9 @@
     // transpose(inF0);              // expect error: only valid on mats
 
     // TODO: texture intrinsics, when we can declare samplers.
-
-    return float2(1,2);
 }
 
-float3 ComputeShaderFunction3(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
+void ComputeShaderFunction3(float3 inF0, float3 inF1, float3 inF2, int3 inI0)
 {
     uint3 out_u3;
 
@@ -150,11 +144,9 @@
     // transpose(inF0);                                            // expect error: only valid on mats
 
     // TODO: texture intrinsics, when we can declare samplers.
-
-    return float3(1,2,3);
 }
 
-float4 ComputeShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
+void ComputeShaderFunction(float4 inF0, float4 inF1, float4 inF2, int4 inI0)
 {
     uint4 out_u4;
 
@@ -195,7 +187,5 @@
     // transpose(inF0);                                            // expect error: only valid on mats
 
     // TODO: texture intrinsics, when we can declare samplers.
-
-    return float4(1,2,3,4);
 }
 
diff --git a/Test/hlsl.load.2dms.dx10.frag b/Test/hlsl.load.2dms.dx10.frag
index 29974f5..bc1525b 100644
--- a/Test/hlsl.load.2dms.dx10.frag
+++ b/Test/hlsl.load.2dms.dx10.frag
@@ -19,10 +19,10 @@
 uniform int3  c3;
 uniform int4  c4;
 
-uniform int   o1;
-uniform int2  o2;
-uniform int3  o3;
-uniform int4  o4;
+int2 getOffset()
+{
+   return int2(1, 1);
+}
 
 PS_OUTPUT main()
 {
@@ -34,9 +34,9 @@
    g_tTex2dmsu4.Load(c2, 3);
 
    // 2DMS, offset
-   g_tTex2dmsf4.Load(c2, 3, o2);
-   g_tTex2dmsi4.Load(c2, 3, o2);
-   g_tTex2dmsu4.Load(c2, 3, o2);
+   g_tTex2dmsf4.Load(c2, 3, getOffset());
+   g_tTex2dmsi4.Load(c2, 3, getOffset());
+   g_tTex2dmsu4.Load(c2, 3, getOffset());
 
    // 2DMSArray, no offset
    g_tTex2dmsf4a.Load(c3, 3);
@@ -44,9 +44,9 @@
    g_tTex2dmsu4a.Load(c3, 3);
 
    // 2DMSArray, offset
-   g_tTex2dmsf4a.Load(c3, 3, o2);
-   g_tTex2dmsi4a.Load(c3, 3, o2);
-   g_tTex2dmsu4a.Load(c3, 3, o2);
+   g_tTex2dmsf4a.Load(c3, 3, getOffset());
+   g_tTex2dmsi4a.Load(c3, 3, getOffset());
+   g_tTex2dmsu4a.Load(c3, 3, getOffset());
 
    psout.Color = 1.0;
    psout.Depth = 1.0;
diff --git a/Test/hlsl.load.offset.dx10.frag b/Test/hlsl.load.offset.dx10.frag
index bc946ee..926406f 100644
--- a/Test/hlsl.load.offset.dx10.frag
+++ b/Test/hlsl.load.offset.dx10.frag
@@ -39,29 +39,39 @@
 uniform int3  c3;
 uniform int4  c4;
 
-uniform int   o1;
-uniform int2  o2;
-uniform int3  o3;
-uniform int4  o4;
+int getOffset1()
+{
+   return 1;
+}
+
+int2 getOffset2()
+{
+   return int2(1, 1);
+}
+
+int3 getOffset3()
+{
+   return int3(1, 1, 1);
+}
 
 PS_OUTPUT main()
 {
    PS_OUTPUT psout;
 
    // 1D
-   g_tTex1df4.Load(c2, o1);
-   g_tTex1di4.Load(c2, o1);
-   g_tTex1du4.Load(c2, o1);
+   g_tTex1df4.Load(c2, getOffset1());
+   g_tTex1di4.Load(c2, getOffset1());
+   g_tTex1du4.Load(c2, getOffset1());
 
    // 2D
-   g_tTex2df4.Load(c3, o2);
-   g_tTex2di4.Load(c3, o2);
-   g_tTex2du4.Load(c3, o2);
+   g_tTex2df4.Load(c3, getOffset2());
+   g_tTex2di4.Load(c3, getOffset2());
+   g_tTex2du4.Load(c3, getOffset2());
 
    // 3D
-   g_tTex3df4.Load(c4, o3);
-   g_tTex3di4.Load(c4, o3);
-   g_tTex3du4.Load(c4, o3);
+   g_tTex3df4.Load(c4, getOffset3());
+   g_tTex3di4.Load(c4, getOffset3());
+   g_tTex3du4.Load(c4, getOffset3());
 
    // Offset has no Cube or CubeArray forms
 
diff --git a/Test/hlsl.load.offsetarray.dx10.frag b/Test/hlsl.load.offsetarray.dx10.frag
index 12b6a9e..d911d31 100644
--- a/Test/hlsl.load.offsetarray.dx10.frag
+++ b/Test/hlsl.load.offsetarray.dx10.frag
@@ -39,24 +39,29 @@
 uniform int3  c3;
 uniform int4  c4;
 
-uniform int   o1;
-uniform int2  o2;
-uniform int3  o3;
-uniform int4  o4;
+int getOffset1()
+{
+   return 1;
+}
+
+int2 getOffset2()
+{
+   return int2(1, 1);
+}
 
 PS_OUTPUT main()
 {
    PS_OUTPUT psout;
 
    // 1DArray
-   g_tTex1df4a.Load(c3, o1);
-   g_tTex1di4a.Load(c3, o1);
-   g_tTex1du4a.Load(c3, o1);
+   g_tTex1df4a.Load(c3, getOffset1());
+   g_tTex1di4a.Load(c3, getOffset1());
+   g_tTex1du4a.Load(c3, getOffset1());
 
    // 2DArray
-   g_tTex2df4a.Load(c4, o2);
-   g_tTex2di4a.Load(c4, o2);
-   g_tTex2du4a.Load(c4, o2);
+   g_tTex2df4a.Load(c4, getOffset2());
+   g_tTex2di4a.Load(c4, getOffset2());
+   g_tTex2du4a.Load(c4, getOffset2());
 
    // TODO:
    // Load, SampleIndex
diff --git a/Test/link.redeclareBuiltin.geom b/Test/link.redeclareBuiltin.geom
new file mode 100644
index 0000000..a2ceff6
--- /dev/null
+++ b/Test/link.redeclareBuiltin.geom
@@ -0,0 +1,23 @@
+#version 410

+

+layout(triangles) in;

+layout(triangle_strip, max_vertices=3) out;

+

+in gl_PerVertex

+{

+  vec4 gl_Position;

+} gl_in[];

+

+void main()

+{

+    gl_Position = gl_in[0].gl_Position;

+    EmitVertex();

+

+    gl_Position = gl_in[1].gl_Position;

+    EmitVertex();

+

+    gl_Position = gl_in[2].gl_Position;

+    EmitVertex();

+

+    EndPrimitive();

+}
\ No newline at end of file
diff --git a/Test/link.redeclareBuiltin.vert b/Test/link.redeclareBuiltin.vert
new file mode 100644
index 0000000..7cda45c
--- /dev/null
+++ b/Test/link.redeclareBuiltin.vert
@@ -0,0 +1,11 @@
+#version 410

+

+out gl_PerVertex

+{

+    vec4 gl_Position;

+};

+

+void main()

+{

+    gl_Position = vec4(1.0);

+}
\ No newline at end of file
diff --git a/Test/link.tesselation.frag b/Test/link.tesselation.frag
new file mode 100644
index 0000000..420384d
--- /dev/null
+++ b/Test/link.tesselation.frag
@@ -0,0 +1,15 @@
+#version 440

+

+layout(location = 0) in Primitive

+{

+    vec2 texCoord;

+} IN;

+

+layout(location = 0) out vec4 oColor;

+

+layout(binding = 0) uniform sampler2D mytex;

+

+void main()

+{

+    oColor = texture(mytex, IN.texCoord);

+}

diff --git a/Test/link.tesselation.tesc b/Test/link.tesselation.tesc
new file mode 100644
index 0000000..c47d2ad
--- /dev/null
+++ b/Test/link.tesselation.tesc
@@ -0,0 +1,21 @@
+#version 440

+

+layout(location = 0) in Primitive

+{

+    vec2 texCoord;

+} IN[];

+

+layout(location = 0) out Primitive

+{

+    vec2 texCoord;

+} OUT[];

+

+layout(vertices = 3) out;

+void main()

+{

+    OUT[gl_InvocationID].texCoord = IN[gl_InvocationID].texCoord;

+

+    float tessLevel = 10.0;

+    gl_TessLevelOuter[gl_InvocationID] = tessLevel;

+    gl_TessLevelInner[0] = tessLevel;

+}

diff --git a/Test/link.tesselation.tese b/Test/link.tesselation.tese
new file mode 100644
index 0000000..e111292
--- /dev/null
+++ b/Test/link.tesselation.tese
@@ -0,0 +1,26 @@
+#version 440

+

+layout(location = 0) in Primitive

+{

+    vec2 texCoord;

+} IN[];

+

+layout(location = 0) out Primitive

+{

+    vec2 texCoord;

+} OUT;

+

+layout(triangles, fractional_odd_spacing) in;

+layout(cw) in;

+void main()

+{

+    float u = gl_TessCoord.x;

+    float v = gl_TessCoord.y;

+    float w = gl_TessCoord.z;

+

+    vec2 newUv = vec2( u * IN[0].texCoord + v * IN[1].texCoord + w * IN[2].texCoord);

+    OUT.texCoord = newUv;

+    gl_Position = gl_in[gl_PatchVerticesIn].gl_Position;

+}

+

+

diff --git a/Test/link.tesselation.vert b/Test/link.tesselation.vert
new file mode 100644
index 0000000..daf3537
--- /dev/null
+++ b/Test/link.tesselation.vert
@@ -0,0 +1,16 @@
+#version 440

+

+layout(location = 0) in vec4 i_Pos;

+layout(location = 1) in vec2 i_Tex;

+

+layout(location = 0) out Primitive

+{

+    vec2 texCoord;

+} OUT;

+

+void main()

+{

+    gl_Position = i_Pos;

+    OUT.texCoord = i_Tex;

+}

+

diff --git a/Test/matrix.frag b/Test/matrix.frag
index 150e043..afafa34 100644
--- a/Test/matrix.frag
+++ b/Test/matrix.frag
@@ -1,55 +1,60 @@
-#version 130

-

-//#define TEST_POST_110

-

-uniform mat3 colorTransform;

-varying vec3 Color;

-uniform mat4 m, n;

-

-#ifdef TEST_POST_110

-uniform mat4x3 um43;

-uniform mat3x4 un34;

-#else

-uniform mat4 um43;

-uniform mat4 un34;

-#endif

-

-varying vec4 v;

-

-#ifdef TEST_POST_110

-varying vec3 u;

-#else

-varying vec4 u;

-#endif

-

-void main()

-{

-    gl_FragColor = vec4(un34[1]);

-    gl_FragColor += vec4(Color * colorTransform, 1.0);

-

-    if (m != n)

-        gl_FragColor += v;

-   else {

-        gl_FragColor += m * v;

-        gl_FragColor += v * (m - n);

-   }

-    

-#ifdef TEST_POST_110

-    mat3x4 m34 = outerProduct(v, u);

-    m34 += mat4(v.x);

-    m34 += mat4(u, u.x, u, u.x, u, u.x, u.x);

-#else

-    mat4 m34 = mat4(v.x*u.x, v.x*u.y, v.x*u.z, v.x*u.w, 

-                    v.y*u.x, v.y*u.y, v.y*u.z, v.y*u.w, 

-                    v.z*u.x, v.z*u.y, v.z*u.z, v.z*u.w, 

-                    v.w*u.x, v.w*u.y, v.w*u.z, v.w*u.w);

-    m34 += mat4(v.x);

-    m34 += mat4(u, u.x, u, u.x, u, u.x, u.x);

-

-#endif

-

-    if (m34 == un34)

-        gl_FragColor += m34 * u;

-    else

-        gl_FragColor += (un34 * um43) * v;

-}

+#version 130
+
+//#define TEST_POST_110
+
+uniform mat3 colorTransform;
+varying vec3 Color;
+uniform mat4 m, n;
+
+#ifdef TEST_POST_110
+uniform mat4x3 um43;
+uniform mat3x4 un34;
+#else
+uniform mat4 um43;
+uniform mat4 un34;
+#endif
+
+varying vec4 v;
+
+#ifdef TEST_POST_110
+varying vec3 u;
+#else
+varying vec4 u;
+#endif
+
+void main()
+{
+    gl_FragColor = vec4(un34[1]);
+    gl_FragColor += vec4(Color * colorTransform, 1.0);
+
+    if (m != n)
+        gl_FragColor += v;
+   else {
+        gl_FragColor += m * v;
+        gl_FragColor += v * (m - n);
+   }
+
+#ifdef TEST_POST_110
+    mat3x4 m34 = outerProduct(v, u);
+    m34 += mat4(v.x);
+    m34 += mat4(u, u.x, u, u.x, u, u.x, u.x);
+#else
+    mat4 m34 = mat4(v.x*u.x, v.x*u.y, v.x*u.z, v.x*u.w,
+                    v.y*u.x, v.y*u.y, v.y*u.z, v.y*u.w,
+                    v.z*u.x, v.z*u.y, v.z*u.z, v.z*u.w,
+                    v.w*u.x, v.w*u.y, v.w*u.z, v.w*u.w);
+    m34 += mat4(v.x);
+    m34 += mat4(u, u.x, u, u.x, u, u.x, u.x);
+
+#endif
+
+    if (m34 == un34)
+        gl_FragColor += m34 * u;
+    else
+        gl_FragColor += (un34 * um43) * v;
+
+    mat4x2 m42 = mat4x2(42);
+    if (m42 == mat4x2(42, 0, 0, 42, 0, 0, 0, 0)) {
+        gl_FragColor += v;
+    }
+}
diff --git a/Test/runtests b/Test/runtests
index 51f1a6a..a7bdda7 100755
--- a/Test/runtests
+++ b/Test/runtests
@@ -191,6 +191,16 @@
 diff -b $BASEDIR/hlsl.pp.line3.frag.out $TARGETDIR/hlsl.pp.line3.frag.out || HASERROR=1
 
 #
+# Testing --depfile
+#
+
+echo "Testing --depfile"
+run -D -Od -e main -H --depfile $TARGETDIR/hlsl.include.vert.d.out -Od ../Test/hlsl.include.vert > $TARGETDIR/hlsl.include.vert.out
+diff -b $BASEDIR/hlsl.include.vert.d.out $TARGETDIR/hlsl.include.vert.d.out || HASERROR=1
+run -D -Od -e main -H --depfile $TARGETDIR/hlsl.dashI.vert.d.out -Od -Iinc1/path1 -Iinc1/path2 hlsl.dashI.vert > $TARGETDIR/hlsl.dashI.vert.out
+diff -b $BASEDIR/hlsl.dashI.vert.d.out $TARGETDIR/hlsl.dashI.vert.d.out || HASERROR=1
+
+#
 # Testing -D and -U
 #
 echo "Testing -D and -U"
@@ -271,6 +281,15 @@
 diff -b $BASEDIR/spv.400.frag.nanclamp.out $TARGETDIR/spv.400.frag.nanclamp.out || HASERROR=1
 
 #
+# Test --auto-sampled-textures
+#
+echo "Testing auto-sampled-textures"
+run --auto-sampled-textures -H -Od -e MainPs -D -S frag hlsl.autosampledtextures.frag > $TARGETDIR/hlsl.autosampledtextures.frag.out
+diff -b $BASEDIR/hlsl.autosampledtextures.frag.out $TARGETDIR/hlsl.autosampledtextures.frag.out || HASERROR=1
+run --auto-sampled-textures -H -Od -S frag glsl.autosampledtextures.frag > $TARGETDIR/glsl.autosampledtextures.frag.out
+diff -b $BASEDIR/glsl.autosampledtextures.frag.out $TARGETDIR/glsl.autosampledtextures.frag.out || HASERROR=1
+
+#
 # Final checking
 #
 if [ $HASERROR -eq 0 ]
diff --git a/Test/spv.1.4.OpEntryPoint.frag b/Test/spv.1.4.OpEntryPoint.frag
index ef1235a..a12b1b3 100644
--- a/Test/spv.1.4.OpEntryPoint.frag
+++ b/Test/spv.1.4.OpEntryPoint.frag
@@ -13,7 +13,7 @@
     float f;
 } bufferv;
 
-layout(binding = 2, push_constant) uniform pushB {
+layout(push_constant) uniform pushB {
     int a;
 } pushv;
 
diff --git a/Test/spv.1.4.funcall.array.frag b/Test/spv.1.4.funcall.array.frag
new file mode 100644
index 0000000..4f9727b
--- /dev/null
+++ b/Test/spv.1.4.funcall.array.frag
@@ -0,0 +1,17 @@
+#version 450 core
+
+uniform ub {
+    vec4 u[9];
+};
+
+vec4 f(const vec4 a[9], int ix) {
+    return a[ix];
+}
+
+out vec4 color;
+
+void main()
+{
+     color = f(u, 2);
+}
+
diff --git a/Test/spv.1.4.load.bool.array.interface.block.frag b/Test/spv.1.4.load.bool.array.interface.block.frag
new file mode 100644
index 0000000..2203741
--- /dev/null
+++ b/Test/spv.1.4.load.bool.array.interface.block.frag
@@ -0,0 +1,17 @@
+#version 450 core
+
+layout(std140, set=0, binding=0) uniform ub {
+    bool bi[2][3];
+};
+layout(std430, set=0, binding=1) buffer ssbo {
+    bool bo[2][3];
+};
+
+layout(location=0) out vec4 color;
+
+void main()
+{
+    bo = bi;
+    color = vec4(0);
+}
+
diff --git a/Test/spv.AnyHitShaderMotion.rahit b/Test/spv.AnyHitShaderMotion.rahit
new file mode 100644
index 0000000..6972577
--- /dev/null
+++ b/Test/spv.AnyHitShaderMotion.rahit
@@ -0,0 +1,6 @@
+#version 460
+#extension GL_NV_ray_tracing_motion_blur : enable
+void main()
+{
+	float time = gl_CurrentRayTimeNV + 0.5f;
+}
diff --git a/Test/spv.ClosestHitShaderMotion.rchit b/Test/spv.ClosestHitShaderMotion.rchit
new file mode 100644
index 0000000..42a1838
--- /dev/null
+++ b/Test/spv.ClosestHitShaderMotion.rchit
@@ -0,0 +1,10 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+#extension GL_NV_ray_tracing_motion_blur : enable
+layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
+layout(location = 0) rayPayloadInEXT vec4 incomingPayloadEXT;
+void main()
+{
+	float time = gl_CurrentRayTimeNV + 0.5f;
+	traceRayMotionNV(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1.0, 0);
+}
diff --git a/Test/spv.IntersectShaderMotion.rint b/Test/spv.IntersectShaderMotion.rint
new file mode 100644
index 0000000..6972577
--- /dev/null
+++ b/Test/spv.IntersectShaderMotion.rint
@@ -0,0 +1,6 @@
+#version 460
+#extension GL_NV_ray_tracing_motion_blur : enable
+void main()
+{
+	float time = gl_CurrentRayTimeNV + 0.5f;
+}
diff --git a/Test/spv.MissShaderMotion.rmiss b/Test/spv.MissShaderMotion.rmiss
new file mode 100644
index 0000000..3a3dcb1
--- /dev/null
+++ b/Test/spv.MissShaderMotion.rmiss
@@ -0,0 +1,10 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+#extension GL_NV_ray_tracing_motion_blur : enable
+layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
+layout(location = 0) rayPayloadEXT vec4  localPayloadEXT;
+void main()
+{
+	float time = gl_CurrentRayTimeNV + 0.5f;
+	traceRayMotionNV(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1.0f, 0);
+}
diff --git a/Test/spv.RayGenShaderMotion.rgen b/Test/spv.RayGenShaderMotion.rgen
new file mode 100644
index 0000000..c38fffe
--- /dev/null
+++ b/Test/spv.RayGenShaderMotion.rgen
@@ -0,0 +1,13 @@
+#version 460
+#extension GL_EXT_ray_tracing : enable
+#extension GL_NV_ray_tracing_motion_blur : enable
+layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT;
+layout(location = 0) rayPayloadEXT vec4 payloadEXT;
+void main()
+{
+    uint lx = gl_LaunchIDEXT.x;
+    uint ly = gl_LaunchIDEXT.y;
+    uint sx = gl_LaunchSizeEXT.x;
+    uint sy = gl_LaunchSizeEXT.y;
+    traceRayMotionNV(accEXT,  lx, ly, sx, sy, 0u, vec3(0.5), 0.5f, vec3(1.0), 0.75f, 0.5, 0);
+}
diff --git a/Test/spv.atomicAdd.bufferReference.comp b/Test/spv.atomicAdd.bufferReference.comp
new file mode 100644
index 0000000..fdd031d
--- /dev/null
+++ b/Test/spv.atomicAdd.bufferReference.comp
@@ -0,0 +1,50 @@
+#version 450 core
+#pragma use_vulkan_memory_model
+#extension GL_KHR_shader_subgroup_basic : enable
+#extension GL_KHR_shader_subgroup_shuffle : enable
+#extension GL_KHR_shader_subgroup_ballot : enable
+#extension GL_KHR_memory_scope_semantics : enable
+#extension GL_ARB_gpu_shader_int64 : enable
+#extension GL_EXT_buffer_reference : enable
+// DIM/NUM_WORKGROUP_EACH_DIM overriden by spec constants
+layout(constant_id = 0) const int DIM = 1;
+layout(constant_id = 1) const int NUM_WORKGROUP_EACH_DIM = 1;
+shared bool sharedSkip;
+layout(local_size_x_id = 0, local_size_y_id = 0, local_size_z = 1) in;
+layout(buffer_reference) buffer PayloadRef { uint x[]; };
+layout(buffer_reference) buffer GuardRef { uint x[]; };
+layout(set=0, binding=2) buffer Fail { uint x[]; } fail;
+layout (push_constant, std430) uniform PC {
+   layout(offset = 0) PayloadRef payloadref;
+layout(offset = 8) GuardRef guard;
+};
+void main()
+{
+   bool pass = true;
+   bool skip = false;
+   sharedSkip = false;
+   nonprivate PayloadRef payload = payloadref;
+   ivec2 globalId          = ivec2(gl_GlobalInvocationID.xy);
+   ivec2 partnerGlobalId   = ivec2(DIM*NUM_WORKGROUP_EACH_DIM-1) - ivec2(gl_GlobalInvocationID.xy);
+   uint bufferCoord        = globalId.y * DIM*NUM_WORKGROUP_EACH_DIM + globalId.x;
+   uint partnerBufferCoord = partnerGlobalId.y * DIM*NUM_WORKGROUP_EACH_DIM + partnerGlobalId.x;
+   ivec2 imageCoord        = globalId;
+   ivec2 partnerImageCoord = partnerGlobalId;
+   ivec2 globalId00          = ivec2(DIM) * ivec2(gl_WorkGroupID.xy);
+   ivec2 partnerGlobalId00   = ivec2(DIM) * (ivec2(NUM_WORKGROUP_EACH_DIM-1) - ivec2(gl_WorkGroupID.xy));
+   uint bufferCoord00        = globalId00.y * DIM*NUM_WORKGROUP_EACH_DIM + globalId00.x;
+   uint partnerBufferCoord00 = partnerGlobalId00.y * DIM*NUM_WORKGROUP_EACH_DIM + partnerGlobalId00.x;
+   ivec2 imageCoord00        = globalId00;
+   ivec2 partnerImageCoord00 = partnerGlobalId00;
+   payload.x[bufferCoord] = bufferCoord + (payload.x[partnerBufferCoord]>>31);
+   controlBarrier(gl_ScopeWorkgroup, gl_ScopeWorkgroup, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease | gl_SemanticsMakeAvailable);
+   if (all(equal(gl_LocalInvocationID.xy, ivec2(0,0)))) {
+       atomicStore(guard.x[bufferCoord], uint(1u), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelease | gl_SemanticsMakeAvailable);
+       skip = atomicLoad(guard.x[partnerBufferCoord00], gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsAcquire | gl_SemanticsMakeVisible) == 0;
+       sharedSkip = skip;
+   }
+   controlBarrier(gl_ScopeWorkgroup, gl_ScopeWorkgroup, gl_StorageSemanticsBuffer | gl_StorageSemanticsShared, gl_SemanticsAcquireRelease | gl_SemanticsMakeVisible);
+   skip = sharedSkip;
+   uint r = payload.x[partnerBufferCoord];
+   if (!skip && r != uint(partnerBufferCoord)) { fail.x[bufferCoord] = 1; }
+}
\ No newline at end of file
diff --git a/Test/spv.atomicFloat2.comp b/Test/spv.atomicFloat2.comp
new file mode 100644
index 0000000..09235c5
--- /dev/null
+++ b/Test/spv.atomicFloat2.comp
@@ -0,0 +1,179 @@
+#version 450 core
+
+#extension GL_KHR_memory_scope_semantics : enable
+#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable
+#extension GL_EXT_shader_atomic_float2: enable
+#pragma use_vulkan_memory_model
+
+layout(local_size_x = 16, local_size_y = 16) in;
+
+layout(binding = 0) buffer Buffer
+{
+    float16_t datah;
+    float dataf;
+    double datad;
+} buf;
+
+shared float16_t    atomh;
+shared float        atomf;
+shared double       atomd;
+
+layout(binding = 0, r32f) volatile coherent uniform image1D        fimage1D;
+layout(binding = 1, r32f) volatile coherent uniform image1DArray   fimage1DArray;
+layout(binding = 2, r32f) volatile coherent uniform image2D        fimage2D;
+layout(binding = 3, r32f) volatile coherent uniform image2DArray   fimage2DArray;
+layout(binding = 4, r32f) volatile coherent uniform image2DRect    fimage2DRect;
+layout(binding = 5, r32f) volatile coherent uniform imageCube      fimageCube;
+layout(binding = 6, r32f) volatile coherent uniform imageCubeArray fimageCubeArray;
+layout(binding = 9, r32f) volatile coherent uniform image3D        fimage3D;
+
+void main()
+{
+    //atomicAdd
+    float16_t resulth = float16_t(0.0);
+    resulth = atomicAdd(atomh, float16_t(3.0));
+    resulth = atomicAdd(atomh, float16_t(4.5), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelaxed);
+    resulth = atomicAdd(buf.datah, float16_t(3.0));
+    resulth = atomicAdd(buf.datah, float16_t(4.5), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelaxed);
+
+    //atomicMin
+    resulth = atomicMin(atomh, float16_t(3.0));
+    resulth = atomicMin(atomh, float16_t(4.5), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelaxed);
+    resulth = atomicMin(buf.datah, float16_t(3.0));
+    resulth = atomicMin(buf.datah, float16_t(4.5), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelaxed);
+
+    float resultf = 0.0;
+    resultf = atomicMin(atomf, 3.0);
+    resultf = atomicMin(atomf, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelaxed);
+    resultf = atomicMin(buf.dataf, 3.0);
+    resultf = atomicMin(buf.dataf, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelaxed);
+
+    double resultd = 0.0;
+    resultd = atomicMin(atomd, 3.0);
+    resultd = atomicMin(atomd, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelaxed);
+    resultd = atomicMin(buf.datad, 3.0);
+    resultd = atomicMin(buf.datad, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelaxed);
+
+    //atomicMax
+    resulth = atomicMax(atomh, float16_t(3.0));
+    resulth = atomicMax(atomh, float16_t(4.5), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelaxed);
+    resulth = atomicMax(buf.datah, float16_t(3.0));
+    resulth = atomicMax(buf.datah, float16_t(4.5), gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelaxed);
+
+    resultf = atomicMax(atomf, 3.0);
+    resultf = atomicMax(atomf, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelaxed);
+    resultf = atomicMax(buf.dataf, 3.0);
+    resultf = atomicMax(buf.dataf, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelaxed);
+
+    resultd = atomicMax(atomd, 3.0);
+    resultd = atomicMax(atomd, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelaxed);
+    resultd = atomicMax(buf.datad, 3.0);
+    resultd = atomicMax(buf.datad, 4.5, gl_ScopeDevice, gl_StorageSemanticsBuffer, gl_SemanticsRelaxed);
+
+    //atomicExchange
+    resulth = atomicExchange(buf.datah, resulth);
+    buf.datah += resulth;
+    resulth = atomicExchange(buf.datah, resulth, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelaxed);
+    buf.datah += resulth;
+    resulth = atomicExchange(atomh, resulth);
+    buf.datah += resulth;
+    resulth = atomicExchange(atomh, resulth, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelaxed);
+    buf.datah += resulth;
+
+    //atomic load/store
+    resulth = atomicLoad(buf.datah, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelaxed);
+    atomicStore(buf.datah, resulth, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelaxed);
+    buf.datah += resulth;
+
+    resulth = atomicLoad(atomh, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelaxed);
+    atomicStore(atomh, resulth, gl_ScopeDevice, gl_StorageSemanticsShared, gl_SemanticsRelaxed);
+    buf.datah += resulth;
+
+    // image atomics on 1D:
+    atomf = imageAtomicMin(fimage1D, int(0), 2.0);
+    buf.dataf += atomf;
+    atomf = imageAtomicMin(fimage1D, int(1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsRelaxed);
+    buf.dataf += atomf;
+
+    atomf = imageAtomicMax(fimage1D, int(0), 2.0);
+    buf.dataf += atomf;
+    atomf = imageAtomicMax(fimage1D, int(1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsRelaxed);
+    buf.dataf += atomf;
+
+    // image atomics on 1D Array:
+    atomf = imageAtomicMin(fimage1DArray, ivec2(0,0), 2.0);
+    buf.dataf += atomf;
+    atomf = imageAtomicMin(fimage1DArray, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsRelaxed);
+    buf.dataf += atomf;
+
+    atomf = imageAtomicMax(fimage1DArray, ivec2(0,0), 2.0);
+    buf.dataf += atomf;
+    atomf = imageAtomicMax(fimage1DArray, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsRelaxed);
+    buf.dataf += atomf;
+
+    // image atomics on 2D:
+    atomf = imageAtomicMin(fimage2D, ivec2(0,0), 2.0);
+    buf.dataf += atomf;
+    atomf = imageAtomicMin(fimage2D, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsRelaxed);
+    buf.dataf += atomf;
+
+    atomf = imageAtomicMax(fimage2D, ivec2(0,0), 2.0);
+    buf.dataf += atomf;
+    atomf = imageAtomicMax(fimage2D, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsRelaxed);
+    buf.dataf += atomf;
+
+    // image atomics on 2D Rect:
+    atomf = imageAtomicMin(fimage2DRect, ivec2(0,0), 2.0);
+    buf.dataf += atomf;
+    atomf = imageAtomicMin(fimage2DRect, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsRelaxed);
+    buf.dataf += atomf;
+
+    atomf = imageAtomicMax(fimage2DRect, ivec2(0,0), 2.0);
+    buf.dataf += atomf;
+    atomf = imageAtomicMax(fimage2DRect, ivec2(1,1), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsRelaxed);
+    buf.dataf += atomf;
+
+    // image atomics on 2D Array:
+    atomf = imageAtomicMin(fimage2DArray, ivec3(0,0,0), 2.0);
+    buf.dataf += atomf;
+    atomf = imageAtomicMin(fimage2DArray, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsRelaxed);
+    buf.dataf += atomf;
+
+    atomf = imageAtomicMax(fimage2DArray, ivec3(0,0,0), 2.0);
+    buf.dataf += atomf;
+    atomf = imageAtomicMax(fimage2DArray, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsRelaxed);
+    buf.dataf += atomf;
+
+    // image atomics on Cube:
+    atomf = imageAtomicMin(fimageCube, ivec3(0,0,0), 2.0);
+    buf.dataf += atomf;
+    atomf = imageAtomicMin(fimageCube, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsRelaxed);
+    buf.dataf += atomf;
+
+    atomf = imageAtomicMax(fimageCube, ivec3(0,0,0), 2.0);
+    buf.dataf += atomf;
+    atomf = imageAtomicMax(fimageCube, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsRelaxed);
+    buf.dataf += atomf;
+
+    // image atomics on Cube Array:
+    atomf = imageAtomicMin(fimageCubeArray, ivec3(0,0,0), 2.0);
+    buf.dataf += atomf;
+    atomf = imageAtomicMin(fimageCubeArray, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsRelaxed);
+    buf.dataf += atomf;
+
+    atomf = imageAtomicMax(fimageCubeArray, ivec3(0,0,0), 2.0);
+    buf.dataf += atomf;
+    atomf = imageAtomicMax(fimageCubeArray, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsRelaxed);
+    buf.dataf += atomf;
+
+    // image atomics on 3D:
+    atomf = imageAtomicMin(fimage3D, ivec3(0,0,0), 2.0);
+    buf.dataf += atomf;
+    atomf = imageAtomicMin(fimage3D, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsRelaxed);
+    buf.dataf += atomf;
+
+    atomf = imageAtomicMax(fimage3D, ivec3(0,0,0), 2.0);
+    buf.dataf += atomf;
+    atomf = imageAtomicMax(fimage3D, ivec3(1,1,0), 3.0, gl_ScopeDevice, gl_StorageSemanticsImage , gl_SemanticsRelaxed);
+    buf.dataf += atomf;
+}
diff --git a/Test/spv.float64.frag b/Test/spv.float64.frag
index faaac23..6e9f22d 100644
--- a/Test/spv.float64.frag
+++ b/Test/spv.float64.frag
@@ -127,36 +127,12 @@
     u64v = u64vec3(f64v);    // float64 -> uint64
 }
 
-void builtinAngleTrigFuncs()
-{
-    f64vec4 f64v1, f64v2;
+// Trig, pow, exp and log are not supported for f64
 
-    f64v2 = radians(f64v1);
-    f64v2 = degrees(f64v1);
-    f64v2 = sin(f64v1);
-    f64v2 = cos(f64v1);
-    f64v2 = tan(f64v1);
-    f64v2 = asin(f64v1);
-    f64v2 = acos(f64v1);
-    f64v2 = atan(f64v1, f64v2);
-    f64v2 = atan(f64v1);
-    f64v2 = sinh(f64v1);
-    f64v2 = cosh(f64v1);
-    f64v2 = tanh(f64v1);
-    f64v2 = asinh(f64v1);
-    f64v2 = acosh(f64v1);
-    f64v2 = atanh(f64v1);
-}
-
-void builtinExpFuncs()
+void builtinTranscendentalFuncs()
 {
     f64vec2 f64v1, f64v2;
 
-    f64v2 = pow(f64v1, f64v2);
-    f64v2 = exp(f64v1);
-    f64v2 = log(f64v1);
-    f64v2 = exp2(f64v1);
-    f64v2 = log2(f64v1);
     f64v2 = sqrt(f64v1);
     f64v2 = inversesqrt(f64v1);
 }
diff --git a/Test/spv.funcall.array.frag b/Test/spv.funcall.array.frag
new file mode 100644
index 0000000..4f9727b
--- /dev/null
+++ b/Test/spv.funcall.array.frag
@@ -0,0 +1,17 @@
+#version 450 core
+
+uniform ub {
+    vec4 u[9];
+};
+
+vec4 f(const vec4 a[9], int ix) {
+    return a[ix];
+}
+
+out vec4 color;
+
+void main()
+{
+     color = f(u, 2);
+}
+
diff --git a/Test/spv.int16.frag b/Test/spv.int16.frag
index 2feff4f..26a8c9b 100644
--- a/Test/spv.int16.frag
+++ b/Test/spv.int16.frag
@@ -116,6 +116,8 @@
     int32_t i;
     int64_t i64;
     bool    b;
+    float   f;
+    float   arr[4] = {1.0, 2.0, 3.0, 4.0};
 
     // Unary
     u16v++;
@@ -163,6 +165,9 @@
     uv = u16v & uv;
     uv ^= i16;
     u16v = u16v ^ i16;
+
+    // Index
+    f = arr[i16];
 }
 
 void builtinFuncs()
diff --git a/Test/spv.int64.frag b/Test/spv.int64.frag
index 5390fb7..0f80d55 100644
--- a/Test/spv.int64.frag
+++ b/Test/spv.int64.frag
@@ -228,6 +228,14 @@
     // notEqual()

     bv    = notEqual(u64v, u64vec3(u64));

     bv.xy = notEqual(i64v, i64vec2(i64));

+

+    // findLSB()

+    i64   = findLSB(u64);

+    i64v  = findLSB(u64vec2(u64));

+

+    // bitCount()

+    i64   = bitCount(u64);

+    i64v  = bitCount(u64vec2(u64));

 }

 

 // Type conversion for specialization constant

diff --git a/Test/spv.int8.frag b/Test/spv.int8.frag
index 80702b7..bd3de17 100644
--- a/Test/spv.int8.frag
+++ b/Test/spv.int8.frag
@@ -117,6 +117,8 @@
     int32_t i;
     int16_t i16;
     bool    b;
+    float   arr[4] = {1.0, 2.0, 3.0, 4.0};
+    float   f;
 
     // Unary
     u8v++;
@@ -164,6 +166,9 @@
     uv = u8v & uv;
     uv ^= i8;
     u8v = u8v ^ i8;
+
+    // Index
+    f = arr[i8];
 }
 
 void builtinFuncs()
diff --git a/Test/spv.intrinsicsSpecConst.vert b/Test/spv.intrinsicsSpecConst.vert
new file mode 100644
index 0000000..19cc5ef
--- /dev/null
+++ b/Test/spv.intrinsicsSpecConst.vert
@@ -0,0 +1,14 @@
+#version 450 core

+

+#extension GL_EXT_spirv_intrinsics: enable

+

+layout(constant_id = 5) const uint targetWidth = 32;

+spirv_execution_mode_id(4460/*=DenormFlushToZero*/, targetWidth);

+

+layout(constant_id = 6) const uint builtIn = 1;

+spirv_decorate_id(11/*=BuiltIn*/, builtIn) out float pointSize;

+

+void main()

+{

+    pointSize = 4.0;

+}

diff --git a/Test/spv.intrinsicsSpirvByReference.vert b/Test/spv.intrinsicsSpirvByReference.vert
new file mode 100644
index 0000000..b02c582
--- /dev/null
+++ b/Test/spv.intrinsicsSpirvByReference.vert
@@ -0,0 +1,21 @@
+#version 450 core

+

+#extension GL_EXT_spirv_intrinsics: enable

+

+spirv_instruction (set = "GLSL.std.450", id = 35) // modf

+float modf(float x, spirv_by_reference float i);

+

+layout(location = 0) in float floatIn;

+layout(location = 0) out vec2 vec2Out;

+layout(location = 1) out float floatOut;

+

+void func(spirv_by_reference float f)

+{

+    f = 0.5;

+}

+

+void main()

+{

+    vec2Out.x = modf(floatIn, vec2Out.y);

+    func(floatOut);

+}

diff --git a/Test/spv.intrinsicsSpirvDecorate.frag b/Test/spv.intrinsicsSpirvDecorate.frag
new file mode 100644
index 0000000..8b495cf
--- /dev/null
+++ b/Test/spv.intrinsicsSpirvDecorate.frag
@@ -0,0 +1,37 @@
+#version 450 core

+

+#extension GL_EXT_spirv_intrinsics: enable

+

+#define GL_AMD_shader_explicit_vertex_parameter 1

+

+spirv_decorate (extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], 11, 4992)

+in vec2 gl_BaryCoordNoPerspAMD;

+spirv_decorate (extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], 11, 4993)

+in vec2 gl_BaryCoordNoPerspCentroidAMD;

+spirv_decorate (extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], 11, 4994)

+in vec2 gl_BaryCoordNoPerspSampleAMD;

+spirv_decorate (extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], 11, 4995)

+in vec2 gl_BaryCoordSmoothAMD;

+spirv_decorate (extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], 11, 4996)

+in vec2 gl_BaryCoordSmoothCentroidAMD;

+spirv_decorate (extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], 11, 4997)

+in vec2 gl_BaryCoordSmoothSampleAMD;

+spirv_decorate (extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], 11, 4998)

+in vec3 gl_BaryCoordPullModelAMD;

+

+#define __explicitInterpAMD spirv_decorate(extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], 4999)

+

+spirv_instruction(extensions = ["SPV_AMD_shader_explicit_vertex_parameter"], set = "SPV_AMD_shader_explicit_vertex_parameter", id = 1)

+float interpolateAtVertexAMD(float interpolant, uint vertexIdx);

+

+layout(location = 0) in __explicitInterpAMD float floatIn;

+layout(location = 0) out float floatOut;

+layout(location = 1) out vec2 vec2Out;

+

+void main()

+{

+    floatOut = interpolateAtVertexAMD(floatIn, 1);

+    vec2Out = gl_BaryCoordNoPerspAMD + gl_BaryCoordNoPerspCentroidAMD + gl_BaryCoordNoPerspSampleAMD +

+              gl_BaryCoordSmoothAMD + gl_BaryCoordSmoothCentroidAMD + gl_BaryCoordSmoothSampleAMD +

+              gl_BaryCoordPullModelAMD.xy;

+}

diff --git a/Test/spv.intrinsicsSpirvExecutionMode.frag b/Test/spv.intrinsicsSpirvExecutionMode.frag
new file mode 100644
index 0000000..9213e74
--- /dev/null
+++ b/Test/spv.intrinsicsSpirvExecutionMode.frag
@@ -0,0 +1,17 @@
+#version 450 core

+

+#extension GL_EXT_spirv_intrinsics: enable

+

+#define GL_ARB_shader_stencil_export 1

+

+spirv_execution_mode(5027); // StencilRefReplacingEXT

+

+spirv_decorate(extensions = ["SPV_EXT_shader_stencil_export"], capabilities = [5013], 11, 5014)

+out int gl_FragStencilRef;

+

+layout(location = 0) in flat int color;

+

+void main()

+{

+    gl_FragStencilRef = color;

+}

diff --git a/Test/spv.intrinsicsSpirvInstruction.vert b/Test/spv.intrinsicsSpirvInstruction.vert
new file mode 100644
index 0000000..a4efb7d
--- /dev/null
+++ b/Test/spv.intrinsicsSpirvInstruction.vert
@@ -0,0 +1,26 @@
+#version 450 core

+

+#extension GL_EXT_spirv_intrinsics: enable

+#extension GL_ARB_gpu_shader_int64: enable

+

+spirv_instruction (extensions = ["SPV_KHR_shader_clock"], capabilities = [5055], id = 5056)

+uvec2 clockRealtime2x32EXT(void);

+

+spirv_instruction (extensions = ["SPV_KHR_shader_clock"], capabilities = [5055], id = 5056)

+int64_t clockRealtimeEXT(void);

+

+spirv_instruction (extensions = ["SPV_AMD_shader_trinary_minmax"], set = "SPV_AMD_shader_trinary_minmax", id = 1)

+vec2 min3(vec2 x, vec2 y, vec2 z);

+

+layout(location = 0) in vec3 vec3In;

+

+layout(location = 0) out uvec2 uvec2Out;

+layout(location = 1) out int64_t i64Out;

+layout(location = 2) out vec2 vec2Out;

+

+void main()

+{

+    uvec2Out = clockRealtime2x32EXT();

+    i64Out = clockRealtimeEXT();

+    vec2Out = min3(vec3In.xy, vec3In.yz, vec3In.zx); 

+}

diff --git a/Test/spv.intrinsicsSpirvLiteral.vert b/Test/spv.intrinsicsSpirvLiteral.vert
new file mode 100644
index 0000000..a6c012f
--- /dev/null
+++ b/Test/spv.intrinsicsSpirvLiteral.vert
@@ -0,0 +1,17 @@
+#version 450 core

+

+#extension GL_EXT_spirv_intrinsics: enable

+

+spirv_instruction(id = 61)

+vec4 load(spirv_by_reference vec4 pointer, spirv_literal int memoryOperands);

+

+spirv_instruction(id = 62)

+void store(spirv_by_reference vec4 pointer, vec4 object, spirv_literal int memoryOperands);

+

+layout(location = 0) in vec4 vec4In;

+layout(location = 1) out vec4 vec4Out;

+

+void main()

+{

+    store(vec4Out, load(vec4In, /*None=*/0x0), /*Volatile=*/0x1);

+}

diff --git a/Test/spv.intrinsicsSpirvStorageClass.rchit b/Test/spv.intrinsicsSpirvStorageClass.rchit
new file mode 100644
index 0000000..5d23d4f
--- /dev/null
+++ b/Test/spv.intrinsicsSpirvStorageClass.rchit
@@ -0,0 +1,12 @@
+#version 460

+

+#extension GL_EXT_spirv_intrinsics: enable

+

+#define rayPayloadEXT spirv_storage_class(extensions = ["SPV_KHR_ray_tracing"], capabilities = [5353], 5338)

+

+layout(location = 1) rayPayloadEXT vec4 payload;

+

+void main()

+{

+    payload = vec4(0.0, 1.0, 0.0, 1.0);

+}

diff --git a/Test/spv.intrinsicsSpirvType.rgen b/Test/spv.intrinsicsSpirvType.rgen
new file mode 100644
index 0000000..bed0729
--- /dev/null
+++ b/Test/spv.intrinsicsSpirvType.rgen
@@ -0,0 +1,22 @@
+#version 460 core

+

+#extension GL_EXT_spirv_intrinsics: enable

+

+#define rayQueryEXT spirv_type (extensions = ["SPV_KHR_ray_query"], capabilities = [4472], id = 4472)

+#define accelerationStructureEXT spirv_type (extensions = ["SPV_KHR_ray_query"], capabilities = [4472], id = 5341)

+

+spirv_instruction (extensions = ["SPV_KHR_ray_query"], capabilities = [4472, 4478], id = 4473)

+void rayQueryInitializeEXT(spirv_by_reference rayQueryEXT rayQuery, accelerationStructureEXT topLevel, uint rayFlags, uint cullMask, vec3 origin, float tMin, vec3 direction, float tMax);

+

+spirv_instruction (extensions = ["SPV_KHR_ray_query"], capabilities = [4478], id = 4474)

+void rayQueryTerminateEXT(spirv_by_reference rayQueryEXT rayQuery);

+

+layout(binding = 0) uniform accelerationStructureEXT as;

+

+void main()

+{

+    rayQueryEXT rq;

+

+    rayQueryInitializeEXT(rq, as, 0, 0, vec3(0.0), 0.0, vec3(1.0), 1.0);

+    rayQueryTerminateEXT(rq);

+}

diff --git a/Test/spv.invariantAll.vert b/Test/spv.invariantAll.vert
new file mode 100644
index 0000000..e094aa0
--- /dev/null
+++ b/Test/spv.invariantAll.vert
@@ -0,0 +1,10 @@
+#version 450 core
+#pragma STDGL invariant(all)
+
+layout(location=0) out highp float v;
+
+void main()
+{
+    gl_Position = vec4(v, v, 0, 1);
+}
+
diff --git a/Test/spv.load.bool.array.interface.block.frag b/Test/spv.load.bool.array.interface.block.frag
new file mode 100644
index 0000000..2203741
--- /dev/null
+++ b/Test/spv.load.bool.array.interface.block.frag
@@ -0,0 +1,17 @@
+#version 450 core
+
+layout(std140, set=0, binding=0) uniform ub {
+    bool bi[2][3];
+};
+layout(std430, set=0, binding=1) buffer ssbo {
+    bool bo[2][3];
+};
+
+layout(location=0) out vec4 color;
+
+void main()
+{
+    bo = bi;
+    color = vec4(0);
+}
+
diff --git a/Test/spv.noWorkgroup.comp b/Test/spv.noWorkgroup.comp
index 0c77f27..37df388 100644
--- a/Test/spv.noWorkgroup.comp
+++ b/Test/spv.noWorkgroup.comp
@@ -2,6 +2,8 @@
 

 layout(local_size_x_id = 18, local_size_y_id=10,local_size_z_id = 19) in;

 

+shared uint keys[gl_WorkGroupSize.z][gl_WorkGroupSize.x * gl_WorkGroupSize.y];

+

 void main()

 {

 }

diff --git a/Test/spv.scalarlayout.frag b/Test/spv.scalarlayout.frag
index c7ecf50..e0e1b18 100644
--- a/Test/spv.scalarlayout.frag
+++ b/Test/spv.scalarlayout.frag
@@ -27,6 +27,8 @@
     S          i[2];  // offset = 160 (aligned to multiple of 8) stride = 48

 };

 

+layout (std430) uniform;

+

 void main()

 {

 }

diff --git a/Test/spv.subgroupUniformControlFlow.vert b/Test/spv.subgroupUniformControlFlow.vert
new file mode 100644
index 0000000..02ac40d
--- /dev/null
+++ b/Test/spv.subgroupUniformControlFlow.vert
@@ -0,0 +1,11 @@
+#version 460

+

+#ifdef GL_EXT_subgroup_uniform_control_flow

+

+#extension GL_EXT_subgroup_uniform_control_flow : enable

+

+[[random(4)]] void main() [[subgroup_uniform_control_flow]]

+{

+}

+

+#endif

diff --git a/Test/spv.viewportArray2.tesc b/Test/spv.viewportArray2.tesc
index 7fc208a..24a1d8c 100644
--- a/Test/spv.viewportArray2.tesc
+++ b/Test/spv.viewportArray2.tesc
@@ -1,4 +1,4 @@
-#version 450

+#version 430

 #extension GL_NV_viewport_array2 :require

 

 layout(vertices = 4) out;

@@ -12,5 +12,4 @@
 void main()

 {

     gl_out[gl_InvocationID].gl_ViewportMask[0] = 1;

-    gl_ViewportIndex = 2;

 }

diff --git a/Test/textureoffset_sampler2darrayshadow.vert b/Test/textureoffset_sampler2darrayshadow.vert
new file mode 100644
index 0000000..6ce2dbc
--- /dev/null
+++ b/Test/textureoffset_sampler2darrayshadow.vert
@@ -0,0 +1,11 @@
+#version 300 es

+precision mediump float;

+in highp vec4 dEQP_Position;

+

+uniform mediump sampler2DArrayShadow s;

+

+void main()

+{

+	gl_Position = vec4(textureOffset(s, vec4(0), ivec2(0)));

+	gl_Position = dEQP_Position;

+}

diff --git a/Test/vk.relaxed.stagelink.vert b/Test/vk.relaxed.stagelink.vert
index 52396ac..d2ac6af 100644
--- a/Test/vk.relaxed.stagelink.vert
+++ b/Test/vk.relaxed.stagelink.vert
@@ -25,7 +25,7 @@
 void main() {

 

     vec4 v = foo();

-    v = v + s[gl_VertexID];

-    v.x = v.x - float(gl_InstanceID);

+    v = v + s[gl_VertexID - gl_VertexIndex];

+    v.x = v.x - float(gl_InstanceID - gl_InstanceIndex);

     io = v;

-}
\ No newline at end of file
+}

diff --git a/Test/vulkan.ast.vert b/Test/vulkan.ast.vert
index c5a6a42..b9e3e28 100644
--- a/Test/vulkan.ast.vert
+++ b/Test/vulkan.ast.vert
@@ -37,6 +37,6 @@
     ivec2(sci2, sci2);   // spec-const
     ivec2[2](ivec2(sci2, sci2), ivec2(sci2, sci2)); // not a spec-const
 
-    vec2(scf1, scf1);   // not spec-const
+    vec2(scf1, scf1);   // spec-const
     vec2[2](vec2(scf1, scf1), vec2(scf1, scf1)); // not a spec-const
 }
diff --git a/Test/vulkan.frag b/Test/vulkan.frag
index 46c14f3..25bfefe 100644
--- a/Test/vulkan.frag
+++ b/Test/vulkan.frag
@@ -43,6 +43,9 @@
 layout(push_constant) uniform float pcfloat;  // ERROR 2X: not on a non-block, and non-opaque outside block

 

 layout(push_constant) uniform;                // ERROR, needs an object

+layout(binding=2, push_constant) uniform pcbnd1 {  // ERROR, can't have binding

+    int a;

+} pcbnd1inst;

 layout(std430, push_constant) uniform pcb1 { int a; } pcb1inst;

 layout(push_constant) uniform pcb2 {

     int a;

diff --git a/gen_extension_headers.py b/gen_extension_headers.py
new file mode 100644
index 0000000..a787f9a
--- /dev/null
+++ b/gen_extension_headers.py
@@ -0,0 +1,98 @@
+#!/usr/bin/env python
+
+# 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
+#
+#     http://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.

+

+import glob

+import sys

+import os

+

+def generate_main(glsl_files, output_header_file):

+    # Write commit ID to output header file

+    with open(output_header_file, "w") as header_file:

+        # Copyright Notice

+        header_string =  '/***************************************************************************\n'

+        header_string += ' *\n'

+        header_string += ' * Copyright (c) 2015-2021 The Khronos Group Inc.\n'

+        header_string += ' * Copyright (c) 2015-2021 Valve Corporation\n'

+        header_string += ' * Copyright (c) 2015-2021 LunarG, Inc.\n'

+        header_string += ' * Copyright (c) 2015-2021 Google Inc.\n'

+        header_string += ' * Copyright (c) 2021 Advanced Micro Devices, Inc.All rights reserved.\n'

+        header_string += ' *\n'

+        header_string += ' ****************************************************************************/\n'

+        header_string += '#pragma once\n\n'

+        header_string += '#ifndef _INTRINSIC_EXTENSION_HEADER_H_\n'

+        header_string += '#define _INTRINSIC_EXTENSION_HEADER_H_\n\n'

+        header_file.write(header_string)

+

+        symbol_name_list = []

+

+        for i in glsl_files:

+            glsl_contents = open(i,"r").read()

+

+            filename = os.path.basename(i)

+            symbol_name = filename.split(".")[0]

+            symbol_name_list.append(symbol_name)

+            header_name = symbol_name + ".h"

+            header_str = 'std::string %s_GLSL = R"(\n%s\n)";\n' % (symbol_name, glsl_contents)

+            header_str += '\n'

+            header_file.write(header_str)

+

+        contents = ''

+        contents += '\n'
+        contents += 'std::string getIntrinsic(const char* const* shaders, int n) {\n'
+        contents += '\tstd::string shaderString = "";\n';
+
+        contents += '\tfor (int i = 0; i < n; i++) {\n'
+
+        for symbol_name in symbol_name_list:

+            contents += '\t\tif (strstr(shaders[i], "%s") != NULL) {\n'   % (symbol_name)
+            contents += '\t\t    shaderString.append(%s_GLSL);\n' % (symbol_name)
+            contents += '\t\t}\n'

+
+        contents += '\t}\n'
+        contents += '\treturn shaderString;\n';
+        contents += '}\n'

+

+        contents += '\n#endif\n'

+        header_file.write(contents)

+

+def main():

+    if len(sys.argv) < 2:
+        raise Exception("Invalid number of arguments")

+

+    i = 0

+    while i < len(sys.argv):
+        opt = sys.argv[i]
+        i = i + 1
+
+        if opt == "-i" or opt == "-o":
+            if i == len(sys.argv):
+                raise Exception("Expected path after {}".format(opt))
+            val = sys.argv[i]
+            i = i + 1
+            if (opt == "-i"):
+                input_dir = val
+            elif (opt == "-o"):
+                output_file = val
+            else:
+                raise Exception("Unknown flag {}".format(opt))

+

+    glsl_files = glob.glob(input_dir + '/*.glsl')

+

+    # Generate main header

+    generate_main(glsl_files, output_file)

+

+if __name__ == '__main__':

+    main()
\ No newline at end of file
diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp
index 2e04f53..4fdeff7 100644
--- a/glslang/CInterface/glslang_c_interface.cpp
+++ b/glslang/CInterface/glslang_c_interface.cpp
@@ -269,6 +269,8 @@
     switch (client_version) {
     case GLSLANG_TARGET_VULKAN_1_1:
         return glslang::EShTargetVulkan_1_1;
+    case GLSLANG_TARGET_VULKAN_1_2:
+        return glslang::EShTargetVulkan_1_2;
     case GLSLANG_TARGET_OPENGL_450:
         return glslang::EShTargetOpenGL_450;
     default:
diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt
index fc925ea..d0394c8 100644
--- a/glslang/CMakeLists.txt
+++ b/glslang/CMakeLists.txt
@@ -35,14 +35,14 @@
     add_subdirectory(OSDependent/Windows)
 elseif(UNIX OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia")
     add_subdirectory(OSDependent/Unix)
-else(WIN32)
+else()
     message("unknown platform")
-endif(WIN32)
+endif()
 
 if(EMSCRIPTEN OR ENABLE_GLSLANG_JS)
     # May be enabled on non-Emscripten builds for binary-size testing.
     add_subdirectory(OSDependent/Web)
-endif(EMSCRIPTEN OR ENABLE_GLSLANG_JS)
+endif()
 
 ################################################################################
 # GenericCodeGen
@@ -73,6 +73,7 @@
     MachineIndependent/RemoveTree.cpp
     MachineIndependent/Scan.cpp
     MachineIndependent/ShaderLang.cpp
+    MachineIndependent/SpirvIntrinsics.cpp
     MachineIndependent/SymbolTable.cpp
     MachineIndependent/Versions.cpp
     MachineIndependent/intermOut.cpp
@@ -128,7 +129,7 @@
         HLSL/hlslTokenStream.h
         HLSL/hlslGrammar.h
         HLSL/hlslParseables.h)
-endif(ENABLE_HLSL)
+endif()
 
 add_library(MachineIndependent STATIC ${MACHINEINDEPENDENT_SOURCES} ${MACHINEINDEPENDENT_HEADERS})
 set_property(TARGET MachineIndependent PROPERTY POSITION_INDEPENDENT_CODE ON)
@@ -160,6 +161,7 @@
     Include/PoolAlloc.h
     Include/ResourceLimits.h
     Include/ShHandle.h
+    Include/SpirvIntrinsics.h
     Include/Types.h)
 
 add_library(glslang ${LIB_TYPE} ${BISON_GLSLParser_OUTPUT_SOURCE} ${GLSLANG_SOURCES} ${GLSLANG_HEADERS})
@@ -192,7 +194,7 @@
     source_group("MachineIndependent\\Preprocessor" REGULAR_EXPRESSION "MachineIndependent/preprocessor/*")
     source_group("HLSL" REGULAR_EXPRESSION "HLSL/*")
     source_group("CInterface" REGULAR_EXPRESSION "CInterface/*")
-endif(WIN32)
+endif()
 
 ################################################################################
 # install
@@ -223,4 +225,4 @@
 
     install(FILES ${GLSLANG_BUILD_INFO_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang)
 
-endif(ENABLE_GLSLANG_INSTALL)
+endif()
diff --git a/glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl b/glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl
new file mode 100644
index 0000000..7cf545d
--- /dev/null
+++ b/glslang/ExtensionHeaders/GL_EXT_shader_realtime_clock.glsl
@@ -0,0 +1,38 @@
+//
+// Copyright (C) 2002-2005  3Dlabs Inc. Ltd.
+// Copyright (C) 2013-2016 LunarG, Inc.
+// Copyright (C) 2016-2020 Google, Inc.
+// Modifications Copyright(C) 2021 Advanced Micro Devices, Inc.All rights reserved.
+//
+// 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.
+//
+
diff --git a/glslang/HLSL/hlslGrammar.cpp b/glslang/HLSL/hlslGrammar.cpp
index f30c640..bd4af92 100644
--- a/glslang/HLSL/hlslGrammar.cpp
+++ b/glslang/HLSL/hlslGrammar.cpp
@@ -161,8 +161,10 @@
             return true;
 
         // declaration
-        if (! acceptDeclaration(nodeList))
+        if (! acceptDeclaration(nodeList)) {
+            expected("declaration");
             return false;
+        }
     } while (true);
 
     return true;
@@ -3242,7 +3244,7 @@
         }
 
         // hook it up
-        node = parseContext.handleFunctionCall(arguments->getLoc(), constructorFunction, arguments);
+        node = parseContext.handleFunctionCall(token.loc, constructorFunction, arguments);
 
         return node != nullptr;
     }
diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp
index d62f392..39b3eca 100644
--- a/glslang/HLSL/hlslParseHelper.cpp
+++ b/glslang/HLSL/hlslParseHelper.cpp
@@ -4017,12 +4017,12 @@
             txsample->getSequence().push_back(txcombine);
             txsample->getSequence().push_back(argCoord);
 
-            if (argBias != nullptr)
-                txsample->getSequence().push_back(argBias);
-
             if (argOffset != nullptr)
                 txsample->getSequence().push_back(argOffset);
 
+            if (argBias != nullptr)
+              txsample->getSequence().push_back(argBias);
+
             node = convertReturn(txsample, sampler);
 
             break;
@@ -6689,12 +6689,6 @@
 
 //
 // Merge characteristics of the 'src' qualifier into the 'dst'.
-// If there is duplication, issue error messages, unless 'force'
-// is specified, which means to just override default settings.
-//
-// Also, when force is false, it will be assumed that 'src' follows
-// 'dst', for the purpose of error checking order for versions
-// that require specific orderings of qualifiers.
 //
 void HlslParseContext::mergeQualifiers(TQualifier& dst, const TQualifier& src)
 {
@@ -6712,8 +6706,7 @@
     mergeObjectLayoutQualifiers(dst, src, false);
 
     // individual qualifiers
-    bool repeated = false;
-#define MERGE_SINGLETON(field) repeated |= dst.field && src.field; dst.field |= src.field;
+#define MERGE_SINGLETON(field) dst.field |= src.field;
     MERGE_SINGLETON(invariant);
     MERGE_SINGLETON(noContraction);
     MERGE_SINGLETON(centroid);
diff --git a/glslang/HLSL/hlslParseables.cpp b/glslang/HLSL/hlslParseables.cpp
index 4673b46..15918dc 100644
--- a/glslang/HLSL/hlslParseables.cpp
+++ b/glslang/HLSL/hlslParseables.cpp
@@ -665,8 +665,8 @@
         { "Sample",             /*!O*/        "V4",    nullptr,   "%@,S,V",         "FIU,S,F",        EShLangPS,    true },
         { "Sample",             /* O*/        "V4",    nullptr,   "%@,S,V,",        "FIU,S,F,I",      EShLangPS,    true },
 
-        { "SampleBias",         /*!O*/        "V4",    nullptr,   "%@,S,V,S",       "FIU,S,F,",       EShLangPS,    true },
-        { "SampleBias",         /* O*/        "V4",    nullptr,   "%@,S,V,S,V",     "FIU,S,F,,I",     EShLangPS,    true },
+        { "SampleBias",         /*!O*/        "V4",    nullptr,   "%@,S,V,S",       "FIU,S,F,F",      EShLangPS,    true },
+        { "SampleBias",         /* O*/        "V4",    nullptr,   "%@,S,V,S,V",     "FIU,S,F,F,I",    EShLangPS,    true },
 
         // TODO: FXC accepts int/uint samplers here.  unclear what that means.
         { "SampleCmp",          /*!O*/        "S",     "F",       "%@,S,V,S",       "FIU,s,F,",       EShLangPS,    true },
diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h
index 55bdd25..c8203c2 100644
--- a/glslang/Include/BaseTypes.h
+++ b/glslang/Include/BaseTypes.h
@@ -65,6 +65,10 @@
     EbtAccStruct,
     EbtReference,
     EbtRayQuery,
+#ifndef GLSLANG_WEB
+    // SPIR-V type defined by spirv_type
+    EbtSpirvType,
+#endif
 
     // HLSL types that live only temporarily.
     EbtString,
@@ -91,6 +95,9 @@
     EvqUniform,       // read only, shared with app
     EvqBuffer,        // read/write, shared with app
     EvqShared,        // compute shader's read/write 'shared' qualifier
+#ifndef GLSLANG_WEB
+    EvqSpirvStorageClass, // spirv_storage_class
+#endif
 
     EvqPayload,
     EvqPayloadIn,
@@ -263,6 +270,7 @@
     EbvWorldToObject,
     EbvWorldToObject3x4,
     EbvIncomingRayFlags,
+    EbvCurrentRayTimeNV,
     // barycentrics
     EbvBaryCoordNV,
     EbvBaryCoordNoPerspNV,
@@ -321,6 +329,9 @@
     case EvqGlobal:         return "global";         break;
     case EvqConst:          return "const";          break;
     case EvqConstReadOnly:  return "const (read only)"; break;
+#ifndef GLSLANG_WEB
+    case EvqSpirvStorageClass: return "spirv_storage_class"; break;
+#endif
     case EvqVaryingIn:      return "in";             break;
     case EvqVaryingOut:     return "out";            break;
     case EvqUniform:        return "uniform";        break;
@@ -465,6 +476,7 @@
     case EbvIncomingRayFlags:           return "IncomingRayFlagsNV";
     case EbvObjectToWorld:              return "ObjectToWorldNV";
     case EbvWorldToObject:              return "WorldToObjectNV";
+    case EbvCurrentRayTimeNV:           return "CurrentRayTimeNV";
 
     case EbvBaryCoordNV:                return "BaryCoordNV";
     case EbvBaryCoordNoPerspNV:         return "BaryCoordNoPerspNV";
diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h
index b628cdc..e7b5e07 100644
--- a/glslang/Include/Common.h
+++ b/glslang/Include/Common.h
@@ -61,7 +61,7 @@
 }
 #endif
 
-#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) || defined MINGW_HAS_SECURE_API
+#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) || MINGW_HAS_SECURE_API
     #include <basetsd.h>
     #ifndef snprintf
     #define snprintf sprintf_s
@@ -194,6 +194,10 @@
 class TUnorderedMap : public std::unordered_map<K, D, HASH, PRED, pool_allocator<std::pair<K const, D> > > {
 };
 
+template <class K, class CMP = std::less<K> >
+class TSet : public std::set<K, CMP, pool_allocator<K> > {
+};
+
 //
 // Persistent string memory.  Should only be used for strings that survive
 // across compiles/links.
@@ -209,7 +213,7 @@
 //
 // Create a TString object from an integer.
 //
-#if defined _MSC_VER || defined MINGW_HAS_SECURE_API
+#if defined _MSC_VER || MINGW_HAS_SECURE_API
 inline const TString String(const int i, const int base = 10)
 {
     char text[16];     // 32 bit ints are at most 10 digits in base 10
@@ -286,6 +290,18 @@
     return ! (number & (powerOf2 - 1));
 }
 
+// Returns log2 of an integer power of 2.
+// T should be integral.
+template <class T> int IntLog2(T n)
+{
+    assert(IsPow2(n));
+    int result = 0;
+    while ((T(1) << result) != n) {
+      result++;
+    }
+    return result;
+}
+
 } // end namespace glslang
 
 #endif // _COMMON_INCLUDED_
diff --git a/glslang/Include/PoolAlloc.h b/glslang/Include/PoolAlloc.h
index b8eccb8..1f5cac7 100644
--- a/glslang/Include/PoolAlloc.h
+++ b/glslang/Include/PoolAlloc.h
@@ -306,6 +306,8 @@
 
     TPoolAllocator& getAllocator() const { return allocator; }
 
+    pool_allocator select_on_container_copy_construction() const { return pool_allocator{}; }
+
 protected:
     pool_allocator& operator=(const pool_allocator&) { return *this; }
     TPoolAllocator& allocator;
diff --git a/glslang/Include/SpirvIntrinsics.h b/glslang/Include/SpirvIntrinsics.h
new file mode 100644
index 0000000..3c7d72c
--- /dev/null
+++ b/glslang/Include/SpirvIntrinsics.h
@@ -0,0 +1,128 @@
+//
+// Copyright(C) 2021 Advanced Micro Devices, 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.
+//
+
+#pragma once
+
+#ifndef GLSLANG_WEB
+
+//
+// GL_EXT_spirv_intrinsics
+//
+#include "Common.h"
+
+namespace glslang {
+
+class TIntermTyped;
+class TIntermConstantUnion;
+class TType;
+
+// SPIR-V requirements
+struct TSpirvRequirement {
+    POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
+
+    // capability = [..]
+    TSet<TString> extensions;
+    // extension = [..]
+    TSet<int> capabilities;
+};
+
+// SPIR-V execution modes
+struct TSpirvExecutionMode {
+    POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
+
+    // spirv_execution_mode
+    TMap<int, TVector<const TIntermConstantUnion*>> modes;
+    // spirv_execution_mode_id
+    TMap<int, TVector<const TIntermTyped*> > modeIds;
+};
+
+// SPIR-V decorations
+struct TSpirvDecorate {
+    POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
+
+    // spirv_decorate
+    TMap<int, TVector<const TIntermConstantUnion*> > decorates;
+    // spirv_decorate_id
+    TMap<int, TVector<const TIntermTyped*>> decorateIds;
+    // spirv_decorate_string
+    TMap<int, TVector<const TIntermConstantUnion*> > decorateStrings;
+};
+
+// SPIR-V instruction
+struct TSpirvInstruction {
+    POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
+
+    TSpirvInstruction() { set = ""; id = -1; }
+
+    bool operator==(const TSpirvInstruction& rhs) const { return set == rhs.set && id == rhs.id; }
+    bool operator!=(const TSpirvInstruction& rhs) const { return !operator==(rhs); }
+
+    // spirv_instruction
+    TString set;
+    int     id;
+};
+
+// SPIR-V type parameter
+struct TSpirvTypeParameter {
+    POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
+
+    TSpirvTypeParameter(const TIntermConstantUnion* arg) { constant = arg; }
+
+    bool operator==(const TSpirvTypeParameter& rhs) const { return constant == rhs.constant; }
+    bool operator!=(const TSpirvTypeParameter& rhs) const { return !operator==(rhs); }
+
+    const TIntermConstantUnion* constant;
+};
+
+typedef TVector<TSpirvTypeParameter> TSpirvTypeParameters;
+
+// SPIR-V type
+struct TSpirvType {
+    POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator())
+
+    bool operator==(const TSpirvType& rhs) const
+    {
+        return spirvInst == rhs.spirvInst && typeParams == rhs.typeParams;
+    }
+    bool operator!=(const TSpirvType& rhs) const { return !operator==(rhs); }
+
+    // spirv_type
+    TSpirvInstruction spirvInst;
+    TSpirvTypeParameters typeParams;
+};
+
+} // end namespace glslang
+
+#endif // GLSLANG_WEB
diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h
index a3815ca..e87f258 100644
--- a/glslang/Include/Types.h
+++ b/glslang/Include/Types.h
@@ -44,11 +44,14 @@
 #include "../Include/BaseTypes.h"
 #include "../Public/ShaderLang.h"
 #include "arrays.h"
+#include "SpirvIntrinsics.h"
 
 #include <algorithm>
 
 namespace glslang {
 
+class TIntermAggregate;
+
 const int GlslangMaxTypeLength = 200;  // TODO: need to print block/struct one member per line, so this can stay bounded
 
 const char* const AnonymousPrefix = "anon@"; // for something like a block whose members can be directly accessed
@@ -115,6 +118,7 @@
 #endif
 
     bool is1D()          const { return dim == Esd1D; }
+    bool is2D()          const { return dim == Esd2D; }
     bool isBuffer()      const { return dim == EsdBuffer; }
     bool isRect()        const { return dim == EsdRect; }
     bool isSubpass()     const { return dim == EsdSubpass; }
@@ -486,7 +490,6 @@
     EsiCount
 };
 
-
 class TQualifier {
 public:
     static const int layoutNotSet = -1;
@@ -500,6 +503,8 @@
 #ifndef GLSLANG_WEB
         noContraction = false;
         nullInit = false;
+        spirvByReference = false;
+        spirvLiteral = false;
 #endif
         defaultBlock = false;
     }
@@ -517,6 +522,12 @@
         nullInit = false;
         defaultBlock = false;
         clearLayout();
+#ifndef GLSLANG_WEB
+        spirvStorageClass = -1;
+        spirvDecorate = nullptr;
+        spirvByReference = false;
+        spirvLiteral = false;
+#endif
     }
 
     void clearInterstage()
@@ -595,6 +606,10 @@
     bool isPervertexNV() const { return false; }
     void setNullInit() { }
     bool isNullInit() const { return false; }
+    void setSpirvByReference() { }
+    bool isSpirvByReference() { return false; }
+    void setSpirvLiteral() { }
+    bool isSpirvLiteral() { return false; }
 #else
     bool noContraction: 1; // prevent contraction and reassociation, e.g., for 'precise' keyword, and expressions it affects
     bool nopersp      : 1;
@@ -617,6 +632,8 @@
     bool shadercallcoherent : 1;
     bool nonprivate   : 1;
     bool nullInit : 1;
+    bool spirvByReference : 1;
+    bool spirvLiteral : 1;
     bool isWriteOnly() const { return writeonly; }
     bool isReadOnly() const { return readonly; }
     bool isRestrict() const { return restrict; }
@@ -654,6 +671,10 @@
     bool isPervertexNV() const { return pervertexNV; }
     void setNullInit() { nullInit = true; }
     bool isNullInit() const { return nullInit; }
+    void setSpirvByReference() { spirvByReference = true; }
+    bool isSpirvByReference() const { return spirvByReference; }
+    void setSpirvLiteral() { spirvLiteral = true; }
+    bool isSpirvLiteral() const { return spirvLiteral; }
 #endif
 
     bool isPipeInput() const
@@ -720,6 +741,16 @@
         }
     }
 
+    bool isUniform() const
+    {
+        switch (storage) {
+        case EvqUniform:
+            return true;
+        default:
+            return false;
+        }
+    }
+
     bool isIo() const
     {
         switch (storage) {
@@ -947,6 +978,10 @@
     bool layoutViewportRelative;
     int layoutSecondaryViewportRelativeOffset;
     bool layoutShaderRecord;
+
+    // GL_EXT_spirv_intrinsics
+    int spirvStorageClass;
+    TSpirvDecorate* spirvDecorate;
 #endif
 
     bool hasUniformLayout() const
@@ -1078,6 +1113,15 @@
     {
         return nonUniform;
     }
+
+    // GL_EXT_spirv_intrinsics
+    bool hasSprivDecorate() const { return spirvDecorate != nullptr; }
+    void setSpirvDecorate(int decoration, const TIntermAggregate* args = nullptr);
+    void setSpirvDecorateId(int decoration, const TIntermAggregate* args);
+    void setSpirvDecorateString(int decoration, const TIntermAggregate* args);
+    const TSpirvDecorate& getSpirvDecorate() const { assert(spirvDecorate); return *spirvDecorate; }
+    TSpirvDecorate& getSpirvDecorate() { assert(spirvDecorate); return *spirvDecorate; }
+    TString getSpirvDecorateQualifierString() const;
 #endif
     bool hasSpecConstantId() const
     {
@@ -1422,6 +1466,10 @@
     const TType* userDef;
     TSourceLoc loc;
     TArraySizes* typeParameters;
+#ifndef GLSLANG_WEB
+    // SPIR-V type defined by spirv_type directive
+    TSpirvType* spirvType;
+#endif
 
 #ifdef GLSLANG_WEB
     bool isCoopmat() const { return false; }
@@ -1440,6 +1488,9 @@
         loc = l;
         typeParameters = nullptr;
         coopmat = false;
+#ifndef GLSLANG_WEB
+        spirvType = nullptr;
+#endif
     }
 
     void initQualifiers(bool global = false)
@@ -1476,6 +1527,11 @@
         return matrixCols == 0 && vectorSize == 1 && arraySizes == nullptr && userDef == nullptr;
     }
 
+#ifndef GLSLANG_WEB
+    // GL_EXT_spirv_intrinsics
+    void setSpirvType(const TSpirvInstruction& spirvInst, const TSpirvTypeParameters* typeParams = nullptr);
+#endif
+
     // "Image" is a superset of "Subpass"
     bool isImage()   const { return basicType == EbtSampler && sampler.isImage(); }
     bool isSubpass() const { return basicType == EbtSampler && sampler.isSubpass(); }
@@ -1493,6 +1549,9 @@
                    bool isVector = false) :
                             basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1), coopmat(false),
                             arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr)
+#ifndef GLSLANG_WEB
+                            , spirvType(nullptr)
+#endif
                             {
                                 sampler.clear();
                                 qualifier.clear();
@@ -1504,6 +1563,9 @@
           bool isVector = false) :
                             basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1), coopmat(false),
                             arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr)
+#ifndef GLSLANG_WEB
+                            , spirvType(nullptr)
+#endif
                             {
                                 sampler.clear();
                                 qualifier.clear();
@@ -1517,6 +1579,9 @@
                             basicType(p.basicType),
                             vectorSize(p.vectorSize), matrixCols(p.matrixCols), matrixRows(p.matrixRows), vector1(false), coopmat(p.coopmat),
                             arraySizes(p.arraySizes), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(p.typeParameters)
+#ifndef GLSLANG_WEB
+                            , spirvType(p.spirvType)
+#endif
                             {
                                 if (basicType == EbtSampler)
                                     sampler = p.sampler;
@@ -1551,6 +1616,9 @@
         basicType(EbtSampler), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmat(false),
         arraySizes(as), structure(nullptr), fieldName(nullptr), typeName(nullptr),
         sampler(sampler), typeParameters(nullptr)
+#ifndef GLSLANG_WEB
+        , spirvType(nullptr)
+#endif
     {
         qualifier.clear();
         qualifier.storage = q;
@@ -1601,6 +1669,9 @@
     TType(TTypeList* userDef, const TString& n) :
                             basicType(EbtStruct), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmat(false),
                             arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr)
+#ifndef GLSLANG_WEB
+                            , spirvType(nullptr)
+#endif
                             {
                                 sampler.clear();
                                 qualifier.clear();
@@ -1610,6 +1681,9 @@
     TType(TTypeList* userDef, const TString& n, const TQualifier& q) :
                             basicType(EbtBlock), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmat(false),
                             qualifier(q), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr)
+#ifndef GLSLANG_WEB
+                            , spirvType(nullptr)
+#endif
                             {
                                 sampler.clear();
                                 typeName = NewPoolTString(n.c_str());
@@ -1618,6 +1692,9 @@
     explicit TType(TBasicType t, const TType &p, const TString& n) :
                             basicType(t), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false),
                             arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr)
+#ifndef GLSLANG_WEB
+                            , spirvType(nullptr)
+#endif
                             {
                                 assert(t == EbtReference);
                                 typeName = NewPoolTString(n.c_str());
@@ -1648,6 +1725,9 @@
             referentType = copyOf.referentType;
         }
         typeParameters = copyOf.typeParameters;
+#ifndef GLSLANG_WEB
+        spirvType = copyOf.spirvType;
+#endif
         coopmat = copyOf.isCoopMat();
     }
 
@@ -1769,7 +1849,7 @@
     }
     virtual bool isOpaque() const { return basicType == EbtSampler
 #ifndef GLSLANG_WEB
-         || basicType == EbtAtomicUint || basicType == EbtAccStruct || basicType == EbtRayQuery
+            || basicType == EbtAtomicUint || basicType == EbtAccStruct || basicType == EbtRayQuery
 #endif
         ; }
     virtual bool isBuiltIn() const { return getQualifier().builtIn != EbvNone; }
@@ -2017,8 +2097,6 @@
         }
     }
 
-
-
     const char* getBasicString() const
     {
         return TType::getBasicString(basicType);
@@ -2049,6 +2127,7 @@
         case EbtRayQuery:          return "rayQueryEXT";
         case EbtReference:         return "reference";
         case EbtString:            return "string";
+        case EbtSpirvType:         return "spirv_type";
 #endif
         default:                   return "unknown type";
         }
@@ -2069,6 +2148,9 @@
         const auto appendUint = [&](unsigned int u) { typeString.append(std::to_string(u).c_str()); };
         const auto appendInt  = [&](int i)          { typeString.append(std::to_string(i).c_str()); };
 
+        if (qualifier.hasSprivDecorate())
+            appendStr(qualifier.getSpirvDecorateQualifierString().c_str());
+
         if (qualifier.hasLayout()) {
             // To reduce noise, skip this if the only layout is an xfb_buffer
             // with no triggering xfb_offset.
@@ -2218,6 +2300,10 @@
             appendStr(" nonuniform");
         if (qualifier.isNullInit())
             appendStr(" null-init");
+        if (qualifier.isSpirvByReference())
+            appendStr(" spirv_by_reference");
+        if (qualifier.isSpirvLiteral())
+            appendStr(" spirv_literal");
         appendStr(" ");
         appendStr(getStorageQualifierString());
         if (isArray()) {
@@ -2383,6 +2469,14 @@
                     if (*(*structure)[li].type != *(*right.structure)[ri].type)
                         return false;
                 } else {
+                    // Skip hidden members
+                    if ((*structure)[li].type->hiddenMember()) {
+                        ri--;
+                        continue;
+                    } else if ((*right.structure)[ri].type->hiddenMember()) {
+                        li--;
+                        continue;
+                    }
                     // If one of the members is something that's inconsistently declared, skip over it
                     // for now.
                     if (isGLPerVertex) {
@@ -2399,10 +2493,10 @@
                 }
             // If we get here, then there should only be inconsistently declared members left
             } else if (li < structure->size()) {
-                if (!isInconsistentGLPerVertexMember((*structure)[li].type->getFieldName()))
+                if (!(*structure)[li].type->hiddenMember() && !isInconsistentGLPerVertexMember((*structure)[li].type->getFieldName()))
                     return false;
             } else {
-                if (!isInconsistentGLPerVertexMember((*right.structure)[ri].type->getFieldName()))
+                if (!(*right.structure)[ri].type->hiddenMember() && !isInconsistentGLPerVertexMember((*right.structure)[ri].type->getFieldName()))
                     return false;
             }
         }
@@ -2454,6 +2548,15 @@
                 (typeParameters != nullptr && right.typeParameters != nullptr && *typeParameters == *right.typeParameters));
     }
 
+#ifndef GLSLANG_WEB
+    // See if two type's SPIR-V type contents match
+    bool sameSpirvType(const TType& right) const
+    {
+        return ((spirvType == nullptr && right.spirvType == nullptr) ||
+                (spirvType != nullptr && right.spirvType != nullptr && *spirvType == *right.spirvType));
+    }
+#endif
+
     // See if two type's elements match in all ways except basic type
     bool sameElementShape(const TType& right) const
     {
@@ -2492,7 +2595,11 @@
     // See if two types match in all ways (just the actual type, not qualification)
     bool operator==(const TType& right) const
     {
+#ifndef GLSLANG_WEB
+        return sameElementType(right) && sameArrayness(right) && sameTypeParameters(right) && sameSpirvType(right);
+#else
         return sameElementType(right) && sameArrayness(right) && sameTypeParameters(right);
+#endif
     }
 
     bool operator!=(const TType& right) const
@@ -2511,6 +2618,10 @@
         return 0;
     }
 
+#ifndef GLSLANG_WEB
+    const TSpirvType& getSpirvType() const { assert(spirvType); return *spirvType; }
+#endif
+
 protected:
     // Require consumer to pick between deep copy and shallow copy.
     TType(const TType& type);
@@ -2523,6 +2634,19 @@
     {
         shallowCopy(copyOf);
 
+#ifndef GLSLANG_WEB
+        // GL_EXT_spirv_intrinsics
+        if (copyOf.qualifier.spirvDecorate) {
+            qualifier.spirvDecorate = new TSpirvDecorate;
+            *qualifier.spirvDecorate = *copyOf.qualifier.spirvDecorate;
+        }
+
+        if (copyOf.spirvType) {
+            spirvType = new TSpirvType;
+            *spirvType = *copyOf.spirvType;
+        }
+#endif
+
         if (copyOf.arraySizes) {
             arraySizes = new TArraySizes;
             *arraySizes = *copyOf.arraySizes;
@@ -2582,6 +2706,9 @@
     TString *typeName;          // for structure type name
     TSampler sampler;
     TArraySizes* typeParameters;// nullptr unless a parameterized type; can be shared across types
+#ifndef GLSLANG_WEB
+    TSpirvType* spirvType;  // SPIR-V type defined by spirv_type directive
+#endif
 };
 
 } // end namespace glslang
diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h
index 6b2fbd1..595bd62 100644
--- a/glslang/Include/intermediate.h
+++ b/glslang/Include/intermediate.h
@@ -71,6 +71,9 @@
     EOpFunctionCall,
     EOpFunction,        // For function definition
     EOpParameters,      // an aggregate listing the parameters to a function
+#ifndef GLSLANG_WEB
+    EOpSpirvInst,
+#endif
 
     //
     // Unary operators
@@ -923,6 +926,7 @@
     EOpMul32x16,
 
     EOpTraceNV,
+    EOpTraceRayMotionNV,
     EOpTraceKHR,
     EOpReportIntersection,
     EOpIgnoreIntersectionNV,
@@ -1616,8 +1620,15 @@
     virtual       TIntermUnary* getAsUnaryNode()       { return this; }
     virtual const TIntermUnary* getAsUnaryNode() const { return this; }
     virtual void updatePrecision();
+#ifndef GLSLANG_WEB
+    void setSpirvInstruction(const TSpirvInstruction& inst) { spirvInst = inst; }
+    const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; }
+#endif
 protected:
     TIntermTyped* operand;
+#ifndef GLSLANG_WEB
+    TSpirvInstruction spirvInst;
+#endif
 };
 
 typedef TVector<TIntermNode*> TIntermSequence;
@@ -1632,6 +1643,7 @@
     ~TIntermAggregate() { delete pragmaTable; }
     virtual       TIntermAggregate* getAsAggregate()       { return this; }
     virtual const TIntermAggregate* getAsAggregate() const { return this; }
+    virtual void updatePrecision();
     virtual void setOperator(TOperator o) { op = o; }
     virtual       TIntermSequence& getSequence()       { return sequence; }
     virtual const TIntermSequence& getSequence() const { return sequence; }
@@ -1648,6 +1660,10 @@
     bool getDebug() const { return debug; }
     void setPragmaTable(const TPragmaTable& pTable);
     const TPragmaTable& getPragmaTable() const { return *pragmaTable; }
+#ifndef GLSLANG_WEB
+    void setSpirvInstruction(const TSpirvInstruction& inst) { spirvInst = inst; }
+    const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; }
+#endif
 protected:
     TIntermAggregate(const TIntermAggregate&); // disallow copy constructor
     TIntermAggregate& operator=(const TIntermAggregate&); // disallow assignment operator
@@ -1658,6 +1674,9 @@
     bool optimize;
     bool debug;
     TPragmaTable* pragmaTable;
+#ifndef GLSLANG_WEB
+    TSpirvInstruction spirvInst;
+#endif
 };
 
 //
@@ -1675,9 +1694,11 @@
         flatten(false), dontFlatten(false) {}
     virtual void traverse(TIntermTraverser*);
     virtual TIntermTyped* getCondition() const { return condition; }
-    virtual void setCondition(TIntermTyped* c) { condition = c; };
+    virtual void setCondition(TIntermTyped* c) { condition = c; }
     virtual TIntermNode* getTrueBlock() const { return trueBlock; }
+    virtual void setTrueBlock(TIntermTyped* tb) { trueBlock = tb; }
     virtual TIntermNode* getFalseBlock() const { return falseBlock; }
+    virtual void setFalseBlock(TIntermTyped* fb) { falseBlock = fb; }
     virtual       TIntermSelection* getAsSelectionNode()       { return this; }
     virtual const TIntermSelection* getAsSelectionNode() const { return this; }
 
diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp
index 8dc04a4..7f5d4c4 100644
--- a/glslang/MachineIndependent/Constant.cpp
+++ b/glslang/MachineIndependent/Constant.cpp
@@ -529,7 +529,12 @@
             case EbtDouble:
             case EbtFloat16:
             case EbtFloat: newConstArray[i].setDConst(-unionArray[i].getDConst()); break;
-            case EbtInt:   newConstArray[i].setIConst(-unionArray[i].getIConst()); break;
+            // Note: avoid UBSAN error regarding negating 0x80000000
+            case EbtInt:   newConstArray[i].setIConst(
+                                static_cast<unsigned int>(unionArray[i].getIConst()) == 0x80000000
+                                    ? -0x7FFFFFFF - 1
+                                    : -unionArray[i].getIConst());
+                           break;
             case EbtUint:  newConstArray[i].setUConst(static_cast<unsigned int>(-static_cast<int>(unionArray[i].getUConst())));  break;
 #ifndef GLSLANG_WEB
             case EbtInt8:  newConstArray[i].setI8Const(-unionArray[i].getI8Const()); break;
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index a9e5af4..b5f48fb 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -3,7 +3,7 @@
 // Copyright (C) 2012-2016 LunarG, Inc.
 // Copyright (C) 2015-2020 Google, Inc.
 // Copyright (C) 2017 ARM Limited.
-// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved.
+// Modifications Copyright (C) 2020-2021 Advanced Micro Devices, Inc. All rights reserved.
 //
 // All rights reserved.
 //
@@ -483,7 +483,8 @@
 
 inline bool IncludeLegacy(int version, EProfile profile, const SpvVersion& spvVersion)
 {
-    return profile != EEsProfile && (version <= 130 || (spvVersion.spv == 0 && ARBCompatibility) || profile == ECompatibilityProfile);
+    return profile != EEsProfile && (version <= 130 || (spvVersion.spv == 0 && version == 140 && ARBCompatibility) ||
+           profile == ECompatibilityProfile);
 }
 
 // Construct TBuiltInParseables base class.  This can be used for language-common constructs.
@@ -931,7 +932,203 @@
             "\n");
     }
 
-    if (profile != EEsProfile && version >= 450) {
+    if (profile == EEsProfile && version >= 310) {  // Explicit Types
+      commonBuiltins.append(
+
+        "float64_t sqrt(float64_t);"
+        "f64vec2  sqrt(f64vec2);"
+        "f64vec3  sqrt(f64vec3);"
+        "f64vec4  sqrt(f64vec4);"
+
+        "float64_t inversesqrt(float64_t);"
+        "f64vec2  inversesqrt(f64vec2);"
+        "f64vec3  inversesqrt(f64vec3);"
+        "f64vec4  inversesqrt(f64vec4);"
+
+        "float64_t abs(float64_t);"
+        "f64vec2  abs(f64vec2);"
+        "f64vec3  abs(f64vec3);"
+        "f64vec4  abs(f64vec4);"
+
+        "float64_t sign(float64_t);"
+        "f64vec2  sign(f64vec2);"
+        "f64vec3  sign(f64vec3);"
+        "f64vec4  sign(f64vec4);"
+
+        "float64_t floor(float64_t);"
+        "f64vec2  floor(f64vec2);"
+        "f64vec3  floor(f64vec3);"
+        "f64vec4  floor(f64vec4);"
+
+        "float64_t trunc(float64_t);"
+        "f64vec2  trunc(f64vec2);"
+        "f64vec3  trunc(f64vec3);"
+        "f64vec4  trunc(f64vec4);"
+
+        "float64_t round(float64_t);"
+        "f64vec2  round(f64vec2);"
+        "f64vec3  round(f64vec3);"
+        "f64vec4  round(f64vec4);"
+
+        "float64_t roundEven(float64_t);"
+        "f64vec2  roundEven(f64vec2);"
+        "f64vec3  roundEven(f64vec3);"
+        "f64vec4  roundEven(f64vec4);"
+
+        "float64_t ceil(float64_t);"
+        "f64vec2  ceil(f64vec2);"
+        "f64vec3  ceil(f64vec3);"
+        "f64vec4  ceil(f64vec4);"
+
+        "float64_t fract(float64_t);"
+        "f64vec2  fract(f64vec2);"
+        "f64vec3  fract(f64vec3);"
+        "f64vec4  fract(f64vec4);"
+
+        "float64_t mod(float64_t, float64_t);"
+        "f64vec2  mod(f64vec2 , float64_t);"
+        "f64vec3  mod(f64vec3 , float64_t);"
+        "f64vec4  mod(f64vec4 , float64_t);"
+        "f64vec2  mod(f64vec2 , f64vec2);"
+        "f64vec3  mod(f64vec3 , f64vec3);"
+        "f64vec4  mod(f64vec4 , f64vec4);"
+
+        "float64_t modf(float64_t, out float64_t);"
+        "f64vec2  modf(f64vec2,  out f64vec2);"
+        "f64vec3  modf(f64vec3,  out f64vec3);"
+        "f64vec4  modf(f64vec4,  out f64vec4);"
+
+        "float64_t min(float64_t, float64_t);"
+        "f64vec2  min(f64vec2,  float64_t);"
+        "f64vec3  min(f64vec3,  float64_t);"
+        "f64vec4  min(f64vec4,  float64_t);"
+        "f64vec2  min(f64vec2,  f64vec2);"
+        "f64vec3  min(f64vec3,  f64vec3);"
+        "f64vec4  min(f64vec4,  f64vec4);"
+
+        "float64_t max(float64_t, float64_t);"
+        "f64vec2  max(f64vec2 , float64_t);"
+        "f64vec3  max(f64vec3 , float64_t);"
+        "f64vec4  max(f64vec4 , float64_t);"
+        "f64vec2  max(f64vec2 , f64vec2);"
+        "f64vec3  max(f64vec3 , f64vec3);"
+        "f64vec4  max(f64vec4 , f64vec4);"
+
+        "float64_t clamp(float64_t, float64_t, float64_t);"
+        "f64vec2  clamp(f64vec2 , float64_t, float64_t);"
+        "f64vec3  clamp(f64vec3 , float64_t, float64_t);"
+        "f64vec4  clamp(f64vec4 , float64_t, float64_t);"
+        "f64vec2  clamp(f64vec2 , f64vec2 , f64vec2);"
+        "f64vec3  clamp(f64vec3 , f64vec3 , f64vec3);"
+        "f64vec4  clamp(f64vec4 , f64vec4 , f64vec4);"
+
+        "float64_t mix(float64_t, float64_t, float64_t);"
+        "f64vec2  mix(f64vec2,  f64vec2,  float64_t);"
+        "f64vec3  mix(f64vec3,  f64vec3,  float64_t);"
+        "f64vec4  mix(f64vec4,  f64vec4,  float64_t);"
+        "f64vec2  mix(f64vec2,  f64vec2,  f64vec2);"
+        "f64vec3  mix(f64vec3,  f64vec3,  f64vec3);"
+        "f64vec4  mix(f64vec4,  f64vec4,  f64vec4);"
+        "float64_t mix(float64_t, float64_t, bool);"
+        "f64vec2  mix(f64vec2,  f64vec2,  bvec2);"
+        "f64vec3  mix(f64vec3,  f64vec3,  bvec3);"
+        "f64vec4  mix(f64vec4,  f64vec4,  bvec4);"
+
+        "float64_t step(float64_t, float64_t);"
+        "f64vec2  step(f64vec2 , f64vec2);"
+        "f64vec3  step(f64vec3 , f64vec3);"
+        "f64vec4  step(f64vec4 , f64vec4);"
+        "f64vec2  step(float64_t, f64vec2);"
+        "f64vec3  step(float64_t, f64vec3);"
+        "f64vec4  step(float64_t, f64vec4);"
+
+        "float64_t smoothstep(float64_t, float64_t, float64_t);"
+        "f64vec2  smoothstep(f64vec2 , f64vec2 , f64vec2);"
+        "f64vec3  smoothstep(f64vec3 , f64vec3 , f64vec3);"
+        "f64vec4  smoothstep(f64vec4 , f64vec4 , f64vec4);"
+        "f64vec2  smoothstep(float64_t, float64_t, f64vec2);"
+        "f64vec3  smoothstep(float64_t, float64_t, f64vec3);"
+        "f64vec4  smoothstep(float64_t, float64_t, f64vec4);"
+
+        "float64_t length(float64_t);"
+        "float64_t length(f64vec2);"
+        "float64_t length(f64vec3);"
+        "float64_t length(f64vec4);"
+
+        "float64_t distance(float64_t, float64_t);"
+        "float64_t distance(f64vec2 , f64vec2);"
+        "float64_t distance(f64vec3 , f64vec3);"
+        "float64_t distance(f64vec4 , f64vec4);"
+
+        "float64_t dot(float64_t, float64_t);"
+        "float64_t dot(f64vec2 , f64vec2);"
+        "float64_t dot(f64vec3 , f64vec3);"
+        "float64_t dot(f64vec4 , f64vec4);"
+
+        "f64vec3 cross(f64vec3, f64vec3);"
+
+        "float64_t normalize(float64_t);"
+        "f64vec2  normalize(f64vec2);"
+        "f64vec3  normalize(f64vec3);"
+        "f64vec4  normalize(f64vec4);"
+
+        "float64_t faceforward(float64_t, float64_t, float64_t);"
+        "f64vec2  faceforward(f64vec2,  f64vec2,  f64vec2);"
+        "f64vec3  faceforward(f64vec3,  f64vec3,  f64vec3);"
+        "f64vec4  faceforward(f64vec4,  f64vec4,  f64vec4);"
+
+        "float64_t reflect(float64_t, float64_t);"
+        "f64vec2  reflect(f64vec2 , f64vec2 );"
+        "f64vec3  reflect(f64vec3 , f64vec3 );"
+        "f64vec4  reflect(f64vec4 , f64vec4 );"
+
+        "float64_t refract(float64_t, float64_t, float64_t);"
+        "f64vec2  refract(f64vec2 , f64vec2 , float64_t);"
+        "f64vec3  refract(f64vec3 , f64vec3 , float64_t);"
+        "f64vec4  refract(f64vec4 , f64vec4 , float64_t);"
+
+        "f64mat2 matrixCompMult(f64mat2, f64mat2);"
+        "f64mat3 matrixCompMult(f64mat3, f64mat3);"
+        "f64mat4 matrixCompMult(f64mat4, f64mat4);"
+        "f64mat2x3 matrixCompMult(f64mat2x3, f64mat2x3);"
+        "f64mat2x4 matrixCompMult(f64mat2x4, f64mat2x4);"
+        "f64mat3x2 matrixCompMult(f64mat3x2, f64mat3x2);"
+        "f64mat3x4 matrixCompMult(f64mat3x4, f64mat3x4);"
+        "f64mat4x2 matrixCompMult(f64mat4x2, f64mat4x2);"
+        "f64mat4x3 matrixCompMult(f64mat4x3, f64mat4x3);"
+
+        "f64mat2   outerProduct(f64vec2, f64vec2);"
+        "f64mat3   outerProduct(f64vec3, f64vec3);"
+        "f64mat4   outerProduct(f64vec4, f64vec4);"
+        "f64mat2x3 outerProduct(f64vec3, f64vec2);"
+        "f64mat3x2 outerProduct(f64vec2, f64vec3);"
+        "f64mat2x4 outerProduct(f64vec4, f64vec2);"
+        "f64mat4x2 outerProduct(f64vec2, f64vec4);"
+        "f64mat3x4 outerProduct(f64vec4, f64vec3);"
+        "f64mat4x3 outerProduct(f64vec3, f64vec4);"
+
+        "f64mat2   transpose(f64mat2);"
+        "f64mat3   transpose(f64mat3);"
+        "f64mat4   transpose(f64mat4);"
+        "f64mat2x3 transpose(f64mat3x2);"
+        "f64mat3x2 transpose(f64mat2x3);"
+        "f64mat2x4 transpose(f64mat4x2);"
+        "f64mat4x2 transpose(f64mat2x4);"
+        "f64mat3x4 transpose(f64mat4x3);"
+        "f64mat4x3 transpose(f64mat3x4);"
+
+        "float64_t determinant(f64mat2);"
+        "float64_t determinant(f64mat3);"
+        "float64_t determinant(f64mat4);"
+
+        "f64mat2 inverse(f64mat2);"
+        "f64mat3 inverse(f64mat3);"
+        "f64mat4 inverse(f64mat4);"
+
+        "\n");
+    }
+
+    if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) {
         commonBuiltins.append(
 
             "int64_t abs(int64_t);"
@@ -998,25 +1195,25 @@
             "u64vec3  mix(u64vec3,  u64vec3,  bvec3);"
             "u64vec4  mix(u64vec4,  u64vec4,  bvec4);"
 
-            "int64_t doubleBitsToInt64(double);"
-            "i64vec2 doubleBitsToInt64(dvec2);"
-            "i64vec3 doubleBitsToInt64(dvec3);"
-            "i64vec4 doubleBitsToInt64(dvec4);"
+            "int64_t doubleBitsToInt64(float64_t);"
+            "i64vec2 doubleBitsToInt64(f64vec2);"
+            "i64vec3 doubleBitsToInt64(f64vec3);"
+            "i64vec4 doubleBitsToInt64(f64vec4);"
 
-            "uint64_t doubleBitsToUint64(double);"
-            "u64vec2  doubleBitsToUint64(dvec2);"
-            "u64vec3  doubleBitsToUint64(dvec3);"
-            "u64vec4  doubleBitsToUint64(dvec4);"
+            "uint64_t doubleBitsToUint64(float64_t);"
+            "u64vec2  doubleBitsToUint64(f64vec2);"
+            "u64vec3  doubleBitsToUint64(f64vec3);"
+            "u64vec4  doubleBitsToUint64(f64vec4);"
 
-            "double int64BitsToDouble(int64_t);"
-            "dvec2  int64BitsToDouble(i64vec2);"
-            "dvec3  int64BitsToDouble(i64vec3);"
-            "dvec4  int64BitsToDouble(i64vec4);"
+            "float64_t int64BitsToDouble(int64_t);"
+            "f64vec2  int64BitsToDouble(i64vec2);"
+            "f64vec3  int64BitsToDouble(i64vec3);"
+            "f64vec4  int64BitsToDouble(i64vec4);"
 
-            "double uint64BitsToDouble(uint64_t);"
-            "dvec2  uint64BitsToDouble(u64vec2);"
-            "dvec3  uint64BitsToDouble(u64vec3);"
-            "dvec4  uint64BitsToDouble(u64vec4);"
+            "float64_t uint64BitsToDouble(uint64_t);"
+            "f64vec2  uint64BitsToDouble(u64vec2);"
+            "f64vec3  uint64BitsToDouble(u64vec3);"
+            "f64vec4  uint64BitsToDouble(u64vec4);"
 
             "int64_t  packInt2x32(ivec2);"
             "uint64_t packUint2x32(uvec2);"
@@ -1065,6 +1262,16 @@
             "bvec3 notEqual(u64vec3, u64vec3);"
             "bvec4 notEqual(u64vec4, u64vec4);"
 
+            "int64_t bitCount(int64_t);"
+            "i64vec2 bitCount(i64vec2);"
+            "i64vec3 bitCount(i64vec3);"
+            "i64vec4 bitCount(i64vec4);"
+
+            "int64_t bitCount(uint64_t);"
+            "i64vec2 bitCount(u64vec2);"
+            "i64vec3 bitCount(u64vec3);"
+            "i64vec4 bitCount(u64vec4);"
+
             "int64_t findLSB(int64_t);"
             "i64vec2 findLSB(i64vec2);"
             "i64vec3 findLSB(i64vec3);"
@@ -1230,11 +1437,23 @@
             " int64_t atomicMin(coherent volatile inout  int64_t,  int64_t);"
             "uint64_t atomicMin(coherent volatile inout uint64_t, uint64_t, int, int, int);"
             " int64_t atomicMin(coherent volatile inout  int64_t,  int64_t, int, int, int);"
+            "float16_t atomicMin(coherent volatile inout float16_t, float16_t);"
+            "float16_t atomicMin(coherent volatile inout float16_t, float16_t, int, int, int);"
+            "   float atomicMin(coherent volatile inout float, float);"
+            "   float atomicMin(coherent volatile inout float, float, int, int, int);"
+            "  double atomicMin(coherent volatile inout double, double);"
+            "  double atomicMin(coherent volatile inout double, double, int, int, int);"
 
             "uint64_t atomicMax(coherent volatile inout uint64_t, uint64_t);"
             " int64_t atomicMax(coherent volatile inout  int64_t,  int64_t);"
             "uint64_t atomicMax(coherent volatile inout uint64_t, uint64_t, int, int, int);"
             " int64_t atomicMax(coherent volatile inout  int64_t,  int64_t, int, int, int);"
+            "float16_t atomicMax(coherent volatile inout float16_t, float16_t);"
+            "float16_t atomicMax(coherent volatile inout float16_t, float16_t, int, int, int);"
+            "   float atomicMax(coherent volatile inout float, float);"
+            "   float atomicMax(coherent volatile inout float, float, int, int, int);"
+            "  double atomicMax(coherent volatile inout double, double);"
+            "  double atomicMax(coherent volatile inout double, double, int, int, int);"
 
             "uint64_t atomicAnd(coherent volatile inout uint64_t, uint64_t);"
             " int64_t atomicAnd(coherent volatile inout  int64_t,  int64_t);"
@@ -1255,6 +1474,8 @@
             " int64_t atomicAdd(coherent volatile inout  int64_t,  int64_t);"
             "uint64_t atomicAdd(coherent volatile inout uint64_t, uint64_t, int, int, int);"
             " int64_t atomicAdd(coherent volatile inout  int64_t,  int64_t, int, int, int);"
+            "float16_t atomicAdd(coherent volatile inout float16_t, float16_t);"
+            "float16_t atomicAdd(coherent volatile inout float16_t, float16_t, int, int, int);"
             "   float atomicAdd(coherent volatile inout float, float);"
             "   float atomicAdd(coherent volatile inout float, float, int, int, int);"
             "  double atomicAdd(coherent volatile inout double, double);"
@@ -1264,6 +1485,8 @@
             " int64_t atomicExchange(coherent volatile inout  int64_t,  int64_t);"
             "uint64_t atomicExchange(coherent volatile inout uint64_t, uint64_t, int, int, int);"
             " int64_t atomicExchange(coherent volatile inout  int64_t,  int64_t, int, int, int);"
+            "float16_t atomicExchange(coherent volatile inout float16_t, float16_t);"
+            "float16_t atomicExchange(coherent volatile inout float16_t, float16_t, int, int, int);"
             "   float atomicExchange(coherent volatile inout float, float);"
             "   float atomicExchange(coherent volatile inout float, float, int, int, int);"
             "  double atomicExchange(coherent volatile inout double, double);"
@@ -1276,11 +1499,13 @@
 
             "uint64_t atomicLoad(coherent volatile in uint64_t, int, int, int);"
             " int64_t atomicLoad(coherent volatile in  int64_t, int, int, int);"
+            "float16_t atomicLoad(coherent volatile in float16_t, int, int, int);"
             "   float atomicLoad(coherent volatile in float, int, int, int);"
             "  double atomicLoad(coherent volatile in double, int, int, int);"
 
             "void atomicStore(coherent volatile out uint64_t, uint64_t, int, int, int);"
             "void atomicStore(coherent volatile out  int64_t,  int64_t, int, int, int);"
+            "void atomicStore(coherent volatile out float16_t, float16_t, int, int, int);"
             "void atomicStore(coherent volatile out float, float, int, int, int);"
             "void atomicStore(coherent volatile out double, double, int, int, int);"
             "\n");
@@ -1335,6 +1560,15 @@
                 "dvec4  fma(dvec4,  dvec4,  dvec4 );"
                 "\n");
     }
+
+    if (profile == EEsProfile && version >= 310) {  // ARB_gpu_shader_fp64
+            commonBuiltins.append(
+                "float64_t fma(float64_t, float64_t, float64_t);"
+                "f64vec2  fma(f64vec2,  f64vec2,  f64vec2 );"
+                "f64vec3  fma(f64vec3,  f64vec3,  f64vec3 );"
+                "f64vec4  fma(f64vec4,  f64vec4,  f64vec4 );"
+                "\n");
+    }
 #endif
 
     if ((profile == EEsProfile && version >= 310) ||
@@ -1371,6 +1605,21 @@
 
             "\n");
     }
+
+    if (profile == EEsProfile && version >= 310) { // ARB_gpu_shader_fp64
+        commonBuiltins.append(
+            "float64_t frexp(float64_t, out int);"
+            "f64vec2  frexp( f64vec2, out ivec2);"
+            "f64vec3  frexp( f64vec3, out ivec3);"
+            "f64vec4  frexp( f64vec4, out ivec4);"
+
+            "float64_t ldexp(float64_t, int);"
+            "f64vec2  ldexp( f64vec2, ivec2);"
+            "f64vec3  ldexp( f64vec3, ivec3);"
+            "f64vec4  ldexp( f64vec4, ivec4);"
+
+            "\n");
+    }
 #endif
 #endif
 
@@ -1615,6 +1864,22 @@
 
                 "\n");
         }
+        if (profile != EEsProfile && version == 450) {
+            commonBuiltins.append(
+                "uint atomicCounterAddARB(atomic_uint, uint);"
+                "uint atomicCounterSubtractARB(atomic_uint, uint);"
+                "uint atomicCounterMinARB(atomic_uint, uint);"
+                "uint atomicCounterMaxARB(atomic_uint, uint);"
+                "uint atomicCounterAndARB(atomic_uint, uint);"
+                "uint atomicCounterOrARB(atomic_uint, uint);"
+                "uint atomicCounterXorARB(atomic_uint, uint);"
+                "uint atomicCounterExchangeARB(atomic_uint, uint);"
+                "uint atomicCounterCompSwapARB(atomic_uint, uint, uint);"
+
+                "\n");
+        }
+
+
         if (profile != EEsProfile && version >= 460) {
             commonBuiltins.append(
                 "uint atomicCounterAdd(atomic_uint, uint);"
@@ -3146,7 +3411,7 @@
 
 #ifndef GLSLANG_ANGLE
     // GL_AMD_gpu_shader_half_float/Explicit types
-    if (profile != EEsProfile && version >= 450) {
+    if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) {
         commonBuiltins.append(
             "float16_t radians(float16_t);"
             "f16vec2   radians(f16vec2);"
@@ -3494,7 +3759,7 @@
     }
 
     // Explicit types
-    if (profile != EEsProfile && version >= 450) {
+    if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) {
         commonBuiltins.append(
             "int8_t abs(int8_t);"
             "i8vec2 abs(i8vec2);"
@@ -3894,106 +4159,6 @@
             "u16vec4  unpack16(uint64_t);"
             "i32vec2  unpack32(int64_t);"
             "u32vec2  unpack32(uint64_t);"
-
-            "float64_t radians(float64_t);"
-            "f64vec2   radians(f64vec2);"
-            "f64vec3   radians(f64vec3);"
-            "f64vec4   radians(f64vec4);"
-
-            "float64_t degrees(float64_t);"
-            "f64vec2   degrees(f64vec2);"
-            "f64vec3   degrees(f64vec3);"
-            "f64vec4   degrees(f64vec4);"
-
-            "float64_t sin(float64_t);"
-            "f64vec2   sin(f64vec2);"
-            "f64vec3   sin(f64vec3);"
-            "f64vec4   sin(f64vec4);"
-
-            "float64_t cos(float64_t);"
-            "f64vec2   cos(f64vec2);"
-            "f64vec3   cos(f64vec3);"
-            "f64vec4   cos(f64vec4);"
-
-            "float64_t tan(float64_t);"
-            "f64vec2   tan(f64vec2);"
-            "f64vec3   tan(f64vec3);"
-            "f64vec4   tan(f64vec4);"
-
-            "float64_t asin(float64_t);"
-            "f64vec2   asin(f64vec2);"
-            "f64vec3   asin(f64vec3);"
-            "f64vec4   asin(f64vec4);"
-
-            "float64_t acos(float64_t);"
-            "f64vec2   acos(f64vec2);"
-            "f64vec3   acos(f64vec3);"
-            "f64vec4   acos(f64vec4);"
-
-            "float64_t atan(float64_t, float64_t);"
-            "f64vec2   atan(f64vec2,   f64vec2);"
-            "f64vec3   atan(f64vec3,   f64vec3);"
-            "f64vec4   atan(f64vec4,   f64vec4);"
-
-            "float64_t atan(float64_t);"
-            "f64vec2   atan(f64vec2);"
-            "f64vec3   atan(f64vec3);"
-            "f64vec4   atan(f64vec4);"
-
-            "float64_t sinh(float64_t);"
-            "f64vec2   sinh(f64vec2);"
-            "f64vec3   sinh(f64vec3);"
-            "f64vec4   sinh(f64vec4);"
-
-            "float64_t cosh(float64_t);"
-            "f64vec2   cosh(f64vec2);"
-            "f64vec3   cosh(f64vec3);"
-            "f64vec4   cosh(f64vec4);"
-
-            "float64_t tanh(float64_t);"
-            "f64vec2   tanh(f64vec2);"
-            "f64vec3   tanh(f64vec3);"
-            "f64vec4   tanh(f64vec4);"
-
-            "float64_t asinh(float64_t);"
-            "f64vec2   asinh(f64vec2);"
-            "f64vec3   asinh(f64vec3);"
-            "f64vec4   asinh(f64vec4);"
-
-            "float64_t acosh(float64_t);"
-            "f64vec2   acosh(f64vec2);"
-            "f64vec3   acosh(f64vec3);"
-            "f64vec4   acosh(f64vec4);"
-
-            "float64_t atanh(float64_t);"
-            "f64vec2   atanh(f64vec2);"
-            "f64vec3   atanh(f64vec3);"
-            "f64vec4   atanh(f64vec4);"
-
-            "float64_t pow(float64_t, float64_t);"
-            "f64vec2   pow(f64vec2,   f64vec2);"
-            "f64vec3   pow(f64vec3,   f64vec3);"
-            "f64vec4   pow(f64vec4,   f64vec4);"
-
-            "float64_t exp(float64_t);"
-            "f64vec2   exp(f64vec2);"
-            "f64vec3   exp(f64vec3);"
-            "f64vec4   exp(f64vec4);"
-
-            "float64_t log(float64_t);"
-            "f64vec2   log(f64vec2);"
-            "f64vec3   log(f64vec3);"
-            "f64vec4   log(f64vec4);"
-
-            "float64_t exp2(float64_t);"
-            "f64vec2   exp2(f64vec2);"
-            "f64vec3   exp2(f64vec3);"
-            "f64vec4   exp2(f64vec4);"
-
-            "float64_t log2(float64_t);"
-            "f64vec2   log2(f64vec2);"
-            "f64vec3   log2(f64vec3);"
-            "f64vec4   log2(f64vec4);"
             "\n");
     }
 
@@ -4388,7 +4553,7 @@
             "\n");
     }
 
-    // GL_ARB_shader_clock & GL_EXT_shader_realtime_clock
+    // GL_ARB_shader_clock& GL_EXT_shader_realtime_clock
     if (profile != EEsProfile && version >= 450) {
         commonBuiltins.append(
             "uvec2 clock2x32ARB();"
@@ -4412,7 +4577,7 @@
             "\n");
         }
 
-    // Builtins for GL_NV_ray_tracing/GL_EXT_ray_tracing/GL_EXT_ray_query
+    // Builtins for GL_NV_ray_tracing/GL_NV_ray_tracing_motion_blur/GL_EXT_ray_tracing/GL_EXT_ray_query
     if (profile != EEsProfile && version >= 460) {
          commonBuiltins.append("void rayQueryInitializeEXT(rayQueryEXT, accelerationStructureEXT, uint, uint, vec3, float, vec3, float);"
             "void rayQueryTerminateEXT(rayQueryEXT);"
@@ -4441,6 +4606,7 @@
 
         stageBuiltins[EShLangRayGen].append(
             "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
+            "void traceRayMotionNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);"
             "void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
             "void executeCallableNV(uint, int);"
             "void executeCallableEXT(uint, int);"
@@ -4455,12 +4621,14 @@
             "\n");
         stageBuiltins[EShLangClosestHit].append(
             "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
+            "void traceRayMotionNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);"
             "void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
             "void executeCallableNV(uint, int);"
             "void executeCallableEXT(uint, int);"
             "\n");
         stageBuiltins[EShLangMiss].append(
             "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
+            "void traceRayMotionNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);"
             "void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);"
             "void executeCallableNV(uint, int);"
             "void executeCallableEXT(uint, int);"
@@ -4906,9 +5074,13 @@
                 );
         }
 
-        if (version >= 450)
+        if (version >= 430)
             stageBuiltins[EShLangVertex].append(
                 "out int gl_ViewportMask[];"             // GL_NV_viewport_array2
+                );
+
+        if (version >= 450)
+            stageBuiltins[EShLangVertex].append(
                 "out int gl_SecondaryViewportMaskNV[];"  // GL_NV_stereo_view_rendering
                 "out vec4 gl_SecondaryPositionNV;"       // GL_NV_stereo_view_rendering
                 "out vec4 gl_PositionPerViewNV[];"       // GL_NVX_multiview_per_view_attributes
@@ -5044,9 +5216,13 @@
             "in int gl_InvocationID;"
             );
 
-        if (version >= 450)
+        if (version >= 430)
             stageBuiltins[EShLangGeometry].append(
                 "out int gl_ViewportMask[];"               // GL_NV_viewport_array2
+            );
+
+        if (version >= 450)
+            stageBuiltins[EShLangGeometry].append(
                 "out int gl_SecondaryViewportMaskNV[];"    // GL_NV_stereo_view_rendering
                 "out vec4 gl_SecondaryPositionNV;"         // GL_NV_stereo_view_rendering
                 "out vec4 gl_PositionPerViewNV[];"         // GL_NVX_multiview_per_view_attributes
@@ -5122,7 +5298,13 @@
         if (version >= 450)
             stageBuiltins[EShLangTessControl].append(
                 "float gl_CullDistance[];"
+            );
+        if (version >= 430)
+            stageBuiltins[EShLangTessControl].append(
                 "int  gl_ViewportMask[];"             // GL_NV_viewport_array2
+            );
+        if (version >= 450)
+            stageBuiltins[EShLangTessControl].append(
                 "vec4 gl_SecondaryPositionNV;"        // GL_NV_stereo_view_rendering
                 "int  gl_SecondaryViewportMaskNV[];"  // GL_NV_stereo_view_rendering
                 "vec4 gl_PositionPerViewNV[];"        // GL_NVX_multiview_per_view_attributes
@@ -5225,9 +5407,13 @@
                 "out int gl_Layer;"
                 "\n");
 
-        if (version >= 450)
+        if (version >= 430)
             stageBuiltins[EShLangTessEvaluation].append(
                 "out int  gl_ViewportMask[];"             // GL_NV_viewport_array2
+            );
+
+        if (version >= 450)
+            stageBuiltins[EShLangTessEvaluation].append(
                 "out vec4 gl_SecondaryPositionNV;"        // GL_NV_stereo_view_rendering
                 "out int  gl_SecondaryViewportMaskNV[];"  // GL_NV_stereo_view_rendering
                 "out vec4 gl_PositionPerViewNV[];"        // GL_NVX_multiview_per_view_attributes
@@ -5669,6 +5855,7 @@
             "in    mat3x4 gl_WorldToObject3x4EXT;"
             "in    uint   gl_IncomingRayFlagsNV;"
             "in    uint   gl_IncomingRayFlagsEXT;"
+            "in    float  gl_CurrentRayTimeNV;"
             "\n";
         const char *hitDecls =
             "in    uvec3  gl_LaunchIDNV;"
@@ -5704,6 +5891,7 @@
             "in    mat3x4 gl_WorldToObject3x4EXT;"
             "in    uint   gl_IncomingRayFlagsNV;"
             "in    uint   gl_IncomingRayFlagsEXT;"
+            "in    float  gl_CurrentRayTimeNV;"
             "\n";
         const char *missDecls =
             "in    uvec3  gl_LaunchIDNV;"
@@ -5722,6 +5910,7 @@
             "in    float  gl_RayTmaxEXT;"
             "in    uint   gl_IncomingRayFlagsNV;"
             "in    uint   gl_IncomingRayFlagsEXT;"
+            "in    float  gl_CurrentRayTimeNV;"
             "\n";
 
         const char *callableDecls =
@@ -6248,6 +6437,24 @@
                 commonBuiltins.append(imageParams);
                 commonBuiltins.append(", float");
                 commonBuiltins.append(", int, int, int);\n");
+
+                commonBuiltins.append("float imageAtomicMin(volatile coherent ");
+                commonBuiltins.append(imageParams);
+                commonBuiltins.append(", float);\n");
+
+                commonBuiltins.append("float imageAtomicMin(volatile coherent ");
+                commonBuiltins.append(imageParams);
+                commonBuiltins.append(", float");
+                commonBuiltins.append(", int, int, int);\n");
+
+                commonBuiltins.append("float imageAtomicMax(volatile coherent ");
+                commonBuiltins.append(imageParams);
+                commonBuiltins.append(", float);\n");
+
+                commonBuiltins.append("float imageAtomicMax(volatile coherent ");
+                commonBuiltins.append(imageParams);
+                commonBuiltins.append(", float");
+                commonBuiltins.append(", int, int, int);\n");
             }
         }
     }
@@ -7016,6 +7223,9 @@
 
             snprintf(builtInConstant, maxSize, "const int  gl_MaxFragmentUniformVectors = %d;", resources.maxFragmentUniformVectors);
             s.append(builtInConstant);
+
+            snprintf(builtInConstant, maxSize, "const int  gl_MaxVaryingVectors = %d;", resources.maxVaryingVectors);
+            s.append(builtInConstant);
         }
 
         snprintf(builtInConstant, maxSize, "const int  gl_MaxVertexAttribs = %d;", resources.maxVertexAttribs);
@@ -7048,7 +7258,8 @@
         snprintf(builtInConstant, maxSize, "const int  gl_MaxVertexUniformComponents = %d;", resources.maxVertexUniformComponents);
         s.append(builtInConstant);
 
-        if (version < 150 || ARBCompatibility) {
+        // Moved from just being deprecated into compatibility profile only as of 4.20
+        if (version < 420 || profile == ECompatibilityProfile) {
             snprintf(builtInConstant, maxSize, "const int  gl_MaxVaryingFloats = %d;", resources.maxVaryingFloats);
             s.append(builtInConstant);
         }
@@ -7408,6 +7619,11 @@
     symQualifier.builtIn = builtIn;
 }
 
+static void RetargetVariable(const char* from, const char* to, TSymbolTable& symbolTable)
+{
+    symbolTable.retargetSymbol(from, to);
+}
+
 //
 // For built-in variables inside a named block.
 // SpecialQualifier() won't ever go inside a block; their member's qualifier come
@@ -7475,8 +7691,8 @@
 
         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);
+            RetargetVariable("gl_InstanceID", "gl_InstanceIndex", symbolTable);
+            RetargetVariable("gl_VertexID", "gl_VertexIndex", symbolTable);
         }
 
         if (profile != EEsProfile) {
@@ -7990,6 +8206,19 @@
             symbolTable.setFunctionExtensions("atomicCounter"         , 1, &E_GL_ARB_shader_atomic_counters);
         }
 
+        // E_GL_ARB_shader_atomic_counter_ops
+        if (profile != EEsProfile && version == 450) {
+            symbolTable.setFunctionExtensions("atomicCounterAddARB"     , 1, &E_GL_ARB_shader_atomic_counter_ops);
+            symbolTable.setFunctionExtensions("atomicCounterSubtractARB", 1, &E_GL_ARB_shader_atomic_counter_ops);
+            symbolTable.setFunctionExtensions("atomicCounterMinARB"     , 1, &E_GL_ARB_shader_atomic_counter_ops);
+            symbolTable.setFunctionExtensions("atomicCounterMaxARB"     , 1, &E_GL_ARB_shader_atomic_counter_ops);
+            symbolTable.setFunctionExtensions("atomicCounterAndARB"     , 1, &E_GL_ARB_shader_atomic_counter_ops);
+            symbolTable.setFunctionExtensions("atomicCounterOrARB"      , 1, &E_GL_ARB_shader_atomic_counter_ops);
+            symbolTable.setFunctionExtensions("atomicCounterXorARB"     , 1, &E_GL_ARB_shader_atomic_counter_ops);
+            symbolTable.setFunctionExtensions("atomicCounterExchangeARB", 1, &E_GL_ARB_shader_atomic_counter_ops);
+            symbolTable.setFunctionExtensions("atomicCounterCompSwapARB", 1, &E_GL_ARB_shader_atomic_counter_ops);
+        }
+
         // E_GL_ARB_derivative_control
         if (profile != EEsProfile && version < 450) {
             symbolTable.setFunctionExtensions("dFdxFine",     1, &E_GL_ARB_derivative_control);
@@ -8097,7 +8326,7 @@
         symbolTable.setFunctionExtensions("clockARB",     1, &E_GL_ARB_shader_clock);
         symbolTable.setFunctionExtensions("clock2x32ARB", 1, &E_GL_ARB_shader_clock);
 
-        symbolTable.setFunctionExtensions("clockRealtimeEXT",     1, &E_GL_EXT_shader_realtime_clock);
+        symbolTable.setFunctionExtensions("clockRealtimeEXT", 1, &E_GL_EXT_shader_realtime_clock);
         symbolTable.setFunctionExtensions("clockRealtime2x32EXT", 1, &E_GL_EXT_shader_realtime_clock);
 
         if (profile == EEsProfile && version < 320) {
@@ -8518,11 +8747,13 @@
             symbolTable.setVariableExtensions("gl_WorldToObject3x4EXT", 1, &E_GL_EXT_ray_tracing);
             symbolTable.setVariableExtensions("gl_IncomingRayFlagsNV", 1, &E_GL_NV_ray_tracing);
             symbolTable.setVariableExtensions("gl_IncomingRayFlagsEXT", 1, &E_GL_EXT_ray_tracing);
+            symbolTable.setVariableExtensions("gl_CurrentRayTimeNV", 1, &E_GL_NV_ray_tracing_motion_blur);
 
             symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group);
 
 
             symbolTable.setFunctionExtensions("traceNV", 1, &E_GL_NV_ray_tracing);
+            symbolTable.setFunctionExtensions("traceRayMotionNV", 1, &E_GL_NV_ray_tracing_motion_blur);
             symbolTable.setFunctionExtensions("traceRayEXT", 1, &E_GL_EXT_ray_tracing);
             symbolTable.setFunctionExtensions("reportIntersectionNV", 1, &E_GL_NV_ray_tracing);
             symbolTable.setFunctionExtensions("reportIntersectionEXT", 1, &E_GL_EXT_ray_tracing);
@@ -8566,6 +8797,7 @@
             BuiltInVariable("gl_IncomingRayFlagsNV",     EbvIncomingRayFlags,   symbolTable);
             BuiltInVariable("gl_IncomingRayFlagsEXT",    EbvIncomingRayFlags,   symbolTable);
             BuiltInVariable("gl_DeviceIndex",            EbvDeviceIndex,        symbolTable);
+            BuiltInVariable("gl_CurrentRayTimeNV",       EbvCurrentRayTimeNV,   symbolTable);
 
             // GL_ARB_shader_ballot
             symbolTable.setVariableExtensions("gl_SubGroupSizeARB",       1, &E_GL_ARB_shader_ballot);
@@ -8990,6 +9222,18 @@
     symbolTable.relateToOperator("clockRealtimeEXT",     EOpReadClockDeviceKHR);
     symbolTable.relateToOperator("clockRealtime2x32EXT", EOpReadClockDeviceKHR);
 
+    if (profile != EEsProfile && version == 450) {
+        symbolTable.relateToOperator("atomicCounterAddARB",      EOpAtomicCounterAdd);
+        symbolTable.relateToOperator("atomicCounterSubtractARB", EOpAtomicCounterSubtract);
+        symbolTable.relateToOperator("atomicCounterMinARB",      EOpAtomicCounterMin);
+        symbolTable.relateToOperator("atomicCounterMaxARB",      EOpAtomicCounterMax);
+        symbolTable.relateToOperator("atomicCounterAndARB",      EOpAtomicCounterAnd);
+        symbolTable.relateToOperator("atomicCounterOrARB",       EOpAtomicCounterOr);
+        symbolTable.relateToOperator("atomicCounterXorARB",      EOpAtomicCounterXor);
+        symbolTable.relateToOperator("atomicCounterExchangeARB", EOpAtomicCounterExchange);
+        symbolTable.relateToOperator("atomicCounterCompSwapARB", EOpAtomicCounterCompSwap);
+    }
+
     if (profile != EEsProfile && version >= 460) {
         symbolTable.relateToOperator("atomicCounterAdd",      EOpAtomicCounterAdd);
         symbolTable.relateToOperator("atomicCounterSubtract", EOpAtomicCounterSubtract);
@@ -9397,6 +9641,7 @@
     case EShLangMiss:
         if (profile != EEsProfile && version >= 460) {
             symbolTable.relateToOperator("traceNV", EOpTraceNV);
+            symbolTable.relateToOperator("traceRayMotionNV", EOpTraceRayMotionNV);
             symbolTable.relateToOperator("traceRayEXT", EOpTraceKHR);
             symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV);
             symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallableKHR);
diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp
index d1123d4..1283f44 100644
--- a/glslang/MachineIndependent/Intermediate.cpp
+++ b/glslang/MachineIndependent/Intermediate.cpp
@@ -416,20 +416,24 @@
     // TODO: but, did this bypass constant folding?
     //
     switch (op) {
-    case EOpConstructInt8:
-    case EOpConstructUint8:
-    case EOpConstructInt16:
-    case EOpConstructUint16:
-    case EOpConstructInt:
-    case EOpConstructUint:
-    case EOpConstructInt64:
-    case EOpConstructUint64:
-    case EOpConstructBool:
-    case EOpConstructFloat:
-    case EOpConstructDouble:
-    case EOpConstructFloat16:
-        return child;
-    default: break; // some compilers want this
+        case EOpConstructInt8:
+        case EOpConstructUint8:
+        case EOpConstructInt16:
+        case EOpConstructUint16:
+        case EOpConstructInt:
+        case EOpConstructUint:
+        case EOpConstructInt64:
+        case EOpConstructUint64:
+        case EOpConstructBool:
+        case EOpConstructFloat:
+        case EOpConstructDouble:
+        case EOpConstructFloat16: {
+            TIntermUnary* unary_node = child->getAsUnaryNode();
+            if (unary_node != nullptr)
+                unary_node->updatePrecision();
+            return child;
+        }
+        default: break; // some compilers want this
     }
 
     //
@@ -1739,7 +1743,7 @@
         case EbtUint:
             switch (from) {
             case EbtInt:
-                return version >= 400 || getSource() == EShSourceHlsl;
+                return version >= 400 || getSource() == EShSourceHlsl || IsRequestedExtension(E_GL_ARB_gpu_shader5);
             case EbtBool:
                 return getSource() == EShSourceHlsl;
             case EbtInt16:
@@ -2676,7 +2680,11 @@
 // 'swizzleOkay' says whether or not it is okay to consider a swizzle
 // a valid part of the dereference chain.
 //
-const TIntermTyped* TIntermediate::findLValueBase(const TIntermTyped* node, bool swizzleOkay)
+// 'BufferReferenceOk' says if type is buffer_reference, the routine stop to find the most left node.
+//
+//
+
+const TIntermTyped* TIntermediate::findLValueBase(const TIntermTyped* node, bool swizzleOkay , bool bufferReferenceOk)
 {
     do {
         const TIntermBinary* binary = node->getAsBinaryNode();
@@ -2694,6 +2702,8 @@
                 return nullptr;
         }
         node = node->getAsBinaryNode()->getLeft();
+        if (bufferReferenceOk && node->isReference())
+            return node;
     } while (true);
 }
 
@@ -3772,6 +3782,28 @@
 
 // Propagate precision qualifiers *up* from children to parent, and then
 // back *down* again to the children's subtrees.
+void TIntermAggregate::updatePrecision()
+{
+    if (getBasicType() == EbtInt || getBasicType() == EbtUint ||
+        getBasicType() == EbtFloat || getBasicType() == EbtFloat16) {
+        TPrecisionQualifier maxPrecision = EpqNone;
+        TIntermSequence operands = getSequence();
+        for (unsigned int i = 0; i < operands.size(); ++i) {
+            TIntermTyped* typedNode = operands[i]->getAsTyped();
+            assert(typedNode);
+            maxPrecision = std::max(maxPrecision, typedNode->getQualifier().precision);
+        }
+        getQualifier().precision = maxPrecision;
+        for (unsigned int i = 0; i < operands.size(); ++i) {
+          TIntermTyped* typedNode = operands[i]->getAsTyped();
+          assert(typedNode);
+          typedNode->propagatePrecision(maxPrecision);
+        }
+    }
+}
+
+// Propagate precision qualifiers *up* from children to parent, and then
+// back *down* again to the children's subtrees.
 void TIntermBinary::updatePrecision()
 {
      if (getBasicType() == EbtInt || getBasicType() == EbtUint ||
diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp
index 02cca40..1da50d6 100644
--- a/glslang/MachineIndependent/ParseContextBase.cpp
+++ b/glslang/MachineIndependent/ParseContextBase.cpp
@@ -622,6 +622,19 @@
     globalUniformBlock->getWritableType().getQualifier().layoutBinding = globalUniformBinding;
     globalUniformBlock->getWritableType().getQualifier().layoutSet = globalUniformSet;
 
+    // Check for declarations of this default uniform that already exist due to other compilation units.
+    TSymbol* symbol = symbolTable.find(memberName);
+    if (symbol) {
+        if (memberType != symbol->getType()) {
+            TString err;
+            err += "\"" + memberType.getCompleteString() + "\"";
+            err += " versus ";
+            err += "\"" + symbol->getType().getCompleteString() + "\"";
+            error(loc, "Types must match:", memberType.getFieldName().c_str(), err.c_str());
+        }
+        return;
+    }
+
     // Add the requested member as a member to the global block.
     TType* type = new TType;
     type->shallowCopy(memberType);
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index bc2a38a..7f2f171 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -327,6 +327,16 @@
     block.getQualifier().layoutMatrix = ElmRowMajor;
 }
 
+void TParseContext::setInvariant(const TSourceLoc& loc, const char* builtin) {
+    TSymbol* symbol = symbolTable.find(builtin);
+    if (symbol && symbol->getType().getQualifier().isPipeOutput()) {
+        if (intermediate.inIoAccessed(builtin))
+            warn(loc, "changing qualification after use", "invariant", builtin);
+        TSymbol* csymbol = symbolTable.copyUp(symbol);
+        csymbol->getWritableType().getQualifier().invariant = true;
+    }
+}
+
 void TParseContext::handlePragma(const TSourceLoc& loc, const TVector<TString>& tokens)
 {
 #ifndef GLSLANG_WEB
@@ -404,8 +414,33 @@
         intermediate.setUseVariablePointers();
     } else if (tokens[0].compare("once") == 0) {
         warn(loc, "not implemented", "#pragma once", "");
-    } else if (tokens[0].compare("glslang_binary_double_output") == 0)
+    } else if (tokens[0].compare("glslang_binary_double_output") == 0) {
         intermediate.setBinaryDoubleOutput();
+    } else if (spvVersion.spv > 0 && tokens[0].compare("STDGL") == 0 &&
+               tokens[1].compare("invariant") == 0 && tokens[3].compare("all") == 0) {
+        intermediate.setInvariantAll();
+        // Set all builtin out variables invariant if declared
+        setInvariant(loc, "gl_Position");
+        setInvariant(loc, "gl_PointSize");
+        setInvariant(loc, "gl_ClipDistance");
+        setInvariant(loc, "gl_CullDistance");
+        setInvariant(loc, "gl_TessLevelOuter");
+        setInvariant(loc, "gl_TessLevelInner");
+        setInvariant(loc, "gl_PrimitiveID");
+        setInvariant(loc, "gl_Layer");
+        setInvariant(loc, "gl_ViewportIndex");
+        setInvariant(loc, "gl_FragDepth");
+        setInvariant(loc, "gl_SampleMask");
+        setInvariant(loc, "gl_ClipVertex");
+        setInvariant(loc, "gl_FrontColor");
+        setInvariant(loc, "gl_BackColor");
+        setInvariant(loc, "gl_FrontSecondaryColor");
+        setInvariant(loc, "gl_BackSecondaryColor");
+        setInvariant(loc, "gl_TexCoord");
+        setInvariant(loc, "gl_FogFragCoord");
+        setInvariant(loc, "gl_FragColor");
+        setInvariant(loc, "gl_FragData");
+    }
 #endif
 }
 
@@ -1092,12 +1127,31 @@
     TSymbol* symbol = symbolTable.find(function.getMangledName(), &builtIn);
     if (symbol && symbol->getAsFunction() && builtIn)
         requireProfile(loc, ~EEsProfile, "redefinition of built-in function");
+#ifndef GLSLANG_WEB
+    // Check the validity of using spirv_literal qualifier
+    for (int i = 0; i < function.getParamCount(); ++i) {
+        if (function[i].type->getQualifier().isSpirvLiteral() && function.getBuiltInOp() != EOpSpirvInst)
+            error(loc, "'spirv_literal' can only be used on functions defined with 'spirv_instruction' for argument",
+                  function.getName().c_str(), "%d", i + 1);
+    }
+
+    // For function declaration with SPIR-V instruction qualifier, always ignore the built-in function and
+    // respect this redeclared one.
+    if (symbol && builtIn && function.getBuiltInOp() == EOpSpirvInst)
+        symbol = nullptr;
+#endif
     const TFunction* prevDec = symbol ? symbol->getAsFunction() : 0;
     if (prevDec) {
         if (prevDec->isPrototyped() && prototype)
             profileRequires(loc, EEsProfile, 300, nullptr, "multiple prototypes for same function");
         if (prevDec->getType() != function.getType())
             error(loc, "overloaded functions must have the same return type", function.getName().c_str(), "");
+#ifndef GLSLANG_WEB
+        if (prevDec->getSpirvInstruction() != function.getSpirvInstruction()) {
+            error(loc, "overloaded functions must have the same qualifiers", function.getName().c_str(),
+                  "spirv_instruction");
+        }
+#endif
         for (int i = 0; i < prevDec->getParamCount(); ++i) {
             if ((*prevDec)[i].type->getQualifier().storage != function[i].type->getQualifier().storage)
                 error(loc, "overloaded functions must have the same parameter storage qualifiers for argument", function[i].type->getStorageQualifierString(), "%d", i+1);
@@ -1299,6 +1353,15 @@
                         if (lValueErrorCheck(arguments->getLoc(), "assign", arg->getAsTyped()))
                             error(arguments->getLoc(), "Non-L-value cannot be passed for 'out' or 'inout' parameters.", "out", "");
                     }
+#ifndef GLSLANG_WEB
+                    if (formalQualifier.isSpirvLiteral()) {
+                        if (!arg->getAsTyped()->getQualifier().isFrontEndConstant()) {
+                            error(arguments->getLoc(),
+                                  "Non front-end constant expressions cannot be passed for 'spirv_literal' parameters.",
+                                  "spirv_literal", "");
+                        }
+                    }
+#endif
                     const TType& argType = arg->getAsTyped()->getType();
                     const TQualifier& argQualifier = argType.getQualifier();
                     if (argQualifier.isMemory() && (argType.containsOpaque() || argType.isReference())) {
@@ -1353,6 +1416,11 @@
             if (builtIn && fnCandidate->getBuiltInOp() != EOpNull) {
                 // A function call mapped to a built-in operation.
                 result = handleBuiltInFunctionCall(loc, arguments, *fnCandidate);
+#ifndef GLSLANG_WEB
+            } else if (fnCandidate->getBuiltInOp() == EOpSpirvInst) {
+                // When SPIR-V instruction qualifier is specified, the function call is still mapped to a built-in operation.
+                result = handleBuiltInFunctionCall(loc, arguments, *fnCandidate);
+#endif
             } else {
                 // This is a function call not mapped to built-in operator.
                 // It could still be a built-in function, but only if PureOperatorBuiltins == false.
@@ -1430,6 +1498,35 @@
     } else if (result->getAsOperator())
         builtInOpCheck(loc, function, *result->getAsOperator());
 
+#ifndef GLSLANG_WEB
+    // Special handling for function call with SPIR-V instruction qualifier specified
+    if (function.getBuiltInOp() == EOpSpirvInst) {
+        if (auto agg = result->getAsAggregate()) {
+            // Propogate spirv_by_reference/spirv_literal from parameters to arguments
+            auto& sequence = agg->getSequence();
+            for (unsigned i = 0; i < sequence.size(); ++i) {
+                if (function[i].type->getQualifier().isSpirvByReference())
+                    sequence[i]->getAsTyped()->getQualifier().setSpirvByReference();
+                if (function[i].type->getQualifier().isSpirvLiteral())
+                    sequence[i]->getAsTyped()->getQualifier().setSpirvLiteral();
+            }
+
+            // Attach the function call to SPIR-V intruction
+            agg->setSpirvInstruction(function.getSpirvInstruction());
+        } else if (auto unaryNode = result->getAsUnaryNode()) {
+            // Propogate spirv_by_reference/spirv_literal from parameters to arguments
+            if (function[0].type->getQualifier().isSpirvByReference())
+                unaryNode->getOperand()->getQualifier().setSpirvByReference();
+            if (function[0].type->getQualifier().isSpirvLiteral())
+                unaryNode->getOperand()->getQualifier().setSpirvLiteral();
+
+            // Attach the function call to SPIR-V intruction
+            unaryNode->setSpirvInstruction(function.getSpirvInstruction());
+        } else
+            assert(0);
+    }
+#endif
+
     return result;
 }
 
@@ -2191,6 +2288,16 @@
                               "[gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset]");
                 }
             }
+
+            if (callNode.getOp() == EOpTextureOffset) {
+                TSampler s = arg0->getType().getSampler();
+                if (s.is2D() && s.isArrayed() && s.isShadow()) {
+                    if (isEsProfile())
+                        error(loc, "TextureOffset does not support sampler2DArrayShadow : ", "sampler", "ES Profile");
+                    else if (version <= 420)
+                        error(loc, "TextureOffset does not support sampler2DArrayShadow : ", "sampler", "version <= 420");
+                }
+            }
         }
 
         break;
@@ -2201,6 +2308,10 @@
         if (!(*argp)[10]->getAsConstantUnion())
             error(loc, "argument must be compile-time constant", "payload number", "a");
         break;
+    case EOpTraceRayMotionNV:
+        if (!(*argp)[11]->getAsConstantUnion())
+            error(loc, "argument must be compile-time constant", "payload number", "a");
+        break;
     case EOpTraceKHR:
         if (!(*argp)[10]->getAsConstantUnion())
             error(loc, "argument must be compile-time constant", "payload number", "a");
@@ -2269,18 +2380,23 @@
                 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) ||
-                (fnCandidate.getName().compare(0, 16, "imageAtomicStore") == 0) ||
-                (fnCandidate.getName().compare(0, 19, "imageAtomicExchange") == 0));
-            if (imageType.getSampler().type == EbtFloat && isImageAtomicOnFloatAllowed &&
-                (fnCandidate.getName().compare(0, 19, "imageAtomicExchange") != 0)) // imageAtomicExchange doesn't require GL_EXT_shader_atomic_float
+        } else if (imageType.getSampler().type == EbtFloat) {
+            if (fnCandidate.getName().compare(0, 19, "imageAtomicExchange") == 0) {
+                // imageAtomicExchange doesn't require an extension
+            } else if ((fnCandidate.getName().compare(0, 14, "imageAtomicAdd") == 0) ||
+                       (fnCandidate.getName().compare(0, 15, "imageAtomicLoad") == 0) ||
+                       (fnCandidate.getName().compare(0, 16, "imageAtomicStore") == 0)) {
                 requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float, fnCandidate.getName().c_str());
-            if (!isImageAtomicOnFloatAllowed)
+            } else if ((fnCandidate.getName().compare(0, 14, "imageAtomicMin") == 0) ||
+                       (fnCandidate.getName().compare(0, 14, "imageAtomicMax") == 0)) {
+                requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float2, fnCandidate.getName().c_str());
+            } else {
                 error(loc, "only supported on integer images", fnCandidate.getName().c_str(), "");
-            else if (imageType.getQualifier().getFormat() != ElfR32f && isEsProfile())
+            }
+            if (imageType.getQualifier().getFormat() != ElfR32f && isEsProfile())
                 error(loc, "only supported on image with format r32f", fnCandidate.getName().c_str(), "");
+        } else {
+            error(loc, "not supported on this image type", fnCandidate.getName().c_str(), "");
         }
 
         const size_t maxArgs = imageType.getSampler().isMultiSample() ? 5 : 4;
@@ -2309,17 +2425,37 @@
             memorySemanticsCheck(loc, fnCandidate, callNode);
             if ((callNode.getOp() == EOpAtomicAdd || callNode.getOp() == EOpAtomicExchange ||
                 callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpAtomicStore) &&
-                (arg0->getType().isFloatingDomain())) {
+                (arg0->getType().getBasicType() == EbtFloat ||
+                 arg0->getType().getBasicType() == EbtDouble)) {
                 requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float, fnCandidate.getName().c_str());
+            } else if ((callNode.getOp() == EOpAtomicAdd || callNode.getOp() == EOpAtomicExchange ||
+                        callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpAtomicStore ||
+                        callNode.getOp() == EOpAtomicMin || callNode.getOp() == EOpAtomicMax) &&
+                       arg0->getType().isFloatingDomain()) {
+                requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float2, fnCandidate.getName().c_str());
             }
         } else if (arg0->getType().getBasicType() == EbtInt64 || arg0->getType().getBasicType() == EbtUint64) {
             const char* const extensions[2] = { E_GL_NV_shader_atomic_int64,
                                                 E_GL_EXT_shader_atomic_int64 };
             requireExtensions(loc, 2, extensions, fnCandidate.getName().c_str());
         } else if ((callNode.getOp() == EOpAtomicAdd || callNode.getOp() == EOpAtomicExchange) &&
-                   (arg0->getType().isFloatingDomain())) {
+                   (arg0->getType().getBasicType() == EbtFloat ||
+                    arg0->getType().getBasicType() == EbtDouble)) {
             requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float, fnCandidate.getName().c_str());
+        } else if ((callNode.getOp() == EOpAtomicAdd || callNode.getOp() == EOpAtomicExchange ||
+                    callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpAtomicStore ||
+                    callNode.getOp() == EOpAtomicMin || callNode.getOp() == EOpAtomicMax) &&
+                   arg0->getType().isFloatingDomain()) {
+            requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float2, fnCandidate.getName().c_str());
         }
+
+        const TIntermTyped* base = TIntermediate::findLValueBase(arg0, true , true);
+        const TType* refType = (base->getType().isReference()) ? base->getType().getReferentType() : nullptr;
+        const TQualifier& qualifier = (refType != nullptr) ? refType->getQualifier() : base->getType().getQualifier();
+        if (qualifier.storage != EvqShared && qualifier.storage != EvqBuffer)
+            error(loc,"Atomic memory function can only be used for shader storage block member or shared variable.",
+            fnCandidate.getName().c_str(), "");
+
         break;
     }
 
@@ -2893,11 +3029,14 @@
 
 //
 // Both test, and if necessary spit out an error, to see if the node is really
-// an integer.
+// a 32-bit integer or can implicitly convert to one.
 //
 void TParseContext::integerCheck(const TIntermTyped* node, const char* token)
 {
-    if ((node->getBasicType() == EbtInt || node->getBasicType() == EbtUint) && node->isScalar())
+    auto from_type = node->getBasicType();
+    if ((from_type == EbtInt || from_type == EbtUint ||
+         intermediate.canImplicitlyPromote(from_type, EbtInt, EOpNull) ||
+         intermediate.canImplicitlyPromote(from_type, EbtUint, EOpNull)) && node->isScalar())
         return;
 
     error(node->getLoc(), "scalar integer expression required", token, "");
@@ -2921,7 +3060,8 @@
     // "Identifiers starting with "gl_" are reserved for use by OpenGL, and may not be
     // declared in a shader; this results in a compile-time error."
     if (! symbolTable.atBuiltInLevel()) {
-        if (builtInName(identifier))
+        if (builtInName(identifier) && !extensionTurnedOn(E_GL_EXT_spirv_intrinsics))
+            // The extension GL_EXT_spirv_intrinsics allows us to declare identifiers starting with "gl_".
             error(loc, "identifiers starting with \"gl_\" are reserved", identifier.c_str(), "");
 
         // "__" are not supposed to be an error.  ES 300 (and desktop) added the clarification:
@@ -2929,7 +3069,8 @@
         // reserved; using such a name does not itself result in an error, but may result
         // in undefined behavior."
         // however, before that, ES tests required an error.
-        if (identifier.find("__") != TString::npos) {
+        if (identifier.find("__") != TString::npos && !extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) {
+            // The extension GL_EXT_spirv_intrinsics allows us to declare identifiers starting with "__".
             if (isEsProfile() && version < 300)
                 error(loc, "identifiers containing consecutive underscores (\"__\") are reserved, and an error if version < 300", identifier.c_str(), "");
             else
@@ -2950,14 +3091,16 @@
     // single underscore) are also reserved, and defining such a name results in a
     // compile-time error."
     // however, before that, ES tests required an error.
-    if (strncmp(identifier, "GL_", 3) == 0)
+    if (strncmp(identifier, "GL_", 3) == 0 && !extensionTurnedOn(E_GL_EXT_spirv_intrinsics))
+        // The extension GL_EXT_spirv_intrinsics allows us to declare macros prefixed with "GL_".
         ppError(loc, "names beginning with \"GL_\" can't be (un)defined:", op,  identifier);
     else if (strncmp(identifier, "defined", 8) == 0)
         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) {
+    else if (strstr(identifier, "__") != 0 && !extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) {
+        // The extension GL_EXT_spirv_intrinsics allows us to declare macros prefixed with "__".
         if (isEsProfile() && version >= 300 &&
             (strcmp(identifier, "__LINE__") == 0 ||
              strcmp(identifier, "__FILE__") == 0 ||
@@ -3105,6 +3248,7 @@
     bool matrixInMatrix = false;
     bool arrayArg = false;
     bool floatArgument = false;
+    bool intArgument = false;
     for (int arg = 0; arg < function.getParamCount(); ++arg) {
         if (function[arg].type->isArray()) {
             if (function[arg].type->isUnsizedArray()) {
@@ -3135,6 +3279,8 @@
             specConstType = true;
         if (function[arg].type->isFloatingDomain())
             floatArgument = true;
+        if (function[arg].type->isIntegerDomain())
+            intArgument = true;
         if (type.isStruct()) {
             if (function[arg].type->contains16BitFloat()) {
                 requireFloat16Arithmetic(loc, "constructor", "can't construct structure containing 16-bit type");
@@ -3240,6 +3386,15 @@
                 // and aren't making an array.
                 makeSpecConst = ! floatArgument && ! type.isArray();
                 break;
+
+            case EOpConstructVec2:
+            case EOpConstructVec3:
+            case EOpConstructVec4:
+                // This was the list of valid ones, if they aren't converting from int
+                // and aren't making an array.
+                makeSpecConst = ! intArgument && !type.isArray();
+                break;
+
             default:
                 // anything else wasn't white-listed in the spec as a conversion
                 makeSpecConst = false;
@@ -3546,6 +3701,8 @@
         profileRequires(loc, ENoProfile, 130, nullptr, "out for stage outputs");
         profileRequires(loc, EEsProfile, 300, nullptr, "out for stage outputs");
         qualifier.storage = EvqVaryingOut;
+        if (intermediate.isInvariantAll())
+            qualifier.invariant = true;
         break;
     case EvqInOut:
         qualifier.storage = EvqVaryingIn;
@@ -3562,7 +3719,7 @@
         if (blockName == nullptr &&
             qualifier.layoutPacking == ElpStd430)
         {
-            error(loc, "it is invalid to declare std430 qualifier on uniform", "", "");
+            requireExtensions(loc, 1, &E_GL_EXT_scalar_block_layout, "default std430 layout for uniform");
         }
         break;
     default:
@@ -3572,6 +3729,14 @@
     if (!nonuniformOkay && qualifier.isNonUniform())
         error(loc, "for non-parameter, can only apply to 'in' or no storage qualifier", "nonuniformEXT", "");
 
+#ifndef GLSLANG_WEB
+    if (qualifier.isSpirvByReference())
+        error(loc, "can only apply to parameter", "spirv_by_reference", "");
+
+    if (qualifier.isSpirvLiteral())
+        error(loc, "can only apply to parameter", "spirv_literal", "");
+#endif
+
     // Storage qualifier isn't ready for memberQualifierCheck, we should skip invariantCheck for it.
     if (!isMemberCheck || structNestingLevel > 0)
         invariantCheck(loc, qualifier);
@@ -3833,6 +3998,41 @@
     MERGE_SINGLETON(nonUniform);
 #endif
 
+#ifndef GLSLANG_WEB
+    // SPIR-V storage class qualifier (GL_EXT_spirv_intrinsics)
+    dst.spirvStorageClass = src.spirvStorageClass;
+
+    // SPIR-V decorate qualifiers (GL_EXT_spirv_intrinsics)
+    if (src.hasSprivDecorate()) {
+        if (dst.hasSprivDecorate()) {
+            const TSpirvDecorate& srcSpirvDecorate = src.getSpirvDecorate();
+            TSpirvDecorate& dstSpirvDecorate = dst.getSpirvDecorate();
+            for (auto& decorate : srcSpirvDecorate.decorates) {
+                if (dstSpirvDecorate.decorates.find(decorate.first) != dstSpirvDecorate.decorates.end())
+                    error(loc, "too many SPIR-V decorate qualifiers", "spirv_decorate", "(decoration=%u)", decorate.first);
+                else
+                    dstSpirvDecorate.decorates.insert(decorate);
+            }
+
+            for (auto& decorateId : srcSpirvDecorate.decorateIds) {
+                if (dstSpirvDecorate.decorateIds.find(decorateId.first) != dstSpirvDecorate.decorateIds.end())
+                    error(loc, "too many SPIR-V decorate qualifiers", "spirv_decorate_id", "(decoration=%u)", decorateId.first);
+                else
+                    dstSpirvDecorate.decorateIds.insert(decorateId);
+            }
+
+            for (auto& decorateString : srcSpirvDecorate.decorateStrings) {
+                if (dstSpirvDecorate.decorates.find(decorateString.first) != dstSpirvDecorate.decorates.end())
+                    error(loc, "too many SPIR-V decorate qualifiers", "spirv_decorate_string", "(decoration=%u)", decorateString.first);
+                else
+                    dstSpirvDecorate.decorates.insert(decorateString);
+            }
+        } else {
+            dst.spirvDecorate = src.spirvDecorate;
+        }
+    }
+#endif
+
     if (repeated)
         error(loc, "replicated qualifiers", "", "");
 }
@@ -4796,6 +4996,17 @@
     }
     if (qualifier.isNonUniform())
         type.getQualifier().nonUniform = qualifier.nonUniform;
+#ifndef GLSLANG_WEB
+    if (qualifier.isSpirvByReference())
+        type.getQualifier().setSpirvByReference();
+    if (qualifier.isSpirvLiteral()) {
+        if (type.getBasicType() == EbtFloat || type.getBasicType() == EbtInt || type.getBasicType() == EbtUint ||
+            type.getBasicType() == EbtBool)
+            type.getQualifier().setSpirvLiteral();
+        else
+            error(loc, "cannot use spirv_literal qualifier", type.getBasicTypeString().c_str(), "");
+#endif
+    }
 
     paramCheckFixStorage(loc, qualifier.storage, type);
 }
@@ -5602,14 +5813,7 @@
         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
+            publicType.qualifier.layoutBufferReferenceAlign = IntLog2(value);
         if (nonLiteral)
             error(loc, "needs a literal integer", "buffer_reference_align", "");
         return;
@@ -5870,6 +6074,9 @@
         case EvqVaryingIn:
         case EvqVaryingOut:
             if (!type.getQualifier().isTaskMemory() &&
+#ifndef GLSLANG_WEB
+                !type.getQualifier().hasSprivDecorate() &&
+#endif
                 (type.getBasicType() != EbtBlock ||
                  (!(*type.getStruct())[0].type->getQualifier().hasLocation() &&
                    (*type.getStruct())[0].type->getQualifier().builtIn == EbvNone)))
@@ -5931,6 +6138,11 @@
 // Do layout error checking with respect to a type.
 void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type)
 {
+#ifndef GLSLANG_WEB
+    if (extensionTurnedOn(E_GL_EXT_spirv_intrinsics))
+        return; // Skip any check if GL_EXT_spirv_intrinsics is turned on
+#endif
+
     const TQualifier& qualifier = type.getQualifier();
 
     // first, intra-layout qualifier-only error checking
@@ -6284,6 +6496,8 @@
             error(loc, "can only be used with a uniform", "push_constant", "");
         if (qualifier.hasSet())
             error(loc, "cannot be used with push_constant", "set", "");
+        if (qualifier.hasBinding())
+            error(loc, "cannot be used with push_constant", "binding", "");
     }
     if (qualifier.hasBufferReference()) {
         if (qualifier.storage != EvqBuffer)
@@ -6431,8 +6645,11 @@
                                 extensionTurnedOn(E_GL_EXT_shader_explicit_arithmetic_types_float64);
 
     if (isEsProfile())
-        function = (extensionTurnedOn(E_GL_EXT_shader_implicit_conversions) && version >= 310) ?
-                    findFunction120(loc, call, builtIn) : findFunctionExact(loc, call, builtIn);
+        function = (explicitTypesEnabled && version >= 310)
+                   ? findFunctionExplicitTypes(loc, call, builtIn)
+                   : ((extensionTurnedOn(E_GL_EXT_shader_implicit_conversions) && version >= 310)
+                      ? findFunction120(loc, call, builtIn)
+                      : findFunctionExact(loc, call, builtIn));
     else if (version < 120)
         function = findFunctionExact(loc, call, builtIn);
     else if (version < 400)
@@ -7479,7 +7696,13 @@
             return nullptr;
     }
 
-    return intermediate.setAggregateOperator(aggrNode, op, type, loc);
+    TIntermTyped *ret_node = intermediate.setAggregateOperator(aggrNode, op, type, loc);
+
+    TIntermAggregate *agg_node = ret_node->getAsAggregate();
+    if (agg_node && (agg_node->isVector() || agg_node->isArray() || agg_node->isMatrix()))
+        agg_node->updatePrecision();
+
+    return ret_node;
 }
 
 // Function for constructor implementation. Calls addUnaryMath with appropriate EOp value
@@ -7934,6 +8157,10 @@
             memberQualifier.perViewNV = currentBlockQualifier.perViewNV;
         if (currentBlockQualifier.perTaskNV)
             memberQualifier.perTaskNV = currentBlockQualifier.perTaskNV;
+        if (memberQualifier.storage == EvqSpirvStorageClass)
+            error(memberLoc, "member cannot have a spirv_storage_class qualifier", memberType.getFieldName().c_str(), "");
+        if (memberQualifier.hasSprivDecorate() && !memberQualifier.getSpirvDecorate().decorateIds.empty())
+            error(memberLoc, "member cannot have a spirv_decorate_id qualifier", memberType.getFieldName().c_str(), "");
 #endif
         if ((currentBlockQualifier.storage == EvqUniform || currentBlockQualifier.storage == EvqBuffer) && (memberQualifier.isInterpolation() || memberQualifier.isAuxiliary()))
             error(memberLoc, "member of uniform or buffer block cannot have an auxiliary or interpolation qualifier", memberType.getFieldName().c_str(), "");
@@ -9021,11 +9248,14 @@
         // "it is an error to have no statement between a label and the end of the switch statement."
         // The specifications were updated to remove this (being ill-defined what a "statement" was),
         // so, this became a warning.  However, 3.0 tests still check for the error.
-        if (isEsProfile() && version <= 300 && ! relaxedErrors())
+        if (isEsProfile() && (version <= 300 || version >= 320) && ! relaxedErrors())
+            error(loc, "last case/default label not followed by statements", "switch", "");
+        else if (!isEsProfile() && (version <= 430 || version >= 460))
             error(loc, "last case/default label not followed by statements", "switch", "");
         else
             warn(loc, "last case/default label not followed by statements", "switch", "");
 
+
         // emulate a break for error recovery
         lastStatements = intermediate.makeAggregate(intermediate.addBranch(EOpBreak, loc));
         lastStatements->setOperator(EOpSequence);
diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h
index 6f00621..885fd90 100644
--- a/glslang/MachineIndependent/ParseHelper.h
+++ b/glslang/MachineIndependent/ParseHelper.h
@@ -241,6 +241,7 @@
     // override this to set the language-specific name
     virtual const char* getAtomicCounterBlockName() const { return ""; }
     virtual void setAtomicCounterBlockDefaults(TType&) const {}
+    virtual void setInvariant(const TSourceLoc&, const char*) {}
     virtual void finalizeAtomicCounterBlockLayout(TVariable&) {}
     bool isAtomicCounterBlock(const TSymbol& symbol) {
         const TVariable* var = symbol.getAsVariable();
@@ -470,6 +471,21 @@
     void handleSwitchAttributes(const TAttributes& attributes, TIntermNode*);
     // Determine loop control from attributes
     void handleLoopAttributes(const TAttributes& attributes, TIntermNode*);
+    // Function attributes
+    void handleFunctionAttributes(const TSourceLoc&, const TAttributes&);
+
+    // GL_EXT_spirv_intrinsics
+    TSpirvRequirement* makeSpirvRequirement(const TSourceLoc& loc, const TString& name,
+                                            const TIntermAggregate* extensions, const TIntermAggregate* capabilities);
+    TSpirvRequirement* mergeSpirvRequirements(const TSourceLoc& loc, TSpirvRequirement* spirvReq1,
+                                                TSpirvRequirement* spirvReq2);
+    TSpirvTypeParameters* makeSpirvTypeParameters(const TSourceLoc& loc, const TIntermConstantUnion* constant);
+    TSpirvTypeParameters* mergeSpirvTypeParameters(TSpirvTypeParameters* spirvTypeParams1,
+                                                   TSpirvTypeParameters* spirvTypeParams2);
+    TSpirvInstruction* makeSpirvInstruction(const TSourceLoc& loc, const TString& name, const TString& value);
+    TSpirvInstruction* makeSpirvInstruction(const TSourceLoc& loc, const TString& name, int value);
+    TSpirvInstruction* mergeSpirvInstruction(const TSourceLoc& loc, TSpirvInstruction* spirvInst1,
+                                             TSpirvInstruction* spirvInst2);
 #endif
 
     void checkAndResizeMeshViewDim(const TSourceLoc&, TType&, bool isBlockMember);
@@ -495,6 +511,7 @@
     virtual const char* getAtomicCounterBlockName() const override;
     virtual void finalizeAtomicCounterBlockLayout(TVariable&) override;
     virtual void setAtomicCounterBlockDefaults(TType& block) const override;
+    virtual void setInvariant(const TSourceLoc& loc, const char* builtin) override;
 
 public:
     //
diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp
index 78c8a36..c387aed 100644
--- a/glslang/MachineIndependent/Scan.cpp
+++ b/glslang/MachineIndependent/Scan.cpp
@@ -586,6 +586,18 @@
     (*KeywordMap)["f64mat4x2"] =               F64MAT4X2;
     (*KeywordMap)["f64mat4x3"] =               F64MAT4X3;
     (*KeywordMap)["f64mat4x4"] =               F64MAT4X4;
+
+    // GL_EXT_spirv_intrinsics
+    (*KeywordMap)["spirv_instruction"] =       SPIRV_INSTRUCTION;
+    (*KeywordMap)["spirv_execution_mode"] =    SPIRV_EXECUTION_MODE;
+    (*KeywordMap)["spirv_execution_mode_id"] = SPIRV_EXECUTION_MODE_ID;
+    (*KeywordMap)["spirv_decorate"] =          SPIRV_DECORATE;
+    (*KeywordMap)["spirv_decorate_id"] =       SPIRV_DECORATE_ID;
+    (*KeywordMap)["spirv_decorate_string"] =   SPIRV_DECORATE_STRING;
+    (*KeywordMap)["spirv_type"] =              SPIRV_TYPE;
+    (*KeywordMap)["spirv_storage_class"] =     SPIRV_STORAGE_CLASS;
+    (*KeywordMap)["spirv_by_reference"] =      SPIRV_BY_REFERENCE;
+    (*KeywordMap)["spirv_literal"] =           SPIRV_LITERAL;
 #endif
 
     (*KeywordMap)["sampler2D"] =               SAMPLER2D;
@@ -1747,6 +1759,21 @@
             return keyword;
         else
             return identifierOrType();
+
+    case SPIRV_INSTRUCTION:
+    case SPIRV_EXECUTION_MODE:
+    case SPIRV_EXECUTION_MODE_ID:
+    case SPIRV_DECORATE:
+    case SPIRV_DECORATE_ID:
+    case SPIRV_DECORATE_STRING:
+    case SPIRV_TYPE:
+    case SPIRV_STORAGE_CLASS:
+    case SPIRV_BY_REFERENCE:
+    case SPIRV_LITERAL:
+        if (parseContext.symbolTable.atBuiltInLevel() ||
+            parseContext.extensionTurnedOn(E_GL_EXT_spirv_intrinsics))
+            return keyword;
+        return identifierOrType();
 #endif
 
     default:
diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp
index d02eae6..a2dd71c 100644
--- a/glslang/MachineIndependent/ShaderLang.cpp
+++ b/glslang/MachineIndependent/ShaderLang.cpp
@@ -1343,7 +1343,6 @@
 
     glslang::GetGlobalLock();
     ++NumberOfClients;
-    glslang::ReleaseGlobalLock();
 
     if (PerProcessGPA == nullptr)
         PerProcessGPA = new TPoolAllocator();
@@ -1353,6 +1352,7 @@
     glslang::HlslScanContext::fillInKeywordMap();
 #endif
 
+    glslang::ReleaseGlobalLock();
     return 1;
 }
 
@@ -1415,9 +1415,10 @@
     --NumberOfClients;
     assert(NumberOfClients >= 0);
     bool finalize = NumberOfClients == 0;
-    glslang::ReleaseGlobalLock();
-    if (! finalize)
+    if (! finalize) {
+        glslang::ReleaseGlobalLock();
         return 1;
+    }
 
     for (int version = 0; version < VersionCount; ++version) {
         for (int spvVersion = 0; spvVersion < SpvVersionCount; ++spvVersion) {
@@ -1455,6 +1456,7 @@
     glslang::HlslScanContext::deleteKeywordMap();
 #endif
 
+    glslang::ReleaseGlobalLock();
     return 1;
 }
 
diff --git a/glslang/MachineIndependent/SpirvIntrinsics.cpp b/glslang/MachineIndependent/SpirvIntrinsics.cpp
new file mode 100644
index 0000000..6650f7d
--- /dev/null
+++ b/glslang/MachineIndependent/SpirvIntrinsics.cpp
@@ -0,0 +1,350 @@
+//
+// Copyright(C) 2021 Advanced Micro Devices, 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.
+//
+
+#ifndef GLSLANG_WEB
+
+//
+// GL_EXT_spirv_intrinsics
+//
+#include "../Include/intermediate.h"
+#include "../Include/SpirvIntrinsics.h"
+#include "../Include/Types.h"
+#include "ParseHelper.h"
+
+namespace glslang {
+
+//
+// Handle SPIR-V requirements
+//
+TSpirvRequirement* TParseContext::makeSpirvRequirement(const TSourceLoc& loc, const TString& name,
+                                                       const TIntermAggregate* extensions,
+                                                       const TIntermAggregate* capabilities)
+{
+    TSpirvRequirement* spirvReq = new TSpirvRequirement;
+
+    if (name == "extensions") {
+        assert(extensions);
+        for (auto extension : extensions->getSequence()) {
+            assert(extension->getAsConstantUnion());
+            spirvReq->extensions.insert(*extension->getAsConstantUnion()->getConstArray()[0].getSConst());
+        }
+    } else if (name == "capabilities") {
+        assert(capabilities);
+        for (auto capability : capabilities->getSequence()) {
+            assert(capability->getAsConstantUnion());
+            spirvReq->capabilities.insert(capability->getAsConstantUnion()->getConstArray()[0].getIConst());
+        }
+    } else
+        error(loc, "unknow SPIR-V requirement", name.c_str(), "");
+
+    return spirvReq;
+}
+
+TSpirvRequirement* TParseContext::mergeSpirvRequirements(const TSourceLoc& loc, TSpirvRequirement* spirvReq1,
+                                                         TSpirvRequirement* spirvReq2)
+{
+    // Merge the second SPIR-V requirement to the first one
+    if (!spirvReq2->extensions.empty()) {
+        if (spirvReq1->extensions.empty())
+            spirvReq1->extensions = spirvReq2->extensions;
+        else
+            error(loc, "too many SPIR-V requirements", "extensions", "");
+    }
+
+    if (!spirvReq2->capabilities.empty()) {
+        if (spirvReq1->capabilities.empty())
+            spirvReq1->capabilities = spirvReq2->capabilities;
+        else
+            error(loc, "too many SPIR-V requirements", "capabilities", "");
+    }
+
+    return spirvReq1;
+}
+
+void TIntermediate::insertSpirvRequirement(const TSpirvRequirement* spirvReq)
+{
+    if (!spirvRequirement)
+        spirvRequirement = new TSpirvRequirement;
+
+    for (auto extension : spirvReq->extensions)
+        spirvRequirement->extensions.insert(extension);
+
+    for (auto capability : spirvReq->capabilities)
+        spirvRequirement->capabilities.insert(capability);
+}
+
+//
+// Handle SPIR-V execution modes
+//
+void TIntermediate::insertSpirvExecutionMode(int executionMode, const TIntermAggregate* args)
+{
+    if (!spirvExecutionMode)
+        spirvExecutionMode = new TSpirvExecutionMode;
+
+    TVector<const TIntermConstantUnion*> extraOperands;
+    if (args) {
+        for (auto arg : args->getSequence()) {
+            auto extraOperand = arg->getAsConstantUnion();
+            assert(extraOperand != nullptr);
+            extraOperands.push_back(extraOperand);
+        }
+    }
+    spirvExecutionMode->modes[executionMode] = extraOperands;
+}
+
+void TIntermediate::insertSpirvExecutionModeId(int executionMode, const TIntermAggregate* args)
+{
+    if (!spirvExecutionMode)
+        spirvExecutionMode = new TSpirvExecutionMode;
+
+    assert(args);
+    TVector<const TIntermTyped*> extraOperands;
+
+    for (auto arg : args->getSequence()) {
+        auto extraOperand = arg->getAsTyped();
+        assert(extraOperand != nullptr && extraOperand->getQualifier().isConstant());
+        extraOperands.push_back(extraOperand);
+    }
+    spirvExecutionMode->modeIds[executionMode] = extraOperands;
+}
+
+//
+// Handle SPIR-V decorate qualifiers
+//
+void TQualifier::setSpirvDecorate(int decoration, const TIntermAggregate* args)
+{
+    if (!spirvDecorate)
+        spirvDecorate = new TSpirvDecorate;
+
+    TVector<const TIntermConstantUnion*> extraOperands;
+    if (args) {
+        for (auto arg : args->getSequence()) {
+            auto extraOperand = arg->getAsConstantUnion();
+            assert(extraOperand != nullptr);
+            extraOperands.push_back(extraOperand);
+        }
+    }
+    spirvDecorate->decorates[decoration] = extraOperands;
+}
+
+void TQualifier::setSpirvDecorateId(int decoration, const TIntermAggregate* args)
+{
+    if (!spirvDecorate)
+        spirvDecorate = new TSpirvDecorate;
+
+    assert(args);
+    TVector<const TIntermTyped*> extraOperands;
+    for (auto arg : args->getSequence()) {
+        auto extraOperand = arg->getAsTyped();
+        assert(extraOperand != nullptr && extraOperand->getQualifier().isConstant());
+        extraOperands.push_back(extraOperand);
+    }
+    spirvDecorate->decorateIds[decoration] = extraOperands;
+}
+
+void TQualifier::setSpirvDecorateString(int decoration, const TIntermAggregate* args)
+{
+    if (!spirvDecorate)
+        spirvDecorate = new TSpirvDecorate;
+
+    assert(args);
+    TVector<const TIntermConstantUnion*> extraOperands;
+    for (auto arg : args->getSequence()) {
+        auto extraOperand = arg->getAsConstantUnion();
+        assert(extraOperand != nullptr);
+        extraOperands.push_back(extraOperand);
+    }
+    spirvDecorate->decorateStrings[decoration] = extraOperands;
+}
+
+TString TQualifier::getSpirvDecorateQualifierString() const
+{
+    assert(spirvDecorate);
+
+    TString qualifierString;
+
+    const auto appendFloat = [&](float f) { qualifierString.append(std::to_string(f).c_str()); };
+    const auto appendInt = [&](int i) { qualifierString.append(std::to_string(i).c_str()); };
+    const auto appendUint = [&](unsigned int u) { qualifierString.append(std::to_string(u).c_str()); };
+    const auto appendBool = [&](bool b) { qualifierString.append(std::to_string(b).c_str()); };
+    const auto appendStr = [&](const char* s) { qualifierString.append(s); };
+
+    const auto appendDecorate = [&](const TIntermTyped* constant) {
+        auto& constArray = constant->getAsConstantUnion() != nullptr ? constant->getAsConstantUnion()->getConstArray()
+                                                                     : constant->getAsSymbolNode()->getConstArray();
+        if (constant->getBasicType() == EbtFloat) {
+            float value = static_cast<float>(constArray[0].getDConst());
+            appendFloat(value);
+        }
+        else if (constant->getBasicType() == EbtInt) {
+            int value = constArray[0].getIConst();
+            appendInt(value);
+        }
+        else if (constant->getBasicType() == EbtUint) {
+            unsigned value = constArray[0].getUConst();
+            appendUint(value);
+        }
+        else if (constant->getBasicType() == EbtBool) {
+            bool value = constArray[0].getBConst();
+            appendBool(value);
+        }
+        else if (constant->getBasicType() == EbtString) {
+            const TString* value = constArray[0].getSConst();
+            appendStr(value->c_str());
+        }
+        else
+            assert(0);
+    };
+
+    for (auto& decorate : spirvDecorate->decorates) {
+        appendStr("spirv_decorate(");
+        appendInt(decorate.first);
+        for (auto extraOperand : decorate.second) {
+            appendStr(", ");
+            appendDecorate(extraOperand);
+        }
+        appendStr(") ");
+    }
+
+    for (auto& decorateId : spirvDecorate->decorateIds) {
+        appendStr("spirv_decorate_id(");
+        appendInt(decorateId.first);
+        for (auto extraOperand : decorateId.second) {
+            appendStr(", ");
+            appendDecorate(extraOperand);
+        }
+        appendStr(") ");
+    }
+
+    for (auto& decorateString : spirvDecorate->decorateStrings) {
+        appendStr("spirv_decorate_string(");
+        appendInt(decorateString.first);
+        for (auto extraOperand : decorateString.second) {
+            appendStr(", ");
+            appendDecorate(extraOperand);
+        }
+        appendStr(") ");
+    }
+
+    return qualifierString;
+}
+
+//
+// Handle SPIR-V type specifiers
+//
+void TPublicType::setSpirvType(const TSpirvInstruction& spirvInst, const TSpirvTypeParameters* typeParams)
+{
+    if (!spirvType)
+        spirvType = new TSpirvType;
+
+    basicType = EbtSpirvType;
+    spirvType->spirvInst = spirvInst;
+    if (typeParams)
+        spirvType->typeParams = *typeParams;
+}
+
+TSpirvTypeParameters* TParseContext::makeSpirvTypeParameters(const TSourceLoc& loc, const TIntermConstantUnion* constant)
+{
+    TSpirvTypeParameters* spirvTypeParams = new TSpirvTypeParameters;
+    if (constant->getBasicType() != EbtFloat &&
+        constant->getBasicType() != EbtInt &&
+        constant->getBasicType() != EbtUint &&
+        constant->getBasicType() != EbtBool &&
+        constant->getBasicType() != EbtString)
+        error(loc, "this type not allowed", constant->getType().getBasicString(), "");
+    else {
+        assert(constant);
+        spirvTypeParams->push_back(TSpirvTypeParameter(constant));
+    }
+
+    return spirvTypeParams;
+}
+
+TSpirvTypeParameters* TParseContext::mergeSpirvTypeParameters(TSpirvTypeParameters* spirvTypeParams1, TSpirvTypeParameters* spirvTypeParams2)
+{
+    // Merge SPIR-V type parameters of the second one to the first one
+    for (const auto& spirvTypeParam : *spirvTypeParams2)
+        spirvTypeParams1->push_back(spirvTypeParam);
+    return spirvTypeParams1;
+}
+
+//
+// Handle SPIR-V instruction qualifiers
+//
+TSpirvInstruction* TParseContext::makeSpirvInstruction(const TSourceLoc& loc, const TString& name, const TString& value)
+{
+    TSpirvInstruction* spirvInst = new TSpirvInstruction;
+    if (name == "set")
+        spirvInst->set = value;
+    else
+        error(loc, "unknown SPIR-V instruction qualifier", name.c_str(), "");
+
+    return spirvInst;
+}
+
+TSpirvInstruction* TParseContext::makeSpirvInstruction(const TSourceLoc& loc, const TString& name, int value)
+{
+    TSpirvInstruction* spirvInstuction = new TSpirvInstruction;
+    if (name == "id")
+        spirvInstuction->id = value;
+    else
+        error(loc, "unknown SPIR-V instruction qualifier", name.c_str(), "");
+
+    return spirvInstuction;
+}
+
+TSpirvInstruction* TParseContext::mergeSpirvInstruction(const TSourceLoc& loc, TSpirvInstruction* spirvInst1, TSpirvInstruction* spirvInst2)
+{
+    // Merge qualifiers of the second SPIR-V instruction to those of the first one
+    if (!spirvInst2->set.empty()) {
+        if (spirvInst1->set.empty())
+            spirvInst1->set = spirvInst2->set;
+        else
+            error(loc, "too many SPIR-V instruction qualifiers", "spirv_instruction", "(set)");
+    }
+
+    if (spirvInst2->id != -1) {
+        if (spirvInst1->id == -1)
+            spirvInst1->id = spirvInst2->id;
+        else
+            error(loc, "too many SPIR-V instruction qualifiers", "spirv_instruction", "(id)");
+    }
+
+    return spirvInst1;
+}
+
+} // end namespace glslang
+
+#endif // GLSLANG_WEB
diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp
index 0e5ee19..5b7e27f 100644
--- a/glslang/MachineIndependent/SymbolTable.cpp
+++ b/glslang/MachineIndependent/SymbolTable.cpp
@@ -77,6 +77,7 @@
     case EbtAtomicUint:         mangledName += "au";     break;
     case EbtAccStruct:          mangledName += "as";     break;
     case EbtRayQuery:           mangledName += "rq";     break;
+    case EbtSpirvType:          mangledName += "spv-t";  break;
 #endif
     case EbtSampler:
         switch (sampler.type) {
@@ -278,8 +279,14 @@
 //
 TSymbolTableLevel::~TSymbolTableLevel()
 {
-    for (tLevel::iterator it = level.begin(); it != level.end(); ++it)
-        delete (*it).second;
+    for (tLevel::iterator it = level.begin(); it != level.end(); ++it) {
+        const TString& name = it->first;
+        auto retargetIter = std::find_if(retargetedSymbols.begin(), retargetedSymbols.end(),
+                                      [&name](const std::pair<TString, TString>& i) { return i.first == name; });
+        if (retargetIter == retargetedSymbols.end())
+            delete (*it).second;
+    }
+
 
     delete [] defaultPrecision;
 }
@@ -390,6 +397,9 @@
     implicitThis = copyOf.implicitThis;
     illegalImplicitThis = copyOf.illegalImplicitThis;
     defaultParamCount = copyOf.defaultParamCount;
+#ifndef GLSLANG_WEB
+    spirvInst = copyOf.spirvInst;
+#endif
 }
 
 TFunction* TFunction::clone() const
@@ -414,6 +424,15 @@
     TSymbolTableLevel *symTableLevel = new TSymbolTableLevel();
     symTableLevel->anonId = anonId;
     symTableLevel->thisLevel = thisLevel;
+    symTableLevel->retargetedSymbols.clear();
+    for (auto &s : retargetedSymbols) {
+        // Extra constructions to make sure they use the correct allocator pool
+        TString newFrom;
+        newFrom = s.first;
+        TString newTo;
+        newTo = s.second;
+        symTableLevel->retargetedSymbols.push_back({std::move(newFrom), std::move(newTo)});
+    }
     std::vector<bool> containerCopied(anonId, false);
     tLevel::const_iterator iter;
     for (iter = level.begin(); iter != level.end(); ++iter) {
@@ -429,8 +448,25 @@
                 symTableLevel->insert(*container, false);
                 containerCopied[anon->getAnonId()] = true;
             }
-        } else
+        } else {
+            const TString& name = iter->first;
+            auto retargetIter = std::find_if(retargetedSymbols.begin(), retargetedSymbols.end(),
+                                          [&name](const std::pair<TString, TString>& i) { return i.first == name; });
+            if (retargetIter != retargetedSymbols.end())
+                continue;
             symTableLevel->insert(*iter->second->clone(), false);
+        }
+    }
+    // Now point retargeted symbols to the newly created versions of them
+    for (auto &s : retargetedSymbols) {
+        TSymbol* sym = symTableLevel->find(s.second);
+        if (!sym)
+            continue;
+
+        // Need to declare and assign so newS is using the correct pool allocator
+        TString newS;
+        newS = s.first;
+        symTableLevel->insert(newS, sym);
     }
 
     return symTableLevel;
diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h
index 152dc47..720999a 100644
--- a/glslang/MachineIndependent/SymbolTable.h
+++ b/glslang/MachineIndependent/SymbolTable.h
@@ -319,6 +319,15 @@
     virtual TParameter& operator[](int i) { assert(writable); return parameters[i]; }
     virtual const TParameter& operator[](int i) const { return parameters[i]; }
 
+#ifndef GLSLANG_WEB
+    virtual void setSpirvInstruction(const TSpirvInstruction& inst)
+    {
+        relateToOperator(EOpSpirvInst);
+        spirvInst = inst;
+    }
+    virtual const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; }
+#endif
+
 #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE)
     virtual void dump(TInfoSink& infoSink, bool complete = false) const override;
 #endif
@@ -342,6 +351,10 @@
                                // This is important for a static member function that has member variables in scope,
                                // but is not allowed to use them, or see hidden symbols instead.
     int  defaultParamCount;
+
+#ifndef GLSLANG_WEB
+    TSpirvInstruction spirvInst; // SPIR-V instruction qualifiers
+#endif
 };
 
 //
@@ -400,13 +413,20 @@
     TSymbolTableLevel() : defaultPrecision(0), anonId(0), thisLevel(false) { }
     ~TSymbolTableLevel();
 
-    bool insert(TSymbol& symbol, bool separateNameSpaces)
+    bool insert(const TString& name, TSymbol* symbol) {
+        return level.insert(tLevelPair(name, symbol)).second;
+    }
+
+    bool insert(TSymbol& symbol, bool separateNameSpaces, const TString& forcedKeyName = TString())
     {
         //
         // returning true means symbol was added to the table with no semantic errors
         //
         const TString& name = symbol.getName();
-        if (name == "") {
+        if (forcedKeyName.length()) {
+            return level.insert(tLevelPair(forcedKeyName, &symbol)).second;
+        }
+        else if (name == "") {
             symbol.getAsVariable()->setAnonId(anonId++);
             // An empty name means an anonymous container, exposing its members to the external scope.
             // Give it a name and insert its members in the symbol table, pointing to the container.
@@ -458,6 +478,16 @@
         return true;
     }
 
+    void retargetSymbol(const TString& from, const TString& to) {
+        tLevel::const_iterator fromIt = level.find(from);
+        tLevel::const_iterator toIt = level.find(to);
+        if (fromIt == level.end() || toIt == level.end())
+            return;
+        delete fromIt->second;
+        level[from] = toIt->second;
+        retargetedSymbols.push_back({from, to});
+    }
+
     TSymbol* find(const TString& name) const
     {
         tLevel::const_iterator it = level.find(name);
@@ -570,6 +600,8 @@
 
     tLevel level;  // named mappings
     TPrecisionQualifier *defaultPrecision;
+    // pair<FromName, ToName>
+    TVector<std::pair<TString, TString>> retargetedSymbols;
     int anonId;
     bool thisLevel;  // True if this level of the symbol table is a structure scope containing member function
                      // that are supposed to see anonymous access to member variables.
@@ -775,6 +807,12 @@
         return symbol;
     }
 
+    void retargetSymbol(const TString& from, const TString& to) {
+        int level = currentLevel();
+        table[level]->retargetSymbol(from, to);
+    }
+
+
     // Find of a symbol that returns how many layers deep of nested
     // structures-with-member-functions ('this' scopes) deep the symbol was
     // found in.
diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp
index 94fe1ab..2fc0d9e 100644
--- a/glslang/MachineIndependent/Versions.cpp
+++ b/glslang/MachineIndependent/Versions.cpp
@@ -165,7 +165,9 @@
         EShTargetLanguageVersion minSpvVersion;
     } extensionData;
 
-    const extensionData exts[] = { {E_GL_EXT_ray_tracing, EShTargetSpv_1_4} };
+    const extensionData exts[] = { {E_GL_EXT_ray_tracing, EShTargetSpv_1_4},
+                                   {E_GL_NV_ray_tracing_motion_blur, EShTargetSpv_1_4}
+                                 };
 
     for (size_t ii = 0; ii < sizeof(exts) / sizeof(exts[0]); ii++) {
         // Add only extensions which require > spv1.0 to save space in map
@@ -198,6 +200,7 @@
     extensionBehavior[E_GL_ARB_explicit_uniform_location]    = EBhDisable;
     extensionBehavior[E_GL_ARB_shader_image_load_store]      = EBhDisable;
     extensionBehavior[E_GL_ARB_shader_atomic_counters]       = EBhDisable;
+    extensionBehavior[E_GL_ARB_shader_atomic_counter_ops]    = EBhDisable;
     extensionBehavior[E_GL_ARB_shader_draw_parameters]       = EBhDisable;
     extensionBehavior[E_GL_ARB_shader_group_vote]            = EBhDisable;
     extensionBehavior[E_GL_ARB_derivative_control]           = EBhDisable;
@@ -222,6 +225,7 @@
     extensionBehavior[E_GL_ARB_shading_language_packing]     = EBhDisable;
     extensionBehavior[E_GL_ARB_texture_query_lod]            = EBhDisable;
     extensionBehavior[E_GL_ARB_vertex_attrib_64bit]          = EBhDisable;
+    extensionBehavior[E_GL_ARB_draw_instanced]               = EBhDisable;
 
     extensionBehavior[E_GL_KHR_shader_subgroup_basic]            = EBhDisable;
     extensionBehavior[E_GL_KHR_shader_subgroup_vote]             = EBhDisable;
@@ -251,6 +255,7 @@
 
     extensionBehavior[E_GL_EXT_shader_16bit_storage]                    = EBhDisable;
     extensionBehavior[E_GL_EXT_shader_8bit_storage]                     = EBhDisable;
+    extensionBehavior[E_GL_EXT_subgroup_uniform_control_flow]           = EBhDisable;
 
     // #line and #include
     extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive]          = EBhDisable;
@@ -280,6 +285,7 @@
     extensionBehavior[E_GL_NV_shader_subgroup_partitioned]           = EBhDisable;
     extensionBehavior[E_GL_NV_shading_rate_image]                    = EBhDisable;
     extensionBehavior[E_GL_NV_ray_tracing]                           = EBhDisable;
+    extensionBehavior[E_GL_NV_ray_tracing_motion_blur]               = EBhDisable;
     extensionBehavior[E_GL_NV_fragment_shader_barycentric]           = EBhDisable;
     extensionBehavior[E_GL_NV_compute_shader_derivatives]            = EBhDisable;
     extensionBehavior[E_GL_NV_shader_texture_footprint]              = EBhDisable;
@@ -332,6 +338,7 @@
     extensionBehavior[E_GL_EXT_shader_image_int64]   = EBhDisable;
     extensionBehavior[E_GL_EXT_terminate_invocation]        = EBhDisable;
     extensionBehavior[E_GL_EXT_shared_memory_block]         = EBhDisable;
+    extensionBehavior[E_GL_EXT_spirv_intrinsics]            = EBhDisable;
 
     // OVR extensions
     extensionBehavior[E_GL_OVR_multiview]                = EBhDisable;
@@ -353,6 +360,7 @@
     extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_int64]   = EBhDisable;
     extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_float16] = EBhDisable;
     extensionBehavior[E_GL_EXT_shader_atomic_float]                    = EBhDisable;
+    extensionBehavior[E_GL_EXT_shader_atomic_float2]                   = EBhDisable;
 }
 
 #endif // GLSLANG_WEB
@@ -415,6 +423,7 @@
             }
             if (version >= 310) {
                 preamble += "#define GL_EXT_null_initializer 1\n";
+                preamble += "#define GL_EXT_subgroup_uniform_control_flow 1\n";
             }
 
     } else { // !isEsProfile()
@@ -457,6 +466,7 @@
             "#define GL_ARB_shader_storage_buffer_object 1\n"
             "#define GL_ARB_texture_query_lod 1\n"
             "#define GL_ARB_vertex_attrib_64bit 1\n"
+            "#define GL_ARB_draw_instanced 1\n"
             "#define GL_EXT_shader_non_constant_global_initializers 1\n"
             "#define GL_EXT_shader_image_load_formatted 1\n"
             "#define GL_EXT_post_depth_coverage 1\n"
@@ -474,6 +484,7 @@
             "#define GL_EXT_debug_printf 1\n"
             "#define GL_EXT_fragment_shading_rate 1\n"
             "#define GL_EXT_shared_memory_block 1\n"
+            "#define GL_EXT_shader_integer_mix 1\n"
 
             // GL_KHR_shader_subgroup
             "#define GL_KHR_shader_subgroup_basic 1\n"
@@ -491,6 +502,7 @@
             "#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_EXT_spirv_intrinsics 1\n"
 
             "#define GL_AMD_shader_ballot 1\n"
             "#define GL_AMD_shader_trinary_minmax 1\n"
@@ -513,6 +525,7 @@
             "#define GL_NV_shader_subgroup_partitioned 1\n"
             "#define GL_NV_shading_rate_image 1\n"
             "#define GL_NV_ray_tracing 1\n"
+            "#define GL_NV_ray_tracing_motion_blur 1\n"
             "#define GL_NV_fragment_shader_barycentric 1\n"
             "#define GL_NV_compute_shader_derivatives 1\n"
             "#define GL_NV_shader_texture_footprint 1\n"
@@ -535,6 +548,7 @@
             "#define GL_EXT_shader_subgroup_extended_types_float16 1\n"
 
             "#define GL_EXT_shader_atomic_float 1\n"
+            "#define GL_EXT_shader_atomic_float2 1\n"
             ;
 
         if (version >= 150) {
@@ -546,6 +560,7 @@
         }
         if (version >= 140) {
             preamble += "#define GL_EXT_null_initializer 1\n";
+            preamble += "#define GL_EXT_subgroup_uniform_control_flow 1\n";
         }
 #endif // GLSLANG_WEB
     }
@@ -599,6 +614,29 @@
         preamble += "\n";
     }
 #endif
+
+#ifndef GLSLANG_WEB
+    // GL_EXT_spirv_intrinsics
+    if (!isEsProfile()) {
+        switch (language) {
+        case EShLangVertex:         preamble += "#define GL_VERTEX_SHADER 1 \n";                    break;
+        case EShLangTessControl:    preamble += "#define GL_TESSELLATION_CONTROL_SHADER 1 \n";      break;
+        case EShLangTessEvaluation: preamble += "#define GL_TESSELLATION_EVALUATION_SHADER 1 \n";   break;
+        case EShLangGeometry:       preamble += "#define GL_GEOMETRY_SHADER 1 \n";                  break;
+        case EShLangFragment:       preamble += "#define GL_FRAGMENT_SHADER 1 \n";                  break;
+        case EShLangCompute:        preamble += "#define GL_COMPUTE_SHADER 1 \n";                   break;
+        case EShLangRayGen:         preamble += "#define GL_RAY_GENERATION_SHADER_EXT 1 \n";        break;
+        case EShLangIntersect:      preamble += "#define GL_INTERSECTION_SHADER_EXT 1 \n";          break;
+        case EShLangAnyHit:         preamble += "#define GL_ANY_HIT_SHADER_EXT 1 \n";               break;
+        case EShLangClosestHit:     preamble += "#define GL_CLOSEST_HIT_SHADER_EXT 1 \n";           break;
+        case EShLangMiss:           preamble += "#define GL_MISS_SHADER_EXT 1 \n";                  break;
+        case EShLangCallable:       preamble += "#define GL_CALLABLE_SHADER_EXT 1 \n";              break;
+        case EShLangTaskNV:         preamble += "#define GL_TASK_SHADER_NV 1 \n";                   break;
+        case EShLangMeshNV:         preamble += "#define GL_MESH_SHADER_NV 1 \n";                   break;
+        default:                                                                                    break;
+        }
+    }
+#endif
 }
 
 //
diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h
index 25feb0b..2dbac0b 100644
--- a/glslang/MachineIndependent/Versions.h
+++ b/glslang/MachineIndependent/Versions.h
@@ -136,6 +136,7 @@
 const char* const E_GL_ARB_explicit_uniform_location    = "GL_ARB_explicit_uniform_location";
 const char* const E_GL_ARB_shader_image_load_store      = "GL_ARB_shader_image_load_store";
 const char* const E_GL_ARB_shader_atomic_counters       = "GL_ARB_shader_atomic_counters";
+const char* const E_GL_ARB_shader_atomic_counter_ops    = "GL_ARB_shader_atomic_counter_ops";
 const char* const E_GL_ARB_shader_draw_parameters       = "GL_ARB_shader_draw_parameters";
 const char* const E_GL_ARB_shader_group_vote            = "GL_ARB_shader_group_vote";
 const char* const E_GL_ARB_derivative_control           = "GL_ARB_derivative_control";
@@ -160,6 +161,7 @@
 const char* const E_GL_ARB_shading_language_packing     = "GL_ARB_shading_language_packing";
 const char* const E_GL_ARB_texture_query_lod            = "GL_ARB_texture_query_lod";
 const char* const E_GL_ARB_vertex_attrib_64bit          = "GL_ARB_vertex_attrib_64bit";
+const char* const E_GL_ARB_draw_instanced               = "GL_ARB_draw_instanced";
 
 const char* const E_GL_KHR_shader_subgroup_basic            = "GL_KHR_shader_subgroup_basic";
 const char* const E_GL_KHR_shader_subgroup_vote             = "GL_KHR_shader_subgroup_vote";
@@ -204,6 +206,8 @@
 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";
+const char* const E_GL_EXT_subgroup_uniform_control_flow    = "GL_EXT_subgroup_uniform_control_flow";
+const char* const E_GL_EXT_spirv_intrinsics                 = "GL_EXT_spirv_intrinsics";
 
 // Arrays of extensions for the above viewportEXTs duplications
 
@@ -245,6 +249,7 @@
 const char* const E_GL_NV_shader_subgroup_partitioned           = "GL_NV_shader_subgroup_partitioned";
 const char* const E_GL_NV_shading_rate_image                    = "GL_NV_shading_rate_image";
 const char* const E_GL_NV_ray_tracing                           = "GL_NV_ray_tracing";
+const char* const E_GL_NV_ray_tracing_motion_blur               = "GL_NV_ray_tracing_motion_blur";
 const char* const E_GL_NV_fragment_shader_barycentric           = "GL_NV_fragment_shader_barycentric";
 const char* const E_GL_NV_compute_shader_derivatives            = "GL_NV_compute_shader_derivatives";
 const char* const E_GL_NV_shader_texture_footprint              = "GL_NV_shader_texture_footprint";
@@ -305,6 +310,7 @@
 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";
+const char* const E_GL_EXT_shader_atomic_float2 = "GL_EXT_shader_atomic_float2";
 
 // Arrays of extensions for the above AEP duplications
 
diff --git a/glslang/MachineIndependent/attribute.cpp b/glslang/MachineIndependent/attribute.cpp
index 9585518..df7fdc2 100644
--- a/glslang/MachineIndependent/attribute.cpp
+++ b/glslang/MachineIndependent/attribute.cpp
@@ -123,6 +123,8 @@
         return EatPeelCount;
     else if (name == "partial_count")
         return EatPartialCount;
+    else if (name == "subgroup_uniform_control_flow")
+        return EatSubgroupUniformControlFlow;
     else
         return EatNone;
 }
@@ -341,6 +343,29 @@
     }
 }
 
+
+//
+// Function attributes
+//
+void TParseContext::handleFunctionAttributes(const TSourceLoc& loc, const TAttributes& attributes)
+{
+    for (auto it = attributes.begin(); it != attributes.end(); ++it) {
+        if (it->size() > 0) {
+            warn(loc, "attribute with arguments not recognized, skipping", "", "");
+            continue;
+        }
+
+        switch (it->name) {
+        case EatSubgroupUniformControlFlow:
+            intermediate.setSubgroupUniformControlFlow();
+            break;
+        default:
+            warn(loc, "attribute does not apply to a function", "", "");
+            break;
+        }
+    }
+}
+
 } // end namespace glslang
 
 #endif // GLSLANG_WEB
diff --git a/glslang/MachineIndependent/attribute.h b/glslang/MachineIndependent/attribute.h
index 38a943d..c5b2917 100644
--- a/glslang/MachineIndependent/attribute.h
+++ b/glslang/MachineIndependent/attribute.h
@@ -118,7 +118,8 @@
         EatFormatR8ui,
         EatFormatUnknown,
         EatNonWritable,
-        EatNonReadable
+        EatNonReadable,
+        EatSubgroupUniformControlFlow,
     };
 
     class TIntermAggregate;
diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4
index 4d37639..d4cc5bc 100644
--- a/glslang/MachineIndependent/glslang.m4
+++ b/glslang/MachineIndependent/glslang.m4
@@ -116,6 +116,9 @@
             glslang::TIntermNodePair nodePair;
             glslang::TIntermTyped* intermTypedNode;
             glslang::TAttributes* attributes;
+            glslang::TSpirvRequirement* spirvReq;
+            glslang::TSpirvInstruction* spirvInst;
+            glslang::TSpirvTypeParameters* spirvTypeParams;
         };
         union {
             glslang::TPublicType type;
@@ -271,6 +274,11 @@
 %token <lex> SUBPASSINPUT SUBPASSINPUTMS ISUBPASSINPUT ISUBPASSINPUTMS USUBPASSINPUT USUBPASSINPUTMS
 %token <lex> F16SUBPASSINPUT F16SUBPASSINPUTMS
 
+// spirv intrinsics
+%token <lex> SPIRV_INSTRUCTION SPIRV_EXECUTION_MODE SPIRV_EXECUTION_MODE_ID
+%token <lex> SPIRV_DECORATE SPIRV_DECORATE_ID SPIRV_DECORATE_STRING
+%token <lex> SPIRV_TYPE SPIRV_STORAGE_CLASS SPIRV_BY_REFERENCE SPIRV_LITERAL
+
 GLSLANG_WEB_EXCLUDE_OFF
 
 %token <lex> LEFT_OP RIGHT_OP
@@ -362,6 +370,19 @@
 %type <interm.attributes> attribute attribute_list single_attribute
 %type <interm.intermNode> demote_statement
 %type <interm.intermTypedNode> initializer_list
+%type <interm.spirvReq> spirv_requirements_list spirv_requirements_parameter
+%type <interm.intermNode> spirv_extension_list spirv_capability_list
+%type <interm.intermNode> spirv_execution_mode_qualifier
+%type <interm.intermNode> spirv_execution_mode_parameter_list spirv_execution_mode_parameter spirv_execution_mode_id_parameter_list
+%type <interm.type> spirv_storage_class_qualifier
+%type <interm.type> spirv_decorate_qualifier
+%type <interm.intermNode> spirv_decorate_parameter_list spirv_decorate_parameter
+%type <interm.intermNode> spirv_decorate_id_parameter_list
+%type <interm.intermNode> spirv_decorate_string_parameter_list
+%type <interm.type> spirv_type_specifier
+%type <interm.spirvTypeParams> spirv_type_parameter_list spirv_type_parameter
+%type <interm.spirvInst> spirv_instruction_qualifier
+%type <interm.spirvInst> spirv_instruction_qualifier_list spirv_instruction_qualifier_id
 GLSLANG_WEB_EXCLUDE_OFF
 
 %start translation_unit
@@ -875,6 +896,20 @@
         $$ = 0;
         // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
     }
+GLSLANG_WEB_EXCLUDE_ON
+    | spirv_instruction_qualifier function_prototype SEMICOLON {
+        parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier");
+        $2.function->setSpirvInstruction(*$1); // Attach SPIR-V intruction qualifier
+        parseContext.handleFunctionDeclarator($2.loc, *$2.function, true /* prototype */);
+        $$ = 0;
+        // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
+    }
+    | spirv_execution_mode_qualifier SEMICOLON {
+        parseContext.globalCheck($2.loc, "SPIR-V execution mode qualifier");
+        parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier");
+        $$ = 0;
+    }
+GLSLANG_WEB_EXCLUDE_OFF
     | init_declarator_list SEMICOLON {
         if ($1.intermNode && $1.intermNode->getAsAggregate())
             $1.intermNode->getAsAggregate()->setOperator(EOpSequence);
@@ -944,6 +979,25 @@
         $$.function = $1;
         $$.loc = $2.loc;
     }
+    | function_declarator RIGHT_PAREN attribute {
+        $$.function = $1;
+        $$.loc = $2.loc;
+        parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute");
+        parseContext.handleFunctionAttributes($2.loc, *$3);
+    }
+    | attribute function_declarator RIGHT_PAREN {
+        $$.function = $2;
+        $$.loc = $3.loc;
+        parseContext.requireExtensions($3.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute");
+        parseContext.handleFunctionAttributes($3.loc, *$1);
+    }
+    | attribute function_declarator RIGHT_PAREN attribute {
+        $$.function = $2;
+        $$.loc = $3.loc;
+        parseContext.requireExtensions($3.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute");
+        parseContext.handleFunctionAttributes($3.loc, *$1);
+        parseContext.handleFunctionAttributes($3.loc, *$4);
+    }
     ;
 
 function_declarator
@@ -1347,6 +1401,25 @@
     | non_uniform_qualifier {
         $$ = $1;
     }
+    | spirv_storage_class_qualifier {
+        parseContext.globalCheck($1.loc, "spirv_storage_class");
+        parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier");
+        $$ = $1;
+    }
+    | spirv_decorate_qualifier {
+        parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier");
+        $$ = $1;
+    }
+    | SPIRV_BY_REFERENCE {
+        parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference");
+        $$.init($1.loc);
+        $$.qualifier.setSpirvByReference();
+    }
+    | SPIRV_LITERAL {
+        parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal");
+        $$.init($1.loc);
+        $$.qualifier.setSpirvLiteral();
+    }
 GLSLANG_WEB_EXCLUDE_OFF
     ;
 
@@ -3407,6 +3480,10 @@
         $$.basicType = EbtUint;
         $$.coopmat = true;
     }
+    | spirv_type_specifier {
+        parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier");
+        $$ = $1;
+    }
 GLSLANG_WEB_EXCLUDE_OFF
     | struct_specifier {
         $$ = $1;
@@ -3713,6 +3790,7 @@
     }
 GLSLANG_WEB_EXCLUDE_ON
     | attribute selection_statement_nonattributed {
+        parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
         parseContext.handleSelectionAttributes(*$1, $2);
         $$ = $2;
     }
@@ -3760,6 +3838,7 @@
     }
 GLSLANG_WEB_EXCLUDE_ON
     | attribute switch_statement_nonattributed {
+        parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
         parseContext.handleSwitchAttributes(*$1, $2);
         $$ = $2;
     }
@@ -3824,6 +3903,7 @@
     }
 GLSLANG_WEB_EXCLUDE_ON
     | attribute iteration_statement_nonattributed {
+        parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
         parseContext.handleLoopAttributes(*$1, $2);
         $$ = $2;
     }
@@ -3846,6 +3926,7 @@
         --parseContext.controlFlowNestingLevel;
     }
     | DO {
+        parseContext.symbolTable.push();
         ++parseContext.loopNestingLevel;
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
@@ -3857,6 +3938,7 @@
         parseContext.boolCheck($8.loc, $6);
 
         $$ = parseContext.intermediate.addLoop($3, $6, 0, false, $4.loc);
+        parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.loopNestingLevel;
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
@@ -4027,7 +4109,6 @@
 attribute
     : LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET {
         $$ = $3;
-        parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_control_flow_attributes, "attribute");
     }
 
 attribute_list
@@ -4047,4 +4128,270 @@
     }
 GLSLANG_WEB_EXCLUDE_OFF
 
+GLSLANG_WEB_EXCLUDE_ON
+spirv_requirements_list
+    : spirv_requirements_parameter {
+        $$ = $1;
+    }
+    | spirv_requirements_list COMMA spirv_requirements_parameter {
+        $$ = parseContext.mergeSpirvRequirements($2.loc, $1, $3);
+    }
+
+spirv_requirements_parameter
+    : IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET {
+        $$ = parseContext.makeSpirvRequirement($2.loc, *$1.string, $4->getAsAggregate(), nullptr);
+    }
+    | IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET {
+        $$ = parseContext.makeSpirvRequirement($2.loc, *$1.string, nullptr, $4->getAsAggregate());
+    }
+
+spirv_extension_list
+    : STRING_LITERAL {
+        $$ = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion($1.string, $1.loc, true));
+    }
+    | spirv_extension_list COMMA STRING_LITERAL {
+        $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.string, $3.loc, true));
+    }
+
+spirv_capability_list
+    : INTCONSTANT {
+        $$ = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion($1.i, $1.loc, true));
+    }
+    | spirv_capability_list COMMA INTCONSTANT {
+        $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.i, $3.loc, true));
+    }
+
+spirv_execution_mode_qualifier
+    : SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN {
+        parseContext.intermediate.insertSpirvExecutionMode($3.i);
+        $$ = 0;
+    }
+    | SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN {
+        parseContext.intermediate.insertSpirvRequirement($3);
+        parseContext.intermediate.insertSpirvExecutionMode($5.i);
+        $$ = 0;
+    }
+    | SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN {
+        parseContext.intermediate.insertSpirvExecutionMode($3.i, $5->getAsAggregate());
+        $$ = 0;
+    }
+    | SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN {
+        parseContext.intermediate.insertSpirvRequirement($3);
+        parseContext.intermediate.insertSpirvExecutionMode($5.i, $7->getAsAggregate());
+        $$ = 0;
+    }
+    | SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN {
+        parseContext.intermediate.insertSpirvExecutionModeId($3.i, $5->getAsAggregate());
+        $$ = 0;
+    }
+    | SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN {
+        parseContext.intermediate.insertSpirvRequirement($3);
+        parseContext.intermediate.insertSpirvExecutionModeId($5.i, $7->getAsAggregate());
+        $$ = 0;
+    }
+
+spirv_execution_mode_parameter_list
+    : spirv_execution_mode_parameter {
+        $$ = parseContext.intermediate.makeAggregate($1);
+    }
+    | spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter {
+        $$ = parseContext.intermediate.growAggregate($1, $3);
+    }
+
+spirv_execution_mode_parameter
+    : FLOATCONSTANT {
+        $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true);
+    }
+    | INTCONSTANT {
+        $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true);
+    }
+    | UINTCONSTANT {
+        $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true);
+    }
+    | BOOLCONSTANT {
+        $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true);
+    }
+    | STRING_LITERAL {
+        $$ = parseContext.intermediate.addConstantUnion($1.string, $1.loc, true);
+    }
+
+spirv_execution_mode_id_parameter_list
+    : constant_expression {
+        if ($1->getBasicType() != EbtFloat &&
+            $1->getBasicType() != EbtInt &&
+            $1->getBasicType() != EbtUint &&
+            $1->getBasicType() != EbtBool &&
+            $1->getBasicType() != EbtString)
+            parseContext.error($1->getLoc(), "this type not allowed", $1->getType().getBasicString(), "");
+        $$ = parseContext.intermediate.makeAggregate($1);
+    }
+    | spirv_execution_mode_id_parameter_list COMMA constant_expression {
+        if ($3->getBasicType() != EbtFloat &&
+            $3->getBasicType() != EbtInt &&
+            $3->getBasicType() != EbtUint &&
+            $3->getBasicType() != EbtBool &&
+            $3->getBasicType() != EbtString)
+            parseContext.error($3->getLoc(), "this type not allowed", $3->getType().getBasicString(), "");
+        $$ = parseContext.intermediate.growAggregate($1, $3);
+    }
+
+spirv_storage_class_qualifier
+    : SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN {
+        $$.init($1.loc);
+        $$.qualifier.storage = EvqSpirvStorageClass;
+        $$.qualifier.spirvStorageClass = $3.i;
+    }
+    | SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN {
+        $$.init($1.loc);
+        parseContext.intermediate.insertSpirvRequirement($3);
+        $$.qualifier.storage = EvqSpirvStorageClass;
+        $$.qualifier.spirvStorageClass = $5.i;
+    }
+
+spirv_decorate_qualifier
+    : SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN{
+        $$.init($1.loc);
+        $$.qualifier.setSpirvDecorate($3.i);
+    }
+    | SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN{
+        $$.init($1.loc);
+        parseContext.intermediate.insertSpirvRequirement($3);
+        $$.qualifier.setSpirvDecorate($5.i);
+    }
+    | SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN {
+        $$.init($1.loc);
+        $$.qualifier.setSpirvDecorate($3.i, $5->getAsAggregate());
+    }
+    | SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN {
+        $$.init($1.loc);
+        parseContext.intermediate.insertSpirvRequirement($3);
+        $$.qualifier.setSpirvDecorate($5.i, $7->getAsAggregate());
+    }
+    | SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN {
+        $$.init($1.loc);
+        $$.qualifier.setSpirvDecorateId($3.i, $5->getAsAggregate());
+    }
+    | SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN {
+        $$.init($1.loc);
+        parseContext.intermediate.insertSpirvRequirement($3);
+        $$.qualifier.setSpirvDecorateId($5.i, $7->getAsAggregate());
+    }
+    | SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN {
+        $$.init($1.loc);
+        $$.qualifier.setSpirvDecorateString($3.i, $5->getAsAggregate());
+    }
+    | SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN {
+        $$.init($1.loc);
+        parseContext.intermediate.insertSpirvRequirement($3);
+        $$.qualifier.setSpirvDecorateString($5.i, $7->getAsAggregate());
+    }
+
+spirv_decorate_parameter_list
+    : spirv_decorate_parameter {
+        $$ = parseContext.intermediate.makeAggregate($1);
+    }
+    | spirv_decorate_parameter_list COMMA spirv_decorate_parameter {
+        $$ = parseContext.intermediate.growAggregate($1, $3);
+    }
+
+spirv_decorate_parameter
+    : FLOATCONSTANT {
+        $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true);
+    }
+    | INTCONSTANT {
+        $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true);
+    }
+    | UINTCONSTANT {
+        $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true);
+    }
+    | BOOLCONSTANT {
+        $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true);
+    }
+
+spirv_decorate_id_parameter_list
+    : constant_expression {
+        if ($1->getBasicType() != EbtFloat &&
+            $1->getBasicType() != EbtInt &&
+            $1->getBasicType() != EbtUint &&
+            $1->getBasicType() != EbtBool)
+            parseContext.error($1->getLoc(), "this type not allowed", $1->getType().getBasicString(), "");
+        $$ = parseContext.intermediate.makeAggregate($1);
+    }
+    | spirv_decorate_id_parameter_list COMMA constant_expression {
+        if ($3->getBasicType() != EbtFloat &&
+            $3->getBasicType() != EbtInt &&
+            $3->getBasicType() != EbtUint &&
+            $3->getBasicType() != EbtBool)
+            parseContext.error($3->getLoc(), "this type not allowed", $3->getType().getBasicString(), "");
+        $$ = parseContext.intermediate.growAggregate($1, $3);
+    }
+
+spirv_decorate_string_parameter_list
+    : STRING_LITERAL {
+        $$ = parseContext.intermediate.makeAggregate(
+            parseContext.intermediate.addConstantUnion($1.string, $1.loc, true));
+    }
+    | spirv_decorate_string_parameter_list COMMA STRING_LITERAL {
+        $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.string, $3.loc, true));
+    }
+
+spirv_type_specifier
+    : SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.setSpirvType(*$3, $5);
+    }
+    | SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.intermediate.insertSpirvRequirement($3);
+        $$.setSpirvType(*$5, $7);
+    }
+    | SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.setSpirvType(*$3);
+    }
+    | SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.intermediate.insertSpirvRequirement($3);
+        $$.setSpirvType(*$5);
+    }
+
+spirv_type_parameter_list
+    : spirv_type_parameter {
+        $$ = $1;
+    }
+    | spirv_type_parameter_list COMMA spirv_type_parameter {
+        $$ = parseContext.mergeSpirvTypeParameters($1, $3);
+    }
+
+spirv_type_parameter
+    : constant_expression {
+        $$ = parseContext.makeSpirvTypeParameters($1->getLoc(), $1->getAsConstantUnion());
+    }
+
+spirv_instruction_qualifier
+    : SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN {
+        $$ = $3;
+    }
+    | SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN {
+        parseContext.intermediate.insertSpirvRequirement($3);
+        $$ = $5;
+    }
+
+spirv_instruction_qualifier_list
+    : spirv_instruction_qualifier_id {
+        $$ = $1;
+    }
+    | spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id {
+        $$ = parseContext.mergeSpirvInstruction($2.loc, $1, $3);
+    }
+
+spirv_instruction_qualifier_id
+    : IDENTIFIER EQUAL STRING_LITERAL {
+        $$ = parseContext.makeSpirvInstruction($2.loc, *$1.string, *$3.string);
+    }
+    | IDENTIFIER EQUAL INTCONSTANT {
+        $$ = parseContext.makeSpirvInstruction($2.loc, *$1.string, $3.i);
+    }
+GLSLANG_WEB_EXCLUDE_OFF
+
 %%
diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y
index 0b711ae..df53eb5 100644
--- a/glslang/MachineIndependent/glslang.y
+++ b/glslang/MachineIndependent/glslang.y
@@ -116,6 +116,9 @@
             glslang::TIntermNodePair nodePair;
             glslang::TIntermTyped* intermTypedNode;
             glslang::TAttributes* attributes;
+            glslang::TSpirvRequirement* spirvReq;
+            glslang::TSpirvInstruction* spirvInst;
+            glslang::TSpirvTypeParameters* spirvTypeParams;
         };
         union {
             glslang::TPublicType type;
@@ -271,6 +274,11 @@
 %token <lex> SUBPASSINPUT SUBPASSINPUTMS ISUBPASSINPUT ISUBPASSINPUTMS USUBPASSINPUT USUBPASSINPUTMS
 %token <lex> F16SUBPASSINPUT F16SUBPASSINPUTMS
 
+// spirv intrinsics
+%token <lex> SPIRV_INSTRUCTION SPIRV_EXECUTION_MODE SPIRV_EXECUTION_MODE_ID
+%token <lex> SPIRV_DECORATE SPIRV_DECORATE_ID SPIRV_DECORATE_STRING
+%token <lex> SPIRV_TYPE SPIRV_STORAGE_CLASS SPIRV_BY_REFERENCE SPIRV_LITERAL
+
 
 
 %token <lex> LEFT_OP RIGHT_OP
@@ -362,6 +370,19 @@
 %type <interm.attributes> attribute attribute_list single_attribute
 %type <interm.intermNode> demote_statement
 %type <interm.intermTypedNode> initializer_list
+%type <interm.spirvReq> spirv_requirements_list spirv_requirements_parameter
+%type <interm.intermNode> spirv_extension_list spirv_capability_list
+%type <interm.intermNode> spirv_execution_mode_qualifier
+%type <interm.intermNode> spirv_execution_mode_parameter_list spirv_execution_mode_parameter spirv_execution_mode_id_parameter_list
+%type <interm.type> spirv_storage_class_qualifier
+%type <interm.type> spirv_decorate_qualifier
+%type <interm.intermNode> spirv_decorate_parameter_list spirv_decorate_parameter
+%type <interm.intermNode> spirv_decorate_id_parameter_list
+%type <interm.intermNode> spirv_decorate_string_parameter_list
+%type <interm.type> spirv_type_specifier
+%type <interm.spirvTypeParams> spirv_type_parameter_list spirv_type_parameter
+%type <interm.spirvInst> spirv_instruction_qualifier
+%type <interm.spirvInst> spirv_instruction_qualifier_list spirv_instruction_qualifier_id
 
 
 %start translation_unit
@@ -875,6 +896,20 @@
         $$ = 0;
         // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
     }
+
+    | spirv_instruction_qualifier function_prototype SEMICOLON {
+        parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier");
+        $2.function->setSpirvInstruction(*$1); // Attach SPIR-V intruction qualifier
+        parseContext.handleFunctionDeclarator($2.loc, *$2.function, true /* prototype */);
+        $$ = 0;
+        // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature
+    }
+    | spirv_execution_mode_qualifier SEMICOLON {
+        parseContext.globalCheck($2.loc, "SPIR-V execution mode qualifier");
+        parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier");
+        $$ = 0;
+    }
+
     | init_declarator_list SEMICOLON {
         if ($1.intermNode && $1.intermNode->getAsAggregate())
             $1.intermNode->getAsAggregate()->setOperator(EOpSequence);
@@ -944,6 +979,25 @@
         $$.function = $1;
         $$.loc = $2.loc;
     }
+    | function_declarator RIGHT_PAREN attribute {
+        $$.function = $1;
+        $$.loc = $2.loc;
+        parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute");
+        parseContext.handleFunctionAttributes($2.loc, *$3);
+    }
+    | attribute function_declarator RIGHT_PAREN {
+        $$.function = $2;
+        $$.loc = $3.loc;
+        parseContext.requireExtensions($3.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute");
+        parseContext.handleFunctionAttributes($3.loc, *$1);
+    }
+    | attribute function_declarator RIGHT_PAREN attribute {
+        $$.function = $2;
+        $$.loc = $3.loc;
+        parseContext.requireExtensions($3.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute");
+        parseContext.handleFunctionAttributes($3.loc, *$1);
+        parseContext.handleFunctionAttributes($3.loc, *$4);
+    }
     ;
 
 function_declarator
@@ -1347,6 +1401,25 @@
     | non_uniform_qualifier {
         $$ = $1;
     }
+    | spirv_storage_class_qualifier {
+        parseContext.globalCheck($1.loc, "spirv_storage_class");
+        parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier");
+        $$ = $1;
+    }
+    | spirv_decorate_qualifier {
+        parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier");
+        $$ = $1;
+    }
+    | SPIRV_BY_REFERENCE {
+        parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference");
+        $$.init($1.loc);
+        $$.qualifier.setSpirvByReference();
+    }
+    | SPIRV_LITERAL {
+        parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal");
+        $$.init($1.loc);
+        $$.qualifier.setSpirvLiteral();
+    }
 
     ;
 
@@ -3407,6 +3480,10 @@
         $$.basicType = EbtUint;
         $$.coopmat = true;
     }
+    | spirv_type_specifier {
+        parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier");
+        $$ = $1;
+    }
 
     | struct_specifier {
         $$ = $1;
@@ -3713,6 +3790,7 @@
     }
 
     | attribute selection_statement_nonattributed {
+        parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
         parseContext.handleSelectionAttributes(*$1, $2);
         $$ = $2;
     }
@@ -3760,6 +3838,7 @@
     }
 
     | attribute switch_statement_nonattributed {
+        parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
         parseContext.handleSwitchAttributes(*$1, $2);
         $$ = $2;
     }
@@ -3824,6 +3903,7 @@
     }
 
     | attribute iteration_statement_nonattributed {
+        parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
         parseContext.handleLoopAttributes(*$1, $2);
         $$ = $2;
     }
@@ -3846,6 +3926,7 @@
         --parseContext.controlFlowNestingLevel;
     }
     | DO {
+        parseContext.symbolTable.push();
         ++parseContext.loopNestingLevel;
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
@@ -3857,6 +3938,7 @@
         parseContext.boolCheck($8.loc, $6);
 
         $$ = parseContext.intermediate.addLoop($3, $6, 0, false, $4.loc);
+        parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.loopNestingLevel;
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
@@ -4027,7 +4109,6 @@
 attribute
     : LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET {
         $$ = $3;
-        parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_control_flow_attributes, "attribute");
     }
 
 attribute_list
@@ -4047,4 +4128,270 @@
     }
 
 
+
+spirv_requirements_list
+    : spirv_requirements_parameter {
+        $$ = $1;
+    }
+    | spirv_requirements_list COMMA spirv_requirements_parameter {
+        $$ = parseContext.mergeSpirvRequirements($2.loc, $1, $3);
+    }
+
+spirv_requirements_parameter
+    : IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET {
+        $$ = parseContext.makeSpirvRequirement($2.loc, *$1.string, $4->getAsAggregate(), nullptr);
+    }
+    | IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET {
+        $$ = parseContext.makeSpirvRequirement($2.loc, *$1.string, nullptr, $4->getAsAggregate());
+    }
+
+spirv_extension_list
+    : STRING_LITERAL {
+        $$ = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion($1.string, $1.loc, true));
+    }
+    | spirv_extension_list COMMA STRING_LITERAL {
+        $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.string, $3.loc, true));
+    }
+
+spirv_capability_list
+    : INTCONSTANT {
+        $$ = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion($1.i, $1.loc, true));
+    }
+    | spirv_capability_list COMMA INTCONSTANT {
+        $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.i, $3.loc, true));
+    }
+
+spirv_execution_mode_qualifier
+    : SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN {
+        parseContext.intermediate.insertSpirvExecutionMode($3.i);
+        $$ = 0;
+    }
+    | SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN {
+        parseContext.intermediate.insertSpirvRequirement($3);
+        parseContext.intermediate.insertSpirvExecutionMode($5.i);
+        $$ = 0;
+    }
+    | SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN {
+        parseContext.intermediate.insertSpirvExecutionMode($3.i, $5->getAsAggregate());
+        $$ = 0;
+    }
+    | SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN {
+        parseContext.intermediate.insertSpirvRequirement($3);
+        parseContext.intermediate.insertSpirvExecutionMode($5.i, $7->getAsAggregate());
+        $$ = 0;
+    }
+    | SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN {
+        parseContext.intermediate.insertSpirvExecutionModeId($3.i, $5->getAsAggregate());
+        $$ = 0;
+    }
+    | SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN {
+        parseContext.intermediate.insertSpirvRequirement($3);
+        parseContext.intermediate.insertSpirvExecutionModeId($5.i, $7->getAsAggregate());
+        $$ = 0;
+    }
+
+spirv_execution_mode_parameter_list
+    : spirv_execution_mode_parameter {
+        $$ = parseContext.intermediate.makeAggregate($1);
+    }
+    | spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter {
+        $$ = parseContext.intermediate.growAggregate($1, $3);
+    }
+
+spirv_execution_mode_parameter
+    : FLOATCONSTANT {
+        $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true);
+    }
+    | INTCONSTANT {
+        $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true);
+    }
+    | UINTCONSTANT {
+        $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true);
+    }
+    | BOOLCONSTANT {
+        $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true);
+    }
+    | STRING_LITERAL {
+        $$ = parseContext.intermediate.addConstantUnion($1.string, $1.loc, true);
+    }
+
+spirv_execution_mode_id_parameter_list
+    : constant_expression {
+        if ($1->getBasicType() != EbtFloat &&
+            $1->getBasicType() != EbtInt &&
+            $1->getBasicType() != EbtUint &&
+            $1->getBasicType() != EbtBool &&
+            $1->getBasicType() != EbtString)
+            parseContext.error($1->getLoc(), "this type not allowed", $1->getType().getBasicString(), "");
+        $$ = parseContext.intermediate.makeAggregate($1);
+    }
+    | spirv_execution_mode_id_parameter_list COMMA constant_expression {
+        if ($3->getBasicType() != EbtFloat &&
+            $3->getBasicType() != EbtInt &&
+            $3->getBasicType() != EbtUint &&
+            $3->getBasicType() != EbtBool &&
+            $3->getBasicType() != EbtString)
+            parseContext.error($3->getLoc(), "this type not allowed", $3->getType().getBasicString(), "");
+        $$ = parseContext.intermediate.growAggregate($1, $3);
+    }
+
+spirv_storage_class_qualifier
+    : SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN {
+        $$.init($1.loc);
+        $$.qualifier.storage = EvqSpirvStorageClass;
+        $$.qualifier.spirvStorageClass = $3.i;
+    }
+    | SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN {
+        $$.init($1.loc);
+        parseContext.intermediate.insertSpirvRequirement($3);
+        $$.qualifier.storage = EvqSpirvStorageClass;
+        $$.qualifier.spirvStorageClass = $5.i;
+    }
+
+spirv_decorate_qualifier
+    : SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN{
+        $$.init($1.loc);
+        $$.qualifier.setSpirvDecorate($3.i);
+    }
+    | SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN{
+        $$.init($1.loc);
+        parseContext.intermediate.insertSpirvRequirement($3);
+        $$.qualifier.setSpirvDecorate($5.i);
+    }
+    | SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN {
+        $$.init($1.loc);
+        $$.qualifier.setSpirvDecorate($3.i, $5->getAsAggregate());
+    }
+    | SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN {
+        $$.init($1.loc);
+        parseContext.intermediate.insertSpirvRequirement($3);
+        $$.qualifier.setSpirvDecorate($5.i, $7->getAsAggregate());
+    }
+    | SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN {
+        $$.init($1.loc);
+        $$.qualifier.setSpirvDecorateId($3.i, $5->getAsAggregate());
+    }
+    | SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN {
+        $$.init($1.loc);
+        parseContext.intermediate.insertSpirvRequirement($3);
+        $$.qualifier.setSpirvDecorateId($5.i, $7->getAsAggregate());
+    }
+    | SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN {
+        $$.init($1.loc);
+        $$.qualifier.setSpirvDecorateString($3.i, $5->getAsAggregate());
+    }
+    | SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN {
+        $$.init($1.loc);
+        parseContext.intermediate.insertSpirvRequirement($3);
+        $$.qualifier.setSpirvDecorateString($5.i, $7->getAsAggregate());
+    }
+
+spirv_decorate_parameter_list
+    : spirv_decorate_parameter {
+        $$ = parseContext.intermediate.makeAggregate($1);
+    }
+    | spirv_decorate_parameter_list COMMA spirv_decorate_parameter {
+        $$ = parseContext.intermediate.growAggregate($1, $3);
+    }
+
+spirv_decorate_parameter
+    : FLOATCONSTANT {
+        $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true);
+    }
+    | INTCONSTANT {
+        $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true);
+    }
+    | UINTCONSTANT {
+        $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true);
+    }
+    | BOOLCONSTANT {
+        $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true);
+    }
+
+spirv_decorate_id_parameter_list
+    : constant_expression {
+        if ($1->getBasicType() != EbtFloat &&
+            $1->getBasicType() != EbtInt &&
+            $1->getBasicType() != EbtUint &&
+            $1->getBasicType() != EbtBool)
+            parseContext.error($1->getLoc(), "this type not allowed", $1->getType().getBasicString(), "");
+        $$ = parseContext.intermediate.makeAggregate($1);
+    }
+    | spirv_decorate_id_parameter_list COMMA constant_expression {
+        if ($3->getBasicType() != EbtFloat &&
+            $3->getBasicType() != EbtInt &&
+            $3->getBasicType() != EbtUint &&
+            $3->getBasicType() != EbtBool)
+            parseContext.error($3->getLoc(), "this type not allowed", $3->getType().getBasicString(), "");
+        $$ = parseContext.intermediate.growAggregate($1, $3);
+    }
+
+spirv_decorate_string_parameter_list
+    : STRING_LITERAL {
+        $$ = parseContext.intermediate.makeAggregate(
+            parseContext.intermediate.addConstantUnion($1.string, $1.loc, true));
+    }
+    | spirv_decorate_string_parameter_list COMMA STRING_LITERAL {
+        $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.string, $3.loc, true));
+    }
+
+spirv_type_specifier
+    : SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.setSpirvType(*$3, $5);
+    }
+    | SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.intermediate.insertSpirvRequirement($3);
+        $$.setSpirvType(*$5, $7);
+    }
+    | SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        $$.setSpirvType(*$3);
+    }
+    | SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN {
+        $$.init($1.loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.intermediate.insertSpirvRequirement($3);
+        $$.setSpirvType(*$5);
+    }
+
+spirv_type_parameter_list
+    : spirv_type_parameter {
+        $$ = $1;
+    }
+    | spirv_type_parameter_list COMMA spirv_type_parameter {
+        $$ = parseContext.mergeSpirvTypeParameters($1, $3);
+    }
+
+spirv_type_parameter
+    : constant_expression {
+        $$ = parseContext.makeSpirvTypeParameters($1->getLoc(), $1->getAsConstantUnion());
+    }
+
+spirv_instruction_qualifier
+    : SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN {
+        $$ = $3;
+    }
+    | SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN {
+        parseContext.intermediate.insertSpirvRequirement($3);
+        $$ = $5;
+    }
+
+spirv_instruction_qualifier_list
+    : spirv_instruction_qualifier_id {
+        $$ = $1;
+    }
+    | spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id {
+        $$ = parseContext.mergeSpirvInstruction($2.loc, $1, $3);
+    }
+
+spirv_instruction_qualifier_id
+    : IDENTIFIER EQUAL STRING_LITERAL {
+        $$ = parseContext.makeSpirvInstruction($2.loc, *$1.string, *$3.string);
+    }
+    | IDENTIFIER EQUAL INTCONSTANT {
+        $$ = parseContext.makeSpirvInstruction($2.loc, *$1.string, $3.i);
+    }
+
+
 %%
diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp
index da0658c..5ba6a6d 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp
+++ b/glslang/MachineIndependent/glslang_tab.cpp
@@ -438,251 +438,281 @@
   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  */
+  YYSYMBOL_SPIRV_INSTRUCTION = 317,        /* SPIRV_INSTRUCTION  */
+  YYSYMBOL_SPIRV_EXECUTION_MODE = 318,     /* SPIRV_EXECUTION_MODE  */
+  YYSYMBOL_SPIRV_EXECUTION_MODE_ID = 319,  /* SPIRV_EXECUTION_MODE_ID  */
+  YYSYMBOL_SPIRV_DECORATE = 320,           /* SPIRV_DECORATE  */
+  YYSYMBOL_SPIRV_DECORATE_ID = 321,        /* SPIRV_DECORATE_ID  */
+  YYSYMBOL_SPIRV_DECORATE_STRING = 322,    /* SPIRV_DECORATE_STRING  */
+  YYSYMBOL_SPIRV_TYPE = 323,               /* SPIRV_TYPE  */
+  YYSYMBOL_SPIRV_STORAGE_CLASS = 324,      /* SPIRV_STORAGE_CLASS  */
+  YYSYMBOL_SPIRV_BY_REFERENCE = 325,       /* SPIRV_BY_REFERENCE  */
+  YYSYMBOL_SPIRV_LITERAL = 326,            /* SPIRV_LITERAL  */
+  YYSYMBOL_LEFT_OP = 327,                  /* LEFT_OP  */
+  YYSYMBOL_RIGHT_OP = 328,                 /* RIGHT_OP  */
+  YYSYMBOL_INC_OP = 329,                   /* INC_OP  */
+  YYSYMBOL_DEC_OP = 330,                   /* DEC_OP  */
+  YYSYMBOL_LE_OP = 331,                    /* LE_OP  */
+  YYSYMBOL_GE_OP = 332,                    /* GE_OP  */
+  YYSYMBOL_EQ_OP = 333,                    /* EQ_OP  */
+  YYSYMBOL_NE_OP = 334,                    /* NE_OP  */
+  YYSYMBOL_AND_OP = 335,                   /* AND_OP  */
+  YYSYMBOL_OR_OP = 336,                    /* OR_OP  */
+  YYSYMBOL_XOR_OP = 337,                   /* XOR_OP  */
+  YYSYMBOL_MUL_ASSIGN = 338,               /* MUL_ASSIGN  */
+  YYSYMBOL_DIV_ASSIGN = 339,               /* DIV_ASSIGN  */
+  YYSYMBOL_ADD_ASSIGN = 340,               /* ADD_ASSIGN  */
+  YYSYMBOL_MOD_ASSIGN = 341,               /* MOD_ASSIGN  */
+  YYSYMBOL_LEFT_ASSIGN = 342,              /* LEFT_ASSIGN  */
+  YYSYMBOL_RIGHT_ASSIGN = 343,             /* RIGHT_ASSIGN  */
+  YYSYMBOL_AND_ASSIGN = 344,               /* AND_ASSIGN  */
+  YYSYMBOL_XOR_ASSIGN = 345,               /* XOR_ASSIGN  */
+  YYSYMBOL_OR_ASSIGN = 346,                /* OR_ASSIGN  */
+  YYSYMBOL_SUB_ASSIGN = 347,               /* SUB_ASSIGN  */
+  YYSYMBOL_STRING_LITERAL = 348,           /* STRING_LITERAL  */
+  YYSYMBOL_LEFT_PAREN = 349,               /* LEFT_PAREN  */
+  YYSYMBOL_RIGHT_PAREN = 350,              /* RIGHT_PAREN  */
+  YYSYMBOL_LEFT_BRACKET = 351,             /* LEFT_BRACKET  */
+  YYSYMBOL_RIGHT_BRACKET = 352,            /* RIGHT_BRACKET  */
+  YYSYMBOL_LEFT_BRACE = 353,               /* LEFT_BRACE  */
+  YYSYMBOL_RIGHT_BRACE = 354,              /* RIGHT_BRACE  */
+  YYSYMBOL_DOT = 355,                      /* DOT  */
+  YYSYMBOL_COMMA = 356,                    /* COMMA  */
+  YYSYMBOL_COLON = 357,                    /* COLON  */
+  YYSYMBOL_EQUAL = 358,                    /* EQUAL  */
+  YYSYMBOL_SEMICOLON = 359,                /* SEMICOLON  */
+  YYSYMBOL_BANG = 360,                     /* BANG  */
+  YYSYMBOL_DASH = 361,                     /* DASH  */
+  YYSYMBOL_TILDE = 362,                    /* TILDE  */
+  YYSYMBOL_PLUS = 363,                     /* PLUS  */
+  YYSYMBOL_STAR = 364,                     /* STAR  */
+  YYSYMBOL_SLASH = 365,                    /* SLASH  */
+  YYSYMBOL_PERCENT = 366,                  /* PERCENT  */
+  YYSYMBOL_LEFT_ANGLE = 367,               /* LEFT_ANGLE  */
+  YYSYMBOL_RIGHT_ANGLE = 368,              /* RIGHT_ANGLE  */
+  YYSYMBOL_VERTICAL_BAR = 369,             /* VERTICAL_BAR  */
+  YYSYMBOL_CARET = 370,                    /* CARET  */
+  YYSYMBOL_AMPERSAND = 371,                /* AMPERSAND  */
+  YYSYMBOL_QUESTION = 372,                 /* QUESTION  */
+  YYSYMBOL_INVARIANT = 373,                /* INVARIANT  */
+  YYSYMBOL_HIGH_PRECISION = 374,           /* HIGH_PRECISION  */
+  YYSYMBOL_MEDIUM_PRECISION = 375,         /* MEDIUM_PRECISION  */
+  YYSYMBOL_LOW_PRECISION = 376,            /* LOW_PRECISION  */
+  YYSYMBOL_PRECISION = 377,                /* PRECISION  */
+  YYSYMBOL_PACKED = 378,                   /* PACKED  */
+  YYSYMBOL_RESOURCE = 379,                 /* RESOURCE  */
+  YYSYMBOL_SUPERP = 380,                   /* SUPERP  */
+  YYSYMBOL_FLOATCONSTANT = 381,            /* FLOATCONSTANT  */
+  YYSYMBOL_INTCONSTANT = 382,              /* INTCONSTANT  */
+  YYSYMBOL_UINTCONSTANT = 383,             /* UINTCONSTANT  */
+  YYSYMBOL_BOOLCONSTANT = 384,             /* BOOLCONSTANT  */
+  YYSYMBOL_IDENTIFIER = 385,               /* IDENTIFIER  */
+  YYSYMBOL_TYPE_NAME = 386,                /* TYPE_NAME  */
+  YYSYMBOL_CENTROID = 387,                 /* CENTROID  */
+  YYSYMBOL_IN = 388,                       /* IN  */
+  YYSYMBOL_OUT = 389,                      /* OUT  */
+  YYSYMBOL_INOUT = 390,                    /* INOUT  */
+  YYSYMBOL_STRUCT = 391,                   /* STRUCT  */
+  YYSYMBOL_VOID = 392,                     /* VOID  */
+  YYSYMBOL_WHILE = 393,                    /* WHILE  */
+  YYSYMBOL_BREAK = 394,                    /* BREAK  */
+  YYSYMBOL_CONTINUE = 395,                 /* CONTINUE  */
+  YYSYMBOL_DO = 396,                       /* DO  */
+  YYSYMBOL_ELSE = 397,                     /* ELSE  */
+  YYSYMBOL_FOR = 398,                      /* FOR  */
+  YYSYMBOL_IF = 399,                       /* IF  */
+  YYSYMBOL_DISCARD = 400,                  /* DISCARD  */
+  YYSYMBOL_RETURN = 401,                   /* RETURN  */
+  YYSYMBOL_SWITCH = 402,                   /* SWITCH  */
+  YYSYMBOL_CASE = 403,                     /* CASE  */
+  YYSYMBOL_DEFAULT = 404,                  /* DEFAULT  */
+  YYSYMBOL_TERMINATE_INVOCATION = 405,     /* TERMINATE_INVOCATION  */
+  YYSYMBOL_TERMINATE_RAY = 406,            /* TERMINATE_RAY  */
+  YYSYMBOL_IGNORE_INTERSECTION = 407,      /* IGNORE_INTERSECTION  */
+  YYSYMBOL_UNIFORM = 408,                  /* UNIFORM  */
+  YYSYMBOL_SHARED = 409,                   /* SHARED  */
+  YYSYMBOL_BUFFER = 410,                   /* BUFFER  */
+  YYSYMBOL_FLAT = 411,                     /* FLAT  */
+  YYSYMBOL_SMOOTH = 412,                   /* SMOOTH  */
+  YYSYMBOL_LAYOUT = 413,                   /* LAYOUT  */
+  YYSYMBOL_DOUBLECONSTANT = 414,           /* DOUBLECONSTANT  */
+  YYSYMBOL_INT16CONSTANT = 415,            /* INT16CONSTANT  */
+  YYSYMBOL_UINT16CONSTANT = 416,           /* UINT16CONSTANT  */
+  YYSYMBOL_FLOAT16CONSTANT = 417,          /* FLOAT16CONSTANT  */
+  YYSYMBOL_INT32CONSTANT = 418,            /* INT32CONSTANT  */
+  YYSYMBOL_UINT32CONSTANT = 419,           /* UINT32CONSTANT  */
+  YYSYMBOL_INT64CONSTANT = 420,            /* INT64CONSTANT  */
+  YYSYMBOL_UINT64CONSTANT = 421,           /* UINT64CONSTANT  */
+  YYSYMBOL_SUBROUTINE = 422,               /* SUBROUTINE  */
+  YYSYMBOL_DEMOTE = 423,                   /* DEMOTE  */
+  YYSYMBOL_PAYLOADNV = 424,                /* PAYLOADNV  */
+  YYSYMBOL_PAYLOADINNV = 425,              /* PAYLOADINNV  */
+  YYSYMBOL_HITATTRNV = 426,                /* HITATTRNV  */
+  YYSYMBOL_CALLDATANV = 427,               /* CALLDATANV  */
+  YYSYMBOL_CALLDATAINNV = 428,             /* CALLDATAINNV  */
+  YYSYMBOL_PAYLOADEXT = 429,               /* PAYLOADEXT  */
+  YYSYMBOL_PAYLOADINEXT = 430,             /* PAYLOADINEXT  */
+  YYSYMBOL_HITATTREXT = 431,               /* HITATTREXT  */
+  YYSYMBOL_CALLDATAEXT = 432,              /* CALLDATAEXT  */
+  YYSYMBOL_CALLDATAINEXT = 433,            /* CALLDATAINEXT  */
+  YYSYMBOL_PATCH = 434,                    /* PATCH  */
+  YYSYMBOL_SAMPLE = 435,                   /* SAMPLE  */
+  YYSYMBOL_NONUNIFORM = 436,               /* NONUNIFORM  */
+  YYSYMBOL_COHERENT = 437,                 /* COHERENT  */
+  YYSYMBOL_VOLATILE = 438,                 /* VOLATILE  */
+  YYSYMBOL_RESTRICT = 439,                 /* RESTRICT  */
+  YYSYMBOL_READONLY = 440,                 /* READONLY  */
+  YYSYMBOL_WRITEONLY = 441,                /* WRITEONLY  */
+  YYSYMBOL_DEVICECOHERENT = 442,           /* DEVICECOHERENT  */
+  YYSYMBOL_QUEUEFAMILYCOHERENT = 443,      /* QUEUEFAMILYCOHERENT  */
+  YYSYMBOL_WORKGROUPCOHERENT = 444,        /* WORKGROUPCOHERENT  */
+  YYSYMBOL_SUBGROUPCOHERENT = 445,         /* SUBGROUPCOHERENT  */
+  YYSYMBOL_NONPRIVATE = 446,               /* NONPRIVATE  */
+  YYSYMBOL_SHADERCALLCOHERENT = 447,       /* SHADERCALLCOHERENT  */
+  YYSYMBOL_NOPERSPECTIVE = 448,            /* NOPERSPECTIVE  */
+  YYSYMBOL_EXPLICITINTERPAMD = 449,        /* EXPLICITINTERPAMD  */
+  YYSYMBOL_PERVERTEXNV = 450,              /* PERVERTEXNV  */
+  YYSYMBOL_PERPRIMITIVENV = 451,           /* PERPRIMITIVENV  */
+  YYSYMBOL_PERVIEWNV = 452,                /* PERVIEWNV  */
+  YYSYMBOL_PERTASKNV = 453,                /* PERTASKNV  */
+  YYSYMBOL_PRECISE = 454,                  /* PRECISE  */
+  YYSYMBOL_YYACCEPT = 455,                 /* $accept  */
+  YYSYMBOL_variable_identifier = 456,      /* variable_identifier  */
+  YYSYMBOL_primary_expression = 457,       /* primary_expression  */
+  YYSYMBOL_postfix_expression = 458,       /* postfix_expression  */
+  YYSYMBOL_integer_expression = 459,       /* integer_expression  */
+  YYSYMBOL_function_call = 460,            /* function_call  */
+  YYSYMBOL_function_call_or_method = 461,  /* function_call_or_method  */
+  YYSYMBOL_function_call_generic = 462,    /* function_call_generic  */
+  YYSYMBOL_function_call_header_no_parameters = 463, /* function_call_header_no_parameters  */
+  YYSYMBOL_function_call_header_with_parameters = 464, /* function_call_header_with_parameters  */
+  YYSYMBOL_function_call_header = 465,     /* function_call_header  */
+  YYSYMBOL_function_identifier = 466,      /* function_identifier  */
+  YYSYMBOL_unary_expression = 467,         /* unary_expression  */
+  YYSYMBOL_unary_operator = 468,           /* unary_operator  */
+  YYSYMBOL_multiplicative_expression = 469, /* multiplicative_expression  */
+  YYSYMBOL_additive_expression = 470,      /* additive_expression  */
+  YYSYMBOL_shift_expression = 471,         /* shift_expression  */
+  YYSYMBOL_relational_expression = 472,    /* relational_expression  */
+  YYSYMBOL_equality_expression = 473,      /* equality_expression  */
+  YYSYMBOL_and_expression = 474,           /* and_expression  */
+  YYSYMBOL_exclusive_or_expression = 475,  /* exclusive_or_expression  */
+  YYSYMBOL_inclusive_or_expression = 476,  /* inclusive_or_expression  */
+  YYSYMBOL_logical_and_expression = 477,   /* logical_and_expression  */
+  YYSYMBOL_logical_xor_expression = 478,   /* logical_xor_expression  */
+  YYSYMBOL_logical_or_expression = 479,    /* logical_or_expression  */
+  YYSYMBOL_conditional_expression = 480,   /* conditional_expression  */
+  YYSYMBOL_481_1 = 481,                    /* $@1  */
+  YYSYMBOL_assignment_expression = 482,    /* assignment_expression  */
+  YYSYMBOL_assignment_operator = 483,      /* assignment_operator  */
+  YYSYMBOL_expression = 484,               /* expression  */
+  YYSYMBOL_constant_expression = 485,      /* constant_expression  */
+  YYSYMBOL_declaration = 486,              /* declaration  */
+  YYSYMBOL_block_structure = 487,          /* block_structure  */
+  YYSYMBOL_488_2 = 488,                    /* $@2  */
+  YYSYMBOL_identifier_list = 489,          /* identifier_list  */
+  YYSYMBOL_function_prototype = 490,       /* function_prototype  */
+  YYSYMBOL_function_declarator = 491,      /* function_declarator  */
+  YYSYMBOL_function_header_with_parameters = 492, /* function_header_with_parameters  */
+  YYSYMBOL_function_header = 493,          /* function_header  */
+  YYSYMBOL_parameter_declarator = 494,     /* parameter_declarator  */
+  YYSYMBOL_parameter_declaration = 495,    /* parameter_declaration  */
+  YYSYMBOL_parameter_type_specifier = 496, /* parameter_type_specifier  */
+  YYSYMBOL_init_declarator_list = 497,     /* init_declarator_list  */
+  YYSYMBOL_single_declaration = 498,       /* single_declaration  */
+  YYSYMBOL_fully_specified_type = 499,     /* fully_specified_type  */
+  YYSYMBOL_invariant_qualifier = 500,      /* invariant_qualifier  */
+  YYSYMBOL_interpolation_qualifier = 501,  /* interpolation_qualifier  */
+  YYSYMBOL_layout_qualifier = 502,         /* layout_qualifier  */
+  YYSYMBOL_layout_qualifier_id_list = 503, /* layout_qualifier_id_list  */
+  YYSYMBOL_layout_qualifier_id = 504,      /* layout_qualifier_id  */
+  YYSYMBOL_precise_qualifier = 505,        /* precise_qualifier  */
+  YYSYMBOL_type_qualifier = 506,           /* type_qualifier  */
+  YYSYMBOL_single_type_qualifier = 507,    /* single_type_qualifier  */
+  YYSYMBOL_storage_qualifier = 508,        /* storage_qualifier  */
+  YYSYMBOL_non_uniform_qualifier = 509,    /* non_uniform_qualifier  */
+  YYSYMBOL_type_name_list = 510,           /* type_name_list  */
+  YYSYMBOL_type_specifier = 511,           /* type_specifier  */
+  YYSYMBOL_array_specifier = 512,          /* array_specifier  */
+  YYSYMBOL_type_parameter_specifier_opt = 513, /* type_parameter_specifier_opt  */
+  YYSYMBOL_type_parameter_specifier = 514, /* type_parameter_specifier  */
+  YYSYMBOL_type_parameter_specifier_list = 515, /* type_parameter_specifier_list  */
+  YYSYMBOL_type_specifier_nonarray = 516,  /* type_specifier_nonarray  */
+  YYSYMBOL_precision_qualifier = 517,      /* precision_qualifier  */
+  YYSYMBOL_struct_specifier = 518,         /* struct_specifier  */
+  YYSYMBOL_519_3 = 519,                    /* $@3  */
+  YYSYMBOL_520_4 = 520,                    /* $@4  */
+  YYSYMBOL_struct_declaration_list = 521,  /* struct_declaration_list  */
+  YYSYMBOL_struct_declaration = 522,       /* struct_declaration  */
+  YYSYMBOL_struct_declarator_list = 523,   /* struct_declarator_list  */
+  YYSYMBOL_struct_declarator = 524,        /* struct_declarator  */
+  YYSYMBOL_initializer = 525,              /* initializer  */
+  YYSYMBOL_initializer_list = 526,         /* initializer_list  */
+  YYSYMBOL_declaration_statement = 527,    /* declaration_statement  */
+  YYSYMBOL_statement = 528,                /* statement  */
+  YYSYMBOL_simple_statement = 529,         /* simple_statement  */
+  YYSYMBOL_demote_statement = 530,         /* demote_statement  */
+  YYSYMBOL_compound_statement = 531,       /* compound_statement  */
+  YYSYMBOL_532_5 = 532,                    /* $@5  */
+  YYSYMBOL_533_6 = 533,                    /* $@6  */
+  YYSYMBOL_statement_no_new_scope = 534,   /* statement_no_new_scope  */
+  YYSYMBOL_statement_scoped = 535,         /* statement_scoped  */
+  YYSYMBOL_536_7 = 536,                    /* $@7  */
+  YYSYMBOL_537_8 = 537,                    /* $@8  */
+  YYSYMBOL_compound_statement_no_new_scope = 538, /* compound_statement_no_new_scope  */
+  YYSYMBOL_statement_list = 539,           /* statement_list  */
+  YYSYMBOL_expression_statement = 540,     /* expression_statement  */
+  YYSYMBOL_selection_statement = 541,      /* selection_statement  */
+  YYSYMBOL_selection_statement_nonattributed = 542, /* selection_statement_nonattributed  */
+  YYSYMBOL_selection_rest_statement = 543, /* selection_rest_statement  */
+  YYSYMBOL_condition = 544,                /* condition  */
+  YYSYMBOL_switch_statement = 545,         /* switch_statement  */
+  YYSYMBOL_switch_statement_nonattributed = 546, /* switch_statement_nonattributed  */
+  YYSYMBOL_547_9 = 547,                    /* $@9  */
+  YYSYMBOL_switch_statement_list = 548,    /* switch_statement_list  */
+  YYSYMBOL_case_label = 549,               /* case_label  */
+  YYSYMBOL_iteration_statement = 550,      /* iteration_statement  */
+  YYSYMBOL_iteration_statement_nonattributed = 551, /* iteration_statement_nonattributed  */
+  YYSYMBOL_552_10 = 552,                   /* $@10  */
+  YYSYMBOL_553_11 = 553,                   /* $@11  */
+  YYSYMBOL_554_12 = 554,                   /* $@12  */
+  YYSYMBOL_for_init_statement = 555,       /* for_init_statement  */
+  YYSYMBOL_conditionopt = 556,             /* conditionopt  */
+  YYSYMBOL_for_rest_statement = 557,       /* for_rest_statement  */
+  YYSYMBOL_jump_statement = 558,           /* jump_statement  */
+  YYSYMBOL_translation_unit = 559,         /* translation_unit  */
+  YYSYMBOL_external_declaration = 560,     /* external_declaration  */
+  YYSYMBOL_function_definition = 561,      /* function_definition  */
+  YYSYMBOL_562_13 = 562,                   /* $@13  */
+  YYSYMBOL_attribute = 563,                /* attribute  */
+  YYSYMBOL_attribute_list = 564,           /* attribute_list  */
+  YYSYMBOL_single_attribute = 565,         /* single_attribute  */
+  YYSYMBOL_spirv_requirements_list = 566,  /* spirv_requirements_list  */
+  YYSYMBOL_spirv_requirements_parameter = 567, /* spirv_requirements_parameter  */
+  YYSYMBOL_spirv_extension_list = 568,     /* spirv_extension_list  */
+  YYSYMBOL_spirv_capability_list = 569,    /* spirv_capability_list  */
+  YYSYMBOL_spirv_execution_mode_qualifier = 570, /* spirv_execution_mode_qualifier  */
+  YYSYMBOL_spirv_execution_mode_parameter_list = 571, /* spirv_execution_mode_parameter_list  */
+  YYSYMBOL_spirv_execution_mode_parameter = 572, /* spirv_execution_mode_parameter  */
+  YYSYMBOL_spirv_execution_mode_id_parameter_list = 573, /* spirv_execution_mode_id_parameter_list  */
+  YYSYMBOL_spirv_storage_class_qualifier = 574, /* spirv_storage_class_qualifier  */
+  YYSYMBOL_spirv_decorate_qualifier = 575, /* spirv_decorate_qualifier  */
+  YYSYMBOL_spirv_decorate_parameter_list = 576, /* spirv_decorate_parameter_list  */
+  YYSYMBOL_spirv_decorate_parameter = 577, /* spirv_decorate_parameter  */
+  YYSYMBOL_spirv_decorate_id_parameter_list = 578, /* spirv_decorate_id_parameter_list  */
+  YYSYMBOL_spirv_decorate_string_parameter_list = 579, /* spirv_decorate_string_parameter_list  */
+  YYSYMBOL_spirv_type_specifier = 580,     /* spirv_type_specifier  */
+  YYSYMBOL_spirv_type_parameter_list = 581, /* spirv_type_parameter_list  */
+  YYSYMBOL_spirv_type_parameter = 582,     /* spirv_type_parameter  */
+  YYSYMBOL_spirv_instruction_qualifier = 583, /* spirv_instruction_qualifier  */
+  YYSYMBOL_spirv_instruction_qualifier_list = 584, /* spirv_instruction_qualifier_list  */
+  YYSYMBOL_spirv_instruction_qualifier_id = 585 /* spirv_instruction_qualifier_id  */
 };
 typedef enum yysymbol_kind_t yysymbol_kind_t;
 
 
 /* Second part of user prologue.  */
-#line 133 "MachineIndependent/glslang.y"
+#line 136 "MachineIndependent/glslang.y"
 
 
 /* windows only pragma */
@@ -698,7 +728,7 @@
 extern int yylex(YYSTYPE*, TParseContext&);
 
 
-#line 702 "MachineIndependent/glslang_tab.cpp"
+#line 732 "MachineIndependent/glslang_tab.cpp"
 
 
 #ifdef short
@@ -1002,21 +1032,21 @@
 #endif /* !YYCOPY_NEEDED */
 
 /* YYFINAL -- State number of the termination state.  */
-#define YYFINAL  416
+#define YYFINAL  442
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   10537
+#define YYLAST   12452
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  445
+#define YYNTOKENS  455
 /* YYNNTS -- Number of nonterminals.  */
-#define YYNNTS  111
+#define YYNNTS  131
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  617
+#define YYNRULES  683
 /* YYNSTATES -- Number of states.  */
-#define YYNSTATES  765
+#define YYNSTATES  929
 
 /* YYMAXUTOK -- Last valid token kind.  */
-#define YYMAXUTOK   699
+#define YYMAXUTOK   709
 
 
 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
@@ -1099,75 +1129,83 @@
      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
+     435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
+     445,   446,   447,   448,   449,   450,   451,   452,   453,   454
 };
 
 #if YYDEBUG
   /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_int16 yyrline[] =
 {
-       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
+       0,   392,   392,   398,   401,   406,   409,   412,   416,   420,
+     423,   427,   431,   435,   439,   443,   447,   453,   461,   464,
+     467,   470,   473,   478,   486,   493,   500,   506,   510,   517,
+     520,   526,   533,   543,   551,   556,   584,   593,   599,   603,
+     607,   627,   628,   629,   630,   636,   637,   642,   647,   656,
+     657,   662,   670,   671,   677,   686,   687,   692,   697,   702,
+     710,   711,   720,   732,   733,   742,   743,   752,   753,   762,
+     763,   771,   772,   780,   781,   789,   790,   790,   808,   809,
+     825,   829,   833,   837,   842,   846,   850,   854,   858,   862,
+     866,   873,   876,   887,   894,   900,   907,   913,   918,   925,
+     929,   933,   937,   942,   947,   956,   956,   967,   971,   978,
+     982,   988,   994,  1004,  1007,  1014,  1022,  1042,  1065,  1080,
+    1105,  1116,  1126,  1136,  1146,  1155,  1158,  1162,  1166,  1171,
+    1179,  1186,  1191,  1196,  1201,  1210,  1220,  1247,  1256,  1263,
+    1271,  1278,  1285,  1293,  1303,  1310,  1321,  1327,  1330,  1337,
+    1341,  1345,  1354,  1364,  1367,  1378,  1381,  1384,  1388,  1392,
+    1397,  1401,  1404,  1409,  1413,  1418,  1427,  1431,  1436,  1442,
+    1448,  1455,  1460,  1468,  1474,  1486,  1500,  1506,  1511,  1519,
+    1527,  1535,  1543,  1551,  1559,  1567,  1575,  1582,  1589,  1593,
+    1598,  1603,  1608,  1613,  1618,  1623,  1627,  1631,  1635,  1639,
+    1645,  1656,  1663,  1666,  1675,  1680,  1690,  1695,  1703,  1707,
+    1717,  1720,  1726,  1732,  1739,  1749,  1753,  1757,  1761,  1766,
+    1770,  1775,  1780,  1785,  1790,  1795,  1800,  1805,  1810,  1815,
+    1821,  1827,  1833,  1838,  1843,  1848,  1853,  1858,  1863,  1868,
+    1873,  1878,  1883,  1888,  1894,  1901,  1906,  1911,  1916,  1921,
+    1926,  1931,  1936,  1941,  1946,  1951,  1956,  1964,  1972,  1980,
+    1986,  1992,  1998,  2004,  2010,  2016,  2022,  2028,  2034,  2040,
+    2046,  2052,  2058,  2064,  2070,  2076,  2082,  2088,  2094,  2100,
+    2106,  2112,  2118,  2124,  2130,  2136,  2142,  2148,  2154,  2160,
+    2166,  2172,  2178,  2186,  2194,  2202,  2210,  2218,  2226,  2234,
+    2242,  2250,  2258,  2266,  2274,  2280,  2286,  2292,  2298,  2304,
+    2310,  2316,  2322,  2328,  2334,  2340,  2346,  2352,  2358,  2364,
+    2370,  2376,  2382,  2388,  2394,  2400,  2406,  2412,  2418,  2424,
+    2430,  2436,  2442,  2448,  2454,  2460,  2466,  2472,  2478,  2484,
+    2490,  2494,  2498,  2502,  2507,  2513,  2518,  2523,  2528,  2533,
+    2538,  2543,  2549,  2554,  2559,  2564,  2569,  2574,  2580,  2586,
+    2592,  2598,  2604,  2610,  2616,  2622,  2628,  2634,  2640,  2646,
+    2652,  2658,  2663,  2668,  2673,  2678,  2683,  2688,  2694,  2699,
+    2704,  2709,  2714,  2719,  2724,  2729,  2735,  2740,  2745,  2750,
+    2755,  2760,  2765,  2770,  2775,  2780,  2785,  2790,  2795,  2800,
+    2805,  2811,  2816,  2821,  2827,  2833,  2838,  2843,  2848,  2854,
+    2859,  2864,  2869,  2875,  2880,  2885,  2890,  2896,  2901,  2906,
+    2911,  2917,  2923,  2929,  2935,  2940,  2946,  2952,  2958,  2963,
+    2968,  2973,  2978,  2983,  2989,  2994,  2999,  3004,  3010,  3015,
+    3020,  3025,  3031,  3036,  3041,  3046,  3052,  3057,  3062,  3067,
+    3073,  3078,  3083,  3088,  3094,  3099,  3104,  3109,  3115,  3120,
+    3125,  3130,  3136,  3141,  3146,  3151,  3157,  3162,  3167,  3172,
+    3178,  3183,  3188,  3193,  3199,  3204,  3209,  3214,  3220,  3225,
+    3230,  3235,  3241,  3246,  3251,  3256,  3262,  3267,  3272,  3277,
+    3283,  3288,  3293,  3298,  3303,  3308,  3313,  3318,  3323,  3328,
+    3333,  3338,  3343,  3348,  3353,  3358,  3363,  3368,  3373,  3378,
+    3383,  3388,  3393,  3398,  3403,  3409,  3415,  3421,  3427,  3434,
+    3441,  3447,  3453,  3459,  3465,  3471,  3477,  3483,  3488,  3493,
+    3509,  3514,  3519,  3527,  3527,  3538,  3538,  3548,  3551,  3564,
+    3586,  3613,  3617,  3623,  3628,  3639,  3643,  3649,  3655,  3666,
+    3669,  3676,  3680,  3681,  3687,  3688,  3689,  3690,  3691,  3692,
+    3693,  3695,  3701,  3710,  3711,  3715,  3711,  3727,  3728,  3732,
+    3732,  3739,  3739,  3753,  3756,  3764,  3772,  3783,  3784,  3788,
+    3792,  3800,  3807,  3811,  3819,  3823,  3836,  3840,  3848,  3848,
+    3868,  3871,  3877,  3889,  3901,  3905,  3913,  3913,  3928,  3928,
+    3946,  3946,  3967,  3970,  3976,  3979,  3985,  3989,  3996,  4001,
+    4006,  4013,  4016,  4020,  4025,  4029,  4039,  4043,  4052,  4055,
+    4059,  4068,  4068,  4110,  4115,  4118,  4123,  4126,  4133,  4136,
+    4141,  4144,  4149,  4152,  4157,  4160,  4165,  4169,  4174,  4178,
+    4183,  4187,  4194,  4197,  4202,  4205,  4208,  4211,  4214,  4219,
+    4228,  4239,  4244,  4252,  4256,  4261,  4265,  4270,  4274,  4279,
+    4283,  4290,  4293,  4298,  4301,  4304,  4307,  4312,  4320,  4330,
+    4334,  4339,  4343,  4348,  4352,  4359,  4362,  4367,  4372,  4375,
+    4381,  4384,  4389,  4392
 };
 #endif
 
@@ -1254,17 +1292,20 @@
   "F16TEXTURECUBEARRAY", "F16TEXTUREBUFFER", "F16TEXTURE2DMS",
   "F16TEXTURE2DMSARRAY", "SUBPASSINPUT", "SUBPASSINPUTMS", "ISUBPASSINPUT",
   "ISUBPASSINPUTMS", "USUBPASSINPUT", "USUBPASSINPUTMS", "F16SUBPASSINPUT",
-  "F16SUBPASSINPUTMS", "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP",
-  "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN",
-  "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN",
-  "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "STRING_LITERAL",
-  "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET", "RIGHT_BRACKET",
-  "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON", "EQUAL",
-  "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH", "PERCENT",
-  "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", "AMPERSAND",
-  "QUESTION", "INVARIANT", "HIGH_PRECISION", "MEDIUM_PRECISION",
-  "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", "SUPERP",
-  "FLOATCONSTANT", "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT",
+  "F16SUBPASSINPUTMS", "SPIRV_INSTRUCTION", "SPIRV_EXECUTION_MODE",
+  "SPIRV_EXECUTION_MODE_ID", "SPIRV_DECORATE", "SPIRV_DECORATE_ID",
+  "SPIRV_DECORATE_STRING", "SPIRV_TYPE", "SPIRV_STORAGE_CLASS",
+  "SPIRV_BY_REFERENCE", "SPIRV_LITERAL", "LEFT_OP", "RIGHT_OP", "INC_OP",
+  "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP",
+  "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN",
+  "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN",
+  "SUB_ASSIGN", "STRING_LITERAL", "LEFT_PAREN", "RIGHT_PAREN",
+  "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT",
+  "COMMA", "COLON", "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS",
+  "STAR", "SLASH", "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR",
+  "CARET", "AMPERSAND", "QUESTION", "INVARIANT", "HIGH_PRECISION",
+  "MEDIUM_PRECISION", "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE",
+  "SUPERP", "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", "TERMINATE_INVOCATION",
@@ -1317,7 +1358,18 @@
   "for_init_statement", "conditionopt", "for_rest_statement",
   "jump_statement", "translation_unit", "external_declaration",
   "function_definition", "$@13", "attribute", "attribute_list",
-  "single_attribute", YY_NULLPTR
+  "single_attribute", "spirv_requirements_list",
+  "spirv_requirements_parameter", "spirv_extension_list",
+  "spirv_capability_list", "spirv_execution_mode_qualifier",
+  "spirv_execution_mode_parameter_list", "spirv_execution_mode_parameter",
+  "spirv_execution_mode_id_parameter_list",
+  "spirv_storage_class_qualifier", "spirv_decorate_qualifier",
+  "spirv_decorate_parameter_list", "spirv_decorate_parameter",
+  "spirv_decorate_id_parameter_list",
+  "spirv_decorate_string_parameter_list", "spirv_type_specifier",
+  "spirv_type_parameter_list", "spirv_type_parameter",
+  "spirv_instruction_qualifier", "spirv_instruction_qualifier_list",
+  "spirv_instruction_qualifier_id", YY_NULLPTR
 };
 
 static const char *
@@ -1376,16 +1428,17 @@
      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
+     695,   696,   697,   698,   699,   700,   701,   702,   703,   704,
+     705,   706,   707,   708,   709
 };
 #endif
 
-#define YYPACT_NINF (-733)
+#define YYPACT_NINF (-859)
 
 #define yypact_value_is_default(Yyn) \
   ((Yyn) == YYPACT_NINF)
 
-#define YYTABLE_NINF (-560)
+#define YYTABLE_NINF (-570)
 
 #define yytable_value_is_error(Yyn) \
   0
@@ -1394,83 +1447,99 @@
      STATE-NUM.  */
 static const yytype_int16 yypact[] =
 {
-    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
+    4548,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -312,  -274,  -244,  -212,  -208,
+    -201,  -181,  -169,  -859,  -859,  -194,  -859,  -859,  -859,  -859,
+    -859,  -285,  -859,  -859,  -859,  -859,  -859,  -317,  -859,  -859,
+    -859,  -859,  -859,  -859,  -132,   -73,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -329,   -70,
+    -158,  -145,  7712,  -221,  -859,  -164,  -859,  -859,  -859,  -859,
+    5452,  -859,  -859,  -859,  -859,   -68,  -859,  -859,   932,  -859,
+    -859,  7712,   -55,  -859,  -859,  -859,  5904,   -80,  -154,  -150,
+    -142,  -135,  -130,   -80,  -129,   -79, 12060,  -859,   -45,  -354,
+     -76,  -859,  -308,  -859,   -43,   -40,  7712,  -859,  -859,  -859,
+    7712,   -72,   -71,  -859,  -265,  -859,  -257,  -859,  -859, 10761,
+     -39,  -859,  -859,  -859,   -35,   -69,  7712,  -859,   -42,   -38,
+     -37,  -859,  -302,  -859,  -235,   -32,   -33,   -28,   -27,  -217,
+     -26,   -23,   -22,   -21,   -20,   -16,  -216,   -29,   -15,   -31,
+    -303,  -859,   -13,  7712,  -859,   -14,  -859,  -214,  -859,  -859,
+    -205,  9029,  -859,  -279,  1384,  -859,  -859,  -859,  -859,  -859,
+     -39,  -299,  -859,  9462,  -275,  -859,   -34,  -859,  -137, 10761,
+   10761,  -859, 10761,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -248,  -859,  -859,  -859,    -3,  -203, 11194,    -1,
+    -859, 10761,  -859,  -859,  -310,     3,   -40,     1,  -859,  -309,
+     -80,  -859,   -30,  -859,  -319,     5,  -128, 10761,  -124,  -859,
+    -157,  -122, 10761,  -120,    10,  -118,   -80,  -859, 11627,  -859,
+    -116, 10761,     7,   -79,  -859,  7712,   -25,  6356,  -859,  7712,
+   10761,  -859,  -354,  -859,   -19,  -859,  -859,   -78,  -263,   -94,
+    -298,   -52,   -18,    -8,   -12,    29,    28,  -301,    15,  9895,
+    -859,    16,  -859,  -859,    19,    12,    17,  -859,    20,    23,
+      18, 10328,    24, 10761,    21,    22,    25,    27,    30,  -215,
+    -859,  -859,  -117,  -859,   -70,    26,    34,  -859,  -859,  -859,
+    -859,  -859,  1836,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  5000,     3,  9462,  -264,  8163,  -859,  -859,  9462,
+    7712,  -859,   -11,  -859,  -859,  -859,  -195,  -859,  -859, 10761,
+      -6,  -859,  -859, 10761,    37,  -859,  -859,  -859, 10761,  -859,
+    -859,  -859,  -322,  -859,  -859,  -192,    35,  -859,  -859,  -859,
+    -859,  -859,  -859,  -179,  -859,  -178,  -859,  -859,  -177,    32,
+    -859,  -859,  -859,  -859,  -175,  -859,  -174,  -859,  -167,    36,
+    -859,  -166,    38,  -165,    35,  -859,  -163,  -859,    45,    46,
+    -859,  -859,   -25,   -39,  -115,  -859,  -859,  -859,  6808,  -859,
+    -859,  -859, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761,
+   10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761,
+   10761,  -859,  -859,  -859,    51,  -859,  2288,  -859,  -859,  -859,
+    2288,  -859, 10761,  -859,  -859,   -88, 10761,   -63,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859, 10761, 10761,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  9462,  -859,  -859,  -108,  -859,  7260,  -859,
+    -859,    52,    53,  -859,  -859,  -859,  -859,  -859,  -138,  -136,
+    -859,  -304,  -859,  -319,  -859,  -319,  -859, 10761, 10761,  -859,
+    -157,  -859,  -157,  -859, 10761, 10761,  -859,    65,    10,  -859,
+   11627,  -859, 10761,  -859,  -859,   -86,     3,   -25,  -859,  -859,
+    -859,  -859,  -859,   -78,   -78,  -263,  -263,   -94,   -94,   -94,
+     -94,  -298,  -298,   -52,   -18,    -8,   -12,    29,    28, 10761,
+    -859,  2288,  4096,    31,  3644,  -156,  -859,  -155,  -859,  -859,
+    -859,  -859,  -859,  8596,  -859,  -859,  -859,    66,  -859,    39,
+    -859,  -153,  -859,  -151,  -859,  -148,  -859,  -146,  -859,  -144,
+    -143,  -859,  -859,  -859,   -61,    64,    53,    40,    72,    74,
+    -859,  -859,  4096,    75,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859, 10761,  -859,    71,  2740, 10761,
+    -859,    73,    81,    41,    80,  3192,  -859,    83,  -859,  9462,
+    -859,  -859,  -859,  -141, 10761,  2740,    75,  -859,  -859,  2288,
+    -859,    78,    53,  -859,  -859,  2288,    86,  -859,  -859
 };
 
   /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
@@ -1478,117 +1547,137 @@
      means the default is an error.  */
 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,
-     225,   226,   227,   228,   229,   230,   231,   232,   233,   234,
-     336,   337,   338,   339,   340,   341,   342,   362,   363,   364,
-     365,   366,   367,   368,   377,   390,   391,   378,   379,   381,
-     380,   382,   383,   384,   385,   386,   387,   388,   389,   165,
-     166,   236,   237,   235,   238,   245,   246,   243,   244,   241,
-     242,   239,   240,   268,   269,   270,   280,   281,   282,   265,
-     266,   267,   277,   278,   279,   262,   263,   264,   274,   275,
-     276,   259,   260,   261,   271,   272,   273,   247,   248,   249,
-     283,   284,   285,   250,   251,   252,   295,   296,   297,   253,
-     254,   255,   307,   308,   309,   256,   257,   258,   319,   320,
-     321,   286,   287,   288,   289,   290,   291,   292,   293,   294,
-     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,   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,   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,   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,   166,   219,   217,   218,   216,   223,   224,   225,   226,
+     227,   228,   229,   230,   231,   220,   221,   222,   232,   233,
+     234,   235,   236,   237,   238,   239,   240,   241,   242,   243,
+     345,   346,   347,   348,   349,   350,   351,   371,   372,   373,
+     374,   375,   376,   377,   386,   399,   400,   387,   388,   390,
+     389,   391,   392,   393,   394,   395,   396,   397,   398,   174,
+     175,   245,   246,   244,   247,   254,   255,   252,   253,   250,
+     251,   248,   249,   277,   278,   279,   289,   290,   291,   274,
+     275,   276,   286,   287,   288,   271,   272,   273,   283,   284,
+     285,   268,   269,   270,   280,   281,   282,   256,   257,   258,
+     292,   293,   294,   259,   260,   261,   304,   305,   306,   262,
+     263,   264,   316,   317,   318,   265,   266,   267,   328,   329,
+     330,   295,   296,   297,   298,   299,   300,   301,   302,   303,
+     307,   308,   309,   310,   311,   312,   313,   314,   315,   319,
+     320,   321,   322,   323,   324,   325,   326,   327,   331,   332,
+     333,   334,   335,   336,   337,   338,   339,   343,   340,   341,
+     342,   524,   525,   526,   355,   356,   379,   382,   344,   353,
+     354,   370,   352,   401,   402,   405,   406,   407,   409,   410,
+     411,   413,   414,   415,   417,   418,   514,   515,   378,   380,
+     381,   357,   358,   359,   403,   360,   364,   365,   368,   408,
+     412,   416,   361,   362,   366,   367,   404,   363,   369,   448,
+     450,   451,   452,   454,   455,   456,   458,   459,   460,   462,
+     463,   464,   466,   467,   468,   470,   471,   472,   474,   475,
+     476,   478,   479,   480,   482,   483,   484,   486,   487,   488,
+     490,   491,   449,   453,   457,   461,   465,   473,   477,   481,
+     469,   485,   489,   492,   493,   494,   495,   496,   497,   498,
+     499,   500,   501,   502,   503,   504,   505,   506,   507,   508,
+     509,   510,   511,   512,   513,   383,   384,   385,   419,   428,
+     430,   424,   429,   431,   432,   434,   435,   436,   438,   439,
+     440,   442,   443,   444,   446,   447,   420,   421,   422,   433,
+     423,   425,   426,   427,   437,   441,   445,   516,   517,   520,
+     521,   522,   523,   518,   519,     0,     0,     0,     0,     0,
+       0,     0,     0,   164,   165,     0,   620,   137,   530,   531,
+     532,     0,   529,   170,   168,   169,   167,     0,   215,   171,
+     172,   173,   139,   138,     0,   199,   180,   182,   178,   184,
+     186,   181,   183,   179,   185,   187,   176,   177,   201,   188,
+     195,   196,   197,   198,   189,   190,   191,   192,   193,   194,
+     140,   141,   142,   143,   144,   145,   152,   619,     0,   621,
+       0,   114,   113,     0,   125,   130,   159,   158,   156,   160,
+       0,   153,   155,   161,   135,   211,   157,   528,     0,   616,
+     618,     0,     0,   162,   163,   527,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   535,     0,     0,
+       0,    99,     0,    94,     0,   109,     0,   121,   115,   123,
+       0,   124,     0,    97,   131,   102,     0,   154,   136,     0,
+     204,   210,     1,   617,     0,     0,     0,    96,     0,     0,
+       0,   628,     0,   680,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   626,
+       0,   624,     0,     0,   533,   149,   151,     0,   147,   202,
+       0,     0,   100,     0,     0,   622,   110,   116,   120,   122,
+     118,   126,   117,     0,   132,   105,     0,   103,     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,
+     213,     0,    36,    34,     0,   205,   111,     0,    95,     0,
+       0,   678,     0,   636,     0,     0,     0,     0,     0,   653,
+       0,     0,     0,     0,     0,     0,     0,   673,     0,   651,
+       0,     0,     0,     0,    98,     0,     0,     0,   537,     0,
+       0,   146,     0,   200,     0,   206,    45,    49,    52,    55,
+      60,    63,    65,    67,    69,    71,    73,    75,     0,     0,
+     101,   564,   573,   577,     0,     0,     0,   598,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,    45,
+      78,    91,     0,   551,     0,   161,   135,   554,   575,   553,
+     561,   552,     0,   555,   556,   579,   557,   586,   558,   559,
+     594,   560,     0,   119,     0,   127,     0,   545,   134,     0,
+       0,   107,     0,   104,    38,    39,     0,    22,    23,     0,
+       0,    28,    27,     0,   215,    31,    33,    40,     0,   212,
+     112,   682,     0,   683,   629,     0,     0,   681,   648,   644,
+     645,   646,   647,     0,   642,     0,    93,   649,     0,     0,
+     663,   664,   665,   666,     0,   661,     0,   667,     0,     0,
+     669,     0,     0,     0,     2,   677,     0,   675,     0,     0,
+     623,   625,     0,   543,     0,   541,   536,   538,     0,   150,
+     148,   203,     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,    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
+       0,    76,   207,   208,     0,   563,     0,   596,   609,   608,
+       0,   600,     0,   612,   610,     0,     0,     0,   593,   613,
+     614,   615,   562,    81,    82,    84,    83,    86,    87,    88,
+      89,    90,    85,    80,     0,     0,   578,   574,   576,   580,
+     587,   595,   129,     0,   548,   549,     0,   133,     0,   108,
+       4,     0,    24,    21,    32,   214,   632,   634,     0,     0,
+     679,     0,   638,     0,   637,     0,   640,     0,     0,   655,
+       0,   654,     0,   657,     0,     0,   659,     0,     0,   674,
+       0,   671,     0,   652,   627,     0,   544,     0,   539,   534,
+      46,    47,    48,    51,    50,    53,    54,    58,    59,    56,
+      57,    61,    62,    64,    66,    68,    70,    72,    74,     0,
+     209,   565,     0,     0,     0,     0,   611,     0,   592,    79,
+      92,   128,   546,     0,   106,    19,   630,     0,   631,     0,
+     643,     0,   650,     0,   662,     0,   668,     0,   670,     0,
+       0,   676,   540,   542,     0,     0,   584,     0,     0,     0,
+     603,   602,   605,   571,   588,   547,   550,   633,   635,   639,
+     641,   656,   658,   660,   672,     0,   566,     0,     0,     0,
+     604,     0,     0,   583,     0,     0,   581,     0,    77,     0,
+     568,   597,   567,     0,   606,     0,   571,   570,   572,   590,
+     585,     0,   607,   601,   582,   591,     0,   599,   589
 };
 
   /* YYPGOTO[NTERM-NUM].  */
 static const yytype_int16 yypgoto[] =
 {
-    -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
+    -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,  -859,
+    -859,  -859,  -209,  -859,  -418,  -417,  -602,  -421,  -291,  -284,
+    -286,  -283,  -281,  -287,  -859,  -473,  -859,  -490,  -859,  -497,
+    -520,    13,  -859,  -859,  -859,    14,  -394,  -859,  -859,    33,
+      42,    44,  -859,  -859,  -395,  -859,  -859,  -859,  -859,  -121,
+    -859,  -381,  -369,  -859,     9,  -859,     0,  -424,  -859,  -859,
+    -859,  -859,   113,  -859,  -859,  -859,  -545,  -549,  -252,  -365,
+    -617,  -859,  -391,  -618,  -858,  -859,  -450,  -859,  -859,  -459,
+    -458,  -859,  -859,    43,  -721,  -387,  -859,  -173,  -859,  -422,
+    -859,  -170,  -859,  -859,  -859,  -859,  -168,  -859,  -859,  -859,
+    -859,  -859,  -859,  -859,  -859,    67,  -859,  -859,     2,  -859,
+     -97,  -300,  -386,  -859,  -859,  -859,  -326,  -323,  -327,  -859,
+    -859,  -330,  -325,  -328,  -332,  -859,  -331,  -334,  -859,  -390,
+    -530
 };
 
   /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
-      -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
+      -1,   520,   521,   522,   781,   523,   524,   525,   526,   527,
+     528,   529,   609,   531,   577,   578,   579,   580,   581,   582,
+     583,   584,   585,   586,   587,   610,   839,   611,   764,   612,
+     695,   613,   378,   640,   498,   614,   380,   381,   382,   427,
+     428,   429,   383,   384,   385,   386,   387,   388,   477,   478,
+     389,   390,   391,   392,   532,   480,   533,   483,   440,   441,
+     534,   395,   396,   397,   569,   473,   567,   568,   704,   705,
+     638,   776,   617,   618,   619,   620,   621,   736,   875,   911,
+     903,   904,   905,   912,   622,   623,   624,   625,   906,   878,
+     626,   627,   907,   926,   628,   629,   630,   842,   740,   844,
+     882,   901,   902,   631,   398,   399,   400,   424,   632,   470,
+     471,   450,   451,   788,   789,   402,   673,   674,   678,   403,
+     404,   684,   685,   688,   691,   405,   696,   697,   406,   452,
+     453
 };
 
   /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
@@ -1596,172 +1685,100 @@
      number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-     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,   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,
-      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,   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,   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,
-      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,
+     394,   430,   401,   637,   768,   646,   445,   444,   588,   393,
+     494,   445,   667,   377,   379,   841,   535,   772,   707,   775,
+     446,   437,   777,   466,   708,   446,   786,   677,   667,   668,
+     421,   475,   687,   719,   720,   730,   417,   407,   655,   661,
+     910,   699,   662,   481,   661,   430,   658,   918,   541,   562,
+     709,   482,   481,   563,   542,   476,   422,   910,   659,   634,
+     787,   437,   669,   670,   671,   672,   633,   635,   418,   721,
+     722,   731,   589,   663,   676,   408,   589,   437,   663,   676,
+     590,   647,   648,   639,   492,   676,   481,   589,   676,   328,
+     329,   330,   565,   493,   773,   778,   495,   676,   715,   496,
+     716,   -35,   497,   649,   745,   409,   747,   650,   456,   458,
+     460,   462,   464,   465,   468,   543,   734,   827,   828,   829,
+     830,   544,   843,   753,   754,   755,   756,   757,   758,   759,
+     760,   761,   762,   549,   557,   432,   571,   410,   433,   550,
+     558,   411,   572,   763,   637,   573,   637,   652,   412,   637,
+     665,   574,   782,   653,   664,   780,   851,   415,   790,   707,
+     664,   765,   664,   784,   542,   664,   693,   664,   413,   664,
+     664,   792,   794,   796,   664,   799,   801,   793,   795,   797,
+     414,   800,   802,   803,   806,   809,   565,   811,   565,   804,
+     807,   810,   425,   812,   883,   884,   437,   889,   925,   890,
+     765,   765,   891,   793,   892,   797,   893,   894,   800,   921,
+     804,   426,   807,   812,   856,   765,   858,   419,   857,   642,
+     859,   434,   643,   768,   680,   681,   682,   683,   454,   707,
+     530,   455,   457,   717,   718,   455,   886,   445,   444,   765,
+     459,   817,   766,   455,   818,   845,   852,   461,   853,   847,
+     455,   446,   463,   467,   675,   455,   455,   455,   679,   565,
+     686,   455,   689,   455,   692,   455,   698,   455,   765,   455,
+     817,   846,   576,   872,   849,   850,   420,   862,   677,   816,
+     667,   723,   724,   637,   866,   687,   712,   713,   714,   423,
+     644,   645,   920,   765,   848,   765,   895,   823,   824,   439,
+     825,   826,   831,   832,   447,   449,   469,   768,   474,   479,
+     484,   325,   481,   490,   491,   536,   537,   538,   561,   540,
+     539,   559,   657,   546,   676,   676,   545,   565,   547,   548,
+     551,   676,   676,   552,   553,   554,   555,   676,   576,   676,
+     556,   560,   874,   576,   570,   876,   564,   651,   656,   576,
+     492,   641,   576,   725,   589,   666,   662,   727,   690,   700,
+     703,   576,   726,   637,   728,   729,   711,   732,   737,   741,
+     735,   738,   742,   746,   779,   -36,   739,   743,   748,   783,
+     576,   749,   431,   -34,   750,   876,   751,   -29,   798,   752,
+     438,   393,   805,   791,   808,   813,   814,   565,   394,   393,
+     401,   394,   913,   840,   855,   908,   394,   393,   401,   765,
+     393,   377,   379,   868,   887,   393,   472,   922,   896,   637,
+     448,   888,   898,   899,   879,   897,   431,   486,  -569,   909,
+     431,   915,   914,   591,   833,   393,   919,   927,   916,   393,
+     928,   835,   834,   838,   416,   836,   438,   877,   837,   785,
+     815,   710,   873,   880,   917,   393,   923,   881,   924,   769,
+     900,   446,   770,   488,   771,   443,   701,   485,   487,   861,
+     860,   863,   865,   566,   489,   864,   869,   867,   871,   870,
+       0,     0,   393,     0,   616,     0,     0,   877,     0,     0,
+       0,     0,     0,   615,     0,     0,     0,     0,     0,     0,
+       0,   446,     0,   820,   821,   822,   576,   576,   576,   576,
+     576,   576,   576,   576,   576,   576,   576,   576,   576,   576,
+     576,   576,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   660,     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,   702,     0,   566,     0,   566,
+       0,     0,     0,     0,   393,     0,   393,     0,   393,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   576,   576,
+       0,     0,     0,     0,     0,   576,   576,     0,     0,     0,
+       0,   576,     0,   576,     0,     0,     0,     0,     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,   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,
+       0,     0,   616,     0,     0,     0,     0,     0,     0,     0,
+       0,   615,   394,     0,     0,     0,     0,     0,     0,     0,
+     566,   393,     0,     0,     0,     0,     0,     0,     0,   393,
+       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,     0,     0,   566,     0,
+       0,     0,     0,     0,     0,     0,     0,   393,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   616,     0,     0,     0,
+     616,     0,     0,     0,     0,   615,     0,     0,     0,   615,
+       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,   566,     0,
+       0,     0,     0,     0,     0,     0,     0,   393,     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,   616,   616,     0,   616,     0,   401,     0,     0,     0,
+     615,   615,     0,   615,     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,   616,     0,     0,     0,     0,     0,     0,     0,
+       0,   615,     0,     0,     0,     0,     0,     0,   616,     0,
+       0,     0,     0,     0,     0,   616,     0,   615,     0,     0,
+       0,     0,     0,     0,   615,   616,     0,     0,     0,   616,
+       0,     0,     0,     0,   615,   616,     0,     0,   615,     0,
+       0,     0,   442,     0,   615,     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,
@@ -1792,20 +1809,21 @@
      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,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
+     316,   317,   318,   319,   320,   321,   322,   323,   324,     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,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   325,     0,     0,     0,     0,     0,     0,
+       0,   326,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   327,   328,   329,   330,   331,
+       0,     0,     0,     0,     0,     0,     0,     0,   332,   333,
+     334,   335,   336,   337,   338,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     339,   340,   341,   342,   343,   344,     0,     0,     0,     0,
+       0,     0,     0,     0,   345,     0,   346,   347,   348,   349,
+     350,   351,   352,   353,   354,   355,   356,   357,   358,   359,
+     360,   361,   362,   363,   364,   365,   366,   367,   368,   369,
+     370,   371,   372,   373,   374,   375,   376,     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,
@@ -1837,19 +1855,20 @@
      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,
+     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
+     324,     0,     0,   499,   500,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       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,
+       0,     0,   501,   502,     0,   325,     0,   591,   592,     0,
+       0,     0,     0,   593,   503,   504,   505,   506,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   327,   328,   329,
+     330,   331,     0,     0,     0,   507,   508,   509,   510,   511,
+     332,   333,   334,   335,   336,   337,   338,   594,   595,   596,
+     597,     0,   598,   599,   600,   601,   602,   603,   604,   605,
+     606,   607,   339,   340,   341,   342,   343,   344,   512,   513,
+     514,   515,   516,   517,   518,   519,   345,   608,   346,   347,
+     348,   349,   350,   351,   352,   353,   354,   355,   356,   357,
+     358,   359,   360,   361,   362,   363,   364,   365,   366,   367,
+     368,   369,   370,   371,   372,   373,   374,   375,   376,     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,
@@ -1881,20 +1900,21 @@
      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,
+     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
+     322,   323,   324,     0,     0,   499,   500,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     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,
+       0,     0,     0,     0,   501,   502,     0,   325,     0,   591,
+     767,     0,     0,     0,     0,   593,   503,   504,   505,   506,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   327,
+     328,   329,   330,   331,     0,     0,     0,   507,   508,   509,
+     510,   511,   332,   333,   334,   335,   336,   337,   338,   594,
+     595,   596,   597,     0,   598,   599,   600,   601,   602,   603,
+     604,   605,   606,   607,   339,   340,   341,   342,   343,   344,
+     512,   513,   514,   515,   516,   517,   518,   519,   345,   608,
+     346,   347,   348,   349,   350,   351,   352,   353,   354,   355,
+     356,   357,   358,   359,   360,   361,   362,   363,   364,   365,
+     366,   367,   368,   369,   370,   371,   372,   373,   374,   375,
+     376,     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,
@@ -1925,20 +1945,21 @@
      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,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     320,   321,   322,   323,   324,     0,     0,   499,   500,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       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,
+       0,     0,     0,     0,     0,     0,   501,   502,     0,   325,
+       0,   591,     0,     0,     0,     0,     0,   593,   503,   504,
+     505,   506,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   327,   328,   329,   330,   331,     0,     0,     0,   507,
+     508,   509,   510,   511,   332,   333,   334,   335,   336,   337,
+     338,   594,   595,   596,   597,     0,   598,   599,   600,   601,
+     602,   603,   604,   605,   606,   607,   339,   340,   341,   342,
+     343,   344,   512,   513,   514,   515,   516,   517,   518,   519,
+     345,   608,   346,   347,   348,   349,   350,   351,   352,   353,
+     354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
+     364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
+     374,   375,   376,     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,
@@ -1969,20 +1990,21 @@
      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,   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,
+     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
+     318,   319,   320,   321,   322,   323,   324,     0,     0,   499,
+     500,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   501,   502,
+       0,   325,     0,   484,     0,     0,     0,     0,     0,   593,
+     503,   504,   505,   506,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   327,   328,   329,   330,   331,     0,     0,
+       0,   507,   508,   509,   510,   511,   332,   333,   334,   335,
+     336,   337,   338,   594,   595,   596,   597,     0,   598,   599,
+     600,   601,   602,   603,   604,   605,   606,   607,   339,   340,
+     341,   342,   343,   344,   512,   513,   514,   515,   516,   517,
+     518,   519,   345,   608,   346,   347,   348,   349,   350,   351,
+     352,   353,   354,   355,   356,   357,   358,   359,   360,   361,
+     362,   363,   364,   365,   366,   367,   368,   369,   370,   371,
+     372,   373,   374,   375,   376,     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,
@@ -2013,20 +2035,21 @@
      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,
+     306,   307,   308,   309,   310,   311,   312,   313,   314,   315,
+     316,   317,   318,   319,   320,   321,   322,   323,   324,     0,
+       0,   499,   500,     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,
+     501,   502,     0,   325,     0,     0,     0,     0,     0,     0,
+       0,   593,   503,   504,   505,   506,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   327,   328,   329,   330,   331,
+       0,     0,     0,   507,   508,   509,   510,   511,   332,   333,
+     334,   335,   336,   337,   338,   594,   595,   596,   597,     0,
+     598,   599,   600,   601,   602,   603,   604,   605,   606,   607,
+     339,   340,   341,   342,   343,   344,   512,   513,   514,   515,
+     516,   517,   518,   519,   345,   608,   346,   347,   348,   349,
+     350,   351,   352,   353,   354,   355,   356,   357,   358,   359,
+     360,   361,   362,   363,   364,   365,   366,   367,   368,   369,
+     370,   371,   372,   373,   374,   375,   376,     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,
@@ -2058,19 +2081,20 @@
      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,
+     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
+     324,     0,     0,   499,   500,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   501,   502,     0,   325,     0,     0,     0,     0,
+       0,     0,     0,   593,   503,   504,   505,   506,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   327,   328,   329,
+     330,   331,     0,     0,     0,   507,   508,   509,   510,   511,
+     332,   333,   334,   335,   336,   337,   338,     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,   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,
+       0,     0,   339,   340,   341,   342,   343,   344,   512,   513,
+     514,   515,   516,   517,   518,   519,   345,     0,   346,   347,
+     348,   349,   350,   351,   352,   353,   354,   355,   356,   357,
+     358,   359,   360,   361,   362,   363,   364,   365,   366,   367,
+     368,   369,   370,   371,   372,   373,   374,   375,   376,     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,
@@ -2102,20 +2126,21 @@
      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,
+     312,   313,   314,     0,     0,     0,   318,   319,   320,   321,
+     322,   323,   324,     0,     0,   499,   500,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   501,   502,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   503,   504,   505,   506,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   327,
+     328,   329,   330,     0,     0,     0,     0,   507,   508,   509,
+     510,   511,   332,   333,   334,   335,   336,   337,   338,     0,
        0,     0,     0,     0,     0,     0,     0,     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,   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,
+       0,     0,     0,     0,   339,   340,   341,   342,   343,   344,
+     512,   513,   514,   515,   516,   517,   518,   519,   345,     0,
+     346,   347,   348,   349,   350,   351,   352,   353,   354,   355,
+     356,   357,   358,   359,   360,   361,   362,   363,   364,   365,
+     366,   367,   368,   369,   370,   371,   372,   373,   374,   375,
+     376,     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,
@@ -2146,20 +2171,21 @@
      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,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     320,   321,   322,   323,   324,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   325,
+       0,     0,     0,     0,     0,     0,     0,   326,     0,     0,
        0,     0,     0,     0,     0,     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,   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,
+       0,   327,   328,   329,   330,   331,     0,     0,     0,     0,
+       0,     0,     0,     0,   332,   333,   334,   335,   336,   337,
+     338,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   339,   340,   341,   342,
+     343,   344,     0,     0,     0,     0,     0,     0,     0,     0,
+     345,     0,   346,   347,   348,   349,   350,   351,   352,   353,
+     354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
+     364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
+     374,   375,   376,     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,
@@ -2191,19 +2217,20 @@
      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,
+     318,   319,   320,   321,   322,   323,   324,     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,   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,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   332,   333,   334,   335,
+     336,   337,   338,   594,     0,     0,   597,     0,   598,   599,
+       0,     0,   602,     0,     0,     0,     0,     0,   339,   340,
+     341,   342,   343,   344,     0,     0,     0,     0,     0,     0,
+       0,     0,   345,     0,   346,   347,   348,   349,   350,   351,
+     352,   353,   354,   355,   356,   357,   358,   359,   360,   361,
+     362,   363,   364,   365,   366,   367,   368,   369,   370,   371,
+     372,   373,   374,   375,   376,     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,
@@ -2235,19 +2262,20 @@
      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,   318,   319,   320,   321,   322,   323,   324,     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,   435,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,     0,     0,     0,   436,   332,   333,
+     334,   335,   336,   337,   338,     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,
+     339,   340,   341,   342,   343,   344,     0,     0,     0,     0,
+       0,     0,     0,     0,   345,     0,   346,   347,   348,   349,
+     350,   351,   352,   353,   354,   355,   356,   357,   358,   359,
+     360,   361,   362,   363,   364,   365,   366,   367,   368,   369,
+     370,   371,   372,   373,   374,   375,   376,     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,
@@ -2279,68 +2307,72 @@
      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,
+     314,     0,     0,     0,   318,   319,   320,   321,   322,   323,
+     324,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   325,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   327,   328,   329,
+     330,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     332,   333,   334,   335,   336,   337,   338,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   339,   340,   341,   342,   343,   344,     0,     0,
+       0,     0,     0,     0,     0,     0,   345,     0,   346,   347,
+     348,   349,   350,   351,   352,   353,   354,   355,   356,   357,
+     358,   359,   360,   361,   362,   363,   364,   365,   366,   367,
+     368,   369,   370,   371,   372,   373,   374,   375,   376,     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,   318,   319,   320,   321,
+     322,   323,   324,     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,   327,
+     328,   329,   330,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   332,   333,   334,   335,   336,   337,   338,     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,
+       0,     0,     0,     0,   339,   340,   341,   342,   343,   344,
+       0,     0,     0,     0,     0,     0,     0,     0,   345,     0,
+     346,   347,   348,   349,   350,   351,   352,   353,   354,   355,
+     356,   357,   358,   359,   360,   361,   362,   363,   364,   365,
+     366,   367,   368,   369,   370,   371,   372,   373,   374,   375,
+     376,     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,    68,    69,
+      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,
@@ -2365,151 +2397,27 @@
      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,   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,   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,   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,
+     310,   311,   312,   313,   314,     0,     0,     0,   318,   319,
+     320,   321,   322,   323,   324,     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,   457,   458,   459,   460,   461,   462,   463,   464,     0,
+       0,     0,   819,     0,     0,     0,     0,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,     0,   347,     2,     3,     4,     5,     6,     7,
+       0,   327,   328,   329,   330,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   332,   333,   334,   335,   336,   337,
+     338,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   339,   340,   341,   342,
+     343,   344,     0,     0,     0,     0,     0,     0,     0,     0,
+     345,     0,   346,   347,   348,   349,   350,   351,   352,   353,
+     354,   355,   356,   357,   358,   359,   360,   361,   362,   363,
+     364,   365,   366,   367,   368,   369,   370,   371,   372,   373,
+     374,   375,   376,     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,
@@ -2534,18 +2442,66 @@
      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,
+     308,   309,   310,   311,   312,   313,   314,     0,     0,     0,
+     318,   319,   320,   321,   322,   323,   324,     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,
+       0,     0,     0,     0,   854,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   327,   328,   329,   330,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   332,   333,   334,   335,
+     336,   337,   338,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   339,   340,
+     341,   342,   343,   344,     0,     0,     0,     0,     0,     0,
+       0,     0,   345,     0,   346,   347,   348,   349,   350,   351,
+     352,   353,   354,   355,   356,   357,   358,   359,   360,   361,
+     362,   363,   364,   365,   366,   367,   368,   369,   370,   371,
+     372,   373,   374,   375,   376,     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,   318,   319,   320,   321,   322,   323,   324,     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,   327,   328,   329,   330,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   332,   333,
+     334,   335,   336,   337,   338,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     339,   340,   341,   342,   343,   344,     0,     0,     0,     0,
+       0,     0,     0,     0,   345,     0,   346,   347,   348,   349,
+     350,   351,   352,   353,   354,   355,   356,   357,   358,   359,
+     360,   361,   362,   363,   364,   365,   366,   367,   368,   369,
+     370,   371,   372,   373,   374,   375,   376,     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,
@@ -2577,17 +2533,18 @@
      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,   321,     0,     0,     0,
+       0,     0,   499,   500,     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,   501,   502,     0,     0,     0,   636,   774,     0,     0,
+       0,     0,     0,   503,   504,   505,   506,     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,   507,   508,   509,   510,   511,   332,
+       0,     0,     0,     0,   337,   338,     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,
+       0,     0,     0,     0,     0,     0,     0,   512,   513,   514,
+     515,   516,   517,   518,   519,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   358,
        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,
@@ -2619,207 +2576,459 @@
      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,   475,
+     312,   313,   314,     0,     0,     0,     0,     0,     0,   321,
+       0,     0,     0,     0,     0,   499,   500,     0,     0,     0,
        0,     0,     0,     0,     0,     0,     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,   501,   502,     0,     0,     0,   636,
+     885,     0,     0,     0,     0,     0,   503,   504,   505,   506,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   507,   508,   509,
+     510,   511,   332,     0,     0,     0,     0,   337,   338,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     512,   513,   514,   515,   516,   517,   518,   519,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   358,     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,     0,     0,
+       0,     0,   321,     0,     0,     0,     0,     0,   499,   500,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   501,   502,     0,
+       0,   575,     0,     0,     0,     0,     0,     0,     0,   503,
+     504,   505,   506,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     507,   508,   509,   510,   511,   332,     0,     0,     0,     0,
+     337,   338,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   512,   513,   514,   515,   516,   517,   518,
+     519,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   358,     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,     0,     0,     0,     0,   321,     0,     0,     0,     0,
+       0,   499,   500,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     501,   502,     0,     0,     0,   636,     0,     0,     0,     0,
+       0,     0,   503,   504,   505,   506,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   507,   508,   509,   510,   511,   332,     0,
+       0,     0,     0,   337,   338,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   512,   513,   514,   515,
+     516,   517,   518,   519,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   358,     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,     0,     0,     0,     0,   321,     0,
+       0,     0,     0,     0,   499,   500,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   501,   502,     0,     0,   733,     0,     0,
+       0,     0,     0,     0,     0,   503,   504,   505,   506,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   507,   508,   509,   510,
+     511,   332,     0,     0,     0,     0,   337,   338,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   512,
+     513,   514,   515,   516,   517,   518,   519,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   358,     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,     0,     0,     0,
+       0,   321,     0,     0,     0,     0,     0,   499,   500,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,   501,   502,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   744,   503,   504,
+     505,   506,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   507,
+     508,   509,   510,   511,   332,     0,     0,     0,     0,   337,
+     338,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   512,   513,   514,   515,   516,   517,   518,   519,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   358,     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,
+       0,     0,     0,     0,   321,     0,     0,     0,     0,     0,
+     499,   500,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,   501,
+     502,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   503,   504,   505,   506,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   507,   508,   509,   510,   511,   332,     0,     0,
+       0,     0,   337,   338,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   512,   513,   514,   515,   516,
+     517,   518,   519,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   358,     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,     0,     0,     0,     0,   321,     0,     0,
+       0,     0,     0,   499,   500,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,   501,   502,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,   503,   504,   505,   506,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   507,   508,   509,   510,   511,
+     332,     0,     0,     0,     0,   337,   654,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   512,   513,
+     514,   515,   516,   517,   518,   519,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+     358,     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,     0,     0,     0,     0,
+     321,     0,     0,     0,     0,     0,   499,   500,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,   501,   502,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,   503,   504,   505,
+     506,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,   507,   508,
+     509,   510,   694,   332,     0,     0,     0,     0,   337,   338,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,   512,   513,   514,   515,   516,   517,   518,   519,     0,
+       0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,   358,     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,     0,
+       0,     0,     0,   321,     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,
-       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,
-       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,     0,     0,     0,     0,
-       0,     0,     0,     0,     0,     0,     0,   493
+       0,     0,     0,     0,     0,     0,   332,     0,     0,     0,
+       0,   337,   338
 };
 
 static const yytype_int16 yycheck[] =
 {
-       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,   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,
-      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,   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,   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,
-      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,
+       0,   382,     0,   493,   622,   502,   401,   401,   481,     0,
+     434,   406,   542,     0,     0,   736,   440,   634,   567,   636,
+     401,   390,   639,   413,   569,   406,   348,   547,   558,   348,
+     359,   385,   552,   331,   332,   336,   353,   349,   528,   348,
+     898,   561,   351,   351,   348,   426,   356,   905,   350,   352,
+     570,   359,   351,   356,   356,   409,   385,   915,   368,   358,
+     382,   430,   381,   382,   383,   384,   490,   491,   385,   367,
+     368,   372,   351,   382,   547,   349,   351,   446,   382,   552,
+     359,   329,   330,   358,   349,   558,   351,   351,   561,   374,
+     375,   376,   473,   358,   358,   640,   353,   570,   361,   356,
+     363,   349,   359,   351,   601,   349,   603,   355,   408,   409,
+     410,   411,   412,   413,   414,   350,   589,   719,   720,   721,
+     722,   356,   740,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   350,   350,   356,   350,   349,   359,   356,
+     356,   349,   356,   358,   634,   350,   636,   350,   349,   639,
+     540,   356,   649,   356,   540,   350,   773,   351,   350,   708,
+     546,   356,   548,   653,   356,   551,   556,   553,   349,   555,
+     556,   350,   350,   350,   560,   350,   350,   356,   356,   356,
+     349,   356,   356,   350,   350,   350,   567,   350,   569,   356,
+     356,   356,   350,   356,   350,   350,   565,   350,   919,   350,
+     356,   356,   350,   356,   350,   356,   350,   350,   356,   350,
+     356,   356,   356,   356,   352,   356,   352,   349,   356,   356,
+     356,   385,   359,   841,   381,   382,   383,   384,   382,   778,
+     439,   385,   382,   327,   328,   385,   853,   632,   632,   356,
+     382,   356,   359,   385,   359,   742,   354,   382,   356,   746,
+     385,   632,   382,   382,   382,   385,   385,   385,   382,   640,
+     382,   385,   382,   385,   382,   385,   382,   385,   356,   385,
+     356,   359,   481,   359,   764,   765,   349,   797,   798,   703,
+     810,   333,   334,   773,   804,   805,   364,   365,   366,   359,
+     499,   500,   909,   356,   357,   356,   357,   715,   716,   367,
+     717,   718,   723,   724,   359,   385,   385,   925,   353,   385,
+     353,   351,   351,   385,   385,   350,   385,   359,   349,   356,
+     358,   350,   531,   356,   797,   798,   358,   708,   356,   356,
+     356,   804,   805,   356,   356,   356,   356,   810,   547,   812,
+     356,   356,   839,   552,   358,   842,   359,   350,   349,   558,
+     349,   385,   561,   371,   351,   385,   351,   369,   348,   352,
+     385,   570,   370,   853,   335,   337,   385,   352,   349,   349,
+     354,   359,   349,   349,   385,   349,   359,   359,   357,   385,
+     589,   359,   382,   349,   359,   882,   359,   350,   356,   359,
+     390,   382,   356,   358,   356,   350,   350,   778,   398,   390,
+     398,   401,   899,   352,   352,   895,   406,   398,   406,   356,
+     401,   398,   398,   348,   348,   406,   416,   914,   354,   909,
+     406,   382,   350,   349,   393,   385,   426,   425,   353,   358,
+     430,   350,   359,   353,   725,   426,   353,   359,   397,   430,
+     354,   727,   726,   730,   331,   728,   446,   842,   729,   658,
+     702,   572,   817,   844,   904,   446,   915,   844,   916,   632,
+     882,   842,   632,   430,   632,   398,   563,   424,   426,   795,
+     793,   798,   802,   473,   430,   800,   808,   805,   812,   810,
+      -1,    -1,   473,    -1,   484,    -1,    -1,   882,    -1,    -1,
+      -1,    -1,    -1,   484,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   882,    -1,   712,   713,   714,   715,   716,   717,   718,
+     719,   720,   721,   722,   723,   724,   725,   726,   727,   728,
+     729,   730,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   536,    -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,   565,    -1,   567,    -1,   569,
+      -1,    -1,    -1,    -1,   565,    -1,   567,    -1,   569,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   797,   798,
+      -1,    -1,    -1,    -1,    -1,   804,   805,    -1,    -1,    -1,
+      -1,   810,    -1,   812,    -1,    -1,    -1,    -1,    -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,    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,
+      -1,    -1,   622,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   622,   632,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     640,   632,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   640,
+      -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,    -1,    -1,   708,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   708,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   736,    -1,    -1,    -1,
+     740,    -1,    -1,    -1,    -1,   736,    -1,    -1,    -1,   740,
+      -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,   778,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   778,    -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,   841,   842,    -1,   844,    -1,   844,    -1,    -1,    -1,
+     841,   842,    -1,   844,    -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,   882,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   882,    -1,    -1,    -1,    -1,    -1,    -1,   898,    -1,
+      -1,    -1,    -1,    -1,    -1,   905,    -1,   898,    -1,    -1,
+      -1,    -1,    -1,    -1,   905,   915,    -1,    -1,    -1,   919,
+      -1,    -1,    -1,    -1,   915,   925,    -1,    -1,   919,    -1,
+      -1,    -1,     0,    -1,   925,     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,
@@ -2850,20 +3059,21 @@
      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,
+     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
+     318,   319,   320,   321,   322,   323,   324,   325,   326,    -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,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   351,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   359,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   373,   374,   375,   376,   377,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   386,   387,
+     388,   389,   390,   391,   392,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     408,   409,   410,   411,   412,   413,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   422,    -1,   424,   425,   426,   427,
      428,   429,   430,   431,   432,   433,   434,   435,   436,   437,
-     438,   439,   440,   441,   442,   443,   444,     3,     4,     5,
+     438,   439,   440,   441,   442,   443,   444,   445,   446,   447,
+     448,   449,   450,   451,   452,   453,   454,     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,
@@ -2895,19 +3105,20 @@
      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,
+     316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
+     326,    -1,    -1,   329,   330,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -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,
+      -1,    -1,   348,   349,    -1,   351,    -1,   353,   354,    -1,
+      -1,    -1,    -1,   359,   360,   361,   362,   363,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   373,   374,   375,
+     376,   377,    -1,    -1,    -1,   381,   382,   383,   384,   385,
+     386,   387,   388,   389,   390,   391,   392,   393,   394,   395,
+     396,    -1,   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,
+     436,   437,   438,   439,   440,   441,   442,   443,   444,   445,
+     446,   447,   448,   449,   450,   451,   452,   453,   454,     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,
@@ -2939,20 +3150,21 @@
      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,
+     314,   315,   316,   317,   318,   319,   320,   321,   322,   323,
+     324,   325,   326,    -1,    -1,   329,   330,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -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,
+      -1,    -1,    -1,    -1,   348,   349,    -1,   351,    -1,   353,
+     354,    -1,    -1,    -1,    -1,   359,   360,   361,   362,   363,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   373,
+     374,   375,   376,   377,    -1,    -1,    -1,   381,   382,   383,
+     384,   385,   386,   387,   388,   389,   390,   391,   392,   393,
+     394,   395,   396,    -1,   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,
+     444,   445,   446,   447,   448,   449,   450,   451,   452,   453,
+     454,     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,
@@ -2983,20 +3195,21 @@
      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,
+     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
+     322,   323,   324,   325,   326,    -1,    -1,   329,   330,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -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,
+      -1,    -1,    -1,    -1,    -1,    -1,   348,   349,    -1,   351,
+      -1,   353,    -1,    -1,    -1,    -1,    -1,   359,   360,   361,
+     362,   363,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   373,   374,   375,   376,   377,    -1,    -1,    -1,   381,
+     382,   383,   384,   385,   386,   387,   388,   389,   390,   391,
+     392,   393,   394,   395,   396,    -1,   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,
+     442,   443,   444,   445,   446,   447,   448,   449,   450,   451,
+     452,   453,   454,     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,
@@ -3027,20 +3240,21 @@
      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,   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,
+     310,   311,   312,   313,   314,   315,   316,   317,   318,   319,
+     320,   321,   322,   323,   324,   325,   326,    -1,    -1,   329,
+     330,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   348,   349,
+      -1,   351,    -1,   353,    -1,    -1,    -1,    -1,    -1,   359,
+     360,   361,   362,   363,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   373,   374,   375,   376,   377,    -1,    -1,
+      -1,   381,   382,   383,   384,   385,   386,   387,   388,   389,
+     390,   391,   392,   393,   394,   395,   396,    -1,   398,   399,
      400,   401,   402,   403,   404,   405,   406,   407,   408,   409,
-     410,   411,   412,    -1,   414,   415,   416,   417,   418,   419,
+     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,
+     440,   441,   442,   443,   444,   445,   446,   447,   448,   449,
+     450,   451,   452,   453,   454,     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,
@@ -3071,20 +3285,21 @@
      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,
+     308,   309,   310,   311,   312,   313,   314,   315,   316,   317,
+     318,   319,   320,   321,   322,   323,   324,   325,   326,    -1,
+      -1,   329,   330,    -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,
+     348,   349,    -1,   351,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   359,   360,   361,   362,   363,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   373,   374,   375,   376,   377,
+      -1,    -1,    -1,   381,   382,   383,   384,   385,   386,   387,
+     388,   389,   390,   391,   392,   393,   394,   395,   396,    -1,
      398,   399,   400,   401,   402,   403,   404,   405,   406,   407,
-     408,   409,   410,   411,   412,    -1,   414,   415,   416,   417,
+     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,
+     438,   439,   440,   441,   442,   443,   444,   445,   446,   447,
+     448,   449,   450,   451,   452,   453,   454,     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,
@@ -3116,19 +3331,20 @@
      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,
+     316,   317,   318,   319,   320,   321,   322,   323,   324,   325,
+     326,    -1,    -1,   329,   330,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   348,   349,    -1,   351,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   359,   360,   361,   362,   363,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   373,   374,   375,
+     376,   377,    -1,    -1,    -1,   381,   382,   383,   384,   385,
+     386,   387,   388,   389,   390,   391,   392,    -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,
+      -1,    -1,   408,   409,   410,   411,   412,   413,   414,   415,
+     416,   417,   418,   419,   420,   421,   422,    -1,   424,   425,
      426,   427,   428,   429,   430,   431,   432,   433,   434,   435,
-     436,   437,   438,   439,   440,   441,   442,   443,   444,     3,
+     436,   437,   438,   439,   440,   441,   442,   443,   444,   445,
+     446,   447,   448,   449,   450,   451,   452,   453,   454,     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,
@@ -3160,20 +3376,21 @@
      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,
+     314,   315,   316,    -1,    -1,    -1,   320,   321,   322,   323,
+     324,   325,   326,    -1,    -1,   329,   330,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   348,   349,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   360,   361,   362,   363,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   373,
+     374,   375,   376,    -1,    -1,    -1,    -1,   381,   382,   383,
+     384,   385,   386,   387,   388,   389,   390,   391,   392,    -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,    -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,   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,
+      -1,    -1,    -1,    -1,   408,   409,   410,   411,   412,   413,
+     414,   415,   416,   417,   418,   419,   420,   421,   422,    -1,
      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,
+     444,   445,   446,   447,   448,   449,   450,   451,   452,   453,
+     454,     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,
@@ -3204,20 +3421,21 @@
      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,
+     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
+     322,   323,   324,   325,   326,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   351,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   359,    -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,
+      -1,   373,   374,   375,   376,   377,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   386,   387,   388,   389,   390,   391,
+     392,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   408,   409,   410,   411,
+     412,   413,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     422,    -1,   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,
+     442,   443,   444,   445,   446,   447,   448,   449,   450,   451,
+     452,   453,   454,     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,
@@ -3249,19 +3467,20 @@
      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,
+     320,   321,   322,   323,   324,   325,   326,    -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,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   373,   374,   375,   376,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   386,   387,   388,   389,
+     390,   391,   392,   393,    -1,    -1,   396,    -1,   398,   399,
+      -1,    -1,   402,    -1,    -1,    -1,    -1,    -1,   408,   409,
+     410,   411,   412,   413,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   422,    -1,   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,
+     440,   441,   442,   443,   444,   445,   446,   447,   448,   449,
+     450,   451,   452,   453,   454,     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,
@@ -3293,19 +3512,20 @@
      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,   320,   321,   322,   323,   324,   325,   326,    -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,   359,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   373,   374,   375,   376,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   385,   386,   387,
+     388,   389,   390,   391,   392,    -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,
+     408,   409,   410,   411,   412,   413,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   422,    -1,   424,   425,   426,   427,
      428,   429,   430,   431,   432,   433,   434,   435,   436,   437,
-     438,   439,   440,   441,   442,   443,   444,     3,     4,     5,
+     438,   439,   440,   441,   442,   443,   444,   445,   446,   447,
+     448,   449,   450,   451,   452,   453,   454,     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,
@@ -3337,68 +3557,72 @@
      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,
+     316,    -1,    -1,    -1,   320,   321,   322,   323,   324,   325,
+     326,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   351,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   373,   374,   375,
+     376,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     386,   387,   388,   389,   390,   391,   392,    -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,
+      -1,    -1,   408,   409,   410,   411,   412,   413,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   422,    -1,   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,
+     436,   437,   438,   439,   440,   441,   442,   443,   444,   445,
+     446,   447,   448,   449,   450,   451,   452,   453,   454,     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,   320,   321,   322,   323,
+     324,   325,   326,    -1,    -1,    -1,    -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,
+     354,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   373,
+     374,   375,   376,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   386,   387,   388,   389,   390,   391,   392,    -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,
+      -1,    -1,    -1,    -1,   408,   409,   410,   411,   412,   413,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   422,    -1,
+     424,   425,   426,   427,   428,   429,   430,   431,   432,   433,
+     434,   435,   436,   437,   438,   439,   440,   441,   442,   443,
+     444,   445,   446,   447,   448,   449,   450,   451,   452,   453,
+     454,     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,    70,    71,
+      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,
@@ -3423,151 +3647,27 @@
      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,    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,
+     312,   313,   314,   315,   316,    -1,    -1,    -1,   320,   321,
+     322,   323,   324,   325,   326,    -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,   404,   405,   406,   407,   408,   409,   410,   411,    -1,
+      -1,    -1,   354,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,   426,     4,     5,     6,     7,     8,     9,
+      -1,   373,   374,   375,   376,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   386,   387,   388,   389,   390,   391,
+     392,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   408,   409,   410,   411,
+     412,   413,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     422,    -1,   424,   425,   426,   427,   428,   429,   430,   431,
+     432,   433,   434,   435,   436,   437,   438,   439,   440,   441,
+     442,   443,   444,   445,   446,   447,   448,   449,   450,   451,
+     452,   453,   454,     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,
@@ -3592,18 +3692,66 @@
      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,
+     310,   311,   312,   313,   314,   315,   316,    -1,    -1,    -1,
+     320,   321,   322,   323,   324,   325,   326,    -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,
+      -1,    -1,    -1,    -1,   354,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   373,   374,   375,   376,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   386,   387,   388,   389,
+     390,   391,   392,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   408,   409,
+     410,   411,   412,   413,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   422,    -1,   424,   425,   426,   427,   428,   429,
+     430,   431,   432,   433,   434,   435,   436,   437,   438,   439,
+     440,   441,   442,   443,   444,   445,   446,   447,   448,   449,
+     450,   451,   452,   453,   454,     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,   320,   321,   322,   323,   324,   325,   326,    -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,   373,   374,   375,   376,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   386,   387,
+     388,   389,   390,   391,   392,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     408,   409,   410,   411,   412,   413,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   422,    -1,   424,   425,   426,   427,
+     428,   429,   430,   431,   432,   433,   434,   435,   436,   437,
+     438,   439,   440,   441,   442,   443,   444,   445,   446,   447,
+     448,   449,   450,   451,   452,   453,   454,     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,
@@ -3635,17 +3783,18 @@
      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,   323,    -1,    -1,    -1,
+      -1,    -1,   329,   330,    -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,   348,   349,    -1,    -1,    -1,   353,   354,    -1,    -1,
+      -1,    -1,    -1,   360,   361,   362,   363,    -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,   381,   382,   383,   384,   385,   386,
+      -1,    -1,    -1,    -1,   391,   392,    -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,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   414,   415,   416,
+     417,   418,   419,   420,   421,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   436,
        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,
@@ -3677,37 +3826,361 @@
      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,   413,
+     314,   315,   316,    -1,    -1,    -1,    -1,    -1,    -1,   323,
+      -1,    -1,    -1,    -1,    -1,   329,   330,    -1,    -1,    -1,
       -1,    -1,    -1,    -1,    -1,    -1,    -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,   348,   349,    -1,    -1,    -1,   353,
+     354,    -1,    -1,    -1,    -1,    -1,   360,   361,   362,   363,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   381,   382,   383,
+     384,   385,   386,    -1,    -1,    -1,    -1,   391,   392,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     414,   415,   416,   417,   418,   419,   420,   421,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   436,     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,    -1,    -1,
+      -1,    -1,   323,    -1,    -1,    -1,    -1,    -1,   329,   330,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   348,   349,    -1,
+      -1,   352,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   360,
+     361,   362,   363,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     381,   382,   383,   384,   385,   386,    -1,    -1,    -1,    -1,
+     391,   392,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   414,   415,   416,   417,   418,   419,   420,
+     421,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   436,     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,    -1,    -1,    -1,    -1,   323,    -1,    -1,    -1,    -1,
+      -1,   329,   330,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     348,   349,    -1,    -1,    -1,   353,    -1,    -1,    -1,    -1,
+      -1,    -1,   360,   361,   362,   363,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   381,   382,   383,   384,   385,   386,    -1,
+      -1,    -1,    -1,   391,   392,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   414,   415,   416,   417,
+     418,   419,   420,   421,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   436,     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,    -1,    -1,    -1,    -1,   323,    -1,
+      -1,    -1,    -1,    -1,   329,   330,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   348,   349,    -1,    -1,   352,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   360,   361,   362,   363,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   381,   382,   383,   384,
+     385,   386,    -1,    -1,    -1,    -1,   391,   392,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   414,
+     415,   416,   417,   418,   419,   420,   421,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   436,     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,    -1,    -1,    -1,
+      -1,   323,    -1,    -1,    -1,    -1,    -1,   329,   330,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,   348,   349,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   359,   360,   361,
+     362,   363,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   381,
+     382,   383,   384,   385,   386,    -1,    -1,    -1,    -1,   391,
+     392,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   414,   415,   416,   417,   418,   419,   420,   421,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   436,     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,
+      -1,    -1,    -1,    -1,   323,    -1,    -1,    -1,    -1,    -1,
+     329,   330,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   348,
+     349,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   360,   361,   362,   363,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   381,   382,   383,   384,   385,   386,    -1,    -1,
+      -1,    -1,   391,   392,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   414,   415,   416,   417,   418,
+     419,   420,   421,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   436,     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,    -1,    -1,    -1,    -1,   323,    -1,    -1,
+      -1,    -1,    -1,   329,   330,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,   348,   349,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,   360,   361,   362,   363,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   381,   382,   383,   384,   385,
+     386,    -1,    -1,    -1,    -1,   391,   392,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   414,   415,
+     416,   417,   418,   419,   420,   421,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+     436,     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,    -1,    -1,    -1,    -1,
+     323,    -1,    -1,    -1,    -1,    -1,   329,   330,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,   348,   349,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,   360,   361,   362,
+     363,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   381,   382,
+     383,   384,   385,   386,    -1,    -1,    -1,    -1,   391,   392,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,   414,   415,   416,   417,   418,   419,   420,   421,    -1,
+      -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
+      -1,    -1,    -1,   436,     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,    -1,
+      -1,    -1,    -1,   323,    -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,
-      -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,
-      -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,    -1,    -1,    -1,    -1,
-      -1,    -1,    -1,    -1,    -1,    -1,    -1,   711
+      -1,    -1,    -1,    -1,    -1,    -1,   386,    -1,    -1,    -1,
+      -1,   391,   392
 };
 
   /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
@@ -3745,119 +4218,142 @@
      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,   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
+     312,   313,   314,   315,   316,   317,   318,   319,   320,   321,
+     322,   323,   324,   325,   326,   351,   359,   373,   374,   375,
+     376,   377,   386,   387,   388,   389,   390,   391,   392,   408,
+     409,   410,   411,   412,   413,   422,   424,   425,   426,   427,
+     428,   429,   430,   431,   432,   433,   434,   435,   436,   437,
+     438,   439,   440,   441,   442,   443,   444,   445,   446,   447,
+     448,   449,   450,   451,   452,   453,   454,   486,   487,   490,
+     491,   492,   493,   497,   498,   499,   500,   501,   502,   505,
+     506,   507,   508,   509,   511,   516,   517,   518,   559,   560,
+     561,   563,   570,   574,   575,   580,   583,   349,   349,   349,
+     349,   349,   349,   349,   349,   351,   517,   353,   385,   349,
+     349,   359,   385,   359,   562,   350,   356,   494,   495,   496,
+     506,   511,   356,   359,   385,   359,   385,   507,   511,   367,
+     513,   514,     0,   560,   491,   499,   506,   359,   490,   385,
+     566,   567,   584,   585,   382,   385,   566,   382,   566,   382,
+     566,   382,   566,   382,   566,   566,   584,   382,   566,   385,
+     564,   565,   511,   520,   353,   385,   409,   503,   504,   385,
+     510,   351,   359,   512,   353,   538,   563,   495,   494,   496,
+     385,   385,   349,   358,   512,   353,   356,   359,   489,   329,
+     330,   348,   349,   360,   361,   362,   363,   381,   382,   383,
+     384,   385,   414,   415,   416,   417,   418,   419,   420,   421,
+     456,   457,   458,   460,   461,   462,   463,   464,   465,   466,
+     467,   468,   509,   511,   515,   512,   350,   385,   359,   358,
+     356,   350,   356,   350,   356,   358,   356,   356,   356,   350,
+     356,   356,   356,   356,   356,   356,   356,   350,   356,   350,
+     356,   349,   352,   356,   359,   506,   511,   521,   522,   519,
+     358,   350,   356,   350,   356,   352,   467,   469,   470,   471,
+     472,   473,   474,   475,   476,   477,   478,   479,   480,   351,
+     359,   353,   354,   359,   393,   394,   395,   396,   398,   399,
+     400,   401,   402,   403,   404,   405,   406,   407,   423,   467,
+     480,   482,   484,   486,   490,   509,   511,   527,   528,   529,
+     530,   531,   539,   540,   541,   542,   545,   546,   549,   550,
+     551,   558,   563,   512,   358,   512,   353,   482,   525,   358,
+     488,   385,   356,   359,   467,   467,   484,   329,   330,   351,
+     355,   350,   350,   356,   392,   482,   349,   467,   356,   368,
+     563,   348,   351,   382,   567,   584,   385,   585,   348,   381,
+     382,   383,   384,   571,   572,   382,   480,   485,   573,   382,
+     381,   382,   383,   384,   576,   577,   382,   485,   578,   382,
+     348,   579,   382,   584,   385,   485,   581,   582,   382,   485,
+     352,   565,   511,   385,   523,   524,   354,   522,   521,   485,
+     504,   385,   364,   365,   366,   361,   363,   327,   328,   331,
+     332,   367,   368,   333,   334,   371,   370,   369,   335,   337,
+     336,   372,   352,   352,   480,   354,   532,   349,   359,   359,
+     553,   349,   349,   359,   359,   484,   349,   484,   357,   359,
+     359,   359,   359,   338,   339,   340,   341,   342,   343,   344,
+     345,   346,   347,   358,   483,   356,   359,   354,   528,   542,
+     546,   551,   525,   358,   354,   525,   526,   525,   521,   385,
+     350,   459,   484,   385,   482,   467,   348,   382,   568,   569,
+     350,   358,   350,   356,   350,   356,   350,   356,   356,   350,
+     356,   350,   356,   350,   356,   356,   350,   356,   356,   350,
+     356,   350,   356,   350,   350,   523,   512,   356,   359,   354,
+     467,   467,   467,   469,   469,   470,   470,   471,   471,   471,
+     471,   472,   472,   473,   474,   475,   476,   477,   478,   481,
+     352,   539,   552,   528,   554,   484,   359,   484,   357,   482,
+     482,   525,   354,   356,   354,   352,   352,   356,   352,   356,
+     572,   571,   485,   573,   577,   576,   485,   578,   348,   579,
+     581,   582,   359,   524,   484,   533,   484,   499,   544,   393,
+     527,   540,   555,   350,   350,   354,   525,   348,   382,   350,
+     350,   350,   350,   350,   350,   357,   354,   385,   350,   349,
+     544,   556,   557,   535,   536,   537,   543,   547,   482,   358,
+     529,   534,   538,   484,   359,   350,   397,   531,   529,   353,
+     525,   350,   484,   534,   535,   539,   548,   359,   354
 };
 
   /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
 static const yytype_int16 yyr1[] =
 {
-       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,   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
+       0,   455,   456,   457,   457,   457,   457,   457,   457,   457,
+     457,   457,   457,   457,   457,   457,   457,   457,   458,   458,
+     458,   458,   458,   458,   459,   460,   461,   462,   462,   463,
+     463,   464,   464,   465,   466,   466,   466,   467,   467,   467,
+     467,   468,   468,   468,   468,   469,   469,   469,   469,   470,
+     470,   470,   471,   471,   471,   472,   472,   472,   472,   472,
+     473,   473,   473,   474,   474,   475,   475,   476,   476,   477,
+     477,   478,   478,   479,   479,   480,   481,   480,   482,   482,
+     483,   483,   483,   483,   483,   483,   483,   483,   483,   483,
+     483,   484,   484,   485,   486,   486,   486,   486,   486,   486,
+     486,   486,   486,   486,   486,   488,   487,   489,   489,   490,
+     490,   490,   490,   491,   491,   492,   492,   493,   494,   494,
+     495,   495,   495,   495,   496,   497,   497,   497,   497,   497,
+     498,   498,   498,   498,   498,   499,   499,   500,   501,   501,
+     501,   501,   501,   501,   501,   501,   502,   503,   503,   504,
+     504,   504,   505,   506,   506,   507,   507,   507,   507,   507,
+     507,   507,   507,   507,   507,   507,   508,   508,   508,   508,
+     508,   508,   508,   508,   508,   508,   508,   508,   508,   508,
+     508,   508,   508,   508,   508,   508,   508,   508,   508,   508,
+     508,   508,   508,   508,   508,   508,   508,   508,   508,   508,
+     508,   509,   510,   510,   511,   511,   512,   512,   512,   512,
+     513,   513,   514,   515,   515,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     516,   516,   516,   516,   516,   516,   516,   516,   516,   516,
+     517,   517,   517,   519,   518,   520,   518,   521,   521,   522,
+     522,   523,   523,   524,   524,   525,   525,   525,   525,   526,
+     526,   527,   528,   528,   529,   529,   529,   529,   529,   529,
+     529,   529,   530,   531,   532,   533,   531,   534,   534,   536,
+     535,   537,   535,   538,   538,   539,   539,   540,   540,   541,
+     541,   542,   543,   543,   544,   544,   545,   545,   547,   546,
+     548,   548,   549,   549,   550,   550,   552,   551,   553,   551,
+     554,   551,   555,   555,   556,   556,   557,   557,   558,   558,
+     558,   558,   558,   558,   558,   558,   559,   559,   560,   560,
+     560,   562,   561,   563,   564,   564,   565,   565,   566,   566,
+     567,   567,   568,   568,   569,   569,   570,   570,   570,   570,
+     570,   570,   571,   571,   572,   572,   572,   572,   572,   573,
+     573,   574,   574,   575,   575,   575,   575,   575,   575,   575,
+     575,   576,   576,   577,   577,   577,   577,   578,   578,   579,
+     579,   580,   580,   580,   580,   581,   581,   582,   583,   583,
+     584,   584,   585,   585
 };
 
   /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
@@ -3872,18 +4368,19 @@
        1,     3,     3,     1,     3,     1,     3,     1,     3,     1,
        3,     1,     3,     1,     3,     1,     0,     6,     1,     3,
        1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     1,     3,     1,     2,     2,     4,     2,     3,     4,
-       2,     3,     4,     0,     6,     2,     3,     2,     1,     1,
-       2,     3,     3,     2,     3,     2,     1,     2,     1,     1,
-       1,     3,     4,     6,     5,     1,     2,     3,     5,     4,
-       1,     2,     1,     1,     1,     1,     1,     1,     1,     1,
-       1,     4,     1,     3,     1,     3,     1,     1,     1,     2,
+       1,     1,     3,     1,     2,     3,     2,     2,     4,     2,
+       3,     4,     2,     3,     4,     0,     6,     2,     3,     2,
+       3,     3,     4,     1,     1,     2,     3,     3,     2,     3,
+       2,     1,     2,     1,     1,     1,     3,     4,     6,     5,
+       1,     2,     3,     5,     4,     1,     2,     1,     1,     1,
+       1,     1,     1,     1,     1,     1,     4,     1,     3,     1,
+       3,     1,     1,     1,     2,     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,     4,     1,     1,     3,     2,     3,     2,     3,     3,
-       4,     1,     0,     3,     1,     3,     1,     1,     1,     1,
+       4,     1,     1,     3,     2,     3,     2,     3,     3,     4,
+       1,     0,     3,     1,     3,     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,
@@ -3924,7 +4421,13 @@
        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
+       1,     0,     3,     5,     1,     3,     1,     4,     1,     3,
+       5,     5,     1,     3,     1,     3,     4,     6,     6,     8,
+       6,     8,     1,     3,     1,     1,     1,     1,     1,     1,
+       3,     4,     6,     4,     6,     6,     8,     6,     8,     6,
+       8,     1,     3,     1,     1,     1,     1,     1,     3,     1,
+       3,     6,     8,     4,     6,     1,     3,     1,     4,     6,
+       1,     3,     3,     3
 };
 
 
@@ -4670,260 +5173,260 @@
   switch (yyn)
     {
   case 2: /* variable_identifier: IDENTIFIER  */
-#line 371 "MachineIndependent/glslang.y"
+#line 392 "MachineIndependent/glslang.y"
                  {
         (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string);
     }
-#line 4678 "MachineIndependent/glslang_tab.cpp"
+#line 5181 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 3: /* primary_expression: variable_identifier  */
-#line 377 "MachineIndependent/glslang.y"
+#line 398 "MachineIndependent/glslang.y"
                           {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4686 "MachineIndependent/glslang_tab.cpp"
+#line 5189 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN  */
-#line 380 "MachineIndependent/glslang.y"
+#line 401 "MachineIndependent/glslang.y"
                                         {
         (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode);
         if ((yyval.interm.intermTypedNode)->getAsConstantUnion())
             (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
     }
-#line 4696 "MachineIndependent/glslang_tab.cpp"
+#line 5199 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 5: /* primary_expression: FLOATCONSTANT  */
-#line 385 "MachineIndependent/glslang.y"
+#line 406 "MachineIndependent/glslang.y"
                     {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
     }
-#line 4704 "MachineIndependent/glslang_tab.cpp"
+#line 5207 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 6: /* primary_expression: INTCONSTANT  */
-#line 388 "MachineIndependent/glslang.y"
+#line 409 "MachineIndependent/glslang.y"
                   {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
     }
-#line 4712 "MachineIndependent/glslang_tab.cpp"
+#line 5215 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 7: /* primary_expression: UINTCONSTANT  */
-#line 391 "MachineIndependent/glslang.y"
+#line 412 "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 4721 "MachineIndependent/glslang_tab.cpp"
+#line 5224 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 8: /* primary_expression: BOOLCONSTANT  */
-#line 395 "MachineIndependent/glslang.y"
+#line 416 "MachineIndependent/glslang.y"
                    {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
     }
-#line 4729 "MachineIndependent/glslang_tab.cpp"
+#line 5232 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 9: /* primary_expression: STRING_LITERAL  */
-#line 399 "MachineIndependent/glslang.y"
+#line 420 "MachineIndependent/glslang.y"
                      {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true);
     }
-#line 4737 "MachineIndependent/glslang_tab.cpp"
+#line 5240 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 10: /* primary_expression: INT32CONSTANT  */
-#line 402 "MachineIndependent/glslang.y"
+#line 423 "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 4746 "MachineIndependent/glslang_tab.cpp"
+#line 5249 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 11: /* primary_expression: UINT32CONSTANT  */
-#line 406 "MachineIndependent/glslang.y"
+#line 427 "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 4755 "MachineIndependent/glslang_tab.cpp"
+#line 5258 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 12: /* primary_expression: INT64CONSTANT  */
-#line 410 "MachineIndependent/glslang.y"
+#line 431 "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 4764 "MachineIndependent/glslang_tab.cpp"
+#line 5267 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 13: /* primary_expression: UINT64CONSTANT  */
-#line 414 "MachineIndependent/glslang.y"
+#line 435 "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 4773 "MachineIndependent/glslang_tab.cpp"
+#line 5276 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 14: /* primary_expression: INT16CONSTANT  */
-#line 418 "MachineIndependent/glslang.y"
+#line 439 "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 4782 "MachineIndependent/glslang_tab.cpp"
+#line 5285 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 15: /* primary_expression: UINT16CONSTANT  */
-#line 422 "MachineIndependent/glslang.y"
+#line 443 "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 4791 "MachineIndependent/glslang_tab.cpp"
+#line 5294 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 16: /* primary_expression: DOUBLECONSTANT  */
-#line 426 "MachineIndependent/glslang.y"
+#line 447 "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 4802 "MachineIndependent/glslang_tab.cpp"
+#line 5305 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 17: /* primary_expression: FLOAT16CONSTANT  */
-#line 432 "MachineIndependent/glslang.y"
+#line 453 "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 4811 "MachineIndependent/glslang_tab.cpp"
+#line 5314 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 18: /* postfix_expression: primary_expression  */
-#line 440 "MachineIndependent/glslang.y"
+#line 461 "MachineIndependent/glslang.y"
                          {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4819 "MachineIndependent/glslang_tab.cpp"
+#line 5322 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET  */
-#line 443 "MachineIndependent/glslang.y"
+#line 464 "MachineIndependent/glslang.y"
                                                                        {
         (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode));
     }
-#line 4827 "MachineIndependent/glslang_tab.cpp"
+#line 5330 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 20: /* postfix_expression: function_call  */
-#line 446 "MachineIndependent/glslang.y"
+#line 467 "MachineIndependent/glslang.y"
                     {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4835 "MachineIndependent/glslang_tab.cpp"
+#line 5338 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER  */
-#line 449 "MachineIndependent/glslang.y"
+#line 470 "MachineIndependent/glslang.y"
                                         {
         (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string);
     }
-#line 4843 "MachineIndependent/glslang_tab.cpp"
+#line 5346 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 22: /* postfix_expression: postfix_expression INC_OP  */
-#line 452 "MachineIndependent/glslang.y"
+#line 473 "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 4853 "MachineIndependent/glslang_tab.cpp"
+#line 5356 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 23: /* postfix_expression: postfix_expression DEC_OP  */
-#line 457 "MachineIndependent/glslang.y"
+#line 478 "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 4863 "MachineIndependent/glslang_tab.cpp"
+#line 5366 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 24: /* integer_expression: expression  */
-#line 465 "MachineIndependent/glslang.y"
+#line 486 "MachineIndependent/glslang.y"
                  {
         parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]");
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4872 "MachineIndependent/glslang_tab.cpp"
+#line 5375 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 25: /* function_call: function_call_or_method  */
-#line 472 "MachineIndependent/glslang.y"
+#line 493 "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 4881 "MachineIndependent/glslang_tab.cpp"
+#line 5384 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 26: /* function_call_or_method: function_call_generic  */
-#line 479 "MachineIndependent/glslang.y"
+#line 500 "MachineIndependent/glslang.y"
                             {
         (yyval.interm) = (yyvsp[0].interm);
     }
-#line 4889 "MachineIndependent/glslang_tab.cpp"
+#line 5392 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN  */
-#line 485 "MachineIndependent/glslang.y"
+#line 506 "MachineIndependent/glslang.y"
                                                        {
         (yyval.interm) = (yyvsp[-1].interm);
         (yyval.interm).loc = (yyvsp[0].lex).loc;
     }
-#line 4898 "MachineIndependent/glslang_tab.cpp"
+#line 5401 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN  */
-#line 489 "MachineIndependent/glslang.y"
+#line 510 "MachineIndependent/glslang.y"
                                                      {
         (yyval.interm) = (yyvsp[-1].interm);
         (yyval.interm).loc = (yyvsp[0].lex).loc;
     }
-#line 4907 "MachineIndependent/glslang_tab.cpp"
+#line 5410 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 29: /* function_call_header_no_parameters: function_call_header VOID  */
-#line 496 "MachineIndependent/glslang.y"
+#line 517 "MachineIndependent/glslang.y"
                                 {
         (yyval.interm) = (yyvsp[-1].interm);
     }
-#line 4915 "MachineIndependent/glslang_tab.cpp"
+#line 5418 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 30: /* function_call_header_no_parameters: function_call_header  */
-#line 499 "MachineIndependent/glslang.y"
+#line 520 "MachineIndependent/glslang.y"
                            {
         (yyval.interm) = (yyvsp[0].interm);
     }
-#line 4923 "MachineIndependent/glslang_tab.cpp"
+#line 5426 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 31: /* function_call_header_with_parameters: function_call_header assignment_expression  */
-#line 505 "MachineIndependent/glslang.y"
+#line 526 "MachineIndependent/glslang.y"
                                                  {
         TParameter param = { 0, new TType };
         param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
@@ -4931,11 +5434,11 @@
         (yyval.interm).function = (yyvsp[-1].interm).function;
         (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode);
     }
-#line 4935 "MachineIndependent/glslang_tab.cpp"
+#line 5438 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression  */
-#line 512 "MachineIndependent/glslang.y"
+#line 533 "MachineIndependent/glslang.y"
                                                                        {
         TParameter param = { 0, new TType };
         param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType());
@@ -4943,29 +5446,29 @@
         (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 4947 "MachineIndependent/glslang_tab.cpp"
+#line 5450 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 33: /* function_call_header: function_identifier LEFT_PAREN  */
-#line 522 "MachineIndependent/glslang.y"
+#line 543 "MachineIndependent/glslang.y"
                                      {
         (yyval.interm) = (yyvsp[-1].interm);
     }
-#line 4955 "MachineIndependent/glslang_tab.cpp"
+#line 5458 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 34: /* function_identifier: type_specifier  */
-#line 530 "MachineIndependent/glslang.y"
+#line 551 "MachineIndependent/glslang.y"
                      {
         // Constructor
         (yyval.interm).intermNode = 0;
         (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
     }
-#line 4965 "MachineIndependent/glslang_tab.cpp"
+#line 5468 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 35: /* function_identifier: postfix_expression  */
-#line 535 "MachineIndependent/glslang.y"
+#line 556 "MachineIndependent/glslang.y"
                          {
         //
         // Should be a method or subroutine call, but we haven't recognized the arguments yet.
@@ -4993,50 +5496,50 @@
             (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull);
         }
     }
-#line 4997 "MachineIndependent/glslang_tab.cpp"
+#line 5500 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 36: /* function_identifier: non_uniform_qualifier  */
-#line 563 "MachineIndependent/glslang.y"
+#line 584 "MachineIndependent/glslang.y"
                             {
         // Constructor
         (yyval.interm).intermNode = 0;
         (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type));
     }
-#line 5007 "MachineIndependent/glslang_tab.cpp"
+#line 5510 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 37: /* unary_expression: postfix_expression  */
-#line 572 "MachineIndependent/glslang.y"
+#line 593 "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 5018 "MachineIndependent/glslang_tab.cpp"
+#line 5521 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 38: /* unary_expression: INC_OP unary_expression  */
-#line 578 "MachineIndependent/glslang.y"
+#line 599 "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 5027 "MachineIndependent/glslang_tab.cpp"
+#line 5530 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 39: /* unary_expression: DEC_OP unary_expression  */
-#line 582 "MachineIndependent/glslang.y"
+#line 603 "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 5036 "MachineIndependent/glslang_tab.cpp"
+#line 5539 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 40: /* unary_expression: unary_operator unary_expression  */
-#line 586 "MachineIndependent/glslang.y"
+#line 607 "MachineIndependent/glslang.y"
                                       {
         if ((yyvsp[-1].interm).op != EOpNull) {
             char errorOp[2] = {0, 0};
@@ -5053,179 +5556,179 @@
                 (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression();
         }
     }
-#line 5057 "MachineIndependent/glslang_tab.cpp"
+#line 5560 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 41: /* unary_operator: PLUS  */
-#line 606 "MachineIndependent/glslang.y"
+#line 627 "MachineIndependent/glslang.y"
             { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; }
-#line 5063 "MachineIndependent/glslang_tab.cpp"
+#line 5566 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 42: /* unary_operator: DASH  */
-#line 607 "MachineIndependent/glslang.y"
+#line 628 "MachineIndependent/glslang.y"
             { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; }
-#line 5069 "MachineIndependent/glslang_tab.cpp"
+#line 5572 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 43: /* unary_operator: BANG  */
-#line 608 "MachineIndependent/glslang.y"
+#line 629 "MachineIndependent/glslang.y"
             { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; }
-#line 5075 "MachineIndependent/glslang_tab.cpp"
+#line 5578 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 44: /* unary_operator: TILDE  */
-#line 609 "MachineIndependent/glslang.y"
+#line 630 "MachineIndependent/glslang.y"
             { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot;
               parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); }
-#line 5082 "MachineIndependent/glslang_tab.cpp"
+#line 5585 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 45: /* multiplicative_expression: unary_expression  */
-#line 615 "MachineIndependent/glslang.y"
+#line 636 "MachineIndependent/glslang.y"
                        { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5088 "MachineIndependent/glslang_tab.cpp"
+#line 5591 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression  */
-#line 616 "MachineIndependent/glslang.y"
+#line 637 "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 5098 "MachineIndependent/glslang_tab.cpp"
+#line 5601 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression  */
-#line 621 "MachineIndependent/glslang.y"
+#line 642 "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 5108 "MachineIndependent/glslang_tab.cpp"
+#line 5611 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression  */
-#line 626 "MachineIndependent/glslang.y"
+#line 647 "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 5119 "MachineIndependent/glslang_tab.cpp"
+#line 5622 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 49: /* additive_expression: multiplicative_expression  */
-#line 635 "MachineIndependent/glslang.y"
+#line 656 "MachineIndependent/glslang.y"
                                 { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5125 "MachineIndependent/glslang_tab.cpp"
+#line 5628 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 50: /* additive_expression: additive_expression PLUS multiplicative_expression  */
-#line 636 "MachineIndependent/glslang.y"
+#line 657 "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 5135 "MachineIndependent/glslang_tab.cpp"
+#line 5638 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 51: /* additive_expression: additive_expression DASH multiplicative_expression  */
-#line 641 "MachineIndependent/glslang.y"
+#line 662 "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 5145 "MachineIndependent/glslang_tab.cpp"
+#line 5648 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 52: /* shift_expression: additive_expression  */
-#line 649 "MachineIndependent/glslang.y"
+#line 670 "MachineIndependent/glslang.y"
                           { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5151 "MachineIndependent/glslang_tab.cpp"
+#line 5654 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 53: /* shift_expression: shift_expression LEFT_OP additive_expression  */
-#line 650 "MachineIndependent/glslang.y"
+#line 671 "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 5162 "MachineIndependent/glslang_tab.cpp"
+#line 5665 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression  */
-#line 656 "MachineIndependent/glslang.y"
+#line 677 "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 5173 "MachineIndependent/glslang_tab.cpp"
+#line 5676 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 55: /* relational_expression: shift_expression  */
-#line 665 "MachineIndependent/glslang.y"
+#line 686 "MachineIndependent/glslang.y"
                        { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5179 "MachineIndependent/glslang_tab.cpp"
+#line 5682 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression  */
-#line 666 "MachineIndependent/glslang.y"
+#line 687 "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 5189 "MachineIndependent/glslang_tab.cpp"
+#line 5692 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression  */
-#line 671 "MachineIndependent/glslang.y"
+#line 692 "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 5199 "MachineIndependent/glslang_tab.cpp"
+#line 5702 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 58: /* relational_expression: relational_expression LE_OP shift_expression  */
-#line 676 "MachineIndependent/glslang.y"
+#line 697 "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 5209 "MachineIndependent/glslang_tab.cpp"
+#line 5712 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 59: /* relational_expression: relational_expression GE_OP shift_expression  */
-#line 681 "MachineIndependent/glslang.y"
+#line 702 "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 5219 "MachineIndependent/glslang_tab.cpp"
+#line 5722 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 60: /* equality_expression: relational_expression  */
-#line 689 "MachineIndependent/glslang.y"
+#line 710 "MachineIndependent/glslang.y"
                             { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5225 "MachineIndependent/glslang_tab.cpp"
+#line 5728 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 61: /* equality_expression: equality_expression EQ_OP relational_expression  */
-#line 690 "MachineIndependent/glslang.y"
+#line 711 "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(), "==");
@@ -5235,11 +5738,11 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 5239 "MachineIndependent/glslang_tab.cpp"
+#line 5742 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 62: /* equality_expression: equality_expression NE_OP relational_expression  */
-#line 699 "MachineIndependent/glslang.y"
+#line 720 "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(), "!=");
@@ -5249,124 +5752,124 @@
         if ((yyval.interm.intermTypedNode) == 0)
             (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc);
     }
-#line 5253 "MachineIndependent/glslang_tab.cpp"
+#line 5756 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 63: /* and_expression: equality_expression  */
-#line 711 "MachineIndependent/glslang.y"
+#line 732 "MachineIndependent/glslang.y"
                           { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5259 "MachineIndependent/glslang_tab.cpp"
+#line 5762 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 64: /* and_expression: and_expression AMPERSAND equality_expression  */
-#line 712 "MachineIndependent/glslang.y"
+#line 733 "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 5270 "MachineIndependent/glslang_tab.cpp"
+#line 5773 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 65: /* exclusive_or_expression: and_expression  */
-#line 721 "MachineIndependent/glslang.y"
+#line 742 "MachineIndependent/glslang.y"
                      { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5276 "MachineIndependent/glslang_tab.cpp"
+#line 5779 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression  */
-#line 722 "MachineIndependent/glslang.y"
+#line 743 "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 5287 "MachineIndependent/glslang_tab.cpp"
+#line 5790 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 67: /* inclusive_or_expression: exclusive_or_expression  */
-#line 731 "MachineIndependent/glslang.y"
+#line 752 "MachineIndependent/glslang.y"
                               { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5293 "MachineIndependent/glslang_tab.cpp"
+#line 5796 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression  */
-#line 732 "MachineIndependent/glslang.y"
+#line 753 "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 5304 "MachineIndependent/glslang_tab.cpp"
+#line 5807 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 69: /* logical_and_expression: inclusive_or_expression  */
-#line 741 "MachineIndependent/glslang.y"
+#line 762 "MachineIndependent/glslang.y"
                               { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5310 "MachineIndependent/glslang_tab.cpp"
+#line 5813 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression  */
-#line 742 "MachineIndependent/glslang.y"
+#line 763 "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 5320 "MachineIndependent/glslang_tab.cpp"
+#line 5823 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 71: /* logical_xor_expression: logical_and_expression  */
-#line 750 "MachineIndependent/glslang.y"
+#line 771 "MachineIndependent/glslang.y"
                              { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5326 "MachineIndependent/glslang_tab.cpp"
+#line 5829 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression  */
-#line 751 "MachineIndependent/glslang.y"
+#line 772 "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 5336 "MachineIndependent/glslang_tab.cpp"
+#line 5839 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 73: /* logical_or_expression: logical_xor_expression  */
-#line 759 "MachineIndependent/glslang.y"
+#line 780 "MachineIndependent/glslang.y"
                              { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5342 "MachineIndependent/glslang_tab.cpp"
+#line 5845 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression  */
-#line 760 "MachineIndependent/glslang.y"
+#line 781 "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 5352 "MachineIndependent/glslang_tab.cpp"
+#line 5855 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 75: /* conditional_expression: logical_or_expression  */
-#line 768 "MachineIndependent/glslang.y"
+#line 789 "MachineIndependent/glslang.y"
                             { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5358 "MachineIndependent/glslang_tab.cpp"
+#line 5861 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 76: /* $@1: %empty  */
-#line 769 "MachineIndependent/glslang.y"
+#line 790 "MachineIndependent/glslang.y"
                                      {
         ++parseContext.controlFlowNestingLevel;
     }
-#line 5366 "MachineIndependent/glslang_tab.cpp"
+#line 5869 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression  */
-#line 772 "MachineIndependent/glslang.y"
+#line 793 "MachineIndependent/glslang.y"
                                              {
         --parseContext.controlFlowNestingLevel;
         parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode));
@@ -5379,17 +5882,17 @@
             (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         }
     }
-#line 5383 "MachineIndependent/glslang_tab.cpp"
+#line 5886 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 78: /* assignment_expression: conditional_expression  */
-#line 787 "MachineIndependent/glslang.y"
+#line 808 "MachineIndependent/glslang.y"
                              { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); }
-#line 5389 "MachineIndependent/glslang_tab.cpp"
+#line 5892 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression  */
-#line 788 "MachineIndependent/glslang.y"
+#line 809 "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(), "=");
@@ -5403,119 +5906,119 @@
             (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode);
         }
     }
-#line 5407 "MachineIndependent/glslang_tab.cpp"
+#line 5910 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 80: /* assignment_operator: EQUAL  */
-#line 804 "MachineIndependent/glslang.y"
+#line 825 "MachineIndependent/glslang.y"
             {
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpAssign;
     }
-#line 5416 "MachineIndependent/glslang_tab.cpp"
+#line 5919 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 81: /* assignment_operator: MUL_ASSIGN  */
-#line 808 "MachineIndependent/glslang.y"
+#line 829 "MachineIndependent/glslang.y"
                  {
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpMulAssign;
     }
-#line 5425 "MachineIndependent/glslang_tab.cpp"
+#line 5928 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 82: /* assignment_operator: DIV_ASSIGN  */
-#line 812 "MachineIndependent/glslang.y"
+#line 833 "MachineIndependent/glslang.y"
                  {
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpDivAssign;
     }
-#line 5434 "MachineIndependent/glslang_tab.cpp"
+#line 5937 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 83: /* assignment_operator: MOD_ASSIGN  */
-#line 816 "MachineIndependent/glslang.y"
+#line 837 "MachineIndependent/glslang.y"
                  {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%=");
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpModAssign;
     }
-#line 5444 "MachineIndependent/glslang_tab.cpp"
+#line 5947 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 84: /* assignment_operator: ADD_ASSIGN  */
-#line 821 "MachineIndependent/glslang.y"
+#line 842 "MachineIndependent/glslang.y"
                  {
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpAddAssign;
     }
-#line 5453 "MachineIndependent/glslang_tab.cpp"
+#line 5956 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 85: /* assignment_operator: SUB_ASSIGN  */
-#line 825 "MachineIndependent/glslang.y"
+#line 846 "MachineIndependent/glslang.y"
                  {
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).op = EOpSubAssign;
     }
-#line 5462 "MachineIndependent/glslang_tab.cpp"
+#line 5965 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 86: /* assignment_operator: LEFT_ASSIGN  */
-#line 829 "MachineIndependent/glslang.y"
+#line 850 "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 5471 "MachineIndependent/glslang_tab.cpp"
+#line 5974 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 87: /* assignment_operator: RIGHT_ASSIGN  */
-#line 833 "MachineIndependent/glslang.y"
+#line 854 "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 5480 "MachineIndependent/glslang_tab.cpp"
+#line 5983 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 88: /* assignment_operator: AND_ASSIGN  */
-#line 837 "MachineIndependent/glslang.y"
+#line 858 "MachineIndependent/glslang.y"
                  {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign;
     }
-#line 5489 "MachineIndependent/glslang_tab.cpp"
+#line 5992 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 89: /* assignment_operator: XOR_ASSIGN  */
-#line 841 "MachineIndependent/glslang.y"
+#line 862 "MachineIndependent/glslang.y"
                  {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign;
     }
-#line 5498 "MachineIndependent/glslang_tab.cpp"
+#line 6001 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 90: /* assignment_operator: OR_ASSIGN  */
-#line 845 "MachineIndependent/glslang.y"
+#line 866 "MachineIndependent/glslang.y"
                 {
         parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign");
         (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign;
     }
-#line 5507 "MachineIndependent/glslang_tab.cpp"
+#line 6010 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 91: /* expression: assignment_expression  */
-#line 852 "MachineIndependent/glslang.y"
+#line 873 "MachineIndependent/glslang.y"
                             {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 5515 "MachineIndependent/glslang_tab.cpp"
+#line 6018 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 92: /* expression: expression COMMA assignment_expression  */
-#line 855 "MachineIndependent/glslang.y"
+#line 876 "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);
@@ -5524,40 +6027,62 @@
             (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         }
     }
-#line 5528 "MachineIndependent/glslang_tab.cpp"
+#line 6031 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 93: /* constant_expression: conditional_expression  */
-#line 866 "MachineIndependent/glslang.y"
+#line 887 "MachineIndependent/glslang.y"
                              {
         parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), "");
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 5537 "MachineIndependent/glslang_tab.cpp"
+#line 6040 "MachineIndependent/glslang_tab.cpp"
     break;
 
   case 94: /* declaration: function_prototype SEMICOLON  */
-#line 873 "MachineIndependent/glslang.y"
+#line 894 "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 5547 "MachineIndependent/glslang_tab.cpp"
+#line 6050 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 95: /* declaration: init_declarator_list SEMICOLON  */
-#line 878 "MachineIndependent/glslang.y"
+  case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON  */
+#line 900 "MachineIndependent/glslang.y"
+                                                               {
+        parseContext.requireExtensions((yyvsp[-1].interm).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier");
+        (yyvsp[-1].interm).function->setSpirvInstruction(*(yyvsp[-2].interm.spirvInst)); // Attach SPIR-V intruction qualifier
+        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 6062 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON  */
+#line 907 "MachineIndependent/glslang.y"
+                                               {
+        parseContext.globalCheck((yyvsp[0].lex).loc, "SPIR-V execution mode qualifier");
+        parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier");
+        (yyval.interm.intermNode) = 0;
+    }
+#line 6072 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 97: /* declaration: init_declarator_list SEMICOLON  */
+#line 913 "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 5557 "MachineIndependent/glslang_tab.cpp"
+#line 6082 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 96: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON  */
-#line 883 "MachineIndependent/glslang.y"
+  case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON  */
+#line 918 "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
@@ -5565,75 +6090,75 @@
         parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision);
         (yyval.interm.intermNode) = 0;
     }
-#line 5569 "MachineIndependent/glslang_tab.cpp"
+#line 6094 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 97: /* declaration: block_structure SEMICOLON  */
-#line 890 "MachineIndependent/glslang.y"
+  case 99: /* declaration: block_structure SEMICOLON  */
+#line 925 "MachineIndependent/glslang.y"
                                 {
         parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList);
         (yyval.interm.intermNode) = 0;
     }
-#line 5578 "MachineIndependent/glslang_tab.cpp"
+#line 6103 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 98: /* declaration: block_structure IDENTIFIER SEMICOLON  */
-#line 894 "MachineIndependent/glslang.y"
+  case 100: /* declaration: block_structure IDENTIFIER SEMICOLON  */
+#line 929 "MachineIndependent/glslang.y"
                                            {
         parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string);
         (yyval.interm.intermNode) = 0;
     }
-#line 5587 "MachineIndependent/glslang_tab.cpp"
+#line 6112 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 99: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON  */
-#line 898 "MachineIndependent/glslang.y"
+  case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON  */
+#line 933 "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 5596 "MachineIndependent/glslang_tab.cpp"
+#line 6121 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 100: /* declaration: type_qualifier SEMICOLON  */
-#line 902 "MachineIndependent/glslang.y"
+  case 102: /* declaration: type_qualifier SEMICOLON  */
+#line 937 "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 5606 "MachineIndependent/glslang_tab.cpp"
+#line 6131 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 101: /* declaration: type_qualifier IDENTIFIER SEMICOLON  */
-#line 907 "MachineIndependent/glslang.y"
+  case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON  */
+#line 942 "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 5616 "MachineIndependent/glslang_tab.cpp"
+#line 6141 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 102: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON  */
-#line 912 "MachineIndependent/glslang.y"
+  case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON  */
+#line 947 "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 5627 "MachineIndependent/glslang_tab.cpp"
+#line 6152 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 103: /* $@2: %empty  */
-#line 921 "MachineIndependent/glslang.y"
+  case 105: /* $@2: %empty  */
+#line 956 "MachineIndependent/glslang.y"
                                            { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); }
-#line 5633 "MachineIndependent/glslang_tab.cpp"
+#line 6158 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 104: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE  */
-#line 921 "MachineIndependent/glslang.y"
+  case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE  */
+#line 956 "MachineIndependent/glslang.y"
                                                                                                                           {
         --parseContext.blockNestingLevel;
         parseContext.blockName = (yyvsp[-4].lex).string;
@@ -5643,54 +6168,88 @@
         (yyval.interm).loc = (yyvsp[-5].interm.type).loc;
         (yyval.interm).typeList = (yyvsp[-1].interm.typeList);
     }
-#line 5647 "MachineIndependent/glslang_tab.cpp"
+#line 6172 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 105: /* identifier_list: COMMA IDENTIFIER  */
-#line 932 "MachineIndependent/glslang.y"
+  case 107: /* identifier_list: COMMA IDENTIFIER  */
+#line 967 "MachineIndependent/glslang.y"
                        {
         (yyval.interm.identifierList) = new TIdentifierList;
         (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
     }
-#line 5656 "MachineIndependent/glslang_tab.cpp"
+#line 6181 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 106: /* identifier_list: identifier_list COMMA IDENTIFIER  */
-#line 936 "MachineIndependent/glslang.y"
+  case 108: /* identifier_list: identifier_list COMMA IDENTIFIER  */
+#line 971 "MachineIndependent/glslang.y"
                                        {
         (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList);
         (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string);
     }
-#line 5665 "MachineIndependent/glslang_tab.cpp"
+#line 6190 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 107: /* function_prototype: function_declarator RIGHT_PAREN  */
-#line 943 "MachineIndependent/glslang.y"
+  case 109: /* function_prototype: function_declarator RIGHT_PAREN  */
+#line 978 "MachineIndependent/glslang.y"
                                        {
         (yyval.interm).function = (yyvsp[-1].interm.function);
         (yyval.interm).loc = (yyvsp[0].lex).loc;
     }
-#line 5674 "MachineIndependent/glslang_tab.cpp"
+#line 6199 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 108: /* function_declarator: function_header  */
-#line 950 "MachineIndependent/glslang.y"
+  case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute  */
+#line 982 "MachineIndependent/glslang.y"
+                                                {
+        (yyval.interm).function = (yyvsp[-2].interm.function);
+        (yyval.interm).loc = (yyvsp[-1].lex).loc;
+        parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute");
+        parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes));
+    }
+#line 6210 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN  */
+#line 988 "MachineIndependent/glslang.y"
+                                                {
+        (yyval.interm).function = (yyvsp[-1].interm.function);
+        (yyval.interm).loc = (yyvsp[0].lex).loc;
+        parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute");
+        parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes));
+    }
+#line 6221 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute  */
+#line 994 "MachineIndependent/glslang.y"
+                                                          {
+        (yyval.interm).function = (yyvsp[-2].interm.function);
+        (yyval.interm).loc = (yyvsp[-1].lex).loc;
+        parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute");
+        parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes));
+        parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes));
+    }
+#line 6233 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 113: /* function_declarator: function_header  */
+#line 1004 "MachineIndependent/glslang.y"
                       {
         (yyval.interm.function) = (yyvsp[0].interm.function);
     }
-#line 5682 "MachineIndependent/glslang_tab.cpp"
+#line 6241 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 109: /* function_declarator: function_header_with_parameters  */
-#line 953 "MachineIndependent/glslang.y"
+  case 114: /* function_declarator: function_header_with_parameters  */
+#line 1007 "MachineIndependent/glslang.y"
                                       {
         (yyval.interm.function) = (yyvsp[0].interm.function);
     }
-#line 5690 "MachineIndependent/glslang_tab.cpp"
+#line 6249 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 110: /* function_header_with_parameters: function_header parameter_declaration  */
-#line 960 "MachineIndependent/glslang.y"
+  case 115: /* function_header_with_parameters: function_header parameter_declaration  */
+#line 1014 "MachineIndependent/glslang.y"
                                             {
         // Add the parameter
         (yyval.interm.function) = (yyvsp[-1].interm.function);
@@ -5699,11 +6258,11 @@
         else
             delete (yyvsp[0].interm).param.type;
     }
-#line 5703 "MachineIndependent/glslang_tab.cpp"
+#line 6262 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 111: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration  */
-#line 968 "MachineIndependent/glslang.y"
+  case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration  */
+#line 1022 "MachineIndependent/glslang.y"
                                                                   {
         //
         // Only first parameter of one-parameter functions can be void
@@ -5721,11 +6280,11 @@
             (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param);
         }
     }
-#line 5725 "MachineIndependent/glslang_tab.cpp"
+#line 6284 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 112: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN  */
-#line 988 "MachineIndependent/glslang.y"
+  case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN  */
+#line 1042 "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",
@@ -5745,11 +6304,11 @@
         function = new TFunction((yyvsp[-1].lex).string, type);
         (yyval.interm.function) = function;
     }
-#line 5749 "MachineIndependent/glslang_tab.cpp"
+#line 6308 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 113: /* parameter_declarator: type_specifier IDENTIFIER  */
-#line 1011 "MachineIndependent/glslang.y"
+  case 118: /* parameter_declarator: type_specifier IDENTIFIER  */
+#line 1065 "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");
@@ -5765,11 +6324,11 @@
         (yyval.interm).loc = (yyvsp[0].lex).loc;
         (yyval.interm).param = param;
     }
-#line 5769 "MachineIndependent/glslang_tab.cpp"
+#line 6328 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 114: /* parameter_declarator: type_specifier IDENTIFIER array_specifier  */
-#line 1026 "MachineIndependent/glslang.y"
+  case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier  */
+#line 1080 "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");
@@ -5789,11 +6348,11 @@
         (yyval.interm).loc = (yyvsp[-1].lex).loc;
         (yyval.interm).param = param;
     }
-#line 5793 "MachineIndependent/glslang_tab.cpp"
+#line 6352 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 115: /* parameter_declaration: type_qualifier parameter_declarator  */
-#line 1051 "MachineIndependent/glslang.y"
+  case 120: /* parameter_declaration: type_qualifier parameter_declarator  */
+#line 1105 "MachineIndependent/glslang.y"
                                           {
         (yyval.interm) = (yyvsp[0].interm);
         if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
@@ -5805,11 +6364,11 @@
         parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type);
 
     }
-#line 5809 "MachineIndependent/glslang_tab.cpp"
+#line 6368 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 116: /* parameter_declaration: parameter_declarator  */
-#line 1062 "MachineIndependent/glslang.y"
+  case 121: /* parameter_declaration: parameter_declarator  */
+#line 1116 "MachineIndependent/glslang.y"
                            {
         (yyval.interm) = (yyvsp[0].interm);
 
@@ -5817,11 +6376,11 @@
         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 5821 "MachineIndependent/glslang_tab.cpp"
+#line 6380 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 117: /* parameter_declaration: type_qualifier parameter_type_specifier  */
-#line 1072 "MachineIndependent/glslang.y"
+  case 122: /* parameter_declaration: type_qualifier parameter_type_specifier  */
+#line 1126 "MachineIndependent/glslang.y"
                                               {
         (yyval.interm) = (yyvsp[0].interm);
         if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone)
@@ -5832,11 +6391,11 @@
         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 5836 "MachineIndependent/glslang_tab.cpp"
+#line 6395 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 118: /* parameter_declaration: parameter_type_specifier  */
-#line 1082 "MachineIndependent/glslang.y"
+  case 123: /* parameter_declaration: parameter_type_specifier  */
+#line 1136 "MachineIndependent/glslang.y"
                                {
         (yyval.interm) = (yyvsp[0].interm);
 
@@ -5844,68 +6403,68 @@
         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 5848 "MachineIndependent/glslang_tab.cpp"
+#line 6407 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 119: /* parameter_type_specifier: type_specifier  */
-#line 1092 "MachineIndependent/glslang.y"
+  case 124: /* parameter_type_specifier: type_specifier  */
+#line 1146 "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 5859 "MachineIndependent/glslang_tab.cpp"
+#line 6418 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 120: /* init_declarator_list: single_declaration  */
-#line 1101 "MachineIndependent/glslang.y"
+  case 125: /* init_declarator_list: single_declaration  */
+#line 1155 "MachineIndependent/glslang.y"
                          {
         (yyval.interm) = (yyvsp[0].interm);
     }
-#line 5867 "MachineIndependent/glslang_tab.cpp"
+#line 6426 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 121: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER  */
-#line 1104 "MachineIndependent/glslang.y"
+  case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER  */
+#line 1158 "MachineIndependent/glslang.y"
                                             {
         (yyval.interm) = (yyvsp[-2].interm);
         parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type);
     }
-#line 5876 "MachineIndependent/glslang_tab.cpp"
+#line 6435 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 122: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier  */
-#line 1108 "MachineIndependent/glslang.y"
+  case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier  */
+#line 1162 "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 5885 "MachineIndependent/glslang_tab.cpp"
+#line 6444 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 123: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer  */
-#line 1112 "MachineIndependent/glslang.y"
+  case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer  */
+#line 1166 "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 5895 "MachineIndependent/glslang_tab.cpp"
+#line 6454 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 124: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer  */
-#line 1117 "MachineIndependent/glslang.y"
+  case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer  */
+#line 1171 "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 5905 "MachineIndependent/glslang_tab.cpp"
+#line 6464 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 125: /* single_declaration: fully_specified_type  */
-#line 1125 "MachineIndependent/glslang.y"
+  case 130: /* single_declaration: fully_specified_type  */
+#line 1179 "MachineIndependent/glslang.y"
                            {
         (yyval.interm).type = (yyvsp[0].interm.type);
         (yyval.interm).intermNode = 0;
@@ -5913,51 +6472,51 @@
         parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type);
 
     }
-#line 5917 "MachineIndependent/glslang_tab.cpp"
+#line 6476 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 126: /* single_declaration: fully_specified_type IDENTIFIER  */
-#line 1132 "MachineIndependent/glslang.y"
+  case 131: /* single_declaration: fully_specified_type IDENTIFIER  */
+#line 1186 "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 5927 "MachineIndependent/glslang_tab.cpp"
+#line 6486 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 127: /* single_declaration: fully_specified_type IDENTIFIER array_specifier  */
-#line 1137 "MachineIndependent/glslang.y"
+  case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier  */
+#line 1191 "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 5937 "MachineIndependent/glslang_tab.cpp"
+#line 6496 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 128: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer  */
-#line 1142 "MachineIndependent/glslang.y"
+  case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer  */
+#line 1196 "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 5947 "MachineIndependent/glslang_tab.cpp"
+#line 6506 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 129: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer  */
-#line 1147 "MachineIndependent/glslang.y"
+  case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer  */
+#line 1201 "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 5957 "MachineIndependent/glslang_tab.cpp"
+#line 6516 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 130: /* fully_specified_type: type_specifier  */
-#line 1156 "MachineIndependent/glslang.y"
+  case 135: /* fully_specified_type: type_specifier  */
+#line 1210 "MachineIndependent/glslang.y"
                      {
         (yyval.interm.type) = (yyvsp[0].interm.type);
 
@@ -5968,11 +6527,11 @@
         }
         parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier);
     }
-#line 5972 "MachineIndependent/glslang_tab.cpp"
+#line 6531 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 131: /* fully_specified_type: type_qualifier type_specifier  */
-#line 1166 "MachineIndependent/glslang.y"
+  case 136: /* fully_specified_type: type_qualifier type_specifier  */
+#line 1220 "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));
@@ -5997,22 +6556,22 @@
              (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn)))
             (yyval.interm.type).qualifier.smooth = true;
     }
-#line 6001 "MachineIndependent/glslang_tab.cpp"
+#line 6560 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 132: /* invariant_qualifier: INVARIANT  */
-#line 1193 "MachineIndependent/glslang.y"
+  case 137: /* invariant_qualifier: INVARIANT  */
+#line 1247 "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 6012 "MachineIndependent/glslang_tab.cpp"
+#line 6571 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 133: /* interpolation_qualifier: SMOOTH  */
-#line 1202 "MachineIndependent/glslang.y"
+  case 138: /* interpolation_qualifier: SMOOTH  */
+#line 1256 "MachineIndependent/glslang.y"
              {
         parseContext.globalCheck((yyvsp[0].lex).loc, "smooth");
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth");
@@ -6020,11 +6579,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.smooth = true;
     }
-#line 6024 "MachineIndependent/glslang_tab.cpp"
+#line 6583 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 134: /* interpolation_qualifier: FLAT  */
-#line 1209 "MachineIndependent/glslang.y"
+  case 139: /* interpolation_qualifier: FLAT  */
+#line 1263 "MachineIndependent/glslang.y"
            {
         parseContext.globalCheck((yyvsp[0].lex).loc, "flat");
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat");
@@ -6032,11 +6591,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.flat = true;
     }
-#line 6036 "MachineIndependent/glslang_tab.cpp"
+#line 6595 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 135: /* interpolation_qualifier: NOPERSPECTIVE  */
-#line 1217 "MachineIndependent/glslang.y"
+  case 140: /* interpolation_qualifier: NOPERSPECTIVE  */
+#line 1271 "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");
@@ -6044,11 +6603,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.nopersp = true;
     }
-#line 6048 "MachineIndependent/glslang_tab.cpp"
+#line 6607 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 136: /* interpolation_qualifier: EXPLICITINTERPAMD  */
-#line 1224 "MachineIndependent/glslang.y"
+  case 141: /* interpolation_qualifier: EXPLICITINTERPAMD  */
+#line 1278 "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");
@@ -6056,11 +6615,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.explicitInterp = true;
     }
-#line 6060 "MachineIndependent/glslang_tab.cpp"
+#line 6619 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 137: /* interpolation_qualifier: PERVERTEXNV  */
-#line 1231 "MachineIndependent/glslang.y"
+  case 142: /* interpolation_qualifier: PERVERTEXNV  */
+#line 1285 "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");
@@ -6069,11 +6628,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.pervertexNV = true;
     }
-#line 6073 "MachineIndependent/glslang_tab.cpp"
+#line 6632 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 138: /* interpolation_qualifier: PERPRIMITIVENV  */
-#line 1239 "MachineIndependent/glslang.y"
+  case 143: /* interpolation_qualifier: PERPRIMITIVENV  */
+#line 1293 "MachineIndependent/glslang.y"
                      {
         // No need for profile version or extension check. Shader stage already checks both.
         parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV");
@@ -6084,11 +6643,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.perPrimitiveNV = true;
     }
-#line 6088 "MachineIndependent/glslang_tab.cpp"
+#line 6647 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 139: /* interpolation_qualifier: PERVIEWNV  */
-#line 1249 "MachineIndependent/glslang.y"
+  case 144: /* interpolation_qualifier: PERVIEWNV  */
+#line 1303 "MachineIndependent/glslang.y"
                 {
         // No need for profile version or extension check. Shader stage already checks both.
         parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV");
@@ -6096,11 +6655,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.perViewNV = true;
     }
-#line 6100 "MachineIndependent/glslang_tab.cpp"
+#line 6659 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 140: /* interpolation_qualifier: PERTASKNV  */
-#line 1256 "MachineIndependent/glslang.y"
+  case 145: /* interpolation_qualifier: PERTASKNV  */
+#line 1310 "MachineIndependent/glslang.y"
                 {
         // No need for profile version or extension check. Shader stage already checks both.
         parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV");
@@ -6108,84 +6667,84 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.perTaskNV = true;
     }
-#line 6112 "MachineIndependent/glslang_tab.cpp"
+#line 6671 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 141: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN  */
-#line 1267 "MachineIndependent/glslang.y"
+  case 146: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN  */
+#line 1321 "MachineIndependent/glslang.y"
                                                              {
         (yyval.interm.type) = (yyvsp[-1].interm.type);
     }
-#line 6120 "MachineIndependent/glslang_tab.cpp"
+#line 6679 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 142: /* layout_qualifier_id_list: layout_qualifier_id  */
-#line 1273 "MachineIndependent/glslang.y"
+  case 147: /* layout_qualifier_id_list: layout_qualifier_id  */
+#line 1327 "MachineIndependent/glslang.y"
                           {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 6128 "MachineIndependent/glslang_tab.cpp"
+#line 6687 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 143: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id  */
-#line 1276 "MachineIndependent/glslang.y"
+  case 148: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id  */
+#line 1330 "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 6138 "MachineIndependent/glslang_tab.cpp"
+#line 6697 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 144: /* layout_qualifier_id: IDENTIFIER  */
-#line 1283 "MachineIndependent/glslang.y"
+  case 149: /* layout_qualifier_id: IDENTIFIER  */
+#line 1337 "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 6147 "MachineIndependent/glslang_tab.cpp"
+#line 6706 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 145: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression  */
-#line 1287 "MachineIndependent/glslang.y"
+  case 150: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression  */
+#line 1341 "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 6156 "MachineIndependent/glslang_tab.cpp"
+#line 6715 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 146: /* layout_qualifier_id: SHARED  */
-#line 1291 "MachineIndependent/glslang.y"
+  case 151: /* layout_qualifier_id: SHARED  */
+#line 1345 "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 6166 "MachineIndependent/glslang_tab.cpp"
+#line 6725 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 147: /* precise_qualifier: PRECISE  */
-#line 1300 "MachineIndependent/glslang.y"
+  case 152: /* precise_qualifier: PRECISE  */
+#line 1354 "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 6177 "MachineIndependent/glslang_tab.cpp"
+#line 6736 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 148: /* type_qualifier: single_type_qualifier  */
-#line 1310 "MachineIndependent/glslang.y"
+  case 153: /* type_qualifier: single_type_qualifier  */
+#line 1364 "MachineIndependent/glslang.y"
                             {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 6185 "MachineIndependent/glslang_tab.cpp"
+#line 6744 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 149: /* type_qualifier: type_qualifier single_type_qualifier  */
-#line 1313 "MachineIndependent/glslang.y"
+  case 154: /* type_qualifier: type_qualifier single_type_qualifier  */
+#line 1367 "MachineIndependent/glslang.y"
                                            {
         (yyval.interm.type) = (yyvsp[-1].interm.type);
         if ((yyval.interm.type).basicType == EbtVoid)
@@ -6194,112 +6753,151 @@
         (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 6198 "MachineIndependent/glslang_tab.cpp"
+#line 6757 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 150: /* single_type_qualifier: storage_qualifier  */
-#line 1324 "MachineIndependent/glslang.y"
+  case 155: /* single_type_qualifier: storage_qualifier  */
+#line 1378 "MachineIndependent/glslang.y"
                         {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 6206 "MachineIndependent/glslang_tab.cpp"
+#line 6765 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 151: /* single_type_qualifier: layout_qualifier  */
-#line 1327 "MachineIndependent/glslang.y"
+  case 156: /* single_type_qualifier: layout_qualifier  */
+#line 1381 "MachineIndependent/glslang.y"
                        {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 6214 "MachineIndependent/glslang_tab.cpp"
+#line 6773 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 152: /* single_type_qualifier: precision_qualifier  */
-#line 1330 "MachineIndependent/glslang.y"
+  case 157: /* single_type_qualifier: precision_qualifier  */
+#line 1384 "MachineIndependent/glslang.y"
                           {
         parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision);
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 6223 "MachineIndependent/glslang_tab.cpp"
+#line 6782 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 153: /* single_type_qualifier: interpolation_qualifier  */
-#line 1334 "MachineIndependent/glslang.y"
+  case 158: /* single_type_qualifier: interpolation_qualifier  */
+#line 1388 "MachineIndependent/glslang.y"
                               {
         // allow inheritance of storage qualifier from block declaration
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 6232 "MachineIndependent/glslang_tab.cpp"
+#line 6791 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 154: /* single_type_qualifier: invariant_qualifier  */
-#line 1338 "MachineIndependent/glslang.y"
+  case 159: /* single_type_qualifier: invariant_qualifier  */
+#line 1392 "MachineIndependent/glslang.y"
                           {
         // allow inheritance of storage qualifier from block declaration
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 6241 "MachineIndependent/glslang_tab.cpp"
+#line 6800 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 155: /* single_type_qualifier: precise_qualifier  */
-#line 1343 "MachineIndependent/glslang.y"
+  case 160: /* single_type_qualifier: precise_qualifier  */
+#line 1397 "MachineIndependent/glslang.y"
                         {
         // allow inheritance of storage qualifier from block declaration
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 6250 "MachineIndependent/glslang_tab.cpp"
+#line 6809 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 156: /* single_type_qualifier: non_uniform_qualifier  */
-#line 1347 "MachineIndependent/glslang.y"
+  case 161: /* single_type_qualifier: non_uniform_qualifier  */
+#line 1401 "MachineIndependent/glslang.y"
                             {
         (yyval.interm.type) = (yyvsp[0].interm.type);
     }
-#line 6258 "MachineIndependent/glslang_tab.cpp"
+#line 6817 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 157: /* storage_qualifier: CONST  */
-#line 1354 "MachineIndependent/glslang.y"
+  case 162: /* single_type_qualifier: spirv_storage_class_qualifier  */
+#line 1404 "MachineIndependent/glslang.y"
+                                    {
+        parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class");
+        parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier");
+        (yyval.interm.type) = (yyvsp[0].interm.type);
+    }
+#line 6827 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 163: /* single_type_qualifier: spirv_decorate_qualifier  */
+#line 1409 "MachineIndependent/glslang.y"
+                               {
+        parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier");
+        (yyval.interm.type) = (yyvsp[0].interm.type);
+    }
+#line 6836 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 164: /* single_type_qualifier: SPIRV_BY_REFERENCE  */
+#line 1413 "MachineIndependent/glslang.y"
+                         {
+        parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference");
+        (yyval.interm.type).init((yyvsp[0].lex).loc);
+        (yyval.interm.type).qualifier.setSpirvByReference();
+    }
+#line 6846 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 165: /* single_type_qualifier: SPIRV_LITERAL  */
+#line 1418 "MachineIndependent/glslang.y"
+                    {
+        parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal");
+        (yyval.interm.type).init((yyvsp[0].lex).loc);
+        (yyval.interm.type).qualifier.setSpirvLiteral();
+    }
+#line 6856 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 166: /* storage_qualifier: CONST  */
+#line 1427 "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 6267 "MachineIndependent/glslang_tab.cpp"
+#line 6865 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 158: /* storage_qualifier: INOUT  */
-#line 1358 "MachineIndependent/glslang.y"
+  case 167: /* storage_qualifier: INOUT  */
+#line 1431 "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 6277 "MachineIndependent/glslang_tab.cpp"
+#line 6875 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 159: /* storage_qualifier: IN  */
-#line 1363 "MachineIndependent/glslang.y"
+  case 168: /* storage_qualifier: IN  */
+#line 1436 "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 6288 "MachineIndependent/glslang_tab.cpp"
+#line 6886 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 160: /* storage_qualifier: OUT  */
-#line 1369 "MachineIndependent/glslang.y"
+  case 169: /* storage_qualifier: OUT  */
+#line 1442 "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 6299 "MachineIndependent/glslang_tab.cpp"
+#line 6897 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 161: /* storage_qualifier: CENTROID  */
-#line 1375 "MachineIndependent/glslang.y"
+  case 170: /* storage_qualifier: CENTROID  */
+#line 1448 "MachineIndependent/glslang.y"
                {
         parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid");
         parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid");
@@ -6307,21 +6905,21 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.centroid = true;
     }
-#line 6311 "MachineIndependent/glslang_tab.cpp"
+#line 6909 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 162: /* storage_qualifier: UNIFORM  */
-#line 1382 "MachineIndependent/glslang.y"
+  case 171: /* storage_qualifier: UNIFORM  */
+#line 1455 "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 6321 "MachineIndependent/glslang_tab.cpp"
+#line 6919 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 163: /* storage_qualifier: SHARED  */
-#line 1387 "MachineIndependent/glslang.y"
+  case 172: /* storage_qualifier: SHARED  */
+#line 1460 "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");
@@ -6330,21 +6928,21 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqShared;
     }
-#line 6334 "MachineIndependent/glslang_tab.cpp"
+#line 6932 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 164: /* storage_qualifier: BUFFER  */
-#line 1395 "MachineIndependent/glslang.y"
+  case 173: /* storage_qualifier: BUFFER  */
+#line 1468 "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 6344 "MachineIndependent/glslang_tab.cpp"
+#line 6942 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 165: /* storage_qualifier: ATTRIBUTE  */
-#line 1401 "MachineIndependent/glslang.y"
+  case 174: /* storage_qualifier: ATTRIBUTE  */
+#line 1474 "MachineIndependent/glslang.y"
                 {
         parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute");
         parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute");
@@ -6357,11 +6955,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqVaryingIn;
     }
-#line 6361 "MachineIndependent/glslang_tab.cpp"
+#line 6959 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 166: /* storage_qualifier: VARYING  */
-#line 1413 "MachineIndependent/glslang.y"
+  case 175: /* storage_qualifier: VARYING  */
+#line 1486 "MachineIndependent/glslang.y"
               {
         parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying");
         parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying");
@@ -6376,32 +6974,32 @@
         else
             (yyval.interm.type).qualifier.storage = EvqVaryingIn;
     }
-#line 6380 "MachineIndependent/glslang_tab.cpp"
+#line 6978 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 167: /* storage_qualifier: PATCH  */
-#line 1427 "MachineIndependent/glslang.y"
+  case 176: /* storage_qualifier: PATCH  */
+#line 1500 "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 6391 "MachineIndependent/glslang_tab.cpp"
+#line 6989 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 168: /* storage_qualifier: SAMPLE  */
-#line 1433 "MachineIndependent/glslang.y"
+  case 177: /* storage_qualifier: SAMPLE  */
+#line 1506 "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 6401 "MachineIndependent/glslang_tab.cpp"
+#line 6999 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 169: /* storage_qualifier: HITATTRNV  */
-#line 1438 "MachineIndependent/glslang.y"
+  case 178: /* storage_qualifier: HITATTRNV  */
+#line 1511 "MachineIndependent/glslang.y"
                 {
         parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask
@@ -6410,11 +7008,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqHitAttr;
     }
-#line 6414 "MachineIndependent/glslang_tab.cpp"
+#line 7012 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 170: /* storage_qualifier: HITATTREXT  */
-#line 1446 "MachineIndependent/glslang.y"
+  case 179: /* storage_qualifier: HITATTREXT  */
+#line 1519 "MachineIndependent/glslang.y"
                  {
         parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask
@@ -6423,11 +7021,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqHitAttr;
     }
-#line 6427 "MachineIndependent/glslang_tab.cpp"
+#line 7025 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 171: /* storage_qualifier: PAYLOADNV  */
-#line 1454 "MachineIndependent/glslang.y"
+  case 180: /* storage_qualifier: PAYLOADNV  */
+#line 1527 "MachineIndependent/glslang.y"
                 {
         parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask |
@@ -6436,11 +7034,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqPayload;
     }
-#line 6440 "MachineIndependent/glslang_tab.cpp"
+#line 7038 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 172: /* storage_qualifier: PAYLOADEXT  */
-#line 1462 "MachineIndependent/glslang.y"
+  case 181: /* storage_qualifier: PAYLOADEXT  */
+#line 1535 "MachineIndependent/glslang.y"
                  {
         parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask |
@@ -6449,11 +7047,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqPayload;
     }
-#line 6453 "MachineIndependent/glslang_tab.cpp"
+#line 7051 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 173: /* storage_qualifier: PAYLOADINNV  */
-#line 1470 "MachineIndependent/glslang.y"
+  case 182: /* storage_qualifier: PAYLOADINNV  */
+#line 1543 "MachineIndependent/glslang.y"
                   {
         parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask |
@@ -6462,11 +7060,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqPayloadIn;
     }
-#line 6466 "MachineIndependent/glslang_tab.cpp"
+#line 7064 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 174: /* storage_qualifier: PAYLOADINEXT  */
-#line 1478 "MachineIndependent/glslang.y"
+  case 183: /* storage_qualifier: PAYLOADINEXT  */
+#line 1551 "MachineIndependent/glslang.y"
                    {
         parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask |
@@ -6475,11 +7073,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqPayloadIn;
     }
-#line 6479 "MachineIndependent/glslang_tab.cpp"
+#line 7077 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 175: /* storage_qualifier: CALLDATANV  */
-#line 1486 "MachineIndependent/glslang.y"
+  case 184: /* storage_qualifier: CALLDATANV  */
+#line 1559 "MachineIndependent/glslang.y"
                  {
         parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask |
@@ -6488,11 +7086,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqCallableData;
     }
-#line 6492 "MachineIndependent/glslang_tab.cpp"
+#line 7090 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 176: /* storage_qualifier: CALLDATAEXT  */
-#line 1494 "MachineIndependent/glslang.y"
+  case 185: /* storage_qualifier: CALLDATAEXT  */
+#line 1567 "MachineIndependent/glslang.y"
                   {
         parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask |
@@ -6501,11 +7099,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqCallableData;
     }
-#line 6505 "MachineIndependent/glslang_tab.cpp"
+#line 7103 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 177: /* storage_qualifier: CALLDATAINNV  */
-#line 1502 "MachineIndependent/glslang.y"
+  case 186: /* storage_qualifier: CALLDATAINNV  */
+#line 1575 "MachineIndependent/glslang.y"
                    {
         parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV");
@@ -6513,11 +7111,11 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqCallableDataIn;
     }
-#line 6517 "MachineIndependent/glslang_tab.cpp"
+#line 7115 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 178: /* storage_qualifier: CALLDATAINEXT  */
-#line 1509 "MachineIndependent/glslang.y"
+  case 187: /* storage_qualifier: CALLDATAINEXT  */
+#line 1582 "MachineIndependent/glslang.y"
                     {
         parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT");
         parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT");
@@ -6525,175 +7123,175 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.storage = EvqCallableDataIn;
     }
-#line 6529 "MachineIndependent/glslang_tab.cpp"
+#line 7127 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 179: /* storage_qualifier: COHERENT  */
-#line 1516 "MachineIndependent/glslang.y"
+  case 188: /* storage_qualifier: COHERENT  */
+#line 1589 "MachineIndependent/glslang.y"
                {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.coherent = true;
     }
-#line 6538 "MachineIndependent/glslang_tab.cpp"
+#line 7136 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 180: /* storage_qualifier: DEVICECOHERENT  */
-#line 1520 "MachineIndependent/glslang.y"
+  case 189: /* storage_qualifier: DEVICECOHERENT  */
+#line 1593 "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 6548 "MachineIndependent/glslang_tab.cpp"
+#line 7146 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 181: /* storage_qualifier: QUEUEFAMILYCOHERENT  */
-#line 1525 "MachineIndependent/glslang.y"
+  case 190: /* storage_qualifier: QUEUEFAMILYCOHERENT  */
+#line 1598 "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 6558 "MachineIndependent/glslang_tab.cpp"
+#line 7156 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 182: /* storage_qualifier: WORKGROUPCOHERENT  */
-#line 1530 "MachineIndependent/glslang.y"
+  case 191: /* storage_qualifier: WORKGROUPCOHERENT  */
+#line 1603 "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 6568 "MachineIndependent/glslang_tab.cpp"
+#line 7166 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 183: /* storage_qualifier: SUBGROUPCOHERENT  */
-#line 1535 "MachineIndependent/glslang.y"
+  case 192: /* storage_qualifier: SUBGROUPCOHERENT  */
+#line 1608 "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 6578 "MachineIndependent/glslang_tab.cpp"
+#line 7176 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 184: /* storage_qualifier: NONPRIVATE  */
-#line 1540 "MachineIndependent/glslang.y"
+  case 193: /* storage_qualifier: NONPRIVATE  */
+#line 1613 "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 6588 "MachineIndependent/glslang_tab.cpp"
+#line 7186 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 185: /* storage_qualifier: SHADERCALLCOHERENT  */
-#line 1545 "MachineIndependent/glslang.y"
+  case 194: /* storage_qualifier: SHADERCALLCOHERENT  */
+#line 1618 "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 6598 "MachineIndependent/glslang_tab.cpp"
+#line 7196 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 186: /* storage_qualifier: VOLATILE  */
-#line 1550 "MachineIndependent/glslang.y"
+  case 195: /* storage_qualifier: VOLATILE  */
+#line 1623 "MachineIndependent/glslang.y"
                {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.volatil = true;
     }
-#line 6607 "MachineIndependent/glslang_tab.cpp"
+#line 7205 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 187: /* storage_qualifier: RESTRICT  */
-#line 1554 "MachineIndependent/glslang.y"
+  case 196: /* storage_qualifier: RESTRICT  */
+#line 1627 "MachineIndependent/glslang.y"
                {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.restrict = true;
     }
-#line 6616 "MachineIndependent/glslang_tab.cpp"
+#line 7214 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 188: /* storage_qualifier: READONLY  */
-#line 1558 "MachineIndependent/glslang.y"
+  case 197: /* storage_qualifier: READONLY  */
+#line 1631 "MachineIndependent/glslang.y"
                {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.readonly = true;
     }
-#line 6625 "MachineIndependent/glslang_tab.cpp"
+#line 7223 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 189: /* storage_qualifier: WRITEONLY  */
-#line 1562 "MachineIndependent/glslang.y"
+  case 198: /* storage_qualifier: WRITEONLY  */
+#line 1635 "MachineIndependent/glslang.y"
                 {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.writeonly = true;
     }
-#line 6634 "MachineIndependent/glslang_tab.cpp"
+#line 7232 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 190: /* storage_qualifier: SUBROUTINE  */
-#line 1566 "MachineIndependent/glslang.y"
+  case 199: /* storage_qualifier: SUBROUTINE  */
+#line 1639 "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 6645 "MachineIndependent/glslang_tab.cpp"
+#line 7243 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 191: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN  */
-#line 1572 "MachineIndependent/glslang.y"
+  case 200: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN  */
+#line 1645 "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 6656 "MachineIndependent/glslang_tab.cpp"
+#line 7254 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 192: /* non_uniform_qualifier: NONUNIFORM  */
-#line 1583 "MachineIndependent/glslang.y"
+  case 201: /* non_uniform_qualifier: NONUNIFORM  */
+#line 1656 "MachineIndependent/glslang.y"
                  {
         (yyval.interm.type).init((yyvsp[0].lex).loc);
         (yyval.interm.type).qualifier.nonUniform = true;
     }
-#line 6665 "MachineIndependent/glslang_tab.cpp"
+#line 7263 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 193: /* type_name_list: IDENTIFIER  */
-#line 1590 "MachineIndependent/glslang.y"
+  case 202: /* type_name_list: IDENTIFIER  */
+#line 1663 "MachineIndependent/glslang.y"
                  {
         // TODO
     }
-#line 6673 "MachineIndependent/glslang_tab.cpp"
+#line 7271 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 194: /* type_name_list: type_name_list COMMA IDENTIFIER  */
-#line 1593 "MachineIndependent/glslang.y"
+  case 203: /* type_name_list: type_name_list COMMA IDENTIFIER  */
+#line 1666 "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 6683 "MachineIndependent/glslang_tab.cpp"
+#line 7281 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 195: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt  */
-#line 1602 "MachineIndependent/glslang.y"
+  case 204: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt  */
+#line 1675 "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 6693 "MachineIndependent/glslang_tab.cpp"
+#line 7291 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 196: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier  */
-#line 1607 "MachineIndependent/glslang.y"
+  case 205: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier  */
+#line 1680 "MachineIndependent/glslang.y"
                                                                            {
         parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes);
         (yyval.interm.type) = (yyvsp[-2].interm.type);
@@ -6701,21 +7299,21 @@
         (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters);
         (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes;
     }
-#line 6705 "MachineIndependent/glslang_tab.cpp"
+#line 7303 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 197: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET  */
-#line 1617 "MachineIndependent/glslang.y"
+  case 206: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET  */
+#line 1690 "MachineIndependent/glslang.y"
                                  {
         (yyval.interm).loc = (yyvsp[-1].lex).loc;
         (yyval.interm).arraySizes = new TArraySizes;
         (yyval.interm).arraySizes->addInnerSize();
     }
-#line 6715 "MachineIndependent/glslang_tab.cpp"
+#line 7313 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 198: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET  */
-#line 1622 "MachineIndependent/glslang.y"
+  case 207: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET  */
+#line 1695 "MachineIndependent/glslang.y"
                                                         {
         (yyval.interm).loc = (yyvsp[-2].lex).loc;
         (yyval.interm).arraySizes = new TArraySizes;
@@ -6724,20 +7322,20 @@
         parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
         (yyval.interm).arraySizes->addInnerSize(size);
     }
-#line 6728 "MachineIndependent/glslang_tab.cpp"
+#line 7326 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 199: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET  */
-#line 1630 "MachineIndependent/glslang.y"
+  case 208: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET  */
+#line 1703 "MachineIndependent/glslang.y"
                                                  {
         (yyval.interm) = (yyvsp[-2].interm);
         (yyval.interm).arraySizes->addInnerSize();
     }
-#line 6737 "MachineIndependent/glslang_tab.cpp"
+#line 7335 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 200: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET  */
-#line 1634 "MachineIndependent/glslang.y"
+  case 209: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET  */
+#line 1707 "MachineIndependent/glslang.y"
                                                                         {
         (yyval.interm) = (yyvsp[-3].interm);
 
@@ -6745,35 +7343,35 @@
         parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size");
         (yyval.interm).arraySizes->addInnerSize(size);
     }
-#line 6749 "MachineIndependent/glslang_tab.cpp"
+#line 7347 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 201: /* type_parameter_specifier_opt: type_parameter_specifier  */
-#line 1644 "MachineIndependent/glslang.y"
+  case 210: /* type_parameter_specifier_opt: type_parameter_specifier  */
+#line 1717 "MachineIndependent/glslang.y"
                                {
         (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters);
     }
-#line 6757 "MachineIndependent/glslang_tab.cpp"
+#line 7355 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 202: /* type_parameter_specifier_opt: %empty  */
-#line 1647 "MachineIndependent/glslang.y"
+  case 211: /* type_parameter_specifier_opt: %empty  */
+#line 1720 "MachineIndependent/glslang.y"
                         {
         (yyval.interm.typeParameters) = 0;
     }
-#line 6765 "MachineIndependent/glslang_tab.cpp"
+#line 7363 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 203: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE  */
-#line 1653 "MachineIndependent/glslang.y"
+  case 212: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE  */
+#line 1726 "MachineIndependent/glslang.y"
                                                            {
         (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters);
     }
-#line 6773 "MachineIndependent/glslang_tab.cpp"
+#line 7371 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 204: /* type_parameter_specifier_list: unary_expression  */
-#line 1659 "MachineIndependent/glslang.y"
+  case 213: /* type_parameter_specifier_list: unary_expression  */
+#line 1732 "MachineIndependent/glslang.y"
                        {
         (yyval.interm.typeParameters) = new TArraySizes;
 
@@ -6781,11 +7379,11 @@
         parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter");
         (yyval.interm.typeParameters)->addInnerSize(size);
     }
-#line 6785 "MachineIndependent/glslang_tab.cpp"
+#line 7383 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 205: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression  */
-#line 1666 "MachineIndependent/glslang.y"
+  case 214: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression  */
+#line 1739 "MachineIndependent/glslang.y"
                                                            {
         (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters);
 
@@ -6793,300 +7391,300 @@
         parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter");
         (yyval.interm.typeParameters)->addInnerSize(size);
     }
-#line 6797 "MachineIndependent/glslang_tab.cpp"
+#line 7395 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 206: /* type_specifier_nonarray: VOID  */
-#line 1676 "MachineIndependent/glslang.y"
+  case 215: /* type_specifier_nonarray: VOID  */
+#line 1749 "MachineIndependent/glslang.y"
            {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtVoid;
     }
-#line 6806 "MachineIndependent/glslang_tab.cpp"
+#line 7404 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 207: /* type_specifier_nonarray: FLOAT  */
-#line 1680 "MachineIndependent/glslang.y"
+  case 216: /* type_specifier_nonarray: FLOAT  */
+#line 1753 "MachineIndependent/glslang.y"
             {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtFloat;
     }
-#line 6815 "MachineIndependent/glslang_tab.cpp"
+#line 7413 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 208: /* type_specifier_nonarray: INT  */
-#line 1684 "MachineIndependent/glslang.y"
+  case 217: /* type_specifier_nonarray: INT  */
+#line 1757 "MachineIndependent/glslang.y"
           {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtInt;
     }
-#line 6824 "MachineIndependent/glslang_tab.cpp"
+#line 7422 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 209: /* type_specifier_nonarray: UINT  */
-#line 1688 "MachineIndependent/glslang.y"
+  case 218: /* type_specifier_nonarray: UINT  */
+#line 1761 "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 6834 "MachineIndependent/glslang_tab.cpp"
+#line 7432 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 210: /* type_specifier_nonarray: BOOL  */
-#line 1693 "MachineIndependent/glslang.y"
+  case 219: /* type_specifier_nonarray: BOOL  */
+#line 1766 "MachineIndependent/glslang.y"
            {
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtBool;
     }
-#line 6843 "MachineIndependent/glslang_tab.cpp"
+#line 7441 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 211: /* type_specifier_nonarray: VEC2  */
-#line 1697 "MachineIndependent/glslang.y"
+  case 220: /* type_specifier_nonarray: VEC2  */
+#line 1770 "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 6853 "MachineIndependent/glslang_tab.cpp"
+#line 7451 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 212: /* type_specifier_nonarray: VEC3  */
-#line 1702 "MachineIndependent/glslang.y"
+  case 221: /* type_specifier_nonarray: VEC3  */
+#line 1775 "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 6863 "MachineIndependent/glslang_tab.cpp"
+#line 7461 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 213: /* type_specifier_nonarray: VEC4  */
-#line 1707 "MachineIndependent/glslang.y"
+  case 222: /* type_specifier_nonarray: VEC4  */
+#line 1780 "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 6873 "MachineIndependent/glslang_tab.cpp"
+#line 7471 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 214: /* type_specifier_nonarray: BVEC2  */
-#line 1712 "MachineIndependent/glslang.y"
+  case 223: /* type_specifier_nonarray: BVEC2  */
+#line 1785 "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 6883 "MachineIndependent/glslang_tab.cpp"
+#line 7481 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 215: /* type_specifier_nonarray: BVEC3  */
-#line 1717 "MachineIndependent/glslang.y"
+  case 224: /* type_specifier_nonarray: BVEC3  */
+#line 1790 "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 6893 "MachineIndependent/glslang_tab.cpp"
+#line 7491 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 216: /* type_specifier_nonarray: BVEC4  */
-#line 1722 "MachineIndependent/glslang.y"
+  case 225: /* type_specifier_nonarray: BVEC4  */
+#line 1795 "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 6903 "MachineIndependent/glslang_tab.cpp"
+#line 7501 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 217: /* type_specifier_nonarray: IVEC2  */
-#line 1727 "MachineIndependent/glslang.y"
+  case 226: /* type_specifier_nonarray: IVEC2  */
+#line 1800 "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 6913 "MachineIndependent/glslang_tab.cpp"
+#line 7511 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 218: /* type_specifier_nonarray: IVEC3  */
-#line 1732 "MachineIndependent/glslang.y"
+  case 227: /* type_specifier_nonarray: IVEC3  */
+#line 1805 "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 6923 "MachineIndependent/glslang_tab.cpp"
+#line 7521 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 219: /* type_specifier_nonarray: IVEC4  */
-#line 1737 "MachineIndependent/glslang.y"
+  case 228: /* type_specifier_nonarray: IVEC4  */
+#line 1810 "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 6933 "MachineIndependent/glslang_tab.cpp"
+#line 7531 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 220: /* type_specifier_nonarray: UVEC2  */
-#line 1742 "MachineIndependent/glslang.y"
+  case 229: /* type_specifier_nonarray: UVEC2  */
+#line 1815 "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 6944 "MachineIndependent/glslang_tab.cpp"
+#line 7542 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 221: /* type_specifier_nonarray: UVEC3  */
-#line 1748 "MachineIndependent/glslang.y"
+  case 230: /* type_specifier_nonarray: UVEC3  */
+#line 1821 "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 6955 "MachineIndependent/glslang_tab.cpp"
+#line 7553 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 222: /* type_specifier_nonarray: UVEC4  */
-#line 1754 "MachineIndependent/glslang.y"
+  case 231: /* type_specifier_nonarray: UVEC4  */
+#line 1827 "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 6966 "MachineIndependent/glslang_tab.cpp"
+#line 7564 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 223: /* type_specifier_nonarray: MAT2  */
-#line 1760 "MachineIndependent/glslang.y"
+  case 232: /* type_specifier_nonarray: MAT2  */
+#line 1833 "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 6976 "MachineIndependent/glslang_tab.cpp"
+#line 7574 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 224: /* type_specifier_nonarray: MAT3  */
-#line 1765 "MachineIndependent/glslang.y"
+  case 233: /* type_specifier_nonarray: MAT3  */
+#line 1838 "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 6986 "MachineIndependent/glslang_tab.cpp"
+#line 7584 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 225: /* type_specifier_nonarray: MAT4  */
-#line 1770 "MachineIndependent/glslang.y"
+  case 234: /* type_specifier_nonarray: MAT4  */
+#line 1843 "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 6996 "MachineIndependent/glslang_tab.cpp"
+#line 7594 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 226: /* type_specifier_nonarray: MAT2X2  */
-#line 1775 "MachineIndependent/glslang.y"
+  case 235: /* type_specifier_nonarray: MAT2X2  */
+#line 1848 "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 7006 "MachineIndependent/glslang_tab.cpp"
+#line 7604 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 227: /* type_specifier_nonarray: MAT2X3  */
-#line 1780 "MachineIndependent/glslang.y"
+  case 236: /* type_specifier_nonarray: MAT2X3  */
+#line 1853 "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 7016 "MachineIndependent/glslang_tab.cpp"
+#line 7614 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 228: /* type_specifier_nonarray: MAT2X4  */
-#line 1785 "MachineIndependent/glslang.y"
+  case 237: /* type_specifier_nonarray: MAT2X4  */
+#line 1858 "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 7026 "MachineIndependent/glslang_tab.cpp"
+#line 7624 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 229: /* type_specifier_nonarray: MAT3X2  */
-#line 1790 "MachineIndependent/glslang.y"
+  case 238: /* type_specifier_nonarray: MAT3X2  */
+#line 1863 "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 7036 "MachineIndependent/glslang_tab.cpp"
+#line 7634 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 230: /* type_specifier_nonarray: MAT3X3  */
-#line 1795 "MachineIndependent/glslang.y"
+  case 239: /* type_specifier_nonarray: MAT3X3  */
+#line 1868 "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 7046 "MachineIndependent/glslang_tab.cpp"
+#line 7644 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 231: /* type_specifier_nonarray: MAT3X4  */
-#line 1800 "MachineIndependent/glslang.y"
+  case 240: /* type_specifier_nonarray: MAT3X4  */
+#line 1873 "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 7056 "MachineIndependent/glslang_tab.cpp"
+#line 7654 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 232: /* type_specifier_nonarray: MAT4X2  */
-#line 1805 "MachineIndependent/glslang.y"
+  case 241: /* type_specifier_nonarray: MAT4X2  */
+#line 1878 "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 7066 "MachineIndependent/glslang_tab.cpp"
+#line 7664 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 233: /* type_specifier_nonarray: MAT4X3  */
-#line 1810 "MachineIndependent/glslang.y"
+  case 242: /* type_specifier_nonarray: MAT4X3  */
+#line 1883 "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 7076 "MachineIndependent/glslang_tab.cpp"
+#line 7674 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 234: /* type_specifier_nonarray: MAT4X4  */
-#line 1815 "MachineIndependent/glslang.y"
+  case 243: /* type_specifier_nonarray: MAT4X4  */
+#line 1888 "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 7086 "MachineIndependent/glslang_tab.cpp"
+#line 7684 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 235: /* type_specifier_nonarray: DOUBLE  */
-#line 1821 "MachineIndependent/glslang.y"
+  case 244: /* type_specifier_nonarray: DOUBLE  */
+#line 1894 "MachineIndependent/glslang.y"
              {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double");
         if (! parseContext.symbolTable.atBuiltInLevel())
@@ -7094,121 +7692,121 @@
         (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
         (yyval.interm.type).basicType = EbtDouble;
     }
-#line 7098 "MachineIndependent/glslang_tab.cpp"
+#line 7696 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 236: /* type_specifier_nonarray: FLOAT16_T  */
-#line 1828 "MachineIndependent/glslang.y"
+  case 245: /* type_specifier_nonarray: FLOAT16_T  */
+#line 1901 "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 7108 "MachineIndependent/glslang_tab.cpp"
+#line 7706 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 237: /* type_specifier_nonarray: FLOAT32_T  */
-#line 1833 "MachineIndependent/glslang.y"
+  case 246: /* type_specifier_nonarray: FLOAT32_T  */
+#line 1906 "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 7118 "MachineIndependent/glslang_tab.cpp"
+#line 7716 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 238: /* type_specifier_nonarray: FLOAT64_T  */
-#line 1838 "MachineIndependent/glslang.y"
+  case 247: /* type_specifier_nonarray: FLOAT64_T  */
+#line 1911 "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 7128 "MachineIndependent/glslang_tab.cpp"
+#line 7726 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 239: /* type_specifier_nonarray: INT8_T  */
-#line 1843 "MachineIndependent/glslang.y"
+  case 248: /* type_specifier_nonarray: INT8_T  */
+#line 1916 "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 7138 "MachineIndependent/glslang_tab.cpp"
+#line 7736 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 240: /* type_specifier_nonarray: UINT8_T  */
-#line 1848 "MachineIndependent/glslang.y"
+  case 249: /* type_specifier_nonarray: UINT8_T  */
+#line 1921 "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 7148 "MachineIndependent/glslang_tab.cpp"
+#line 7746 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 241: /* type_specifier_nonarray: INT16_T  */
-#line 1853 "MachineIndependent/glslang.y"
+  case 250: /* type_specifier_nonarray: INT16_T  */
+#line 1926 "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 7158 "MachineIndependent/glslang_tab.cpp"
+#line 7756 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 242: /* type_specifier_nonarray: UINT16_T  */
-#line 1858 "MachineIndependent/glslang.y"
+  case 251: /* type_specifier_nonarray: UINT16_T  */
+#line 1931 "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 7168 "MachineIndependent/glslang_tab.cpp"
+#line 7766 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 243: /* type_specifier_nonarray: INT32_T  */
-#line 1863 "MachineIndependent/glslang.y"
+  case 252: /* type_specifier_nonarray: INT32_T  */
+#line 1936 "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 7178 "MachineIndependent/glslang_tab.cpp"
+#line 7776 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 244: /* type_specifier_nonarray: UINT32_T  */
-#line 1868 "MachineIndependent/glslang.y"
+  case 253: /* type_specifier_nonarray: UINT32_T  */
+#line 1941 "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 7188 "MachineIndependent/glslang_tab.cpp"
+#line 7786 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 245: /* type_specifier_nonarray: INT64_T  */
-#line 1873 "MachineIndependent/glslang.y"
+  case 254: /* type_specifier_nonarray: INT64_T  */
+#line 1946 "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 7198 "MachineIndependent/glslang_tab.cpp"
+#line 7796 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 246: /* type_specifier_nonarray: UINT64_T  */
-#line 1878 "MachineIndependent/glslang.y"
+  case 255: /* type_specifier_nonarray: UINT64_T  */
+#line 1951 "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 7208 "MachineIndependent/glslang_tab.cpp"
+#line 7806 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 247: /* type_specifier_nonarray: DVEC2  */
-#line 1883 "MachineIndependent/glslang.y"
+  case 256: /* type_specifier_nonarray: DVEC2  */
+#line 1956 "MachineIndependent/glslang.y"
             {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
         if (! parseContext.symbolTable.atBuiltInLevel())
@@ -7217,11 +7815,11 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setVector(2);
     }
-#line 7221 "MachineIndependent/glslang_tab.cpp"
+#line 7819 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 248: /* type_specifier_nonarray: DVEC3  */
-#line 1891 "MachineIndependent/glslang.y"
+  case 257: /* type_specifier_nonarray: DVEC3  */
+#line 1964 "MachineIndependent/glslang.y"
             {
         parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector");
         if (! parseContext.symbolTable.atBuiltInLevel())
@@ -7230,2760 +7828,2760 @@
         (yyval.interm.type).basicType = EbtDouble;
         (yyval.interm.type).setVector(3);
     }
-#line 7234 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setVector(4);
-    }
-#line 7247 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7258 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7269 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7280 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7291 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7302 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7313 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7324 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7335 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7346 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7357 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7368 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7379 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7390 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7401 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7412 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7423 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7434 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7445 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7456 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7467 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7478 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7489 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7500 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7511 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7522 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7533 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7544 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7555 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7566 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7577 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7588 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7599 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7610 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(2, 2);
-    }
-#line 7623 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(3, 3);
-    }
-#line 7636 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(4, 4);
-    }
-#line 7649 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(2, 2);
-    }
-#line 7662 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(2, 3);
-    }
-#line 7675 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(2, 4);
-    }
-#line 7688 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(3, 2);
-    }
-#line 7701 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(3, 3);
-    }
-#line 7714 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(3, 4);
-    }
-#line 7727 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(4, 2);
-    }
-#line 7740 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(4, 3);
-    }
-#line 7753 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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");
-        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
-        (yyval.interm.type).basicType = EbtDouble;
-        (yyval.interm.type).setMatrix(4, 4);
-    }
-#line 7766 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7777 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7788 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7799 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7810 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7821 "MachineIndependent/glslang_tab.cpp"
-    break;
-
-  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 7832 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 301: /* type_specifier_nonarray: F16MAT3X2  */
-#line 2237 "MachineIndependent/glslang.y"
+  case 258: /* type_specifier_nonarray: DVEC4  */
+#line 1972 "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");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setVector(4);
+    }
+#line 7845 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 259: /* type_specifier_nonarray: F16VEC2  */
+#line 1980 "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 7856 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 260: /* type_specifier_nonarray: F16VEC3  */
+#line 1986 "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 7867 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 261: /* type_specifier_nonarray: F16VEC4  */
+#line 1992 "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 7878 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 262: /* type_specifier_nonarray: F32VEC2  */
+#line 1998 "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 7889 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 263: /* type_specifier_nonarray: F32VEC3  */
+#line 2004 "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 7900 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 264: /* type_specifier_nonarray: F32VEC4  */
+#line 2010 "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 7911 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 265: /* type_specifier_nonarray: F64VEC2  */
+#line 2016 "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 7922 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 266: /* type_specifier_nonarray: F64VEC3  */
+#line 2022 "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 7933 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 267: /* type_specifier_nonarray: F64VEC4  */
+#line 2028 "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 7944 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 268: /* type_specifier_nonarray: I8VEC2  */
+#line 2034 "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 7955 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 269: /* type_specifier_nonarray: I8VEC3  */
+#line 2040 "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 7966 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 270: /* type_specifier_nonarray: I8VEC4  */
+#line 2046 "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 7977 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 271: /* type_specifier_nonarray: I16VEC2  */
+#line 2052 "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 7988 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 272: /* type_specifier_nonarray: I16VEC3  */
+#line 2058 "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 7999 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 273: /* type_specifier_nonarray: I16VEC4  */
+#line 2064 "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 8010 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 274: /* type_specifier_nonarray: I32VEC2  */
+#line 2070 "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 8021 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 275: /* type_specifier_nonarray: I32VEC3  */
+#line 2076 "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 8032 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 276: /* type_specifier_nonarray: I32VEC4  */
+#line 2082 "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 8043 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 277: /* type_specifier_nonarray: I64VEC2  */
+#line 2088 "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 8054 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 278: /* type_specifier_nonarray: I64VEC3  */
+#line 2094 "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 8065 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 279: /* type_specifier_nonarray: I64VEC4  */
+#line 2100 "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 8076 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 280: /* type_specifier_nonarray: U8VEC2  */
+#line 2106 "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 8087 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 281: /* type_specifier_nonarray: U8VEC3  */
+#line 2112 "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 8098 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 282: /* type_specifier_nonarray: U8VEC4  */
+#line 2118 "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 8109 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 283: /* type_specifier_nonarray: U16VEC2  */
+#line 2124 "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 8120 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 284: /* type_specifier_nonarray: U16VEC3  */
+#line 2130 "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 8131 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 285: /* type_specifier_nonarray: U16VEC4  */
+#line 2136 "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 8142 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 286: /* type_specifier_nonarray: U32VEC2  */
+#line 2142 "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 8153 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 287: /* type_specifier_nonarray: U32VEC3  */
+#line 2148 "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 8164 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 288: /* type_specifier_nonarray: U32VEC4  */
+#line 2154 "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 8175 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 289: /* type_specifier_nonarray: U64VEC2  */
+#line 2160 "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 8186 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 290: /* type_specifier_nonarray: U64VEC3  */
+#line 2166 "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 8197 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 291: /* type_specifier_nonarray: U64VEC4  */
+#line 2172 "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 8208 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 292: /* type_specifier_nonarray: DMAT2  */
+#line 2178 "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");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(2, 2);
+    }
+#line 8221 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 293: /* type_specifier_nonarray: DMAT3  */
+#line 2186 "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");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(3, 3);
+    }
+#line 8234 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 294: /* type_specifier_nonarray: DMAT4  */
+#line 2194 "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");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(4, 4);
+    }
+#line 8247 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 295: /* type_specifier_nonarray: DMAT2X2  */
+#line 2202 "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");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(2, 2);
+    }
+#line 8260 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 296: /* type_specifier_nonarray: DMAT2X3  */
+#line 2210 "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");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(2, 3);
+    }
+#line 8273 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 297: /* type_specifier_nonarray: DMAT2X4  */
+#line 2218 "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");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(2, 4);
+    }
+#line 8286 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 298: /* type_specifier_nonarray: DMAT3X2  */
+#line 2226 "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");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(3, 2);
+    }
+#line 8299 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 299: /* type_specifier_nonarray: DMAT3X3  */
+#line 2234 "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");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(3, 3);
+    }
+#line 8312 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 300: /* type_specifier_nonarray: DMAT3X4  */
+#line 2242 "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");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(3, 4);
+    }
+#line 8325 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 301: /* type_specifier_nonarray: DMAT4X2  */
+#line 2250 "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");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(4, 2);
+    }
+#line 8338 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 302: /* type_specifier_nonarray: DMAT4X3  */
+#line 2258 "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");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(4, 3);
+    }
+#line 8351 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 303: /* type_specifier_nonarray: DMAT4X4  */
+#line 2266 "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");
+        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).basicType = EbtDouble;
+        (yyval.interm.type).setMatrix(4, 4);
+    }
+#line 8364 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 304: /* type_specifier_nonarray: F16MAT2  */
+#line 2274 "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 8375 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 305: /* type_specifier_nonarray: F16MAT3  */
+#line 2280 "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 8386 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 306: /* type_specifier_nonarray: F16MAT4  */
+#line 2286 "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 8397 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 307: /* type_specifier_nonarray: F16MAT2X2  */
+#line 2292 "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 8408 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 308: /* type_specifier_nonarray: F16MAT2X3  */
+#line 2298 "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 8419 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 309: /* type_specifier_nonarray: F16MAT2X4  */
+#line 2304 "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 8430 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 310: /* type_specifier_nonarray: F16MAT3X2  */
+#line 2310 "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 7843 "MachineIndependent/glslang_tab.cpp"
+#line 8441 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 302: /* type_specifier_nonarray: F16MAT3X3  */
-#line 2243 "MachineIndependent/glslang.y"
+  case 311: /* type_specifier_nonarray: F16MAT3X3  */
+#line 2316 "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 7854 "MachineIndependent/glslang_tab.cpp"
+#line 8452 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 303: /* type_specifier_nonarray: F16MAT3X4  */
-#line 2249 "MachineIndependent/glslang.y"
+  case 312: /* type_specifier_nonarray: F16MAT3X4  */
+#line 2322 "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 7865 "MachineIndependent/glslang_tab.cpp"
+#line 8463 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 304: /* type_specifier_nonarray: F16MAT4X2  */
-#line 2255 "MachineIndependent/glslang.y"
+  case 313: /* type_specifier_nonarray: F16MAT4X2  */
+#line 2328 "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 7876 "MachineIndependent/glslang_tab.cpp"
+#line 8474 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 305: /* type_specifier_nonarray: F16MAT4X3  */
-#line 2261 "MachineIndependent/glslang.y"
+  case 314: /* type_specifier_nonarray: F16MAT4X3  */
+#line 2334 "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 7887 "MachineIndependent/glslang_tab.cpp"
+#line 8485 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 306: /* type_specifier_nonarray: F16MAT4X4  */
-#line 2267 "MachineIndependent/glslang.y"
+  case 315: /* type_specifier_nonarray: F16MAT4X4  */
+#line 2340 "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 7898 "MachineIndependent/glslang_tab.cpp"
+#line 8496 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 307: /* type_specifier_nonarray: F32MAT2  */
-#line 2273 "MachineIndependent/glslang.y"
+  case 316: /* type_specifier_nonarray: F32MAT2  */
+#line 2346 "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 7909 "MachineIndependent/glslang_tab.cpp"
+#line 8507 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 308: /* type_specifier_nonarray: F32MAT3  */
-#line 2279 "MachineIndependent/glslang.y"
+  case 317: /* type_specifier_nonarray: F32MAT3  */
+#line 2352 "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 7920 "MachineIndependent/glslang_tab.cpp"
+#line 8518 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 309: /* type_specifier_nonarray: F32MAT4  */
-#line 2285 "MachineIndependent/glslang.y"
+  case 318: /* type_specifier_nonarray: F32MAT4  */
+#line 2358 "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 7931 "MachineIndependent/glslang_tab.cpp"
+#line 8529 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 310: /* type_specifier_nonarray: F32MAT2X2  */
-#line 2291 "MachineIndependent/glslang.y"
+  case 319: /* type_specifier_nonarray: F32MAT2X2  */
+#line 2364 "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 7942 "MachineIndependent/glslang_tab.cpp"
+#line 8540 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 311: /* type_specifier_nonarray: F32MAT2X3  */
-#line 2297 "MachineIndependent/glslang.y"
+  case 320: /* type_specifier_nonarray: F32MAT2X3  */
+#line 2370 "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 7953 "MachineIndependent/glslang_tab.cpp"
+#line 8551 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 312: /* type_specifier_nonarray: F32MAT2X4  */
-#line 2303 "MachineIndependent/glslang.y"
+  case 321: /* type_specifier_nonarray: F32MAT2X4  */
+#line 2376 "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 7964 "MachineIndependent/glslang_tab.cpp"
+#line 8562 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 313: /* type_specifier_nonarray: F32MAT3X2  */
-#line 2309 "MachineIndependent/glslang.y"
+  case 322: /* type_specifier_nonarray: F32MAT3X2  */
+#line 2382 "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 7975 "MachineIndependent/glslang_tab.cpp"
+#line 8573 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 314: /* type_specifier_nonarray: F32MAT3X3  */
-#line 2315 "MachineIndependent/glslang.y"
+  case 323: /* type_specifier_nonarray: F32MAT3X3  */
+#line 2388 "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 7986 "MachineIndependent/glslang_tab.cpp"
+#line 8584 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 315: /* type_specifier_nonarray: F32MAT3X4  */
-#line 2321 "MachineIndependent/glslang.y"
+  case 324: /* type_specifier_nonarray: F32MAT3X4  */
+#line 2394 "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 7997 "MachineIndependent/glslang_tab.cpp"
+#line 8595 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 316: /* type_specifier_nonarray: F32MAT4X2  */
-#line 2327 "MachineIndependent/glslang.y"
+  case 325: /* type_specifier_nonarray: F32MAT4X2  */
+#line 2400 "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 8008 "MachineIndependent/glslang_tab.cpp"
+#line 8606 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 317: /* type_specifier_nonarray: F32MAT4X3  */
-#line 2333 "MachineIndependent/glslang.y"
+  case 326: /* type_specifier_nonarray: F32MAT4X3  */
+#line 2406 "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 8019 "MachineIndependent/glslang_tab.cpp"
+#line 8617 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 318: /* type_specifier_nonarray: F32MAT4X4  */
-#line 2339 "MachineIndependent/glslang.y"
+  case 327: /* type_specifier_nonarray: F32MAT4X4  */
+#line 2412 "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 8030 "MachineIndependent/glslang_tab.cpp"
+#line 8628 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 319: /* type_specifier_nonarray: F64MAT2  */
-#line 2345 "MachineIndependent/glslang.y"
+  case 328: /* type_specifier_nonarray: F64MAT2  */
+#line 2418 "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 8041 "MachineIndependent/glslang_tab.cpp"
+#line 8639 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 320: /* type_specifier_nonarray: F64MAT3  */
-#line 2351 "MachineIndependent/glslang.y"
+  case 329: /* type_specifier_nonarray: F64MAT3  */
+#line 2424 "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 8052 "MachineIndependent/glslang_tab.cpp"
+#line 8650 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 321: /* type_specifier_nonarray: F64MAT4  */
-#line 2357 "MachineIndependent/glslang.y"
+  case 330: /* type_specifier_nonarray: F64MAT4  */
+#line 2430 "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 8063 "MachineIndependent/glslang_tab.cpp"
+#line 8661 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 322: /* type_specifier_nonarray: F64MAT2X2  */
-#line 2363 "MachineIndependent/glslang.y"
+  case 331: /* type_specifier_nonarray: F64MAT2X2  */
+#line 2436 "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 8074 "MachineIndependent/glslang_tab.cpp"
+#line 8672 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 323: /* type_specifier_nonarray: F64MAT2X3  */
-#line 2369 "MachineIndependent/glslang.y"
+  case 332: /* type_specifier_nonarray: F64MAT2X3  */
+#line 2442 "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 8085 "MachineIndependent/glslang_tab.cpp"
+#line 8683 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 324: /* type_specifier_nonarray: F64MAT2X4  */
-#line 2375 "MachineIndependent/glslang.y"
+  case 333: /* type_specifier_nonarray: F64MAT2X4  */
+#line 2448 "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 8096 "MachineIndependent/glslang_tab.cpp"
+#line 8694 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 325: /* type_specifier_nonarray: F64MAT3X2  */
-#line 2381 "MachineIndependent/glslang.y"
+  case 334: /* type_specifier_nonarray: F64MAT3X2  */
+#line 2454 "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 8107 "MachineIndependent/glslang_tab.cpp"
+#line 8705 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 326: /* type_specifier_nonarray: F64MAT3X3  */
-#line 2387 "MachineIndependent/glslang.y"
+  case 335: /* type_specifier_nonarray: F64MAT3X3  */
+#line 2460 "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 8118 "MachineIndependent/glslang_tab.cpp"
+#line 8716 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 327: /* type_specifier_nonarray: F64MAT3X4  */
-#line 2393 "MachineIndependent/glslang.y"
+  case 336: /* type_specifier_nonarray: F64MAT3X4  */
+#line 2466 "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 8129 "MachineIndependent/glslang_tab.cpp"
+#line 8727 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 328: /* type_specifier_nonarray: F64MAT4X2  */
-#line 2399 "MachineIndependent/glslang.y"
+  case 337: /* type_specifier_nonarray: F64MAT4X2  */
+#line 2472 "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 8140 "MachineIndependent/glslang_tab.cpp"
+#line 8738 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 329: /* type_specifier_nonarray: F64MAT4X3  */
-#line 2405 "MachineIndependent/glslang.y"
+  case 338: /* type_specifier_nonarray: F64MAT4X3  */
+#line 2478 "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 8151 "MachineIndependent/glslang_tab.cpp"
+#line 8749 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 330: /* type_specifier_nonarray: F64MAT4X4  */
-#line 2411 "MachineIndependent/glslang.y"
+  case 339: /* type_specifier_nonarray: F64MAT4X4  */
+#line 2484 "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 8162 "MachineIndependent/glslang_tab.cpp"
+#line 8760 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 331: /* type_specifier_nonarray: ACCSTRUCTNV  */
-#line 2417 "MachineIndependent/glslang.y"
+  case 340: /* type_specifier_nonarray: ACCSTRUCTNV  */
+#line 2490 "MachineIndependent/glslang.y"
                   {
        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
        (yyval.interm.type).basicType = EbtAccStruct;
     }
-#line 8171 "MachineIndependent/glslang_tab.cpp"
+#line 8769 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 332: /* type_specifier_nonarray: ACCSTRUCTEXT  */
-#line 2421 "MachineIndependent/glslang.y"
+  case 341: /* type_specifier_nonarray: ACCSTRUCTEXT  */
+#line 2494 "MachineIndependent/glslang.y"
                    {
        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
        (yyval.interm.type).basicType = EbtAccStruct;
     }
-#line 8180 "MachineIndependent/glslang_tab.cpp"
+#line 8778 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 333: /* type_specifier_nonarray: RAYQUERYEXT  */
-#line 2425 "MachineIndependent/glslang.y"
+  case 342: /* type_specifier_nonarray: RAYQUERYEXT  */
+#line 2498 "MachineIndependent/glslang.y"
                   {
        (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel());
        (yyval.interm.type).basicType = EbtRayQuery;
     }
-#line 8189 "MachineIndependent/glslang_tab.cpp"
+#line 8787 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 334: /* type_specifier_nonarray: ATOMIC_UINT  */
-#line 2429 "MachineIndependent/glslang.y"
+  case 343: /* type_specifier_nonarray: ATOMIC_UINT  */
+#line 2502 "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 8199 "MachineIndependent/glslang_tab.cpp"
+#line 8797 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 335: /* type_specifier_nonarray: SAMPLER1D  */
-#line 2434 "MachineIndependent/glslang.y"
+  case 344: /* type_specifier_nonarray: SAMPLER1D  */
+#line 2507 "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 8209 "MachineIndependent/glslang_tab.cpp"
+#line 8807 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 336: /* type_specifier_nonarray: SAMPLER2D  */
-#line 2440 "MachineIndependent/glslang.y"
+  case 345: /* type_specifier_nonarray: SAMPLER2D  */
+#line 2513 "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 8219 "MachineIndependent/glslang_tab.cpp"
+#line 8817 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 337: /* type_specifier_nonarray: SAMPLER3D  */
-#line 2445 "MachineIndependent/glslang.y"
+  case 346: /* type_specifier_nonarray: SAMPLER3D  */
+#line 2518 "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 8229 "MachineIndependent/glslang_tab.cpp"
+#line 8827 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 338: /* type_specifier_nonarray: SAMPLERCUBE  */
-#line 2450 "MachineIndependent/glslang.y"
+  case 347: /* type_specifier_nonarray: SAMPLERCUBE  */
+#line 2523 "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 8239 "MachineIndependent/glslang_tab.cpp"
+#line 8837 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 339: /* type_specifier_nonarray: SAMPLER2DSHADOW  */
-#line 2455 "MachineIndependent/glslang.y"
+  case 348: /* type_specifier_nonarray: SAMPLER2DSHADOW  */
+#line 2528 "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 8249 "MachineIndependent/glslang_tab.cpp"
+#line 8847 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 340: /* type_specifier_nonarray: SAMPLERCUBESHADOW  */
-#line 2460 "MachineIndependent/glslang.y"
+  case 349: /* type_specifier_nonarray: SAMPLERCUBESHADOW  */
+#line 2533 "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 8259 "MachineIndependent/glslang_tab.cpp"
+#line 8857 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 341: /* type_specifier_nonarray: SAMPLER2DARRAY  */
-#line 2465 "MachineIndependent/glslang.y"
+  case 350: /* type_specifier_nonarray: SAMPLER2DARRAY  */
+#line 2538 "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 8269 "MachineIndependent/glslang_tab.cpp"
+#line 8867 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 342: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW  */
-#line 2470 "MachineIndependent/glslang.y"
+  case 351: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW  */
+#line 2543 "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 8279 "MachineIndependent/glslang_tab.cpp"
+#line 8877 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 343: /* type_specifier_nonarray: SAMPLER1DSHADOW  */
-#line 2476 "MachineIndependent/glslang.y"
+  case 352: /* type_specifier_nonarray: SAMPLER1DSHADOW  */
+#line 2549 "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 8289 "MachineIndependent/glslang_tab.cpp"
+#line 8887 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 344: /* type_specifier_nonarray: SAMPLER1DARRAY  */
-#line 2481 "MachineIndependent/glslang.y"
+  case 353: /* type_specifier_nonarray: SAMPLER1DARRAY  */
+#line 2554 "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 8299 "MachineIndependent/glslang_tab.cpp"
+#line 8897 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 345: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW  */
-#line 2486 "MachineIndependent/glslang.y"
+  case 354: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW  */
+#line 2559 "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 8309 "MachineIndependent/glslang_tab.cpp"
+#line 8907 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 346: /* type_specifier_nonarray: SAMPLERCUBEARRAY  */
-#line 2491 "MachineIndependent/glslang.y"
+  case 355: /* type_specifier_nonarray: SAMPLERCUBEARRAY  */
+#line 2564 "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 8319 "MachineIndependent/glslang_tab.cpp"
+#line 8917 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 347: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW  */
-#line 2496 "MachineIndependent/glslang.y"
+  case 356: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW  */
+#line 2569 "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 8329 "MachineIndependent/glslang_tab.cpp"
+#line 8927 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 348: /* type_specifier_nonarray: F16SAMPLER1D  */
-#line 2501 "MachineIndependent/glslang.y"
+  case 357: /* type_specifier_nonarray: F16SAMPLER1D  */
+#line 2574 "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 8340 "MachineIndependent/glslang_tab.cpp"
+#line 8938 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 349: /* type_specifier_nonarray: F16SAMPLER2D  */
-#line 2507 "MachineIndependent/glslang.y"
+  case 358: /* type_specifier_nonarray: F16SAMPLER2D  */
+#line 2580 "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 8351 "MachineIndependent/glslang_tab.cpp"
+#line 8949 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 350: /* type_specifier_nonarray: F16SAMPLER3D  */
-#line 2513 "MachineIndependent/glslang.y"
+  case 359: /* type_specifier_nonarray: F16SAMPLER3D  */
+#line 2586 "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 8362 "MachineIndependent/glslang_tab.cpp"
+#line 8960 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 351: /* type_specifier_nonarray: F16SAMPLERCUBE  */
-#line 2519 "MachineIndependent/glslang.y"
+  case 360: /* type_specifier_nonarray: F16SAMPLERCUBE  */
+#line 2592 "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 8373 "MachineIndependent/glslang_tab.cpp"
+#line 8971 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 352: /* type_specifier_nonarray: F16SAMPLER1DSHADOW  */
-#line 2525 "MachineIndependent/glslang.y"
+  case 361: /* type_specifier_nonarray: F16SAMPLER1DSHADOW  */
+#line 2598 "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 8384 "MachineIndependent/glslang_tab.cpp"
+#line 8982 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 353: /* type_specifier_nonarray: F16SAMPLER2DSHADOW  */
-#line 2531 "MachineIndependent/glslang.y"
+  case 362: /* type_specifier_nonarray: F16SAMPLER2DSHADOW  */
+#line 2604 "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 8395 "MachineIndependent/glslang_tab.cpp"
+#line 8993 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 354: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW  */
-#line 2537 "MachineIndependent/glslang.y"
+  case 363: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW  */
+#line 2610 "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 8406 "MachineIndependent/glslang_tab.cpp"
+#line 9004 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 355: /* type_specifier_nonarray: F16SAMPLER1DARRAY  */
-#line 2543 "MachineIndependent/glslang.y"
+  case 364: /* type_specifier_nonarray: F16SAMPLER1DARRAY  */
+#line 2616 "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 8417 "MachineIndependent/glslang_tab.cpp"
+#line 9015 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 356: /* type_specifier_nonarray: F16SAMPLER2DARRAY  */
-#line 2549 "MachineIndependent/glslang.y"
+  case 365: /* type_specifier_nonarray: F16SAMPLER2DARRAY  */
+#line 2622 "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 8428 "MachineIndependent/glslang_tab.cpp"
+#line 9026 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 357: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW  */
-#line 2555 "MachineIndependent/glslang.y"
+  case 366: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW  */
+#line 2628 "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 8439 "MachineIndependent/glslang_tab.cpp"
+#line 9037 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 358: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW  */
-#line 2561 "MachineIndependent/glslang.y"
+  case 367: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW  */
+#line 2634 "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 8450 "MachineIndependent/glslang_tab.cpp"
+#line 9048 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 359: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY  */
-#line 2567 "MachineIndependent/glslang.y"
+  case 368: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY  */
+#line 2640 "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 8461 "MachineIndependent/glslang_tab.cpp"
+#line 9059 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 360: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW  */
-#line 2573 "MachineIndependent/glslang.y"
+  case 369: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW  */
+#line 2646 "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 8472 "MachineIndependent/glslang_tab.cpp"
+#line 9070 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 361: /* type_specifier_nonarray: ISAMPLER1D  */
-#line 2579 "MachineIndependent/glslang.y"
+  case 370: /* type_specifier_nonarray: ISAMPLER1D  */
+#line 2652 "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 8482 "MachineIndependent/glslang_tab.cpp"
+#line 9080 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 362: /* type_specifier_nonarray: ISAMPLER2D  */
-#line 2585 "MachineIndependent/glslang.y"
+  case 371: /* type_specifier_nonarray: ISAMPLER2D  */
+#line 2658 "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 8492 "MachineIndependent/glslang_tab.cpp"
+#line 9090 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 363: /* type_specifier_nonarray: ISAMPLER3D  */
-#line 2590 "MachineIndependent/glslang.y"
+  case 372: /* type_specifier_nonarray: ISAMPLER3D  */
+#line 2663 "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 8502 "MachineIndependent/glslang_tab.cpp"
+#line 9100 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 364: /* type_specifier_nonarray: ISAMPLERCUBE  */
-#line 2595 "MachineIndependent/glslang.y"
+  case 373: /* type_specifier_nonarray: ISAMPLERCUBE  */
+#line 2668 "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 8512 "MachineIndependent/glslang_tab.cpp"
+#line 9110 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 365: /* type_specifier_nonarray: ISAMPLER2DARRAY  */
-#line 2600 "MachineIndependent/glslang.y"
+  case 374: /* type_specifier_nonarray: ISAMPLER2DARRAY  */
+#line 2673 "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 8522 "MachineIndependent/glslang_tab.cpp"
+#line 9120 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 366: /* type_specifier_nonarray: USAMPLER2D  */
-#line 2605 "MachineIndependent/glslang.y"
+  case 375: /* type_specifier_nonarray: USAMPLER2D  */
+#line 2678 "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 8532 "MachineIndependent/glslang_tab.cpp"
+#line 9130 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 367: /* type_specifier_nonarray: USAMPLER3D  */
-#line 2610 "MachineIndependent/glslang.y"
+  case 376: /* type_specifier_nonarray: USAMPLER3D  */
+#line 2683 "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 8542 "MachineIndependent/glslang_tab.cpp"
+#line 9140 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 368: /* type_specifier_nonarray: USAMPLERCUBE  */
-#line 2615 "MachineIndependent/glslang.y"
+  case 377: /* type_specifier_nonarray: USAMPLERCUBE  */
+#line 2688 "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 8552 "MachineIndependent/glslang_tab.cpp"
+#line 9150 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 369: /* type_specifier_nonarray: ISAMPLER1DARRAY  */
-#line 2621 "MachineIndependent/glslang.y"
+  case 378: /* type_specifier_nonarray: ISAMPLER1DARRAY  */
+#line 2694 "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 8562 "MachineIndependent/glslang_tab.cpp"
+#line 9160 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 370: /* type_specifier_nonarray: ISAMPLERCUBEARRAY  */
-#line 2626 "MachineIndependent/glslang.y"
+  case 379: /* type_specifier_nonarray: ISAMPLERCUBEARRAY  */
+#line 2699 "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 8572 "MachineIndependent/glslang_tab.cpp"
+#line 9170 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 371: /* type_specifier_nonarray: USAMPLER1D  */
-#line 2631 "MachineIndependent/glslang.y"
+  case 380: /* type_specifier_nonarray: USAMPLER1D  */
+#line 2704 "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 8582 "MachineIndependent/glslang_tab.cpp"
+#line 9180 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 372: /* type_specifier_nonarray: USAMPLER1DARRAY  */
-#line 2636 "MachineIndependent/glslang.y"
+  case 381: /* type_specifier_nonarray: USAMPLER1DARRAY  */
+#line 2709 "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 8592 "MachineIndependent/glslang_tab.cpp"
+#line 9190 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 373: /* type_specifier_nonarray: USAMPLERCUBEARRAY  */
-#line 2641 "MachineIndependent/glslang.y"
+  case 382: /* type_specifier_nonarray: USAMPLERCUBEARRAY  */
+#line 2714 "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 8602 "MachineIndependent/glslang_tab.cpp"
+#line 9200 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 374: /* type_specifier_nonarray: TEXTURECUBEARRAY  */
-#line 2646 "MachineIndependent/glslang.y"
+  case 383: /* type_specifier_nonarray: TEXTURECUBEARRAY  */
+#line 2719 "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 8612 "MachineIndependent/glslang_tab.cpp"
+#line 9210 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 375: /* type_specifier_nonarray: ITEXTURECUBEARRAY  */
-#line 2651 "MachineIndependent/glslang.y"
+  case 384: /* type_specifier_nonarray: ITEXTURECUBEARRAY  */
+#line 2724 "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 8622 "MachineIndependent/glslang_tab.cpp"
+#line 9220 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 376: /* type_specifier_nonarray: UTEXTURECUBEARRAY  */
-#line 2656 "MachineIndependent/glslang.y"
+  case 385: /* type_specifier_nonarray: UTEXTURECUBEARRAY  */
+#line 2729 "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 8632 "MachineIndependent/glslang_tab.cpp"
+#line 9230 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 377: /* type_specifier_nonarray: USAMPLER2DARRAY  */
-#line 2662 "MachineIndependent/glslang.y"
+  case 386: /* type_specifier_nonarray: USAMPLER2DARRAY  */
+#line 2735 "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 8642 "MachineIndependent/glslang_tab.cpp"
+#line 9240 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 378: /* type_specifier_nonarray: TEXTURE2D  */
-#line 2667 "MachineIndependent/glslang.y"
+  case 387: /* type_specifier_nonarray: TEXTURE2D  */
+#line 2740 "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 8652 "MachineIndependent/glslang_tab.cpp"
+#line 9250 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 379: /* type_specifier_nonarray: TEXTURE3D  */
-#line 2672 "MachineIndependent/glslang.y"
+  case 388: /* type_specifier_nonarray: TEXTURE3D  */
+#line 2745 "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 8662 "MachineIndependent/glslang_tab.cpp"
+#line 9260 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 380: /* type_specifier_nonarray: TEXTURE2DARRAY  */
-#line 2677 "MachineIndependent/glslang.y"
+  case 389: /* type_specifier_nonarray: TEXTURE2DARRAY  */
+#line 2750 "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 8672 "MachineIndependent/glslang_tab.cpp"
+#line 9270 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 381: /* type_specifier_nonarray: TEXTURECUBE  */
-#line 2682 "MachineIndependent/glslang.y"
+  case 390: /* type_specifier_nonarray: TEXTURECUBE  */
+#line 2755 "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 8682 "MachineIndependent/glslang_tab.cpp"
+#line 9280 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 382: /* type_specifier_nonarray: ITEXTURE2D  */
-#line 2687 "MachineIndependent/glslang.y"
+  case 391: /* type_specifier_nonarray: ITEXTURE2D  */
+#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.setTexture(EbtInt, Esd2D);
     }
-#line 8692 "MachineIndependent/glslang_tab.cpp"
+#line 9290 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 383: /* type_specifier_nonarray: ITEXTURE3D  */
-#line 2692 "MachineIndependent/glslang.y"
+  case 392: /* type_specifier_nonarray: ITEXTURE3D  */
+#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.setTexture(EbtInt, Esd3D);
     }
-#line 8702 "MachineIndependent/glslang_tab.cpp"
+#line 9300 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 384: /* type_specifier_nonarray: ITEXTURECUBE  */
-#line 2697 "MachineIndependent/glslang.y"
+  case 393: /* type_specifier_nonarray: ITEXTURECUBE  */
+#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.setTexture(EbtInt, EsdCube);
     }
-#line 8712 "MachineIndependent/glslang_tab.cpp"
+#line 9310 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 385: /* type_specifier_nonarray: ITEXTURE2DARRAY  */
-#line 2702 "MachineIndependent/glslang.y"
+  case 394: /* type_specifier_nonarray: ITEXTURE2DARRAY  */
+#line 2775 "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 8722 "MachineIndependent/glslang_tab.cpp"
+#line 9320 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 386: /* type_specifier_nonarray: UTEXTURE2D  */
-#line 2707 "MachineIndependent/glslang.y"
+  case 395: /* type_specifier_nonarray: UTEXTURE2D  */
+#line 2780 "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 8732 "MachineIndependent/glslang_tab.cpp"
+#line 9330 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 387: /* type_specifier_nonarray: UTEXTURE3D  */
-#line 2712 "MachineIndependent/glslang.y"
+  case 396: /* type_specifier_nonarray: UTEXTURE3D  */
+#line 2785 "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 8742 "MachineIndependent/glslang_tab.cpp"
+#line 9340 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 388: /* type_specifier_nonarray: UTEXTURECUBE  */
-#line 2717 "MachineIndependent/glslang.y"
+  case 397: /* type_specifier_nonarray: UTEXTURECUBE  */
+#line 2790 "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 8752 "MachineIndependent/glslang_tab.cpp"
+#line 9350 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 389: /* type_specifier_nonarray: UTEXTURE2DARRAY  */
-#line 2722 "MachineIndependent/glslang.y"
+  case 398: /* type_specifier_nonarray: UTEXTURE2DARRAY  */
+#line 2795 "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 8762 "MachineIndependent/glslang_tab.cpp"
+#line 9360 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 390: /* type_specifier_nonarray: SAMPLER  */
-#line 2727 "MachineIndependent/glslang.y"
+  case 399: /* type_specifier_nonarray: SAMPLER  */
+#line 2800 "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 8772 "MachineIndependent/glslang_tab.cpp"
+#line 9370 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 391: /* type_specifier_nonarray: SAMPLERSHADOW  */
-#line 2732 "MachineIndependent/glslang.y"
+  case 400: /* type_specifier_nonarray: SAMPLERSHADOW  */
+#line 2805 "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 8782 "MachineIndependent/glslang_tab.cpp"
+#line 9380 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 392: /* type_specifier_nonarray: SAMPLER2DRECT  */
-#line 2738 "MachineIndependent/glslang.y"
+  case 401: /* type_specifier_nonarray: SAMPLER2DRECT  */
+#line 2811 "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 8792 "MachineIndependent/glslang_tab.cpp"
+#line 9390 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 393: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW  */
-#line 2743 "MachineIndependent/glslang.y"
+  case 402: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW  */
+#line 2816 "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 8802 "MachineIndependent/glslang_tab.cpp"
+#line 9400 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 394: /* type_specifier_nonarray: F16SAMPLER2DRECT  */
-#line 2748 "MachineIndependent/glslang.y"
+  case 403: /* type_specifier_nonarray: F16SAMPLER2DRECT  */
+#line 2821 "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 8813 "MachineIndependent/glslang_tab.cpp"
+#line 9411 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 395: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW  */
-#line 2754 "MachineIndependent/glslang.y"
+  case 404: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW  */
+#line 2827 "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 8824 "MachineIndependent/glslang_tab.cpp"
+#line 9422 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 396: /* type_specifier_nonarray: ISAMPLER2DRECT  */
-#line 2760 "MachineIndependent/glslang.y"
+  case 405: /* type_specifier_nonarray: ISAMPLER2DRECT  */
+#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.set(EbtInt, EsdRect);
     }
-#line 8834 "MachineIndependent/glslang_tab.cpp"
+#line 9432 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 397: /* type_specifier_nonarray: USAMPLER2DRECT  */
-#line 2765 "MachineIndependent/glslang.y"
+  case 406: /* type_specifier_nonarray: USAMPLER2DRECT  */
+#line 2838 "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 8844 "MachineIndependent/glslang_tab.cpp"
+#line 9442 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 398: /* type_specifier_nonarray: SAMPLERBUFFER  */
-#line 2770 "MachineIndependent/glslang.y"
+  case 407: /* type_specifier_nonarray: SAMPLERBUFFER  */
+#line 2843 "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 8854 "MachineIndependent/glslang_tab.cpp"
+#line 9452 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 399: /* type_specifier_nonarray: F16SAMPLERBUFFER  */
-#line 2775 "MachineIndependent/glslang.y"
+  case 408: /* type_specifier_nonarray: F16SAMPLERBUFFER  */
+#line 2848 "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 8865 "MachineIndependent/glslang_tab.cpp"
+#line 9463 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 400: /* type_specifier_nonarray: ISAMPLERBUFFER  */
-#line 2781 "MachineIndependent/glslang.y"
+  case 409: /* type_specifier_nonarray: ISAMPLERBUFFER  */
+#line 2854 "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 8875 "MachineIndependent/glslang_tab.cpp"
+#line 9473 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 401: /* type_specifier_nonarray: USAMPLERBUFFER  */
-#line 2786 "MachineIndependent/glslang.y"
+  case 410: /* type_specifier_nonarray: USAMPLERBUFFER  */
+#line 2859 "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 8885 "MachineIndependent/glslang_tab.cpp"
+#line 9483 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 402: /* type_specifier_nonarray: SAMPLER2DMS  */
-#line 2791 "MachineIndependent/glslang.y"
+  case 411: /* type_specifier_nonarray: SAMPLER2DMS  */
+#line 2864 "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 8895 "MachineIndependent/glslang_tab.cpp"
+#line 9493 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 403: /* type_specifier_nonarray: F16SAMPLER2DMS  */
-#line 2796 "MachineIndependent/glslang.y"
+  case 412: /* type_specifier_nonarray: F16SAMPLER2DMS  */
+#line 2869 "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 8906 "MachineIndependent/glslang_tab.cpp"
+#line 9504 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 404: /* type_specifier_nonarray: ISAMPLER2DMS  */
-#line 2802 "MachineIndependent/glslang.y"
+  case 413: /* type_specifier_nonarray: ISAMPLER2DMS  */
+#line 2875 "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 8916 "MachineIndependent/glslang_tab.cpp"
+#line 9514 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 405: /* type_specifier_nonarray: USAMPLER2DMS  */
-#line 2807 "MachineIndependent/glslang.y"
+  case 414: /* type_specifier_nonarray: USAMPLER2DMS  */
+#line 2880 "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 8926 "MachineIndependent/glslang_tab.cpp"
+#line 9524 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 406: /* type_specifier_nonarray: SAMPLER2DMSARRAY  */
-#line 2812 "MachineIndependent/glslang.y"
+  case 415: /* type_specifier_nonarray: SAMPLER2DMSARRAY  */
+#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.set(EbtFloat, Esd2D, true, false, true);
     }
-#line 8936 "MachineIndependent/glslang_tab.cpp"
+#line 9534 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 407: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY  */
-#line 2817 "MachineIndependent/glslang.y"
+  case 416: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY  */
+#line 2890 "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 8947 "MachineIndependent/glslang_tab.cpp"
+#line 9545 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 408: /* type_specifier_nonarray: ISAMPLER2DMSARRAY  */
-#line 2823 "MachineIndependent/glslang.y"
+  case 417: /* type_specifier_nonarray: ISAMPLER2DMSARRAY  */
+#line 2896 "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 8957 "MachineIndependent/glslang_tab.cpp"
+#line 9555 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 409: /* type_specifier_nonarray: USAMPLER2DMSARRAY  */
-#line 2828 "MachineIndependent/glslang.y"
+  case 418: /* type_specifier_nonarray: USAMPLER2DMSARRAY  */
+#line 2901 "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 8967 "MachineIndependent/glslang_tab.cpp"
+#line 9565 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 410: /* type_specifier_nonarray: TEXTURE1D  */
-#line 2833 "MachineIndependent/glslang.y"
+  case 419: /* type_specifier_nonarray: TEXTURE1D  */
+#line 2906 "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 8977 "MachineIndependent/glslang_tab.cpp"
+#line 9575 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 411: /* type_specifier_nonarray: F16TEXTURE1D  */
-#line 2838 "MachineIndependent/glslang.y"
+  case 420: /* type_specifier_nonarray: F16TEXTURE1D  */
+#line 2911 "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 8988 "MachineIndependent/glslang_tab.cpp"
+#line 9586 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 412: /* type_specifier_nonarray: F16TEXTURE2D  */
-#line 2844 "MachineIndependent/glslang.y"
+  case 421: /* type_specifier_nonarray: F16TEXTURE2D  */
+#line 2917 "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 8999 "MachineIndependent/glslang_tab.cpp"
+#line 9597 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 413: /* type_specifier_nonarray: F16TEXTURE3D  */
-#line 2850 "MachineIndependent/glslang.y"
+  case 422: /* type_specifier_nonarray: F16TEXTURE3D  */
+#line 2923 "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 9010 "MachineIndependent/glslang_tab.cpp"
+#line 9608 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 414: /* type_specifier_nonarray: F16TEXTURECUBE  */
-#line 2856 "MachineIndependent/glslang.y"
+  case 423: /* type_specifier_nonarray: F16TEXTURECUBE  */
+#line 2929 "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 9021 "MachineIndependent/glslang_tab.cpp"
+#line 9619 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 415: /* type_specifier_nonarray: TEXTURE1DARRAY  */
-#line 2862 "MachineIndependent/glslang.y"
+  case 424: /* type_specifier_nonarray: TEXTURE1DARRAY  */
+#line 2935 "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 9031 "MachineIndependent/glslang_tab.cpp"
+#line 9629 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 416: /* type_specifier_nonarray: F16TEXTURE1DARRAY  */
-#line 2867 "MachineIndependent/glslang.y"
+  case 425: /* type_specifier_nonarray: F16TEXTURE1DARRAY  */
+#line 2940 "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 9042 "MachineIndependent/glslang_tab.cpp"
+#line 9640 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 417: /* type_specifier_nonarray: F16TEXTURE2DARRAY  */
-#line 2873 "MachineIndependent/glslang.y"
+  case 426: /* type_specifier_nonarray: F16TEXTURE2DARRAY  */
+#line 2946 "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 9053 "MachineIndependent/glslang_tab.cpp"
+#line 9651 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 418: /* type_specifier_nonarray: F16TEXTURECUBEARRAY  */
-#line 2879 "MachineIndependent/glslang.y"
+  case 427: /* type_specifier_nonarray: F16TEXTURECUBEARRAY  */
+#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, EsdCube, true);
     }
-#line 9064 "MachineIndependent/glslang_tab.cpp"
+#line 9662 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 419: /* type_specifier_nonarray: ITEXTURE1D  */
-#line 2885 "MachineIndependent/glslang.y"
+  case 428: /* type_specifier_nonarray: ITEXTURE1D  */
+#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, Esd1D);
     }
-#line 9074 "MachineIndependent/glslang_tab.cpp"
+#line 9672 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 420: /* type_specifier_nonarray: ITEXTURE1DARRAY  */
-#line 2890 "MachineIndependent/glslang.y"
+  case 429: /* type_specifier_nonarray: ITEXTURE1DARRAY  */
+#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(EbtInt, Esd1D, true);
     }
-#line 9084 "MachineIndependent/glslang_tab.cpp"
+#line 9682 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 421: /* type_specifier_nonarray: UTEXTURE1D  */
-#line 2895 "MachineIndependent/glslang.y"
+  case 430: /* type_specifier_nonarray: UTEXTURE1D  */
+#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(EbtUint, Esd1D);
     }
-#line 9094 "MachineIndependent/glslang_tab.cpp"
+#line 9692 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 422: /* type_specifier_nonarray: UTEXTURE1DARRAY  */
-#line 2900 "MachineIndependent/glslang.y"
+  case 431: /* type_specifier_nonarray: UTEXTURE1DARRAY  */
+#line 2973 "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 9104 "MachineIndependent/glslang_tab.cpp"
+#line 9702 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 423: /* type_specifier_nonarray: TEXTURE2DRECT  */
-#line 2905 "MachineIndependent/glslang.y"
+  case 432: /* type_specifier_nonarray: TEXTURE2DRECT  */
+#line 2978 "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 9114 "MachineIndependent/glslang_tab.cpp"
+#line 9712 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 424: /* type_specifier_nonarray: F16TEXTURE2DRECT  */
-#line 2910 "MachineIndependent/glslang.y"
+  case 433: /* type_specifier_nonarray: F16TEXTURE2DRECT  */
+#line 2983 "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 9125 "MachineIndependent/glslang_tab.cpp"
+#line 9723 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 425: /* type_specifier_nonarray: ITEXTURE2DRECT  */
-#line 2916 "MachineIndependent/glslang.y"
+  case 434: /* type_specifier_nonarray: ITEXTURE2DRECT  */
+#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.setTexture(EbtInt, EsdRect);
     }
-#line 9135 "MachineIndependent/glslang_tab.cpp"
+#line 9733 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 426: /* type_specifier_nonarray: UTEXTURE2DRECT  */
-#line 2921 "MachineIndependent/glslang.y"
+  case 435: /* type_specifier_nonarray: UTEXTURE2DRECT  */
+#line 2994 "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 9145 "MachineIndependent/glslang_tab.cpp"
+#line 9743 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 427: /* type_specifier_nonarray: TEXTUREBUFFER  */
-#line 2926 "MachineIndependent/glslang.y"
+  case 436: /* type_specifier_nonarray: TEXTUREBUFFER  */
+#line 2999 "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 9155 "MachineIndependent/glslang_tab.cpp"
+#line 9753 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 428: /* type_specifier_nonarray: F16TEXTUREBUFFER  */
-#line 2931 "MachineIndependent/glslang.y"
+  case 437: /* type_specifier_nonarray: F16TEXTUREBUFFER  */
+#line 3004 "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 9166 "MachineIndependent/glslang_tab.cpp"
+#line 9764 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 429: /* type_specifier_nonarray: ITEXTUREBUFFER  */
-#line 2937 "MachineIndependent/glslang.y"
+  case 438: /* type_specifier_nonarray: ITEXTUREBUFFER  */
+#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.setTexture(EbtInt, EsdBuffer);
     }
-#line 9176 "MachineIndependent/glslang_tab.cpp"
+#line 9774 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 430: /* type_specifier_nonarray: UTEXTUREBUFFER  */
-#line 2942 "MachineIndependent/glslang.y"
+  case 439: /* type_specifier_nonarray: UTEXTUREBUFFER  */
+#line 3015 "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 9186 "MachineIndependent/glslang_tab.cpp"
+#line 9784 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 431: /* type_specifier_nonarray: TEXTURE2DMS  */
-#line 2947 "MachineIndependent/glslang.y"
+  case 440: /* type_specifier_nonarray: TEXTURE2DMS  */
+#line 3020 "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 9196 "MachineIndependent/glslang_tab.cpp"
+#line 9794 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 432: /* type_specifier_nonarray: F16TEXTURE2DMS  */
-#line 2952 "MachineIndependent/glslang.y"
+  case 441: /* type_specifier_nonarray: F16TEXTURE2DMS  */
+#line 3025 "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 9207 "MachineIndependent/glslang_tab.cpp"
+#line 9805 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 433: /* type_specifier_nonarray: ITEXTURE2DMS  */
-#line 2958 "MachineIndependent/glslang.y"
+  case 442: /* type_specifier_nonarray: ITEXTURE2DMS  */
+#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.setTexture(EbtInt, Esd2D, false, false, true);
     }
-#line 9217 "MachineIndependent/glslang_tab.cpp"
+#line 9815 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 434: /* type_specifier_nonarray: UTEXTURE2DMS  */
-#line 2963 "MachineIndependent/glslang.y"
+  case 443: /* type_specifier_nonarray: UTEXTURE2DMS  */
+#line 3036 "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 9227 "MachineIndependent/glslang_tab.cpp"
+#line 9825 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 435: /* type_specifier_nonarray: TEXTURE2DMSARRAY  */
-#line 2968 "MachineIndependent/glslang.y"
+  case 444: /* type_specifier_nonarray: TEXTURE2DMSARRAY  */
+#line 3041 "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 9237 "MachineIndependent/glslang_tab.cpp"
+#line 9835 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 436: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY  */
-#line 2973 "MachineIndependent/glslang.y"
+  case 445: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY  */
+#line 3046 "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 9248 "MachineIndependent/glslang_tab.cpp"
+#line 9846 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 437: /* type_specifier_nonarray: ITEXTURE2DMSARRAY  */
-#line 2979 "MachineIndependent/glslang.y"
+  case 446: /* type_specifier_nonarray: ITEXTURE2DMSARRAY  */
+#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.setTexture(EbtInt, Esd2D, true, false, true);
     }
-#line 9258 "MachineIndependent/glslang_tab.cpp"
+#line 9856 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 438: /* type_specifier_nonarray: UTEXTURE2DMSARRAY  */
-#line 2984 "MachineIndependent/glslang.y"
+  case 447: /* type_specifier_nonarray: UTEXTURE2DMSARRAY  */
+#line 3057 "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 9268 "MachineIndependent/glslang_tab.cpp"
+#line 9866 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 439: /* type_specifier_nonarray: IMAGE1D  */
-#line 2989 "MachineIndependent/glslang.y"
+  case 448: /* type_specifier_nonarray: IMAGE1D  */
+#line 3062 "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 9278 "MachineIndependent/glslang_tab.cpp"
+#line 9876 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 440: /* type_specifier_nonarray: F16IMAGE1D  */
-#line 2994 "MachineIndependent/glslang.y"
+  case 449: /* type_specifier_nonarray: F16IMAGE1D  */
+#line 3067 "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 9289 "MachineIndependent/glslang_tab.cpp"
+#line 9887 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 441: /* type_specifier_nonarray: IIMAGE1D  */
-#line 3000 "MachineIndependent/glslang.y"
+  case 450: /* type_specifier_nonarray: IIMAGE1D  */
+#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(EbtInt, Esd1D);
     }
-#line 9299 "MachineIndependent/glslang_tab.cpp"
+#line 9897 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 442: /* type_specifier_nonarray: UIMAGE1D  */
-#line 3005 "MachineIndependent/glslang.y"
+  case 451: /* type_specifier_nonarray: UIMAGE1D  */
+#line 3078 "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 9309 "MachineIndependent/glslang_tab.cpp"
+#line 9907 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 443: /* type_specifier_nonarray: IMAGE2D  */
-#line 3010 "MachineIndependent/glslang.y"
+  case 452: /* type_specifier_nonarray: IMAGE2D  */
+#line 3083 "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 9319 "MachineIndependent/glslang_tab.cpp"
+#line 9917 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 444: /* type_specifier_nonarray: F16IMAGE2D  */
-#line 3015 "MachineIndependent/glslang.y"
+  case 453: /* type_specifier_nonarray: F16IMAGE2D  */
+#line 3088 "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 9330 "MachineIndependent/glslang_tab.cpp"
+#line 9928 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 445: /* type_specifier_nonarray: IIMAGE2D  */
-#line 3021 "MachineIndependent/glslang.y"
+  case 454: /* type_specifier_nonarray: IIMAGE2D  */
+#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(EbtInt, Esd2D);
     }
-#line 9340 "MachineIndependent/glslang_tab.cpp"
+#line 9938 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 446: /* type_specifier_nonarray: UIMAGE2D  */
-#line 3026 "MachineIndependent/glslang.y"
+  case 455: /* type_specifier_nonarray: UIMAGE2D  */
+#line 3099 "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 9350 "MachineIndependent/glslang_tab.cpp"
+#line 9948 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 447: /* type_specifier_nonarray: IMAGE3D  */
-#line 3031 "MachineIndependent/glslang.y"
+  case 456: /* type_specifier_nonarray: IMAGE3D  */
+#line 3104 "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 9360 "MachineIndependent/glslang_tab.cpp"
+#line 9958 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 448: /* type_specifier_nonarray: F16IMAGE3D  */
-#line 3036 "MachineIndependent/glslang.y"
+  case 457: /* type_specifier_nonarray: F16IMAGE3D  */
+#line 3109 "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 9371 "MachineIndependent/glslang_tab.cpp"
+#line 9969 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 449: /* type_specifier_nonarray: IIMAGE3D  */
-#line 3042 "MachineIndependent/glslang.y"
+  case 458: /* type_specifier_nonarray: IIMAGE3D  */
+#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(EbtInt, Esd3D);
     }
-#line 9381 "MachineIndependent/glslang_tab.cpp"
+#line 9979 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 450: /* type_specifier_nonarray: UIMAGE3D  */
-#line 3047 "MachineIndependent/glslang.y"
+  case 459: /* type_specifier_nonarray: UIMAGE3D  */
+#line 3120 "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 9391 "MachineIndependent/glslang_tab.cpp"
+#line 9989 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 451: /* type_specifier_nonarray: IMAGE2DRECT  */
-#line 3052 "MachineIndependent/glslang.y"
+  case 460: /* type_specifier_nonarray: IMAGE2DRECT  */
+#line 3125 "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 9401 "MachineIndependent/glslang_tab.cpp"
+#line 9999 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 452: /* type_specifier_nonarray: F16IMAGE2DRECT  */
-#line 3057 "MachineIndependent/glslang.y"
+  case 461: /* type_specifier_nonarray: F16IMAGE2DRECT  */
+#line 3130 "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 9412 "MachineIndependent/glslang_tab.cpp"
+#line 10010 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 453: /* type_specifier_nonarray: IIMAGE2DRECT  */
-#line 3063 "MachineIndependent/glslang.y"
+  case 462: /* type_specifier_nonarray: IIMAGE2DRECT  */
+#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(EbtInt, EsdRect);
     }
-#line 9422 "MachineIndependent/glslang_tab.cpp"
+#line 10020 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 454: /* type_specifier_nonarray: UIMAGE2DRECT  */
-#line 3068 "MachineIndependent/glslang.y"
+  case 463: /* type_specifier_nonarray: UIMAGE2DRECT  */
+#line 3141 "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 9432 "MachineIndependent/glslang_tab.cpp"
+#line 10030 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 455: /* type_specifier_nonarray: IMAGECUBE  */
-#line 3073 "MachineIndependent/glslang.y"
+  case 464: /* type_specifier_nonarray: IMAGECUBE  */
+#line 3146 "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 9442 "MachineIndependent/glslang_tab.cpp"
+#line 10040 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 456: /* type_specifier_nonarray: F16IMAGECUBE  */
-#line 3078 "MachineIndependent/glslang.y"
+  case 465: /* type_specifier_nonarray: F16IMAGECUBE  */
+#line 3151 "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 9453 "MachineIndependent/glslang_tab.cpp"
+#line 10051 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 457: /* type_specifier_nonarray: IIMAGECUBE  */
-#line 3084 "MachineIndependent/glslang.y"
+  case 466: /* type_specifier_nonarray: IIMAGECUBE  */
+#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(EbtInt, EsdCube);
     }
-#line 9463 "MachineIndependent/glslang_tab.cpp"
+#line 10061 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 458: /* type_specifier_nonarray: UIMAGECUBE  */
-#line 3089 "MachineIndependent/glslang.y"
+  case 467: /* type_specifier_nonarray: UIMAGECUBE  */
+#line 3162 "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 9473 "MachineIndependent/glslang_tab.cpp"
+#line 10071 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 459: /* type_specifier_nonarray: IMAGEBUFFER  */
-#line 3094 "MachineIndependent/glslang.y"
+  case 468: /* type_specifier_nonarray: IMAGEBUFFER  */
+#line 3167 "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 9483 "MachineIndependent/glslang_tab.cpp"
+#line 10081 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 460: /* type_specifier_nonarray: F16IMAGEBUFFER  */
-#line 3099 "MachineIndependent/glslang.y"
+  case 469: /* type_specifier_nonarray: F16IMAGEBUFFER  */
+#line 3172 "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 9494 "MachineIndependent/glslang_tab.cpp"
+#line 10092 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 461: /* type_specifier_nonarray: IIMAGEBUFFER  */
-#line 3105 "MachineIndependent/glslang.y"
+  case 470: /* type_specifier_nonarray: IIMAGEBUFFER  */
+#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(EbtInt, EsdBuffer);
     }
-#line 9504 "MachineIndependent/glslang_tab.cpp"
+#line 10102 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 462: /* type_specifier_nonarray: UIMAGEBUFFER  */
-#line 3110 "MachineIndependent/glslang.y"
+  case 471: /* type_specifier_nonarray: UIMAGEBUFFER  */
+#line 3183 "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 9514 "MachineIndependent/glslang_tab.cpp"
+#line 10112 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 463: /* type_specifier_nonarray: IMAGE1DARRAY  */
-#line 3115 "MachineIndependent/glslang.y"
+  case 472: /* type_specifier_nonarray: IMAGE1DARRAY  */
+#line 3188 "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 9524 "MachineIndependent/glslang_tab.cpp"
+#line 10122 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 464: /* type_specifier_nonarray: F16IMAGE1DARRAY  */
-#line 3120 "MachineIndependent/glslang.y"
+  case 473: /* type_specifier_nonarray: F16IMAGE1DARRAY  */
+#line 3193 "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 9535 "MachineIndependent/glslang_tab.cpp"
+#line 10133 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 465: /* type_specifier_nonarray: IIMAGE1DARRAY  */
-#line 3126 "MachineIndependent/glslang.y"
+  case 474: /* type_specifier_nonarray: IIMAGE1DARRAY  */
+#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(EbtInt, Esd1D, true);
     }
-#line 9545 "MachineIndependent/glslang_tab.cpp"
+#line 10143 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 466: /* type_specifier_nonarray: UIMAGE1DARRAY  */
-#line 3131 "MachineIndependent/glslang.y"
+  case 475: /* type_specifier_nonarray: UIMAGE1DARRAY  */
+#line 3204 "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 9555 "MachineIndependent/glslang_tab.cpp"
+#line 10153 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 467: /* type_specifier_nonarray: IMAGE2DARRAY  */
-#line 3136 "MachineIndependent/glslang.y"
+  case 476: /* type_specifier_nonarray: IMAGE2DARRAY  */
+#line 3209 "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 9565 "MachineIndependent/glslang_tab.cpp"
+#line 10163 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 468: /* type_specifier_nonarray: F16IMAGE2DARRAY  */
-#line 3141 "MachineIndependent/glslang.y"
+  case 477: /* type_specifier_nonarray: F16IMAGE2DARRAY  */
+#line 3214 "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 9576 "MachineIndependent/glslang_tab.cpp"
+#line 10174 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 469: /* type_specifier_nonarray: IIMAGE2DARRAY  */
-#line 3147 "MachineIndependent/glslang.y"
+  case 478: /* type_specifier_nonarray: IIMAGE2DARRAY  */
+#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(EbtInt, Esd2D, true);
     }
-#line 9586 "MachineIndependent/glslang_tab.cpp"
+#line 10184 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 470: /* type_specifier_nonarray: UIMAGE2DARRAY  */
-#line 3152 "MachineIndependent/glslang.y"
+  case 479: /* type_specifier_nonarray: UIMAGE2DARRAY  */
+#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(EbtUint, Esd2D, true);
     }
-#line 9596 "MachineIndependent/glslang_tab.cpp"
+#line 10194 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 471: /* type_specifier_nonarray: IMAGECUBEARRAY  */
-#line 3157 "MachineIndependent/glslang.y"
+  case 480: /* type_specifier_nonarray: IMAGECUBEARRAY  */
+#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(EbtFloat, EsdCube, true);
     }
-#line 9606 "MachineIndependent/glslang_tab.cpp"
+#line 10204 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 472: /* type_specifier_nonarray: F16IMAGECUBEARRAY  */
-#line 3162 "MachineIndependent/glslang.y"
+  case 481: /* type_specifier_nonarray: F16IMAGECUBEARRAY  */
+#line 3235 "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 9617 "MachineIndependent/glslang_tab.cpp"
+#line 10215 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 473: /* type_specifier_nonarray: IIMAGECUBEARRAY  */
-#line 3168 "MachineIndependent/glslang.y"
+  case 482: /* type_specifier_nonarray: IIMAGECUBEARRAY  */
+#line 3241 "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 9627 "MachineIndependent/glslang_tab.cpp"
+#line 10225 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 474: /* type_specifier_nonarray: UIMAGECUBEARRAY  */
-#line 3173 "MachineIndependent/glslang.y"
+  case 483: /* type_specifier_nonarray: UIMAGECUBEARRAY  */
+#line 3246 "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 9637 "MachineIndependent/glslang_tab.cpp"
+#line 10235 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 475: /* type_specifier_nonarray: IMAGE2DMS  */
-#line 3178 "MachineIndependent/glslang.y"
+  case 484: /* type_specifier_nonarray: IMAGE2DMS  */
+#line 3251 "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 9647 "MachineIndependent/glslang_tab.cpp"
+#line 10245 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 476: /* type_specifier_nonarray: F16IMAGE2DMS  */
-#line 3183 "MachineIndependent/glslang.y"
+  case 485: /* type_specifier_nonarray: F16IMAGE2DMS  */
+#line 3256 "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 9658 "MachineIndependent/glslang_tab.cpp"
+#line 10256 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 477: /* type_specifier_nonarray: IIMAGE2DMS  */
-#line 3189 "MachineIndependent/glslang.y"
+  case 486: /* type_specifier_nonarray: IIMAGE2DMS  */
+#line 3262 "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 9668 "MachineIndependent/glslang_tab.cpp"
+#line 10266 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 478: /* type_specifier_nonarray: UIMAGE2DMS  */
-#line 3194 "MachineIndependent/glslang.y"
+  case 487: /* type_specifier_nonarray: UIMAGE2DMS  */
+#line 3267 "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 9678 "MachineIndependent/glslang_tab.cpp"
+#line 10276 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 479: /* type_specifier_nonarray: IMAGE2DMSARRAY  */
-#line 3199 "MachineIndependent/glslang.y"
+  case 488: /* type_specifier_nonarray: IMAGE2DMSARRAY  */
+#line 3272 "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 9688 "MachineIndependent/glslang_tab.cpp"
+#line 10286 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 480: /* type_specifier_nonarray: F16IMAGE2DMSARRAY  */
-#line 3204 "MachineIndependent/glslang.y"
+  case 489: /* type_specifier_nonarray: F16IMAGE2DMSARRAY  */
+#line 3277 "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 9699 "MachineIndependent/glslang_tab.cpp"
+#line 10297 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 481: /* type_specifier_nonarray: IIMAGE2DMSARRAY  */
-#line 3210 "MachineIndependent/glslang.y"
+  case 490: /* type_specifier_nonarray: IIMAGE2DMSARRAY  */
+#line 3283 "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 9709 "MachineIndependent/glslang_tab.cpp"
+#line 10307 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 482: /* type_specifier_nonarray: UIMAGE2DMSARRAY  */
-#line 3215 "MachineIndependent/glslang.y"
+  case 491: /* type_specifier_nonarray: UIMAGE2DMSARRAY  */
+#line 3288 "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 9719 "MachineIndependent/glslang_tab.cpp"
+#line 10317 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 483: /* type_specifier_nonarray: I64IMAGE1D  */
-#line 3220 "MachineIndependent/glslang.y"
+  case 492: /* type_specifier_nonarray: I64IMAGE1D  */
+#line 3293 "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"
+#line 10327 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 484: /* type_specifier_nonarray: U64IMAGE1D  */
-#line 3225 "MachineIndependent/glslang.y"
+  case 493: /* type_specifier_nonarray: U64IMAGE1D  */
+#line 3298 "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"
+#line 10337 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 485: /* type_specifier_nonarray: I64IMAGE2D  */
-#line 3230 "MachineIndependent/glslang.y"
+  case 494: /* type_specifier_nonarray: I64IMAGE2D  */
+#line 3303 "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"
+#line 10347 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 486: /* type_specifier_nonarray: U64IMAGE2D  */
-#line 3235 "MachineIndependent/glslang.y"
+  case 495: /* type_specifier_nonarray: U64IMAGE2D  */
+#line 3308 "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"
+#line 10357 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 487: /* type_specifier_nonarray: I64IMAGE3D  */
-#line 3240 "MachineIndependent/glslang.y"
+  case 496: /* type_specifier_nonarray: I64IMAGE3D  */
+#line 3313 "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"
+#line 10367 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 488: /* type_specifier_nonarray: U64IMAGE3D  */
-#line 3245 "MachineIndependent/glslang.y"
+  case 497: /* type_specifier_nonarray: U64IMAGE3D  */
+#line 3318 "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"
+#line 10377 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 489: /* type_specifier_nonarray: I64IMAGE2DRECT  */
-#line 3250 "MachineIndependent/glslang.y"
+  case 498: /* type_specifier_nonarray: I64IMAGE2DRECT  */
+#line 3323 "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"
+#line 10387 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 490: /* type_specifier_nonarray: U64IMAGE2DRECT  */
-#line 3255 "MachineIndependent/glslang.y"
+  case 499: /* type_specifier_nonarray: U64IMAGE2DRECT  */
+#line 3328 "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"
+#line 10397 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 491: /* type_specifier_nonarray: I64IMAGECUBE  */
-#line 3260 "MachineIndependent/glslang.y"
+  case 500: /* type_specifier_nonarray: I64IMAGECUBE  */
+#line 3333 "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"
+#line 10407 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 492: /* type_specifier_nonarray: U64IMAGECUBE  */
-#line 3265 "MachineIndependent/glslang.y"
+  case 501: /* type_specifier_nonarray: U64IMAGECUBE  */
+#line 3338 "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"
+#line 10417 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 493: /* type_specifier_nonarray: I64IMAGEBUFFER  */
-#line 3270 "MachineIndependent/glslang.y"
+  case 502: /* type_specifier_nonarray: I64IMAGEBUFFER  */
+#line 3343 "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"
+#line 10427 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 494: /* type_specifier_nonarray: U64IMAGEBUFFER  */
-#line 3275 "MachineIndependent/glslang.y"
+  case 503: /* type_specifier_nonarray: U64IMAGEBUFFER  */
+#line 3348 "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"
+#line 10437 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 495: /* type_specifier_nonarray: I64IMAGE1DARRAY  */
-#line 3280 "MachineIndependent/glslang.y"
+  case 504: /* type_specifier_nonarray: I64IMAGE1DARRAY  */
+#line 3353 "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"
+#line 10447 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 496: /* type_specifier_nonarray: U64IMAGE1DARRAY  */
-#line 3285 "MachineIndependent/glslang.y"
+  case 505: /* type_specifier_nonarray: U64IMAGE1DARRAY  */
+#line 3358 "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"
+#line 10457 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 497: /* type_specifier_nonarray: I64IMAGE2DARRAY  */
-#line 3290 "MachineIndependent/glslang.y"
+  case 506: /* type_specifier_nonarray: I64IMAGE2DARRAY  */
+#line 3363 "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"
+#line 10467 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 498: /* type_specifier_nonarray: U64IMAGE2DARRAY  */
-#line 3295 "MachineIndependent/glslang.y"
+  case 507: /* type_specifier_nonarray: U64IMAGE2DARRAY  */
+#line 3368 "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"
+#line 10477 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 499: /* type_specifier_nonarray: I64IMAGECUBEARRAY  */
-#line 3300 "MachineIndependent/glslang.y"
+  case 508: /* type_specifier_nonarray: I64IMAGECUBEARRAY  */
+#line 3373 "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"
+#line 10487 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 500: /* type_specifier_nonarray: U64IMAGECUBEARRAY  */
-#line 3305 "MachineIndependent/glslang.y"
+  case 509: /* type_specifier_nonarray: U64IMAGECUBEARRAY  */
+#line 3378 "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"
+#line 10497 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 501: /* type_specifier_nonarray: I64IMAGE2DMS  */
-#line 3310 "MachineIndependent/glslang.y"
+  case 510: /* type_specifier_nonarray: I64IMAGE2DMS  */
+#line 3383 "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"
+#line 10507 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 502: /* type_specifier_nonarray: U64IMAGE2DMS  */
-#line 3315 "MachineIndependent/glslang.y"
+  case 511: /* type_specifier_nonarray: U64IMAGE2DMS  */
+#line 3388 "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"
+#line 10517 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 503: /* type_specifier_nonarray: I64IMAGE2DMSARRAY  */
-#line 3320 "MachineIndependent/glslang.y"
+  case 512: /* type_specifier_nonarray: I64IMAGE2DMSARRAY  */
+#line 3393 "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"
+#line 10527 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 504: /* type_specifier_nonarray: U64IMAGE2DMSARRAY  */
-#line 3325 "MachineIndependent/glslang.y"
+  case 513: /* type_specifier_nonarray: U64IMAGE2DMSARRAY  */
+#line 3398 "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"
+#line 10537 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 505: /* type_specifier_nonarray: SAMPLEREXTERNALOES  */
-#line 3330 "MachineIndependent/glslang.y"
+  case 514: /* type_specifier_nonarray: SAMPLEREXTERNALOES  */
+#line 3403 "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 9950 "MachineIndependent/glslang_tab.cpp"
+#line 10548 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 506: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT  */
-#line 3336 "MachineIndependent/glslang.y"
+  case 515: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT  */
+#line 3409 "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 9961 "MachineIndependent/glslang_tab.cpp"
+#line 10559 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 507: /* type_specifier_nonarray: SUBPASSINPUT  */
-#line 3342 "MachineIndependent/glslang.y"
+  case 516: /* type_specifier_nonarray: SUBPASSINPUT  */
+#line 3415 "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 9972 "MachineIndependent/glslang_tab.cpp"
+#line 10570 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 508: /* type_specifier_nonarray: SUBPASSINPUTMS  */
-#line 3348 "MachineIndependent/glslang.y"
+  case 517: /* type_specifier_nonarray: SUBPASSINPUTMS  */
+#line 3421 "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 9983 "MachineIndependent/glslang_tab.cpp"
+#line 10581 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 509: /* type_specifier_nonarray: F16SUBPASSINPUT  */
-#line 3354 "MachineIndependent/glslang.y"
+  case 518: /* type_specifier_nonarray: F16SUBPASSINPUT  */
+#line 3427 "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");
@@ -9991,11 +10589,11 @@
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtFloat16);
     }
-#line 9995 "MachineIndependent/glslang_tab.cpp"
+#line 10593 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 510: /* type_specifier_nonarray: F16SUBPASSINPUTMS  */
-#line 3361 "MachineIndependent/glslang.y"
+  case 519: /* type_specifier_nonarray: F16SUBPASSINPUTMS  */
+#line 3434 "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");
@@ -10003,98 +10601,107 @@
         (yyval.interm.type).basicType = EbtSampler;
         (yyval.interm.type).sampler.setSubpass(EbtFloat16, true);
     }
-#line 10007 "MachineIndependent/glslang_tab.cpp"
+#line 10605 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 511: /* type_specifier_nonarray: ISUBPASSINPUT  */
-#line 3368 "MachineIndependent/glslang.y"
+  case 520: /* type_specifier_nonarray: ISUBPASSINPUT  */
+#line 3441 "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 10018 "MachineIndependent/glslang_tab.cpp"
+#line 10616 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 512: /* type_specifier_nonarray: ISUBPASSINPUTMS  */
-#line 3374 "MachineIndependent/glslang.y"
+  case 521: /* type_specifier_nonarray: ISUBPASSINPUTMS  */
+#line 3447 "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 10029 "MachineIndependent/glslang_tab.cpp"
+#line 10627 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 513: /* type_specifier_nonarray: USUBPASSINPUT  */
-#line 3380 "MachineIndependent/glslang.y"
+  case 522: /* type_specifier_nonarray: USUBPASSINPUT  */
+#line 3453 "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 10040 "MachineIndependent/glslang_tab.cpp"
+#line 10638 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 514: /* type_specifier_nonarray: USUBPASSINPUTMS  */
-#line 3386 "MachineIndependent/glslang.y"
+  case 523: /* type_specifier_nonarray: USUBPASSINPUTMS  */
+#line 3459 "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 10051 "MachineIndependent/glslang_tab.cpp"
+#line 10649 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 515: /* type_specifier_nonarray: FCOOPMATNV  */
-#line 3392 "MachineIndependent/glslang.y"
+  case 524: /* type_specifier_nonarray: FCOOPMATNV  */
+#line 3465 "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 10062 "MachineIndependent/glslang_tab.cpp"
+#line 10660 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 516: /* type_specifier_nonarray: ICOOPMATNV  */
-#line 3398 "MachineIndependent/glslang.y"
+  case 525: /* type_specifier_nonarray: ICOOPMATNV  */
+#line 3471 "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 10073 "MachineIndependent/glslang_tab.cpp"
+#line 10671 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 517: /* type_specifier_nonarray: UCOOPMATNV  */
-#line 3404 "MachineIndependent/glslang.y"
+  case 526: /* type_specifier_nonarray: UCOOPMATNV  */
+#line 3477 "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 10084 "MachineIndependent/glslang_tab.cpp"
+#line 10682 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 518: /* type_specifier_nonarray: struct_specifier  */
-#line 3411 "MachineIndependent/glslang.y"
+  case 527: /* type_specifier_nonarray: spirv_type_specifier  */
+#line 3483 "MachineIndependent/glslang.y"
+                           {
+        parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier");
+        (yyval.interm.type) = (yyvsp[0].interm.type);
+    }
+#line 10691 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 528: /* type_specifier_nonarray: struct_specifier  */
+#line 3488 "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 10094 "MachineIndependent/glslang_tab.cpp"
+#line 10701 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 519: /* type_specifier_nonarray: TYPE_NAME  */
-#line 3416 "MachineIndependent/glslang.y"
+  case 529: /* type_specifier_nonarray: TYPE_NAME  */
+#line 3493 "MachineIndependent/glslang.y"
                 {
         //
         // This is for user defined type names.  The lexical phase looked up the
@@ -10108,47 +10715,47 @@
         } else
             parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), "");
     }
-#line 10112 "MachineIndependent/glslang_tab.cpp"
+#line 10719 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 520: /* precision_qualifier: HIGH_PRECISION  */
-#line 3432 "MachineIndependent/glslang.y"
+  case 530: /* precision_qualifier: HIGH_PRECISION  */
+#line 3509 "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 10122 "MachineIndependent/glslang_tab.cpp"
+#line 10729 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 521: /* precision_qualifier: MEDIUM_PRECISION  */
-#line 3437 "MachineIndependent/glslang.y"
+  case 531: /* precision_qualifier: MEDIUM_PRECISION  */
+#line 3514 "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 10132 "MachineIndependent/glslang_tab.cpp"
+#line 10739 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 522: /* precision_qualifier: LOW_PRECISION  */
-#line 3442 "MachineIndependent/glslang.y"
+  case 532: /* precision_qualifier: LOW_PRECISION  */
+#line 3519 "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 10142 "MachineIndependent/glslang_tab.cpp"
+#line 10749 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 523: /* $@3: %empty  */
-#line 3450 "MachineIndependent/glslang.y"
+  case 533: /* $@3: %empty  */
+#line 3527 "MachineIndependent/glslang.y"
                                    { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); }
-#line 10148 "MachineIndependent/glslang_tab.cpp"
+#line 10755 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 524: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE  */
-#line 3450 "MachineIndependent/glslang.y"
+  case 534: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE  */
+#line 3527 "MachineIndependent/glslang.y"
                                                                                                                    {
         TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string);
         parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure);
@@ -10160,17 +10767,17 @@
         (yyval.interm.type).userDef = structure;
         --parseContext.structNestingLevel;
     }
-#line 10164 "MachineIndependent/glslang_tab.cpp"
+#line 10771 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 525: /* $@4: %empty  */
-#line 3461 "MachineIndependent/glslang.y"
+  case 535: /* $@4: %empty  */
+#line 3538 "MachineIndependent/glslang.y"
                         { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); }
-#line 10170 "MachineIndependent/glslang_tab.cpp"
+#line 10777 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 526: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE  */
-#line 3461 "MachineIndependent/glslang.y"
+  case 536: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE  */
+#line 3538 "MachineIndependent/glslang.y"
                                                                                                         {
         TType* structure = new TType((yyvsp[-1].interm.typeList), TString(""));
         (yyval.interm.type).init((yyvsp[-4].lex).loc);
@@ -10178,19 +10785,19 @@
         (yyval.interm.type).userDef = structure;
         --parseContext.structNestingLevel;
     }
-#line 10182 "MachineIndependent/glslang_tab.cpp"
+#line 10789 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 527: /* struct_declaration_list: struct_declaration  */
-#line 3471 "MachineIndependent/glslang.y"
+  case 537: /* struct_declaration_list: struct_declaration  */
+#line 3548 "MachineIndependent/glslang.y"
                          {
         (yyval.interm.typeList) = (yyvsp[0].interm.typeList);
     }
-#line 10190 "MachineIndependent/glslang_tab.cpp"
+#line 10797 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 528: /* struct_declaration_list: struct_declaration_list struct_declaration  */
-#line 3474 "MachineIndependent/glslang.y"
+  case 538: /* struct_declaration_list: struct_declaration_list struct_declaration  */
+#line 3551 "MachineIndependent/glslang.y"
                                                  {
         (yyval.interm.typeList) = (yyvsp[-1].interm.typeList);
         for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) {
@@ -10201,11 +10808,11 @@
             (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]);
         }
     }
-#line 10205 "MachineIndependent/glslang_tab.cpp"
+#line 10812 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 529: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON  */
-#line 3487 "MachineIndependent/glslang.y"
+  case 539: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON  */
+#line 3564 "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");
@@ -10228,11 +10835,11 @@
             (*(yyval.interm.typeList))[i].type->shallowCopy(type);
         }
     }
-#line 10232 "MachineIndependent/glslang_tab.cpp"
+#line 10839 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 530: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON  */
-#line 3509 "MachineIndependent/glslang.y"
+  case 540: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON  */
+#line 3586 "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");
@@ -10257,38 +10864,38 @@
             (*(yyval.interm.typeList))[i].type->shallowCopy(type);
         }
     }
-#line 10261 "MachineIndependent/glslang_tab.cpp"
+#line 10868 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 531: /* struct_declarator_list: struct_declarator  */
-#line 3536 "MachineIndependent/glslang.y"
+  case 541: /* struct_declarator_list: struct_declarator  */
+#line 3613 "MachineIndependent/glslang.y"
                         {
         (yyval.interm.typeList) = new TTypeList;
         (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
     }
-#line 10270 "MachineIndependent/glslang_tab.cpp"
+#line 10877 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 532: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator  */
-#line 3540 "MachineIndependent/glslang.y"
+  case 542: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator  */
+#line 3617 "MachineIndependent/glslang.y"
                                                      {
         (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine));
     }
-#line 10278 "MachineIndependent/glslang_tab.cpp"
+#line 10885 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 533: /* struct_declarator: IDENTIFIER  */
-#line 3546 "MachineIndependent/glslang.y"
+  case 543: /* struct_declarator: IDENTIFIER  */
+#line 3623 "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 10288 "MachineIndependent/glslang_tab.cpp"
+#line 10895 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 534: /* struct_declarator: IDENTIFIER array_specifier  */
-#line 3551 "MachineIndependent/glslang.y"
+  case 544: /* struct_declarator: IDENTIFIER array_specifier  */
+#line 3628 "MachineIndependent/glslang.y"
                                  {
         parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes);
 
@@ -10297,246 +10904,246 @@
         (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string);
         (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes);
     }
-#line 10301 "MachineIndependent/glslang_tab.cpp"
+#line 10908 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 535: /* initializer: assignment_expression  */
-#line 3562 "MachineIndependent/glslang.y"
+  case 545: /* initializer: assignment_expression  */
+#line 3639 "MachineIndependent/glslang.y"
                             {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 10309 "MachineIndependent/glslang_tab.cpp"
+#line 10916 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 536: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE  */
-#line 3566 "MachineIndependent/glslang.y"
+  case 546: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE  */
+#line 3643 "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 10320 "MachineIndependent/glslang_tab.cpp"
+#line 10927 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 537: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE  */
-#line 3572 "MachineIndependent/glslang.y"
+  case 547: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE  */
+#line 3649 "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 10331 "MachineIndependent/glslang_tab.cpp"
+#line 10938 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 538: /* initializer: LEFT_BRACE RIGHT_BRACE  */
-#line 3578 "MachineIndependent/glslang.y"
+  case 548: /* initializer: LEFT_BRACE RIGHT_BRACE  */
+#line 3655 "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"
+#line 10949 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 539: /* initializer_list: initializer  */
-#line 3589 "MachineIndependent/glslang.y"
+  case 549: /* initializer_list: initializer  */
+#line 3666 "MachineIndependent/glslang.y"
                   {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc());
     }
-#line 10350 "MachineIndependent/glslang_tab.cpp"
+#line 10957 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 540: /* initializer_list: initializer_list COMMA initializer  */
-#line 3592 "MachineIndependent/glslang.y"
+  case 550: /* initializer_list: initializer_list COMMA initializer  */
+#line 3669 "MachineIndependent/glslang.y"
                                          {
         (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode));
     }
-#line 10358 "MachineIndependent/glslang_tab.cpp"
+#line 10965 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 541: /* declaration_statement: declaration  */
-#line 3599 "MachineIndependent/glslang.y"
+  case 551: /* declaration_statement: declaration  */
+#line 3676 "MachineIndependent/glslang.y"
                   { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10364 "MachineIndependent/glslang_tab.cpp"
+#line 10971 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 542: /* statement: compound_statement  */
-#line 3603 "MachineIndependent/glslang.y"
+  case 552: /* statement: compound_statement  */
+#line 3680 "MachineIndependent/glslang.y"
                           { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10370 "MachineIndependent/glslang_tab.cpp"
+#line 10977 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 543: /* statement: simple_statement  */
-#line 3604 "MachineIndependent/glslang.y"
+  case 553: /* statement: simple_statement  */
+#line 3681 "MachineIndependent/glslang.y"
                           { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10376 "MachineIndependent/glslang_tab.cpp"
+#line 10983 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 544: /* simple_statement: declaration_statement  */
-#line 3610 "MachineIndependent/glslang.y"
+  case 554: /* simple_statement: declaration_statement  */
+#line 3687 "MachineIndependent/glslang.y"
                             { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10382 "MachineIndependent/glslang_tab.cpp"
+#line 10989 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 545: /* simple_statement: expression_statement  */
-#line 3611 "MachineIndependent/glslang.y"
+  case 555: /* simple_statement: expression_statement  */
+#line 3688 "MachineIndependent/glslang.y"
                             { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10388 "MachineIndependent/glslang_tab.cpp"
+#line 10995 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 546: /* simple_statement: selection_statement  */
-#line 3612 "MachineIndependent/glslang.y"
+  case 556: /* simple_statement: selection_statement  */
+#line 3689 "MachineIndependent/glslang.y"
                             { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10394 "MachineIndependent/glslang_tab.cpp"
+#line 11001 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 547: /* simple_statement: switch_statement  */
-#line 3613 "MachineIndependent/glslang.y"
+  case 557: /* simple_statement: switch_statement  */
+#line 3690 "MachineIndependent/glslang.y"
                             { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10400 "MachineIndependent/glslang_tab.cpp"
+#line 11007 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 548: /* simple_statement: case_label  */
-#line 3614 "MachineIndependent/glslang.y"
+  case 558: /* simple_statement: case_label  */
+#line 3691 "MachineIndependent/glslang.y"
                             { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10406 "MachineIndependent/glslang_tab.cpp"
+#line 11013 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 549: /* simple_statement: iteration_statement  */
-#line 3615 "MachineIndependent/glslang.y"
+  case 559: /* simple_statement: iteration_statement  */
+#line 3692 "MachineIndependent/glslang.y"
                             { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10412 "MachineIndependent/glslang_tab.cpp"
+#line 11019 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 550: /* simple_statement: jump_statement  */
-#line 3616 "MachineIndependent/glslang.y"
+  case 560: /* simple_statement: jump_statement  */
+#line 3693 "MachineIndependent/glslang.y"
                             { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10418 "MachineIndependent/glslang_tab.cpp"
+#line 11025 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 551: /* simple_statement: demote_statement  */
-#line 3618 "MachineIndependent/glslang.y"
+  case 561: /* simple_statement: demote_statement  */
+#line 3695 "MachineIndependent/glslang.y"
                             { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10424 "MachineIndependent/glslang_tab.cpp"
+#line 11031 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 552: /* demote_statement: DEMOTE SEMICOLON  */
-#line 3624 "MachineIndependent/glslang.y"
+  case 562: /* demote_statement: DEMOTE SEMICOLON  */
+#line 3701 "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 10434 "MachineIndependent/glslang_tab.cpp"
+#line 11041 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 553: /* compound_statement: LEFT_BRACE RIGHT_BRACE  */
-#line 3633 "MachineIndependent/glslang.y"
+  case 563: /* compound_statement: LEFT_BRACE RIGHT_BRACE  */
+#line 3710 "MachineIndependent/glslang.y"
                              { (yyval.interm.intermNode) = 0; }
-#line 10440 "MachineIndependent/glslang_tab.cpp"
+#line 11047 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 554: /* $@5: %empty  */
-#line 3634 "MachineIndependent/glslang.y"
+  case 564: /* $@5: %empty  */
+#line 3711 "MachineIndependent/glslang.y"
                  {
         parseContext.symbolTable.push();
         ++parseContext.statementNestingLevel;
     }
-#line 10449 "MachineIndependent/glslang_tab.cpp"
+#line 11056 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 555: /* $@6: %empty  */
-#line 3638 "MachineIndependent/glslang.y"
+  case 565: /* $@6: %empty  */
+#line 3715 "MachineIndependent/glslang.y"
                      {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.statementNestingLevel;
     }
-#line 10458 "MachineIndependent/glslang_tab.cpp"
+#line 11065 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 556: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE  */
-#line 3642 "MachineIndependent/glslang.y"
+  case 566: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE  */
+#line 3719 "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 10468 "MachineIndependent/glslang_tab.cpp"
+#line 11075 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 557: /* statement_no_new_scope: compound_statement_no_new_scope  */
-#line 3650 "MachineIndependent/glslang.y"
+  case 567: /* statement_no_new_scope: compound_statement_no_new_scope  */
+#line 3727 "MachineIndependent/glslang.y"
                                       { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10474 "MachineIndependent/glslang_tab.cpp"
+#line 11081 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 558: /* statement_no_new_scope: simple_statement  */
-#line 3651 "MachineIndependent/glslang.y"
+  case 568: /* statement_no_new_scope: simple_statement  */
+#line 3728 "MachineIndependent/glslang.y"
                                       { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); }
-#line 10480 "MachineIndependent/glslang_tab.cpp"
+#line 11087 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 559: /* $@7: %empty  */
-#line 3655 "MachineIndependent/glslang.y"
+  case 569: /* $@7: %empty  */
+#line 3732 "MachineIndependent/glslang.y"
       {
         ++parseContext.controlFlowNestingLevel;
     }
-#line 10488 "MachineIndependent/glslang_tab.cpp"
+#line 11095 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 560: /* statement_scoped: $@7 compound_statement  */
-#line 3658 "MachineIndependent/glslang.y"
+  case 570: /* statement_scoped: $@7 compound_statement  */
+#line 3735 "MachineIndependent/glslang.y"
                           {
         --parseContext.controlFlowNestingLevel;
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10497 "MachineIndependent/glslang_tab.cpp"
+#line 11104 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 561: /* $@8: %empty  */
-#line 3662 "MachineIndependent/glslang.y"
+  case 571: /* $@8: %empty  */
+#line 3739 "MachineIndependent/glslang.y"
       {
         parseContext.symbolTable.push();
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 10507 "MachineIndependent/glslang_tab.cpp"
+#line 11114 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 562: /* statement_scoped: $@8 simple_statement  */
-#line 3667 "MachineIndependent/glslang.y"
+  case 572: /* statement_scoped: $@8 simple_statement  */
+#line 3744 "MachineIndependent/glslang.y"
                        {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10518 "MachineIndependent/glslang_tab.cpp"
+#line 11125 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 563: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE  */
-#line 3676 "MachineIndependent/glslang.y"
+  case 573: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE  */
+#line 3753 "MachineIndependent/glslang.y"
                              {
         (yyval.interm.intermNode) = 0;
     }
-#line 10526 "MachineIndependent/glslang_tab.cpp"
+#line 11133 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 564: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE  */
-#line 3679 "MachineIndependent/glslang.y"
+  case 574: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE  */
+#line 3756 "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 10536 "MachineIndependent/glslang_tab.cpp"
+#line 11143 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 565: /* statement_list: statement  */
-#line 3687 "MachineIndependent/glslang.y"
+  case 575: /* statement_list: statement  */
+#line 3764 "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 ||
@@ -10545,11 +11152,11 @@
             (yyval.interm.intermNode) = 0;  // start a fresh subsequence for what's after this case
         }
     }
-#line 10549 "MachineIndependent/glslang_tab.cpp"
+#line 11156 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 566: /* statement_list: statement_list statement  */
-#line 3695 "MachineIndependent/glslang.y"
+  case 576: /* statement_list: statement_list statement  */
+#line 3772 "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)) {
@@ -10558,76 +11165,77 @@
         } else
             (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode));
     }
-#line 10562 "MachineIndependent/glslang_tab.cpp"
+#line 11169 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 567: /* expression_statement: SEMICOLON  */
-#line 3706 "MachineIndependent/glslang.y"
+  case 577: /* expression_statement: SEMICOLON  */
+#line 3783 "MachineIndependent/glslang.y"
                  { (yyval.interm.intermNode) = 0; }
-#line 10568 "MachineIndependent/glslang_tab.cpp"
+#line 11175 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 568: /* expression_statement: expression SEMICOLON  */
-#line 3707 "MachineIndependent/glslang.y"
+  case 578: /* expression_statement: expression SEMICOLON  */
+#line 3784 "MachineIndependent/glslang.y"
                             { (yyval.interm.intermNode) = static_cast<TIntermNode*>((yyvsp[-1].interm.intermTypedNode)); }
-#line 10574 "MachineIndependent/glslang_tab.cpp"
+#line 11181 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 569: /* selection_statement: selection_statement_nonattributed  */
-#line 3711 "MachineIndependent/glslang.y"
+  case 579: /* selection_statement: selection_statement_nonattributed  */
+#line 3788 "MachineIndependent/glslang.y"
                                         {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10582 "MachineIndependent/glslang_tab.cpp"
+#line 11189 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 570: /* selection_statement: attribute selection_statement_nonattributed  */
-#line 3715 "MachineIndependent/glslang.y"
+  case 580: /* selection_statement: attribute selection_statement_nonattributed  */
+#line 3792 "MachineIndependent/glslang.y"
                                                   {
+        parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
         parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10591 "MachineIndependent/glslang_tab.cpp"
+#line 11199 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 571: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement  */
-#line 3722 "MachineIndependent/glslang.y"
+  case 581: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement  */
+#line 3800 "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 10600 "MachineIndependent/glslang_tab.cpp"
+#line 11208 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 572: /* selection_rest_statement: statement_scoped ELSE statement_scoped  */
-#line 3729 "MachineIndependent/glslang.y"
+  case 582: /* selection_rest_statement: statement_scoped ELSE statement_scoped  */
+#line 3807 "MachineIndependent/glslang.y"
                                              {
         (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode);
         (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode);
     }
-#line 10609 "MachineIndependent/glslang_tab.cpp"
+#line 11217 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 573: /* selection_rest_statement: statement_scoped  */
-#line 3733 "MachineIndependent/glslang.y"
+  case 583: /* selection_rest_statement: statement_scoped  */
+#line 3811 "MachineIndependent/glslang.y"
                        {
         (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode);
         (yyval.interm.nodePair).node2 = 0;
     }
-#line 10618 "MachineIndependent/glslang_tab.cpp"
+#line 11226 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 574: /* condition: expression  */
-#line 3741 "MachineIndependent/glslang.y"
+  case 584: /* condition: expression  */
+#line 3819 "MachineIndependent/glslang.y"
                  {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
         parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode));
     }
-#line 10627 "MachineIndependent/glslang_tab.cpp"
+#line 11235 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 575: /* condition: fully_specified_type IDENTIFIER EQUAL initializer  */
-#line 3745 "MachineIndependent/glslang.y"
+  case 585: /* condition: fully_specified_type IDENTIFIER EQUAL initializer  */
+#line 3823 "MachineIndependent/glslang.y"
                                                         {
         parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type));
 
@@ -10638,28 +11246,29 @@
         else
             (yyval.interm.intermTypedNode) = 0;
     }
-#line 10642 "MachineIndependent/glslang_tab.cpp"
+#line 11250 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 576: /* switch_statement: switch_statement_nonattributed  */
-#line 3758 "MachineIndependent/glslang.y"
+  case 586: /* switch_statement: switch_statement_nonattributed  */
+#line 3836 "MachineIndependent/glslang.y"
                                      {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10650 "MachineIndependent/glslang_tab.cpp"
+#line 11258 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 577: /* switch_statement: attribute switch_statement_nonattributed  */
-#line 3762 "MachineIndependent/glslang.y"
+  case 587: /* switch_statement: attribute switch_statement_nonattributed  */
+#line 3840 "MachineIndependent/glslang.y"
                                                {
+        parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
         parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10659 "MachineIndependent/glslang_tab.cpp"
+#line 11268 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 578: /* $@9: %empty  */
-#line 3769 "MachineIndependent/glslang.y"
+  case 588: /* $@9: %empty  */
+#line 3848 "MachineIndependent/glslang.y"
                                                {
         // start new switch sequence on the switch stack
         ++parseContext.controlFlowNestingLevel;
@@ -10668,11 +11277,11 @@
         parseContext.switchLevel.push_back(parseContext.statementNestingLevel);
         parseContext.symbolTable.push();
     }
-#line 10672 "MachineIndependent/glslang_tab.cpp"
+#line 11281 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 579: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE  */
-#line 3777 "MachineIndependent/glslang.y"
+  case 589: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE  */
+#line 3856 "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();
@@ -10682,27 +11291,27 @@
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 10686 "MachineIndependent/glslang_tab.cpp"
+#line 11295 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 580: /* switch_statement_list: %empty  */
-#line 3789 "MachineIndependent/glslang.y"
+  case 590: /* switch_statement_list: %empty  */
+#line 3868 "MachineIndependent/glslang.y"
                     {
         (yyval.interm.intermNode) = 0;
     }
-#line 10694 "MachineIndependent/glslang_tab.cpp"
+#line 11303 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 581: /* switch_statement_list: statement_list  */
-#line 3792 "MachineIndependent/glslang.y"
+  case 591: /* switch_statement_list: statement_list  */
+#line 3871 "MachineIndependent/glslang.y"
                      {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10702 "MachineIndependent/glslang_tab.cpp"
+#line 11311 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 582: /* case_label: CASE expression COLON  */
-#line 3798 "MachineIndependent/glslang.y"
+  case 592: /* case_label: CASE expression COLON  */
+#line 3877 "MachineIndependent/glslang.y"
                             {
         (yyval.interm.intermNode) = 0;
         if (parseContext.switchLevel.size() == 0)
@@ -10715,11 +11324,11 @@
             (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc);
         }
     }
-#line 10719 "MachineIndependent/glslang_tab.cpp"
+#line 11328 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 583: /* case_label: DEFAULT COLON  */
-#line 3810 "MachineIndependent/glslang.y"
+  case 593: /* case_label: DEFAULT COLON  */
+#line 3889 "MachineIndependent/glslang.y"
                     {
         (yyval.interm.intermNode) = 0;
         if (parseContext.switchLevel.size() == 0)
@@ -10729,28 +11338,29 @@
         else
             (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc);
     }
-#line 10733 "MachineIndependent/glslang_tab.cpp"
+#line 11342 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 584: /* iteration_statement: iteration_statement_nonattributed  */
-#line 3822 "MachineIndependent/glslang.y"
+  case 594: /* iteration_statement: iteration_statement_nonattributed  */
+#line 3901 "MachineIndependent/glslang.y"
                                         {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10741 "MachineIndependent/glslang_tab.cpp"
+#line 11350 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 585: /* iteration_statement: attribute iteration_statement_nonattributed  */
-#line 3826 "MachineIndependent/glslang.y"
+  case 595: /* iteration_statement: attribute iteration_statement_nonattributed  */
+#line 3905 "MachineIndependent/glslang.y"
                                                   {
+        parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute");
         parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode));
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10750 "MachineIndependent/glslang_tab.cpp"
+#line 11360 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 586: /* $@10: %empty  */
-#line 3833 "MachineIndependent/glslang.y"
+  case 596: /* $@10: %empty  */
+#line 3913 "MachineIndependent/glslang.y"
                        {
         if (! parseContext.limits.whileLoops)
             parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", "");
@@ -10759,11 +11369,11 @@
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 10763 "MachineIndependent/glslang_tab.cpp"
+#line 11373 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 587: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope  */
-#line 3841 "MachineIndependent/glslang.y"
+  case 597: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope  */
+#line 3921 "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);
@@ -10771,21 +11381,22 @@
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 10775 "MachineIndependent/glslang_tab.cpp"
+#line 11385 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 588: /* $@11: %empty  */
-#line 3848 "MachineIndependent/glslang.y"
+  case 598: /* $@11: %empty  */
+#line 3928 "MachineIndependent/glslang.y"
          {
+        parseContext.symbolTable.push();
         ++parseContext.loopNestingLevel;
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 10785 "MachineIndependent/glslang_tab.cpp"
+#line 11396 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 589: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON  */
-#line 3853 "MachineIndependent/glslang.y"
+  case 599: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON  */
+#line 3934 "MachineIndependent/glslang.y"
                                                                   {
         if (! parseContext.limits.whileLoops)
             parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", "");
@@ -10793,26 +11404,27 @@
         parseContext.boolCheck((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode));
 
         (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[-5].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, false, (yyvsp[-4].lex).loc);
+        parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         --parseContext.loopNestingLevel;
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 10801 "MachineIndependent/glslang_tab.cpp"
+#line 11413 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 590: /* $@12: %empty  */
-#line 3864 "MachineIndependent/glslang.y"
+  case 600: /* $@12: %empty  */
+#line 3946 "MachineIndependent/glslang.y"
                      {
         parseContext.symbolTable.push();
         ++parseContext.loopNestingLevel;
         ++parseContext.statementNestingLevel;
         ++parseContext.controlFlowNestingLevel;
     }
-#line 10812 "MachineIndependent/glslang_tab.cpp"
+#line 11424 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  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"
+  case 601: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope  */
+#line 3952 "MachineIndependent/glslang.y"
                                                                                {
         parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]);
         (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc);
@@ -10825,81 +11437,81 @@
         --parseContext.statementNestingLevel;
         --parseContext.controlFlowNestingLevel;
     }
-#line 10829 "MachineIndependent/glslang_tab.cpp"
+#line 11441 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 592: /* for_init_statement: expression_statement  */
-#line 3885 "MachineIndependent/glslang.y"
+  case 602: /* for_init_statement: expression_statement  */
+#line 3967 "MachineIndependent/glslang.y"
                            {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10837 "MachineIndependent/glslang_tab.cpp"
+#line 11449 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 593: /* for_init_statement: declaration_statement  */
-#line 3888 "MachineIndependent/glslang.y"
+  case 603: /* for_init_statement: declaration_statement  */
+#line 3970 "MachineIndependent/glslang.y"
                             {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10845 "MachineIndependent/glslang_tab.cpp"
+#line 11457 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 594: /* conditionopt: condition  */
-#line 3894 "MachineIndependent/glslang.y"
+  case 604: /* conditionopt: condition  */
+#line 3976 "MachineIndependent/glslang.y"
                 {
         (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode);
     }
-#line 10853 "MachineIndependent/glslang_tab.cpp"
+#line 11465 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 595: /* conditionopt: %empty  */
-#line 3897 "MachineIndependent/glslang.y"
+  case 605: /* conditionopt: %empty  */
+#line 3979 "MachineIndependent/glslang.y"
                         {
         (yyval.interm.intermTypedNode) = 0;
     }
-#line 10861 "MachineIndependent/glslang_tab.cpp"
+#line 11473 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 596: /* for_rest_statement: conditionopt SEMICOLON  */
-#line 3903 "MachineIndependent/glslang.y"
+  case 606: /* for_rest_statement: conditionopt SEMICOLON  */
+#line 3985 "MachineIndependent/glslang.y"
                              {
         (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode);
         (yyval.interm.nodePair).node2 = 0;
     }
-#line 10870 "MachineIndependent/glslang_tab.cpp"
+#line 11482 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 597: /* for_rest_statement: conditionopt SEMICOLON expression  */
-#line 3907 "MachineIndependent/glslang.y"
+  case 607: /* for_rest_statement: conditionopt SEMICOLON expression  */
+#line 3989 "MachineIndependent/glslang.y"
                                          {
         (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode);
         (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode);
     }
-#line 10879 "MachineIndependent/glslang_tab.cpp"
+#line 11491 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 598: /* jump_statement: CONTINUE SEMICOLON  */
-#line 3914 "MachineIndependent/glslang.y"
+  case 608: /* jump_statement: CONTINUE SEMICOLON  */
+#line 3996 "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 10889 "MachineIndependent/glslang_tab.cpp"
+#line 11501 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 599: /* jump_statement: BREAK SEMICOLON  */
-#line 3919 "MachineIndependent/glslang.y"
+  case 609: /* jump_statement: BREAK SEMICOLON  */
+#line 4001 "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 10899 "MachineIndependent/glslang_tab.cpp"
+#line 11511 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 600: /* jump_statement: RETURN SEMICOLON  */
-#line 3924 "MachineIndependent/glslang.y"
+  case 610: /* jump_statement: RETURN SEMICOLON  */
+#line 4006 "MachineIndependent/glslang.y"
                        {
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc);
         if (parseContext.currentFunctionType->getBasicType() != EbtVoid)
@@ -10907,101 +11519,101 @@
         if (parseContext.inMain)
             parseContext.postEntryPointReturn = true;
     }
-#line 10911 "MachineIndependent/glslang_tab.cpp"
+#line 11523 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 601: /* jump_statement: RETURN expression SEMICOLON  */
-#line 3931 "MachineIndependent/glslang.y"
+  case 611: /* jump_statement: RETURN expression SEMICOLON  */
+#line 4013 "MachineIndependent/glslang.y"
                                   {
         (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 10919 "MachineIndependent/glslang_tab.cpp"
+#line 11531 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 602: /* jump_statement: DISCARD SEMICOLON  */
-#line 3934 "MachineIndependent/glslang.y"
+  case 612: /* jump_statement: DISCARD SEMICOLON  */
+#line 4016 "MachineIndependent/glslang.y"
                         {
         parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard");
         (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc);
     }
-#line 10928 "MachineIndependent/glslang_tab.cpp"
+#line 11540 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 603: /* jump_statement: TERMINATE_INVOCATION SEMICOLON  */
-#line 3938 "MachineIndependent/glslang.y"
+  case 613: /* jump_statement: TERMINATE_INVOCATION SEMICOLON  */
+#line 4020 "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"
+#line 11549 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 604: /* jump_statement: TERMINATE_RAY SEMICOLON  */
-#line 3943 "MachineIndependent/glslang.y"
+  case 614: /* jump_statement: TERMINATE_RAY SEMICOLON  */
+#line 4025 "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"
+#line 11558 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 605: /* jump_statement: IGNORE_INTERSECTION SEMICOLON  */
-#line 3947 "MachineIndependent/glslang.y"
+  case 615: /* jump_statement: IGNORE_INTERSECTION SEMICOLON  */
+#line 4029 "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"
+#line 11567 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 606: /* translation_unit: external_declaration  */
-#line 3957 "MachineIndependent/glslang.y"
+  case 616: /* translation_unit: external_declaration  */
+#line 4039 "MachineIndependent/glslang.y"
                            {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
         parseContext.intermediate.setTreeRoot((yyval.interm.intermNode));
     }
-#line 10964 "MachineIndependent/glslang_tab.cpp"
+#line 11576 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 607: /* translation_unit: translation_unit external_declaration  */
-#line 3961 "MachineIndependent/glslang.y"
+  case 617: /* translation_unit: translation_unit external_declaration  */
+#line 4043 "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 10975 "MachineIndependent/glslang_tab.cpp"
+#line 11587 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 608: /* external_declaration: function_definition  */
-#line 3970 "MachineIndependent/glslang.y"
+  case 618: /* external_declaration: function_definition  */
+#line 4052 "MachineIndependent/glslang.y"
                           {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10983 "MachineIndependent/glslang_tab.cpp"
+#line 11595 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 609: /* external_declaration: declaration  */
-#line 3973 "MachineIndependent/glslang.y"
+  case 619: /* external_declaration: declaration  */
+#line 4055 "MachineIndependent/glslang.y"
                   {
         (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode);
     }
-#line 10991 "MachineIndependent/glslang_tab.cpp"
+#line 11603 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 610: /* external_declaration: SEMICOLON  */
-#line 3977 "MachineIndependent/glslang.y"
+  case 620: /* external_declaration: SEMICOLON  */
+#line 4059 "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 11001 "MachineIndependent/glslang_tab.cpp"
+#line 11613 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 611: /* $@13: %empty  */
-#line 3986 "MachineIndependent/glslang.y"
+  case 621: /* $@13: %empty  */
+#line 4068 "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);
@@ -11014,11 +11626,11 @@
             ++parseContext.statementNestingLevel;
         }
     }
-#line 11018 "MachineIndependent/glslang_tab.cpp"
+#line 11630 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 612: /* function_definition: function_prototype $@13 compound_statement_no_new_scope  */
-#line 3998 "MachineIndependent/glslang.y"
+  case 622: /* function_definition: function_prototype $@13 compound_statement_no_new_scope  */
+#line 4080 "MachineIndependent/glslang.y"
                                     {
         //   May be best done as post process phase on intermediate code
         if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue)
@@ -11045,52 +11657,555 @@
             --parseContext.statementNestingLevel;
         }
     }
-#line 11049 "MachineIndependent/glslang_tab.cpp"
+#line 11661 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 613: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET  */
-#line 4028 "MachineIndependent/glslang.y"
+  case 623: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET  */
+#line 4110 "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 11058 "MachineIndependent/glslang_tab.cpp"
+#line 11669 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 614: /* attribute_list: single_attribute  */
-#line 4034 "MachineIndependent/glslang.y"
+  case 624: /* attribute_list: single_attribute  */
+#line 4115 "MachineIndependent/glslang.y"
                        {
         (yyval.interm.attributes) = (yyvsp[0].interm.attributes);
     }
-#line 11066 "MachineIndependent/glslang_tab.cpp"
+#line 11677 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 615: /* attribute_list: attribute_list COMMA single_attribute  */
-#line 4037 "MachineIndependent/glslang.y"
+  case 625: /* attribute_list: attribute_list COMMA single_attribute  */
+#line 4118 "MachineIndependent/glslang.y"
                                             {
         (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes));
     }
-#line 11074 "MachineIndependent/glslang_tab.cpp"
+#line 11685 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 616: /* single_attribute: IDENTIFIER  */
-#line 4042 "MachineIndependent/glslang.y"
+  case 626: /* single_attribute: IDENTIFIER  */
+#line 4123 "MachineIndependent/glslang.y"
                  {
         (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string);
     }
-#line 11082 "MachineIndependent/glslang_tab.cpp"
+#line 11693 "MachineIndependent/glslang_tab.cpp"
     break;
 
-  case 617: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN  */
-#line 4045 "MachineIndependent/glslang.y"
+  case 627: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN  */
+#line 4126 "MachineIndependent/glslang.y"
                                                             {
         (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode));
     }
-#line 11090 "MachineIndependent/glslang_tab.cpp"
+#line 11701 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 628: /* spirv_requirements_list: spirv_requirements_parameter  */
+#line 4133 "MachineIndependent/glslang.y"
+                                   {
+        (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq);
+    }
+#line 11709 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 629: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter  */
+#line 4136 "MachineIndependent/glslang.y"
+                                                                 {
+        (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq));
+    }
+#line 11717 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 630: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET  */
+#line 4141 "MachineIndependent/glslang.y"
+                                                                       {
+        (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr);
+    }
+#line 11725 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 631: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET  */
+#line 4144 "MachineIndependent/glslang.y"
+                                                                        {
+        (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate());
+    }
+#line 11733 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 632: /* spirv_extension_list: STRING_LITERAL  */
+#line 4149 "MachineIndependent/glslang.y"
+                     {
+        (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true));
+    }
+#line 11741 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 633: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL  */
+#line 4152 "MachineIndependent/glslang.y"
+                                                {
+        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true));
+    }
+#line 11749 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 634: /* spirv_capability_list: INTCONSTANT  */
+#line 4157 "MachineIndependent/glslang.y"
+                  {
+        (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true));
+    }
+#line 11757 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 635: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT  */
+#line 4160 "MachineIndependent/glslang.y"
+                                              {
+        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true));
+    }
+#line 11765 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 636: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN  */
+#line 4165 "MachineIndependent/glslang.y"
+                                                              {
+        parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i);
+        (yyval.interm.intermNode) = 0;
+    }
+#line 11774 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 637: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN  */
+#line 4169 "MachineIndependent/glslang.y"
+                                                                                            {
+        parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
+        parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i);
+        (yyval.interm.intermNode) = 0;
+    }
+#line 11784 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 638: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN  */
+#line 4174 "MachineIndependent/glslang.y"
+                                                                                                        {
+        parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
+        (yyval.interm.intermNode) = 0;
+    }
+#line 11793 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 639: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN  */
+#line 4178 "MachineIndependent/glslang.y"
+                                                                                                                                      {
+        parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
+        parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
+        (yyval.interm.intermNode) = 0;
+    }
+#line 11803 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 640: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN  */
+#line 4183 "MachineIndependent/glslang.y"
+                                                                                                              {
+        parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
+        (yyval.interm.intermNode) = 0;
+    }
+#line 11812 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 641: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN  */
+#line 4187 "MachineIndependent/glslang.y"
+                                                                                                                                            {
+        parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
+        parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
+        (yyval.interm.intermNode) = 0;
+    }
+#line 11822 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 642: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter  */
+#line 4194 "MachineIndependent/glslang.y"
+                                     {
+        (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
+    }
+#line 11830 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 643: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter  */
+#line 4197 "MachineIndependent/glslang.y"
+                                                                               {
+        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode));
+    }
+#line 11838 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 644: /* spirv_execution_mode_parameter: FLOATCONSTANT  */
+#line 4202 "MachineIndependent/glslang.y"
+                    {
+        (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
+    }
+#line 11846 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 645: /* spirv_execution_mode_parameter: INTCONSTANT  */
+#line 4205 "MachineIndependent/glslang.y"
+                  {
+        (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
+    }
+#line 11854 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 646: /* spirv_execution_mode_parameter: UINTCONSTANT  */
+#line 4208 "MachineIndependent/glslang.y"
+                   {
+        (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
+    }
+#line 11862 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 647: /* spirv_execution_mode_parameter: BOOLCONSTANT  */
+#line 4211 "MachineIndependent/glslang.y"
+                   {
+        (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
+    }
+#line 11870 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 648: /* spirv_execution_mode_parameter: STRING_LITERAL  */
+#line 4214 "MachineIndependent/glslang.y"
+                     {
+        (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true);
+    }
+#line 11878 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 649: /* spirv_execution_mode_id_parameter_list: constant_expression  */
+#line 4219 "MachineIndependent/glslang.y"
+                          {
+        if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat &&
+            (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt &&
+            (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtUint &&
+            (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtBool &&
+            (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtString)
+            parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), "");
+        (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode));
+    }
+#line 11892 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 650: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression  */
+#line 4228 "MachineIndependent/glslang.y"
+                                                                       {
+        if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat &&
+            (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt &&
+            (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtUint &&
+            (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtBool &&
+            (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtString)
+            parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), "");
+        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode));
+    }
+#line 11906 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 651: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN  */
+#line 4239 "MachineIndependent/glslang.y"
+                                                             {
+        (yyval.interm.type).init((yyvsp[-3].lex).loc);
+        (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass;
+        (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i;
+    }
+#line 11916 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 652: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN  */
+#line 4244 "MachineIndependent/glslang.y"
+                                                                                           {
+        (yyval.interm.type).init((yyvsp[-5].lex).loc);
+        parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
+        (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass;
+        (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i;
+    }
+#line 11927 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 653: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN  */
+#line 4252 "MachineIndependent/glslang.y"
+                                                       {
+        (yyval.interm.type).init((yyvsp[-3].lex).loc);
+        (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i);
+    }
+#line 11936 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 654: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN  */
+#line 4256 "MachineIndependent/glslang.y"
+                                                                                     {
+        (yyval.interm.type).init((yyvsp[-5].lex).loc);
+        parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
+        (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i);
+    }
+#line 11946 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 655: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN  */
+#line 4261 "MachineIndependent/glslang.y"
+                                                                                            {
+        (yyval.interm.type).init((yyvsp[-5].lex).loc);
+        (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
+    }
+#line 11955 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 656: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN  */
+#line 4265 "MachineIndependent/glslang.y"
+                                                                                                                          {
+        (yyval.interm.type).init((yyvsp[-7].lex).loc);
+        parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
+        (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
+    }
+#line 11965 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 657: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN  */
+#line 4270 "MachineIndependent/glslang.y"
+                                                                                                  {
+        (yyval.interm.type).init((yyvsp[-5].lex).loc);
+        (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
+    }
+#line 11974 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 658: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN  */
+#line 4274 "MachineIndependent/glslang.y"
+                                                                                                                                {
+        (yyval.interm.type).init((yyvsp[-7].lex).loc);
+        parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
+        (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
+    }
+#line 11984 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 659: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN  */
+#line 4279 "MachineIndependent/glslang.y"
+                                                                                                          {
+        (yyval.interm.type).init((yyvsp[-5].lex).loc);
+        (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
+    }
+#line 11993 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 660: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN  */
+#line 4283 "MachineIndependent/glslang.y"
+                                                                                                                                        {
+        (yyval.interm.type).init((yyvsp[-7].lex).loc);
+        parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
+        (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate());
+    }
+#line 12003 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 661: /* spirv_decorate_parameter_list: spirv_decorate_parameter  */
+#line 4290 "MachineIndependent/glslang.y"
+                               {
+        (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode));
+    }
+#line 12011 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 662: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter  */
+#line 4293 "MachineIndependent/glslang.y"
+                                                                   {
+        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode));
+    }
+#line 12019 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 663: /* spirv_decorate_parameter: FLOATCONSTANT  */
+#line 4298 "MachineIndependent/glslang.y"
+                    {
+        (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true);
+    }
+#line 12027 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 664: /* spirv_decorate_parameter: INTCONSTANT  */
+#line 4301 "MachineIndependent/glslang.y"
+                  {
+        (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true);
+    }
+#line 12035 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 665: /* spirv_decorate_parameter: UINTCONSTANT  */
+#line 4304 "MachineIndependent/glslang.y"
+                   {
+        (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true);
+    }
+#line 12043 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 666: /* spirv_decorate_parameter: BOOLCONSTANT  */
+#line 4307 "MachineIndependent/glslang.y"
+                   {
+        (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true);
+    }
+#line 12051 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 667: /* spirv_decorate_id_parameter_list: constant_expression  */
+#line 4312 "MachineIndependent/glslang.y"
+                          {
+        if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat &&
+            (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt &&
+            (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtUint &&
+            (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtBool)
+            parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), "");
+        (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode));
+    }
+#line 12064 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 668: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA constant_expression  */
+#line 4320 "MachineIndependent/glslang.y"
+                                                                 {
+        if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat &&
+            (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt &&
+            (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtUint &&
+            (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtBool)
+            parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), "");
+        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode));
+    }
+#line 12077 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 669: /* spirv_decorate_string_parameter_list: STRING_LITERAL  */
+#line 4330 "MachineIndependent/glslang.y"
+                     {
+        (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(
+            parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true));
+    }
+#line 12086 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 670: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL  */
+#line 4334 "MachineIndependent/glslang.y"
+                                                                {
+        (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true));
+    }
+#line 12094 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 671: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN  */
+#line 4339 "MachineIndependent/glslang.y"
+                                                                                                         {
+        (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams));
+    }
+#line 12103 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 672: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN  */
+#line 4343 "MachineIndependent/glslang.y"
+                                                                                                                                       {
+        (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq));
+        (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams));
+    }
+#line 12113 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 673: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN  */
+#line 4348 "MachineIndependent/glslang.y"
+                                                                         {
+        (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst));
+    }
+#line 12122 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 674: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN  */
+#line 4352 "MachineIndependent/glslang.y"
+                                                                                                       {
+        (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel());
+        parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
+        (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst));
+    }
+#line 12132 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 675: /* spirv_type_parameter_list: spirv_type_parameter  */
+#line 4359 "MachineIndependent/glslang.y"
+                           {
+        (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams);
+    }
+#line 12140 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 676: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter  */
+#line 4362 "MachineIndependent/glslang.y"
+                                                           {
+        (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams));
+    }
+#line 12148 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 677: /* spirv_type_parameter: constant_expression  */
+#line 4367 "MachineIndependent/glslang.y"
+                          {
+        (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion());
+    }
+#line 12156 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 678: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN  */
+#line 4372 "MachineIndependent/glslang.y"
+                                                                                {
+        (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst);
+    }
+#line 12164 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 679: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN  */
+#line 4375 "MachineIndependent/glslang.y"
+                                                                                                              {
+        parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq));
+        (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst);
+    }
+#line 12173 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 680: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id  */
+#line 4381 "MachineIndependent/glslang.y"
+                                     {
+        (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst);
+    }
+#line 12181 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 681: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id  */
+#line 4384 "MachineIndependent/glslang.y"
+                                                                            {
+        (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst));
+    }
+#line 12189 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 682: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL  */
+#line 4389 "MachineIndependent/glslang.y"
+                                      {
+        (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string);
+    }
+#line 12197 "MachineIndependent/glslang_tab.cpp"
+    break;
+
+  case 683: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT  */
+#line 4392 "MachineIndependent/glslang.y"
+                                   {
+        (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i);
+    }
+#line 12205 "MachineIndependent/glslang_tab.cpp"
     break;
 
 
-#line 11094 "MachineIndependent/glslang_tab.cpp"
+#line 12209 "MachineIndependent/glslang_tab.cpp"
 
       default: break;
     }
@@ -11315,5 +12430,5 @@
   return yyresult;
 }
 
-#line 4050 "MachineIndependent/glslang.y"
+#line 4397 "MachineIndependent/glslang.y"
 
diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h
index d6bc00d..596a10e 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp.h
+++ b/glslang/MachineIndependent/glslang_tab.cpp.h
@@ -368,134 +368,144 @@
     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  */
+    SPIRV_INSTRUCTION = 572,       /* SPIRV_INSTRUCTION  */
+    SPIRV_EXECUTION_MODE = 573,    /* SPIRV_EXECUTION_MODE  */
+    SPIRV_EXECUTION_MODE_ID = 574, /* SPIRV_EXECUTION_MODE_ID  */
+    SPIRV_DECORATE = 575,          /* SPIRV_DECORATE  */
+    SPIRV_DECORATE_ID = 576,       /* SPIRV_DECORATE_ID  */
+    SPIRV_DECORATE_STRING = 577,   /* SPIRV_DECORATE_STRING  */
+    SPIRV_TYPE = 578,              /* SPIRV_TYPE  */
+    SPIRV_STORAGE_CLASS = 579,     /* SPIRV_STORAGE_CLASS  */
+    SPIRV_BY_REFERENCE = 580,      /* SPIRV_BY_REFERENCE  */
+    SPIRV_LITERAL = 581,           /* SPIRV_LITERAL  */
+    LEFT_OP = 582,                 /* LEFT_OP  */
+    RIGHT_OP = 583,                /* RIGHT_OP  */
+    INC_OP = 584,                  /* INC_OP  */
+    DEC_OP = 585,                  /* DEC_OP  */
+    LE_OP = 586,                   /* LE_OP  */
+    GE_OP = 587,                   /* GE_OP  */
+    EQ_OP = 588,                   /* EQ_OP  */
+    NE_OP = 589,                   /* NE_OP  */
+    AND_OP = 590,                  /* AND_OP  */
+    OR_OP = 591,                   /* OR_OP  */
+    XOR_OP = 592,                  /* XOR_OP  */
+    MUL_ASSIGN = 593,              /* MUL_ASSIGN  */
+    DIV_ASSIGN = 594,              /* DIV_ASSIGN  */
+    ADD_ASSIGN = 595,              /* ADD_ASSIGN  */
+    MOD_ASSIGN = 596,              /* MOD_ASSIGN  */
+    LEFT_ASSIGN = 597,             /* LEFT_ASSIGN  */
+    RIGHT_ASSIGN = 598,            /* RIGHT_ASSIGN  */
+    AND_ASSIGN = 599,              /* AND_ASSIGN  */
+    XOR_ASSIGN = 600,              /* XOR_ASSIGN  */
+    OR_ASSIGN = 601,               /* OR_ASSIGN  */
+    SUB_ASSIGN = 602,              /* SUB_ASSIGN  */
+    STRING_LITERAL = 603,          /* STRING_LITERAL  */
+    LEFT_PAREN = 604,              /* LEFT_PAREN  */
+    RIGHT_PAREN = 605,             /* RIGHT_PAREN  */
+    LEFT_BRACKET = 606,            /* LEFT_BRACKET  */
+    RIGHT_BRACKET = 607,           /* RIGHT_BRACKET  */
+    LEFT_BRACE = 608,              /* LEFT_BRACE  */
+    RIGHT_BRACE = 609,             /* RIGHT_BRACE  */
+    DOT = 610,                     /* DOT  */
+    COMMA = 611,                   /* COMMA  */
+    COLON = 612,                   /* COLON  */
+    EQUAL = 613,                   /* EQUAL  */
+    SEMICOLON = 614,               /* SEMICOLON  */
+    BANG = 615,                    /* BANG  */
+    DASH = 616,                    /* DASH  */
+    TILDE = 617,                   /* TILDE  */
+    PLUS = 618,                    /* PLUS  */
+    STAR = 619,                    /* STAR  */
+    SLASH = 620,                   /* SLASH  */
+    PERCENT = 621,                 /* PERCENT  */
+    LEFT_ANGLE = 622,              /* LEFT_ANGLE  */
+    RIGHT_ANGLE = 623,             /* RIGHT_ANGLE  */
+    VERTICAL_BAR = 624,            /* VERTICAL_BAR  */
+    CARET = 625,                   /* CARET  */
+    AMPERSAND = 626,               /* AMPERSAND  */
+    QUESTION = 627,                /* QUESTION  */
+    INVARIANT = 628,               /* INVARIANT  */
+    HIGH_PRECISION = 629,          /* HIGH_PRECISION  */
+    MEDIUM_PRECISION = 630,        /* MEDIUM_PRECISION  */
+    LOW_PRECISION = 631,           /* LOW_PRECISION  */
+    PRECISION = 632,               /* PRECISION  */
+    PACKED = 633,                  /* PACKED  */
+    RESOURCE = 634,                /* RESOURCE  */
+    SUPERP = 635,                  /* SUPERP  */
+    FLOATCONSTANT = 636,           /* FLOATCONSTANT  */
+    INTCONSTANT = 637,             /* INTCONSTANT  */
+    UINTCONSTANT = 638,            /* UINTCONSTANT  */
+    BOOLCONSTANT = 639,            /* BOOLCONSTANT  */
+    IDENTIFIER = 640,              /* IDENTIFIER  */
+    TYPE_NAME = 641,               /* TYPE_NAME  */
+    CENTROID = 642,                /* CENTROID  */
+    IN = 643,                      /* IN  */
+    OUT = 644,                     /* OUT  */
+    INOUT = 645,                   /* INOUT  */
+    STRUCT = 646,                  /* STRUCT  */
+    VOID = 647,                    /* VOID  */
+    WHILE = 648,                   /* WHILE  */
+    BREAK = 649,                   /* BREAK  */
+    CONTINUE = 650,                /* CONTINUE  */
+    DO = 651,                      /* DO  */
+    ELSE = 652,                    /* ELSE  */
+    FOR = 653,                     /* FOR  */
+    IF = 654,                      /* IF  */
+    DISCARD = 655,                 /* DISCARD  */
+    RETURN = 656,                  /* RETURN  */
+    SWITCH = 657,                  /* SWITCH  */
+    CASE = 658,                    /* CASE  */
+    DEFAULT = 659,                 /* DEFAULT  */
+    TERMINATE_INVOCATION = 660,    /* TERMINATE_INVOCATION  */
+    TERMINATE_RAY = 661,           /* TERMINATE_RAY  */
+    IGNORE_INTERSECTION = 662,     /* IGNORE_INTERSECTION  */
+    UNIFORM = 663,                 /* UNIFORM  */
+    SHARED = 664,                  /* SHARED  */
+    BUFFER = 665,                  /* BUFFER  */
+    FLAT = 666,                    /* FLAT  */
+    SMOOTH = 667,                  /* SMOOTH  */
+    LAYOUT = 668,                  /* LAYOUT  */
+    DOUBLECONSTANT = 669,          /* DOUBLECONSTANT  */
+    INT16CONSTANT = 670,           /* INT16CONSTANT  */
+    UINT16CONSTANT = 671,          /* UINT16CONSTANT  */
+    FLOAT16CONSTANT = 672,         /* FLOAT16CONSTANT  */
+    INT32CONSTANT = 673,           /* INT32CONSTANT  */
+    UINT32CONSTANT = 674,          /* UINT32CONSTANT  */
+    INT64CONSTANT = 675,           /* INT64CONSTANT  */
+    UINT64CONSTANT = 676,          /* UINT64CONSTANT  */
+    SUBROUTINE = 677,              /* SUBROUTINE  */
+    DEMOTE = 678,                  /* DEMOTE  */
+    PAYLOADNV = 679,               /* PAYLOADNV  */
+    PAYLOADINNV = 680,             /* PAYLOADINNV  */
+    HITATTRNV = 681,               /* HITATTRNV  */
+    CALLDATANV = 682,              /* CALLDATANV  */
+    CALLDATAINNV = 683,            /* CALLDATAINNV  */
+    PAYLOADEXT = 684,              /* PAYLOADEXT  */
+    PAYLOADINEXT = 685,            /* PAYLOADINEXT  */
+    HITATTREXT = 686,              /* HITATTREXT  */
+    CALLDATAEXT = 687,             /* CALLDATAEXT  */
+    CALLDATAINEXT = 688,           /* CALLDATAINEXT  */
+    PATCH = 689,                   /* PATCH  */
+    SAMPLE = 690,                  /* SAMPLE  */
+    NONUNIFORM = 691,              /* NONUNIFORM  */
+    COHERENT = 692,                /* COHERENT  */
+    VOLATILE = 693,                /* VOLATILE  */
+    RESTRICT = 694,                /* RESTRICT  */
+    READONLY = 695,                /* READONLY  */
+    WRITEONLY = 696,               /* WRITEONLY  */
+    DEVICECOHERENT = 697,          /* DEVICECOHERENT  */
+    QUEUEFAMILYCOHERENT = 698,     /* QUEUEFAMILYCOHERENT  */
+    WORKGROUPCOHERENT = 699,       /* WORKGROUPCOHERENT  */
+    SUBGROUPCOHERENT = 700,        /* SUBGROUPCOHERENT  */
+    NONPRIVATE = 701,              /* NONPRIVATE  */
+    SHADERCALLCOHERENT = 702,      /* SHADERCALLCOHERENT  */
+    NOPERSPECTIVE = 703,           /* NOPERSPECTIVE  */
+    EXPLICITINTERPAMD = 704,       /* EXPLICITINTERPAMD  */
+    PERVERTEXNV = 705,             /* PERVERTEXNV  */
+    PERPRIMITIVENV = 706,          /* PERPRIMITIVENV  */
+    PERVIEWNV = 707,               /* PERVIEWNV  */
+    PERTASKNV = 708,               /* PERTASKNV  */
+    PRECISE = 709                  /* PRECISE  */
   };
   typedef enum yytokentype yytoken_kind_t;
 #endif
@@ -527,6 +537,9 @@
             glslang::TIntermNodePair nodePair;
             glslang::TIntermTyped* intermTypedNode;
             glslang::TAttributes* attributes;
+            glslang::TSpirvRequirement* spirvReq;
+            glslang::TSpirvInstruction* spirvInst;
+            glslang::TSpirvTypeParameters* spirvTypeParams;
         };
         union {
             glslang::TPublicType type;
@@ -540,7 +553,7 @@
         glslang::TArraySizes* typeParameters;
     } interm;
 
-#line 544 "MachineIndependent/glslang_tab.cpp.h"
+#line 557 "MachineIndependent/glslang_tab.cpp.h"
 
 };
 typedef union YYSTYPE YYSTYPE;
diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp
index c718f94..a0fade1 100644
--- a/glslang/MachineIndependent/intermOut.cpp
+++ b/glslang/MachineIndependent/intermOut.cpp
@@ -696,6 +696,10 @@
 
     case EOpConstructReference: out.debug << "Construct reference type"; break;
 
+#ifndef GLSLANG_WEB
+    case EOpSpirvInst: out.debug << "spirv_instruction"; break;
+#endif
+
     default: out.debug.message(EPrefixError, "Bad unary op");
     }
 
@@ -1085,6 +1089,7 @@
     case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break;
 
     case EOpTraceNV:                          out.debug << "traceNV"; break;
+    case EOpTraceRayMotionNV:                 out.debug << "traceRayMotionNV"; break;
     case EOpTraceKHR:                         out.debug << "traceRayKHR"; break;
     case EOpReportIntersection:               out.debug << "reportIntersectionNV"; break;
     case EOpIgnoreIntersectionNV:             out.debug << "ignoreIntersectionNV"; break;
@@ -1126,6 +1131,10 @@
     case EOpIsHelperInvocation: out.debug << "IsHelperInvocation"; break;
     case EOpDebugPrintf:  out.debug << "Debug printf";  break;
 
+#ifndef GLSLANG_WEB
+    case EOpSpirvInst: out.debug << "spirv_instruction"; break;
+#endif
+
     default: out.debug.message(EPrefixError, "Bad aggregation op");
     }
 
@@ -1487,6 +1496,9 @@
     if (xfbMode)
         infoSink.debug << "in xfb mode\n";
 
+    if (getSubgroupUniformControlFlow())
+        infoSink.debug << "subgroup_uniform_control_flow\n";
+
     switch (language) {
     case EShLangVertex:
         break;
diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp
index 7e12864..19eabdf 100644
--- a/glslang/MachineIndependent/iomapper.cpp
+++ b/glslang/MachineIndependent/iomapper.cpp
@@ -79,7 +79,7 @@
             target = &inputList;
         else if (base->getQualifier().storage == EvqVaryingOut)
             target = &outputList;
-        else if (base->getQualifier().isUniformOrBuffer() && !base->getQualifier().isPushConstant())
+        else if (base->getQualifier().isUniformOrBuffer() && !base->getQualifier().isPushConstant() && !base->getQualifier().isShaderRecord())
             target = &uniformList;
         // 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
@@ -748,7 +748,7 @@
 };
 
 TDefaultIoResolverBase::TDefaultIoResolverBase(const TIntermediate& intermediate)
-    : intermediate(intermediate)
+    : referenceIntermediate(intermediate)
     , nextUniformLocation(intermediate.getUniformLocationBase())
     , nextInputLocation(0)
     , nextOutputLocation(0)
@@ -760,17 +760,17 @@
 
 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));
+                                     : selectBaseBinding(referenceIntermediate.getShiftBinding(res), referenceIntermediate.getShiftBindingForSet(res, set));
 }
 
 const std::vector<std::string>& TDefaultIoResolverBase::getResourceSetBinding(EShLanguage stage) const {
     return stageIntermediates[stage] ? stageIntermediates[stage]->getResourceSetBinding()
-                                     : intermediate.getResourceSetBinding();
+                                     : referenceIntermediate.getResourceSetBinding();
 }
 
-bool TDefaultIoResolverBase::doAutoBindingMapping() const { return intermediate.getAutoMapBindings(); }
+bool TDefaultIoResolverBase::doAutoBindingMapping() const { return referenceIntermediate.getAutoMapBindings(); }
 
-bool TDefaultIoResolverBase::doAutoLocationMapping() const { return intermediate.getAutoMapLocations(); }
+bool TDefaultIoResolverBase::doAutoLocationMapping() const { return referenceIntermediate.getAutoMapLocations(); }
 
 TDefaultIoResolverBase::TSlotSet::iterator TDefaultIoResolverBase::findSlot(int set, int slot) {
     return std::lower_bound(slots[set].begin(), slots[set].end(), slot);
@@ -827,7 +827,7 @@
     }
     // no locations added if already present, a built-in variable, a block, or an opaque
     if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getBasicType() == EbtBlock ||
-        type.isAtomic() || (type.containsOpaque() && intermediate.getSpv().openGl == 0)) {
+        type.isAtomic() || (type.containsOpaque() && referenceIntermediate.getSpv().openGl == 0)) {
         return ent.newLocation = -1;
     }
     // no locations on blocks of built-in variables
@@ -839,7 +839,7 @@
             return ent.newLocation = -1;
         }
     }
-    int location = intermediate.getUniformLocationOverride(name);
+    int location = referenceIntermediate.getUniformLocationOverride(name);
     if (location != -1) {
         return ent.newLocation = location;
     }
@@ -1024,7 +1024,7 @@
     } else {
         // no locations added if already present, a built-in variable, a block, or an opaque
         if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getBasicType() == EbtBlock ||
-            type.isAtomic() || (type.containsOpaque() && intermediate.getSpv().openGl == 0)) {
+            type.isAtomic() || (type.containsOpaque() && referenceIntermediate.getSpv().openGl == 0)) {
             return ent.newLocation = -1;
         }
         // no locations on blocks of built-in variables
@@ -1037,7 +1037,7 @@
             }
         }
     }
-    int location = intermediate.getUniformLocationOverride(name.c_str());
+    int location = referenceIntermediate.getUniformLocationOverride(name.c_str());
     if (location != -1) {
         return ent.newLocation = location;
     }
@@ -1086,7 +1086,7 @@
     const TType& type = ent.symbol->getType();
     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;
+    int numBindings = referenceIntermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1;
     TResourceType resource = getResourceType(type);
     // don't need to handle uniform symbol, it will be handled in resolveUniformLocation
     if (resource == EResUbo && type.getBasicType() != EbtBlock) {
@@ -1095,7 +1095,7 @@
     // 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 = intermediate.getSpv().openGl != 0 ? resource : ent.newSet;
+    int set = referenceIntermediate.getSpv().openGl != 0 ? resource : ent.newSet;
     int resourceKey = set;
     if (resource < EResCount) {
         if (type.getQualifier().hasBinding()) {
@@ -1223,7 +1223,7 @@
     const TType& type = ent.symbol->getType();
     const TString& name = ent.symbol->getAccessName();
     TResourceType resource = getResourceType(type);
-    int set = intermediate.getSpv().openGl != 0 ? resource : resolveSet(ent.stage, ent);
+    int set = referenceIntermediate.getSpv().openGl != 0 ? resource : resolveSet(ent.stage, ent);
     int resourceKey = set;
 
     if (type.getQualifier().hasBinding()) {
@@ -1233,7 +1233,7 @@
 
         if (iter == varSlotMap.end()) {
             // Reserve the slots for the ubo, ssbo and opaques who has explicit binding
-            int numBindings = intermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1;
+            int numBindings = referenceIntermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1;
             varSlotMap[name] = binding;
             reserveSlot(resourceKey, binding, numBindings);
         } else {
@@ -1288,7 +1288,7 @@
         const TType& type = ent.symbol->getType();
         const int set = getLayoutSet(type);
         // On OpenGL arrays of opaque types take a seperate binding for each element
-        int numBindings = intermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1;
+        int numBindings = referenceIntermediate.getSpv().openGl != 0 && type.isSizedArray() ? type.getCumulativeArraySize() : 1;
         TResourceType resource = getResourceType(type);
         if (resource < EResCount) {
             if (type.getQualifier().hasBinding()) {
@@ -1633,6 +1633,37 @@
             return TVarEntryInfo::TOrderByPriority()(p1.second, p2.second);
         });
         resolver->endResolve(EShLangCount);
+        if (autoPushConstantBlockName.length()) {
+            bool upgraded = false;
+            for (size_t stage = 0; stage < EShLangCount; stage++) {
+                if (intermediates[stage] != nullptr) {
+                    TVarLiveMap** pUniformVarMap = uniformResolve.uniformVarMap;
+                    auto at = pUniformVarMap[stage]->find(autoPushConstantBlockName);
+                    if (at == pUniformVarMap[stage]->end())
+                        continue;
+                    TQualifier& qualifier = at->second.symbol->getQualifier();
+                    if (!qualifier.isUniform())
+                        continue;
+                    TType& t = at->second.symbol->getWritableType();
+                    int size, stride;
+                    TIntermediate::getBaseAlignment(t, size, stride, autoPushConstantBlockPacking,
+                                                    qualifier.layoutMatrix == ElmRowMajor);
+                    if (size <= int(autoPushConstantMaxSize)) {
+                        qualifier.setBlockStorage(EbsPushConstant);
+                        qualifier.layoutPacking = autoPushConstantBlockPacking;
+                        upgraded = true;
+                    }
+                }
+            }
+            // If it's been upgraded to push_constant, then remove it from the uniformVector
+            // so it doesn't get a set/binding assigned to it.
+            if (upgraded) {
+                auto at = std::find_if(uniformVector.begin(), uniformVector.end(),
+                                       [this](const TVarLivePair& p) { return p.first == autoPushConstantBlockName; });
+                if (at != uniformVector.end())
+                    uniformVector.erase(at);
+            }
+        }
         for (size_t stage = 0; stage < EShLangCount; stage++) {
             if (intermediates[stage] != nullptr) {
                 // traverse each stage, set new location to each input/output and unifom symbol, set new binding to
diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h
index 07357c2..c43864e 100644
--- a/glslang/MachineIndependent/iomapper.h
+++ b/glslang/MachineIndependent/iomapper.h
@@ -165,7 +165,7 @@
 protected:
     TDefaultIoResolverBase(TDefaultIoResolverBase&);
     TDefaultIoResolverBase& operator=(TDefaultIoResolverBase&);
-    const TIntermediate& intermediate;
+    const TIntermediate& referenceIntermediate;
     int nextUniformLocation;
     int nextInputLocation;
     int nextOutputLocation;
@@ -291,7 +291,7 @@
     bool virtual doMap(TIoMapResolver*, TInfoSink&) { return true; }
 };
 
-// I/O mapper for OpenGL
+// I/O mapper for GLSL
 class TGlslIoMapper : public TIoMapper {
 public:
     TGlslIoMapper() {
@@ -301,6 +301,8 @@
         memset(intermediates, 0, sizeof(TIntermediate*) * (EShLangCount + 1));
         profile = ENoProfile;
         version = 0;
+        autoPushConstantMaxSize = 128;
+        autoPushConstantBlockPacking = ElpStd430;
     }
     virtual ~TGlslIoMapper() {
         for (size_t stage = 0; stage < EShLangCount; stage++) {
@@ -320,6 +322,13 @@
                 intermediates[stage] = nullptr;
         }
     }
+    // If set, the uniform block with the given name will be changed to be backed by
+    // push_constant if it's size is <= maxSize
+    void setAutoPushConstantBlock(const char* name, unsigned int maxSize, TLayoutPacking packing) {
+        autoPushConstantBlockName = name;
+        autoPushConstantMaxSize = maxSize;
+        autoPushConstantBlockPacking = packing;
+    }
     // grow the reflection stage by stage
     bool addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*) override;
     bool doMap(TIoMapResolver*, TInfoSink&) override;
@@ -329,6 +338,11 @@
     bool hadError = false;
     EProfile profile;
     int version;
+
+private:
+    TString autoPushConstantBlockName;
+    unsigned int autoPushConstantMaxSize;
+    TLayoutPacking autoPushConstantBlockPacking;
 };
 
 } // end namespace glslang
diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp
index 42b416d..b1adfc9 100644
--- a/glslang/MachineIndependent/linkValidate.cpp
+++ b/glslang/MachineIndependent/linkValidate.cpp
@@ -316,6 +316,7 @@
     MERGE_TRUE(useUnknownFormat);
     MERGE_TRUE(hlslOffsets);
     MERGE_TRUE(useStorageBuffer);
+    MERGE_TRUE(invariantAll);
     MERGE_TRUE(hlslIoMapping);
 
     // TODO: sourceFile
@@ -857,9 +858,19 @@
     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();
+        unsigned int li = 0;
+        unsigned int ri = 0;
+        while (li < symbol.getType().getStruct()->size() && ri < unitSymbol.getType().getStruct()->size()) {
+            if ((*symbol.getType().getStruct())[li].type->hiddenMember()) {
+                ++li;
+                continue;
+            }
+            if ((*unitSymbol.getType().getStruct())[ri].type->hiddenMember()) {
+                ++ri;
+                continue;
+            }
+            const TQualifier& qualifier = (*symbol.getType().getStruct())[li].type->getQualifier();
+            const TQualifier & unitQualifier = (*unitSymbol.getType().getStruct())[ri].type->getQualifier();
             if (qualifier.layoutMatrix     != unitQualifier.layoutMatrix ||
                 qualifier.layoutOffset     != unitQualifier.layoutOffset ||
                 qualifier.layoutAlign      != unitQualifier.layoutAlign ||
@@ -868,6 +879,8 @@
                 error(infoSink, "Interface block member layout qualifiers must match:");
                 writeTypeComparison = true;
             }
+            ++li;
+            ++ri;
         }
     }
 
@@ -953,10 +966,10 @@
     //       current implementation only has one offset.
     if (symbol.getQualifier().layoutMatrix    != unitSymbol.getQualifier().layoutMatrix ||
         symbol.getQualifier().layoutPacking   != unitSymbol.getQualifier().layoutPacking ||
-        symbol.getQualifier().layoutLocation  != unitSymbol.getQualifier().layoutLocation ||
+        (symbol.getQualifier().hasLocation() && unitSymbol.getQualifier().hasLocation() && symbol.getQualifier().layoutLocation != unitSymbol.getQualifier().layoutLocation) ||
         symbol.getQualifier().layoutComponent != unitSymbol.getQualifier().layoutComponent ||
         symbol.getQualifier().layoutIndex     != unitSymbol.getQualifier().layoutIndex ||
-        symbol.getQualifier().layoutBinding   != unitSymbol.getQualifier().layoutBinding ||
+        (symbol.getQualifier().hasBinding() && unitSymbol.getQualifier().hasBinding() && symbol.getQualifier().layoutBinding != unitSymbol.getQualifier().layoutBinding) ||
         (symbol.getQualifier().hasBinding() && (symbol.getQualifier().layoutOffset != unitSymbol.getQualifier().layoutOffset))) {
         error(infoSink, "Layout qualification must match:");
         writeTypeComparison = true;
@@ -1933,7 +1946,7 @@
     }
 
     // rule 9
-    if (type.getBasicType() == EbtStruct) {
+    if (type.getBasicType() == EbtStruct || type.getBasicType() == EbtBlock) {
         const TTypeList& memberList = *type.getStruct();
 
         size = 0;
@@ -2158,8 +2171,9 @@
 bool TIntermediate::isIoResizeArray(const TType& type, EShLanguage language) {
     return type.isArray() &&
             ((language == EShLangGeometry    && type.getQualifier().storage == EvqVaryingIn) ||
-            (language == EShLangTessControl && type.getQualifier().storage == EvqVaryingOut &&
+            (language == EShLangTessControl && (type.getQualifier().storage == EvqVaryingIn || type.getQualifier().storage == EvqVaryingOut) &&
                 ! type.getQualifier().patch) ||
+            (language == EShLangTessEvaluation && type.getQualifier().storage == EvqVaryingIn) ||
             (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn &&
                 type.getQualifier().pervertexNV) ||
             (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut &&
diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h
index c9a1d81..6aa9399 100644
--- a/glslang/MachineIndependent/localintermediate.h
+++ b/glslang/MachineIndependent/localintermediate.h
@@ -291,6 +291,7 @@
         numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false),
         invertY(false),
         useStorageBuffer(false),
+        invariantAll(false),
         nanMinMaxClamp(false),
         depthReplacing(false),
         uniqueId(0),
@@ -328,7 +329,10 @@
         textureSamplerTransformMode(EShTexSampTransKeep),
         needToLegalize(false),
         binaryDoubleOutput(false),
+        subgroupUniformControlFlow(false),
         usePhysicalStorageBuffer(false),
+        spirvRequirement(nullptr),
+        spirvExecutionMode(nullptr),
         uniformLocationBase(0)
 #endif
     {
@@ -535,7 +539,7 @@
     TIntermTyped* foldSwizzle(TIntermTyped* node, TSwizzleSelectors<TVectorSelector>& fields, const TSourceLoc&);
 
     // Tree ops
-    static const TIntermTyped* findLValueBase(const TIntermTyped*, bool swizzleOkay);
+    static const TIntermTyped* findLValueBase(const TIntermTyped*, bool swizzleOkay , bool BufferReferenceOk = false);
 
     // Linkage related
     void addSymbolLinkageNodes(TIntermAggregate*& linkage, EShLanguage, TSymbolTable&);
@@ -557,6 +561,8 @@
 
     void setUseStorageBuffer() { useStorageBuffer = true; }
     bool usingStorageBuffer() const { return useStorageBuffer; }
+    void setInvariantAll() { invariantAll = true; }
+    bool isInvariantAll() const { return invariantAll; }
     void setDepthReplacing() { depthReplacing = true; }
     bool isDepthReplacing() const { return depthReplacing; }
     bool setLocalSize(int dim, int size)
@@ -864,6 +870,18 @@
 
     void setBinaryDoubleOutput() { binaryDoubleOutput = true; }
     bool getBinaryDoubleOutput() { return binaryDoubleOutput; }
+
+    void setSubgroupUniformControlFlow() { subgroupUniformControlFlow = true; }
+    bool getSubgroupUniformControlFlow() const { return subgroupUniformControlFlow; }
+
+    // GL_EXT_spirv_intrinsics
+    void insertSpirvRequirement(const TSpirvRequirement* spirvReq);
+    bool hasSpirvRequirement() const { return spirvRequirement != nullptr; }
+    const TSpirvRequirement& getSpirvRequirement() const { return *spirvRequirement; }
+    void insertSpirvExecutionMode(int executionMode, const TIntermAggregate* args = nullptr);
+    void insertSpirvExecutionModeId(int executionMode, const TIntermAggregate* args);
+    bool hasSpirvExecutionMode() const { return spirvExecutionMode != nullptr; }
+    const TSpirvExecutionMode& getSpirvExecutionMode() const { return *spirvExecutionMode; }
 #endif // GLSLANG_WEB
 
     void addBlockStorageOverride(const char* nameStr, TBlockStorageClass backing)
@@ -911,6 +929,11 @@
         return false;
     }
 
+    bool IsRequestedExtension(const char* extension) const
+    {
+        return (requestedExtensions.find(extension) != requestedExtensions.end());
+    }
+
     void addToCallGraph(TInfoSink&, const TString& caller, const TString& callee);
     void merge(TInfoSink&, TIntermediate&);
     void finalCheck(TInfoSink&, bool keepUncalled);
@@ -1048,6 +1071,7 @@
     bool recursive;
     bool invertY;
     bool useStorageBuffer;
+    bool invariantAll;
     bool nanMinMaxClamp;            // true if desiring min/max/clamp to favor non-NaN over NaN
     bool depthReplacing;
     int localSize[3];
@@ -1115,8 +1139,12 @@
 
     bool needToLegalize;
     bool binaryDoubleOutput;
+    bool subgroupUniformControlFlow;
     bool usePhysicalStorageBuffer;
 
+    TSpirvRequirement* spirvRequirement;
+    TSpirvExecutionMode* spirvExecutionMode;
+
     std::unordered_map<std::string, int> uniformLocationOverrides;
     int uniformLocationBase;
     TNumericFeatures numericFeatures;
diff --git a/glslang/MachineIndependent/parseConst.cpp b/glslang/MachineIndependent/parseConst.cpp
index 7c04743..6c18299 100644
--- a/glslang/MachineIndependent/parseConst.cpp
+++ b/glslang/MachineIndependent/parseConst.cpp
@@ -166,31 +166,30 @@
                 }
             } else {
                 // matrix from vector or scalar
-                int count = 0;
-                const int startIndex = index;
                 int nodeComps = node->getType().computeNumComponents();
-                for (int i = startIndex; i < endIndex; i++) {
-                    if (i >= instanceSize)
-                        return;
-                    if (nodeComps == 1) {
-                        // If there is a single scalar parameter to a matrix
-                        // constructor, it is used to initialize all the
-                        // components on the matrix's diagonal, with the
-                        // remaining components initialized to 0.0.
-                        if (i == startIndex || (i - startIndex) % (matrixRows + 1) == 0 )
-                            leftUnionArray[i] = rightUnionArray[count];
-                        else
-                            leftUnionArray[i].setDConst(0.0);
-                    } else {
+                if (nodeComps == 1) {
+                    for (int c = 0; c < matrixCols; ++c) {
+                        for (int r = 0; r < matrixRows; ++r) {
+                            if (r == c)
+                                leftUnionArray[index] = rightUnionArray[0];
+                            else
+                                leftUnionArray[index].setDConst(0.0);
+                            index++;
+                        }
+                    }
+                } else {
+                    int count = 0;
+                    for (int i = index; i < endIndex; i++) {
+                        if (i >= instanceSize)
+                            return;
+
                         // construct the matrix in column-major order, from
                         // the components provided, in order
                         leftUnionArray[i] = rightUnionArray[count];
-                    }
 
-                    index++;
-
-                    if (nodeComps > 1)
+                        index++;
                         count++;
+                    }
                 }
             }
         }
diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp
index e0f44f8..ad11792 100644
--- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp
+++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp
@@ -1191,9 +1191,11 @@
             // HLSL allows string literals.
             // GLSL allows string literals with GL_EXT_debug_printf.
             if (ifdepth == 0 && parseContext.intermediate.getSource() != EShSourceHlsl) {
-                parseContext.requireExtensions(ppToken.loc, 1, &E_GL_EXT_debug_printf, "string literal");
-                if (!parseContext.extensionTurnedOn(E_GL_EXT_debug_printf))
-                    continue;
+              const char* const string_literal_EXTs[] = { E_GL_EXT_debug_printf, E_GL_EXT_spirv_intrinsics };
+              parseContext.requireExtensions(ppToken.loc, 2, string_literal_EXTs, "string literal");
+              if (!parseContext.extensionTurnedOn(E_GL_EXT_debug_printf) &&
+                  !parseContext.extensionTurnedOn(E_GL_EXT_spirv_intrinsics))
+                  continue;
             }
             break;
         case '\'':
diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt
index 354a3e9..d521da1 100644
--- a/glslang/OSDependent/Unix/CMakeLists.txt
+++ b/glslang/OSDependent/Unix/CMakeLists.txt
@@ -56,4 +56,4 @@
     install(TARGETS OSDependent EXPORT OSDependentTargets
             ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 	install(EXPORT OSDependentTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
-endif(ENABLE_GLSLANG_INSTALL)
+endif()
diff --git a/glslang/OSDependent/Unix/ossource.cpp b/glslang/OSDependent/Unix/ossource.cpp
index 3f029f0..81da99c 100644
--- a/glslang/OSDependent/Unix/ossource.cpp
+++ b/glslang/OSDependent/Unix/ossource.cpp
@@ -172,7 +172,7 @@
     pthread_mutex_t gMutex;
 }
 
-void InitGlobalLock()
+static void InitMutex(void)
 {
   pthread_mutexattr_t mutexattr;
   pthread_mutexattr_init(&mutexattr);
@@ -180,6 +180,12 @@
   pthread_mutex_init(&gMutex, &mutexattr);
 }
 
+void InitGlobalLock()
+{
+  static pthread_once_t once = PTHREAD_ONCE_INIT;
+  pthread_once(&once, InitMutex);
+}
+
 void GetGlobalLock()
 {
   pthread_mutex_lock(&gMutex);
diff --git a/glslang/OSDependent/Web/CMakeLists.txt b/glslang/OSDependent/Web/CMakeLists.txt
index 0f60dbc..5bfbed4 100644
--- a/glslang/OSDependent/Web/CMakeLists.txt
+++ b/glslang/OSDependent/Web/CMakeLists.txt
@@ -55,7 +55,7 @@
 
         if(ENABLE_EMSCRIPTEN_SINGLE_FILE)
             target_link_libraries(glslang.js "-s SINGLE_FILE=1")
-        endif(ENABLE_EMSCRIPTEN_SINGLE_FILE)
+        endif()
 
         if(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE)
             target_link_libraries(glslang.js "-s ENVIRONMENT=node -s BINARYEN_ASYNC_COMPILATION=0")
@@ -67,5 +67,5 @@
             add_custom_command(TARGET glslang.js POST_BUILD
                 COMMAND cat ${CMAKE_CURRENT_SOURCE_DIR}/glslang.after.js >> ${CMAKE_CURRENT_BINARY_DIR}/glslang.js)
         endif()
-    endif(EMSCRIPTEN)
-endif(ENABLE_GLSLANG_JS)
+    endif()
+endif()
diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt
index 9cf1b7f..21d603e 100644
--- a/glslang/OSDependent/Windows/CMakeLists.txt
+++ b/glslang/OSDependent/Windows/CMakeLists.txt
@@ -45,10 +45,10 @@
 
 if(WIN32)
     source_group("Source" FILES ${SOURCES})
-endif(WIN32)
+endif()
 
 if(ENABLE_GLSLANG_INSTALL)
     install(TARGETS OSDependent EXPORT OSDependentTargets
             ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
 	install(EXPORT OSDependentTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
-endif(ENABLE_GLSLANG_INSTALL)
+endif()
diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h
index 14683da..d2a4bf4 100644
--- a/glslang/Public/ShaderLang.h
+++ b/glslang/Public/ShaderLang.h
@@ -508,7 +508,7 @@
     //
     // setEnvInput:    The input source language and stage. If generating code for a
     //                 specific client, the input client semantics to use and the
-    //                 version of the that client's input semantics to use, otherwise
+    //                 version of that client's input semantics to use, otherwise
     //                 use EShClientNone and version of 0, e.g. for validation mode.
     //                 Note 'version' does not describe the target environment,
     //                 just the version of the source dialect to compile under.
@@ -722,7 +722,7 @@
 public:
     GLSLANG_EXPORT TObjectReflection(const std::string& pName, const TType& pType, int pOffset, int pGLDefineType, int pSize, int pIndex);
 
-    GLSLANG_EXPORT const TType* getType() const { return type; }
+    const TType* getType() const { return type; }
     GLSLANG_EXPORT int getBinding() const;
     GLSLANG_EXPORT void dump() const;
     static TObjectReflection badReflection() { return TObjectReflection(); }
diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp
index 8885b29..f9680dd 100644
--- a/gtests/AST.FromFile.cpp
+++ b/gtests/AST.FromFile.cpp
@@ -281,6 +281,12 @@
         "terminate.frag",
         "terminate.vert",
         "negativeWorkGroupSize.comp",
+        "textureoffset_sampler2darrayshadow.vert",
+        "atomicAdd.comp",
+        "GL_ARB_gpu_shader5.u2i.vert",
+        "atomicCounterARBOps.vert",
+        "GL_EXT_shader_integer_mix.vert",
+        "GL_ARB_draw_instanced.vert",
     })),
     FileNameAsCustomTestSuffix
 );
diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt
index 74c9809..c8f0282 100644
--- a/gtests/CMakeLists.txt
+++ b/gtests/CMakeLists.txt
@@ -47,6 +47,7 @@
             # Test related source files
             ${CMAKE_CURRENT_SOURCE_DIR}/AST.FromFile.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/BuiltInResource.FromFile.cpp
+            ${CMAKE_CURRENT_SOURCE_DIR}/Common.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/Config.FromFile.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/HexFloat.cpp
             ${CMAKE_CURRENT_SOURCE_DIR}/Hlsl.FromFile.cpp
@@ -71,7 +72,7 @@
             install(TARGETS glslangtests EXPORT glslangtestsTargets
                     RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})
 			install(EXPORT glslangtestsTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
-        endif(ENABLE_GLSLANG_INSTALL)
+        endif()
 
         set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test")
         # Supply a default test root directory, so that manual testing
@@ -89,7 +90,7 @@
             target_include_directories(glslangtests
                 PRIVATE ${spirv-tools_SOURCE_DIR}/include
             )
-        endif(ENABLE_OPT)
+        endif()
 
         set(LIBRARIES
             glslang OSDependent OGLCompiler glslang
@@ -101,7 +102,7 @@
 
         if(ENABLE_HLSL)
             set(LIBRARIES ${LIBRARIES} HLSL)
-        endif(ENABLE_HLSL)
+        endif()
         target_link_libraries(glslangtests PRIVATE ${LIBRARIES} gmock)
 
         add_test(NAME glslang-gtests
diff --git a/gtests/Common.cpp b/gtests/Common.cpp
new file mode 100644
index 0000000..0b70a83
--- /dev/null
+++ b/gtests/Common.cpp
@@ -0,0 +1,165 @@
+// Copyright (c) 2021 Google LLC
+//
+// 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
+//
+//     http://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.
+
+#include <cstdint>
+
+#include <gmock/gmock.h>
+#include "glslang/Include/Common.h"
+
+namespace {
+
+TEST(IsPow2, Int_Negative) {
+  EXPECT_EQ(false, glslang::IsPow2(-5));
+  EXPECT_EQ(false, glslang::IsPow2(-1));
+  EXPECT_EQ(false, glslang::IsPow2(INT_MIN));
+  EXPECT_EQ(false, glslang::IsPow2(int64_t(-10)));
+}
+
+TEST(IsPow2, Zero) {
+  EXPECT_EQ(false, glslang::IsPow2(0));
+  EXPECT_EQ(false, glslang::IsPow2(0u));
+  EXPECT_EQ(false, glslang::IsPow2(0));
+  EXPECT_EQ(false, glslang::IsPow2(uint64_t(0)));
+  EXPECT_EQ(false, glslang::IsPow2(int64_t(0)));
+}
+
+TEST(IsPow2, Int_Positive_PowersOf2) {
+  EXPECT_EQ(true, glslang::IsPow2(1));
+  EXPECT_EQ(true, glslang::IsPow2(2));
+  EXPECT_EQ(true, glslang::IsPow2(4));
+  EXPECT_EQ(true, glslang::IsPow2(8));
+  EXPECT_EQ(true, glslang::IsPow2(16));
+  EXPECT_EQ(true, glslang::IsPow2(32768));
+  EXPECT_EQ(true, glslang::IsPow2(65536));
+  EXPECT_EQ(true, glslang::IsPow2(2147483648));
+}
+
+TEST(IsPow2, Int_Positive_NonPowersOf2) {
+  EXPECT_EQ(false, glslang::IsPow2(3));
+  EXPECT_EQ(false, glslang::IsPow2(5));
+  EXPECT_EQ(false, glslang::IsPow2(2147483647));
+}
+
+TEST(IsPow2, Uint_Positive_PowersOf2) {
+  EXPECT_EQ(true, glslang::IsPow2(1u));
+  EXPECT_EQ(true, glslang::IsPow2(2u));
+  EXPECT_EQ(true, glslang::IsPow2(4u));
+  EXPECT_EQ(true, glslang::IsPow2(8u));
+  EXPECT_EQ(true, glslang::IsPow2(16u));
+  EXPECT_EQ(true, glslang::IsPow2(32768u));
+  EXPECT_EQ(true, glslang::IsPow2(65536u));
+  EXPECT_EQ(true, glslang::IsPow2(2147483648u));
+}
+
+TEST(IsPow2, Uint_Positive_NonPowersOf2) {
+  EXPECT_EQ(false, glslang::IsPow2(3u));
+  EXPECT_EQ(false, glslang::IsPow2(5u));
+  EXPECT_EQ(false, glslang::IsPow2(2147483647u));
+}
+
+TEST(IntLog2, Int) {
+  EXPECT_EQ(0, glslang::IntLog2(1));
+  EXPECT_EQ(1, glslang::IntLog2(2));
+  EXPECT_EQ(2, glslang::IntLog2(4));
+  EXPECT_EQ(3, glslang::IntLog2(8));
+  EXPECT_EQ(4, glslang::IntLog2(16));
+  EXPECT_EQ(5, glslang::IntLog2(32));
+  EXPECT_EQ(6, glslang::IntLog2(64));
+  EXPECT_EQ(7, glslang::IntLog2(128));
+  EXPECT_EQ(8, glslang::IntLog2(256));
+  EXPECT_EQ(9, glslang::IntLog2(512));
+  EXPECT_EQ(10, glslang::IntLog2(1024));
+  EXPECT_EQ(11, glslang::IntLog2(2048));
+  EXPECT_EQ(12, glslang::IntLog2(0x1000));
+  EXPECT_EQ(13, glslang::IntLog2(0x2000));
+  EXPECT_EQ(14, glslang::IntLog2(0x4000));
+  EXPECT_EQ(15, glslang::IntLog2(0x8000));
+  EXPECT_EQ(16, glslang::IntLog2(0x10000));
+  EXPECT_EQ(17, glslang::IntLog2(0x20000));
+  EXPECT_EQ(18, glslang::IntLog2(0x40000));
+  EXPECT_EQ(19, glslang::IntLog2(0x80000));
+  EXPECT_EQ(20, glslang::IntLog2(0x100000));
+  EXPECT_EQ(21, glslang::IntLog2(0x200000));
+  EXPECT_EQ(22, glslang::IntLog2(0x400000));
+  EXPECT_EQ(23, glslang::IntLog2(0x800000));
+  EXPECT_EQ(24, glslang::IntLog2(0x1000000));
+  EXPECT_EQ(25, glslang::IntLog2(0x2000000));
+  EXPECT_EQ(26, glslang::IntLog2(0x4000000));
+  EXPECT_EQ(27, glslang::IntLog2(0x8000000));
+  EXPECT_EQ(28, glslang::IntLog2(0x10000000));
+  EXPECT_EQ(29, glslang::IntLog2(0x20000000));
+  EXPECT_EQ(30, glslang::IntLog2(0x40000000));
+}
+
+TEST(IntLog2, Uint) {
+  EXPECT_EQ(0, glslang::IntLog2(1u));
+  EXPECT_EQ(1, glslang::IntLog2(2u));
+  EXPECT_EQ(2, glslang::IntLog2(4u));
+  EXPECT_EQ(3, glslang::IntLog2(8u));
+  EXPECT_EQ(4, glslang::IntLog2(16u));
+  EXPECT_EQ(5, glslang::IntLog2(32u));
+  EXPECT_EQ(6, glslang::IntLog2(64u));
+  EXPECT_EQ(7, glslang::IntLog2(128u));
+  EXPECT_EQ(8, glslang::IntLog2(256u));
+  EXPECT_EQ(9, glslang::IntLog2(512u));
+  EXPECT_EQ(10, glslang::IntLog2(1024u));
+  EXPECT_EQ(11, glslang::IntLog2(2048u));
+  EXPECT_EQ(12, glslang::IntLog2(0x1000u));
+  EXPECT_EQ(13, glslang::IntLog2(0x2000u));
+  EXPECT_EQ(14, glslang::IntLog2(0x4000u));
+  EXPECT_EQ(15, glslang::IntLog2(0x8000u));
+  EXPECT_EQ(16, glslang::IntLog2(0x10000u));
+  EXPECT_EQ(17, glslang::IntLog2(0x20000u));
+  EXPECT_EQ(18, glslang::IntLog2(0x40000u));
+  EXPECT_EQ(19, glslang::IntLog2(0x80000u));
+  EXPECT_EQ(20, glslang::IntLog2(0x100000u));
+  EXPECT_EQ(21, glslang::IntLog2(0x200000u));
+  EXPECT_EQ(22, glslang::IntLog2(0x400000u));
+  EXPECT_EQ(23, glslang::IntLog2(0x800000u));
+  EXPECT_EQ(24, glslang::IntLog2(0x1000000u));
+  EXPECT_EQ(25, glslang::IntLog2(0x2000000u));
+  EXPECT_EQ(26, glslang::IntLog2(0x4000000u));
+  EXPECT_EQ(27, glslang::IntLog2(0x8000000u));
+  EXPECT_EQ(28, glslang::IntLog2(0x10000000u));
+  EXPECT_EQ(29, glslang::IntLog2(0x20000000u));
+  EXPECT_EQ(30, glslang::IntLog2(0x40000000u));
+  EXPECT_EQ(31, glslang::IntLog2(0x80000000u));
+}
+
+TEST(IntLog2, Int64) {
+  EXPECT_EQ(0, glslang::IntLog2(int64_t(1)));
+  EXPECT_EQ(1, glslang::IntLog2(int64_t(2)));
+  EXPECT_EQ(2, glslang::IntLog2(int64_t(4)));
+  EXPECT_EQ(3, glslang::IntLog2(int64_t(8)));
+  EXPECT_EQ(30, glslang::IntLog2(int64_t(0x40000000u)));
+  EXPECT_EQ(31, glslang::IntLog2(int64_t(0x80000000u)));
+  EXPECT_EQ(32, glslang::IntLog2(int64_t(0x10000) * int64_t(0x10000)));
+  EXPECT_EQ(48, glslang::IntLog2(int64_t(0x10000) * int64_t(0x10000) * int64_t(0x10000)));
+  EXPECT_EQ(62, glslang::IntLog2(int64_t(0x10000) * int64_t(0x10000) * int64_t(0x10000) * int64_t(0x4000)));
+}
+
+TEST(IntLog2, Uint64) {
+  EXPECT_EQ(0, glslang::IntLog2(uint64_t(1)));
+  EXPECT_EQ(1, glslang::IntLog2(uint64_t(2)));
+  EXPECT_EQ(2, glslang::IntLog2(uint64_t(4)));
+  EXPECT_EQ(3, glslang::IntLog2(uint64_t(8)));
+  EXPECT_EQ(30, glslang::IntLog2(uint64_t(0x40000000u)));
+  EXPECT_EQ(31, glslang::IntLog2(uint64_t(0x80000000u)));
+  EXPECT_EQ(32, glslang::IntLog2(uint64_t(0x10000) * uint64_t(0x10000)));
+  EXPECT_EQ(48, glslang::IntLog2(uint64_t(0x10000) * uint64_t(0x10000) * uint64_t(0x10000)));
+  EXPECT_EQ(62, glslang::IntLog2(uint64_t(0x10000) * uint64_t(0x10000) * uint64_t(0x10000) * uint64_t(0x4000)));
+  EXPECT_EQ(63, glslang::IntLog2(uint64_t(0x10000) * uint64_t(0x10000) * uint64_t(0x10000) * uint64_t(0x8000)));
+}
+
+}  // anonymous namespace
diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp
index 33deef5..5e1cbda 100644
--- a/gtests/Hlsl.FromFile.cpp
+++ b/gtests/Hlsl.FromFile.cpp
@@ -235,6 +235,7 @@
         {"hlsl.groupid.comp", "main"},
         {"hlsl.identifier.sample.frag", "main"},
         {"hlsl.if.frag", "PixelShaderFunction"},
+        {"hlsl.imageload-subvec4.comp", "main"},
         {"hlsl.imagefetch-subvec4.comp", "main"},
         {"hlsl.implicitBool.frag", "main"},
         {"hlsl.inf.vert", "main"},
diff --git a/gtests/Link.FromFile.cpp b/gtests/Link.FromFile.cpp
index 29590c0..9e029fc 100644
--- a/gtests/Link.FromFile.cpp
+++ b/gtests/Link.FromFile.cpp
@@ -106,6 +106,9 @@
         {"link.multiAnonBlocksValid.0.0.vert", "link.multiAnonBlocksValid.0.1.vert"},
         {"link.multiBlocksInvalid.0.0.vert", "link.multiBlocksInvalid.0.1.vert"},
         {"link.multiBlocksValid.1.0.vert", "link.multiBlocksValid.1.1.vert"},
+        {"link.tesselation.vert", "link.tesselation.frag"},
+        {"link.tesselation.tese", "link.tesselation.tesc"},
+        {"link.redeclareBuiltin.vert", "link.redeclareBuiltin.geom"},
     }))
 );
 // clang-format on
diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
index 5456fb8..ef11764 100644
--- a/gtests/Spv.FromFile.cpp
+++ b/gtests/Spv.FromFile.cpp
@@ -77,6 +77,7 @@
 using GlslIoMap = GlslangTest<::testing::TestWithParam<IoMapData>>;
 using CompileVulkanToSpirvTestAMD = GlslangTest<::testing::TestWithParam<std::string>>;
 using CompileVulkanToSpirvTestNV = GlslangTest<::testing::TestWithParam<std::string>>;
+using CompileVulkanToSpirv14TestNV = GlslangTest<::testing::TestWithParam<std::string>>;
 using CompileUpgradeTextureToSampledTextureAndDropSamplersTest = GlslangTest<::testing::TestWithParam<std::string>>;
 
 // Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully
@@ -204,6 +205,13 @@
                             Target::Spv);
 }
 
+TEST_P(CompileVulkanToSpirv14TestNV, FromFile)
+{
+    loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
+                            Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_1, glslang::EShTargetSpv_1_4,
+                            Target::Spv);
+}
+
 TEST_P(CompileUpgradeTextureToSampledTextureAndDropSamplersTest, FromFile)
 {
     loadCompileUpgradeTextureToSampledTextureAndDropSamplersAndCheck(GlobalTestSettings.testRoot,
@@ -351,10 +359,21 @@
         "spv.functionSemantics.frag",
         "spv.functionParameterTypes.frag",
         "spv.GeometryShaderPassthrough.geom",
+        "spv.funcall.array.frag",
+        "spv.load.bool.array.interface.block.frag",
         "spv.interpOps.frag",
         "spv.int64.frag",
         "spv.intcoopmat.comp",
         "spv.intOps.vert",
+        "spv.intrinsicsSpecConst.vert",
+        "spv.intrinsicsSpirvByReference.vert",
+        "spv.intrinsicsSpirvDecorate.frag",
+        "spv.intrinsicsSpirvExecutionMode.frag",
+        "spv.intrinsicsSpirvInstruction.vert",
+        "spv.intrinsicsSpirvLiteral.vert",
+        "spv.intrinsicsSpirvStorageClass.rchit",
+        "spv.intrinsicsSpirvType.rgen",
+        "spv.invariantAll.vert",
         "spv.layer.tese",
         "spv.layoutNested.vert",
         "spv.length.frag",
@@ -442,6 +461,7 @@
         "spv.specConstant.int8.comp",
         "spv.storageBuffer.vert",
         "spv.terminate.frag",
+        "spv.subgroupUniformControlFlow.vert",
         "spv.precise.tese",
         "spv.precise.tesc",
         "spv.viewportindex.tese",
@@ -456,6 +476,7 @@
         "spv.smBuiltins.frag",
         "spv.builtin.PrimitiveShadingRateEXT.vert",
         "spv.builtin.ShadingRateEXT.frag",
+        "spv.atomicAdd.bufferReference.comp"
     })),
     FileNameAsCustomTestSuffix
 );
@@ -555,6 +576,8 @@
         "spv.1.4.OpCopyLogical.comp",
         "spv.1.4.OpCopyLogicalBool.comp",
         "spv.1.4.OpCopyLogical.funcall.frag",
+        "spv.1.4.funcall.array.frag",
+        "spv.1.4.load.bool.array.interface.block.frag",
         "spv.1.4.image.frag",
         "spv.1.4.sparseTexture.frag",
         "spv.1.4.texture.frag",
@@ -752,6 +775,17 @@
 );
 
 INSTANTIATE_TEST_SUITE_P(
+    Glsl, CompileVulkanToSpirv14TestNV,
+    ::testing::ValuesIn(std::vector<std::string>({
+    "spv.RayGenShaderMotion.rgen",
+    "spv.IntersectShaderMotion.rint",
+    "spv.AnyHitShaderMotion.rahit",
+    "spv.ClosestHitShaderMotion.rchit",
+    "spv.MissShaderMotion.rmiss",
+})),
+FileNameAsCustomTestSuffix
+);
+INSTANTIATE_TEST_SUITE_P(
     Glsl, CompileUpgradeTextureToSampledTextureAndDropSamplersTest,
     ::testing::ValuesIn(std::vector<std::string>({
       "spv.texture.sampler.transform.frag",
diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt
index 62faa19..7d5bc15 100644
--- a/hlsl/CMakeLists.txt
+++ b/hlsl/CMakeLists.txt
@@ -56,4 +56,4 @@
                 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
     endif()
 	install(EXPORT HLSLTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
-endif(ENABLE_GLSLANG_INSTALL)
+endif()
diff --git a/known_good.json b/known_good.json
index e69a3ae..96c27de 100644
--- a/known_good.json
+++ b/known_good.json
@@ -5,14 +5,14 @@
       "site" : "github",
       "subrepo" : "KhronosGroup/SPIRV-Tools",
       "subdir" : "External/spirv-tools",
-      "commit" : "48007a5c7f7cc671b391bebd46e87fd6edc6c24b"
+      "commit" : "21e3f681e2004590c7865bc8c0195a4ab8e66c88"
     },
     {
       "name" : "spirv-tools/external/spirv-headers",
       "site" : "github",
       "subrepo" : "KhronosGroup/SPIRV-Headers",
       "subdir" : "External/spirv-tools/external/spirv-headers",
-      "commit" : "f88a1f98fa7a44ccfcf33d810c72b200e7d9a78a"
+      "commit" : "814e728b30ddd0f4509233099a3ad96fd4318c07"
     }
   ]
 }