Merge pull request #2685 from kevin-mccullough/FixIsIoResizeArrayTesselationStageHandling

Fix isIoResizeArray() tessellation stage handling
diff --git a/CHANGES.md b/CHANGES.md
index 27b002e..ad4fa40 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -3,6 +3,17 @@
 All notable changes to this project will be documented in this file.
 This project adheres to [Semantic Versioning](https://semver.org/).
 
+## 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
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0600516..c318eef 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -138,7 +138,8 @@
 
 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)
     add_definitions(-DGLSLANG_OSINCLUDE_WIN32)
@@ -197,7 +198,7 @@
     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
+        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()
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 c767ab6..71b00d7 100644
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -179,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);
@@ -1032,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:
@@ -2231,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.
@@ -2974,6 +3022,7 @@
     case glslang::EOpIgnoreIntersectionNV:
     case glslang::EOpTerminateRayNV:
     case glslang::EOpTraceNV:
+    case glslang::EOpTraceRayMotionNV:
     case glslang::EOpTraceKHR:
     case glslang::EOpExecuteCallableNV:
     case glslang::EOpExecuteCallableKHR:
@@ -3273,9 +3322,11 @@
                 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);
@@ -3333,7 +3384,7 @@
         const auto& spirvInst = node->getSpirvInstruction();
         if (spirvInst.set == "") {
             std::vector<spv::IdImmediate> idImmOps;
-            for (int i = 0; i < glslangOperands.size(); ++i) {
+            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;
@@ -4356,7 +4407,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++) {
@@ -4414,10 +4464,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,
@@ -4560,19 +4606,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;
@@ -5290,7 +5324,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
@@ -8292,6 +8329,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;
diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp
index 0482c5a..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
@@ -2794,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/doc.cpp b/SPIRV/doc.cpp
index 31b20a1..dbdf707 100644
--- a/SPIRV/doc.cpp
+++ b/SPIRV/doc.cpp
@@ -426,6 +426,7 @@
     case BuiltInSMCountNV:              return "SMCountNV";
     case BuiltInWarpIDNV:               return "WarpIDNV";
     case BuiltInSMIDNV:                 return "SMIDNV";
+    case BuiltInCurrentRayTimeNV:       return "CurrentRayTimeNV";
 
     default: return "Bad";
     }
@@ -916,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";
@@ -1382,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";
@@ -2812,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 317db81..e0fe249 100644
--- a/SPIRV/spirv.hpp
+++ b/SPIRV/spirv.hpp
@@ -652,6 +652,7 @@
     BuiltInHitTNV = 5332,
     BuiltInHitKindKHR = 5333,
     BuiltInHitKindNV = 5333,
+    BuiltInCurrentRayTimeNV = 5334,
     BuiltInIncomingRayFlagsKHR = 5351,
     BuiltInIncomingRayFlagsNV = 5351,
     BuiltInRayGeometryIndexKHR = 5352,
@@ -988,6 +989,7 @@
     CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
     CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
     CapabilityRayTracingNV = 5340,
+    CapabilityRayTracingMotionBlurNV = 5341,
     CapabilityVulkanMemoryModel = 5345,
     CapabilityVulkanMemoryModelKHR = 5345,
     CapabilityVulkanMemoryModelDeviceScope = 5346,
@@ -1503,6 +1505,8 @@
     OpIgnoreIntersectionNV = 5335,
     OpTerminateRayNV = 5336,
     OpTraceNV = 5337,
+    OpTraceMotionNV = 5338,
+    OpTraceRayMotionNV = 5339,
     OpTypeAccelerationStructureKHR = 5341,
     OpTypeAccelerationStructureNV = 5341,
     OpExecuteCallableNV = 5344,
@@ -2090,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;
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index c6dc597..e62f92f 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -347,13 +347,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++]);
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/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/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/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/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/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.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.partialFlattenLocal.vert.out b/Test/baseResults/hlsl.partialFlattenLocal.vert.out
index 12a6065..7bcc879 100644
--- a/Test/baseResults/hlsl.partialFlattenLocal.vert.out
+++ b/Test/baseResults/hlsl.partialFlattenLocal.vert.out
@@ -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.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 e76d597..8e4716b 100644
--- a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
+++ b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
@@ -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.vec2.bracket.frag.out b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
index c8d10e6..1f77a77 100644
--- a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
+++ b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
@@ -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.samplebias.offset.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
index 478091d..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)
@@ -56,10 +56,10 @@
 0:35              0.100000
 0:35              0.200000
 0:35            Constant:
-0:35              0.500000
-0:35            Constant:
 0:35              1 (const int)
 0:35              0 (const int)
+0:35            Constant:
+0:35              0.500000
 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)
@@ -71,10 +71,10 @@
 0:36              0.300000
 0:36              0.400000
 0:36            Constant:
-0:36              0.500000
+0:36              1 (const int)
+0:36              1 (const int)
 0:36            Constant:
-0:36              1 (const int)
-0:36              1 (const int)
+0:36              0.500000
 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)
@@ -86,10 +86,10 @@
 0:37              0.500000
 0:37              0.600000
 0:37            Constant:
-0:37              0.500000
-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)
@@ -102,11 +102,11 @@
 0:39              0.200000
 0:39              0.300000
 0:39            Constant:
-0:39              0.500000
-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: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,11 +119,11 @@
 0:40              0.500000
 0:40              0.600000
 0:40            Constant:
-0:40              0.500000
+0:40              1 (const int)
+0:40              1 (const int)
+0:40              1 (const int)
 0:40            Constant:
-0:40              1 (const int)
-0:40              1 (const int)
-0:40              1 (const int)
+0:40              0.500000
 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)
@@ -136,11 +136,11 @@
 0:41              0.800000
 0:41              0.900000
 0:41            Constant:
-0:41              0.500000
-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: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)
@@ -258,10 +258,10 @@
 0:35              0.100000
 0:35              0.200000
 0:35            Constant:
-0:35              0.500000
-0:35            Constant:
 0:35              1 (const int)
 0:35              0 (const int)
+0:35            Constant:
+0:35              0.500000
 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)
@@ -273,10 +273,10 @@
 0:36              0.300000
 0:36              0.400000
 0:36            Constant:
-0:36              0.500000
+0:36              1 (const int)
+0:36              1 (const int)
 0:36            Constant:
-0:36              1 (const int)
-0:36              1 (const int)
+0:36              0.500000
 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)
@@ -288,10 +288,10 @@
 0:37              0.500000
 0:37              0.600000
 0:37            Constant:
-0:37              0.500000
-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)
@@ -304,11 +304,11 @@
 0:39              0.200000
 0:39              0.300000
 0:39            Constant:
-0:39              0.500000
-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: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)
@@ -321,11 +321,11 @@
 0:40              0.500000
 0:40              0.600000
 0:40            Constant:
-0:40              0.500000
+0:40              1 (const int)
+0:40              1 (const int)
+0:40              1 (const int)
 0:40            Constant:
-0:40              1 (const int)
-0:40              1 (const int)
-0:40              1 (const int)
+0:40              0.500000
 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)
@@ -338,11 +338,11 @@
 0:41              0.800000
 0:41              0.900000
 0:41            Constant:
-0:41              0.500000
-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: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 f5aff67..a5bb613 100644
--- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
@@ -17,9 +17,9 @@
 0:23              0.100000
 0:23              0.200000
 0:23            Constant:
-0:23              0.500000
-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)
@@ -31,9 +31,9 @@
 0:24              0.200000
 0:24              0.300000
 0:24            Constant:
-0:24              0.500000
-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)
@@ -45,9 +45,9 @@
 0:25              0.300000
 0:25              0.400000
 0:25            Constant:
-0:25              0.500000
-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)
@@ -60,10 +60,10 @@
 0:27              0.200000
 0:27              0.300000
 0:27            Constant:
-0:27              0.500000
+0:27              0 (const int)
+0:27              0 (const int)
 0:27            Constant:
-0:27              0 (const int)
-0:27              0 (const int)
+0:27              0.500000
 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)
@@ -76,10 +76,10 @@
 0:28              0.400000
 0:28              0.500000
 0:28            Constant:
-0:28              0.500000
+0:28              0 (const int)
+0:28              0 (const int)
 0:28            Constant:
-0:28              0 (const int)
-0:28              0 (const int)
+0:28              0.500000
 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)
@@ -92,10 +92,10 @@
 0:29              0.600000
 0:29              0.700000
 0:29            Constant:
-0:29              0.500000
-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})
@@ -168,9 +168,9 @@
 0:23              0.100000
 0:23              0.200000
 0:23            Constant:
-0:23              0.500000
-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)
@@ -182,9 +182,9 @@
 0:24              0.200000
 0:24              0.300000
 0:24            Constant:
-0:24              0.500000
-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)
@@ -196,9 +196,9 @@
 0:25              0.300000
 0:25              0.400000
 0:25            Constant:
-0:25              0.500000
-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)
@@ -211,10 +211,10 @@
 0:27              0.200000
 0:27              0.300000
 0:27            Constant:
-0:27              0.500000
+0:27              0 (const int)
+0:27              0 (const int)
 0:27            Constant:
-0:27              0 (const int)
-0:27              0 (const int)
+0:27              0.500000
 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)
@@ -227,10 +227,10 @@
 0:28              0.400000
 0:28              0.500000
 0:28            Constant:
-0:28              0.500000
+0:28              0 (const int)
+0:28              0 (const int)
 0:28            Constant:
-0:28              0 (const int)
-0:28              0 (const int)
+0:28              0.500000
 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)
@@ -243,10 +243,10 @@
 0:29              0.600000
 0:29              0.700000
 0:29            Constant:
-0:29              0.500000
-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.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.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/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/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.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.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..dfcfc2d 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 532
 
                               Capability Shader
                               Capability Float16
@@ -83,53 +83,53 @@
                               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"
+                              Name 518  "S"
+                              MemberName 518(S) 0  "x"
+                              MemberName 518(S) 1  "y"
+                              MemberName 518(S) 2  "z"
+                              Name 520  "B1"
+                              MemberName 520(B1) 0  "a"
+                              MemberName 520(B1) 1  "b"
+                              MemberName 520(B1) 2  "c"
+                              MemberName 520(B1) 3  "d"
+                              MemberName 520(B1) 4  "e"
+                              MemberName 520(B1) 5  "f"
+                              MemberName 520(B1) 6  "g"
+                              MemberName 520(B1) 7  "h"
+                              Name 522  ""
+                              Name 523  "sf16"
+                              Name 525  "sf"
+                              Name 526  "sd"
+                              Name 527  "f16_to_f"
+                              Name 529  "f16_to_d"
+                              Name 530  "f_to_f16"
+                              Name 531  "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
+                              Decorate 516 ArrayStride 16
+                              Decorate 517 ArrayStride 64
+                              MemberDecorate 518(S) 0 Offset 0
+                              MemberDecorate 518(S) 1 Offset 16
+                              MemberDecorate 518(S) 2 Offset 32
+                              Decorate 519 ArrayStride 64
+                              MemberDecorate 520(B1) 0 Offset 0
+                              MemberDecorate 520(B1) 1 Offset 16
+                              MemberDecorate 520(B1) 2 Offset 32
+                              MemberDecorate 520(B1) 3 Offset 64
+                              MemberDecorate 520(B1) 4 ColMajor
+                              MemberDecorate 520(B1) 4 Offset 96
+                              MemberDecorate 520(B1) 4 MatrixStride 32
+                              MemberDecorate 520(B1) 5 ColMajor
+                              MemberDecorate 520(B1) 5 Offset 160
+                              MemberDecorate 520(B1) 5 MatrixStride 32
+                              MemberDecorate 520(B1) 6 Offset 288
+                              MemberDecorate 520(B1) 7 Offset 352
+                              Decorate 520(B1) Block
+                              Decorate 522 DescriptorSet 0
+                              Decorate 522 Binding 0
+                              Decorate 523(sf16) SpecId 100
+                              Decorate 525(sf) SpecId 101
+                              Decorate 526(sd) SpecId 102
                2:             TypeVoid
                3:             TypeFunction 2
               26:             TypeFloat 64
@@ -195,26 +195,26 @@
              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)
+             505:    182(int) Constant 1
+             512:26(float64_t) Constant 0 1071644672
+             513: 27(f64vec2) ConstantComposite 512 512
+             515:     31(int) Constant 2
+             516:             TypeArray 26(float64_t) 515
+             517:             TypeArray 402 515
+          518(S):             TypeStruct 26(float64_t) 27(f64vec2) 149(f64vec3)
+             519:             TypeArray 518(S) 515
+         520(B1):             TypeStruct 26(float64_t) 27(f64vec2) 149(f64vec3) 516 402 517 518(S) 519
+             521:             TypePointer Uniform 520(B1)
+             522:    521(ptr) Variable Uniform
+       523(sf16):162(float16_t) SpecConstant 12288
+             524:             TypeFloat 32
+         525(sf):  524(float) SpecConstant 1048576000
+         526(sd):26(float64_t) SpecConstant 0 1071644672
+   527(f16_to_f):  524(float) SpecConstantOp 115 523(sf16)
+             528:  524(float) SpecConstantOp 115 523(sf16)
+   529(f16_to_d):26(float64_t) SpecConstantOp 115 528
+   530(f_to_f16):162(float16_t) SpecConstantOp 115 525(sf)
+   531(d_to_f16):162(float16_t) SpecConstantOp 115 526(sd)
          4(main):           2 Function None 3
                5:             Label
                               Return
@@ -754,45 +754,57 @@
              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
+             474:     33(ptr) AccessChain 459(f64v) 32
+             475:26(float64_t) CompositeExtract 473 0
+                              Store 474 475
+             476:     33(ptr) AccessChain 459(f64v) 88
+             477:26(float64_t) CompositeExtract 473 1
+                              Store 476 477
+             478:149(f64vec3) Load 461(if64v)
+             479: 27(f64vec2) VectorShuffle 478 478 0 1
+             480: 27(f64vec2) DPdyFine 479
+             481:     33(ptr) AccessChain 459(f64v) 32
+             482:26(float64_t) CompositeExtract 480 0
+                              Store 481 482
+             483:     33(ptr) AccessChain 459(f64v) 88
+             484:26(float64_t) CompositeExtract 480 1
+                              Store 483 484
+             485:149(f64vec3) Load 461(if64v)
+             486:149(f64vec3) DPdxCoarse 485
+                              Store 459(f64v) 486
+             487:149(f64vec3) Load 461(if64v)
+             488:149(f64vec3) DPdxCoarse 487
+                              Store 459(f64v) 488
+             489:    462(ptr) AccessChain 461(if64v) 32
+             490:26(float64_t) Load 489
+             491:26(float64_t) Fwidth 490
+             492:     33(ptr) AccessChain 459(f64v) 32
+                              Store 492 491
+             493:149(f64vec3) Load 461(if64v)
+             494: 27(f64vec2) VectorShuffle 493 493 0 1
+             495: 27(f64vec2) FwidthFine 494
+             496:     33(ptr) AccessChain 459(f64v) 32
+             497:26(float64_t) CompositeExtract 495 0
+                              Store 496 497
+             498:     33(ptr) AccessChain 459(f64v) 88
+             499:26(float64_t) CompositeExtract 495 1
+                              Store 498 499
+             500:149(f64vec3) Load 461(if64v)
+             501:149(f64vec3) FwidthCoarse 500
+                              Store 459(f64v) 501
+             502:    462(ptr) AccessChain 461(if64v) 32
+             503:26(float64_t) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 502
+             504:     33(ptr) AccessChain 459(f64v) 32
+                              Store 504 503
+             506:149(f64vec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 461(if64v) 505
+             507: 27(f64vec2) VectorShuffle 506 506 0 1
+             508:     33(ptr) AccessChain 459(f64v) 32
+             509:26(float64_t) CompositeExtract 507 0
+                              Store 508 509
+             510:     33(ptr) AccessChain 459(f64v) 88
+             511:26(float64_t) CompositeExtract 507 1
+                              Store 510 511
+             514:149(f64vec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 461(if64v) 513
+                              Store 459(f64v) 514
                               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.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..43cb09f 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 535
 
                               Capability Shader
                               Capability Float16
@@ -66,35 +66,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
@@ -186,11 +186,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
@@ -675,68 +675,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/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 b7a93a5..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 499
+// 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 472  "Block"
-                              MemberName 472(Block) 0  "i64v"
-                              MemberName 472(Block) 1  "u64"
-                              Name 474  "block"
-                              Name 475  "si64"
-                              Name 476  "su64"
-                              Name 477  "si"
-                              Name 478  "su"
-                              Name 479  "sb"
-                              Name 480  "su64inc"
-                              Name 481  "i64_to_b"
-                              Name 482  "u64_to_b"
-                              Name 483  "b_to_i64"
-                              Name 484  "b_to_u64"
-                              Name 485  "i64_to_i"
-                              Name 486  "i_to_i64"
-                              Name 487  "u64_to_u"
-                              Name 488  "u_to_u64"
-                              Name 489  "u64_to_i64"
-                              Name 490  "i64_to_u64"
-                              Name 492  "u64_to_i"
-                              Name 494  "i_to_u64"
-                              Name 496  "i64_to_u"
-                              Name 498  "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 472(Block) 0 Offset 0
-                              MemberDecorate 472(Block) 1 Offset 24
-                              Decorate 472(Block) Block
-                              Decorate 474(block) DescriptorSet 0
-                              Decorate 474(block) Binding 1
-                              Decorate 475(si64) SpecId 100
-                              Decorate 476(su64) SpecId 101
-                              Decorate 477(si) SpecId 102
-                              Decorate 478(su) SpecId 103
-                              Decorate 479(sb) SpecId 104
-                              Decorate 480(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)
-      472(Block):             TypeStruct 136(i64vec3) 14(int64_t)
-             473:             TypePointer Uniform 472(Block)
-      474(block):    473(ptr) Variable Uniform
-       475(si64): 18(int64_t) SpecConstant 4294967286 4294967295
-       476(su64): 14(int64_t) SpecConstant 20 0
-         477(si):     31(int) SpecConstant 4294967291
-         478(su):     21(int) SpecConstant 4
-         479(sb):    55(bool) SpecConstantTrue
-    480(su64inc): 14(int64_t) SpecConstantOp 128 476(su64) 70
-   481(i64_to_b):    55(bool) SpecConstantOp 171 475(si64) 69
-   482(u64_to_b):    55(bool) SpecConstantOp 171 476(su64) 69
-   483(b_to_i64): 18(int64_t) SpecConstantOp 169 479(sb) 61 60
-   484(b_to_u64): 14(int64_t) SpecConstantOp 169 479(sb) 70 69
-   485(i64_to_i):     31(int) SpecConstantOp 114 475(si64)
-   486(i_to_i64): 18(int64_t) SpecConstantOp 114 477(si)
-   487(u64_to_u):     21(int) SpecConstantOp 113 476(su64)
-   488(u_to_u64): 14(int64_t) SpecConstantOp 113 478(su)
- 489(u64_to_i64): 18(int64_t) SpecConstantOp 128 476(su64) 69
- 490(i64_to_u64): 14(int64_t) SpecConstantOp 128 475(si64) 69
-             491:     21(int) SpecConstantOp 113 476(su64)
-   492(u64_to_i):     31(int) SpecConstantOp 128 491 227
-             493: 18(int64_t) SpecConstantOp 114 477(si)
-   494(i_to_u64): 14(int64_t) SpecConstantOp 128 493 69
-             495:     31(int) SpecConstantOp 114 475(si64)
-   496(i64_to_u):     21(int) SpecConstantOp 128 495 227
-             497: 14(int64_t) SpecConstantOp 113 478(su)
-   498(u_to_i64): 18(int64_t) SpecConstantOp 128 497 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,107 +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
-             462: 14(int64_t) Load 301(u64)
-             463: 18(int64_t) ExtInst 1(GLSL.std.450) 73(FindILsb) 462
-                              Store 289(i64) 463
-             464: 14(int64_t) Load 301(u64)
-             465: 65(i64vec2) CompositeConstruct 464 464
-             466: 52(i64vec2) ExtInst 1(GLSL.std.450) 73(FindILsb) 465
-                              Store 286(i64v) 466
-             467: 14(int64_t) Load 301(u64)
-             468: 18(int64_t) BitCount 467
-                              Store 289(i64) 468
-             469: 14(int64_t) Load 301(u64)
-             470: 65(i64vec2) CompositeConstruct 469 469
-             471: 52(i64vec2) BitCount 470
-                              Store 286(i64v) 471
+             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..a0da3e9 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 530
 
                               Capability Shader
                               Capability Float16
@@ -66,35 +66,35 @@
                               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 525  "Block"
+                              MemberName 525(Block) 0  "i8"
+                              MemberName 525(Block) 1  "i8v2"
+                              MemberName 525(Block) 2  "i8v3"
+                              MemberName 525(Block) 3  "i8v4"
+                              MemberName 525(Block) 4  "u8"
+                              MemberName 525(Block) 5  "u8v2"
+                              MemberName 525(Block) 6  "u8v3"
+                              MemberName 525(Block) 7  "u8v4"
+                              Name 527  "block"
+                              Name 528  "si8"
+                              Name 529  "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 525(Block) 0 Offset 0
+                              MemberDecorate 525(Block) 1 Offset 2
+                              MemberDecorate 525(Block) 2 Offset 4
+                              MemberDecorate 525(Block) 3 Offset 8
+                              MemberDecorate 525(Block) 4 Offset 12
+                              MemberDecorate 525(Block) 5 Offset 14
+                              MemberDecorate 525(Block) 6 Offset 16
+                              MemberDecorate 525(Block) 7 Offset 20
+                              Decorate 525(Block) Block
+                              Decorate 527(block) DescriptorSet 0
+                              Decorate 527(block) Binding 1
+                              Decorate 528(si8) SpecId 100
+                              Decorate 529(su8) SpecId 101
                2:             TypeVoid
                3:             TypeFunction 2
               14:             TypeInt 8 1
@@ -184,11 +184,11 @@
              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
+      525(Block):             TypeStruct 14(int8_t) 52(i8vec2) 194(i8vec3) 427(i8vec4) 36(int8_t) 49(i8vec2) 190(i8vec3) 438(i8vec4)
+             526:             TypePointer Uniform 525(Block)
+      527(block):    526(ptr) Variable Uniform
+        528(si8):  14(int8_t) SpecConstant 4294967286
+        529(su8):  36(int8_t) SpecConstant 20
          4(main):           2 Function None 3
                5:             Label
                               Return
@@ -670,68 +670,86 @@
              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
+             461:    275(ptr) AccessChain 452(bv) 277
+             462:   171(bool) CompositeExtract 460 0
+                              Store 461 462
+             463:    275(ptr) AccessChain 452(bv) 261
+             464:   171(bool) CompositeExtract 460 1
+                              Store 463 464
+             465: 190(i8vec3) Load 351(u8v)
+             466:  36(int8_t) Load 353(u8)
+             467: 190(i8vec3) CompositeConstruct 466 466 466
+             468:  420(bvec3) ULessThanEqual 465 467
+                              Store 452(bv) 468
+             469:  52(i8vec2) Load 338(i8v)
+             470:  14(int8_t) Load 341(i8)
+             471:  52(i8vec2) CompositeConstruct 470 470
+             472:  172(bvec2) SLessThanEqual 469 471
+             473:    275(ptr) AccessChain 452(bv) 277
+             474:   171(bool) CompositeExtract 472 0
+                              Store 473 474
+             475:    275(ptr) AccessChain 452(bv) 261
+             476:   171(bool) CompositeExtract 472 1
+                              Store 475 476
+             477: 190(i8vec3) Load 351(u8v)
+             478:  36(int8_t) Load 353(u8)
+             479: 190(i8vec3) CompositeConstruct 478 478 478
+             480:  420(bvec3) UGreaterThan 477 479
+                              Store 452(bv) 480
+             481:  52(i8vec2) Load 338(i8v)
+             482:  14(int8_t) Load 341(i8)
+             483:  52(i8vec2) CompositeConstruct 482 482
+             484:  172(bvec2) SGreaterThan 481 483
+             485:    275(ptr) AccessChain 452(bv) 277
+             486:   171(bool) CompositeExtract 484 0
+                              Store 485 486
+             487:    275(ptr) AccessChain 452(bv) 261
+             488:   171(bool) CompositeExtract 484 1
+                              Store 487 488
+             489: 190(i8vec3) Load 351(u8v)
+             490:  36(int8_t) Load 353(u8)
+             491: 190(i8vec3) CompositeConstruct 490 490 490
+             492:  420(bvec3) UGreaterThanEqual 489 491
                               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)
-             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
+             493:  52(i8vec2) Load 338(i8v)
+             494:  14(int8_t) Load 341(i8)
+             495:  52(i8vec2) CompositeConstruct 494 494
+             496:  172(bvec2) SGreaterThanEqual 493 495
+             497:    275(ptr) AccessChain 452(bv) 277
+             498:   171(bool) CompositeExtract 496 0
+                              Store 497 498
+             499:    275(ptr) AccessChain 452(bv) 261
+             500:   171(bool) CompositeExtract 496 1
+                              Store 499 500
+             501: 190(i8vec3) Load 351(u8v)
+             502:  36(int8_t) Load 353(u8)
+             503: 190(i8vec3) CompositeConstruct 502 502 502
+             504:  420(bvec3) IEqual 501 503
+                              Store 452(bv) 504
+             505:  52(i8vec2) Load 338(i8v)
+             506:  14(int8_t) Load 341(i8)
+             507:  52(i8vec2) CompositeConstruct 506 506
+             508:  172(bvec2) IEqual 505 507
+             509:    275(ptr) AccessChain 452(bv) 277
+             510:   171(bool) CompositeExtract 508 0
+                              Store 509 510
+             511:    275(ptr) AccessChain 452(bv) 261
+             512:   171(bool) CompositeExtract 508 1
+                              Store 511 512
+             513: 190(i8vec3) Load 351(u8v)
+             514:  36(int8_t) Load 353(u8)
+             515: 190(i8vec3) CompositeConstruct 514 514 514
+             516:  420(bvec3) INotEqual 513 515
+                              Store 452(bv) 516
+             517:  52(i8vec2) Load 338(i8v)
+             518:  14(int8_t) Load 341(i8)
+             519:  52(i8vec2) CompositeConstruct 518 518
+             520:  172(bvec2) INotEqual 517 519
+             521:    275(ptr) AccessChain 452(bv) 277
+             522:   171(bool) CompositeExtract 520 0
+                              Store 521 522
+             523:    275(ptr) AccessChain 452(bv) 261
+             524:   171(bool) CompositeExtract 520 1
+                              Store 523 524
                               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.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.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..9338529 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 343
 
                               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 342 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
+             341:      6(int) Constant 8
+             342:  218(ivec3) ConstantComposite 341 341 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,279 @@
               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
+             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:   87(fvec2)   SubgroupFirstInvocationKHR 259
+             261:     79(ptr)   AccessChain 75(data) 256 77 78
+             262:   68(float)   CompositeExtract 260 0
+                                Store 261 262
+             263:     79(ptr)   AccessChain 75(data) 256 77 100
+             264:   68(float)   CompositeExtract 260 1
+                                Store 263 264
+             265:      6(int)   Load 8(invocation)
+             266:     88(ptr)   AccessChain 75(data) 104 77
+             267:   69(fvec4)   Load 266
+             268:  105(fvec3)   VectorShuffle 267 267 0 1 2
+             269:  105(fvec3)   SubgroupFirstInvocationKHR 268
+             270:     79(ptr)   AccessChain 75(data) 265 77 78
+             271:   68(float)   CompositeExtract 269 0
+                                Store 270 271
+             272:     79(ptr)   AccessChain 75(data) 265 77 100
+             273:   68(float)   CompositeExtract 269 1
+                                Store 272 273
+             274:     79(ptr)   AccessChain 75(data) 265 77 121
+             275:   68(float)   CompositeExtract 269 2
+                                Store 274 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
+             277:     88(ptr)   AccessChain 75(data) 125 77
+             278:   69(fvec4)   Load 277
+             279:   69(fvec4)   SubgroupFirstInvocationKHR 278
+             280:     88(ptr)   AccessChain 75(data) 276 77
+                                Store 280 279
+             281:      6(int)   Load 8(invocation)
+             282:    140(ptr)   AccessChain 75(data) 77 86 78
+             283:     70(int)   Load 282
+             284:     70(int)   SubgroupFirstInvocationKHR 283
+             285:    140(ptr)   AccessChain 75(data) 281 86 78
+                                Store 285 284
+             286:      6(int)   Load 8(invocation)
+             287:    148(ptr)   AccessChain 75(data) 86 86
+             288:   71(ivec4)   Load 287
+             289:  147(ivec2)   VectorShuffle 288 288 0 1
+             290:  147(ivec2)   SubgroupFirstInvocationKHR 289
+             291:    140(ptr)   AccessChain 75(data) 286 86 78
+             292:     70(int)   CompositeExtract 290 0
+                                Store 291 292
+             293:    140(ptr)   AccessChain 75(data) 286 86 100
+             294:     70(int)   CompositeExtract 290 1
+                                Store 293 294
+             295:      6(int)   Load 8(invocation)
+             296:    148(ptr)   AccessChain 75(data) 104 86
+             297:   71(ivec4)   Load 296
+             298:  163(ivec3)   VectorShuffle 297 297 0 1 2
+             299:  163(ivec3)   SubgroupFirstInvocationKHR 298
+             300:    140(ptr)   AccessChain 75(data) 295 86 78
+             301:     70(int)   CompositeExtract 299 0
+                                Store 300 301
+             302:    140(ptr)   AccessChain 75(data) 295 86 100
+             303:     70(int)   CompositeExtract 299 1
+                                Store 302 303
+             304:    140(ptr)   AccessChain 75(data) 295 86 121
+             305:     70(int)   CompositeExtract 299 2
+                                Store 304 305
+             306:      6(int)   Load 8(invocation)
+             307:    148(ptr)   AccessChain 75(data) 125 86
+             308:   71(ivec4)   Load 307
+             309:   71(ivec4)   SubgroupFirstInvocationKHR 308
+             310:    148(ptr)   AccessChain 75(data) 306 86
+                                Store 310 309
+             311:      6(int)   Load 8(invocation)
+             312:    196(ptr)   AccessChain 75(data) 77 104 78
+             313:      6(int)   Load 312
+             314:      6(int)   SubgroupFirstInvocationKHR 313
+             315:    196(ptr)   AccessChain 75(data) 311 104 78
+                                Store 315 314
+             316:      6(int)   Load 8(invocation)
+             317:    203(ptr)   AccessChain 75(data) 86 104
+             318:   20(ivec4)   Load 317
+             319:   26(ivec2)   VectorShuffle 318 318 0 1
+             320:   26(ivec2)   SubgroupFirstInvocationKHR 319
+             321:    196(ptr)   AccessChain 75(data) 316 104 78
+             322:      6(int)   CompositeExtract 320 0
+                                Store 321 322
+             323:    196(ptr)   AccessChain 75(data) 316 104 100
+             324:      6(int)   CompositeExtract 320 1
+                                Store 323 324
+             325:      6(int)   Load 8(invocation)
+             326:    203(ptr)   AccessChain 75(data) 104 104
+             327:   20(ivec4)   Load 326
+             328:  218(ivec3)   VectorShuffle 327 327 0 1 2
+             329:  218(ivec3)   SubgroupFirstInvocationKHR 328
+             330:    196(ptr)   AccessChain 75(data) 325 104 78
+             331:      6(int)   CompositeExtract 329 0
+                                Store 330 331
+             332:    196(ptr)   AccessChain 75(data) 325 104 100
+             333:      6(int)   CompositeExtract 329 1
+                                Store 332 333
+             334:    196(ptr)   AccessChain 75(data) 325 104 121
+             335:      6(int)   CompositeExtract 329 2
+                                Store 334 335
+             336:      6(int)   Load 8(invocation)
+             337:    203(ptr)   AccessChain 75(data) 125 104
+             338:   20(ivec4)   Load 337
+             339:   20(ivec4)   SubgroupFirstInvocationKHR 338
+             340:    203(ptr)   AccessChain 75(data) 336 104
+                                Store 340 339
                                 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.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.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/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/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 05a6355..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 ( specialization-constant const 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 ( specialization-constant const 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 ( specialization-constant const 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 ( specialization-constant const 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 ( specialization-constant const 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 ( specialization-constant const 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)
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/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.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.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/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/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 1d9da12..c8203c2 100644
--- a/glslang/Include/BaseTypes.h
+++ b/glslang/Include/BaseTypes.h
@@ -270,6 +270,7 @@
     EbvWorldToObject,
     EbvWorldToObject3x4,
     EbvIncomingRayFlags,
+    EbvCurrentRayTimeNV,
     // barycentrics
     EbvBaryCoordNV,
     EbvBaryCoordNoPerspNV,
@@ -475,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 1e47239..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
@@ -213,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
diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h
index 172c09c..595bd62 100644
--- a/glslang/Include/intermediate.h
+++ b/glslang/Include/intermediate.h
@@ -926,6 +926,7 @@
     EOpMul32x16,
 
     EOpTraceNV,
+    EOpTraceRayMotionNV,
     EOpTraceKHR,
     EOpReportIntersection,
     EOpIgnoreIntersectionNV,
@@ -1642,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; }
diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp
index 4629cc2..7f5d4c4 100644
--- a/glslang/MachineIndependent/Constant.cpp
+++ b/glslang/MachineIndependent/Constant.cpp
@@ -531,7 +531,7 @@
             case EbtFloat: newConstArray[i].setDConst(-unionArray[i].getDConst()); break;
             // Note: avoid UBSAN error regarding negating 0x80000000
             case EbtInt:   newConstArray[i].setIConst(
-                                unionArray[i].getIConst() == 0x80000000
+                                static_cast<unsigned int>(unionArray[i].getIConst()) == 0x80000000
                                     ? -0x7FFFFFFF - 1
                                     : -unionArray[i].getIConst());
                            break;
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 486b6c3..ee4e2ca 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -1864,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);"
@@ -4661,7 +4677,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);"
@@ -4690,6 +4706,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);"
@@ -4704,12 +4721,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);"
@@ -5918,6 +5937,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;"
@@ -5953,6 +5973,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;"
@@ -5971,6 +5992,7 @@
             "in    float  gl_RayTmaxEXT;"
             "in    uint   gl_IncomingRayFlagsNV;"
             "in    uint   gl_IncomingRayFlagsEXT;"
+            "in    float  gl_CurrentRayTimeNV;"
             "\n";
 
         const char *callableDecls =
@@ -7283,6 +7305,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);
@@ -7676,6 +7701,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
@@ -7743,8 +7773,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) {
@@ -8258,6 +8288,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);
@@ -8786,11 +8829,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);
@@ -8834,6 +8879,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);
@@ -9258,6 +9304,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);
@@ -9665,6 +9723,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 c2b9edc..b2b187b 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
 }
 
@@ -2273,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");
@@ -2409,6 +2448,14 @@
                    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;
     }
 
@@ -3651,6 +3698,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;
@@ -3667,7 +3716,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:
@@ -7642,7 +7691,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
diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h
index c9e6334..442741d 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();
@@ -471,7 +472,7 @@
     // Determine loop control from attributes
     void handleLoopAttributes(const TAttributes& attributes, TIntermNode*);
     // Function attributes
-    void handleFunctionAttributes(const TSourceLoc&, const TAttributes&, TFunction*);
+    void handleFunctionAttributes(const TSourceLoc&, const TAttributes&);
 
     // GL_EXT_spirv_intrinsics
     TSpirvRequirement* makeSpirvRequirement(const TSourceLoc& loc, const TString& name,
@@ -511,6 +512,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/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp
index 747b436..5b7e27f 100644
--- a/glslang/MachineIndependent/SymbolTable.cpp
+++ b/glslang/MachineIndependent/SymbolTable.cpp
@@ -279,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;
 }
@@ -418,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) {
@@ -433,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 2196093..720999a 100644
--- a/glslang/MachineIndependent/SymbolTable.h
+++ b/glslang/MachineIndependent/SymbolTable.h
@@ -413,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.
@@ -471,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);
@@ -583,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.
@@ -788,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 2698dd9..097ee84 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;
@@ -281,6 +284,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;
@@ -518,6 +522,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"
diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h
index 2e8cc29..949a7a1 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";
@@ -247,6 +248,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";
diff --git a/glslang/MachineIndependent/attribute.cpp b/glslang/MachineIndependent/attribute.cpp
index 8a92f6a..df7fdc2 100644
--- a/glslang/MachineIndependent/attribute.cpp
+++ b/glslang/MachineIndependent/attribute.cpp
@@ -347,7 +347,7 @@
 //
 // Function attributes
 //
-void TParseContext::handleFunctionAttributes(const TSourceLoc& loc, const TAttributes& attributes, TFunction* function)
+void TParseContext::handleFunctionAttributes(const TSourceLoc& loc, const TAttributes& attributes)
 {
     for (auto it = attributes.begin(); it != attributes.end(); ++it) {
         if (it->size() > 0) {
diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4
index 93041ce..b30c734 100644
--- a/glslang/MachineIndependent/glslang.m4
+++ b/glslang/MachineIndependent/glslang.m4
@@ -983,20 +983,20 @@
         $$.function = $1;
         $$.loc = $2.loc;
         parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute");
-        parseContext.handleFunctionAttributes($2.loc, *$3, $$.function);
+        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, $$.function);
+        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, $$.function);
-        parseContext.handleFunctionAttributes($3.loc, *$4, $$.function);
+        parseContext.handleFunctionAttributes($3.loc, *$1);
+        parseContext.handleFunctionAttributes($3.loc, *$4);
     }
     ;
 
diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y
index b77f461..c535ecc 100644
--- a/glslang/MachineIndependent/glslang.y
+++ b/glslang/MachineIndependent/glslang.y
@@ -983,20 +983,20 @@
         $$.function = $1;
         $$.loc = $2.loc;
         parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute");
-        parseContext.handleFunctionAttributes($2.loc, *$3, $$.function);
+        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, $$.function);
+        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, $$.function);
-        parseContext.handleFunctionAttributes($3.loc, *$4, $$.function);
+        parseContext.handleFunctionAttributes($3.loc, *$1);
+        parseContext.handleFunctionAttributes($3.loc, *$4);
     }
     ;
 
diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp
index dba06ae..648bc37 100644
--- a/glslang/MachineIndependent/glslang_tab.cpp
+++ b/glslang/MachineIndependent/glslang_tab.cpp
@@ -6204,7 +6204,7 @@
         (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), (yyval.interm).function);
+        parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes));
     }
 #line 6210 "MachineIndependent/glslang_tab.cpp"
     break;
@@ -6215,7 +6215,7 @@
         (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), (yyval.interm).function);
+        parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes));
     }
 #line 6221 "MachineIndependent/glslang_tab.cpp"
     break;
@@ -6226,8 +6226,8 @@
         (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), (yyval.interm).function);
-        parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes), (yyval.interm).function);
+        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;
diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp
index 105adc4..a0fade1 100644
--- a/glslang/MachineIndependent/intermOut.cpp
+++ b/glslang/MachineIndependent/intermOut.cpp
@@ -1089,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;
diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp
index cec94fc..4a68130 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
diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h
index 5cc9930..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),
@@ -538,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&);
@@ -560,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)
@@ -926,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);
@@ -1063,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];
diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp
index 77f0aaf..6e7a659 100644
--- a/gtests/AST.FromFile.cpp
+++ b/gtests/AST.FromFile.cpp
@@ -282,6 +282,9 @@
         "terminate.vert",
         "negativeWorkGroupSize.comp",
         "textureoffset_sampler2darrayshadow.vert",
+        "atomicAdd.comp",
+        "GL_ARB_gpu_shader5.u2i.vert",
+        "atomicCounterARBOps.vert"
     })),
     FileNameAsCustomTestSuffix
 );
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/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
index 20683a6..29740f3 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,
@@ -352,6 +360,7 @@
         "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",
@@ -363,6 +372,7 @@
         "spv.intrinsicsSpirvLiteral.vert",
         "spv.intrinsicsSpirvStorageClass.rchit",
         "spv.intrinsicsSpirvType.rgen",
+        "spv.invariantAll.vert",
         "spv.layer.tese",
         "spv.layoutNested.vert",
         "spv.length.frag",
@@ -465,6 +475,7 @@
         "spv.smBuiltins.frag",
         "spv.builtin.PrimitiveShadingRateEXT.vert",
         "spv.builtin.ShadingRateEXT.frag",
+        "spv.atomicAdd.bufferReference.comp"
     })),
     FileNameAsCustomTestSuffix
 );
@@ -565,6 +576,7 @@
         "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",
@@ -762,6 +774,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/known_good.json b/known_good.json
index c6fd4ff..e1c2ce8 100644
--- a/known_good.json
+++ b/known_good.json
@@ -5,14 +5,14 @@
       "site" : "github",
       "subrepo" : "KhronosGroup/SPIRV-Tools",
       "subdir" : "External/spirv-tools",
-      "commit" : "5dd2f76918bb2d0d67628e338f60f724f3e02e13"
+      "commit" : "1fbed83c8aab8517d821fcb4164c08567951938f"
     },
     {
       "name" : "spirv-tools/external/spirv-headers",
       "site" : "github",
       "subrepo" : "KhronosGroup/SPIRV-Headers",
       "subdir" : "External/spirv-tools/external/spirv-headers",
-      "commit" : "07f259e68af3a540038fa32df522554e74f53ed5"
+      "commit" : "449bc986ba6f4c5e10e32828783f9daef2a77644"
     }
   ]
 }