Merge pull request #1953 from null77/gn-add-missing-headers

Add a couple missing headers to the GN build.
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
old mode 100644
new mode 100755
index 99c4c3f..ad16396
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -1630,11 +1630,11 @@
     for (auto it = iOSet.cbegin(); it != iOSet.cend(); ++it)
         entryPoint->addIdOperand(*it);
 
-#ifndef GLSLANG_WEB
-    // Add capabilities, extensions, remove unneeded decorations, etc., 
+    // Add capabilities, extensions, remove unneeded decorations, etc.,
     // based on the resulting SPIR-V.
+    // Note: WebGPU code generation must have the opportunity to aggressively
+    // prune unreachable merge blocks and continue targets.
     builder.postProcess();
-#endif
 }
 
 // Write the SPV into 'out'.
@@ -8197,7 +8197,8 @@
     // return 5; // make OpArrayLength result type be an int with signedness of 0
     // return 6; // revert version 5 change, which makes a different (new) kind of incorrect code,
                  // versions 4 and 6 each generate OpArrayLength as it has long been done
-    return 7; // GLSL volatile keyword maps to both SPIR-V decorations Volatile and Coherent
+    // return 7; // GLSL volatile keyword maps to both SPIR-V decorations Volatile and Coherent
+    return 8; // switch to new dead block eliminator; use OpUnreachable
 }
 
 // Write SPIR-V out to a binary file
diff --git a/SPIRV/InReadableOrder.cpp b/SPIRV/InReadableOrder.cpp
index 52b2961..9d9410b 100644
--- a/SPIRV/InReadableOrder.cpp
+++ b/SPIRV/InReadableOrder.cpp
@@ -61,17 +61,22 @@
 // Use by calling visit() on the root block.
 class ReadableOrderTraverser {
 public:
-    explicit ReadableOrderTraverser(std::function<void(Block*)> callback) : callback_(callback) {}
+    ReadableOrderTraverser(std::function<void(Block*, spv::ReachReason, Block*)> callback)
+      : callback_(callback) {}
     // Visits the block if it hasn't been visited already and isn't currently
-    // being delayed.  Invokes callback(block), then descends into its
+    // being delayed.  Invokes callback(block, why, header), then descends into its
     // successors.  Delays merge-block and continue-block processing until all
-    // the branches have been completed.
-    void visit(Block* block)
+    // the branches have been completed.  If |block| is an unreachable merge block or
+    // an unreachable continue target, then |header| is the corresponding header block.
+    void visit(Block* block, spv::ReachReason why, Block* header)
     {
         assert(block);
+        if (why == spv::ReachViaControlFlow) {
+            reachableViaControlFlow_.insert(block);
+        }
         if (visited_.count(block) || delayed_.count(block))
             return;
-        callback_(block);
+        callback_(block, why, header);
         visited_.insert(block);
         Block* mergeBlock = nullptr;
         Block* continueBlock = nullptr;
@@ -87,27 +92,40 @@
                 delayed_.insert(continueBlock);
             }
         }
-        const auto successors = block->getSuccessors();
-        for (auto it = successors.cbegin(); it != successors.cend(); ++it)
-            visit(*it);
+        if (why == spv::ReachViaControlFlow) {
+            const auto& successors = block->getSuccessors();
+            for (auto it = successors.cbegin(); it != successors.cend(); ++it)
+                visit(*it, why, nullptr);
+        }
         if (continueBlock) {
+            const spv::ReachReason continueWhy =
+                (reachableViaControlFlow_.count(continueBlock) > 0)
+                    ? spv::ReachViaControlFlow
+                    : spv::ReachDeadContinue;
             delayed_.erase(continueBlock);
-            visit(continueBlock);
+            visit(continueBlock, continueWhy, block);
         }
         if (mergeBlock) {
+            const spv::ReachReason mergeWhy =
+                (reachableViaControlFlow_.count(mergeBlock) > 0)
+                    ? spv::ReachViaControlFlow
+                    : spv::ReachDeadMerge;
             delayed_.erase(mergeBlock);
-            visit(mergeBlock);
+            visit(mergeBlock, mergeWhy, block);
         }
     }
 
 private:
-    std::function<void(Block*)> callback_;
+    std::function<void(Block*, spv::ReachReason, Block*)> callback_;
     // Whether a block has already been visited or is being delayed.
     std::unordered_set<Block *> visited_, delayed_;
+
+    // The set of blocks that actually are reached via control flow.
+    std::unordered_set<Block *> reachableViaControlFlow_;
 };
 }
 
-void spv::inReadableOrder(Block* root, std::function<void(Block*)> callback)
+void spv::inReadableOrder(Block* root, std::function<void(Block*, spv::ReachReason, Block*)> callback)
 {
-    ReadableOrderTraverser(callback).visit(root);
+    ReadableOrderTraverser(callback).visit(root, spv::ReachViaControlFlow, nullptr);
 }
diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h
index 55754f6..8d8f34b 100644
--- a/SPIRV/SpvBuilder.h
+++ b/SPIRV/SpvBuilder.h
@@ -683,14 +683,12 @@
     // based on the type of the base and the chain of dereferences.
     Id accessChainGetInferredType();
 
-    // Add capabilities, extensions, remove unneeded decorations, etc., 
+    // Add capabilities, extensions, remove unneeded decorations, etc.,
     // based on the resulting SPIR-V.
     void postProcess();
 
     // Hook to visit each instruction in a block in a function
     void postProcess(Instruction&);
-    // Hook to visit each instruction in a reachable block in a function.
-    void postProcessReachable(const Instruction&);
     // Hook to visit each non-32-bit sized float/int operation in a block.
     void postProcessType(const Instruction&, spv::Id typeId);
 
diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp
index 832ee3e..86fad58 100644
--- a/SPIRV/SpvPostProcess.cpp
+++ b/SPIRV/SpvPostProcess.cpp
@@ -39,6 +39,7 @@
 #include <cassert>
 #include <cstdlib>
 
+#include <unordered_map>
 #include <unordered_set>
 #include <algorithm>
 
@@ -319,16 +320,14 @@
     }
 }
 
-// Called for each instruction in a reachable block.
-void Builder::postProcessReachable(const Instruction&)
-{
-    // did have code here, but questionable to do so without deleting the instructions
-}
-
 // comment in header
 void Builder::postProcess()
 {
+    // reachableBlocks is the set of blockss reached via control flow, or which are
+    // unreachable continue targert or unreachable merge.
     std::unordered_set<const Block*> reachableBlocks;
+    std::unordered_map<Block*, Block*> headerForUnreachableContinue;
+    std::unordered_set<Block*> unreachableMerges;
     std::unordered_set<Id> unreachableDefinitions;
     // Collect IDs defined in unreachable blocks. For each function, label the
     // reachable blocks first. Then for each unreachable block, collect the
@@ -336,16 +335,41 @@
     for (auto fi = module.getFunctions().cbegin(); fi != module.getFunctions().cend(); fi++) {
         Function* f = *fi;
         Block* entry = f->getEntryBlock();
-        inReadableOrder(entry, [&reachableBlocks](const Block* b) { reachableBlocks.insert(b); });
+        inReadableOrder(entry,
+            [&reachableBlocks, &unreachableMerges, &headerForUnreachableContinue]
+            (Block* b, ReachReason why, Block* header) {
+               reachableBlocks.insert(b);
+               if (why == ReachDeadContinue) headerForUnreachableContinue[b] = header;
+               if (why == ReachDeadMerge) unreachableMerges.insert(b);
+            });
         for (auto bi = f->getBlocks().cbegin(); bi != f->getBlocks().cend(); bi++) {
             Block* b = *bi;
-            if (reachableBlocks.count(b) == 0) {
-                for (auto ii = b->getInstructions().cbegin(); ii != b->getInstructions().cend(); ii++)
+            if (unreachableMerges.count(b) != 0 || headerForUnreachableContinue.count(b) != 0) {
+                auto ii = b->getInstructions().cbegin();
+                ++ii; // Keep potential decorations on the label.
+                for (; ii != b->getInstructions().cend(); ++ii)
+                    unreachableDefinitions.insert(ii->get()->getResultId());
+            } else if (reachableBlocks.count(b) == 0) {
+                // The normal case for unreachable code.  All definitions are considered dead.
+                for (auto ii = b->getInstructions().cbegin(); ii != b->getInstructions().cend(); ++ii)
                     unreachableDefinitions.insert(ii->get()->getResultId());
             }
         }
     }
 
+    // Modify unreachable merge blocks and unreachable continue targets.
+    // Delete their contents.
+    for (auto mergeIter = unreachableMerges.begin(); mergeIter != unreachableMerges.end(); ++mergeIter) {
+        (*mergeIter)->rewriteAsCanonicalUnreachableMerge();
+    }
+    for (auto continueIter = headerForUnreachableContinue.begin();
+         continueIter != headerForUnreachableContinue.end();
+         ++continueIter) {
+        Block* continue_target = continueIter->first;
+        Block* header = continueIter->second;
+        continue_target->rewriteAsCanonicalUnreachableContinue(header);
+    }
+
     // Remove unneeded decorations, for unreachable instructions
     decorations.erase(std::remove_if(decorations.begin(), decorations.end(),
         [&unreachableDefinitions](std::unique_ptr<Instruction>& I) -> bool {
@@ -374,13 +398,6 @@
         }
     }
 
-    // process all reachable instructions...
-    for (auto bi = reachableBlocks.cbegin(); bi != reachableBlocks.cend(); ++bi) {
-        const Block* block = *bi;
-        const auto function = [this](const std::unique_ptr<Instruction>& inst) { postProcessReachable(*inst.get()); };
-        std::for_each(block->getInstructions().begin(), block->getInstructions().end(), function);
-    }
-
     // process all block-contained instructions
     for (auto fi = module.getFunctions().cbegin(); fi != module.getFunctions().cend(); fi++) {
         Function* f = *fi;
diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h
index 7e2d4bc..994224d 100755
--- a/SPIRV/spvIR.h
+++ b/SPIRV/spvIR.h
@@ -226,6 +226,36 @@
         return nullptr;
     }
 
+    // Change this block into a canonical dead merge block.  Delete instructions
+    // as necessary.  A canonical dead merge block has only an OpLabel and an
+    // OpUnreachable.
+    void rewriteAsCanonicalUnreachableMerge() {
+        assert(localVariables.empty());
+        // Delete all instructions except for the label.
+        assert(instructions.size() > 0);
+        instructions.resize(1);
+        successors.clear();
+        Instruction* unreachable = new Instruction(OpUnreachable);
+        addInstruction(std::unique_ptr<Instruction>(unreachable));
+    }
+    // Change this block into a canonical dead continue target branching to the
+    // given header ID.  Delete instructions as necessary.  A canonical dead continue
+    // target has only an OpLabel and an unconditional branch back to the corresponding
+    // header.
+    void rewriteAsCanonicalUnreachableContinue(Block* header) {
+        assert(localVariables.empty());
+        // Delete all instructions except for the label.
+        assert(instructions.size() > 0);
+        instructions.resize(1);
+        successors.clear();
+        // Add OpBranch back to the header.
+        assert(header != nullptr);
+        Instruction* branch = new Instruction(OpBranch);
+        branch->addIdOperand(header->getId());
+        addInstruction(std::move(std::unique_ptr<Instruction>(branch)));
+        successors.push_back(header);
+    }
+
     bool isTerminated() const
     {
         switch (instructions.back()->getOpCode()) {
@@ -235,6 +265,7 @@
         case OpKill:
         case OpReturn:
         case OpReturnValue:
+        case OpUnreachable:
             return true;
         default:
             return false;
@@ -268,10 +299,24 @@
     bool unreachable;
 };
 
+// The different reasons for reaching a block in the inReadableOrder traversal.
+enum ReachReason {
+    // Reachable from the entry block via transfers of control, i.e. branches.
+    ReachViaControlFlow = 0,
+    // A continue target that is not reachable via control flow.
+    ReachDeadContinue,
+    // A merge block that is not reachable via control flow.
+    ReachDeadMerge
+};
+
 // Traverses the control-flow graph rooted at root in an order suited for
 // readable code generation.  Invokes callback at every node in the traversal
-// order.
-void inReadableOrder(Block* root, std::function<void(Block*)> callback);
+// order.  The callback arguments are:
+// - the block,
+// - the reason we reached the block,
+// - if the reason was that block is an unreachable continue or unreachable merge block
+//   then the last parameter is the corresponding header block.
+void inReadableOrder(Block* root, std::function<void(Block*, ReachReason, Block* header)> callback);
 
 //
 // SPIR-V IR Function.
@@ -321,7 +366,7 @@
             parameterInstructions[p]->dump(out);
 
         // Blocks
-        inReadableOrder(blocks[0], [&out](const Block* b) { b->dump(out); });
+        inReadableOrder(blocks[0], [&out](const Block* b, ReachReason, Block*) { b->dump(out); });
         Instruction end(0, 0, OpFunctionEnd);
         end.dump(out);
     }
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index 4be3a4f..0747932 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -988,7 +988,7 @@
 
             // Set base bindings
             shader->setShiftBinding(res, baseBinding[res][compUnit.stage]);
-            
+
             // Set bindings for particular resource sets
             // TODO: use a range based for loop here, when available in all environments.
             for (auto i = baseBindingForSet[res][compUnit.stage].begin();
diff --git a/Test/baseLegalResults/hlsl.aliasOpaque.frag.out b/Test/baseLegalResults/hlsl.aliasOpaque.frag.out
index 2e58bdd..887e4ac 100644
--- a/Test/baseLegalResults/hlsl.aliasOpaque.frag.out
+++ b/Test/baseLegalResults/hlsl.aliasOpaque.frag.out
@@ -1,6 +1,6 @@
 hlsl.aliasOpaque.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 87
 
                               Capability Shader
diff --git a/Test/baseLegalResults/hlsl.flattenOpaque.frag.out b/Test/baseLegalResults/hlsl.flattenOpaque.frag.out
index d334b7e..ad9e6c1 100644
--- a/Test/baseLegalResults/hlsl.flattenOpaque.frag.out
+++ b/Test/baseLegalResults/hlsl.flattenOpaque.frag.out
@@ -1,6 +1,6 @@
 hlsl.flattenOpaque.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 185
 
                               Capability Shader
diff --git a/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out b/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out
index 921cb96..6ed8da2 100644
--- a/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out
+++ b/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out
@@ -1,6 +1,6 @@
 hlsl.flattenOpaqueInit.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 134
 
                               Capability Shader
diff --git a/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out b/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out
index 39770f4..81ab5e6 100644
--- a/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out
+++ b/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out
@@ -1,6 +1,6 @@
 hlsl.flattenOpaqueInitMix.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 97
 
                               Capability Shader
diff --git a/Test/baseLegalResults/hlsl.flattenSubset.frag.out b/Test/baseLegalResults/hlsl.flattenSubset.frag.out
index 4628479..562070d 100644
--- a/Test/baseLegalResults/hlsl.flattenSubset.frag.out
+++ b/Test/baseLegalResults/hlsl.flattenSubset.frag.out
@@ -1,6 +1,6 @@
 hlsl.flattenSubset.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 66
 
                               Capability Shader
diff --git a/Test/baseLegalResults/hlsl.flattenSubset2.frag.out b/Test/baseLegalResults/hlsl.flattenSubset2.frag.out
index 0d7ab56..5cc280b 100644
--- a/Test/baseLegalResults/hlsl.flattenSubset2.frag.out
+++ b/Test/baseLegalResults/hlsl.flattenSubset2.frag.out
@@ -1,6 +1,6 @@
 hlsl.flattenSubset2.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 53
 
                               Capability Shader
diff --git a/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out b/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out
index 27482b3..f4c9c5a 100644
--- a/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out
+++ b/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out
@@ -1,6 +1,6 @@
 hlsl.partialFlattenLocal.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 158
 
                               Capability Shader
diff --git a/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out b/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out
index e54fb7e..7be570b 100644
--- a/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out
+++ b/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out
@@ -1,6 +1,6 @@
 hlsl.partialFlattenMixed.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 36
 
                               Capability Shader
diff --git a/Test/baseResults/compoundsuffix.frag.hlsl b/Test/baseResults/compoundsuffix.frag.hlsl
index f47c97d..650d1d0 100644
--- a/Test/baseResults/compoundsuffix.frag.hlsl
+++ b/Test/baseResults/compoundsuffix.frag.hlsl
@@ -1,6 +1,6 @@
 compoundsuffix.frag.hlsl

 // Module Version 10000

-// Generated by (magic number): 80007

+// Generated by (magic number): 80008

 // Id's are bound by 22

 

                               Capability Shader

diff --git a/Test/baseResults/glsl.entryPointRename.vert.bad.out b/Test/baseResults/glsl.entryPointRename.vert.bad.out
index c7ea97e..7b99bbe 100644
--- a/Test/baseResults/glsl.entryPointRename.vert.bad.out
+++ b/Test/baseResults/glsl.entryPointRename.vert.bad.out
@@ -2,7 +2,7 @@
 ERROR: Source entry point must be "main"
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 20
 
                               Capability Shader
diff --git a/Test/baseResults/glsl.entryPointRename.vert.out b/Test/baseResults/glsl.entryPointRename.vert.out
index 3dbe13b..3044dee 100644
--- a/Test/baseResults/glsl.entryPointRename.vert.out
+++ b/Test/baseResults/glsl.entryPointRename.vert.out
@@ -1,6 +1,6 @@
 glsl.entryPointRename.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 20
 
                               Capability Shader
diff --git a/Test/baseResults/glspv.esversion.vert.out b/Test/baseResults/glspv.esversion.vert.out
index 395d7f3..9f92513 100644
--- a/Test/baseResults/glspv.esversion.vert.out
+++ b/Test/baseResults/glspv.esversion.vert.out
@@ -1,6 +1,6 @@
 glspv.esversion.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 10
 
                               Capability Shader
diff --git a/Test/baseResults/glspv.version.frag.out b/Test/baseResults/glspv.version.frag.out
index 4a45b5b..42c73dd 100644
--- a/Test/baseResults/glspv.version.frag.out
+++ b/Test/baseResults/glspv.version.frag.out
@@ -2,7 +2,7 @@
 ERROR: #version: compilation for SPIR-V does not support the compatibility profile
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 6
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.PointSize.geom.out b/Test/baseResults/hlsl.PointSize.geom.out
index 77cdc7d..80fee61 100644
--- a/Test/baseResults/hlsl.PointSize.geom.out
+++ b/Test/baseResults/hlsl.PointSize.geom.out
@@ -71,7 +71,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 36
 
                               Capability Geometry
diff --git a/Test/baseResults/hlsl.PointSize.vert.out b/Test/baseResults/hlsl.PointSize.vert.out
index bda0030..2390a5a 100644
--- a/Test/baseResults/hlsl.PointSize.vert.out
+++ b/Test/baseResults/hlsl.PointSize.vert.out
@@ -38,7 +38,7 @@
 0:?     '@entryPointOutput' ( out float PointSize)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 16
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.aliasOpaque.frag.out b/Test/baseResults/hlsl.aliasOpaque.frag.out
index 63d29fa..d22bac6 100644
--- a/Test/baseResults/hlsl.aliasOpaque.frag.out
+++ b/Test/baseResults/hlsl.aliasOpaque.frag.out
@@ -143,7 +143,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 64
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.amend.frag.out b/Test/baseResults/hlsl.amend.frag.out
index e273abe..7fd0727 100644
--- a/Test/baseResults/hlsl.amend.frag.out
+++ b/Test/baseResults/hlsl.amend.frag.out
@@ -160,7 +160,7 @@
 0:?     'm' ( global 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 57
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.array.flatten.frag.out b/Test/baseResults/hlsl.array.flatten.frag.out
index 80d5153..4c2a8c1 100644
--- a/Test/baseResults/hlsl.array.flatten.frag.out
+++ b/Test/baseResults/hlsl.array.flatten.frag.out
@@ -345,7 +345,7 @@
 0:?     'ps_output.color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 143
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.array.frag.out b/Test/baseResults/hlsl.array.frag.out
index 2e706d7..7178102 100644
--- a/Test/baseResults/hlsl.array.frag.out
+++ b/Test/baseResults/hlsl.array.frag.out
@@ -290,7 +290,7 @@
 0:?     'input' (layout( location=1) in 3-element array of 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 126
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.array.implicit-size.frag.out b/Test/baseResults/hlsl.array.implicit-size.frag.out
index 9af6fed..402807e 100644
--- a/Test/baseResults/hlsl.array.implicit-size.frag.out
+++ b/Test/baseResults/hlsl.array.implicit-size.frag.out
@@ -163,7 +163,7 @@
 0:?     'g_mystruct' ( global 2-element array of structure{ temp int i,  temp float f})
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 72
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.array.multidim.frag.out b/Test/baseResults/hlsl.array.multidim.frag.out
index 9462999..6c852c3 100644
--- a/Test/baseResults/hlsl.array.multidim.frag.out
+++ b/Test/baseResults/hlsl.array.multidim.frag.out
@@ -134,7 +134,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 57
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.assoc.frag.out b/Test/baseResults/hlsl.assoc.frag.out
index 562a863..2002b0d 100644
--- a/Test/baseResults/hlsl.assoc.frag.out
+++ b/Test/baseResults/hlsl.assoc.frag.out
@@ -132,7 +132,7 @@
 0:?     'a5' (layout( location=4) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 58
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.attribute.expression.comp.out b/Test/baseResults/hlsl.attribute.expression.comp.out
index 1b3ffdb..1ff2123 100644
--- a/Test/baseResults/hlsl.attribute.expression.comp.out
+++ b/Test/baseResults/hlsl.attribute.expression.comp.out
@@ -82,7 +82,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 39
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.attribute.frag.out b/Test/baseResults/hlsl.attribute.frag.out
index 44e963e..2290cd8 100644
--- a/Test/baseResults/hlsl.attribute.frag.out
+++ b/Test/baseResults/hlsl.attribute.frag.out
@@ -50,7 +50,7 @@
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 24
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.attributeC11.frag.out b/Test/baseResults/hlsl.attributeC11.frag.out
index 47dd96a..14bdcdd 100644
--- a/Test/baseResults/hlsl.attributeC11.frag.out
+++ b/Test/baseResults/hlsl.attributeC11.frag.out
@@ -95,7 +95,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 51
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out b/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out
index e378447..a486d1e 100644
--- a/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out
+++ b/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out
@@ -56,7 +56,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 28
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.basic.comp.out b/Test/baseResults/hlsl.basic.comp.out
index d84642e..fb26bc3 100644
--- a/Test/baseResults/hlsl.basic.comp.out
+++ b/Test/baseResults/hlsl.basic.comp.out
@@ -64,7 +64,7 @@
 0:?     'gti' ( in 3-component vector of int LocalInvocationID)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 38
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.basic.geom.out b/Test/baseResults/hlsl.basic.geom.out
index f4116d4..ee123d4 100644
--- a/Test/baseResults/hlsl.basic.geom.out
+++ b/Test/baseResults/hlsl.basic.geom.out
@@ -188,7 +188,7 @@
 0:?     'OutputStream.something' (layout( location=1) out int)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 68
 
                               Capability Geometry
diff --git a/Test/baseResults/hlsl.boolConv.vert.out b/Test/baseResults/hlsl.boolConv.vert.out
index d88955f..8762faf 100644
--- a/Test/baseResults/hlsl.boolConv.vert.out
+++ b/Test/baseResults/hlsl.boolConv.vert.out
@@ -204,7 +204,7 @@
 0:?     '@entryPointOutput' ( out 4-component vector of float Position)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 99
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.buffer.frag.out b/Test/baseResults/hlsl.buffer.frag.out
index 25a7963..e41c02d 100644
--- a/Test/baseResults/hlsl.buffer.frag.out
+++ b/Test/baseResults/hlsl.buffer.frag.out
@@ -147,7 +147,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 73
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
index f327883..698350c 100644
--- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out
+++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
@@ -358,7 +358,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 148
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
index 85dafcc..e4bcb61 100644
--- a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
+++ b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
@@ -358,7 +358,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 148
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.cast.frag.out b/Test/baseResults/hlsl.cast.frag.out
index 0aa11be..aa657f3 100644
--- a/Test/baseResults/hlsl.cast.frag.out
+++ b/Test/baseResults/hlsl.cast.frag.out
@@ -70,7 +70,7 @@
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 34
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.cbuffer-identifier.vert.out b/Test/baseResults/hlsl.cbuffer-identifier.vert.out
index f7225f8..5cec136 100644
--- a/Test/baseResults/hlsl.cbuffer-identifier.vert.out
+++ b/Test/baseResults/hlsl.cbuffer-identifier.vert.out
@@ -250,7 +250,7 @@
 0:?     'input.Norm' (layout( location=1) in 3-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 93
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.charLit.vert.out b/Test/baseResults/hlsl.charLit.vert.out
index b09fc81..4846f8f 100644
--- a/Test/baseResults/hlsl.charLit.vert.out
+++ b/Test/baseResults/hlsl.charLit.vert.out
@@ -146,7 +146,7 @@
 0:?     '@entryPointOutput' ( out 4-component vector of float Position)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 58
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clip.frag.out b/Test/baseResults/hlsl.clip.frag.out
index dbf99bf..a0ebb74 100644
--- a/Test/baseResults/hlsl.clip.frag.out
+++ b/Test/baseResults/hlsl.clip.frag.out
@@ -74,7 +74,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 30
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-1.frag.out b/Test/baseResults/hlsl.clipdistance-1.frag.out
index f223ddc..4382505 100644
--- a/Test/baseResults/hlsl.clipdistance-1.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-1.frag.out
@@ -98,7 +98,7 @@
 0:?     'cull' ( in 1-element array of float CullDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 53
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-1.geom.out b/Test/baseResults/hlsl.clipdistance-1.geom.out
index 144b877..5348359 100644
--- a/Test/baseResults/hlsl.clipdistance-1.geom.out
+++ b/Test/baseResults/hlsl.clipdistance-1.geom.out
@@ -550,7 +550,7 @@
 0:?     'OutputStream.clip' ( out 2-element array of float ClipDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 118
 
                               Capability Geometry
diff --git a/Test/baseResults/hlsl.clipdistance-1.vert.out b/Test/baseResults/hlsl.clipdistance-1.vert.out
index d1d1370..7d8b49f 100644
--- a/Test/baseResults/hlsl.clipdistance-1.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-1.vert.out
@@ -108,7 +108,7 @@
 0:?     'cull' ( out 1-element array of float CullDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 46
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-2.frag.out b/Test/baseResults/hlsl.clipdistance-2.frag.out
index 64604eb..d1da7bc 100644
--- a/Test/baseResults/hlsl.clipdistance-2.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-2.frag.out
@@ -290,7 +290,7 @@
 0:?     'cull' ( in 4-element array of float CullDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 84
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-2.geom.out b/Test/baseResults/hlsl.clipdistance-2.geom.out
index a8abd02..bdee84f 100644
--- a/Test/baseResults/hlsl.clipdistance-2.geom.out
+++ b/Test/baseResults/hlsl.clipdistance-2.geom.out
@@ -724,7 +724,7 @@
 0:?     'OutputStream.clip' ( out 4-element array of float ClipDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 128
 
                               Capability Geometry
diff --git a/Test/baseResults/hlsl.clipdistance-2.vert.out b/Test/baseResults/hlsl.clipdistance-2.vert.out
index 397a25d..77bd23d 100644
--- a/Test/baseResults/hlsl.clipdistance-2.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-2.vert.out
@@ -420,7 +420,7 @@
 0:?     'cull' ( out 4-element array of float CullDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 89
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-3.frag.out b/Test/baseResults/hlsl.clipdistance-3.frag.out
index 3b5082e..c7eda56 100644
--- a/Test/baseResults/hlsl.clipdistance-3.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-3.frag.out
@@ -98,7 +98,7 @@
 0:?     'cull' ( in 2-element array of float CullDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 53
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-3.geom.out b/Test/baseResults/hlsl.clipdistance-3.geom.out
index f8ba5c6..2e6b5f6 100644
--- a/Test/baseResults/hlsl.clipdistance-3.geom.out
+++ b/Test/baseResults/hlsl.clipdistance-3.geom.out
@@ -630,7 +630,7 @@
 0:?     'OutputStream.clip1' ( out 4-element array of float ClipDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 127
 
                               Capability Geometry
diff --git a/Test/baseResults/hlsl.clipdistance-3.vert.out b/Test/baseResults/hlsl.clipdistance-3.vert.out
index 01afd17..c9289a5 100644
--- a/Test/baseResults/hlsl.clipdistance-3.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-3.vert.out
@@ -136,7 +136,7 @@
 0:?     'cull' ( out 2-element array of float CullDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 51
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-4.frag.out b/Test/baseResults/hlsl.clipdistance-4.frag.out
index 95f81c9..8a46b15 100644
--- a/Test/baseResults/hlsl.clipdistance-4.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-4.frag.out
@@ -174,7 +174,7 @@
 0:?     'v.ClipRect' ( in 4-element array of float ClipDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 57
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-4.geom.out b/Test/baseResults/hlsl.clipdistance-4.geom.out
index 1096e02..31d3205 100644
--- a/Test/baseResults/hlsl.clipdistance-4.geom.out
+++ b/Test/baseResults/hlsl.clipdistance-4.geom.out
@@ -612,7 +612,7 @@
 0:?     'OutputStream.clip1' ( out 4-element array of float ClipDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 130
 
                               Capability Geometry
diff --git a/Test/baseResults/hlsl.clipdistance-4.vert.out b/Test/baseResults/hlsl.clipdistance-4.vert.out
index d05fae4..7fca9d4 100644
--- a/Test/baseResults/hlsl.clipdistance-4.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-4.vert.out
@@ -270,7 +270,7 @@
 0:?     '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 72
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-5.frag.out b/Test/baseResults/hlsl.clipdistance-5.frag.out
index afdd4c4..f0adb05 100644
--- a/Test/baseResults/hlsl.clipdistance-5.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-5.frag.out
@@ -232,7 +232,7 @@
 0:?     'v.ClipRect' ( in 4-element array of float ClipDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 62
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-5.vert.out b/Test/baseResults/hlsl.clipdistance-5.vert.out
index 3e8f1fe..264c22c 100644
--- a/Test/baseResults/hlsl.clipdistance-5.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-5.vert.out
@@ -318,7 +318,7 @@
 0:?     '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 73
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-6.frag.out b/Test/baseResults/hlsl.clipdistance-6.frag.out
index 3ee8065..49c225a 100644
--- a/Test/baseResults/hlsl.clipdistance-6.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-6.frag.out
@@ -282,7 +282,7 @@
 0:?     'v.clip1' ( in 8-element array of float ClipDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 79
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-6.vert.out b/Test/baseResults/hlsl.clipdistance-6.vert.out
index a386d0a..024d028 100644
--- a/Test/baseResults/hlsl.clipdistance-6.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-6.vert.out
@@ -428,7 +428,7 @@
 0:?     '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 86
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-7.frag.out b/Test/baseResults/hlsl.clipdistance-7.frag.out
index 94b6a79..5ff568e 100644
--- a/Test/baseResults/hlsl.clipdistance-7.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-7.frag.out
@@ -270,7 +270,7 @@
 0:?     'v.clip1' ( in 8-element array of float ClipDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 78
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-7.vert.out b/Test/baseResults/hlsl.clipdistance-7.vert.out
index 87e34bd..24eced8 100644
--- a/Test/baseResults/hlsl.clipdistance-7.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-7.vert.out
@@ -384,7 +384,7 @@
 0:?     '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 81
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-8.frag.out b/Test/baseResults/hlsl.clipdistance-8.frag.out
index 98c9505..f4e55ac 100644
--- a/Test/baseResults/hlsl.clipdistance-8.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-8.frag.out
@@ -186,7 +186,7 @@
 0:?     'v.clip1' ( in 4-element array of float ClipDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 65
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-8.vert.out b/Test/baseResults/hlsl.clipdistance-8.vert.out
index 88800e3..456e11f 100644
--- a/Test/baseResults/hlsl.clipdistance-8.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-8.vert.out
@@ -240,7 +240,7 @@
 0:?     '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 62
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-9.frag.out b/Test/baseResults/hlsl.clipdistance-9.frag.out
index ff7f261..0a17eaf 100644
--- a/Test/baseResults/hlsl.clipdistance-9.frag.out
+++ b/Test/baseResults/hlsl.clipdistance-9.frag.out
@@ -144,7 +144,7 @@
 0:?     'clip0' ( in 4-element array of float ClipDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 68
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.clipdistance-9.vert.out b/Test/baseResults/hlsl.clipdistance-9.vert.out
index 2d0c9b0..61b996f 100644
--- a/Test/baseResults/hlsl.clipdistance-9.vert.out
+++ b/Test/baseResults/hlsl.clipdistance-9.vert.out
@@ -194,7 +194,7 @@
 0:?     'clip0' ( out 4-element array of float ClipDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 67
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.color.hull.tesc.out b/Test/baseResults/hlsl.color.hull.tesc.out
index 72e0b7e..c5be8e4 100644
--- a/Test/baseResults/hlsl.color.hull.tesc.out
+++ b/Test/baseResults/hlsl.color.hull.tesc.out
@@ -356,7 +356,7 @@
 0:?     '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 127
 
                               Capability Tessellation
diff --git a/Test/baseResults/hlsl.comparison.vec.frag.out b/Test/baseResults/hlsl.comparison.vec.frag.out
index ff73e17..5936c9a 100644
--- a/Test/baseResults/hlsl.comparison.vec.frag.out
+++ b/Test/baseResults/hlsl.comparison.vec.frag.out
@@ -262,7 +262,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 96
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.conditional.frag.out b/Test/baseResults/hlsl.conditional.frag.out
index 7df88e7..e23d49c 100644
--- a/Test/baseResults/hlsl.conditional.frag.out
+++ b/Test/baseResults/hlsl.conditional.frag.out
@@ -522,7 +522,7 @@
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 206
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.constantbuffer.frag.out b/Test/baseResults/hlsl.constantbuffer.frag.out
index fa8881d..48d849b 100644
--- a/Test/baseResults/hlsl.constantbuffer.frag.out
+++ b/Test/baseResults/hlsl.constantbuffer.frag.out
@@ -133,7 +133,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 66
 
                               Capability Shader
@@ -240,6 +240,5 @@
               60:    7(fvec4)   CompositeConstruct 59 59 59 59
                                 ReturnValue 60
               30:             Label
-              62:    7(fvec4) Undef
-                              ReturnValue 62
+                              Unreachable
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.constructArray.vert.out b/Test/baseResults/hlsl.constructArray.vert.out
index 6e18ad9..8ba41bc 100644
--- a/Test/baseResults/hlsl.constructArray.vert.out
+++ b/Test/baseResults/hlsl.constructArray.vert.out
@@ -268,7 +268,7 @@
 0:?     '@entryPointOutput' ( out 4-component vector of float Position)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 89
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.constructexpr.frag.out b/Test/baseResults/hlsl.constructexpr.frag.out
index 227c7e1..085821a 100644
--- a/Test/baseResults/hlsl.constructexpr.frag.out
+++ b/Test/baseResults/hlsl.constructexpr.frag.out
@@ -104,7 +104,7 @@
 0:?     '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 40
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.constructimat.frag.out b/Test/baseResults/hlsl.constructimat.frag.out
index 075dabb..a5014db 100644
--- a/Test/baseResults/hlsl.constructimat.frag.out
+++ b/Test/baseResults/hlsl.constructimat.frag.out
@@ -545,7 +545,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 98
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.coverage.frag.out b/Test/baseResults/hlsl.coverage.frag.out
index 691d643..a148073 100644
--- a/Test/baseResults/hlsl.coverage.frag.out
+++ b/Test/baseResults/hlsl.coverage.frag.out
@@ -119,7 +119,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 52
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.dashI.vert.out b/Test/baseResults/hlsl.dashI.vert.out
index eb9406b..d5e7e20 100644
--- a/Test/baseResults/hlsl.dashI.vert.out
+++ b/Test/baseResults/hlsl.dashI.vert.out
@@ -1,6 +1,6 @@
 hlsl.dashI.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 40
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out b/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out
index 2bc08da..559708d 100644
--- a/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out
+++ b/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out
@@ -1,6 +1,6 @@
 hlsl.deadFunctionMissingBody.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 18
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.depthGreater.frag.out b/Test/baseResults/hlsl.depthGreater.frag.out
index df6311f..7092802 100644
--- a/Test/baseResults/hlsl.depthGreater.frag.out
+++ b/Test/baseResults/hlsl.depthGreater.frag.out
@@ -50,7 +50,7 @@
 0:?     'depth' ( out float FragDepth)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 20
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.depthLess.frag.out b/Test/baseResults/hlsl.depthLess.frag.out
index d2b9d8e..275eaf1 100644
--- a/Test/baseResults/hlsl.depthLess.frag.out
+++ b/Test/baseResults/hlsl.depthLess.frag.out
@@ -42,7 +42,7 @@
 0:?     '@entryPointOutput' ( out float FragDepth)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 16
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.discard.frag.out b/Test/baseResults/hlsl.discard.frag.out
index cc7c866..23ed871 100644
--- a/Test/baseResults/hlsl.discard.frag.out
+++ b/Test/baseResults/hlsl.discard.frag.out
@@ -108,7 +108,7 @@
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 50
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.doLoop.frag.out b/Test/baseResults/hlsl.doLoop.frag.out
index bb56465..2b65a76 100644
--- a/Test/baseResults/hlsl.doLoop.frag.out
+++ b/Test/baseResults/hlsl.doLoop.frag.out
@@ -2,68 +2,95 @@
 Shader version: 500
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float)
-0:2    Function Parameters: 
-0:2      'input' ( in float)
+0:1  Function Definition: f0( ( temp void)
+0:1    Function Parameters: 
 0:?     Sequence
-0:3      Loop with condition not tested first: Unroll
-0:3        Loop Condition
-0:3        Constant:
-0:3          false (const bool)
-0:3        No loop body
-0:4      Loop with condition not tested first: Unroll
-0:4        Loop Condition
-0:4        Constant:
-0:4          false (const bool)
-0:4        No loop body
-0:5      Loop with condition not tested first
-0:5        Loop Condition
-0:5        Compare Greater Than ( temp bool)
-0:5          'input' ( in float)
-0:5          Constant:
-0:5            2.000000
-0:5        Loop Body
-0:?         Sequence
-0:5          Branch: Return with expression
-0:5            Construct vec4 ( temp 4-component vector of float)
-0:5              'input' ( in float)
-0:6      Loop with condition not tested first
+0:2      Loop with condition not tested first: Unroll
+0:2        Loop Condition
+0:2        Constant:
+0:2          false (const bool)
+0:2        No loop body
+0:5  Function Definition: f1( ( temp void)
+0:5    Function Parameters: 
+0:?     Sequence
+0:6      Loop with condition not tested first: Unroll
 0:6        Loop Condition
-0:6        Compare Less Than ( temp bool)
-0:6          'input' ( in float)
-0:6          Constant:
-0:6            10.000000
-0:6        Loop Body
-0:6        Pre-Increment ( temp float)
-0:6          'input' ( in float)
-0:7      Loop with condition not tested first
-0:7        Loop Condition
-0:7        Compare Less Than ( temp bool)
-0:7          Pre-Increment ( temp float)
-0:7            'input' ( in float)
-0:7          Constant:
-0:7            10.000000
-0:7        Loop Body
-0:7        Loop with condition tested first
-0:7          Loop Condition
-0:7          Compare Less Than ( temp bool)
-0:7            Pre-Increment ( temp float)
-0:7              'input' ( in float)
-0:7            Constant:
-0:7              10.000000
-0:7          No loop body
-0:8      Branch: Return with expression
-0:8        Construct vec4 ( temp 4-component vector of float)
-0:8          'input' ( in float)
-0:2  Function Definition: PixelShaderFunction( ( temp void)
-0:2    Function Parameters: 
+0:6        Constant:
+0:6          false (const bool)
+0:6        No loop body
+0:9  Function Definition: f2(f1; ( temp float)
+0:9    Function Parameters: 
+0:9      'input' ( in float)
 0:?     Sequence
-0:2      move second child to first child ( temp float)
+0:10      Loop with condition not tested first
+0:10        Loop Condition
+0:10        Compare Greater Than ( temp bool)
+0:10          'input' ( in float)
+0:10          Constant:
+0:10            2.000000
+0:10        Loop Body
+0:?         Sequence
+0:10          Branch: Return with expression
+0:10            Construct float ( temp float)
+0:10              Construct vec4 ( temp 4-component vector of float)
+0:10                'input' ( in float)
+0:13  Function Definition: f3(f1; ( temp void)
+0:13    Function Parameters: 
+0:13      'input' ( in float)
+0:?     Sequence
+0:14      Loop with condition not tested first
+0:14        Loop Condition
+0:14        Compare Less Than ( temp bool)
+0:14          'input' ( in float)
+0:14          Constant:
+0:14            10.000000
+0:14        Loop Body
+0:14        Pre-Increment ( temp float)
+0:14          'input' ( in float)
+0:17  Function Definition: f4(f1; ( temp void)
+0:17    Function Parameters: 
+0:17      'input' ( in float)
+0:?     Sequence
+0:18      Loop with condition not tested first
+0:18        Loop Condition
+0:18        Compare Less Than ( temp bool)
+0:18          Pre-Increment ( temp float)
+0:18            'input' ( in float)
+0:18          Constant:
+0:18            10.000000
+0:18        Loop Body
+0:18        Loop with condition tested first
+0:18          Loop Condition
+0:18          Compare Less Than ( temp bool)
+0:18            Pre-Increment ( temp float)
+0:18              'input' ( in float)
+0:18            Constant:
+0:18              10.000000
+0:18          No loop body
+0:22  Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float)
+0:22    Function Parameters: 
+0:22      'input' ( in float)
+0:?     Sequence
+0:23      Function Call: f0( ( temp void)
+0:24      Function Call: f1( ( temp void)
+0:25      Function Call: f2(f1; ( temp float)
+0:25        'input' ( in float)
+0:26      Function Call: f3(f1; ( temp void)
+0:26        'input' ( in float)
+0:27      Function Call: f4(f1; ( temp void)
+0:27        'input' ( in float)
+0:28      Branch: Return with expression
+0:28        Construct vec4 ( temp 4-component vector of float)
+0:28          'input' ( in float)
+0:22  Function Definition: PixelShaderFunction( ( temp void)
+0:22    Function Parameters: 
+0:?     Sequence
+0:22      move second child to first child ( temp float)
 0:?         'input' ( temp float)
 0:?         'input' (layout( location=0) in float)
-0:2      move second child to first child ( temp 4-component vector of float)
+0:22      move second child to first child ( temp 4-component vector of float)
 0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:2        Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
+0:22        Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
 0:?           'input' ( temp float)
 0:?   Linker Objects
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
@@ -76,196 +103,272 @@
 Shader version: 500
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float)
-0:2    Function Parameters: 
-0:2      'input' ( in float)
+0:1  Function Definition: f0( ( temp void)
+0:1    Function Parameters: 
 0:?     Sequence
-0:3      Loop with condition not tested first: Unroll
-0:3        Loop Condition
-0:3        Constant:
-0:3          false (const bool)
-0:3        No loop body
-0:4      Loop with condition not tested first: Unroll
-0:4        Loop Condition
-0:4        Constant:
-0:4          false (const bool)
-0:4        No loop body
-0:5      Loop with condition not tested first
-0:5        Loop Condition
-0:5        Compare Greater Than ( temp bool)
-0:5          'input' ( in float)
-0:5          Constant:
-0:5            2.000000
-0:5        Loop Body
-0:?         Sequence
-0:5          Branch: Return with expression
-0:5            Construct vec4 ( temp 4-component vector of float)
-0:5              'input' ( in float)
-0:6      Loop with condition not tested first
+0:2      Loop with condition not tested first: Unroll
+0:2        Loop Condition
+0:2        Constant:
+0:2          false (const bool)
+0:2        No loop body
+0:5  Function Definition: f1( ( temp void)
+0:5    Function Parameters: 
+0:?     Sequence
+0:6      Loop with condition not tested first: Unroll
 0:6        Loop Condition
-0:6        Compare Less Than ( temp bool)
-0:6          'input' ( in float)
-0:6          Constant:
-0:6            10.000000
-0:6        Loop Body
-0:6        Pre-Increment ( temp float)
-0:6          'input' ( in float)
-0:7      Loop with condition not tested first
-0:7        Loop Condition
-0:7        Compare Less Than ( temp bool)
-0:7          Pre-Increment ( temp float)
-0:7            'input' ( in float)
-0:7          Constant:
-0:7            10.000000
-0:7        Loop Body
-0:7        Loop with condition tested first
-0:7          Loop Condition
-0:7          Compare Less Than ( temp bool)
-0:7            Pre-Increment ( temp float)
-0:7              'input' ( in float)
-0:7            Constant:
-0:7              10.000000
-0:7          No loop body
-0:8      Branch: Return with expression
-0:8        Construct vec4 ( temp 4-component vector of float)
-0:8          'input' ( in float)
-0:2  Function Definition: PixelShaderFunction( ( temp void)
-0:2    Function Parameters: 
+0:6        Constant:
+0:6          false (const bool)
+0:6        No loop body
+0:9  Function Definition: f2(f1; ( temp float)
+0:9    Function Parameters: 
+0:9      'input' ( in float)
 0:?     Sequence
-0:2      move second child to first child ( temp float)
+0:10      Loop with condition not tested first
+0:10        Loop Condition
+0:10        Compare Greater Than ( temp bool)
+0:10          'input' ( in float)
+0:10          Constant:
+0:10            2.000000
+0:10        Loop Body
+0:?         Sequence
+0:10          Branch: Return with expression
+0:10            Construct float ( temp float)
+0:10              Construct vec4 ( temp 4-component vector of float)
+0:10                'input' ( in float)
+0:13  Function Definition: f3(f1; ( temp void)
+0:13    Function Parameters: 
+0:13      'input' ( in float)
+0:?     Sequence
+0:14      Loop with condition not tested first
+0:14        Loop Condition
+0:14        Compare Less Than ( temp bool)
+0:14          'input' ( in float)
+0:14          Constant:
+0:14            10.000000
+0:14        Loop Body
+0:14        Pre-Increment ( temp float)
+0:14          'input' ( in float)
+0:17  Function Definition: f4(f1; ( temp void)
+0:17    Function Parameters: 
+0:17      'input' ( in float)
+0:?     Sequence
+0:18      Loop with condition not tested first
+0:18        Loop Condition
+0:18        Compare Less Than ( temp bool)
+0:18          Pre-Increment ( temp float)
+0:18            'input' ( in float)
+0:18          Constant:
+0:18            10.000000
+0:18        Loop Body
+0:18        Loop with condition tested first
+0:18          Loop Condition
+0:18          Compare Less Than ( temp bool)
+0:18            Pre-Increment ( temp float)
+0:18              'input' ( in float)
+0:18            Constant:
+0:18              10.000000
+0:18          No loop body
+0:22  Function Definition: @PixelShaderFunction(f1; ( temp 4-component vector of float)
+0:22    Function Parameters: 
+0:22      'input' ( in float)
+0:?     Sequence
+0:23      Function Call: f0( ( temp void)
+0:24      Function Call: f1( ( temp void)
+0:25      Function Call: f2(f1; ( temp float)
+0:25        'input' ( in float)
+0:26      Function Call: f3(f1; ( temp void)
+0:26        'input' ( in float)
+0:27      Function Call: f4(f1; ( temp void)
+0:27        'input' ( in float)
+0:28      Branch: Return with expression
+0:28        Construct vec4 ( temp 4-component vector of float)
+0:28          'input' ( in float)
+0:22  Function Definition: PixelShaderFunction( ( temp void)
+0:22    Function Parameters: 
+0:?     Sequence
+0:22      move second child to first child ( temp float)
 0:?         'input' ( temp float)
 0:?         'input' (layout( location=0) in float)
-0:2      move second child to first child ( temp 4-component vector of float)
+0:22      move second child to first child ( temp 4-component vector of float)
 0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:2        Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
+0:22        Function Call: @PixelShaderFunction(f1; ( temp 4-component vector of float)
 0:?           'input' ( temp float)
 0:?   Linker Objects
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     'input' (layout( location=0) in float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
-// Id's are bound by 71
+// Generated by (magic number): 80008
+// Id's are bound by 99
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction" 64 67
+                              EntryPoint Fragment 4  "PixelShaderFunction" 92 95
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "PixelShaderFunction"
-                              Name 11  "@PixelShaderFunction(f1;"
-                              Name 10  "input"
-                              Name 62  "input"
-                              Name 64  "input"
-                              Name 67  "@entryPointOutput"
-                              Name 68  "param"
-                              Decorate 64(input) Location 0
-                              Decorate 67(@entryPointOutput) Location 0
+                              Name 6  "f0("
+                              Name 8  "f1("
+                              Name 14  "f2(f1;"
+                              Name 13  "input"
+                              Name 18  "f3(f1;"
+                              Name 17  "input"
+                              Name 21  "f4(f1;"
+                              Name 20  "input"
+                              Name 26  "@PixelShaderFunction(f1;"
+                              Name 25  "input"
+                              Name 77  "param"
+                              Name 80  "param"
+                              Name 83  "param"
+                              Name 90  "input"
+                              Name 92  "input"
+                              Name 95  "@entryPointOutput"
+                              Name 96  "param"
+                              Decorate 92(input) Location 0
+                              Decorate 95(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
-               6:             TypeFloat 32
-               7:             TypePointer Function 6(float)
-               8:             TypeVector 6(float) 4
-               9:             TypeFunction 8(fvec4) 7(ptr)
-              17:             TypeBool
-              18:    17(bool) ConstantFalse
-              31:    6(float) Constant 1073741824
-              38:    6(float) Constant 1065353216
-              41:    6(float) Constant 1092616192
-              63:             TypePointer Input 6(float)
-       64(input):     63(ptr) Variable Input
-              66:             TypePointer Output 8(fvec4)
-67(@entryPointOutput):     66(ptr) Variable Output
+              10:             TypeFloat 32
+              11:             TypePointer Function 10(float)
+              12:             TypeFunction 10(float) 11(ptr)
+              16:             TypeFunction 2 11(ptr)
+              23:             TypeVector 10(float) 4
+              24:             TypeFunction 23(fvec4) 11(ptr)
+              32:             TypeBool
+              33:    32(bool) ConstantFalse
+              47:   10(float) Constant 1073741824
+              55:   10(float) Constant 1065353216
+              58:   10(float) Constant 1092616192
+              91:             TypePointer Input 10(float)
+       92(input):     91(ptr) Variable Input
+              94:             TypePointer Output 23(fvec4)
+95(@entryPointOutput):     94(ptr) Variable Output
 4(PixelShaderFunction):           2 Function None 3
                5:             Label
-       62(input):      7(ptr) Variable Function
-       68(param):      7(ptr) Variable Function
-              65:    6(float) Load 64(input)
-                              Store 62(input) 65
-              69:    6(float) Load 62(input)
-                              Store 68(param) 69
-              70:    8(fvec4) FunctionCall 11(@PixelShaderFunction(f1;) 68(param)
-                              Store 67(@entryPointOutput) 70
+       90(input):     11(ptr) Variable Function
+       96(param):     11(ptr) Variable Function
+              93:   10(float) Load 92(input)
+                              Store 90(input) 93
+              97:   10(float) Load 90(input)
+                              Store 96(param) 97
+              98:   23(fvec4) FunctionCall 26(@PixelShaderFunction(f1;) 96(param)
+                              Store 95(@entryPointOutput) 98
                               Return
                               FunctionEnd
-11(@PixelShaderFunction(f1;):    8(fvec4) Function None 9
-       10(input):      7(ptr) FunctionParameter
-              12:             Label
-                              Branch 13
-              13:             Label
-                              LoopMerge 15 16 Unroll 
-                              Branch 14
-              14:             Label
-                              Branch 16
-              16:             Label
-                              BranchConditional 18 13 15
-              15:             Label
-                              Branch 19
-              19:             Label
-                              LoopMerge 21 22 Unroll 
-                              Branch 20
-              20:             Label
-                              Branch 22
-              22:             Label
-                              BranchConditional 18 19 21
-              21:             Label
-                              Branch 23
-              23:             Label
-                              LoopMerge 25 26 None
-                              Branch 24
-              24:             Label
-              27:    6(float) Load 10(input)
-              28:    8(fvec4) CompositeConstruct 27 27 27 27
-                              ReturnValue 28
-              26:             Label
-              30:    6(float) Load 10(input)
-              32:    17(bool) FOrdGreaterThan 30 31
-                              BranchConditional 32 23 25
-              25:             Label
-                              Branch 33
-              33:             Label
-                              LoopMerge 35 36 None
+          6(f0():           2 Function None 3
+               7:             Label
+                              Branch 28
+              28:             Label
+                              LoopMerge 30 31 Unroll 
+                              Branch 29
+              29:             Label
+                              Branch 31
+              31:             Label
+                              BranchConditional 33 28 30
+              30:             Label
+                              Return
+                              FunctionEnd
+          8(f1():           2 Function None 3
+               9:             Label
                               Branch 34
               34:             Label
-              37:    6(float) Load 10(input)
-              39:    6(float) FAdd 37 38
-                              Store 10(input) 39
-                              Branch 36
-              36:             Label
-              40:    6(float) Load 10(input)
-              42:    17(bool) FOrdLessThan 40 41
-                              BranchConditional 42 33 35
+                              LoopMerge 36 37 Unroll 
+                              Branch 35
               35:             Label
-                              Branch 43
-              43:             Label
-                              LoopMerge 45 46 None
-                              Branch 44
-              44:             Label
-                              Branch 47
-              47:             Label
-                              LoopMerge 49 50 None
+                              Branch 37
+              37:             Label
+                              BranchConditional 33 34 36
+              36:             Label
+                              Return
+                              FunctionEnd
+      14(f2(f1;):   10(float) Function None 12
+       13(input):     11(ptr) FunctionParameter
+              15:             Label
+                              Branch 38
+              38:             Label
+                              LoopMerge 40 41 None
+                              Branch 39
+              39:             Label
+              42:   10(float) Load 13(input)
+              43:   23(fvec4) CompositeConstruct 42 42 42 42
+              44:   10(float) CompositeExtract 43 0
+                              ReturnValue 44
+              41:             Label
+                              Branch 38
+              40:             Label
+                              Unreachable
+                              FunctionEnd
+      18(f3(f1;):           2 Function None 16
+       17(input):     11(ptr) FunctionParameter
+              19:             Label
+                              Branch 50
+              50:             Label
+                              LoopMerge 52 53 None
                               Branch 51
               51:             Label
-              52:    6(float) Load 10(input)
-              53:    6(float) FAdd 52 38
-                              Store 10(input) 53
-              54:    17(bool) FOrdLessThan 53 41
-                              BranchConditional 54 48 49
-              48:               Label
-                                Branch 50
-              50:               Label
-                                Branch 47
-              49:             Label
-                              Branch 46
-              46:             Label
-              55:    6(float) Load 10(input)
-              56:    6(float) FAdd 55 38
-                              Store 10(input) 56
-              57:    17(bool) FOrdLessThan 56 41
-                              BranchConditional 57 43 45
-              45:             Label
-              58:    6(float) Load 10(input)
-              59:    8(fvec4) CompositeConstruct 58 58 58 58
-                              ReturnValue 59
+              54:   10(float) Load 17(input)
+              56:   10(float) FAdd 54 55
+                              Store 17(input) 56
+                              Branch 53
+              53:             Label
+              57:   10(float) Load 17(input)
+              59:    32(bool) FOrdLessThan 57 58
+                              BranchConditional 59 50 52
+              52:             Label
+                              Return
+                              FunctionEnd
+      21(f4(f1;):           2 Function None 16
+       20(input):     11(ptr) FunctionParameter
+              22:             Label
+                              Branch 60
+              60:             Label
+                              LoopMerge 62 63 None
+                              Branch 61
+              61:             Label
+                              Branch 64
+              64:             Label
+                              LoopMerge 66 67 None
+                              Branch 68
+              68:             Label
+              69:   10(float) Load 20(input)
+              70:   10(float) FAdd 69 55
+                              Store 20(input) 70
+              71:    32(bool) FOrdLessThan 70 58
+                              BranchConditional 71 65 66
+              65:               Label
+                                Branch 67
+              67:               Label
+                                Branch 64
+              66:             Label
+                              Branch 63
+              63:             Label
+              72:   10(float) Load 20(input)
+              73:   10(float) FAdd 72 55
+                              Store 20(input) 73
+              74:    32(bool) FOrdLessThan 73 58
+                              BranchConditional 74 60 62
+              62:             Label
+                              Return
+                              FunctionEnd
+26(@PixelShaderFunction(f1;):   23(fvec4) Function None 24
+       25(input):     11(ptr) FunctionParameter
+              27:             Label
+       77(param):     11(ptr) Variable Function
+       80(param):     11(ptr) Variable Function
+       83(param):     11(ptr) Variable Function
+              75:           2 FunctionCall 6(f0()
+              76:           2 FunctionCall 8(f1()
+              78:   10(float) Load 25(input)
+                              Store 77(param) 78
+              79:   10(float) FunctionCall 14(f2(f1;) 77(param)
+              81:   10(float) Load 25(input)
+                              Store 80(param) 81
+              82:           2 FunctionCall 18(f3(f1;) 80(param)
+              84:   10(float) Load 25(input)
+                              Store 83(param) 84
+              85:           2 FunctionCall 21(f4(f1;) 83(param)
+              86:   10(float) Load 25(input)
+              87:   23(fvec4) CompositeConstruct 86 86 86 86
+                              ReturnValue 87
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.domain.1.tese.out b/Test/baseResults/hlsl.domain.1.tese.out
index 4bc8bac..0b7b275 100644
--- a/Test/baseResults/hlsl.domain.1.tese.out
+++ b/Test/baseResults/hlsl.domain.1.tese.out
@@ -286,7 +286,7 @@
 0:?     'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 103
 
                               Capability Tessellation
diff --git a/Test/baseResults/hlsl.domain.2.tese.out b/Test/baseResults/hlsl.domain.2.tese.out
index 827f80f..e6ec924 100644
--- a/Test/baseResults/hlsl.domain.2.tese.out
+++ b/Test/baseResults/hlsl.domain.2.tese.out
@@ -284,7 +284,7 @@
 0:?     'pcf_data.foo' (layout( location=2) patch in float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 98
 
                               Capability Tessellation
diff --git a/Test/baseResults/hlsl.domain.3.tese.out b/Test/baseResults/hlsl.domain.3.tese.out
index dd3d502..4b8584c 100644
--- a/Test/baseResults/hlsl.domain.3.tese.out
+++ b/Test/baseResults/hlsl.domain.3.tese.out
@@ -264,7 +264,7 @@
 0:?     'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 100
 
                               Capability Tessellation
diff --git a/Test/baseResults/hlsl.earlydepthstencil.frag.out b/Test/baseResults/hlsl.earlydepthstencil.frag.out
index e598a51..f30b89a 100755
--- a/Test/baseResults/hlsl.earlydepthstencil.frag.out
+++ b/Test/baseResults/hlsl.earlydepthstencil.frag.out
@@ -108,7 +108,7 @@
 0:?     'input.Position' ( in 4-component vector of float FragCoord)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 50
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.emptystruct.init.vert.out b/Test/baseResults/hlsl.emptystruct.init.vert.out
index 410915c..c3c3aef 100644
--- a/Test/baseResults/hlsl.emptystruct.init.vert.out
+++ b/Test/baseResults/hlsl.emptystruct.init.vert.out
@@ -60,7 +60,7 @@
 0:?     'vertexIndex' (layout( location=0) in uint)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 29
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.emptystructreturn.frag.out b/Test/baseResults/hlsl.emptystructreturn.frag.out
index 1c9953b..bb9c26c 100644
--- a/Test/baseResults/hlsl.emptystructreturn.frag.out
+++ b/Test/baseResults/hlsl.emptystructreturn.frag.out
@@ -51,7 +51,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 27
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.emptystructreturn.vert.out b/Test/baseResults/hlsl.emptystructreturn.vert.out
index 65d326d..22027bf 100644
--- a/Test/baseResults/hlsl.emptystructreturn.vert.out
+++ b/Test/baseResults/hlsl.emptystructreturn.vert.out
@@ -49,7 +49,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 27
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.entry-in.frag.out b/Test/baseResults/hlsl.entry-in.frag.out
index dc9eea4..d65532d 100644
--- a/Test/baseResults/hlsl.entry-in.frag.out
+++ b/Test/baseResults/hlsl.entry-in.frag.out
@@ -166,7 +166,7 @@
 0:?     'i.i2' (layout( location=1) flat in 2-component vector of int)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 74
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.entry-out.frag.out b/Test/baseResults/hlsl.entry-out.frag.out
index 6ca3011..e1af284 100644
--- a/Test/baseResults/hlsl.entry-out.frag.out
+++ b/Test/baseResults/hlsl.entry-out.frag.out
@@ -244,7 +244,7 @@
 0:?     'out3.i' (layout( location=5) out 2-component vector of int)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 89
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.entry.rename.frag.out b/Test/baseResults/hlsl.entry.rename.frag.out
index 9e23396..b0e958b 100644
--- a/Test/baseResults/hlsl.entry.rename.frag.out
+++ b/Test/baseResults/hlsl.entry.rename.frag.out
@@ -72,7 +72,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 32
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out b/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out
index 61367d6..c4e6baf 100644
--- a/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out
+++ b/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out
@@ -1,6 +1,6 @@
 hlsl.explicitDescriptorSet.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 31
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.explicitDescriptorSet.frag.out b/Test/baseResults/hlsl.explicitDescriptorSet.frag.out
index 9bc2f01..9665ad2 100644
--- a/Test/baseResults/hlsl.explicitDescriptorSet.frag.out
+++ b/Test/baseResults/hlsl.explicitDescriptorSet.frag.out
@@ -1,6 +1,6 @@
 hlsl.explicitDescriptorSet.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 31
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.flatten.return.frag.out b/Test/baseResults/hlsl.flatten.return.frag.out
index e47fe3e..bc388f8 100644
--- a/Test/baseResults/hlsl.flatten.return.frag.out
+++ b/Test/baseResults/hlsl.flatten.return.frag.out
@@ -118,7 +118,7 @@
 0:?     '@entryPointOutput.other_struct_member3' (layout( location=3) out float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 49
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.flattenOpaque.frag.out b/Test/baseResults/hlsl.flattenOpaque.frag.out
index 94d02f4..688656c 100644
--- a/Test/baseResults/hlsl.flattenOpaque.frag.out
+++ b/Test/baseResults/hlsl.flattenOpaque.frag.out
@@ -295,7 +295,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 122
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.flattenOpaqueInit.vert.out b/Test/baseResults/hlsl.flattenOpaqueInit.vert.out
index a5a5944..6d16858 100644
--- a/Test/baseResults/hlsl.flattenOpaqueInit.vert.out
+++ b/Test/baseResults/hlsl.flattenOpaqueInit.vert.out
@@ -165,7 +165,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 82
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out b/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out
index 5a2aa2a..62a2e8e 100644
--- a/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out
+++ b/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out
@@ -107,7 +107,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 59
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.flattenSubset.frag.out b/Test/baseResults/hlsl.flattenSubset.frag.out
index 262a29d..f6da1a9 100644
--- a/Test/baseResults/hlsl.flattenSubset.frag.out
+++ b/Test/baseResults/hlsl.flattenSubset.frag.out
@@ -115,7 +115,7 @@
 0:?     'vpos' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 54
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.flattenSubset2.frag.out b/Test/baseResults/hlsl.flattenSubset2.frag.out
index 77dc4cd..40d92a9 100644
--- a/Test/baseResults/hlsl.flattenSubset2.frag.out
+++ b/Test/baseResults/hlsl.flattenSubset2.frag.out
@@ -149,7 +149,7 @@
 0:?     'vpos' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 56
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.float1.frag.out b/Test/baseResults/hlsl.float1.frag.out
index 49827dc..0f7600e 100644
--- a/Test/baseResults/hlsl.float1.frag.out
+++ b/Test/baseResults/hlsl.float1.frag.out
@@ -65,7 +65,7 @@
 0:?     'scalar' ( global float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 27
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.float4.frag.out b/Test/baseResults/hlsl.float4.frag.out
index 8dc3307..8e8c821 100644
--- a/Test/baseResults/hlsl.float4.frag.out
+++ b/Test/baseResults/hlsl.float4.frag.out
@@ -42,7 +42,7 @@
 0:?     'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor,  uniform bool ff1, layout( offset=20) uniform float ff2, layout( binding=0 offset=32) uniform 4-component vector of float ff3, layout( binding=1 offset=48) uniform 4-component vector of float ff4})
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 26
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.forLoop.frag.out b/Test/baseResults/hlsl.forLoop.frag.out
index 3e835f8..b6c2710 100644
--- a/Test/baseResults/hlsl.forLoop.frag.out
+++ b/Test/baseResults/hlsl.forLoop.frag.out
@@ -2,197 +2,251 @@
 Shader version: 500
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
-0:2    Function Parameters: 
-0:2      'input' ( in 4-component vector of float)
+0:1  Function Definition: f0( ( temp void)
+0:1    Function Parameters: 
 0:?     Sequence
 0:?       Sequence
-0:3        Loop with condition tested first
-0:3          No loop condition
-0:3          No loop body
-0:4      Sequence
-0:4        Pre-Increment ( temp 4-component vector of float)
-0:4          'input' ( in 4-component vector of float)
-0:4        Loop with condition tested first
-0:4          No loop condition
-0:4          No loop body
-0:?       Sequence
-0:5        Loop with condition tested first: Unroll
-0:5          Loop Condition
-0:5          any ( temp bool)
-0:5            NotEqual ( temp 4-component vector of bool)
-0:5              'input' ( in 4-component vector of float)
-0:5              'input' ( in 4-component vector of float)
-0:5          No loop body
-0:?       Sequence
+0:2        Loop with condition tested first
+0:2          No loop condition
+0:2          No loop body
+0:5  Function Definition: f1(vf4; ( temp void)
+0:5    Function Parameters: 
+0:5      'input' ( in 4-component vector of float)
+0:?     Sequence
+0:6      Sequence
+0:6        Pre-Increment ( temp 4-component vector of float)
+0:6          'input' ( in 4-component vector of float)
 0:6        Loop with condition tested first
-0:6          Loop Condition
-0:6          any ( temp bool)
-0:6            NotEqual ( temp 4-component vector of bool)
-0:6              'input' ( in 4-component vector of float)
-0:6              'input' ( in 4-component vector of float)
-0:6          Loop Body
-0:?           Sequence
-0:6            Branch: Return with expression
-0:6              Negate value ( temp 4-component vector of float)
-0:6                'input' ( in 4-component vector of float)
-0:7      Sequence
-0:7        Pre-Decrement ( temp 4-component vector of float)
-0:7          'input' ( in 4-component vector of float)
-0:7        Loop with condition tested first
-0:7          Loop Condition
-0:7          any ( temp bool)
-0:7            NotEqual ( temp 4-component vector of bool)
-0:7              'input' ( in 4-component vector of float)
-0:7              'input' ( in 4-component vector of float)
-0:7          Loop Body
-0:?           Sequence
-0:7            Branch: Return with expression
-0:7              Negate value ( temp 4-component vector of float)
-0:7                'input' ( in 4-component vector of float)
-0:7          Loop Terminal Expression
-0:7          add second child into first child ( temp 4-component vector of float)
-0:7            'input' ( in 4-component vector of float)
-0:7            Constant:
-0:7              2.000000
+0:6          No loop condition
+0:6          No loop body
+0:9  Function Definition: f2(vf4; ( temp void)
+0:9    Function Parameters: 
+0:9      'input' ( in 4-component vector of float)
+0:?     Sequence
 0:?       Sequence
-0:8        Loop with condition tested first
-0:8          No loop condition
-0:8          Loop Body
-0:8          Test condition and select ( temp void)
-0:8            Condition
-0:8            Compare Greater Than ( temp bool)
-0:8              direct index ( temp float)
-0:8                'input' ( in 4-component vector of float)
-0:8                Constant:
-0:8                  0 (const int)
-0:8              Constant:
-0:8                2.000000
-0:8            true case
-0:8            Branch: Break
+0:10        Loop with condition tested first: Unroll
+0:10          Loop Condition
+0:10          any ( temp bool)
+0:10            NotEqual ( temp 4-component vector of bool)
+0:10              'input' ( in 4-component vector of float)
+0:10              'input' ( in 4-component vector of float)
+0:10          No loop body
+0:13  Function Definition: f3(vf4; ( temp float)
+0:13    Function Parameters: 
+0:13      'input' ( in 4-component vector of float)
+0:?     Sequence
 0:?       Sequence
-0:9        Loop with condition tested first
-0:9          No loop condition
-0:9          Loop Body
-0:9          Test condition and select ( temp void)
-0:9            Condition
-0:9            Compare Greater Than ( temp bool)
-0:9              direct index ( temp float)
-0:9                'input' ( in 4-component vector of float)
-0:9                Constant:
-0:9                  0 (const int)
-0:9              Constant:
-0:9                2.000000
-0:9            true case
-0:9            Branch: Continue
-0:11      Sequence
-0:11        move second child to first child ( temp int)
-0:11          'ii' ( temp int)
-0:11          Constant:
-0:11            -1 (const int)
-0:11        Loop with condition tested first
-0:11          Loop Condition
-0:11          Compare Less Than ( temp bool)
-0:11            'ii' ( temp int)
-0:11            Constant:
-0:11              3 (const int)
-0:11          Loop Body
-0:11          Test condition and select ( temp void)
-0:11            Condition
-0:11            Compare Equal ( temp bool)
-0:11              'ii' ( temp int)
-0:11              Constant:
-0:11                2 (const int)
-0:11            true case
-0:11            Branch: Continue
-0:11          Loop Terminal Expression
-0:11          Pre-Increment ( temp int)
-0:11            'ii' ( temp int)
-0:12      Pre-Decrement ( temp float)
-0:12        'ii' ( temp float)
-0:13      Sequence
-0:13        move second child to first child ( temp int)
-0:13          'first' ( temp int)
-0:13          Constant:
-0:13            0 (const int)
-0:13        move second child to first child ( temp int)
-0:13          'second' ( temp int)
-0:13          Constant:
-0:13            1 (const int)
-0:13        Loop with condition tested first
-0:13          No loop condition
-0:13          Loop Body
-0:13          add ( temp int)
-0:13            'first' ( temp int)
-0:13            'second' ( temp int)
-0:14      Sequence
-0:14        move second child to first child ( temp int)
-0:14          'i' ( temp int)
-0:14          Constant:
-0:14            0 (const int)
-0:14        move second child to first child ( temp int)
-0:14          'count' ( temp int)
-0:14          Convert float to int ( temp int)
-0:14            'ii' ( temp float)
 0:14        Loop with condition tested first
 0:14          Loop Condition
-0:14          Compare Less Than ( temp bool)
-0:14            'i' ( temp int)
-0:14            'count' ( temp int)
-0:14          No loop body
-0:14          Loop Terminal Expression
-0:14          Post-Increment ( temp int)
-0:14            'i' ( temp int)
-0:15      Sequence
-0:15        move second child to first child ( temp float)
-0:15          'first' ( temp float)
-0:15          Constant:
-0:15            0.000000
-0:15        Loop with condition tested first
-0:15          Loop Condition
-0:15          Compare Less Than ( temp bool)
-0:15            'first' ( temp float)
-0:15            direct index ( temp float)
-0:15              'second' ( temp 2-element array of float)
-0:15              Constant:
-0:15                0 (const int)
-0:15          Loop Body
-0:15          add ( temp float)
-0:15            add ( temp float)
-0:15              'first' ( temp float)
-0:15              direct index ( temp float)
-0:15                'second' ( temp 2-element array of float)
-0:15                Constant:
-0:15                  1 (const int)
-0:15            'third' ( temp float)
-0:15          Loop Terminal Expression
-0:15          Pre-Increment ( temp float)
-0:15            direct index ( temp float)
-0:15              'second' ( temp 2-element array of float)
-0:15              Constant:
-0:15                1 (const int)
-0:?       Sequence
-0:16        Comma ( temp float)
-0:16          Comma ( temp float)
-0:16            Pre-Decrement ( temp float)
-0:16              'ii' ( temp float)
-0:16            Pre-Decrement ( temp float)
-0:16              'ii' ( temp float)
-0:16          Pre-Decrement ( temp float)
-0:16            'ii' ( temp float)
-0:16        Loop with condition tested first
-0:16          No loop condition
-0:16          Loop Body
-0:16          'ii' ( temp float)
-0:2  Function Definition: PixelShaderFunction( ( temp void)
-0:2    Function Parameters: 
+0:14          any ( temp bool)
+0:14            NotEqual ( temp 4-component vector of bool)
+0:14              'input' ( in 4-component vector of float)
+0:14              'input' ( in 4-component vector of float)
+0:14          Loop Body
+0:?           Sequence
+0:14            Branch: Return with expression
+0:14              Construct float ( temp float)
+0:14                Negate value ( temp 4-component vector of float)
+0:14                  'input' ( in 4-component vector of float)
+0:17  Function Definition: f4(vf4; ( temp float)
+0:17    Function Parameters: 
+0:17      'input' ( in 4-component vector of float)
 0:?     Sequence
-0:2      move second child to first child ( temp 4-component vector of float)
+0:18      Sequence
+0:18        Pre-Decrement ( temp 4-component vector of float)
+0:18          'input' ( in 4-component vector of float)
+0:18        Loop with condition tested first
+0:18          Loop Condition
+0:18          any ( temp bool)
+0:18            NotEqual ( temp 4-component vector of bool)
+0:18              'input' ( in 4-component vector of float)
+0:18              'input' ( in 4-component vector of float)
+0:18          Loop Body
+0:?           Sequence
+0:18            Branch: Return with expression
+0:18              Construct float ( temp float)
+0:18                Negate value ( temp 4-component vector of float)
+0:18                  'input' ( in 4-component vector of float)
+0:18          Loop Terminal Expression
+0:18          add second child into first child ( temp 4-component vector of float)
+0:18            'input' ( in 4-component vector of float)
+0:18            Constant:
+0:18              2.000000
+0:21  Function Definition: f5(vf4; ( temp void)
+0:21    Function Parameters: 
+0:21      'input' ( in 4-component vector of float)
+0:?     Sequence
+0:?       Sequence
+0:22        Loop with condition tested first
+0:22          No loop condition
+0:22          Loop Body
+0:22          Test condition and select ( temp void)
+0:22            Condition
+0:22            Compare Greater Than ( temp bool)
+0:22              direct index ( temp float)
+0:22                'input' ( in 4-component vector of float)
+0:22                Constant:
+0:22                  0 (const int)
+0:22              Constant:
+0:22                2.000000
+0:22            true case
+0:22            Branch: Break
+0:25  Function Definition: f6(vf4; ( temp void)
+0:25    Function Parameters: 
+0:25      'input' ( in 4-component vector of float)
+0:?     Sequence
+0:?       Sequence
+0:26        Loop with condition tested first
+0:26          No loop condition
+0:26          Loop Body
+0:26          Test condition and select ( temp void)
+0:26            Condition
+0:26            Compare Greater Than ( temp bool)
+0:26              direct index ( temp float)
+0:26                'input' ( in 4-component vector of float)
+0:26                Constant:
+0:26                  0 (const int)
+0:26              Constant:
+0:26                2.000000
+0:26            true case
+0:26            Branch: Continue
+0:29  Function Definition: f99( ( temp void)
+0:29    Function Parameters: 
+0:?     Sequence
+0:30      Sequence
+0:30        move second child to first child ( temp int)
+0:30          'first' ( temp int)
+0:30          Constant:
+0:30            0 (const int)
+0:30        move second child to first child ( temp int)
+0:30          'second' ( temp int)
+0:30          Constant:
+0:30            1 (const int)
+0:30        Loop with condition tested first
+0:30          No loop condition
+0:30          Loop Body
+0:30          add ( temp int)
+0:30            'first' ( temp int)
+0:30            'second' ( temp int)
+0:33  Function Definition: f100(f1; ( temp void)
+0:33    Function Parameters: 
+0:33      'ii' ( in float)
+0:?     Sequence
+0:?       Sequence
+0:34        Comma ( temp float)
+0:34          Comma ( temp float)
+0:34            Pre-Decrement ( temp float)
+0:34              'ii' ( in float)
+0:34            Pre-Decrement ( temp float)
+0:34              'ii' ( in float)
+0:34          Pre-Decrement ( temp float)
+0:34            'ii' ( in float)
+0:34        Loop with condition tested first
+0:34          No loop condition
+0:34          Loop Body
+0:34          'ii' ( in float)
+0:38  Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:38    Function Parameters: 
+0:38      'input' ( in 4-component vector of float)
+0:?     Sequence
+0:39      Function Call: f0( ( temp void)
+0:40      Function Call: f1(vf4; ( temp void)
+0:40        'input' ( in 4-component vector of float)
+0:41      Function Call: f2(vf4; ( temp void)
+0:41        'input' ( in 4-component vector of float)
+0:42      Function Call: f3(vf4; ( temp float)
+0:42        'input' ( in 4-component vector of float)
+0:43      Function Call: f4(vf4; ( temp float)
+0:43        'input' ( in 4-component vector of float)
+0:44      Function Call: f5(vf4; ( temp void)
+0:44        'input' ( in 4-component vector of float)
+0:45      Function Call: f6(vf4; ( temp void)
+0:45        'input' ( in 4-component vector of float)
+0:48      Sequence
+0:48        move second child to first child ( temp int)
+0:48          'ii' ( temp int)
+0:48          Constant:
+0:48            -1 (const int)
+0:48        Loop with condition tested first
+0:48          Loop Condition
+0:48          Compare Less Than ( temp bool)
+0:48            'ii' ( temp int)
+0:48            Constant:
+0:48              3 (const int)
+0:48          Loop Body
+0:48          Test condition and select ( temp void)
+0:48            Condition
+0:48            Compare Equal ( temp bool)
+0:48              'ii' ( temp int)
+0:48              Constant:
+0:48                2 (const int)
+0:48            true case
+0:48            Branch: Continue
+0:48          Loop Terminal Expression
+0:48          Pre-Increment ( temp int)
+0:48            'ii' ( temp int)
+0:49      Pre-Decrement ( temp float)
+0:49        'ii' ( temp float)
+0:51      Function Call: f99( ( temp void)
+0:53      Sequence
+0:53        move second child to first child ( temp int)
+0:53          'i' ( temp int)
+0:53          Constant:
+0:53            0 (const int)
+0:53        move second child to first child ( temp int)
+0:53          'count' ( temp int)
+0:53          Convert float to int ( temp int)
+0:53            'ii' ( temp float)
+0:53        Loop with condition tested first
+0:53          Loop Condition
+0:53          Compare Less Than ( temp bool)
+0:53            'i' ( temp int)
+0:53            'count' ( temp int)
+0:53          No loop body
+0:53          Loop Terminal Expression
+0:53          Post-Increment ( temp int)
+0:53            'i' ( temp int)
+0:54      Sequence
+0:54        move second child to first child ( temp float)
+0:54          'first' ( temp float)
+0:54          Constant:
+0:54            0.000000
+0:54        Loop with condition tested first
+0:54          Loop Condition
+0:54          Compare Less Than ( temp bool)
+0:54            'first' ( temp float)
+0:54            direct index ( temp float)
+0:54              'second' ( temp 2-element array of float)
+0:54              Constant:
+0:54                0 (const int)
+0:54          Loop Body
+0:54          add ( temp float)
+0:54            add ( temp float)
+0:54              'first' ( temp float)
+0:54              direct index ( temp float)
+0:54                'second' ( temp 2-element array of float)
+0:54                Constant:
+0:54                  1 (const int)
+0:54            'third' ( temp float)
+0:54          Loop Terminal Expression
+0:54          Pre-Increment ( temp float)
+0:54            direct index ( temp float)
+0:54              'second' ( temp 2-element array of float)
+0:54              Constant:
+0:54                1 (const int)
+0:56      Function Call: f100(f1; ( temp void)
+0:56        'ii' ( temp float)
+0:58      Branch: Return with expression
+0:58        'input' ( in 4-component vector of float)
+0:38  Function Definition: PixelShaderFunction( ( temp void)
+0:38    Function Parameters: 
+0:?     Sequence
+0:38      move second child to first child ( temp 4-component vector of float)
 0:?         'input' ( temp 4-component vector of float)
 0:?         'input' (layout( location=0) in 4-component vector of float)
-0:2      move second child to first child ( temp 4-component vector of float)
+0:38      move second child to first child ( temp 4-component vector of float)
 0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:2        Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:38        Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
 0:?           'input' ( temp 4-component vector of float)
 0:?   Linker Objects
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
@@ -205,501 +259,654 @@
 Shader version: 500
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
-0:2    Function Parameters: 
-0:2      'input' ( in 4-component vector of float)
+0:1  Function Definition: f0( ( temp void)
+0:1    Function Parameters: 
 0:?     Sequence
 0:?       Sequence
-0:3        Loop with condition tested first
-0:3          No loop condition
-0:3          No loop body
-0:4      Sequence
-0:4        Pre-Increment ( temp 4-component vector of float)
-0:4          'input' ( in 4-component vector of float)
-0:4        Loop with condition tested first
-0:4          No loop condition
-0:4          No loop body
-0:?       Sequence
-0:5        Loop with condition tested first: Unroll
-0:5          Loop Condition
-0:5          any ( temp bool)
-0:5            NotEqual ( temp 4-component vector of bool)
-0:5              'input' ( in 4-component vector of float)
-0:5              'input' ( in 4-component vector of float)
-0:5          No loop body
-0:?       Sequence
+0:2        Loop with condition tested first
+0:2          No loop condition
+0:2          No loop body
+0:5  Function Definition: f1(vf4; ( temp void)
+0:5    Function Parameters: 
+0:5      'input' ( in 4-component vector of float)
+0:?     Sequence
+0:6      Sequence
+0:6        Pre-Increment ( temp 4-component vector of float)
+0:6          'input' ( in 4-component vector of float)
 0:6        Loop with condition tested first
-0:6          Loop Condition
-0:6          any ( temp bool)
-0:6            NotEqual ( temp 4-component vector of bool)
-0:6              'input' ( in 4-component vector of float)
-0:6              'input' ( in 4-component vector of float)
-0:6          Loop Body
-0:?           Sequence
-0:6            Branch: Return with expression
-0:6              Negate value ( temp 4-component vector of float)
-0:6                'input' ( in 4-component vector of float)
-0:7      Sequence
-0:7        Pre-Decrement ( temp 4-component vector of float)
-0:7          'input' ( in 4-component vector of float)
-0:7        Loop with condition tested first
-0:7          Loop Condition
-0:7          any ( temp bool)
-0:7            NotEqual ( temp 4-component vector of bool)
-0:7              'input' ( in 4-component vector of float)
-0:7              'input' ( in 4-component vector of float)
-0:7          Loop Body
-0:?           Sequence
-0:7            Branch: Return with expression
-0:7              Negate value ( temp 4-component vector of float)
-0:7                'input' ( in 4-component vector of float)
-0:7          Loop Terminal Expression
-0:7          add second child into first child ( temp 4-component vector of float)
-0:7            'input' ( in 4-component vector of float)
-0:7            Constant:
-0:7              2.000000
+0:6          No loop condition
+0:6          No loop body
+0:9  Function Definition: f2(vf4; ( temp void)
+0:9    Function Parameters: 
+0:9      'input' ( in 4-component vector of float)
+0:?     Sequence
 0:?       Sequence
-0:8        Loop with condition tested first
-0:8          No loop condition
-0:8          Loop Body
-0:8          Test condition and select ( temp void)
-0:8            Condition
-0:8            Compare Greater Than ( temp bool)
-0:8              direct index ( temp float)
-0:8                'input' ( in 4-component vector of float)
-0:8                Constant:
-0:8                  0 (const int)
-0:8              Constant:
-0:8                2.000000
-0:8            true case
-0:8            Branch: Break
+0:10        Loop with condition tested first: Unroll
+0:10          Loop Condition
+0:10          any ( temp bool)
+0:10            NotEqual ( temp 4-component vector of bool)
+0:10              'input' ( in 4-component vector of float)
+0:10              'input' ( in 4-component vector of float)
+0:10          No loop body
+0:13  Function Definition: f3(vf4; ( temp float)
+0:13    Function Parameters: 
+0:13      'input' ( in 4-component vector of float)
+0:?     Sequence
 0:?       Sequence
-0:9        Loop with condition tested first
-0:9          No loop condition
-0:9          Loop Body
-0:9          Test condition and select ( temp void)
-0:9            Condition
-0:9            Compare Greater Than ( temp bool)
-0:9              direct index ( temp float)
-0:9                'input' ( in 4-component vector of float)
-0:9                Constant:
-0:9                  0 (const int)
-0:9              Constant:
-0:9                2.000000
-0:9            true case
-0:9            Branch: Continue
-0:11      Sequence
-0:11        move second child to first child ( temp int)
-0:11          'ii' ( temp int)
-0:11          Constant:
-0:11            -1 (const int)
-0:11        Loop with condition tested first
-0:11          Loop Condition
-0:11          Compare Less Than ( temp bool)
-0:11            'ii' ( temp int)
-0:11            Constant:
-0:11              3 (const int)
-0:11          Loop Body
-0:11          Test condition and select ( temp void)
-0:11            Condition
-0:11            Compare Equal ( temp bool)
-0:11              'ii' ( temp int)
-0:11              Constant:
-0:11                2 (const int)
-0:11            true case
-0:11            Branch: Continue
-0:11          Loop Terminal Expression
-0:11          Pre-Increment ( temp int)
-0:11            'ii' ( temp int)
-0:12      Pre-Decrement ( temp float)
-0:12        'ii' ( temp float)
-0:13      Sequence
-0:13        move second child to first child ( temp int)
-0:13          'first' ( temp int)
-0:13          Constant:
-0:13            0 (const int)
-0:13        move second child to first child ( temp int)
-0:13          'second' ( temp int)
-0:13          Constant:
-0:13            1 (const int)
-0:13        Loop with condition tested first
-0:13          No loop condition
-0:13          Loop Body
-0:13          add ( temp int)
-0:13            'first' ( temp int)
-0:13            'second' ( temp int)
-0:14      Sequence
-0:14        move second child to first child ( temp int)
-0:14          'i' ( temp int)
-0:14          Constant:
-0:14            0 (const int)
-0:14        move second child to first child ( temp int)
-0:14          'count' ( temp int)
-0:14          Convert float to int ( temp int)
-0:14            'ii' ( temp float)
 0:14        Loop with condition tested first
 0:14          Loop Condition
-0:14          Compare Less Than ( temp bool)
-0:14            'i' ( temp int)
-0:14            'count' ( temp int)
-0:14          No loop body
-0:14          Loop Terminal Expression
-0:14          Post-Increment ( temp int)
-0:14            'i' ( temp int)
-0:15      Sequence
-0:15        move second child to first child ( temp float)
-0:15          'first' ( temp float)
-0:15          Constant:
-0:15            0.000000
-0:15        Loop with condition tested first
-0:15          Loop Condition
-0:15          Compare Less Than ( temp bool)
-0:15            'first' ( temp float)
-0:15            direct index ( temp float)
-0:15              'second' ( temp 2-element array of float)
-0:15              Constant:
-0:15                0 (const int)
-0:15          Loop Body
-0:15          add ( temp float)
-0:15            add ( temp float)
-0:15              'first' ( temp float)
-0:15              direct index ( temp float)
-0:15                'second' ( temp 2-element array of float)
-0:15                Constant:
-0:15                  1 (const int)
-0:15            'third' ( temp float)
-0:15          Loop Terminal Expression
-0:15          Pre-Increment ( temp float)
-0:15            direct index ( temp float)
-0:15              'second' ( temp 2-element array of float)
-0:15              Constant:
-0:15                1 (const int)
-0:?       Sequence
-0:16        Comma ( temp float)
-0:16          Comma ( temp float)
-0:16            Pre-Decrement ( temp float)
-0:16              'ii' ( temp float)
-0:16            Pre-Decrement ( temp float)
-0:16              'ii' ( temp float)
-0:16          Pre-Decrement ( temp float)
-0:16            'ii' ( temp float)
-0:16        Loop with condition tested first
-0:16          No loop condition
-0:16          Loop Body
-0:16          'ii' ( temp float)
-0:2  Function Definition: PixelShaderFunction( ( temp void)
-0:2    Function Parameters: 
+0:14          any ( temp bool)
+0:14            NotEqual ( temp 4-component vector of bool)
+0:14              'input' ( in 4-component vector of float)
+0:14              'input' ( in 4-component vector of float)
+0:14          Loop Body
+0:?           Sequence
+0:14            Branch: Return with expression
+0:14              Construct float ( temp float)
+0:14                Negate value ( temp 4-component vector of float)
+0:14                  'input' ( in 4-component vector of float)
+0:17  Function Definition: f4(vf4; ( temp float)
+0:17    Function Parameters: 
+0:17      'input' ( in 4-component vector of float)
 0:?     Sequence
-0:2      move second child to first child ( temp 4-component vector of float)
+0:18      Sequence
+0:18        Pre-Decrement ( temp 4-component vector of float)
+0:18          'input' ( in 4-component vector of float)
+0:18        Loop with condition tested first
+0:18          Loop Condition
+0:18          any ( temp bool)
+0:18            NotEqual ( temp 4-component vector of bool)
+0:18              'input' ( in 4-component vector of float)
+0:18              'input' ( in 4-component vector of float)
+0:18          Loop Body
+0:?           Sequence
+0:18            Branch: Return with expression
+0:18              Construct float ( temp float)
+0:18                Negate value ( temp 4-component vector of float)
+0:18                  'input' ( in 4-component vector of float)
+0:18          Loop Terminal Expression
+0:18          add second child into first child ( temp 4-component vector of float)
+0:18            'input' ( in 4-component vector of float)
+0:18            Constant:
+0:18              2.000000
+0:21  Function Definition: f5(vf4; ( temp void)
+0:21    Function Parameters: 
+0:21      'input' ( in 4-component vector of float)
+0:?     Sequence
+0:?       Sequence
+0:22        Loop with condition tested first
+0:22          No loop condition
+0:22          Loop Body
+0:22          Test condition and select ( temp void)
+0:22            Condition
+0:22            Compare Greater Than ( temp bool)
+0:22              direct index ( temp float)
+0:22                'input' ( in 4-component vector of float)
+0:22                Constant:
+0:22                  0 (const int)
+0:22              Constant:
+0:22                2.000000
+0:22            true case
+0:22            Branch: Break
+0:25  Function Definition: f6(vf4; ( temp void)
+0:25    Function Parameters: 
+0:25      'input' ( in 4-component vector of float)
+0:?     Sequence
+0:?       Sequence
+0:26        Loop with condition tested first
+0:26          No loop condition
+0:26          Loop Body
+0:26          Test condition and select ( temp void)
+0:26            Condition
+0:26            Compare Greater Than ( temp bool)
+0:26              direct index ( temp float)
+0:26                'input' ( in 4-component vector of float)
+0:26                Constant:
+0:26                  0 (const int)
+0:26              Constant:
+0:26                2.000000
+0:26            true case
+0:26            Branch: Continue
+0:29  Function Definition: f99( ( temp void)
+0:29    Function Parameters: 
+0:?     Sequence
+0:30      Sequence
+0:30        move second child to first child ( temp int)
+0:30          'first' ( temp int)
+0:30          Constant:
+0:30            0 (const int)
+0:30        move second child to first child ( temp int)
+0:30          'second' ( temp int)
+0:30          Constant:
+0:30            1 (const int)
+0:30        Loop with condition tested first
+0:30          No loop condition
+0:30          Loop Body
+0:30          add ( temp int)
+0:30            'first' ( temp int)
+0:30            'second' ( temp int)
+0:33  Function Definition: f100(f1; ( temp void)
+0:33    Function Parameters: 
+0:33      'ii' ( in float)
+0:?     Sequence
+0:?       Sequence
+0:34        Comma ( temp float)
+0:34          Comma ( temp float)
+0:34            Pre-Decrement ( temp float)
+0:34              'ii' ( in float)
+0:34            Pre-Decrement ( temp float)
+0:34              'ii' ( in float)
+0:34          Pre-Decrement ( temp float)
+0:34            'ii' ( in float)
+0:34        Loop with condition tested first
+0:34          No loop condition
+0:34          Loop Body
+0:34          'ii' ( in float)
+0:38  Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:38    Function Parameters: 
+0:38      'input' ( in 4-component vector of float)
+0:?     Sequence
+0:39      Function Call: f0( ( temp void)
+0:40      Function Call: f1(vf4; ( temp void)
+0:40        'input' ( in 4-component vector of float)
+0:41      Function Call: f2(vf4; ( temp void)
+0:41        'input' ( in 4-component vector of float)
+0:42      Function Call: f3(vf4; ( temp float)
+0:42        'input' ( in 4-component vector of float)
+0:43      Function Call: f4(vf4; ( temp float)
+0:43        'input' ( in 4-component vector of float)
+0:44      Function Call: f5(vf4; ( temp void)
+0:44        'input' ( in 4-component vector of float)
+0:45      Function Call: f6(vf4; ( temp void)
+0:45        'input' ( in 4-component vector of float)
+0:48      Sequence
+0:48        move second child to first child ( temp int)
+0:48          'ii' ( temp int)
+0:48          Constant:
+0:48            -1 (const int)
+0:48        Loop with condition tested first
+0:48          Loop Condition
+0:48          Compare Less Than ( temp bool)
+0:48            'ii' ( temp int)
+0:48            Constant:
+0:48              3 (const int)
+0:48          Loop Body
+0:48          Test condition and select ( temp void)
+0:48            Condition
+0:48            Compare Equal ( temp bool)
+0:48              'ii' ( temp int)
+0:48              Constant:
+0:48                2 (const int)
+0:48            true case
+0:48            Branch: Continue
+0:48          Loop Terminal Expression
+0:48          Pre-Increment ( temp int)
+0:48            'ii' ( temp int)
+0:49      Pre-Decrement ( temp float)
+0:49        'ii' ( temp float)
+0:51      Function Call: f99( ( temp void)
+0:53      Sequence
+0:53        move second child to first child ( temp int)
+0:53          'i' ( temp int)
+0:53          Constant:
+0:53            0 (const int)
+0:53        move second child to first child ( temp int)
+0:53          'count' ( temp int)
+0:53          Convert float to int ( temp int)
+0:53            'ii' ( temp float)
+0:53        Loop with condition tested first
+0:53          Loop Condition
+0:53          Compare Less Than ( temp bool)
+0:53            'i' ( temp int)
+0:53            'count' ( temp int)
+0:53          No loop body
+0:53          Loop Terminal Expression
+0:53          Post-Increment ( temp int)
+0:53            'i' ( temp int)
+0:54      Sequence
+0:54        move second child to first child ( temp float)
+0:54          'first' ( temp float)
+0:54          Constant:
+0:54            0.000000
+0:54        Loop with condition tested first
+0:54          Loop Condition
+0:54          Compare Less Than ( temp bool)
+0:54            'first' ( temp float)
+0:54            direct index ( temp float)
+0:54              'second' ( temp 2-element array of float)
+0:54              Constant:
+0:54                0 (const int)
+0:54          Loop Body
+0:54          add ( temp float)
+0:54            add ( temp float)
+0:54              'first' ( temp float)
+0:54              direct index ( temp float)
+0:54                'second' ( temp 2-element array of float)
+0:54                Constant:
+0:54                  1 (const int)
+0:54            'third' ( temp float)
+0:54          Loop Terminal Expression
+0:54          Pre-Increment ( temp float)
+0:54            direct index ( temp float)
+0:54              'second' ( temp 2-element array of float)
+0:54              Constant:
+0:54                1 (const int)
+0:56      Function Call: f100(f1; ( temp void)
+0:56        'ii' ( temp float)
+0:58      Branch: Return with expression
+0:58        'input' ( in 4-component vector of float)
+0:38  Function Definition: PixelShaderFunction( ( temp void)
+0:38    Function Parameters: 
+0:?     Sequence
+0:38      move second child to first child ( temp 4-component vector of float)
 0:?         'input' ( temp 4-component vector of float)
 0:?         'input' (layout( location=0) in 4-component vector of float)
-0:2      move second child to first child ( temp 4-component vector of float)
+0:38      move second child to first child ( temp 4-component vector of float)
 0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:2        Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:38        Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
 0:?           'input' ( temp 4-component vector of float)
 0:?   Linker Objects
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
-// Id's are bound by 183
+// Generated by (magic number): 80008
+// Id's are bound by 240
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction" 176 179
+                              EntryPoint Fragment 4  "PixelShaderFunction" 233 236
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "PixelShaderFunction"
-                              Name 11  "@PixelShaderFunction(vf4;"
-                              Name 10  "input"
-                              Name 92  "ii"
-                              Name 111  "ii"
-                              Name 114  "first"
-                              Name 116  "second"
-                              Name 124  "i"
-                              Name 125  "count"
-                              Name 138  "first"
-                              Name 149  "second"
-                              Name 157  "third"
-                              Name 174  "input"
-                              Name 176  "input"
-                              Name 179  "@entryPointOutput"
-                              Name 180  "param"
-                              Decorate 176(input) Location 0
-                              Decorate 179(@entryPointOutput) Location 0
+                              Name 6  "f0("
+                              Name 13  "f1(vf4;"
+                              Name 12  "input"
+                              Name 16  "f2(vf4;"
+                              Name 15  "input"
+                              Name 20  "f3(vf4;"
+                              Name 19  "input"
+                              Name 23  "f4(vf4;"
+                              Name 22  "input"
+                              Name 26  "f5(vf4;"
+                              Name 25  "input"
+                              Name 29  "f6(vf4;"
+                              Name 28  "input"
+                              Name 31  "f99("
+                              Name 36  "f100(f1;"
+                              Name 35  "ii"
+                              Name 40  "@PixelShaderFunction(vf4;"
+                              Name 39  "input"
+                              Name 124  "first"
+                              Name 126  "second"
+                              Name 146  "param"
+                              Name 149  "param"
+                              Name 152  "param"
+                              Name 155  "param"
+                              Name 158  "param"
+                              Name 161  "param"
+                              Name 164  "ii"
+                              Name 182  "ii"
+                              Name 186  "i"
+                              Name 187  "count"
+                              Name 200  "first"
+                              Name 211  "second"
+                              Name 219  "third"
+                              Name 225  "param"
+                              Name 231  "input"
+                              Name 233  "input"
+                              Name 236  "@entryPointOutput"
+                              Name 237  "param"
+                              Decorate 233(input) Location 0
+                              Decorate 236(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
-               6:             TypeFloat 32
-               7:             TypeVector 6(float) 4
-               8:             TypePointer Function 7(fvec4)
-               9:             TypeFunction 7(fvec4) 8(ptr)
-              18:    6(float) Constant 1065353216
-              32:             TypeBool
-              33:             TypeVector 32(bool) 4
-              63:    6(float) Constant 1073741824
-              71:             TypeInt 32 0
-              72:     71(int) Constant 0
-              73:             TypePointer Function 6(float)
-              90:             TypeInt 32 1
-              91:             TypePointer Function 90(int)
-              93:     90(int) Constant 4294967295
-             100:     90(int) Constant 3
-             103:     90(int) Constant 2
-             109:     90(int) Constant 1
-             115:     90(int) Constant 0
-             139:    6(float) Constant 0
-             146:     71(int) Constant 2
-             147:             TypeArray 6(float) 146
-             148:             TypePointer Function 147
-             175:             TypePointer Input 7(fvec4)
-      176(input):    175(ptr) Variable Input
-             178:             TypePointer Output 7(fvec4)
-179(@entryPointOutput):    178(ptr) Variable Output
+               8:             TypeFloat 32
+               9:             TypeVector 8(float) 4
+              10:             TypePointer Function 9(fvec4)
+              11:             TypeFunction 2 10(ptr)
+              18:             TypeFunction 8(float) 10(ptr)
+              33:             TypePointer Function 8(float)
+              34:             TypeFunction 2 33(ptr)
+              38:             TypeFunction 9(fvec4) 10(ptr)
+              47:    8(float) Constant 1065353216
+              61:             TypeBool
+              62:             TypeVector 61(bool) 4
+              95:    8(float) Constant 1073741824
+             104:             TypeInt 32 0
+             105:    104(int) Constant 0
+             122:             TypeInt 32 1
+             123:             TypePointer Function 122(int)
+             125:    122(int) Constant 0
+             127:    122(int) Constant 1
+             165:    122(int) Constant 4294967295
+             172:    122(int) Constant 3
+             175:    122(int) Constant 2
+             201:    8(float) Constant 0
+             208:    104(int) Constant 2
+             209:             TypeArray 8(float) 208
+             210:             TypePointer Function 209
+             232:             TypePointer Input 9(fvec4)
+      233(input):    232(ptr) Variable Input
+             235:             TypePointer Output 9(fvec4)
+236(@entryPointOutput):    235(ptr) Variable Output
 4(PixelShaderFunction):           2 Function None 3
                5:             Label
-      174(input):      8(ptr) Variable Function
-      180(param):      8(ptr) Variable Function
-             177:    7(fvec4) Load 176(input)
-                              Store 174(input) 177
-             181:    7(fvec4) Load 174(input)
-                              Store 180(param) 181
-             182:    7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 180(param)
-                              Store 179(@entryPointOutput) 182
+      231(input):     10(ptr) Variable Function
+      237(param):     10(ptr) Variable Function
+             234:    9(fvec4) Load 233(input)
+                              Store 231(input) 234
+             238:    9(fvec4) Load 231(input)
+                              Store 237(param) 238
+             239:    9(fvec4) FunctionCall 40(@PixelShaderFunction(vf4;) 237(param)
+                              Store 236(@entryPointOutput) 239
                               Return
                               FunctionEnd
-11(@PixelShaderFunction(vf4;):    7(fvec4) Function None 9
-       10(input):      8(ptr) FunctionParameter
-              12:             Label
-          92(ii):     91(ptr) Variable Function
-         111(ii):     73(ptr) Variable Function
-      114(first):     91(ptr) Variable Function
-     116(second):     91(ptr) Variable Function
-          124(i):     91(ptr) Variable Function
-      125(count):     91(ptr) Variable Function
-      138(first):     73(ptr) Variable Function
-     149(second):    148(ptr) Variable Function
-      157(third):     73(ptr) Variable Function
-                              Branch 13
-              13:             Label
-                              LoopMerge 15 16 None
-                              Branch 14
+          6(f0():           2 Function None 3
+               7:             Label
+                              Branch 42
+              42:             Label
+                              LoopMerge 44 45 None
+                              Branch 43
+              43:             Label
+                              Branch 45
+              45:             Label
+                              Branch 42
+              44:             Label
+                              Unreachable
+                              FunctionEnd
+     13(f1(vf4;):           2 Function None 11
+       12(input):     10(ptr) FunctionParameter
               14:             Label
-                              Branch 16
-              16:             Label
-                              Branch 13
-              15:             Label
-              17:    7(fvec4) Load 10(input)
-              19:    7(fvec4) CompositeConstruct 18 18 18 18
-              20:    7(fvec4) FAdd 17 19
-                              Store 10(input) 20
-                              Branch 21
-              21:             Label
-                              LoopMerge 23 24 None
-                              Branch 22
-              22:             Label
-                              Branch 24
-              24:             Label
-                              Branch 21
-              23:             Label
-                              Branch 25
-              25:             Label
-                              LoopMerge 27 28 Unroll 
-                              Branch 29
-              29:             Label
-              30:    7(fvec4) Load 10(input)
-              31:    7(fvec4) Load 10(input)
-              34:   33(bvec4) FOrdNotEqual 30 31
-              35:    32(bool) Any 34
-                              BranchConditional 35 26 27
-              26:               Label
-                                Branch 28
-              28:               Label
-                                Branch 25
-              27:             Label
-                              Branch 36
-              36:             Label
-                              LoopMerge 38 39 None
-                              Branch 40
-              40:             Label
-              41:    7(fvec4) Load 10(input)
-              42:    7(fvec4) Load 10(input)
-              43:   33(bvec4) FOrdNotEqual 41 42
-              44:    32(bool) Any 43
-                              BranchConditional 44 37 38
-              37:               Label
-              45:    7(fvec4)   Load 10(input)
-              46:    7(fvec4)   FNegate 45
-                                ReturnValue 46
-              39:               Label
-                                Branch 36
-              38:             Label
-              48:    7(fvec4) Load 10(input)
-              49:    7(fvec4) CompositeConstruct 18 18 18 18
-              50:    7(fvec4) FSub 48 49
-                              Store 10(input) 50
+              46:    9(fvec4) Load 12(input)
+              48:    9(fvec4) CompositeConstruct 47 47 47 47
+              49:    9(fvec4) FAdd 46 48
+                              Store 12(input) 49
+                              Branch 50
+              50:             Label
+                              LoopMerge 52 53 None
                               Branch 51
               51:             Label
-                              LoopMerge 53 54 None
-                              Branch 55
-              55:             Label
-              56:    7(fvec4) Load 10(input)
-              57:    7(fvec4) Load 10(input)
-              58:   33(bvec4) FOrdNotEqual 56 57
-              59:    32(bool) Any 58
-                              BranchConditional 59 52 53
-              52:               Label
-              60:    7(fvec4)   Load 10(input)
-              61:    7(fvec4)   FNegate 60
-                                ReturnValue 61
-              54:               Label
-              64:    7(fvec4)   Load 10(input)
-              65:    7(fvec4)   CompositeConstruct 63 63 63 63
-              66:    7(fvec4)   FAdd 64 65
-                                Store 10(input) 66
-                                Branch 51
+                              Branch 53
               53:             Label
-                              Branch 67
-              67:             Label
-                              LoopMerge 69 70 None
-                              Branch 68
-              68:             Label
-              74:     73(ptr) AccessChain 10(input) 72
-              75:    6(float) Load 74
-              76:    32(bool) FOrdGreaterThan 75 63
-                              SelectionMerge 78 None
-                              BranchConditional 76 77 78
-              77:               Label
-                                Branch 69
-              78:             Label
-                              Branch 70
-              70:             Label
-                              Branch 67
+                              Branch 50
+              52:             Label
+                              Unreachable
+                              FunctionEnd
+     16(f2(vf4;):           2 Function None 11
+       15(input):     10(ptr) FunctionParameter
+              17:             Label
+                              Branch 54
+              54:             Label
+                              LoopMerge 56 57 Unroll 
+                              Branch 58
+              58:             Label
+              59:    9(fvec4) Load 15(input)
+              60:    9(fvec4) Load 15(input)
+              63:   62(bvec4) FOrdNotEqual 59 60
+              64:    61(bool) Any 63
+                              BranchConditional 64 55 56
+              55:               Label
+                                Branch 57
+              57:               Label
+                                Branch 54
+              56:             Label
+                              Return
+                              FunctionEnd
+     20(f3(vf4;):    8(float) Function None 18
+       19(input):     10(ptr) FunctionParameter
+              21:             Label
+                              Branch 65
+              65:             Label
+                              LoopMerge 67 68 None
+                              Branch 69
               69:             Label
-                              Branch 80
-              80:             Label
-                              LoopMerge 82 83 None
-                              Branch 81
-              81:             Label
-              84:     73(ptr) AccessChain 10(input) 72
-              85:    6(float) Load 84
-              86:    32(bool) FOrdGreaterThan 85 63
-                              SelectionMerge 88 None
-                              BranchConditional 86 87 88
-              87:               Label
-                                Branch 83
-              88:             Label
-                              Branch 83
-              83:             Label
-                              Branch 80
+              70:    9(fvec4) Load 19(input)
+              71:    9(fvec4) Load 19(input)
+              72:   62(bvec4) FOrdNotEqual 70 71
+              73:    61(bool) Any 72
+                              BranchConditional 73 66 67
+              66:               Label
+              74:    9(fvec4)   Load 19(input)
+              75:    9(fvec4)   FNegate 74
+              76:    8(float)   CompositeExtract 75 0
+                                ReturnValue 76
+              68:               Label
+                                Branch 65
+              67:             Label
+              78:    8(float) Undef
+                              ReturnValue 78
+                              FunctionEnd
+     23(f4(vf4;):    8(float) Function None 18
+       22(input):     10(ptr) FunctionParameter
+              24:             Label
+              79:    9(fvec4) Load 22(input)
+              80:    9(fvec4) CompositeConstruct 47 47 47 47
+              81:    9(fvec4) FSub 79 80
+                              Store 22(input) 81
+                              Branch 82
               82:             Label
-                              Store 92(ii) 93
-                              Branch 94
-              94:             Label
-                              LoopMerge 96 97 None
-                              Branch 98
-              98:             Label
-              99:     90(int) Load 92(ii)
-             101:    32(bool) SLessThan 99 100
-                              BranchConditional 101 95 96
-              95:               Label
-             102:     90(int)   Load 92(ii)
-             104:    32(bool)   IEqual 102 103
-                                SelectionMerge 106 None
-                                BranchConditional 104 105 106
-             105:                 Label
-                                  Branch 97
-             106:               Label
-                                Branch 97
-              97:               Label
-             108:     90(int)   Load 92(ii)
-             110:     90(int)   IAdd 108 109
-                                Store 92(ii) 110
-                                Branch 94
-              96:             Label
-             112:    6(float) Load 111(ii)
-             113:    6(float) FSub 112 18
-                              Store 111(ii) 113
-                              Store 114(first) 115
-                              Store 116(second) 109
-                              Branch 117
-             117:             Label
-                              LoopMerge 119 120 None
-                              Branch 118
-             118:             Label
-             121:     90(int) Load 114(first)
-             122:     90(int) Load 116(second)
-             123:     90(int) IAdd 121 122
-                              Branch 120
+                              LoopMerge 84 85 None
+                              Branch 86
+              86:             Label
+              87:    9(fvec4) Load 22(input)
+              88:    9(fvec4) Load 22(input)
+              89:   62(bvec4) FOrdNotEqual 87 88
+              90:    61(bool) Any 89
+                              BranchConditional 90 83 84
+              83:               Label
+              91:    9(fvec4)   Load 22(input)
+              92:    9(fvec4)   FNegate 91
+              93:    8(float)   CompositeExtract 92 0
+                                ReturnValue 93
+              85:               Label
+                                Branch 82
+              84:             Label
+              99:    8(float) Undef
+                              ReturnValue 99
+                              FunctionEnd
+     26(f5(vf4;):           2 Function None 11
+       25(input):     10(ptr) FunctionParameter
+              27:             Label
+                              Branch 100
+             100:             Label
+                              LoopMerge 102 103 None
+                              Branch 101
+             101:             Label
+             106:     33(ptr) AccessChain 25(input) 105
+             107:    8(float) Load 106
+             108:    61(bool) FOrdGreaterThan 107 95
+                              SelectionMerge 110 None
+                              BranchConditional 108 109 110
+             109:               Label
+                                Branch 102
+             110:             Label
+                              Branch 103
+             103:             Label
+                              Branch 100
+             102:             Label
+                              Return
+                              FunctionEnd
+     29(f6(vf4;):           2 Function None 11
+       28(input):     10(ptr) FunctionParameter
+              30:             Label
+                              Branch 112
+             112:             Label
+                              LoopMerge 114 115 None
+                              Branch 113
+             113:             Label
+             116:     33(ptr) AccessChain 28(input) 105
+             117:    8(float) Load 116
+             118:    61(bool) FOrdGreaterThan 117 95
+                              SelectionMerge 120 None
+                              BranchConditional 118 119 120
+             119:               Label
+                                Branch 115
              120:             Label
-                              Branch 117
-             119:             Label
-                              Store 124(i) 115
-             126:    6(float) Load 111(ii)
-             127:     90(int) ConvertFToS 126
-                              Store 125(count) 127
+                              Branch 115
+             115:             Label
+                              Branch 112
+             114:             Label
+                              Unreachable
+                              FunctionEnd
+        31(f99():           2 Function None 3
+              32:             Label
+      124(first):    123(ptr) Variable Function
+     126(second):    123(ptr) Variable Function
+                              Store 124(first) 125
+                              Store 126(second) 127
                               Branch 128
              128:             Label
                               LoopMerge 130 131 None
-                              Branch 132
-             132:             Label
-             133:     90(int) Load 124(i)
-             134:     90(int) Load 125(count)
-             135:    32(bool) SLessThan 133 134
-                              BranchConditional 135 129 130
-             129:               Label
-                                Branch 131
-             131:               Label
-             136:     90(int)   Load 124(i)
-             137:     90(int)   IAdd 136 109
-                                Store 124(i) 137
-                                Branch 128
+                              Branch 129
+             129:             Label
+             132:    122(int) Load 124(first)
+             133:    122(int) Load 126(second)
+             134:    122(int) IAdd 132 133
+                              Branch 131
+             131:             Label
+                              Branch 128
              130:             Label
-                              Store 138(first) 139
-                              Branch 140
-             140:             Label
-                              LoopMerge 142 143 None
+                              Unreachable
+                              FunctionEnd
+    36(f100(f1;):           2 Function None 34
+          35(ii):     33(ptr) FunctionParameter
+              37:             Label
+             135:    8(float) Load 35(ii)
+             136:    8(float) FSub 135 47
+                              Store 35(ii) 136
+             137:    8(float) Load 35(ii)
+             138:    8(float) FSub 137 47
+                              Store 35(ii) 138
+             139:    8(float) Load 35(ii)
+             140:    8(float) FSub 139 47
+                              Store 35(ii) 140
+                              Branch 141
+             141:             Label
+                              LoopMerge 143 144 None
+                              Branch 142
+             142:             Label
                               Branch 144
              144:             Label
-             145:    6(float) Load 138(first)
-             150:     73(ptr) AccessChain 149(second) 115
-             151:    6(float) Load 150
-             152:    32(bool) FOrdLessThan 145 151
-                              BranchConditional 152 141 142
-             141:               Label
-             153:    6(float)   Load 138(first)
-             154:     73(ptr)   AccessChain 149(second) 109
-             155:    6(float)   Load 154
-             156:    6(float)   FAdd 153 155
-             158:    6(float)   Load 157(third)
-             159:    6(float)   FAdd 156 158
-                                Branch 143
-             143:               Label
-             160:     73(ptr)   AccessChain 149(second) 109
-             161:    6(float)   Load 160
-             162:    6(float)   FAdd 161 18
-                                Store 160 162
-                                Branch 140
-             142:             Label
-             163:    6(float) Load 111(ii)
-             164:    6(float) FSub 163 18
-                              Store 111(ii) 164
-             165:    6(float) Load 111(ii)
-             166:    6(float) FSub 165 18
-                              Store 111(ii) 166
-             167:    6(float) Load 111(ii)
-             168:    6(float) FSub 167 18
-                              Store 111(ii) 168
-                              Branch 169
-             169:             Label
-                              LoopMerge 171 172 None
+                              Branch 141
+             143:             Label
+                              Unreachable
+                              FunctionEnd
+40(@PixelShaderFunction(vf4;):    9(fvec4) Function None 38
+       39(input):     10(ptr) FunctionParameter
+              41:             Label
+      146(param):     10(ptr) Variable Function
+      149(param):     10(ptr) Variable Function
+      152(param):     10(ptr) Variable Function
+      155(param):     10(ptr) Variable Function
+      158(param):     10(ptr) Variable Function
+      161(param):     10(ptr) Variable Function
+         164(ii):    123(ptr) Variable Function
+         182(ii):     33(ptr) Variable Function
+          186(i):    123(ptr) Variable Function
+      187(count):    123(ptr) Variable Function
+      200(first):     33(ptr) Variable Function
+     211(second):    210(ptr) Variable Function
+      219(third):     33(ptr) Variable Function
+      225(param):     33(ptr) Variable Function
+             145:           2 FunctionCall 6(f0()
+             147:    9(fvec4) Load 39(input)
+                              Store 146(param) 147
+             148:           2 FunctionCall 13(f1(vf4;) 146(param)
+             150:    9(fvec4) Load 39(input)
+                              Store 149(param) 150
+             151:           2 FunctionCall 16(f2(vf4;) 149(param)
+             153:    9(fvec4) Load 39(input)
+                              Store 152(param) 153
+             154:    8(float) FunctionCall 20(f3(vf4;) 152(param)
+             156:    9(fvec4) Load 39(input)
+                              Store 155(param) 156
+             157:    8(float) FunctionCall 23(f4(vf4;) 155(param)
+             159:    9(fvec4) Load 39(input)
+                              Store 158(param) 159
+             160:           2 FunctionCall 26(f5(vf4;) 158(param)
+             162:    9(fvec4) Load 39(input)
+                              Store 161(param) 162
+             163:           2 FunctionCall 29(f6(vf4;) 161(param)
+                              Store 164(ii) 165
+                              Branch 166
+             166:             Label
+                              LoopMerge 168 169 None
                               Branch 170
              170:             Label
-                              Branch 172
-             172:             Label
-                              Branch 169
-             171:             Label
-             173:    7(fvec4) Undef
-                              ReturnValue 173
+             171:    122(int) Load 164(ii)
+             173:    61(bool) SLessThan 171 172
+                              BranchConditional 173 167 168
+             167:               Label
+             174:    122(int)   Load 164(ii)
+             176:    61(bool)   IEqual 174 175
+                                SelectionMerge 178 None
+                                BranchConditional 176 177 178
+             177:                 Label
+                                  Branch 169
+             178:               Label
+                                Branch 169
+             169:               Label
+             180:    122(int)   Load 164(ii)
+             181:    122(int)   IAdd 180 127
+                                Store 164(ii) 181
+                                Branch 166
+             168:             Label
+             183:    8(float) Load 182(ii)
+             184:    8(float) FSub 183 47
+                              Store 182(ii) 184
+             185:           2 FunctionCall 31(f99()
+                              Store 186(i) 125
+             188:    8(float) Load 182(ii)
+             189:    122(int) ConvertFToS 188
+                              Store 187(count) 189
+                              Branch 190
+             190:             Label
+                              LoopMerge 192 193 None
+                              Branch 194
+             194:             Label
+             195:    122(int) Load 186(i)
+             196:    122(int) Load 187(count)
+             197:    61(bool) SLessThan 195 196
+                              BranchConditional 197 191 192
+             191:               Label
+                                Branch 193
+             193:               Label
+             198:    122(int)   Load 186(i)
+             199:    122(int)   IAdd 198 127
+                                Store 186(i) 199
+                                Branch 190
+             192:             Label
+                              Store 200(first) 201
+                              Branch 202
+             202:             Label
+                              LoopMerge 204 205 None
+                              Branch 206
+             206:             Label
+             207:    8(float) Load 200(first)
+             212:     33(ptr) AccessChain 211(second) 125
+             213:    8(float) Load 212
+             214:    61(bool) FOrdLessThan 207 213
+                              BranchConditional 214 203 204
+             203:               Label
+             215:    8(float)   Load 200(first)
+             216:     33(ptr)   AccessChain 211(second) 127
+             217:    8(float)   Load 216
+             218:    8(float)   FAdd 215 217
+             220:    8(float)   Load 219(third)
+             221:    8(float)   FAdd 218 220
+                                Branch 205
+             205:               Label
+             222:     33(ptr)   AccessChain 211(second) 127
+             223:    8(float)   Load 222
+             224:    8(float)   FAdd 223 47
+                                Store 222 224
+                                Branch 202
+             204:             Label
+             226:    8(float) Load 182(ii)
+                              Store 225(param) 226
+             227:           2 FunctionCall 36(f100(f1;) 225(param)
+             228:    9(fvec4) Load 39(input)
+                              ReturnValue 228
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.format.rwtexture.frag.out b/Test/baseResults/hlsl.format.rwtexture.frag.out
index 7ab5329..699dafe 100644
--- a/Test/baseResults/hlsl.format.rwtexture.frag.out
+++ b/Test/baseResults/hlsl.format.rwtexture.frag.out
@@ -184,7 +184,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 160
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.fraggeom.frag.out b/Test/baseResults/hlsl.fraggeom.frag.out
index af3564d..7509ddc 100644
--- a/Test/baseResults/hlsl.fraggeom.frag.out
+++ b/Test/baseResults/hlsl.fraggeom.frag.out
@@ -64,7 +64,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 25
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.gather.array.dx10.frag.out b/Test/baseResults/hlsl.gather.array.dx10.frag.out
index 32d27ab..b954c2b 100644
--- a/Test/baseResults/hlsl.gather.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.array.dx10.frag.out
@@ -262,7 +262,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 124
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.gather.basic.dx10.frag.out b/Test/baseResults/hlsl.gather.basic.dx10.frag.out
index 57e4499..530bccd 100644
--- a/Test/baseResults/hlsl.gather.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.basic.dx10.frag.out
@@ -258,7 +258,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 135
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.gather.basic.dx10.vert.out b/Test/baseResults/hlsl.gather.basic.dx10.vert.out
index a0c8d15..de745d1 100644
--- a/Test/baseResults/hlsl.gather.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.gather.basic.dx10.vert.out
@@ -220,7 +220,7 @@
 0:?     '@entryPointOutput.Pos' ( out 4-component vector of float Position)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 126
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.gather.offset.dx10.frag.out b/Test/baseResults/hlsl.gather.offset.dx10.frag.out
index 85ba294..3a89712 100644
--- a/Test/baseResults/hlsl.gather.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.offset.dx10.frag.out
@@ -208,7 +208,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 114
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
index c73547e..3601187 100644
--- a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
@@ -202,7 +202,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 97
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
index ac6c817..c2a4901 100644
--- a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
@@ -750,7 +750,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 255
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
index 8617d70..8bb01d5 100644
--- a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
@@ -758,7 +758,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 265
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
index 4a0d77a..a777678 100644
--- a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
@@ -1263,7 +1263,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 399
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
index c9740b0..2acc975 100644
--- a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
@@ -1255,7 +1255,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 389
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out
index 5e2d422..8ad84cd 100644
--- a/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out
@@ -456,7 +456,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 164
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.getdimensions.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.dx10.frag.out
index eb92fbb..cf406ed 100644
--- a/Test/baseResults/hlsl.getdimensions.dx10.frag.out
+++ b/Test/baseResults/hlsl.getdimensions.dx10.frag.out
@@ -2318,7 +2318,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 550
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.getdimensions.dx10.vert.out b/Test/baseResults/hlsl.getdimensions.dx10.vert.out
index cccdfeb..51368b6 100644
--- a/Test/baseResults/hlsl.getdimensions.dx10.vert.out
+++ b/Test/baseResults/hlsl.getdimensions.dx10.vert.out
@@ -116,7 +116,7 @@
 0:?     '@entryPointOutput.Pos' ( out 4-component vector of float Position)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 48
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out
index d8675a2..d096c38 100644
--- a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out
+++ b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out
@@ -718,7 +718,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 232
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
index d1e2844..7c46c8e 100644
--- a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
+++ b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
@@ -580,7 +580,7 @@
 0:?     'sample' (layout( location=0) flat in int)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 198
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.global-const-init.frag.out b/Test/baseResults/hlsl.global-const-init.frag.out
index a1aa55b..828c0c5 100644
--- a/Test/baseResults/hlsl.global-const-init.frag.out
+++ b/Test/baseResults/hlsl.global-const-init.frag.out
@@ -102,7 +102,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 50
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.groupid.comp.out b/Test/baseResults/hlsl.groupid.comp.out
index a76db50..65804b7 100644
--- a/Test/baseResults/hlsl.groupid.comp.out
+++ b/Test/baseResults/hlsl.groupid.comp.out
@@ -82,7 +82,7 @@
 0:?     'vGroupId' ( in 3-component vector of uint WorkGroupID)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 37
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.gs-hs-mix.tesc.out b/Test/baseResults/hlsl.gs-hs-mix.tesc.out
index 4971371..fabc110 100644
--- a/Test/baseResults/hlsl.gs-hs-mix.tesc.out
+++ b/Test/baseResults/hlsl.gs-hs-mix.tesc.out
@@ -798,7 +798,7 @@
 0:?     '@patchConstantOutput' (layout( location=1) patch out structure{ temp 3-element array of 3-component vector of float NormalWS})
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 216
 
                               Capability Tessellation
diff --git a/Test/baseResults/hlsl.hlslOffset.vert.out b/Test/baseResults/hlsl.hlslOffset.vert.out
index b0c0467..099318c 100644
--- a/Test/baseResults/hlsl.hlslOffset.vert.out
+++ b/Test/baseResults/hlsl.hlslOffset.vert.out
@@ -26,7 +26,7 @@
 0:?     'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform float m0, layout( row_major std140) uniform 3-component vector of float m4, layout( row_major std140) uniform float m16, layout( row_major std140 offset=20) uniform 3-component vector of float m20, layout( row_major std140 offset=36) uniform 3-component vector of float m36, layout( row_major std140 offset=56) uniform 2-component vector of float m56, layout( row_major std140) uniform float m64, layout( row_major std140) uniform 2-component vector of float m68, layout( row_major std140) uniform float m76, layout( row_major std140) uniform float m80, layout( row_major std140) uniform 1-element array of 2-component vector of float m96})
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 18
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.hull.1.tesc.out b/Test/baseResults/hlsl.hull.1.tesc.out
index 1be1498..ca4417d 100644
--- a/Test/baseResults/hlsl.hull.1.tesc.out
+++ b/Test/baseResults/hlsl.hull.1.tesc.out
@@ -224,7 +224,7 @@
 0:?     '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 89
 
                               Capability Tessellation
diff --git a/Test/baseResults/hlsl.hull.2.tesc.out b/Test/baseResults/hlsl.hull.2.tesc.out
index c8218d2..70fc4f1 100644
--- a/Test/baseResults/hlsl.hull.2.tesc.out
+++ b/Test/baseResults/hlsl.hull.2.tesc.out
@@ -220,7 +220,7 @@
 0:?     '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 91
 
                               Capability Tessellation
diff --git a/Test/baseResults/hlsl.hull.3.tesc.out b/Test/baseResults/hlsl.hull.3.tesc.out
index 4ff0198..fba7fac 100644
--- a/Test/baseResults/hlsl.hull.3.tesc.out
+++ b/Test/baseResults/hlsl.hull.3.tesc.out
@@ -220,7 +220,7 @@
 0:?     '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 91
 
                               Capability Tessellation
diff --git a/Test/baseResults/hlsl.hull.4.tesc.out b/Test/baseResults/hlsl.hull.4.tesc.out
index a99730d..253bdc6 100644
--- a/Test/baseResults/hlsl.hull.4.tesc.out
+++ b/Test/baseResults/hlsl.hull.4.tesc.out
@@ -476,7 +476,7 @@
 0:?     '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 127
 
                               Capability Tessellation
diff --git a/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out b/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out
index 41f3c0a..2bf3c7c 100644
--- a/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out
+++ b/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out
@@ -396,7 +396,7 @@
 0:?     '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 124
 
                               Capability Tessellation
diff --git a/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out b/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out
index 986e110..62e48f7 100644
--- a/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out
+++ b/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out
@@ -414,7 +414,7 @@
 0:?     '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 126
 
                               Capability Tessellation
diff --git a/Test/baseResults/hlsl.hull.void.tesc.out b/Test/baseResults/hlsl.hull.void.tesc.out
index c44c7e4..7c006db 100644
--- a/Test/baseResults/hlsl.hull.void.tesc.out
+++ b/Test/baseResults/hlsl.hull.void.tesc.out
@@ -108,7 +108,7 @@
 0:?     'InvocationId' ( in uint InvocationID)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 55
 
                               Capability Tessellation
diff --git a/Test/baseResults/hlsl.identifier.sample.frag.out b/Test/baseResults/hlsl.identifier.sample.frag.out
index a23451e..ddc4c51 100644
--- a/Test/baseResults/hlsl.identifier.sample.frag.out
+++ b/Test/baseResults/hlsl.identifier.sample.frag.out
@@ -86,7 +86,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 33
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.if.frag.out b/Test/baseResults/hlsl.if.frag.out
index 056b672..6b6de9c 100644
--- a/Test/baseResults/hlsl.if.frag.out
+++ b/Test/baseResults/hlsl.if.frag.out
@@ -2,104 +2,116 @@
 Shader version: 500
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
-0:2    Function Parameters: 
-0:2      'input' ( in 4-component vector of float)
+0:1  Function Definition: f0(vf4; ( temp 4-component vector of float)
+0:1    Function Parameters: 
+0:1      'input' ( in 4-component vector of float)
 0:?     Sequence
-0:3      Test condition and select ( temp void)
-0:3        Condition
-0:3        all ( temp bool)
-0:3          Equal ( temp 4-component vector of bool)
-0:3            'input' ( in 4-component vector of float)
-0:3            'input' ( in 4-component vector of float)
-0:3        true case
-0:4        Branch: Return with expression
-0:4          'input' ( in 4-component vector of float)
-0:6      Test condition and select ( temp void)
-0:6        Condition
-0:6        all ( temp bool)
-0:6          Equal ( temp 4-component vector of bool)
-0:6            'input' ( in 4-component vector of float)
-0:6            'input' ( in 4-component vector of float)
-0:6        true case
-0:7        Branch: Return with expression
-0:7          'input' ( in 4-component vector of float)
-0:6        false case
-0:9        Branch: Return with expression
-0:9          Negate value ( temp 4-component vector of float)
+0:2      Test condition and select ( temp void)
+0:2        Condition
+0:2        all ( temp bool)
+0:2          Equal ( temp 4-component vector of bool)
+0:2            'input' ( in 4-component vector of float)
+0:2            'input' ( in 4-component vector of float)
+0:2        true case
+0:3        Branch: Return with expression
+0:3          'input' ( in 4-component vector of float)
+0:2        false case
+0:5        Branch: Return with expression
+0:5          Negate value ( temp 4-component vector of float)
+0:5            'input' ( in 4-component vector of float)
+0:8  Function Definition: f1(vf4; ( temp 4-component vector of float)
+0:8    Function Parameters: 
+0:8      'input' ( in 4-component vector of float)
+0:?     Sequence
+0:9      Test condition and select ( temp void)
+0:9        Condition
+0:9        all ( temp bool)
+0:9          Equal ( temp 4-component vector of bool)
 0:9            'input' ( in 4-component vector of float)
-0:11      Test condition and select ( temp void)
-0:11        Condition
-0:11        all ( temp bool)
-0:11          Equal ( temp 4-component vector of bool)
-0:11            'input' ( in 4-component vector of float)
-0:11            'input' ( in 4-component vector of float)
-0:11        true case is null
-0:14      Test condition and select ( temp void)
-0:14        Condition
-0:14        all ( temp bool)
-0:14          Equal ( temp 4-component vector of bool)
-0:14            'input' ( in 4-component vector of float)
-0:14            'input' ( in 4-component vector of float)
-0:14        true case is null
-0:19      Test condition and select ( temp void): Flatten
-0:19        Condition
-0:19        all ( temp bool)
-0:19          Equal ( temp 4-component vector of bool)
-0:19            'input' ( in 4-component vector of float)
-0:19            'input' ( in 4-component vector of float)
-0:19        true case
+0:9            'input' ( in 4-component vector of float)
+0:9        true case
 0:?         Sequence
-0:20          Branch: Return with expression
-0:20            'input' ( in 4-component vector of float)
+0:10          Branch: Return with expression
+0:10            'input' ( in 4-component vector of float)
+0:9        false case
+0:?         Sequence
+0:12          Branch: Return with expression
+0:12            Negate value ( temp 4-component vector of float)
+0:12              'input' ( in 4-component vector of float)
+0:17  Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:17    Function Parameters: 
+0:17      'input' ( in 4-component vector of float)
+0:?     Sequence
+0:18      Test condition and select ( temp void)
+0:18        Condition
+0:18        all ( temp bool)
+0:18          Equal ( temp 4-component vector of bool)
+0:18            'input' ( in 4-component vector of float)
+0:18            'input' ( in 4-component vector of float)
+0:18        true case
+0:19        Branch: Return with expression
+0:19          'input' ( in 4-component vector of float)
+0:21      Function Call: f0(vf4; ( temp 4-component vector of float)
+0:21        'input' ( in 4-component vector of float)
 0:23      Test condition and select ( temp void)
 0:23        Condition
 0:23        all ( temp bool)
 0:23          Equal ( temp 4-component vector of bool)
 0:23            'input' ( in 4-component vector of float)
 0:23            'input' ( in 4-component vector of float)
-0:23        true case
+0:23        true case is null
+0:26      Test condition and select ( temp void)
+0:26        Condition
+0:26        all ( temp bool)
+0:26          Equal ( temp 4-component vector of bool)
+0:26            'input' ( in 4-component vector of float)
+0:26            'input' ( in 4-component vector of float)
+0:26        true case is null
+0:31      Test condition and select ( temp void): Flatten
+0:31        Condition
+0:31        all ( temp bool)
+0:31          Equal ( temp 4-component vector of bool)
+0:31            'input' ( in 4-component vector of float)
+0:31            'input' ( in 4-component vector of float)
+0:31        true case
 0:?         Sequence
-0:24          Branch: Return with expression
-0:24            'input' ( in 4-component vector of float)
-0:23        false case
-0:?         Sequence
-0:26          Branch: Return with expression
-0:26            Negate value ( temp 4-component vector of float)
-0:26              'input' ( in 4-component vector of float)
-0:30      Test condition and select ( temp void)
-0:30        Condition
-0:30        Convert float to bool ( temp bool)
-0:30          move second child to first child ( temp float)
-0:30            'ii' ( temp float)
-0:30            direct index ( temp float)
-0:30              'input' ( in 4-component vector of float)
-0:30              Constant:
-0:30                2 (const int)
-0:30        true case
-0:31        Pre-Increment ( temp float)
-0:31          'ii' ( temp float)
-0:32      Pre-Increment ( temp int)
-0:32        'ii' ( temp int)
-0:33      Test condition and select ( temp void)
-0:33        Condition
-0:33        Compare Equal ( temp bool)
-0:33          Convert int to float ( temp float)
-0:33            'ii' ( temp int)
-0:33          Constant:
-0:33            1.000000
-0:33        true case
-0:34        Pre-Increment ( temp int)
-0:34          'ii' ( temp int)
-0:2  Function Definition: PixelShaderFunction( ( temp void)
-0:2    Function Parameters: 
+0:32          Branch: Return with expression
+0:32            'input' ( in 4-component vector of float)
+0:35      Function Call: f1(vf4; ( temp 4-component vector of float)
+0:35        'input' ( in 4-component vector of float)
+0:38      Test condition and select ( temp void)
+0:38        Condition
+0:38        Convert float to bool ( temp bool)
+0:38          move second child to first child ( temp float)
+0:38            'ii' ( temp float)
+0:38            direct index ( temp float)
+0:38              'input' ( in 4-component vector of float)
+0:38              Constant:
+0:38                2 (const int)
+0:38        true case
+0:39        Pre-Increment ( temp float)
+0:39          'ii' ( temp float)
+0:40      Pre-Increment ( temp int)
+0:40        'ii' ( temp int)
+0:41      Test condition and select ( temp void)
+0:41        Condition
+0:41        Compare Equal ( temp bool)
+0:41          Convert int to float ( temp float)
+0:41            'ii' ( temp int)
+0:41          Constant:
+0:41            1.000000
+0:41        true case
+0:42        Pre-Increment ( temp int)
+0:42          'ii' ( temp int)
+0:17  Function Definition: PixelShaderFunction( ( temp void)
+0:17    Function Parameters: 
 0:?     Sequence
-0:2      move second child to first child ( temp 4-component vector of float)
+0:17      move second child to first child ( temp 4-component vector of float)
 0:?         'input' ( temp 4-component vector of float)
 0:?         'input' (layout( location=0) in 4-component vector of float)
-0:2      move second child to first child ( temp 4-component vector of float)
+0:17      move second child to first child ( temp 4-component vector of float)
 0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:2        Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:17        Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
 0:?           'input' ( temp 4-component vector of float)
 0:?   Linker Objects
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
@@ -112,259 +124,295 @@
 Shader version: 500
 gl_FragCoord origin is upper left
 0:? Sequence
-0:2  Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
-0:2    Function Parameters: 
-0:2      'input' ( in 4-component vector of float)
+0:1  Function Definition: f0(vf4; ( temp 4-component vector of float)
+0:1    Function Parameters: 
+0:1      'input' ( in 4-component vector of float)
 0:?     Sequence
-0:3      Test condition and select ( temp void)
-0:3        Condition
-0:3        all ( temp bool)
-0:3          Equal ( temp 4-component vector of bool)
-0:3            'input' ( in 4-component vector of float)
-0:3            'input' ( in 4-component vector of float)
-0:3        true case
-0:4        Branch: Return with expression
-0:4          'input' ( in 4-component vector of float)
-0:6      Test condition and select ( temp void)
-0:6        Condition
-0:6        all ( temp bool)
-0:6          Equal ( temp 4-component vector of bool)
-0:6            'input' ( in 4-component vector of float)
-0:6            'input' ( in 4-component vector of float)
-0:6        true case
-0:7        Branch: Return with expression
-0:7          'input' ( in 4-component vector of float)
-0:6        false case
-0:9        Branch: Return with expression
-0:9          Negate value ( temp 4-component vector of float)
+0:2      Test condition and select ( temp void)
+0:2        Condition
+0:2        all ( temp bool)
+0:2          Equal ( temp 4-component vector of bool)
+0:2            'input' ( in 4-component vector of float)
+0:2            'input' ( in 4-component vector of float)
+0:2        true case
+0:3        Branch: Return with expression
+0:3          'input' ( in 4-component vector of float)
+0:2        false case
+0:5        Branch: Return with expression
+0:5          Negate value ( temp 4-component vector of float)
+0:5            'input' ( in 4-component vector of float)
+0:8  Function Definition: f1(vf4; ( temp 4-component vector of float)
+0:8    Function Parameters: 
+0:8      'input' ( in 4-component vector of float)
+0:?     Sequence
+0:9      Test condition and select ( temp void)
+0:9        Condition
+0:9        all ( temp bool)
+0:9          Equal ( temp 4-component vector of bool)
 0:9            'input' ( in 4-component vector of float)
-0:11      Test condition and select ( temp void)
-0:11        Condition
-0:11        all ( temp bool)
-0:11          Equal ( temp 4-component vector of bool)
-0:11            'input' ( in 4-component vector of float)
-0:11            'input' ( in 4-component vector of float)
-0:11        true case is null
-0:14      Test condition and select ( temp void)
-0:14        Condition
-0:14        all ( temp bool)
-0:14          Equal ( temp 4-component vector of bool)
-0:14            'input' ( in 4-component vector of float)
-0:14            'input' ( in 4-component vector of float)
-0:14        true case is null
-0:19      Test condition and select ( temp void): Flatten
-0:19        Condition
-0:19        all ( temp bool)
-0:19          Equal ( temp 4-component vector of bool)
-0:19            'input' ( in 4-component vector of float)
-0:19            'input' ( in 4-component vector of float)
-0:19        true case
+0:9            'input' ( in 4-component vector of float)
+0:9        true case
 0:?         Sequence
-0:20          Branch: Return with expression
-0:20            'input' ( in 4-component vector of float)
+0:10          Branch: Return with expression
+0:10            'input' ( in 4-component vector of float)
+0:9        false case
+0:?         Sequence
+0:12          Branch: Return with expression
+0:12            Negate value ( temp 4-component vector of float)
+0:12              'input' ( in 4-component vector of float)
+0:17  Function Definition: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:17    Function Parameters: 
+0:17      'input' ( in 4-component vector of float)
+0:?     Sequence
+0:18      Test condition and select ( temp void)
+0:18        Condition
+0:18        all ( temp bool)
+0:18          Equal ( temp 4-component vector of bool)
+0:18            'input' ( in 4-component vector of float)
+0:18            'input' ( in 4-component vector of float)
+0:18        true case
+0:19        Branch: Return with expression
+0:19          'input' ( in 4-component vector of float)
+0:21      Function Call: f0(vf4; ( temp 4-component vector of float)
+0:21        'input' ( in 4-component vector of float)
 0:23      Test condition and select ( temp void)
 0:23        Condition
 0:23        all ( temp bool)
 0:23          Equal ( temp 4-component vector of bool)
 0:23            'input' ( in 4-component vector of float)
 0:23            'input' ( in 4-component vector of float)
-0:23        true case
+0:23        true case is null
+0:26      Test condition and select ( temp void)
+0:26        Condition
+0:26        all ( temp bool)
+0:26          Equal ( temp 4-component vector of bool)
+0:26            'input' ( in 4-component vector of float)
+0:26            'input' ( in 4-component vector of float)
+0:26        true case is null
+0:31      Test condition and select ( temp void): Flatten
+0:31        Condition
+0:31        all ( temp bool)
+0:31          Equal ( temp 4-component vector of bool)
+0:31            'input' ( in 4-component vector of float)
+0:31            'input' ( in 4-component vector of float)
+0:31        true case
 0:?         Sequence
-0:24          Branch: Return with expression
-0:24            'input' ( in 4-component vector of float)
-0:23        false case
-0:?         Sequence
-0:26          Branch: Return with expression
-0:26            Negate value ( temp 4-component vector of float)
-0:26              'input' ( in 4-component vector of float)
-0:30      Test condition and select ( temp void)
-0:30        Condition
-0:30        Convert float to bool ( temp bool)
-0:30          move second child to first child ( temp float)
-0:30            'ii' ( temp float)
-0:30            direct index ( temp float)
-0:30              'input' ( in 4-component vector of float)
-0:30              Constant:
-0:30                2 (const int)
-0:30        true case
-0:31        Pre-Increment ( temp float)
-0:31          'ii' ( temp float)
-0:32      Pre-Increment ( temp int)
-0:32        'ii' ( temp int)
-0:33      Test condition and select ( temp void)
-0:33        Condition
-0:33        Compare Equal ( temp bool)
-0:33          Convert int to float ( temp float)
-0:33            'ii' ( temp int)
-0:33          Constant:
-0:33            1.000000
-0:33        true case
-0:34        Pre-Increment ( temp int)
-0:34          'ii' ( temp int)
-0:2  Function Definition: PixelShaderFunction( ( temp void)
-0:2    Function Parameters: 
+0:32          Branch: Return with expression
+0:32            'input' ( in 4-component vector of float)
+0:35      Function Call: f1(vf4; ( temp 4-component vector of float)
+0:35        'input' ( in 4-component vector of float)
+0:38      Test condition and select ( temp void)
+0:38        Condition
+0:38        Convert float to bool ( temp bool)
+0:38          move second child to first child ( temp float)
+0:38            'ii' ( temp float)
+0:38            direct index ( temp float)
+0:38              'input' ( in 4-component vector of float)
+0:38              Constant:
+0:38                2 (const int)
+0:38        true case
+0:39        Pre-Increment ( temp float)
+0:39          'ii' ( temp float)
+0:40      Pre-Increment ( temp int)
+0:40        'ii' ( temp int)
+0:41      Test condition and select ( temp void)
+0:41        Condition
+0:41        Compare Equal ( temp bool)
+0:41          Convert int to float ( temp float)
+0:41            'ii' ( temp int)
+0:41          Constant:
+0:41            1.000000
+0:41        true case
+0:42        Pre-Increment ( temp int)
+0:42          'ii' ( temp int)
+0:17  Function Definition: PixelShaderFunction( ( temp void)
+0:17    Function Parameters: 
 0:?     Sequence
-0:2      move second child to first child ( temp 4-component vector of float)
+0:17      move second child to first child ( temp 4-component vector of float)
 0:?         'input' ( temp 4-component vector of float)
 0:?         'input' (layout( location=0) in 4-component vector of float)
-0:2      move second child to first child ( temp 4-component vector of float)
+0:17      move second child to first child ( temp 4-component vector of float)
 0:?         '@entryPointOutput' (layout( location=0) out 4-component vector of float)
-0:2        Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
+0:17        Function Call: @PixelShaderFunction(vf4; ( temp 4-component vector of float)
 0:?           'input' ( temp 4-component vector of float)
 0:?   Linker Objects
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
-// Id's are bound by 103
+// Generated by (magic number): 80008
+// Id's are bound by 117
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction" 96 99
+                              EntryPoint Fragment 4  "PixelShaderFunction" 110 113
                               ExecutionMode 4 OriginUpperLeft
                               Source HLSL 500
                               Name 4  "PixelShaderFunction"
-                              Name 11  "@PixelShaderFunction(vf4;"
+                              Name 11  "f0(vf4;"
                               Name 10  "input"
-                              Name 68  "ii"
+                              Name 14  "f1(vf4;"
+                              Name 13  "input"
+                              Name 17  "@PixelShaderFunction(vf4;"
+                              Name 16  "input"
+                              Name 55  "param"
+                              Name 78  "param"
                               Name 82  "ii"
-                              Name 94  "input"
-                              Name 96  "input"
-                              Name 99  "@entryPointOutput"
-                              Name 100  "param"
-                              Decorate 96(input) Location 0
-                              Decorate 99(@entryPointOutput) Location 0
+                              Name 96  "ii"
+                              Name 108  "input"
+                              Name 110  "input"
+                              Name 113  "@entryPointOutput"
+                              Name 114  "param"
+                              Decorate 110(input) Location 0
+                              Decorate 113(@entryPointOutput) Location 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
                7:             TypeVector 6(float) 4
                8:             TypePointer Function 7(fvec4)
                9:             TypeFunction 7(fvec4) 8(ptr)
-              15:             TypeBool
-              16:             TypeVector 15(bool) 4
-              67:             TypePointer Function 6(float)
-              69:             TypeInt 32 0
-              70:     69(int) Constant 2
-              73:    6(float) Constant 0
-              78:    6(float) Constant 1065353216
-              80:             TypeInt 32 1
-              81:             TypePointer Function 80(int)
-              84:     80(int) Constant 1
-              95:             TypePointer Input 7(fvec4)
-       96(input):     95(ptr) Variable Input
-              98:             TypePointer Output 7(fvec4)
-99(@entryPointOutput):     98(ptr) Variable Output
+              21:             TypeBool
+              22:             TypeVector 21(bool) 4
+              81:             TypePointer Function 6(float)
+              83:             TypeInt 32 0
+              84:     83(int) Constant 2
+              87:    6(float) Constant 0
+              92:    6(float) Constant 1065353216
+              94:             TypeInt 32 1
+              95:             TypePointer Function 94(int)
+              98:     94(int) Constant 1
+             109:             TypePointer Input 7(fvec4)
+      110(input):    109(ptr) Variable Input
+             112:             TypePointer Output 7(fvec4)
+113(@entryPointOutput):    112(ptr) Variable Output
 4(PixelShaderFunction):           2 Function None 3
                5:             Label
-       94(input):      8(ptr) Variable Function
-      100(param):      8(ptr) Variable Function
-              97:    7(fvec4) Load 96(input)
-                              Store 94(input) 97
-             101:    7(fvec4) Load 94(input)
-                              Store 100(param) 101
-             102:    7(fvec4) FunctionCall 11(@PixelShaderFunction(vf4;) 100(param)
-                              Store 99(@entryPointOutput) 102
+      108(input):      8(ptr) Variable Function
+      114(param):      8(ptr) Variable Function
+             111:    7(fvec4) Load 110(input)
+                              Store 108(input) 111
+             115:    7(fvec4) Load 108(input)
+                              Store 114(param) 115
+             116:    7(fvec4) FunctionCall 17(@PixelShaderFunction(vf4;) 114(param)
+                              Store 113(@entryPointOutput) 116
                               Return
                               FunctionEnd
-11(@PixelShaderFunction(vf4;):    7(fvec4) Function None 9
+     11(f0(vf4;):    7(fvec4) Function None 9
        10(input):      8(ptr) FunctionParameter
               12:             Label
-          68(ii):     67(ptr) Variable Function
+              19:    7(fvec4) Load 10(input)
+              20:    7(fvec4) Load 10(input)
+              23:   22(bvec4) FOrdEqual 19 20
+              24:    21(bool) All 23
+                              SelectionMerge 26 None
+                              BranchConditional 24 25 29
+              25:               Label
+              27:    7(fvec4)   Load 10(input)
+                                ReturnValue 27
+              29:               Label
+              30:    7(fvec4)   Load 10(input)
+              31:    7(fvec4)   FNegate 30
+                                ReturnValue 31
+              26:             Label
+                              Unreachable
+                              FunctionEnd
+     14(f1(vf4;):    7(fvec4) Function None 9
+       13(input):      8(ptr) FunctionParameter
+              15:             Label
+              34:    7(fvec4) Load 13(input)
+              35:    7(fvec4) Load 13(input)
+              36:   22(bvec4) FOrdEqual 34 35
+              37:    21(bool) All 36
+                              SelectionMerge 39 None
+                              BranchConditional 37 38 42
+              38:               Label
+              40:    7(fvec4)   Load 13(input)
+                                ReturnValue 40
+              42:               Label
+              43:    7(fvec4)   Load 13(input)
+              44:    7(fvec4)   FNegate 43
+                                ReturnValue 44
+              39:             Label
+                              Unreachable
+                              FunctionEnd
+17(@PixelShaderFunction(vf4;):    7(fvec4) Function None 9
+       16(input):      8(ptr) FunctionParameter
+              18:             Label
+       55(param):      8(ptr) Variable Function
+       78(param):      8(ptr) Variable Function
           82(ii):     81(ptr) Variable Function
-              13:    7(fvec4) Load 10(input)
-              14:    7(fvec4) Load 10(input)
-              17:   16(bvec4) FOrdEqual 13 14
-              18:    15(bool) All 17
-                              SelectionMerge 20 None
-                              BranchConditional 18 19 20
-              19:               Label
-              21:    7(fvec4)   Load 10(input)
-                                ReturnValue 21
-              20:             Label
-              23:    7(fvec4) Load 10(input)
-              24:    7(fvec4) Load 10(input)
-              25:   16(bvec4) FOrdEqual 23 24
-              26:    15(bool) All 25
-                              SelectionMerge 28 None
-                              BranchConditional 26 27 31
-              27:               Label
-              29:    7(fvec4)   Load 10(input)
-                                ReturnValue 29
-              31:               Label
-              32:    7(fvec4)   Load 10(input)
-              33:    7(fvec4)   FNegate 32
-                                ReturnValue 33
-              28:             Label
-              35:    7(fvec4) Load 10(input)
-              36:    7(fvec4) Load 10(input)
-              37:   16(bvec4) FOrdEqual 35 36
-              38:    15(bool) All 37
-                              SelectionMerge 40 None
-                              BranchConditional 38 39 40
-              39:               Label
-                                Branch 40
-              40:             Label
-              41:    7(fvec4) Load 10(input)
-              42:    7(fvec4) Load 10(input)
-              43:   16(bvec4) FOrdEqual 41 42
-              44:    15(bool) All 43
-                              SelectionMerge 46 None
-                              BranchConditional 44 45 46
-              45:               Label
-                                Branch 46
-              46:             Label
-              47:    7(fvec4) Load 10(input)
-              48:    7(fvec4) Load 10(input)
-              49:   16(bvec4) FOrdEqual 47 48
-              50:    15(bool) All 49
-                              SelectionMerge 52 Flatten 
+          96(ii):     95(ptr) Variable Function
+              47:    7(fvec4) Load 16(input)
+              48:    7(fvec4) Load 16(input)
+              49:   22(bvec4) FOrdEqual 47 48
+              50:    21(bool) All 49
+                              SelectionMerge 52 None
                               BranchConditional 50 51 52
               51:               Label
-              53:    7(fvec4)   Load 10(input)
+              53:    7(fvec4)   Load 16(input)
                                 ReturnValue 53
               52:             Label
-              55:    7(fvec4) Load 10(input)
-              56:    7(fvec4) Load 10(input)
-              57:   16(bvec4) FOrdEqual 55 56
-              58:    15(bool) All 57
-                              SelectionMerge 60 None
-                              BranchConditional 58 59 63
-              59:               Label
-              61:    7(fvec4)   Load 10(input)
-                                ReturnValue 61
-              63:               Label
-              64:    7(fvec4)   Load 10(input)
-              65:    7(fvec4)   FNegate 64
-                                ReturnValue 65
-              60:             Label
-              71:     67(ptr) AccessChain 10(input) 70
-              72:    6(float) Load 71
-                              Store 68(ii) 72
-              74:    15(bool) FOrdNotEqual 72 73
-                              SelectionMerge 76 None
-                              BranchConditional 74 75 76
-              75:               Label
-              77:    6(float)   Load 68(ii)
-              79:    6(float)   FAdd 77 78
-                                Store 68(ii) 79
-                                Branch 76
-              76:             Label
-              83:     80(int) Load 82(ii)
-              85:     80(int) IAdd 83 84
-                              Store 82(ii) 85
-              86:     80(int) Load 82(ii)
-              87:    6(float) ConvertSToF 86
-              88:    15(bool) FOrdEqual 87 78
+              56:    7(fvec4) Load 16(input)
+                              Store 55(param) 56
+              57:    7(fvec4) FunctionCall 11(f0(vf4;) 55(param)
+              58:    7(fvec4) Load 16(input)
+              59:    7(fvec4) Load 16(input)
+              60:   22(bvec4) FOrdEqual 58 59
+              61:    21(bool) All 60
+                              SelectionMerge 63 None
+                              BranchConditional 61 62 63
+              62:               Label
+                                Branch 63
+              63:             Label
+              64:    7(fvec4) Load 16(input)
+              65:    7(fvec4) Load 16(input)
+              66:   22(bvec4) FOrdEqual 64 65
+              67:    21(bool) All 66
+                              SelectionMerge 69 None
+                              BranchConditional 67 68 69
+              68:               Label
+                                Branch 69
+              69:             Label
+              70:    7(fvec4) Load 16(input)
+              71:    7(fvec4) Load 16(input)
+              72:   22(bvec4) FOrdEqual 70 71
+              73:    21(bool) All 72
+                              SelectionMerge 75 Flatten 
+                              BranchConditional 73 74 75
+              74:               Label
+              76:    7(fvec4)   Load 16(input)
+                                ReturnValue 76
+              75:             Label
+              79:    7(fvec4) Load 16(input)
+                              Store 78(param) 79
+              80:    7(fvec4) FunctionCall 14(f1(vf4;) 78(param)
+              85:     81(ptr) AccessChain 16(input) 84
+              86:    6(float) Load 85
+                              Store 82(ii) 86
+              88:    21(bool) FOrdNotEqual 86 87
                               SelectionMerge 90 None
                               BranchConditional 88 89 90
               89:               Label
-              91:     80(int)   Load 82(ii)
-              92:     80(int)   IAdd 91 84
-                                Store 82(ii) 92
+              91:    6(float)   Load 82(ii)
+              93:    6(float)   FAdd 91 92
+                                Store 82(ii) 93
                                 Branch 90
               90:             Label
-              93:    7(fvec4) Undef
-                              ReturnValue 93
+              97:     94(int) Load 96(ii)
+              99:     94(int) IAdd 97 98
+                              Store 96(ii) 99
+             100:     94(int) Load 96(ii)
+             101:    6(float) ConvertSToF 100
+             102:    21(bool) FOrdEqual 101 92
+                              SelectionMerge 104 None
+                              BranchConditional 102 103 104
+             103:               Label
+             105:     94(int)   Load 96(ii)
+             106:     94(int)   IAdd 105 98
+                                Store 96(ii) 106
+                                Branch 104
+             104:             Label
+             107:    7(fvec4) Undef
+                              ReturnValue 107
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.imagefetch-subvec4.comp.out b/Test/baseResults/hlsl.imagefetch-subvec4.comp.out
index 721aeea..304f24b 100644
--- a/Test/baseResults/hlsl.imagefetch-subvec4.comp.out
+++ b/Test/baseResults/hlsl.imagefetch-subvec4.comp.out
@@ -72,7 +72,7 @@
 0:?     'tid' ( in 3-component vector of uint GlobalInvocationID)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 39
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.implicitBool.frag.out b/Test/baseResults/hlsl.implicitBool.frag.out
index c616125..8b5dcde 100644
--- a/Test/baseResults/hlsl.implicitBool.frag.out
+++ b/Test/baseResults/hlsl.implicitBool.frag.out
@@ -332,7 +332,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 139
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.include.vert.out b/Test/baseResults/hlsl.include.vert.out
index 88ee8e7..4a814ae 100644
--- a/Test/baseResults/hlsl.include.vert.out
+++ b/Test/baseResults/hlsl.include.vert.out
@@ -1,6 +1,6 @@
 ../Test/hlsl.include.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 44
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.inf.vert.out b/Test/baseResults/hlsl.inf.vert.out
index 1cedc55..02326b3 100644
--- a/Test/baseResults/hlsl.inf.vert.out
+++ b/Test/baseResults/hlsl.inf.vert.out
@@ -112,7 +112,7 @@
 0:?     '@entryPointOutput' ( out 4-component vector of float Position)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 37
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.init.frag.out b/Test/baseResults/hlsl.init.frag.out
index 1d9a5ef..2139adb 100644
--- a/Test/baseResults/hlsl.init.frag.out
+++ b/Test/baseResults/hlsl.init.frag.out
@@ -331,7 +331,7 @@
 0:?     'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform float a, layout( row_major std140) uniform float b, layout( row_major std140) uniform float c})
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 110
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.init2.frag.out b/Test/baseResults/hlsl.init2.frag.out
index 9e03de3..0ba8bd2 100644
--- a/Test/baseResults/hlsl.init2.frag.out
+++ b/Test/baseResults/hlsl.init2.frag.out
@@ -358,7 +358,7 @@
 0:?     '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 112
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.inoutquals.frag.out b/Test/baseResults/hlsl.inoutquals.frag.out
index 42adb1a..2ffa3c5 100644
--- a/Test/baseResults/hlsl.inoutquals.frag.out
+++ b/Test/baseResults/hlsl.inoutquals.frag.out
@@ -214,7 +214,7 @@
 0:?     'sampleMask' ( out 1-element array of int SampleMaskIn)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 92
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.int.dot.frag.out b/Test/baseResults/hlsl.int.dot.frag.out
index afe44c8..a691836 100644
--- a/Test/baseResults/hlsl.int.dot.frag.out
+++ b/Test/baseResults/hlsl.int.dot.frag.out
@@ -224,7 +224,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 84
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsic.frexp.frag.out b/Test/baseResults/hlsl.intrinsic.frexp.frag.out
index 3a9d6fd..9fb9cc5 100644
--- a/Test/baseResults/hlsl.intrinsic.frexp.frag.out
+++ b/Test/baseResults/hlsl.intrinsic.frexp.frag.out
@@ -190,7 +190,7 @@
 0:?     '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 98
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsic.frexp.vert.out b/Test/baseResults/hlsl.intrinsic.frexp.vert.out
index 92bd7ef..7069ece 100644
--- a/Test/baseResults/hlsl.intrinsic.frexp.vert.out
+++ b/Test/baseResults/hlsl.intrinsic.frexp.vert.out
@@ -113,7 +113,7 @@
 0:?   Linker Objects
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 78
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.barriers.comp.out b/Test/baseResults/hlsl.intrinsics.barriers.comp.out
index 13fe578..a078978 100644
--- a/Test/baseResults/hlsl.intrinsics.barriers.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.barriers.comp.out
@@ -52,7 +52,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 22
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.comp.out b/Test/baseResults/hlsl.intrinsics.comp.out
index 3329c5c..761a3b3 100644
--- a/Test/baseResults/hlsl.intrinsics.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.comp.out
@@ -717,7 +717,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 265
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out b/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out
index f2216de..4832241 100644
--- a/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out
@@ -74,7 +74,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of int)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 29
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.double.frag.out b/Test/baseResults/hlsl.intrinsics.double.frag.out
index 55a102f..472f31b 100644
--- a/Test/baseResults/hlsl.intrinsics.double.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.double.frag.out
@@ -164,7 +164,7 @@
 0:?     'inU1b' (layout( location=9) flat in uint)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 90
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.evalfns.frag.out b/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
index 3f69827..0260b93 100644
--- a/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.evalfns.frag.out
@@ -155,7 +155,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 80
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.f1632.frag.out b/Test/baseResults/hlsl.intrinsics.f1632.frag.out
index c5619ef..785b083 100644
--- a/Test/baseResults/hlsl.intrinsics.f1632.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.f1632.frag.out
@@ -260,7 +260,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 103
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.f3216.frag.out b/Test/baseResults/hlsl.intrinsics.f3216.frag.out
index c447efc..77826b3 100644
--- a/Test/baseResults/hlsl.intrinsics.f3216.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.f3216.frag.out
@@ -270,7 +270,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 106
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out
index b8add07..4256382 100644
--- a/Test/baseResults/hlsl.intrinsics.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.frag.out
@@ -5645,7 +5645,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 1836
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.lit.frag.out b/Test/baseResults/hlsl.intrinsics.lit.frag.out
index 8b1454b..9a8cb29 100644
--- a/Test/baseResults/hlsl.intrinsics.lit.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.lit.frag.out
@@ -118,7 +118,7 @@
 0:?     'm' (layout( location=2) in float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 48
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.negative.comp.out b/Test/baseResults/hlsl.intrinsics.negative.comp.out
index 97d6719..920038f 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.comp.out
@@ -180,7 +180,7 @@
 0:?     'inI0' (layout( location=3) in 4-component vector of int)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 99
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.negative.vert.out b/Test/baseResults/hlsl.intrinsics.negative.vert.out
index c2711c6..3b1bac8 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.vert.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.vert.out
@@ -308,7 +308,7 @@
 0:?     'inI0' (layout( location=3) in 4-component vector of int)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 155
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.promote.down.frag.out b/Test/baseResults/hlsl.intrinsics.promote.down.frag.out
index 84ea6f4..2171698 100644
--- a/Test/baseResults/hlsl.intrinsics.promote.down.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.promote.down.frag.out
@@ -104,7 +104,7 @@
 0:?     '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 50
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.promote.frag.out b/Test/baseResults/hlsl.intrinsics.promote.frag.out
index 988432e..41b1c68 100644
--- a/Test/baseResults/hlsl.intrinsics.promote.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.promote.frag.out
@@ -888,7 +888,7 @@
 0:?     '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 322
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out
index 9f8ecf2..143fa72 100644
--- a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out
@@ -204,7 +204,7 @@
 0:?     '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 80
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.intrinsics.vert.out b/Test/baseResults/hlsl.intrinsics.vert.out
index 460785e..28e8e41 100644
--- a/Test/baseResults/hlsl.intrinsics.vert.out
+++ b/Test/baseResults/hlsl.intrinsics.vert.out
@@ -2780,7 +2780,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 1225
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.isfinite.frag.out b/Test/baseResults/hlsl.isfinite.frag.out
index 7b8287f..a68bd1b 100644
--- a/Test/baseResults/hlsl.isfinite.frag.out
+++ b/Test/baseResults/hlsl.isfinite.frag.out
@@ -172,7 +172,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 85
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.layout.frag.out b/Test/baseResults/hlsl.layout.frag.out
index 6a3eb04..1e4f171 100644
--- a/Test/baseResults/hlsl.layout.frag.out
+++ b/Test/baseResults/hlsl.layout.frag.out
@@ -88,7 +88,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 44
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.layoutOverride.vert.out b/Test/baseResults/hlsl.layoutOverride.vert.out
index 31593aa..cc09653 100644
--- a/Test/baseResults/hlsl.layoutOverride.vert.out
+++ b/Test/baseResults/hlsl.layoutOverride.vert.out
@@ -52,7 +52,7 @@
 0:?     '@entryPointOutput' ( out 4-component vector of float Position)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 32
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
index 8d7f70f..9597762 100644
--- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
@@ -358,7 +358,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 130
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.load.array.dx10.frag.out b/Test/baseResults/hlsl.load.array.dx10.frag.out
index e5c0f6e..f26d7df 100644
--- a/Test/baseResults/hlsl.load.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.array.dx10.frag.out
@@ -388,7 +388,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 159
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.load.basic.dx10.frag.out b/Test/baseResults/hlsl.load.basic.dx10.frag.out
index b47e037..895a109 100644
--- a/Test/baseResults/hlsl.load.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.basic.dx10.frag.out
@@ -490,7 +490,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 179
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.load.basic.dx10.vert.out b/Test/baseResults/hlsl.load.basic.dx10.vert.out
index 99f3667..99a57a7 100644
--- a/Test/baseResults/hlsl.load.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.load.basic.dx10.vert.out
@@ -452,7 +452,7 @@
 0:?     '@entryPointOutput.Pos' ( out 4-component vector of float Position)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 171
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.load.buffer.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.dx10.frag.out
index 969a99f..2255cf5 100644
--- a/Test/baseResults/hlsl.load.buffer.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.buffer.dx10.frag.out
@@ -166,7 +166,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 72
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out
index d404b27..08a1c56 100644
--- a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out
@@ -172,7 +172,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 75
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out
index 089329e..ebf1bd3 100644
--- a/Test/baseResults/hlsl.load.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out
@@ -562,7 +562,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 201
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
index 7df846b..297c737 100644
--- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
@@ -436,7 +436,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 174
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out
index 62009e1..7ad197c 100644
--- a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out
@@ -110,7 +110,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 57
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out
index f05b335..77344ac 100644
--- a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out
@@ -208,7 +208,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 119
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out
index c6e00ff..bf9ea2d 100644
--- a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out
@@ -244,7 +244,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 132
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.logical.binary.frag.out b/Test/baseResults/hlsl.logical.binary.frag.out
index 5b23a62..1df3966 100644
--- a/Test/baseResults/hlsl.logical.binary.frag.out
+++ b/Test/baseResults/hlsl.logical.binary.frag.out
@@ -124,7 +124,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 56
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.logical.binary.vec.frag.out b/Test/baseResults/hlsl.logical.binary.vec.frag.out
index 0e4f852..bc469dc 100644
--- a/Test/baseResults/hlsl.logical.binary.vec.frag.out
+++ b/Test/baseResults/hlsl.logical.binary.vec.frag.out
@@ -254,7 +254,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 115
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.logical.unary.frag.out b/Test/baseResults/hlsl.logical.unary.frag.out
index b342c34..57247c6 100644
--- a/Test/baseResults/hlsl.logical.unary.frag.out
+++ b/Test/baseResults/hlsl.logical.unary.frag.out
@@ -184,7 +184,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 84
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.logicalConvert.frag.out b/Test/baseResults/hlsl.logicalConvert.frag.out
index 6c595f8..4757f33 100644
--- a/Test/baseResults/hlsl.logicalConvert.frag.out
+++ b/Test/baseResults/hlsl.logicalConvert.frag.out
@@ -254,7 +254,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 50
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.loopattr.frag.out b/Test/baseResults/hlsl.loopattr.frag.out
index cc0073a..c6130f7 100644
--- a/Test/baseResults/hlsl.loopattr.frag.out
+++ b/Test/baseResults/hlsl.loopattr.frag.out
@@ -136,7 +136,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 54
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.matNx1.frag.out b/Test/baseResults/hlsl.matNx1.frag.out
index e8e0a7b..1d92d5f 100644
--- a/Test/baseResults/hlsl.matNx1.frag.out
+++ b/Test/baseResults/hlsl.matNx1.frag.out
@@ -153,7 +153,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 77
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.matType.bool.frag.out b/Test/baseResults/hlsl.matType.bool.frag.out
index b5543d8..1362ee7 100644
--- a/Test/baseResults/hlsl.matType.bool.frag.out
+++ b/Test/baseResults/hlsl.matType.bool.frag.out
@@ -233,7 +233,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 130
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.matType.frag.out b/Test/baseResults/hlsl.matType.frag.out
index 80bb216..ed08983 100644
--- a/Test/baseResults/hlsl.matType.frag.out
+++ b/Test/baseResults/hlsl.matType.frag.out
@@ -32,7 +32,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 30
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.matType.int.frag.out b/Test/baseResults/hlsl.matType.int.frag.out
index a1854aa..ad0c314 100644
--- a/Test/baseResults/hlsl.matType.int.frag.out
+++ b/Test/baseResults/hlsl.matType.int.frag.out
@@ -399,7 +399,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 232
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.matpack-1.frag.out b/Test/baseResults/hlsl.matpack-1.frag.out
index c022587..829d0b1 100644
--- a/Test/baseResults/hlsl.matpack-1.frag.out
+++ b/Test/baseResults/hlsl.matpack-1.frag.out
@@ -100,7 +100,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 39
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.matpack-pragma.frag.out b/Test/baseResults/hlsl.matpack-pragma.frag.out
index 86e945e..a5e351e 100644
--- a/Test/baseResults/hlsl.matpack-pragma.frag.out
+++ b/Test/baseResults/hlsl.matpack-pragma.frag.out
@@ -170,7 +170,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 44
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.matrixSwizzle.vert.out b/Test/baseResults/hlsl.matrixSwizzle.vert.out
index 237ce5d..7bc0c17 100644
--- a/Test/baseResults/hlsl.matrixSwizzle.vert.out
+++ b/Test/baseResults/hlsl.matrixSwizzle.vert.out
@@ -677,7 +677,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 118
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.matrixindex.frag.out b/Test/baseResults/hlsl.matrixindex.frag.out
index 63ddc4d..1e5fbb9 100644
--- a/Test/baseResults/hlsl.matrixindex.frag.out
+++ b/Test/baseResults/hlsl.matrixindex.frag.out
@@ -272,7 +272,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 83
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.max.frag.out b/Test/baseResults/hlsl.max.frag.out
index db215a2..14cd8bf 100644
--- a/Test/baseResults/hlsl.max.frag.out
+++ b/Test/baseResults/hlsl.max.frag.out
@@ -66,7 +66,7 @@
 0:?     'input2' (layout( location=1) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 33
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.memberFunCall.frag.out b/Test/baseResults/hlsl.memberFunCall.frag.out
index 01cb99a..83dc86f 100644
--- a/Test/baseResults/hlsl.memberFunCall.frag.out
+++ b/Test/baseResults/hlsl.memberFunCall.frag.out
@@ -152,7 +152,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 73
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.mintypes.frag.out b/Test/baseResults/hlsl.mintypes.frag.out
index 4824bcb..2ce899b 100644
--- a/Test/baseResults/hlsl.mintypes.frag.out
+++ b/Test/baseResults/hlsl.mintypes.frag.out
@@ -98,7 +98,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 70
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.mip.operator.frag.out b/Test/baseResults/hlsl.mip.operator.frag.out
index 478e808..4123d23 100644
--- a/Test/baseResults/hlsl.mip.operator.frag.out
+++ b/Test/baseResults/hlsl.mip.operator.frag.out
@@ -128,7 +128,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 61
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.mul-truncate.frag.out b/Test/baseResults/hlsl.mul-truncate.frag.out
index a7de28c..c337ed4 100644
--- a/Test/baseResults/hlsl.mul-truncate.frag.out
+++ b/Test/baseResults/hlsl.mul-truncate.frag.out
@@ -383,7 +383,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 190
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.multiDescriptorSet.frag.out b/Test/baseResults/hlsl.multiDescriptorSet.frag.out
index 8bd1ad8..fa48092 100644
--- a/Test/baseResults/hlsl.multiDescriptorSet.frag.out
+++ b/Test/baseResults/hlsl.multiDescriptorSet.frag.out
@@ -1,6 +1,6 @@
 hlsl.multiDescriptorSet.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 92
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.multiEntry.vert.out b/Test/baseResults/hlsl.multiEntry.vert.out
index c051591..d641512 100644
--- a/Test/baseResults/hlsl.multiEntry.vert.out
+++ b/Test/baseResults/hlsl.multiEntry.vert.out
@@ -70,7 +70,7 @@
 0:?     'Index' ( in uint VertexIndex)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 41
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.multiReturn.frag.out b/Test/baseResults/hlsl.multiReturn.frag.out
index 6c41c77..54b5107 100644
--- a/Test/baseResults/hlsl.multiReturn.frag.out
+++ b/Test/baseResults/hlsl.multiReturn.frag.out
@@ -48,7 +48,7 @@
 0:?     'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{ temp float f,  temp 3-component vector of float v,  temp 3X3 matrix of float m} s})
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 42
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.namespace.frag.out b/Test/baseResults/hlsl.namespace.frag.out
index 8df43ad..9431f66 100644
--- a/Test/baseResults/hlsl.namespace.frag.out
+++ b/Test/baseResults/hlsl.namespace.frag.out
@@ -103,7 +103,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 54
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.noSemantic.functionality1.comp.out b/Test/baseResults/hlsl.noSemantic.functionality1.comp.out
index 3ede90e..fc51e9c 100644
--- a/Test/baseResults/hlsl.noSemantic.functionality1.comp.out
+++ b/Test/baseResults/hlsl.noSemantic.functionality1.comp.out
@@ -1,6 +1,6 @@
 hlsl.noSemantic.functionality1.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 30
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.nonint-index.frag.out b/Test/baseResults/hlsl.nonint-index.frag.out
index 131c1ec..0b6bdbc 100644
--- a/Test/baseResults/hlsl.nonint-index.frag.out
+++ b/Test/baseResults/hlsl.nonint-index.frag.out
@@ -88,7 +88,7 @@
 0:?     'input' (layout( location=0) in float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 39
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out b/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out
index 1927a4c..268e563 100644
--- a/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out
+++ b/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out
@@ -268,7 +268,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 111
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.numericsuffixes.frag.out b/Test/baseResults/hlsl.numericsuffixes.frag.out
index b1fa856..b433266 100644
--- a/Test/baseResults/hlsl.numericsuffixes.frag.out
+++ b/Test/baseResults/hlsl.numericsuffixes.frag.out
@@ -192,7 +192,7 @@
 0:?     '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 54
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.numthreads.comp.out b/Test/baseResults/hlsl.numthreads.comp.out
index fd7de34..95cf29f 100644
--- a/Test/baseResults/hlsl.numthreads.comp.out
+++ b/Test/baseResults/hlsl.numthreads.comp.out
@@ -44,7 +44,7 @@
 0:?     'tid' ( in 3-component vector of uint GlobalInvocationID)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 23
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.opaque-type-bug.frag.out b/Test/baseResults/hlsl.opaque-type-bug.frag.out
index 918b462..4ac7a91 100644
--- a/Test/baseResults/hlsl.opaque-type-bug.frag.out
+++ b/Test/baseResults/hlsl.opaque-type-bug.frag.out
@@ -58,7 +58,7 @@
 0:?     'MyTexture' (layout( binding=0) uniform texture2D)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 27
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.overload.frag.out b/Test/baseResults/hlsl.overload.frag.out
index 5960d3d..d93c305 100644
--- a/Test/baseResults/hlsl.overload.frag.out
+++ b/Test/baseResults/hlsl.overload.frag.out
@@ -734,7 +734,7 @@
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 520
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.params.default.frag.out b/Test/baseResults/hlsl.params.default.frag.out
index d1ecfa6..5d054bf 100644
--- a/Test/baseResults/hlsl.params.default.frag.out
+++ b/Test/baseResults/hlsl.params.default.frag.out
@@ -376,7 +376,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of int)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 178
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.partialFlattenLocal.vert.out b/Test/baseResults/hlsl.partialFlattenLocal.vert.out
index 46df206..c3ed3a2 100644
--- a/Test/baseResults/hlsl.partialFlattenLocal.vert.out
+++ b/Test/baseResults/hlsl.partialFlattenLocal.vert.out
@@ -237,7 +237,7 @@
 0:?     'pos' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 90
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.partialFlattenMixed.vert.out b/Test/baseResults/hlsl.partialFlattenMixed.vert.out
index da832b4..520a0fb 100644
--- a/Test/baseResults/hlsl.partialFlattenMixed.vert.out
+++ b/Test/baseResults/hlsl.partialFlattenMixed.vert.out
@@ -91,7 +91,7 @@
 0:?     'pos' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 43
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.partialInit.frag.out b/Test/baseResults/hlsl.partialInit.frag.out
index 6881671..551c579 100644
--- a/Test/baseResults/hlsl.partialInit.frag.out
+++ b/Test/baseResults/hlsl.partialInit.frag.out
@@ -400,7 +400,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 104
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.pp.line.frag.out b/Test/baseResults/hlsl.pp.line.frag.out
index 2c06fe9..0416cf4 100644
--- a/Test/baseResults/hlsl.pp.line.frag.out
+++ b/Test/baseResults/hlsl.pp.line.frag.out
@@ -120,7 +120,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 42
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.pp.line2.frag.out b/Test/baseResults/hlsl.pp.line2.frag.out
index 10bbf6a..338884a 100644
--- a/Test/baseResults/hlsl.pp.line2.frag.out
+++ b/Test/baseResults/hlsl.pp.line2.frag.out
@@ -1,6 +1,6 @@
 hlsl.pp.line2.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 80
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.pp.line3.frag.out b/Test/baseResults/hlsl.pp.line3.frag.out
index 33e5d55..e94547c 100644
--- a/Test/baseResults/hlsl.pp.line3.frag.out
+++ b/Test/baseResults/hlsl.pp.line3.frag.out
@@ -1,6 +1,6 @@
 hlsl.pp.line3.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 78
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.pp.line4.frag.out b/Test/baseResults/hlsl.pp.line4.frag.out
index ff92b52..1ddb98b 100644
--- a/Test/baseResults/hlsl.pp.line4.frag.out
+++ b/Test/baseResults/hlsl.pp.line4.frag.out
@@ -1,6 +1,6 @@
 hlsl.pp.line4.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 115
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.pp.vert.out b/Test/baseResults/hlsl.pp.vert.out
index 24ddfd1..5d4e943 100644
--- a/Test/baseResults/hlsl.pp.vert.out
+++ b/Test/baseResults/hlsl.pp.vert.out
@@ -26,7 +26,7 @@
 0:?     'anon@0' (layout( row_major std140) uniform block{ uniform int goodGlobal1,  uniform int goodGlobal2})
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 13
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.precedence.frag.out b/Test/baseResults/hlsl.precedence.frag.out
index f4c5338..b51be0d 100644
--- a/Test/baseResults/hlsl.precedence.frag.out
+++ b/Test/baseResults/hlsl.precedence.frag.out
@@ -148,7 +148,7 @@
 0:?     'a4' (layout( location=3) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 65
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.precedence2.frag.out b/Test/baseResults/hlsl.precedence2.frag.out
index 9ce674d..7dd21a6 100644
--- a/Test/baseResults/hlsl.precedence2.frag.out
+++ b/Test/baseResults/hlsl.precedence2.frag.out
@@ -114,7 +114,7 @@
 0:?     'a4' (layout( location=3) flat in int)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 56
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.precise.frag.out b/Test/baseResults/hlsl.precise.frag.out
index dd45069..84b2648 100644
--- a/Test/baseResults/hlsl.precise.frag.out
+++ b/Test/baseResults/hlsl.precise.frag.out
@@ -76,7 +76,7 @@
 0:?     '@entryPointOutput.color' (layout( location=0) noContraction out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 37
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.preprocessor.frag.out b/Test/baseResults/hlsl.preprocessor.frag.out
index 3c36530..11ec1ad 100644
--- a/Test/baseResults/hlsl.preprocessor.frag.out
+++ b/Test/baseResults/hlsl.preprocessor.frag.out
@@ -94,7 +94,7 @@
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 40
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.promote.atomic.frag.out b/Test/baseResults/hlsl.promote.atomic.frag.out
index bd781bd..4d56fba 100644
--- a/Test/baseResults/hlsl.promote.atomic.frag.out
+++ b/Test/baseResults/hlsl.promote.atomic.frag.out
@@ -64,7 +64,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 36
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.promote.binary.frag.out b/Test/baseResults/hlsl.promote.binary.frag.out
index 624a506..f63fc3e 100644
--- a/Test/baseResults/hlsl.promote.binary.frag.out
+++ b/Test/baseResults/hlsl.promote.binary.frag.out
@@ -172,7 +172,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 83
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.promote.vec1.frag.out b/Test/baseResults/hlsl.promote.vec1.frag.out
index b92d740..a6ad7ca 100644
--- a/Test/baseResults/hlsl.promote.vec1.frag.out
+++ b/Test/baseResults/hlsl.promote.vec1.frag.out
@@ -80,7 +80,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 31
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.promotions.frag.out b/Test/baseResults/hlsl.promotions.frag.out
index cb79983..0a17395 100644
--- a/Test/baseResults/hlsl.promotions.frag.out
+++ b/Test/baseResults/hlsl.promotions.frag.out
@@ -1582,7 +1582,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 596
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.rw.atomics.frag.out b/Test/baseResults/hlsl.rw.atomics.frag.out
index 02aa00c..77b140b 100644
--- a/Test/baseResults/hlsl.rw.atomics.frag.out
+++ b/Test/baseResults/hlsl.rw.atomics.frag.out
@@ -3946,7 +3946,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 1147
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.rw.bracket.frag.out b/Test/baseResults/hlsl.rw.bracket.frag.out
index dc60a29..70f8bbe 100644
--- a/Test/baseResults/hlsl.rw.bracket.frag.out
+++ b/Test/baseResults/hlsl.rw.bracket.frag.out
@@ -1744,7 +1744,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 607
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.rw.register.frag.out b/Test/baseResults/hlsl.rw.register.frag.out
index 01f6c89..6004512 100644
--- a/Test/baseResults/hlsl.rw.register.frag.out
+++ b/Test/baseResults/hlsl.rw.register.frag.out
@@ -98,7 +98,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 42
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
index aabee59..a8e33dd 100644
--- a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
+++ b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
@@ -1690,7 +1690,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 571
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.rw.swizzle.frag.out b/Test/baseResults/hlsl.rw.swizzle.frag.out
index 089c603..267d733 100644
--- a/Test/baseResults/hlsl.rw.swizzle.frag.out
+++ b/Test/baseResults/hlsl.rw.swizzle.frag.out
@@ -202,7 +202,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 63
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
index a3b5237..06c24e7 100644
--- a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
+++ b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
@@ -1708,7 +1708,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 605
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.sample.array.dx10.frag.out b/Test/baseResults/hlsl.sample.array.dx10.frag.out
index 9066a1d..2d00531 100644
--- a/Test/baseResults/hlsl.sample.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.array.dx10.frag.out
@@ -322,7 +322,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 146
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.sample.basic.dx10.frag.out b/Test/baseResults/hlsl.sample.basic.dx10.frag.out
index 0940e10..1760902 100644
--- a/Test/baseResults/hlsl.sample.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.basic.dx10.frag.out
@@ -550,7 +550,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 198
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.sample.dx9.frag.out b/Test/baseResults/hlsl.sample.dx9.frag.out
index 7b3432a..ce6d546 100644
--- a/Test/baseResults/hlsl.sample.dx9.frag.out
+++ b/Test/baseResults/hlsl.sample.dx9.frag.out
@@ -378,7 +378,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 135
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.sample.dx9.vert.out b/Test/baseResults/hlsl.sample.dx9.vert.out
index 732b043..2b29c0c 100644
--- a/Test/baseResults/hlsl.sample.dx9.vert.out
+++ b/Test/baseResults/hlsl.sample.dx9.vert.out
@@ -154,7 +154,7 @@
 0:?     '@entryPointOutput.Pos' ( out 4-component vector of float Position)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 64
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.sample.offset.dx10.frag.out b/Test/baseResults/hlsl.sample.offset.dx10.frag.out
index 5eadb4a..b641ad2 100644
--- a/Test/baseResults/hlsl.sample.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.offset.dx10.frag.out
@@ -364,7 +364,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 161
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
index edc5d31..54dc467 100644
--- a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
@@ -274,7 +274,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 118
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out
index cc44567..8aa0e7f 100644
--- a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out
@@ -154,7 +154,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 72
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
index c229502..aec493d 100644
--- a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
@@ -358,7 +358,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 146
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
index c840fa4..9a29c6d 100644
--- a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
@@ -424,7 +424,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 170
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
index be4b4f8..fb78b6c 100644
--- a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
@@ -401,7 +401,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 161
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
index ae33f40..8b7bd37 100644
--- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
@@ -299,7 +299,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 118
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
index 54cbc04..8d0ff46 100644
--- a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out
@@ -399,7 +399,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 209
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
index 90e1173..c44f16b 100644
--- a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out
@@ -381,7 +381,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 198
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplecmp.dualmode.frag.out b/Test/baseResults/hlsl.samplecmp.dualmode.frag.out
index 7bcf085..fd5dd3e 100644
--- a/Test/baseResults/hlsl.samplecmp.dualmode.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.dualmode.frag.out
@@ -85,7 +85,7 @@
 0:?     'g_tTex' (layout( binding=3) uniform texture1D)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 43
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
index 29d02da..ca0fb8c 100644
--- a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out
@@ -327,7 +327,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 167
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
index bf7b6f0..3d0b8fd 100644
--- a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out
@@ -339,7 +339,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 178
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
index 5b21f70..ce13388 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out
@@ -435,7 +435,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 210
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
index fae6899..4bf15ec 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out
@@ -417,7 +417,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 199
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
index 0987ea8..b85daf0 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out
@@ -351,7 +351,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 168
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
index 7434514..6f460d0 100644
--- a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out
@@ -363,7 +363,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 179
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
index 67b5692..b2922a1 100644
--- a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
@@ -430,7 +430,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 140
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
index 7edb8da..161821e 100644
--- a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
@@ -532,7 +532,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 175
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
index 979d48f..b683d98 100644
--- a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
@@ -494,7 +494,7 @@
 0:?     '@entryPointOutput.Pos' ( out 4-component vector of float Position)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 166
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
index 2620a67..81fbc0b 100644
--- a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
@@ -472,7 +472,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 166
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
index 87ad78b..01ca547 100644
--- a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
@@ -340,7 +340,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 120
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
index 4f07950..a5ff45a 100644
--- a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
@@ -358,7 +358,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 147
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
index ee982cc..6b91c17 100644
--- a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
@@ -426,7 +426,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 172
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
index 0a8ae49..8f395ed 100644
--- a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
@@ -386,7 +386,7 @@
 0:?     '@entryPointOutput.Pos' ( out 4-component vector of float Position)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 162
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
index b007ee1..10b48ec 100644
--- a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
@@ -400,7 +400,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 162
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
index 302bc81..5fb25a0 100644
--- a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
@@ -298,7 +298,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 119
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.scalar-length.frag.out b/Test/baseResults/hlsl.scalar-length.frag.out
index aa11af5..ec80897 100644
--- a/Test/baseResults/hlsl.scalar-length.frag.out
+++ b/Test/baseResults/hlsl.scalar-length.frag.out
@@ -64,7 +64,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 30
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.scalar2matrix.frag.out b/Test/baseResults/hlsl.scalar2matrix.frag.out
index 57d250e..cb996f6 100644
--- a/Test/baseResults/hlsl.scalar2matrix.frag.out
+++ b/Test/baseResults/hlsl.scalar2matrix.frag.out
@@ -374,7 +374,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 96
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.scalarCast.vert.out b/Test/baseResults/hlsl.scalarCast.vert.out
index 0e07c9f..40f0f20 100644
--- a/Test/baseResults/hlsl.scalarCast.vert.out
+++ b/Test/baseResults/hlsl.scalarCast.vert.out
@@ -322,7 +322,7 @@
 0:?     '@entryPointOutput.texCoord' (layout( location=0) out 2-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 120
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.scope.frag.out b/Test/baseResults/hlsl.scope.frag.out
index b563380..882158e 100644
--- a/Test/baseResults/hlsl.scope.frag.out
+++ b/Test/baseResults/hlsl.scope.frag.out
@@ -102,7 +102,7 @@
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 49
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.self_cast.frag.out b/Test/baseResults/hlsl.self_cast.frag.out
index 9d398ed..6f0e1dd 100644
--- a/Test/baseResults/hlsl.self_cast.frag.out
+++ b/Test/baseResults/hlsl.self_cast.frag.out
@@ -68,7 +68,7 @@
 0:?   Linker Objects
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 32
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.semantic-1.vert.out b/Test/baseResults/hlsl.semantic-1.vert.out
index b5e4091..96c14a9 100644
--- a/Test/baseResults/hlsl.semantic-1.vert.out
+++ b/Test/baseResults/hlsl.semantic-1.vert.out
@@ -242,7 +242,7 @@
 0:?     'v' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 84
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.semantic.geom.out b/Test/baseResults/hlsl.semantic.geom.out
index 773c8aa..daf4eed 100644
--- a/Test/baseResults/hlsl.semantic.geom.out
+++ b/Test/baseResults/hlsl.semantic.geom.out
@@ -157,7 +157,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 65
 
                               Capability Geometry
diff --git a/Test/baseResults/hlsl.semantic.vert.out b/Test/baseResults/hlsl.semantic.vert.out
index 2dbcd57..144df05 100644
--- a/Test/baseResults/hlsl.semantic.vert.out
+++ b/Test/baseResults/hlsl.semantic.vert.out
@@ -210,7 +210,7 @@
 0:?     '@entryPointOutput.cull1' ( out 2-element array of float CullDistance)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 70
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.semicolons.frag.out b/Test/baseResults/hlsl.semicolons.frag.out
index 94307a6..b45f59d 100644
--- a/Test/baseResults/hlsl.semicolons.frag.out
+++ b/Test/baseResults/hlsl.semicolons.frag.out
@@ -74,7 +74,7 @@
 0:?     '@entryPointOutput.color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 31
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.shapeConv.frag.out b/Test/baseResults/hlsl.shapeConv.frag.out
index d283809..8da8d48 100644
--- a/Test/baseResults/hlsl.shapeConv.frag.out
+++ b/Test/baseResults/hlsl.shapeConv.frag.out
@@ -319,7 +319,7 @@
 0:?   Linker Objects
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 127
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.shapeConvRet.frag.out b/Test/baseResults/hlsl.shapeConvRet.frag.out
index fc12f7f..efcbe04 100644
--- a/Test/baseResults/hlsl.shapeConvRet.frag.out
+++ b/Test/baseResults/hlsl.shapeConvRet.frag.out
@@ -68,7 +68,7 @@
 0:?     'f' (layout( location=0) in float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 35
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.sin.frag.out b/Test/baseResults/hlsl.sin.frag.out
index b92085e..3128cec 100644
--- a/Test/baseResults/hlsl.sin.frag.out
+++ b/Test/baseResults/hlsl.sin.frag.out
@@ -52,7 +52,7 @@
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 26
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.snorm.uav.comp.out b/Test/baseResults/hlsl.snorm.uav.comp.out
index 4c5e603..739d77d 100644
--- a/Test/baseResults/hlsl.snorm.uav.comp.out
+++ b/Test/baseResults/hlsl.snorm.uav.comp.out
@@ -112,7 +112,7 @@
 0:?     'tid' ( in 3-component vector of uint GlobalInvocationID)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 54
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.specConstant.frag.out b/Test/baseResults/hlsl.specConstant.frag.out
index c2942e3..fdcc2a0 100755
--- a/Test/baseResults/hlsl.specConstant.frag.out
+++ b/Test/baseResults/hlsl.specConstant.frag.out
@@ -136,7 +136,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 61
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.staticFuncInit.frag.out b/Test/baseResults/hlsl.staticFuncInit.frag.out
index d468cec..04924ed 100644
--- a/Test/baseResults/hlsl.staticFuncInit.frag.out
+++ b/Test/baseResults/hlsl.staticFuncInit.frag.out
@@ -130,7 +130,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 57
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.staticMemberFunction.frag.out b/Test/baseResults/hlsl.staticMemberFunction.frag.out
index 2c7e418..5ae189d 100644
--- a/Test/baseResults/hlsl.staticMemberFunction.frag.out
+++ b/Test/baseResults/hlsl.staticMemberFunction.frag.out
@@ -118,7 +118,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 54
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out b/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out
index 29a14c4..f5e004d 100644
--- a/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out
+++ b/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out
@@ -96,7 +96,7 @@
 0:?     'dispatchThreadID' ( in 3-component vector of uint GlobalInvocationID)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 42
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.string.frag.out b/Test/baseResults/hlsl.string.frag.out
index 9181b93..6ee1945 100644
--- a/Test/baseResults/hlsl.string.frag.out
+++ b/Test/baseResults/hlsl.string.frag.out
@@ -50,7 +50,7 @@
 0:?     'f' (layout( location=0) in float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 24
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.stringtoken.frag.out b/Test/baseResults/hlsl.stringtoken.frag.out
index 15263c5..1b6e0a8 100644
--- a/Test/baseResults/hlsl.stringtoken.frag.out
+++ b/Test/baseResults/hlsl.stringtoken.frag.out
@@ -70,7 +70,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 34
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.struct.frag.out b/Test/baseResults/hlsl.struct.frag.out
index 192041f..a255b36 100644
--- a/Test/baseResults/hlsl.struct.frag.out
+++ b/Test/baseResults/hlsl.struct.frag.out
@@ -213,7 +213,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 102
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.struct.split-1.vert.out b/Test/baseResults/hlsl.struct.split-1.vert.out
index d7d6e92..8c25ca2 100644
--- a/Test/baseResults/hlsl.struct.split-1.vert.out
+++ b/Test/baseResults/hlsl.struct.split-1.vert.out
@@ -196,7 +196,7 @@
 0:?     'Pos_loose' (layout( location=3) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 70
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.struct.split.array.geom.out b/Test/baseResults/hlsl.struct.split.array.geom.out
index 081b05c..c489ffb 100644
--- a/Test/baseResults/hlsl.struct.split.array.geom.out
+++ b/Test/baseResults/hlsl.struct.split.array.geom.out
@@ -160,7 +160,7 @@
 0:?     'OutputStream.VertexID' (layout( location=2) out uint)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 82
 
                               Capability Geometry
diff --git a/Test/baseResults/hlsl.struct.split.assign.frag.out b/Test/baseResults/hlsl.struct.split.assign.frag.out
index 24c8879..3209ab7 100644
--- a/Test/baseResults/hlsl.struct.split.assign.frag.out
+++ b/Test/baseResults/hlsl.struct.split.assign.frag.out
@@ -209,7 +209,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 66
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.struct.split.call.vert.out b/Test/baseResults/hlsl.struct.split.call.vert.out
index 50d1d2b..7c65c06 100644
--- a/Test/baseResults/hlsl.struct.split.call.vert.out
+++ b/Test/baseResults/hlsl.struct.split.call.vert.out
@@ -214,7 +214,7 @@
 0:?     'vsin.x1_in' (layout( location=2) in int)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 77
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.struct.split.nested.geom.out b/Test/baseResults/hlsl.struct.split.nested.geom.out
index 7a72a3f..75b5003 100644
--- a/Test/baseResults/hlsl.struct.split.nested.geom.out
+++ b/Test/baseResults/hlsl.struct.split.nested.geom.out
@@ -448,7 +448,7 @@
 0:?     'ts.contains_no_builtin_io.m1' (layout( location=3) out int)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 100
 
                               Capability Geometry
diff --git a/Test/baseResults/hlsl.struct.split.trivial.geom.out b/Test/baseResults/hlsl.struct.split.trivial.geom.out
index 477fbd2..ecb929e 100644
--- a/Test/baseResults/hlsl.struct.split.trivial.geom.out
+++ b/Test/baseResults/hlsl.struct.split.trivial.geom.out
@@ -192,7 +192,7 @@
 0:?     'ts.pos' ( out 4-component vector of float Position)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 67
 
                               Capability Geometry
diff --git a/Test/baseResults/hlsl.struct.split.trivial.vert.out b/Test/baseResults/hlsl.struct.split.trivial.vert.out
index 8bf477e..f516ea0 100644
--- a/Test/baseResults/hlsl.struct.split.trivial.vert.out
+++ b/Test/baseResults/hlsl.struct.split.trivial.vert.out
@@ -98,7 +98,7 @@
 0:?     'Pos_loose' (layout( location=1) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 45
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.structIoFourWay.frag.out b/Test/baseResults/hlsl.structIoFourWay.frag.out
index 9938be8..ae47037 100644
--- a/Test/baseResults/hlsl.structIoFourWay.frag.out
+++ b/Test/baseResults/hlsl.structIoFourWay.frag.out
@@ -162,7 +162,7 @@
 0:?     't.normal' (layout( location=3) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 65
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.structStructName.frag.out b/Test/baseResults/hlsl.structStructName.frag.out
index 183dcf6..6e767e4 100644
--- a/Test/baseResults/hlsl.structStructName.frag.out
+++ b/Test/baseResults/hlsl.structStructName.frag.out
@@ -44,7 +44,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out int)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 22
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.structarray.flatten.frag.out b/Test/baseResults/hlsl.structarray.flatten.frag.out
index 5d34aec..b654c32 100644
--- a/Test/baseResults/hlsl.structarray.flatten.frag.out
+++ b/Test/baseResults/hlsl.structarray.flatten.frag.out
@@ -157,7 +157,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 80
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.structarray.flatten.geom.out b/Test/baseResults/hlsl.structarray.flatten.geom.out
index f88118d..426214b 100644
--- a/Test/baseResults/hlsl.structarray.flatten.geom.out
+++ b/Test/baseResults/hlsl.structarray.flatten.geom.out
@@ -170,7 +170,7 @@
 0:?     'outStream.uv' (layout( location=1) out 2-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 58
 
                               Capability Geometry
diff --git a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
index 36050fb..c61b1d8 100644
--- a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out
@@ -151,7 +151,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 70
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.structbuffer.append.frag.out b/Test/baseResults/hlsl.structbuffer.append.frag.out
index 2e5c564..e213b4b 100644
--- a/Test/baseResults/hlsl.structbuffer.append.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.append.frag.out
@@ -124,7 +124,7 @@
 0:?     'pos' (layout( location=0) flat in uint)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 56
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.structbuffer.atomics.frag.out b/Test/baseResults/hlsl.structbuffer.atomics.frag.out
index e242cf6..d038fbd 100644
--- a/Test/baseResults/hlsl.structbuffer.atomics.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.atomics.frag.out
@@ -475,7 +475,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 87
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.structbuffer.byte.frag.out b/Test/baseResults/hlsl.structbuffer.byte.frag.out
index 26c7a06..e0f1131 100644
--- a/Test/baseResults/hlsl.structbuffer.byte.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.byte.frag.out
@@ -324,7 +324,7 @@
 0:?     'pos' (layout( location=0) flat in uint)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 114
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.structbuffer.coherent.frag.out b/Test/baseResults/hlsl.structbuffer.coherent.frag.out
index b33b44d..34b029b 100644
--- a/Test/baseResults/hlsl.structbuffer.coherent.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.coherent.frag.out
@@ -176,7 +176,7 @@
 0:?     'pos' (layout( location=0) flat in uint)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 78
 
                               Capability Shader
@@ -305,6 +305,5 @@
               66:    9(fvec4)   CompositeConstruct 65 65 65 65
                                 ReturnValue 66
               45:             Label
-              68:    9(fvec4) Undef
-                              ReturnValue 68
+                              Unreachable
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.structbuffer.floatidx.comp.out b/Test/baseResults/hlsl.structbuffer.floatidx.comp.out
index fbb07c2..e1c5466 100644
--- a/Test/baseResults/hlsl.structbuffer.floatidx.comp.out
+++ b/Test/baseResults/hlsl.structbuffer.floatidx.comp.out
@@ -180,7 +180,7 @@
 0:?     'nThreadId' ( in 3-component vector of uint GlobalInvocationID)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 85
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.structbuffer.fn.frag.out b/Test/baseResults/hlsl.structbuffer.fn.frag.out
index 085d9dd..1df5880 100644
--- a/Test/baseResults/hlsl.structbuffer.fn.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.fn.frag.out
@@ -139,7 +139,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 78
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.structbuffer.fn2.comp.out b/Test/baseResults/hlsl.structbuffer.fn2.comp.out
index 517b48c..d25446b 100644
--- a/Test/baseResults/hlsl.structbuffer.fn2.comp.out
+++ b/Test/baseResults/hlsl.structbuffer.fn2.comp.out
@@ -136,7 +136,7 @@
 0:?     'dispatchId' ( in 3-component vector of uint GlobalInvocationID)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 63
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.structbuffer.frag.out b/Test/baseResults/hlsl.structbuffer.frag.out
index 9a67fd7..38e915d 100644
--- a/Test/baseResults/hlsl.structbuffer.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.frag.out
@@ -188,7 +188,7 @@
 0:?     'pos' (layout( location=0) flat in uint)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 96
 
                               Capability Shader
@@ -344,6 +344,5 @@
               84:    9(fvec4)   CompositeConstruct 83 83 83 83
                                 ReturnValue 84
               53:             Label
-              86:    9(fvec4) Undef
-                              ReturnValue 86
+                              Unreachable
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out b/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out
index 5c73619..57f387c 100644
--- a/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out
+++ b/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out
@@ -1,6 +1,6 @@
 hlsl.structbuffer.incdec.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 70
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.structbuffer.incdec.frag.out b/Test/baseResults/hlsl.structbuffer.incdec.frag.out
index 452e9ee..b9c1630 100644
--- a/Test/baseResults/hlsl.structbuffer.incdec.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.incdec.frag.out
@@ -204,7 +204,7 @@
 0:?     'pos' (layout( location=0) flat in uint)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 70
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.structbuffer.rw.frag.out b/Test/baseResults/hlsl.structbuffer.rw.frag.out
index ceccd5b..fbd48a2 100644
--- a/Test/baseResults/hlsl.structbuffer.rw.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.rw.frag.out
@@ -176,7 +176,7 @@
 0:?     'pos' (layout( location=0) flat in uint)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 78
 
                               Capability Shader
@@ -303,6 +303,5 @@
               66:    9(fvec4)   CompositeConstruct 65 65 65 65
                                 ReturnValue 66
               45:             Label
-              68:    9(fvec4) Undef
-                              ReturnValue 68
+                              Unreachable
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out b/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out
index 00a055e..a061eac 100644
--- a/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out
+++ b/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out
@@ -1004,7 +1004,7 @@
 0:?     'pos' (layout( location=0) flat in uint)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 239
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.structin.vert.out b/Test/baseResults/hlsl.structin.vert.out
index d7f539d..ad9c0d4 100644
--- a/Test/baseResults/hlsl.structin.vert.out
+++ b/Test/baseResults/hlsl.structin.vert.out
@@ -340,7 +340,7 @@
 0:?     'e' (layout( location=5) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 94
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.subpass.frag.out b/Test/baseResults/hlsl.subpass.frag.out
index ad5a013..8d48028 100644
--- a/Test/baseResults/hlsl.subpass.frag.out
+++ b/Test/baseResults/hlsl.subpass.frag.out
@@ -430,7 +430,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 204
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.switch.frag.out b/Test/baseResults/hlsl.switch.frag.out
index b72891e..b94187d 100644
--- a/Test/baseResults/hlsl.switch.frag.out
+++ b/Test/baseResults/hlsl.switch.frag.out
@@ -296,7 +296,7 @@
 0:?     'd' (layout( location=2) flat in int)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 106
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.swizzle.frag.out b/Test/baseResults/hlsl.swizzle.frag.out
index c734d50..87ccdc7 100644
--- a/Test/baseResults/hlsl.swizzle.frag.out
+++ b/Test/baseResults/hlsl.swizzle.frag.out
@@ -77,7 +77,7 @@
 0:?     'AmbientColor' ( global 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 30
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.synthesizeInput.frag.out b/Test/baseResults/hlsl.synthesizeInput.frag.out
index bbe9743..31f7b7a 100644
--- a/Test/baseResults/hlsl.synthesizeInput.frag.out
+++ b/Test/baseResults/hlsl.synthesizeInput.frag.out
@@ -98,7 +98,7 @@
 0:?     'input.no_interp' (layout( location=1) flat in uint)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 44
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.target.frag.out b/Test/baseResults/hlsl.target.frag.out
index 0001796..0ab23e8 100644
--- a/Test/baseResults/hlsl.target.frag.out
+++ b/Test/baseResults/hlsl.target.frag.out
@@ -114,7 +114,7 @@
 0:?     'out2' (layout( location=3) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 50
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.targetStruct1.frag.out b/Test/baseResults/hlsl.targetStruct1.frag.out
index 371ce2a..93d787c 100644
--- a/Test/baseResults/hlsl.targetStruct1.frag.out
+++ b/Test/baseResults/hlsl.targetStruct1.frag.out
@@ -184,7 +184,7 @@
 0:?     'po' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 65
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.targetStruct2.frag.out b/Test/baseResults/hlsl.targetStruct2.frag.out
index e6099c9..0fae66f 100644
--- a/Test/baseResults/hlsl.targetStruct2.frag.out
+++ b/Test/baseResults/hlsl.targetStruct2.frag.out
@@ -184,7 +184,7 @@
 0:?     'po' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 65
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.templatetypes.frag.out b/Test/baseResults/hlsl.templatetypes.frag.out
index 3fc5846..1dcfc46 100644
--- a/Test/baseResults/hlsl.templatetypes.frag.out
+++ b/Test/baseResults/hlsl.templatetypes.frag.out
@@ -508,7 +508,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 153
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.texture.struct.frag.out b/Test/baseResults/hlsl.texture.struct.frag.out
index 6fc5428..7835d32 100644
--- a/Test/baseResults/hlsl.texture.struct.frag.out
+++ b/Test/baseResults/hlsl.texture.struct.frag.out
@@ -839,7 +839,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 240
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.texture.subvec4.frag.out b/Test/baseResults/hlsl.texture.subvec4.frag.out
index 1beb027..01f32da 100644
--- a/Test/baseResults/hlsl.texture.subvec4.frag.out
+++ b/Test/baseResults/hlsl.texture.subvec4.frag.out
@@ -356,7 +356,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 130
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.texturebuffer.frag.out b/Test/baseResults/hlsl.texturebuffer.frag.out
index 0f761af..1aa9dbc 100644
--- a/Test/baseResults/hlsl.texturebuffer.frag.out
+++ b/Test/baseResults/hlsl.texturebuffer.frag.out
@@ -70,7 +70,7 @@
 0:?     'pos' ( in 4-component vector of float FragCoord)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 39
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.this.frag.out b/Test/baseResults/hlsl.this.frag.out
index ac5fde8..f32f109 100644
--- a/Test/baseResults/hlsl.this.frag.out
+++ b/Test/baseResults/hlsl.this.frag.out
@@ -240,7 +240,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 98
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.tristream-append.geom.out b/Test/baseResults/hlsl.tristream-append.geom.out
index 94344cd..514ce16 100644
--- a/Test/baseResults/hlsl.tristream-append.geom.out
+++ b/Test/baseResults/hlsl.tristream-append.geom.out
@@ -107,7 +107,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 57
 
                               Capability Geometry
diff --git a/Test/baseResults/hlsl.tx.bracket.frag.out b/Test/baseResults/hlsl.tx.bracket.frag.out
index f5c8288..0e8fb5c 100644
--- a/Test/baseResults/hlsl.tx.bracket.frag.out
+++ b/Test/baseResults/hlsl.tx.bracket.frag.out
@@ -422,7 +422,7 @@
 0:?     '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 188
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.tx.overload.frag.out b/Test/baseResults/hlsl.tx.overload.frag.out
index 3277954..8556b9e 100644
--- a/Test/baseResults/hlsl.tx.overload.frag.out
+++ b/Test/baseResults/hlsl.tx.overload.frag.out
@@ -134,7 +134,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 73
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.type.half.frag.out b/Test/baseResults/hlsl.type.half.frag.out
index 6b5a945..719b139 100644
--- a/Test/baseResults/hlsl.type.half.frag.out
+++ b/Test/baseResults/hlsl.type.half.frag.out
@@ -164,7 +164,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 60
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.type.identifier.frag.out b/Test/baseResults/hlsl.type.identifier.frag.out
index 2eaa2ae..adec4a3 100644
--- a/Test/baseResults/hlsl.type.identifier.frag.out
+++ b/Test/baseResults/hlsl.type.identifier.frag.out
@@ -266,7 +266,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 105
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.type.type.conversion.valid.frag.out b/Test/baseResults/hlsl.type.type.conversion.valid.frag.out
index fc67200..3e511ff 100644
--- a/Test/baseResults/hlsl.type.type.conversion.valid.frag.out
+++ b/Test/baseResults/hlsl.type.type.conversion.valid.frag.out
@@ -1364,7 +1364,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 122
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.typeGraphCopy.vert.out b/Test/baseResults/hlsl.typeGraphCopy.vert.out
index 8509cc4..1ca93bb 100644
--- a/Test/baseResults/hlsl.typeGraphCopy.vert.out
+++ b/Test/baseResults/hlsl.typeGraphCopy.vert.out
@@ -62,7 +62,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 28
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.typedef.frag.out b/Test/baseResults/hlsl.typedef.frag.out
index 11fd107..d4ab66e 100644
--- a/Test/baseResults/hlsl.typedef.frag.out
+++ b/Test/baseResults/hlsl.typedef.frag.out
@@ -79,7 +79,7 @@
 0:?   Linker Objects
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 34
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.void.frag.out b/Test/baseResults/hlsl.void.frag.out
index 30edd63..99de9d9 100644
--- a/Test/baseResults/hlsl.void.frag.out
+++ b/Test/baseResults/hlsl.void.frag.out
@@ -54,7 +54,7 @@
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 27
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.wavebroadcast.comp.out b/Test/baseResults/hlsl.wavebroadcast.comp.out
index f1c9679..a9fc9b4 100644
--- a/Test/baseResults/hlsl.wavebroadcast.comp.out
+++ b/Test/baseResults/hlsl.wavebroadcast.comp.out
@@ -2298,7 +2298,7 @@
 0:?     'dti' ( in 3-component vector of uint GlobalInvocationID)
 
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 359
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.waveprefix.comp.out b/Test/baseResults/hlsl.waveprefix.comp.out
index a9a4b75..3fc8497 100644
--- a/Test/baseResults/hlsl.waveprefix.comp.out
+++ b/Test/baseResults/hlsl.waveprefix.comp.out
@@ -2322,7 +2322,7 @@
 0:?     'dti' ( in 3-component vector of uint GlobalInvocationID)
 
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 369
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.wavequad.comp.out b/Test/baseResults/hlsl.wavequad.comp.out
index e7e10f1..e237e15 100644
--- a/Test/baseResults/hlsl.wavequad.comp.out
+++ b/Test/baseResults/hlsl.wavequad.comp.out
@@ -8026,7 +8026,7 @@
 0:?     'dti' ( in 3-component vector of uint GlobalInvocationID)
 
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 1120
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.wavequery.comp.out b/Test/baseResults/hlsl.wavequery.comp.out
index 67da71d..09cba4d 100644
--- a/Test/baseResults/hlsl.wavequery.comp.out
+++ b/Test/baseResults/hlsl.wavequery.comp.out
@@ -60,7 +60,7 @@
 0:?     'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data})
 
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 28
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.wavequery.frag.out b/Test/baseResults/hlsl.wavequery.frag.out
index 52304a6..8848a15 100644
--- a/Test/baseResults/hlsl.wavequery.frag.out
+++ b/Test/baseResults/hlsl.wavequery.frag.out
@@ -72,7 +72,7 @@
 0:?     '@entryPointOutput' (layout( location=0) out 4-component vector of float)
 
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 30
 
                               Capability Shader
@@ -118,6 +118,5 @@
               23:               Label
                                 ReturnValue 24
               16:             Label
-              26:    7(fvec4) Undef
-                              ReturnValue 26
+                              Unreachable
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.wavereduction.comp.out b/Test/baseResults/hlsl.wavereduction.comp.out
index 3e0d3fb..c31f7f5 100644
--- a/Test/baseResults/hlsl.wavereduction.comp.out
+++ b/Test/baseResults/hlsl.wavereduction.comp.out
@@ -6186,7 +6186,7 @@
 0:?     'dti' ( in 3-component vector of uint GlobalInvocationID)
 
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 901
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.wavevote.comp.out b/Test/baseResults/hlsl.wavevote.comp.out
index 7b671bf..b5c095d 100644
--- a/Test/baseResults/hlsl.wavevote.comp.out
+++ b/Test/baseResults/hlsl.wavevote.comp.out
@@ -204,7 +204,7 @@
 0:?     'dti' ( in 3-component vector of uint GlobalInvocationID)
 
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 75
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.whileLoop.frag.out b/Test/baseResults/hlsl.whileLoop.frag.out
index babc77d..a63d006 100644
--- a/Test/baseResults/hlsl.whileLoop.frag.out
+++ b/Test/baseResults/hlsl.whileLoop.frag.out
@@ -96,7 +96,7 @@
 0:?     'input' (layout( location=0) in 4-component vector of float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 52
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.y-negate-1.vert.out b/Test/baseResults/hlsl.y-negate-1.vert.out
index c086cc0..08413d2 100644
--- a/Test/baseResults/hlsl.y-negate-1.vert.out
+++ b/Test/baseResults/hlsl.y-negate-1.vert.out
@@ -72,7 +72,7 @@
 0:?     '@entryPointOutput' ( out 4-component vector of float Position)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 34
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.y-negate-2.vert.out b/Test/baseResults/hlsl.y-negate-2.vert.out
index 4e6f189..9e90d3b 100644
--- a/Test/baseResults/hlsl.y-negate-2.vert.out
+++ b/Test/baseResults/hlsl.y-negate-2.vert.out
@@ -80,7 +80,7 @@
 0:?     'position' ( out 4-component vector of float Position)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 37
 
                               Capability Shader
diff --git a/Test/baseResults/hlsl.y-negate-3.vert.out b/Test/baseResults/hlsl.y-negate-3.vert.out
index 6374551..29f63f1 100644
--- a/Test/baseResults/hlsl.y-negate-3.vert.out
+++ b/Test/baseResults/hlsl.y-negate-3.vert.out
@@ -126,7 +126,7 @@
 0:?     '@entryPointOutput.somethingelse' (layout( location=0) out int)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 50
 
                               Capability Shader
diff --git a/Test/baseResults/link1.vk.frag.out b/Test/baseResults/link1.vk.frag.out
index 094a50d..94debe1 100644
--- a/Test/baseResults/link1.vk.frag.out
+++ b/Test/baseResults/link1.vk.frag.out
@@ -197,7 +197,7 @@
 0:?     's2D' (layout( binding=1) uniform highp sampler2D)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 70
 
                               Capability Shader
diff --git a/Test/baseResults/remap.basic.dcefunc.frag.out b/Test/baseResults/remap.basic.dcefunc.frag.out
index 33ec069..e985def 100644
--- a/Test/baseResults/remap.basic.dcefunc.frag.out
+++ b/Test/baseResults/remap.basic.dcefunc.frag.out
@@ -1,6 +1,6 @@
 remap.basic.dcefunc.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 22
 
                               Capability Shader
diff --git a/Test/baseResults/remap.basic.everything.frag.out b/Test/baseResults/remap.basic.everything.frag.out
index 858d629..0f7034a 100644
--- a/Test/baseResults/remap.basic.everything.frag.out
+++ b/Test/baseResults/remap.basic.everything.frag.out
@@ -1,6 +1,6 @@
 remap.basic.everything.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 24969
 
                               Capability Shader
diff --git a/Test/baseResults/remap.basic.none.frag.out b/Test/baseResults/remap.basic.none.frag.out
index 1ad1d74..44790dd 100644
--- a/Test/baseResults/remap.basic.none.frag.out
+++ b/Test/baseResults/remap.basic.none.frag.out
@@ -1,6 +1,6 @@
 remap.basic.none.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 22
 
                               Capability Shader
diff --git a/Test/baseResults/remap.basic.strip.frag.out b/Test/baseResults/remap.basic.strip.frag.out
index 3d876d0..05f16ba 100644
--- a/Test/baseResults/remap.basic.strip.frag.out
+++ b/Test/baseResults/remap.basic.strip.frag.out
@@ -1,6 +1,6 @@
 remap.basic.strip.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 22
 
                               Capability Shader
diff --git a/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out b/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out
index 7f180a9..b9ce55e 100644
--- a/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out
+++ b/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out
@@ -2,7 +2,7 @@
 WARNING: 0:4: 'immediate sampler state' : unimplemented 
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 24878
 
                               Capability Shader
diff --git a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out
index 577a135..71b7de0 100644
--- a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out
+++ b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out
@@ -2,7 +2,7 @@
 WARNING: 0:4: 'immediate sampler state' : unimplemented 
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 198
 
                               Capability Shader
diff --git a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out
index d7aea9f..c65d237 100644
--- a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out
+++ b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out
@@ -2,7 +2,7 @@
 WARNING: 0:4: 'immediate sampler state' : unimplemented 
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 198
 
                               Capability Shader
diff --git a/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out b/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out
index aff0998..ea390b5 100644
--- a/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out
+++ b/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out
@@ -1,6 +1,6 @@
 remap.hlsl.templatetypes.everything.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 24954
 
                               Capability Shader
diff --git a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out
index 282fd2a..32b4e7b 100644
--- a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out
+++ b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out
@@ -1,6 +1,6 @@
 remap.hlsl.templatetypes.none.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 160
 
                               Capability Shader
diff --git a/Test/baseResults/remap.if.everything.frag.out b/Test/baseResults/remap.if.everything.frag.out
index cdb007b..26cc3dc 100644
--- a/Test/baseResults/remap.if.everything.frag.out
+++ b/Test/baseResults/remap.if.everything.frag.out
@@ -1,6 +1,6 @@
 remap.if.everything.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 22855
 
                               Capability Shader
diff --git a/Test/baseResults/remap.if.none.frag.out b/Test/baseResults/remap.if.none.frag.out
index 0c8d278..48e8587 100644
--- a/Test/baseResults/remap.if.none.frag.out
+++ b/Test/baseResults/remap.if.none.frag.out
@@ -1,6 +1,6 @@
 remap.if.none.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 25
 
                               Capability Shader
diff --git a/Test/baseResults/remap.similar_1a.everything.frag.out b/Test/baseResults/remap.similar_1a.everything.frag.out
index 2f8f1c7..6d5ce1c 100644
--- a/Test/baseResults/remap.similar_1a.everything.frag.out
+++ b/Test/baseResults/remap.similar_1a.everything.frag.out
@@ -1,6 +1,6 @@
 remap.similar_1a.everything.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 24916
 
                               Capability Shader
@@ -88,7 +88,7 @@
            22102:    649(ptr) Variable Function
            24151:     12(int) Load 4408
            13868:     9(bool) SGreaterThan 24151 2577
-                              SelectionMerge 22309 None
+                              SelectionMerge 14966 None
                               BranchConditional 13868 9492 17416
             9492:               Label
            15624:     12(int)   Load 4408
@@ -109,7 +109,6 @@
            10505:     12(int)   IAdd 11462 21176
            14626:   13(float)   ConvertSToF 10505
                                 ReturnValue 14626
-           22309:             Label
-            6429:   13(float) Undef
-                              ReturnValue 6429
+           14966:             Label
+                              Unreachable
                               FunctionEnd
diff --git a/Test/baseResults/remap.similar_1a.none.frag.out b/Test/baseResults/remap.similar_1a.none.frag.out
index 80d35c3..457f1be 100644
--- a/Test/baseResults/remap.similar_1a.none.frag.out
+++ b/Test/baseResults/remap.similar_1a.none.frag.out
@@ -1,6 +1,6 @@
 remap.similar_1a.none.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 86
 
                               Capability Shader
@@ -124,6 +124,5 @@
               68:    8(float)   ConvertSToF 67
                                 ReturnValue 68
               43:             Label
-              70:    8(float) Undef
-                              ReturnValue 70
+                              Unreachable
                               FunctionEnd
diff --git a/Test/baseResults/remap.similar_1b.everything.frag.out b/Test/baseResults/remap.similar_1b.everything.frag.out
index c76c4bf..67425c6 100644
--- a/Test/baseResults/remap.similar_1b.everything.frag.out
+++ b/Test/baseResults/remap.similar_1b.everything.frag.out
@@ -1,6 +1,6 @@
 remap.similar_1b.everything.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 24916
 
                               Capability Shader
@@ -93,7 +93,7 @@
            22102:    649(ptr) Variable Function
            24151:     12(int) Load 4408
            13868:     9(bool) SGreaterThan 24151 2577
-                              SelectionMerge 22309 None
+                              SelectionMerge 14966 None
                               BranchConditional 13868 10822 17416
            10822:               Label
            22680:     12(int)   Load 4408
@@ -115,7 +115,6 @@
            10505:     12(int)   IAdd 11462 21176
            14626:   13(float)   ConvertSToF 10505
                                 ReturnValue 14626
-           22309:             Label
-            6429:   13(float) Undef
-                              ReturnValue 6429
+           14966:             Label
+                              Unreachable
                               FunctionEnd
diff --git a/Test/baseResults/remap.similar_1b.none.frag.out b/Test/baseResults/remap.similar_1b.none.frag.out
index 0a854d6..fe021e0 100644
--- a/Test/baseResults/remap.similar_1b.none.frag.out
+++ b/Test/baseResults/remap.similar_1b.none.frag.out
@@ -1,6 +1,6 @@
 remap.similar_1b.none.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 91
 
                               Capability Shader
@@ -130,6 +130,5 @@
               73:    8(float)   ConvertSToF 72
                                 ReturnValue 73
               46:             Label
-              75:    8(float) Undef
-                              ReturnValue 75
+                              Unreachable
                               FunctionEnd
diff --git a/Test/baseResults/remap.specconst.comp.out b/Test/baseResults/remap.specconst.comp.out
index ee049f4..80d13b2 100644
--- a/Test/baseResults/remap.specconst.comp.out
+++ b/Test/baseResults/remap.specconst.comp.out
@@ -1,6 +1,6 @@
 remap.specconst.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 16104
 
                               Capability Shader
diff --git a/Test/baseResults/remap.switch.everything.frag.out b/Test/baseResults/remap.switch.everything.frag.out
index ffd64d4..2362f67 100644
--- a/Test/baseResults/remap.switch.everything.frag.out
+++ b/Test/baseResults/remap.switch.everything.frag.out
@@ -3,7 +3,7 @@
          "precision mediump int; precision highp float;" 
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 23990
 
                               Capability Shader
diff --git a/Test/baseResults/remap.switch.none.frag.out b/Test/baseResults/remap.switch.none.frag.out
index 4dd7897..f8737b9 100644
--- a/Test/baseResults/remap.switch.none.frag.out
+++ b/Test/baseResults/remap.switch.none.frag.out
@@ -3,7 +3,7 @@
          "precision mediump int; precision highp float;" 
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 48
 
                               Capability Shader
diff --git a/Test/baseResults/remap.uniformarray.everything.frag.out b/Test/baseResults/remap.uniformarray.everything.frag.out
index c1f306e..40429f2 100644
--- a/Test/baseResults/remap.uniformarray.everything.frag.out
+++ b/Test/baseResults/remap.uniformarray.everything.frag.out
@@ -1,6 +1,6 @@
 remap.uniformarray.everything.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 25030
 
                               Capability Shader
diff --git a/Test/baseResults/remap.uniformarray.none.frag.out b/Test/baseResults/remap.uniformarray.none.frag.out
index 1087e5e..42d55b9 100644
--- a/Test/baseResults/remap.uniformarray.none.frag.out
+++ b/Test/baseResults/remap.uniformarray.none.frag.out
@@ -1,6 +1,6 @@
 remap.uniformarray.none.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 53
 
                               Capability Shader
diff --git a/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out b/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out
index cffc3a4..105bbdb 100644
--- a/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out
+++ b/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out
@@ -1,6 +1,6 @@
 spv.1.3.8bitstorage-ssbo.vert
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 28
 
                               Capability Shader
diff --git a/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out b/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out
index 7bdda4a..77c1565 100644
--- a/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out
+++ b/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out
@@ -1,6 +1,6 @@
 spv.1.3.8bitstorage-ubo.vert
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 29
 
                               Capability Shader
diff --git a/Test/baseResults/spv.1.3.coopmat.comp.out b/Test/baseResults/spv.1.3.coopmat.comp.out
index c183847..29d914f 100644
--- a/Test/baseResults/spv.1.3.coopmat.comp.out
+++ b/Test/baseResults/spv.1.3.coopmat.comp.out
@@ -1,6 +1,6 @@
 spv.1.3.coopmat.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 52
 
                               Capability Shader
diff --git a/Test/baseResults/spv.1.4.LoopControl.frag.out b/Test/baseResults/spv.1.4.LoopControl.frag.out
index c9a605b..008ef47 100644
--- a/Test/baseResults/spv.1.4.LoopControl.frag.out
+++ b/Test/baseResults/spv.1.4.LoopControl.frag.out
@@ -3,7 +3,7 @@
 WARNING: 0:15: 'max_iterations' : expected a single integer argument 
 
 // Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 54
 
                               Capability Shader
diff --git a/Test/baseResults/spv.1.4.NonWritable.frag.out b/Test/baseResults/spv.1.4.NonWritable.frag.out
index 3f54661..0207ed2 100755
--- a/Test/baseResults/spv.1.4.NonWritable.frag.out
+++ b/Test/baseResults/spv.1.4.NonWritable.frag.out
@@ -1,6 +1,6 @@
 spv.1.4.NonWritable.frag
 // Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 38
 
                               Capability Shader
diff --git a/Test/baseResults/spv.1.4.OpCopyLogical.comp.out b/Test/baseResults/spv.1.4.OpCopyLogical.comp.out
index d80bfee..53e672f 100644
--- a/Test/baseResults/spv.1.4.OpCopyLogical.comp.out
+++ b/Test/baseResults/spv.1.4.OpCopyLogical.comp.out
@@ -1,6 +1,6 @@
 spv.1.4.OpCopyLogical.comp
 // Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 65
 
                               Capability Shader
diff --git a/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out b/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out
index 85bfdb2..d7509b1 100644
--- a/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out
+++ b/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out
@@ -1,6 +1,6 @@
 spv.1.4.OpCopyLogical.funcall.frag
 // Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 60
 
                               Capability Shader
diff --git a/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out b/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out
index f2f85c1..2b60625 100644
--- a/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out
+++ b/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out
@@ -1,6 +1,6 @@
 spv.1.4.OpCopyLogicalBool.comp
 // Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 135
 
                               Capability Shader
diff --git a/Test/baseResults/spv.1.4.OpEntryPoint.frag.out b/Test/baseResults/spv.1.4.OpEntryPoint.frag.out
index 694cff0..f06960c 100644
--- a/Test/baseResults/spv.1.4.OpEntryPoint.frag.out
+++ b/Test/baseResults/spv.1.4.OpEntryPoint.frag.out
@@ -1,6 +1,6 @@
 spv.1.4.OpEntryPoint.frag
 // Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 64
 
                               Capability Shader
diff --git a/Test/baseResults/spv.1.4.OpSelect.frag.out b/Test/baseResults/spv.1.4.OpSelect.frag.out
index 3179717..6ba00a4 100755
--- a/Test/baseResults/spv.1.4.OpSelect.frag.out
+++ b/Test/baseResults/spv.1.4.OpSelect.frag.out
@@ -1,6 +1,6 @@
 spv.1.4.OpSelect.frag
 // Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 98
 
                               Capability Shader
diff --git a/Test/baseResults/spv.1.4.constructComposite.comp.out b/Test/baseResults/spv.1.4.constructComposite.comp.out
index 5c0f5cf..e514286 100644
--- a/Test/baseResults/spv.1.4.constructComposite.comp.out
+++ b/Test/baseResults/spv.1.4.constructComposite.comp.out
@@ -1,6 +1,6 @@
 spv.1.4.constructComposite.comp
 // Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 27
 
                               Capability Shader
diff --git a/Test/baseResults/spv.1.4.image.frag.out b/Test/baseResults/spv.1.4.image.frag.out
index 4adfd4b..98ffdcb 100755
--- a/Test/baseResults/spv.1.4.image.frag.out
+++ b/Test/baseResults/spv.1.4.image.frag.out
@@ -1,6 +1,6 @@
 spv.1.4.image.frag
 // Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 104
 
                               Capability Shader
diff --git a/Test/baseResults/spv.1.4.sparseTexture.frag.out b/Test/baseResults/spv.1.4.sparseTexture.frag.out
index 292335e..3b566c7 100755
--- a/Test/baseResults/spv.1.4.sparseTexture.frag.out
+++ b/Test/baseResults/spv.1.4.sparseTexture.frag.out
@@ -1,6 +1,6 @@
 spv.1.4.sparseTexture.frag
 // Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 213
 
                               Capability Shader
diff --git a/Test/baseResults/spv.1.4.texture.frag.out b/Test/baseResults/spv.1.4.texture.frag.out
index 7c2de0b..da3a24f 100755
--- a/Test/baseResults/spv.1.4.texture.frag.out
+++ b/Test/baseResults/spv.1.4.texture.frag.out
@@ -1,6 +1,6 @@
 spv.1.4.texture.frag
 // Module Version 10400
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 79
 
                               Capability Shader
diff --git a/Test/baseResults/spv.100ops.frag.out b/Test/baseResults/spv.100ops.frag.out
index 8f656eb..d2b8f3e 100644
--- a/Test/baseResults/spv.100ops.frag.out
+++ b/Test/baseResults/spv.100ops.frag.out
@@ -1,6 +1,6 @@
 spv.100ops.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 49
 
                               Capability Shader
diff --git a/Test/baseResults/spv.130.frag.out b/Test/baseResults/spv.130.frag.out
index 67e2b82..ca1f9e3 100644
--- a/Test/baseResults/spv.130.frag.out
+++ b/Test/baseResults/spv.130.frag.out
@@ -3,7 +3,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 205
 
                               Capability Shader
diff --git a/Test/baseResults/spv.140.frag.out b/Test/baseResults/spv.140.frag.out
index abfd13a..45b7510 100644
--- a/Test/baseResults/spv.140.frag.out
+++ b/Test/baseResults/spv.140.frag.out
@@ -1,7 +1,7 @@
 spv.140.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 96
 
                               Capability Shader
diff --git a/Test/baseResults/spv.150.geom.out b/Test/baseResults/spv.150.geom.out
index 19bd725..ab05846 100644
--- a/Test/baseResults/spv.150.geom.out
+++ b/Test/baseResults/spv.150.geom.out
@@ -1,6 +1,6 @@
 spv.150.geom
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 71
 
                               Capability Geometry
diff --git a/Test/baseResults/spv.150.vert.out b/Test/baseResults/spv.150.vert.out
index db058fa..9e1c9f4 100644
--- a/Test/baseResults/spv.150.vert.out
+++ b/Test/baseResults/spv.150.vert.out
@@ -1,6 +1,6 @@
 spv.150.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 63
 
                               Capability Shader
diff --git a/Test/baseResults/spv.16bitstorage-int.frag.out b/Test/baseResults/spv.16bitstorage-int.frag.out
index c1aacb8..80733ce 100644
--- a/Test/baseResults/spv.16bitstorage-int.frag.out
+++ b/Test/baseResults/spv.16bitstorage-int.frag.out
@@ -1,6 +1,6 @@
 spv.16bitstorage-int.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 171
 
                               Capability Shader
diff --git a/Test/baseResults/spv.16bitstorage-uint.frag.out b/Test/baseResults/spv.16bitstorage-uint.frag.out
index ba2e0c6..d4b1b75 100644
--- a/Test/baseResults/spv.16bitstorage-uint.frag.out
+++ b/Test/baseResults/spv.16bitstorage-uint.frag.out
@@ -1,6 +1,6 @@
 spv.16bitstorage-uint.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 173
 
                               Capability Shader
diff --git a/Test/baseResults/spv.16bitstorage.frag.out b/Test/baseResults/spv.16bitstorage.frag.out
index 5530cf4..c73eb59 100644
--- a/Test/baseResults/spv.16bitstorage.frag.out
+++ b/Test/baseResults/spv.16bitstorage.frag.out
@@ -1,6 +1,6 @@
 spv.16bitstorage.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 173
 
                               Capability Shader
diff --git a/Test/baseResults/spv.16bitxfb.vert.out b/Test/baseResults/spv.16bitxfb.vert.out
index 7d989c5..96cff79 100644
--- a/Test/baseResults/spv.16bitxfb.vert.out
+++ b/Test/baseResults/spv.16bitxfb.vert.out
@@ -1,6 +1,6 @@
 spv.16bitxfb.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 59
 
                               Capability Shader
diff --git a/Test/baseResults/spv.300BuiltIns.vert.out b/Test/baseResults/spv.300BuiltIns.vert.out
index ee2c236..2633645 100644
--- a/Test/baseResults/spv.300BuiltIns.vert.out
+++ b/Test/baseResults/spv.300BuiltIns.vert.out
@@ -1,6 +1,6 @@
 spv.300BuiltIns.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 42
 
                               Capability Shader
diff --git a/Test/baseResults/spv.300layout.frag.out b/Test/baseResults/spv.300layout.frag.out
index 10a6d00..db06955 100644
--- a/Test/baseResults/spv.300layout.frag.out
+++ b/Test/baseResults/spv.300layout.frag.out
@@ -1,6 +1,6 @@
 spv.300layout.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 37
 
                               Capability Shader
diff --git a/Test/baseResults/spv.300layout.vert.out b/Test/baseResults/spv.300layout.vert.out
index 4d4d7ea..c97d217 100644
--- a/Test/baseResults/spv.300layout.vert.out
+++ b/Test/baseResults/spv.300layout.vert.out
@@ -1,6 +1,6 @@
 spv.300layout.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 163
 
                               Capability Shader
diff --git a/Test/baseResults/spv.300layoutp.vert.out b/Test/baseResults/spv.300layoutp.vert.out
index e12041f..2b1ef83 100644
--- a/Test/baseResults/spv.300layoutp.vert.out
+++ b/Test/baseResults/spv.300layoutp.vert.out
@@ -1,6 +1,6 @@
 spv.300layoutp.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 115
 
                               Capability Shader
diff --git a/Test/baseResults/spv.310.bitcast.frag.out b/Test/baseResults/spv.310.bitcast.frag.out
index d7a244f..e4f62b4 100644
--- a/Test/baseResults/spv.310.bitcast.frag.out
+++ b/Test/baseResults/spv.310.bitcast.frag.out
@@ -1,6 +1,6 @@
 spv.310.bitcast.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 153
 
                               Capability Shader
diff --git a/Test/baseResults/spv.310.comp.out b/Test/baseResults/spv.310.comp.out
index bb8e6a7..3b90d41 100644
--- a/Test/baseResults/spv.310.comp.out
+++ b/Test/baseResults/spv.310.comp.out
@@ -1,6 +1,6 @@
 spv.310.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 72
 
                               Capability Shader
diff --git a/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out
index 20b6fa2..6881084 100644
--- a/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out
+++ b/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out
@@ -1,6 +1,6 @@
 spv.320.meshShaderUserDefined.mesh
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 140
 
                               Capability MeshShadingNV
diff --git a/Test/baseResults/spv.330.geom.out b/Test/baseResults/spv.330.geom.out
index 1ccbfb6..79e03b6 100644
--- a/Test/baseResults/spv.330.geom.out
+++ b/Test/baseResults/spv.330.geom.out
@@ -1,6 +1,6 @@
 spv.330.geom
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 32
 
                               Capability Geometry
diff --git a/Test/baseResults/spv.400.frag.nanclamp.out b/Test/baseResults/spv.400.frag.nanclamp.out
index 5305ee4..448aa5e 100644
--- a/Test/baseResults/spv.400.frag.nanclamp.out
+++ b/Test/baseResults/spv.400.frag.nanclamp.out
@@ -1,6 +1,6 @@
 spv.400.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 1118
 
                               Capability Shader
diff --git a/Test/baseResults/spv.400.frag.out b/Test/baseResults/spv.400.frag.out
index 5433e4d..b2f4a16 100644
--- a/Test/baseResults/spv.400.frag.out
+++ b/Test/baseResults/spv.400.frag.out
@@ -1,7 +1,7 @@
 spv.400.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 1118
 
                               Capability Shader
diff --git a/Test/baseResults/spv.400.tesc.out b/Test/baseResults/spv.400.tesc.out
index ce7c3af..e84b420 100644
--- a/Test/baseResults/spv.400.tesc.out
+++ b/Test/baseResults/spv.400.tesc.out
@@ -1,6 +1,6 @@
 spv.400.tesc
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 92
 
                               Capability Tessellation
diff --git a/Test/baseResults/spv.400.tese.out b/Test/baseResults/spv.400.tese.out
index 43b6a91..5705fbd 100644
--- a/Test/baseResults/spv.400.tese.out
+++ b/Test/baseResults/spv.400.tese.out
@@ -1,6 +1,6 @@
 spv.400.tese
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 96
 
                               Capability Tessellation
diff --git a/Test/baseResults/spv.420.geom.out b/Test/baseResults/spv.420.geom.out
index fa91dd8..c75ae5d 100644
--- a/Test/baseResults/spv.420.geom.out
+++ b/Test/baseResults/spv.420.geom.out
@@ -1,6 +1,6 @@
 spv.420.geom
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 72
 
                               Capability Geometry
diff --git a/Test/baseResults/spv.430.frag.out b/Test/baseResults/spv.430.frag.out
index 330489f..96ab1e9 100644
--- a/Test/baseResults/spv.430.frag.out
+++ b/Test/baseResults/spv.430.frag.out
@@ -1,6 +1,6 @@
 spv.430.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 24
 
                               Capability Shader
diff --git a/Test/baseResults/spv.430.vert.out b/Test/baseResults/spv.430.vert.out
index 1cd9e61..89e5b16 100644
--- a/Test/baseResults/spv.430.vert.out
+++ b/Test/baseResults/spv.430.vert.out
@@ -1,6 +1,6 @@
 spv.430.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 66
 
                               Capability Shader
diff --git a/Test/baseResults/spv.450.geom.out b/Test/baseResults/spv.450.geom.out
index 7713e54..1e7e8c5 100644
--- a/Test/baseResults/spv.450.geom.out
+++ b/Test/baseResults/spv.450.geom.out
@@ -1,6 +1,6 @@
 spv.450.geom
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 31
 
                               Capability Geometry
diff --git a/Test/baseResults/spv.450.noRedecl.tesc.out b/Test/baseResults/spv.450.noRedecl.tesc.out
index b23061d..31c7b4d 100644
--- a/Test/baseResults/spv.450.noRedecl.tesc.out
+++ b/Test/baseResults/spv.450.noRedecl.tesc.out
@@ -1,6 +1,6 @@
 spv.450.noRedecl.tesc
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 21
 
                               Capability Tessellation
diff --git a/Test/baseResults/spv.450.tesc.out b/Test/baseResults/spv.450.tesc.out
index 35653fd..0c22d9a 100644
--- a/Test/baseResults/spv.450.tesc.out
+++ b/Test/baseResults/spv.450.tesc.out
@@ -1,6 +1,6 @@
 spv.450.tesc
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 45
 
                               Capability Tessellation
diff --git a/Test/baseResults/spv.460.comp.out b/Test/baseResults/spv.460.comp.out
index 6ebf49f..0925674 100644
--- a/Test/baseResults/spv.460.comp.out
+++ b/Test/baseResults/spv.460.comp.out
@@ -1,6 +1,6 @@
 spv.460.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 15
 
                               Capability Shader
diff --git a/Test/baseResults/spv.460.frag.out b/Test/baseResults/spv.460.frag.out
index 04393fb..067bd43 100644
--- a/Test/baseResults/spv.460.frag.out
+++ b/Test/baseResults/spv.460.frag.out
@@ -1,6 +1,6 @@
 spv.460.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 32
 
                               Capability Shader
diff --git a/Test/baseResults/spv.460.vert.out b/Test/baseResults/spv.460.vert.out
index c2ef302..a73b7e1 100644
--- a/Test/baseResults/spv.460.vert.out
+++ b/Test/baseResults/spv.460.vert.out
@@ -1,6 +1,6 @@
 spv.460.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 20
 
                               Capability Shader
diff --git a/Test/baseResults/spv.8bitstorage-int.frag.out b/Test/baseResults/spv.8bitstorage-int.frag.out
index 47e854f..54a47af 100644
--- a/Test/baseResults/spv.8bitstorage-int.frag.out
+++ b/Test/baseResults/spv.8bitstorage-int.frag.out
@@ -1,6 +1,6 @@
 spv.8bitstorage-int.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 171
 
                               Capability Shader
diff --git a/Test/baseResults/spv.8bitstorage-ssbo.vert.out b/Test/baseResults/spv.8bitstorage-ssbo.vert.out
index d0379fa..274639b 100644
--- a/Test/baseResults/spv.8bitstorage-ssbo.vert.out
+++ b/Test/baseResults/spv.8bitstorage-ssbo.vert.out
@@ -1,6 +1,6 @@
 spv.8bitstorage-ssbo.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 28
 
                               Capability Shader
diff --git a/Test/baseResults/spv.8bitstorage-ubo.vert.out b/Test/baseResults/spv.8bitstorage-ubo.vert.out
index c5ec89d..af95a76 100644
--- a/Test/baseResults/spv.8bitstorage-ubo.vert.out
+++ b/Test/baseResults/spv.8bitstorage-ubo.vert.out
@@ -1,6 +1,6 @@
 spv.8bitstorage-ubo.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 29
 
                               Capability Shader
diff --git a/Test/baseResults/spv.8bitstorage-uint.frag.out b/Test/baseResults/spv.8bitstorage-uint.frag.out
index a66c6a3..6565882 100644
--- a/Test/baseResults/spv.8bitstorage-uint.frag.out
+++ b/Test/baseResults/spv.8bitstorage-uint.frag.out
@@ -1,6 +1,6 @@
 spv.8bitstorage-uint.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 173
 
                               Capability Shader
diff --git a/Test/baseResults/spv.AnyHitShader.rahit.out b/Test/baseResults/spv.AnyHitShader.rahit.out
index 92b31d0..d044b97 100644
--- a/Test/baseResults/spv.AnyHitShader.rahit.out
+++ b/Test/baseResults/spv.AnyHitShader.rahit.out
@@ -1,6 +1,6 @@
 spv.AnyHitShader.rahit
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 81
 
                               Capability RayTracingNV
diff --git a/Test/baseResults/spv.AofA.frag.out b/Test/baseResults/spv.AofA.frag.out
index 7433f17..c9f8b46 100644
--- a/Test/baseResults/spv.AofA.frag.out
+++ b/Test/baseResults/spv.AofA.frag.out
@@ -3,7 +3,7 @@
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 104
 
                               Capability Shader
diff --git a/Test/baseResults/spv.ClosestHitShader.rchit.out b/Test/baseResults/spv.ClosestHitShader.rchit.out
index b461462..482008d 100644
--- a/Test/baseResults/spv.ClosestHitShader.rchit.out
+++ b/Test/baseResults/spv.ClosestHitShader.rchit.out
@@ -1,6 +1,6 @@
 spv.ClosestHitShader.rchit
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 88
 
                               Capability RayTracingNV
diff --git a/Test/baseResults/spv.GeometryShaderPassthrough.geom.out b/Test/baseResults/spv.GeometryShaderPassthrough.geom.out
index 5db845e..7e62c57 100644
--- a/Test/baseResults/spv.GeometryShaderPassthrough.geom.out
+++ b/Test/baseResults/spv.GeometryShaderPassthrough.geom.out
@@ -1,6 +1,6 @@
 spv.GeometryShaderPassthrough.geom
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 15
 
                               Capability Geometry
diff --git a/Test/baseResults/spv.IntersectShader.rint.out b/Test/baseResults/spv.IntersectShader.rint.out
index cbb70cd..4fe4edf 100644
--- a/Test/baseResults/spv.IntersectShader.rint.out
+++ b/Test/baseResults/spv.IntersectShader.rint.out
@@ -1,6 +1,6 @@
 spv.IntersectShader.rint
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 71
 
                               Capability RayTracingNV
diff --git a/Test/baseResults/spv.MissShader.rmiss.out b/Test/baseResults/spv.MissShader.rmiss.out
index 0ad3341..37fd3bd 100644
--- a/Test/baseResults/spv.MissShader.rmiss.out
+++ b/Test/baseResults/spv.MissShader.rmiss.out
@@ -1,6 +1,6 @@
 spv.MissShader.rmiss
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 60
 
                               Capability RayTracingNV
diff --git a/Test/baseResults/spv.OVR_multiview.vert.out b/Test/baseResults/spv.OVR_multiview.vert.out
index 7013ced..66168dc 100644
--- a/Test/baseResults/spv.OVR_multiview.vert.out
+++ b/Test/baseResults/spv.OVR_multiview.vert.out
@@ -1,6 +1,6 @@
 spv.OVR_multiview.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 27
 
                               Capability Shader
diff --git a/Test/baseResults/spv.Operations.frag.out b/Test/baseResults/spv.Operations.frag.out
index 4113ddf..22aeecd 100644
--- a/Test/baseResults/spv.Operations.frag.out
+++ b/Test/baseResults/spv.Operations.frag.out
@@ -1,6 +1,6 @@
 spv.Operations.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 532
 
                               Capability Shader
diff --git a/Test/baseResults/spv.RayCallable.rcall.out b/Test/baseResults/spv.RayCallable.rcall.out
index e399e63..31df5d1 100644
--- a/Test/baseResults/spv.RayCallable.rcall.out
+++ b/Test/baseResults/spv.RayCallable.rcall.out
@@ -1,6 +1,6 @@
 spv.RayCallable.rcall
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 30
 
                               Capability RayTracingNV
diff --git a/Test/baseResults/spv.RayConstants.rgen.out b/Test/baseResults/spv.RayConstants.rgen.out
index d939acf..033e545 100644
--- a/Test/baseResults/spv.RayConstants.rgen.out
+++ b/Test/baseResults/spv.RayConstants.rgen.out
@@ -1,6 +1,6 @@
 spv.RayConstants.rgen
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 27
 
                               Capability RayTracingNV
diff --git a/Test/baseResults/spv.RayGenShader.rgen.out b/Test/baseResults/spv.RayGenShader.rgen.out
index 91f37e5..59eabd0 100644
--- a/Test/baseResults/spv.RayGenShader.rgen.out
+++ b/Test/baseResults/spv.RayGenShader.rgen.out
@@ -1,6 +1,6 @@
 spv.RayGenShader.rgen
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 54
 
                               Capability RayTracingNV
diff --git a/Test/baseResults/spv.RayGenShader11.rgen.out b/Test/baseResults/spv.RayGenShader11.rgen.out
index 8f2c52b..2d49b0f 100755
--- a/Test/baseResults/spv.RayGenShader11.rgen.out
+++ b/Test/baseResults/spv.RayGenShader11.rgen.out
@@ -1,6 +1,6 @@
 spv.RayGenShader11.rgen
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 53
 
                               Capability RayTracingNV
diff --git a/Test/baseResults/spv.RayGenShaderArray.rgen.out b/Test/baseResults/spv.RayGenShaderArray.rgen.out
index 7430756..e914304 100644
--- a/Test/baseResults/spv.RayGenShaderArray.rgen.out
+++ b/Test/baseResults/spv.RayGenShaderArray.rgen.out
@@ -1,6 +1,6 @@
 spv.RayGenShaderArray.rgen
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 89
 
                               Capability ShaderNonUniformEXT
diff --git a/Test/baseResults/spv.accessChain.frag.out b/Test/baseResults/spv.accessChain.frag.out
index bf87829..c5c71a5 100644
--- a/Test/baseResults/spv.accessChain.frag.out
+++ b/Test/baseResults/spv.accessChain.frag.out
@@ -1,6 +1,6 @@
 spv.accessChain.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 222
 
                               Capability Shader
diff --git a/Test/baseResults/spv.aggOps.frag.out b/Test/baseResults/spv.aggOps.frag.out
index f388e8e..976c747 100644
--- a/Test/baseResults/spv.aggOps.frag.out
+++ b/Test/baseResults/spv.aggOps.frag.out
@@ -3,7 +3,7 @@
          "precision mediump int; precision highp float;" 
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 215
 
                               Capability Shader
diff --git a/Test/baseResults/spv.always-discard.frag.out b/Test/baseResults/spv.always-discard.frag.out
index 8074cf8..fb4529e 100644
--- a/Test/baseResults/spv.always-discard.frag.out
+++ b/Test/baseResults/spv.always-discard.frag.out
@@ -1,6 +1,6 @@
 spv.always-discard.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 84
 
                               Capability Shader
diff --git a/Test/baseResults/spv.always-discard2.frag.out b/Test/baseResults/spv.always-discard2.frag.out
index e3fa43a..2d8f66e 100644
--- a/Test/baseResults/spv.always-discard2.frag.out
+++ b/Test/baseResults/spv.always-discard2.frag.out
@@ -1,6 +1,6 @@
 spv.always-discard2.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 40
 
                               Capability Shader
diff --git a/Test/baseResults/spv.arbPostDepthCoverage.frag.out b/Test/baseResults/spv.arbPostDepthCoverage.frag.out
index f41c012..d62c677 100644
--- a/Test/baseResults/spv.arbPostDepthCoverage.frag.out
+++ b/Test/baseResults/spv.arbPostDepthCoverage.frag.out
@@ -1,6 +1,6 @@
 spv.arbPostDepthCoverage.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 18
 
                               Capability Shader
diff --git a/Test/baseResults/spv.atomic.comp.out b/Test/baseResults/spv.atomic.comp.out
index 3dd88f3..08bd830 100644
--- a/Test/baseResults/spv.atomic.comp.out
+++ b/Test/baseResults/spv.atomic.comp.out
@@ -1,6 +1,6 @@
 spv.atomic.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 74
 
                               Capability Shader
diff --git a/Test/baseResults/spv.atomicInt64.comp.out b/Test/baseResults/spv.atomicInt64.comp.out
index 9c66aec..5ac910e 100644
--- a/Test/baseResults/spv.atomicInt64.comp.out
+++ b/Test/baseResults/spv.atomicInt64.comp.out
@@ -1,6 +1,6 @@
 spv.atomicInt64.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 149
 
                               Capability Shader
diff --git a/Test/baseResults/spv.barrier.vert.out b/Test/baseResults/spv.barrier.vert.out
index b9369f2..ffc2eaa 100644
--- a/Test/baseResults/spv.barrier.vert.out
+++ b/Test/baseResults/spv.barrier.vert.out
@@ -1,6 +1,6 @@
 spv.barrier.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 24
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bitCast.frag.out b/Test/baseResults/spv.bitCast.frag.out
index a687b8d..f590ec7 100644
--- a/Test/baseResults/spv.bitCast.frag.out
+++ b/Test/baseResults/spv.bitCast.frag.out
@@ -1,6 +1,6 @@
 spv.bitCast.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 172
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bool.vert.out b/Test/baseResults/spv.bool.vert.out
index 31eb54c..3e5a190 100644
--- a/Test/baseResults/spv.bool.vert.out
+++ b/Test/baseResults/spv.bool.vert.out
@@ -1,6 +1,6 @@
 spv.bool.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 46
 
                               Capability Shader
diff --git a/Test/baseResults/spv.boolInBlock.frag.out b/Test/baseResults/spv.boolInBlock.frag.out
index e86ca6b..b0a4023 100644
--- a/Test/baseResults/spv.boolInBlock.frag.out
+++ b/Test/baseResults/spv.boolInBlock.frag.out
@@ -1,6 +1,6 @@
 spv.boolInBlock.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 102
 
                               Capability Shader
diff --git a/Test/baseResults/spv.branch-return.vert.out b/Test/baseResults/spv.branch-return.vert.out
index ca44724..3aacca7 100644
--- a/Test/baseResults/spv.branch-return.vert.out
+++ b/Test/baseResults/spv.branch-return.vert.out
@@ -1,6 +1,6 @@
 spv.branch-return.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 38
 
                               Capability Shader
diff --git a/Test/baseResults/spv.buffer.autoassign.frag.out b/Test/baseResults/spv.buffer.autoassign.frag.out
index 507318f..e526ada 100644
--- a/Test/baseResults/spv.buffer.autoassign.frag.out
+++ b/Test/baseResults/spv.buffer.autoassign.frag.out
@@ -1,6 +1,6 @@
 spv.buffer.autoassign.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 50
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle1.frag.out b/Test/baseResults/spv.bufferhandle1.frag.out
index 6e50c70..9d18188 100644
--- a/Test/baseResults/spv.bufferhandle1.frag.out
+++ b/Test/baseResults/spv.bufferhandle1.frag.out
@@ -1,6 +1,6 @@
 spv.bufferhandle1.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 52
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle10.frag.out b/Test/baseResults/spv.bufferhandle10.frag.out
index a95dc71..5064c7e 100644
--- a/Test/baseResults/spv.bufferhandle10.frag.out
+++ b/Test/baseResults/spv.bufferhandle10.frag.out
@@ -1,6 +1,6 @@
 spv.bufferhandle10.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 40
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle11.frag.out b/Test/baseResults/spv.bufferhandle11.frag.out
index 3469715..783577c 100644
--- a/Test/baseResults/spv.bufferhandle11.frag.out
+++ b/Test/baseResults/spv.bufferhandle11.frag.out
@@ -3,7 +3,7 @@
          "precision mediump int; precision highp float;" 
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 61
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle12.frag.out b/Test/baseResults/spv.bufferhandle12.frag.out
index 6c20f02..9f0f4fb 100644
--- a/Test/baseResults/spv.bufferhandle12.frag.out
+++ b/Test/baseResults/spv.bufferhandle12.frag.out
@@ -3,7 +3,7 @@
          "precision mediump int; precision highp float;" 
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 183
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle13.frag.out b/Test/baseResults/spv.bufferhandle13.frag.out
index 1231cf6..516b9fc 100644
--- a/Test/baseResults/spv.bufferhandle13.frag.out
+++ b/Test/baseResults/spv.bufferhandle13.frag.out
@@ -1,6 +1,6 @@
 spv.bufferhandle13.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 58
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle14.frag.out b/Test/baseResults/spv.bufferhandle14.frag.out
index 940793d..440a032 100644
--- a/Test/baseResults/spv.bufferhandle14.frag.out
+++ b/Test/baseResults/spv.bufferhandle14.frag.out
@@ -1,6 +1,6 @@
 spv.bufferhandle14.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 46
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle15.frag.out b/Test/baseResults/spv.bufferhandle15.frag.out
index ec7064d..f018e21 100644
--- a/Test/baseResults/spv.bufferhandle15.frag.out
+++ b/Test/baseResults/spv.bufferhandle15.frag.out
@@ -3,7 +3,7 @@
          "precision mediump int; precision highp float;" 
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 60
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle16.frag.out b/Test/baseResults/spv.bufferhandle16.frag.out
index 16e69d1..cfc6f05 100644
--- a/Test/baseResults/spv.bufferhandle16.frag.out
+++ b/Test/baseResults/spv.bufferhandle16.frag.out
@@ -1,6 +1,6 @@
 spv.bufferhandle16.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 48
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle18.frag.out b/Test/baseResults/spv.bufferhandle18.frag.out
index 567295d..0a5f6fb 100644
--- a/Test/baseResults/spv.bufferhandle18.frag.out
+++ b/Test/baseResults/spv.bufferhandle18.frag.out
@@ -1,6 +1,6 @@
 spv.bufferhandle18.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 196
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle2.frag.out b/Test/baseResults/spv.bufferhandle2.frag.out
index 8fee6db..6c43fbe 100644
--- a/Test/baseResults/spv.bufferhandle2.frag.out
+++ b/Test/baseResults/spv.bufferhandle2.frag.out
@@ -1,6 +1,6 @@
 spv.bufferhandle2.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 45
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle3.frag.out b/Test/baseResults/spv.bufferhandle3.frag.out
index c02c34c..ba50eb1 100644
--- a/Test/baseResults/spv.bufferhandle3.frag.out
+++ b/Test/baseResults/spv.bufferhandle3.frag.out
@@ -1,6 +1,6 @@
 spv.bufferhandle3.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 50
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle4.frag.out b/Test/baseResults/spv.bufferhandle4.frag.out
index 3f568b0..7dff09c 100644
--- a/Test/baseResults/spv.bufferhandle4.frag.out
+++ b/Test/baseResults/spv.bufferhandle4.frag.out
@@ -1,6 +1,6 @@
 spv.bufferhandle4.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 61
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle5.frag.out b/Test/baseResults/spv.bufferhandle5.frag.out
index 3f1d214..209459b 100644
--- a/Test/baseResults/spv.bufferhandle5.frag.out
+++ b/Test/baseResults/spv.bufferhandle5.frag.out
@@ -1,6 +1,6 @@
 spv.bufferhandle5.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 22
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle6.frag.out b/Test/baseResults/spv.bufferhandle6.frag.out
index 866741f..b373a2f 100644
--- a/Test/baseResults/spv.bufferhandle6.frag.out
+++ b/Test/baseResults/spv.bufferhandle6.frag.out
@@ -1,6 +1,6 @@
 spv.bufferhandle6.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 165
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle7.frag.out b/Test/baseResults/spv.bufferhandle7.frag.out
index d09eded..9beaee1 100644
--- a/Test/baseResults/spv.bufferhandle7.frag.out
+++ b/Test/baseResults/spv.bufferhandle7.frag.out
@@ -1,6 +1,6 @@
 spv.bufferhandle7.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 24
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle8.frag.out b/Test/baseResults/spv.bufferhandle8.frag.out
index c37fa3f..95abfd9 100644
--- a/Test/baseResults/spv.bufferhandle8.frag.out
+++ b/Test/baseResults/spv.bufferhandle8.frag.out
@@ -1,6 +1,6 @@
 spv.bufferhandle8.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 27
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandle9.frag.out b/Test/baseResults/spv.bufferhandle9.frag.out
index 5b91eda..b452acc 100644
--- a/Test/baseResults/spv.bufferhandle9.frag.out
+++ b/Test/baseResults/spv.bufferhandle9.frag.out
@@ -1,6 +1,6 @@
 spv.bufferhandle9.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 56
 
                               Capability Shader
diff --git a/Test/baseResults/spv.bufferhandleUvec2.frag.out b/Test/baseResults/spv.bufferhandleUvec2.frag.out
index 1e0cbcd..b1944cf 100755
--- a/Test/baseResults/spv.bufferhandleUvec2.frag.out
+++ b/Test/baseResults/spv.bufferhandleUvec2.frag.out
@@ -1,6 +1,6 @@
 spv.bufferhandleUvec2.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 71
 
                               Capability Shader
diff --git a/Test/baseResults/spv.builtInXFB.vert.out b/Test/baseResults/spv.builtInXFB.vert.out
index 556a698..7a8b17a 100644
--- a/Test/baseResults/spv.builtInXFB.vert.out
+++ b/Test/baseResults/spv.builtInXFB.vert.out
@@ -1,6 +1,6 @@
 spv.builtInXFB.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 21
 
                               Capability Shader
diff --git a/Test/baseResults/spv.computeShaderDerivatives.comp.out b/Test/baseResults/spv.computeShaderDerivatives.comp.out
index d332f35..052ac06 100644
--- a/Test/baseResults/spv.computeShaderDerivatives.comp.out
+++ b/Test/baseResults/spv.computeShaderDerivatives.comp.out
@@ -1,6 +1,6 @@
 spv.computeShaderDerivatives.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 212
 
                               Capability Shader
diff --git a/Test/baseResults/spv.computeShaderDerivatives2.comp.out b/Test/baseResults/spv.computeShaderDerivatives2.comp.out
index be1919b..3ef5ee4 100644
--- a/Test/baseResults/spv.computeShaderDerivatives2.comp.out
+++ b/Test/baseResults/spv.computeShaderDerivatives2.comp.out
@@ -1,6 +1,6 @@
 spv.computeShaderDerivatives2.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 212
 
                               Capability Shader
diff --git a/Test/baseResults/spv.conditionalDemote.frag.out b/Test/baseResults/spv.conditionalDemote.frag.out
index 10f2c23..f255176 100644
--- a/Test/baseResults/spv.conditionalDemote.frag.out
+++ b/Test/baseResults/spv.conditionalDemote.frag.out
@@ -1,6 +1,6 @@
 spv.conditionalDemote.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 38
 
                               Capability Shader
diff --git a/Test/baseResults/spv.conditionalDiscard.frag.out b/Test/baseResults/spv.conditionalDiscard.frag.out
index 2f2dcf2..a05afb9 100644
--- a/Test/baseResults/spv.conditionalDiscard.frag.out
+++ b/Test/baseResults/spv.conditionalDiscard.frag.out
@@ -1,6 +1,6 @@
 spv.conditionalDiscard.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 36
 
                               Capability Shader
diff --git a/Test/baseResults/spv.constConstruct.vert.out b/Test/baseResults/spv.constConstruct.vert.out
index 5922b34..d3250a1 100644
--- a/Test/baseResults/spv.constConstruct.vert.out
+++ b/Test/baseResults/spv.constConstruct.vert.out
@@ -1,7 +1,7 @@
 spv.constConstruct.vert
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 150
 
                               Capability Shader
diff --git a/Test/baseResults/spv.constStruct.vert.out b/Test/baseResults/spv.constStruct.vert.out
index d04f33d..1fce728 100644
--- a/Test/baseResults/spv.constStruct.vert.out
+++ b/Test/baseResults/spv.constStruct.vert.out
@@ -1,6 +1,6 @@
 spv.constStruct.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 23
 
                               Capability Shader
diff --git a/Test/baseResults/spv.constructComposite.comp.out b/Test/baseResults/spv.constructComposite.comp.out
index 6a23ecb..f1179d4 100644
--- a/Test/baseResults/spv.constructComposite.comp.out
+++ b/Test/baseResults/spv.constructComposite.comp.out
@@ -1,6 +1,6 @@
 spv.constructComposite.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 29
 
                               Capability Shader
diff --git a/Test/baseResults/spv.controlFlowAttributes.frag.out b/Test/baseResults/spv.controlFlowAttributes.frag.out
index c708232..c222f25 100644
--- a/Test/baseResults/spv.controlFlowAttributes.frag.out
+++ b/Test/baseResults/spv.controlFlowAttributes.frag.out
@@ -1,16 +1,16 @@
 spv.controlFlowAttributes.frag
-WARNING: 0:20: 'unroll' : expected no arguments 
-WARNING: 0:21: 'dont_unroll' : expected no arguments 
-WARNING: 0:22: 'dependency_infinite' : expected no arguments 
-WARNING: 0:23: 'dependency_length' : expected a single integer argument 
-WARNING: 0:24: '' : attribute with arguments not recognized, skipping 
-WARNING: 0:25: '' : attribute with arguments not recognized, skipping 
-WARNING: 0:26: '' : attribute with arguments not recognized, skipping 
+WARNING: 0:27: 'unroll' : expected no arguments 
+WARNING: 0:28: 'dont_unroll' : expected no arguments 
+WARNING: 0:29: 'dependency_infinite' : expected no arguments 
+WARNING: 0:30: 'dependency_length' : expected a single integer argument 
+WARNING: 0:31: '' : attribute with arguments not recognized, skipping 
+WARNING: 0:32: '' : attribute with arguments not recognized, skipping 
+WARNING: 0:33: '' : attribute with arguments not recognized, skipping 
 
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
-// Id's are bound by 118
+// Generated by (magic number): 80008
+// Id's are bound by 123
 
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
@@ -20,220 +20,231 @@
                               Source GLSL 450
                               SourceExtension  "GL_EXT_control_flow_attributes"
                               Name 4  "main"
-                              Name 8  "i"
-                              Name 36  "i"
-                              Name 47  "cond"
-                              Name 60  "i"
-                              Name 79  "i"
+                              Name 6  "f0("
+                              Name 8  "f1("
+                              Name 23  "i"
+                              Name 41  "i"
+                              Name 52  "cond"
+                              Name 65  "i"
+                              Name 84  "i"
                2:             TypeVoid
                3:             TypeFunction 2
-               6:             TypeInt 32 1
-               7:             TypePointer Function 6(int)
-               9:      6(int) Constant 0
-              16:      6(int) Constant 8
-              17:             TypeBool
-              20:      6(int) Constant 1
-              31:    17(bool) ConstantTrue
-              46:             TypePointer Private 17(bool)
-        47(cond):     46(ptr) Variable Private
-              54:    17(bool) ConstantFalse
-              55:      6(int) Constant 3
+              19:             TypeBool
+              20:    19(bool) ConstantTrue
+              21:             TypeInt 32 1
+              22:             TypePointer Function 21(int)
+              24:     21(int) Constant 0
+              31:     21(int) Constant 8
+              34:     21(int) Constant 1
+              51:             TypePointer Private 19(bool)
+        52(cond):     51(ptr) Variable Private
+              59:    19(bool) ConstantFalse
+              60:     21(int) Constant 3
          4(main):           2 Function None 3
                5:             Label
-            8(i):      7(ptr) Variable Function
-           36(i):      7(ptr) Variable Function
-           60(i):      7(ptr) Variable Function
-           79(i):      7(ptr) Variable Function
-                              Store 8(i) 9
-                              Branch 10
-              10:             Label
-                              LoopMerge 12 13 Unroll 
-                              Branch 14
-              14:             Label
-              15:      6(int) Load 8(i)
-              18:    17(bool) SLessThan 15 16
-                              BranchConditional 18 11 12
-              11:               Label
-                                Branch 13
-              13:               Label
-              19:      6(int)   Load 8(i)
-              21:      6(int)   IAdd 19 20
-                                Store 8(i) 21
-                                Branch 10
-              12:             Label
-                              Branch 22
-              22:             Label
-                              LoopMerge 24 25 DontUnroll 
-                              Branch 23
-              23:             Label
+           23(i):     22(ptr) Variable Function
+           41(i):     22(ptr) Variable Function
+           65(i):     22(ptr) Variable Function
+           84(i):     22(ptr) Variable Function
+                              Store 23(i) 24
                               Branch 25
               25:             Label
-                              Branch 22
-              24:             Label
-                              Branch 26
-              26:             Label
-                              LoopMerge 28 29 DontUnroll 
-                              Branch 30
-              30:             Label
-                              BranchConditional 31 27 28
-              27:               Label
-                                Branch 29
-              29:               Label
-                                Branch 26
-              28:             Label
-                              Branch 32
-              32:             Label
-                              LoopMerge 34 35 DependencyInfinite 
-                              Branch 33
-              33:             Label
-                              Branch 35
-              35:             Label
-                              BranchConditional 31 32 34
-              34:             Label
-                              Store 36(i) 9
+                              LoopMerge 27 28 Unroll 
+                              Branch 29
+              29:             Label
+              30:     21(int) Load 23(i)
+              32:    19(bool) SLessThan 30 31
+                              BranchConditional 32 26 27
+              26:               Label
+                                Branch 28
+              28:               Label
+              33:     21(int)   Load 23(i)
+              35:     21(int)   IAdd 33 34
+                                Store 23(i) 35
+                                Branch 25
+              27:             Label
+              36:           2 FunctionCall 6(f0()
                               Branch 37
               37:             Label
-                              LoopMerge 39 40 DependencyLength  4
-                              Branch 41
-              41:             Label
-              42:      6(int) Load 36(i)
-              43:    17(bool) SLessThan 42 16
-                              BranchConditional 43 38 39
-              38:               Label
-                                Branch 40
-              40:               Label
-              44:      6(int)   Load 36(i)
-              45:      6(int)   IAdd 44 20
-                                Store 36(i) 45
-                                Branch 37
+                              LoopMerge 39 40 DependencyInfinite 
+                              Branch 38
+              38:             Label
+                              Branch 40
+              40:             Label
+                              BranchConditional 20 37 39
               39:             Label
-              48:    17(bool) Load 47(cond)
-                              SelectionMerge 50 Flatten 
-                              BranchConditional 48 49 50
-              49:               Label
-                                Branch 50
-              50:             Label
-              51:    17(bool) Load 47(cond)
-                              SelectionMerge 53 DontFlatten 
-                              BranchConditional 51 52 53
-              52:               Label
-                                Store 47(cond) 54
-                                Branch 53
-              53:             Label
-                              SelectionMerge 57 DontFlatten 
-                              Switch 55 57 
-                                     case 3: 56
-              56:               Label
-                                Branch 57
-              57:             Label
-                              Store 60(i) 9
-                              Branch 61
-              61:             Label
-                              LoopMerge 63 64 None
-                              Branch 65
-              65:             Label
-              66:      6(int) Load 60(i)
-              67:    17(bool) SLessThan 66 16
-                              BranchConditional 67 62 63
-              62:               Label
-                                Branch 64
-              64:               Label
-              68:      6(int)   Load 60(i)
-              69:      6(int)   IAdd 68 20
-                                Store 60(i) 69
-                                Branch 61
-              63:             Label
+                              Store 41(i) 24
+                              Branch 42
+              42:             Label
+                              LoopMerge 44 45 DependencyLength  4
+                              Branch 46
+              46:             Label
+              47:     21(int) Load 41(i)
+              48:    19(bool) SLessThan 47 31
+                              BranchConditional 48 43 44
+              43:               Label
+                                Branch 45
+              45:               Label
+              49:     21(int)   Load 41(i)
+              50:     21(int)   IAdd 49 34
+                                Store 41(i) 50
+                                Branch 42
+              44:             Label
+              53:    19(bool) Load 52(cond)
+                              SelectionMerge 55 Flatten 
+                              BranchConditional 53 54 55
+              54:               Label
+                                Branch 55
+              55:             Label
+              56:    19(bool) Load 52(cond)
+                              SelectionMerge 58 DontFlatten 
+                              BranchConditional 56 57 58
+              57:               Label
+                                Store 52(cond) 59
+                                Branch 58
+              58:             Label
+                              SelectionMerge 62 DontFlatten 
+                              Switch 60 62 
+                                     case 3: 61
+              61:               Label
+                                Branch 62
+              62:             Label
+                              Store 65(i) 24
+                              Branch 66
+              66:             Label
+                              LoopMerge 68 69 None
                               Branch 70
               70:             Label
-                              LoopMerge 72 73 None
-                              Branch 74
-              74:             Label
-                              BranchConditional 31 71 72
-              71:               Label
-                                Branch 73
-              73:               Label
-                                Branch 70
-              72:             Label
+              71:     21(int) Load 65(i)
+              72:    19(bool) SLessThan 71 31
+                              BranchConditional 72 67 68
+              67:               Label
+                                Branch 69
+              69:               Label
+              73:     21(int)   Load 65(i)
+              74:     21(int)   IAdd 73 34
+                                Store 65(i) 74
+                                Branch 66
+              68:             Label
                               Branch 75
               75:             Label
                               LoopMerge 77 78 None
-                              Branch 76
-              76:             Label
-                              Branch 78
-              78:             Label
-                              BranchConditional 31 75 77
+                              Branch 79
+              79:             Label
+                              BranchConditional 20 76 77
+              76:               Label
+                                Branch 78
+              78:               Label
+                                Branch 75
               77:             Label
-                              Store 79(i) 9
                               Branch 80
               80:             Label
                               LoopMerge 82 83 None
-                              Branch 84
-              84:             Label
-              85:      6(int) Load 79(i)
-              86:    17(bool) SLessThan 85 16
-                              BranchConditional 86 81 82
-              81:               Label
-                                Branch 83
-              83:               Label
-              87:      6(int)   Load 79(i)
-              88:      6(int)   IAdd 87 20
-                                Store 79(i) 88
-                                Branch 80
+                              Branch 81
+              81:             Label
+                              Branch 83
+              83:             Label
+                              BranchConditional 20 80 82
               82:             Label
-              89:    17(bool) Load 47(cond)
-                              SelectionMerge 91 None
-                              BranchConditional 89 90 91
-              90:               Label
-                                Branch 91
-              91:             Label
-              92:    17(bool) Load 47(cond)
-                              SelectionMerge 94 None
-                              BranchConditional 92 93 94
-              93:               Label
-                                Store 47(cond) 54
-                                Branch 94
-              94:             Label
+                              Store 84(i) 24
+                              Branch 85
+              85:             Label
+                              LoopMerge 87 88 None
+                              Branch 89
+              89:             Label
+              90:     21(int) Load 84(i)
+              91:    19(bool) SLessThan 90 31
+                              BranchConditional 91 86 87
+              86:               Label
+                                Branch 88
+              88:               Label
+              92:     21(int)   Load 84(i)
+              93:     21(int)   IAdd 92 34
+                                Store 84(i) 93
+                                Branch 85
+              87:             Label
+              94:    19(bool) Load 52(cond)
                               SelectionMerge 96 None
-                              Switch 55 96 
-                                     case 3: 95
+                              BranchConditional 94 95 96
               95:               Label
                                 Branch 96
               96:             Label
-                              Branch 99
-              99:             Label
-                              LoopMerge 101 102 Unroll DontUnroll DependencyLength  2
-                              Branch 103
-             103:             Label
-             104:    17(bool) Load 47(cond)
-                              BranchConditional 104 100 101
-             100:               Label
-                                Branch 102
-             102:               Label
+              97:    19(bool) Load 52(cond)
+                              SelectionMerge 99 None
+                              BranchConditional 97 98 99
+              98:               Label
+                                Store 52(cond) 59
                                 Branch 99
+              99:             Label
+                              SelectionMerge 101 None
+                              Switch 60 101 
+                                     case 3: 100
+             100:               Label
+                                Branch 101
              101:             Label
-                              SelectionMerge 106 DontFlatten 
-                              Switch 55 106 
-                                     case 3: 105
+                              Branch 104
+             104:             Label
+                              LoopMerge 106 107 Unroll DontUnroll DependencyLength  2
+                              Branch 108
+             108:             Label
+             109:    19(bool) Load 52(cond)
+                              BranchConditional 109 105 106
              105:               Label
-                                Branch 106
+                                Branch 107
+             107:               Label
+                                Branch 104
              106:             Label
-             109:    17(bool) Load 47(cond)
-                              SelectionMerge 111 Flatten 
-                              BranchConditional 109 110 111
+                              SelectionMerge 111 DontFlatten 
+                              Switch 60 111 
+                                     case 3: 110
              110:               Label
                                 Branch 111
              111:             Label
-                              Branch 112
-             112:             Label
-                              LoopMerge 114 115 DependencyInfinite 
-                              Branch 116
-             116:             Label
-             117:    17(bool) Load 47(cond)
-                              BranchConditional 117 113 114
-             113:               Label
-                                Branch 115
+             114:    19(bool) Load 52(cond)
+                              SelectionMerge 116 Flatten 
+                              BranchConditional 114 115 116
              115:               Label
-                                Branch 112
-             114:             Label
+                                Branch 116
+             116:             Label
+                              Branch 117
+             117:             Label
+                              LoopMerge 119 120 DependencyInfinite 
+                              Branch 121
+             121:             Label
+             122:    19(bool) Load 52(cond)
+                              BranchConditional 122 118 119
+             118:               Label
+                                Branch 120
+             120:               Label
+                                Branch 117
+             119:             Label
+                              Return
+                              FunctionEnd
+          6(f0():           2 Function None 3
+               7:             Label
+                              Branch 10
+              10:             Label
+                              LoopMerge 12 13 DontUnroll 
+                              Branch 11
+              11:             Label
+                              Branch 13
+              13:             Label
+                              Branch 10
+              12:             Label
+                              Unreachable
+                              FunctionEnd
+          8(f1():           2 Function None 3
+               9:             Label
+                              Branch 14
+              14:             Label
+                              LoopMerge 16 17 DontUnroll 
+                              Branch 18
+              18:             Label
+                              BranchConditional 20 15 16
+              15:               Label
+                                Branch 17
+              17:               Label
+                                Branch 14
+              16:             Label
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.conversion.frag.out b/Test/baseResults/spv.conversion.frag.out
index a321532..60129dd 100644
--- a/Test/baseResults/spv.conversion.frag.out
+++ b/Test/baseResults/spv.conversion.frag.out
@@ -1,6 +1,6 @@
 spv.conversion.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 455
 
                               Capability Shader
diff --git a/Test/baseResults/spv.coopmat.comp.out b/Test/baseResults/spv.coopmat.comp.out
index acdcbc4..4ef7028 100644
--- a/Test/baseResults/spv.coopmat.comp.out
+++ b/Test/baseResults/spv.coopmat.comp.out
@@ -1,6 +1,6 @@
 spv.coopmat.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 228
 
                               Capability Shader
diff --git a/Test/baseResults/spv.dataOut.frag.out b/Test/baseResults/spv.dataOut.frag.out
index f384721..5dc14ce 100644
--- a/Test/baseResults/spv.dataOut.frag.out
+++ b/Test/baseResults/spv.dataOut.frag.out
@@ -1,6 +1,6 @@
 spv.dataOut.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 20
 
                               Capability Shader
diff --git a/Test/baseResults/spv.dataOutIndirect.frag.out b/Test/baseResults/spv.dataOutIndirect.frag.out
index f371601..fa6a0da 100644
--- a/Test/baseResults/spv.dataOutIndirect.frag.out
+++ b/Test/baseResults/spv.dataOutIndirect.frag.out
@@ -1,6 +1,6 @@
 spv.dataOutIndirect.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 26
 
                               Capability Shader
diff --git a/Test/baseResults/spv.dataOutIndirect.vert.out b/Test/baseResults/spv.dataOutIndirect.vert.out
index 9ba988c..fab5e58 100644
--- a/Test/baseResults/spv.dataOutIndirect.vert.out
+++ b/Test/baseResults/spv.dataOutIndirect.vert.out
@@ -2,7 +2,7 @@
 WARNING: 0:3: attribute deprecated in version 130; may be removed in future release
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 38
 
                               Capability Shader
diff --git a/Test/baseResults/spv.dead-after-continue.vert.out b/Test/baseResults/spv.dead-after-continue.vert.out
new file mode 100644
index 0000000..f3b8792
--- /dev/null
+++ b/Test/baseResults/spv.dead-after-continue.vert.out
@@ -0,0 +1,54 @@
+spv.dead-after-continue.vert
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 29
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 20 28
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 8  "i"
+                              Name 20  "o"
+                              Name 28  "c"
+                              Decorate 20(o) Location 0
+                              Decorate 28(c) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Function 6(int)
+               9:      6(int) Constant 0
+              16:      6(int) Constant 5
+              17:             TypeBool
+              19:             TypePointer Output 6(int)
+           20(o):     19(ptr) Variable Output
+              21:      6(int) Constant 1
+              23:      6(int) Constant 2
+              26:      6(int) Constant 3
+              27:             TypePointer Input 6(int)
+           28(c):     27(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+            8(i):      7(ptr) Variable Function
+                              Store 8(i) 9
+                              Branch 10
+              10:             Label
+                              LoopMerge 12 13 None
+                              Branch 14
+              14:             Label
+              15:      6(int) Load 8(i)
+              18:    17(bool) SLessThan 15 16
+                              BranchConditional 18 11 12
+              11:               Label
+                                Store 20(o) 21
+                                Branch 13
+              13:               Label
+              24:      6(int)   Load 8(i)
+              25:      6(int)   IAdd 24 21
+                                Store 8(i) 25
+                                Branch 10
+              12:             Label
+                              Store 20(o) 26
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.dead-after-discard.frag.out b/Test/baseResults/spv.dead-after-discard.frag.out
new file mode 100644
index 0000000..f378d04
--- /dev/null
+++ b/Test/baseResults/spv.dead-after-discard.frag.out
@@ -0,0 +1,31 @@
+spv.dead-after-discard.frag
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 15
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 8 14
+                              ExecutionMode 4 OriginUpperLeft
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 8  "o"
+                              Name 14  "c"
+                              Decorate 8(o) Location 0
+                              Decorate 14(c) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Output 6(int)
+            8(o):      7(ptr) Variable Output
+               9:      6(int) Constant 1
+              11:      6(int) Constant 3
+              12:             TypeFloat 32
+              13:             TypePointer Input 12(float)
+           14(c):     13(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+                              Store 8(o) 9
+                              Kill
+                              FunctionEnd
diff --git a/Test/baseResults/spv.dead-after-loop-break.vert.out b/Test/baseResults/spv.dead-after-loop-break.vert.out
new file mode 100644
index 0000000..b653e39
--- /dev/null
+++ b/Test/baseResults/spv.dead-after-loop-break.vert.out
@@ -0,0 +1,67 @@
+spv.dead-after-loop-break.vert
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 36
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 8 25
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 8  "o"
+                              Name 11  "i"
+                              Name 25  "c"
+                              Decorate 8(o) Location 0
+                              Decorate 25(c) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Output 6(int)
+            8(o):      7(ptr) Variable Output
+               9:      6(int) Constant 1
+              10:             TypePointer Function 6(int)
+              12:      6(int) Constant 0
+              19:      6(int) Constant 5
+              20:             TypeBool
+              22:      6(int) Constant 2
+              24:             TypePointer Input 6(int)
+           25(c):     24(ptr) Variable Input
+              30:      6(int) Constant 3
+              32:      6(int) Constant 4
+              35:      6(int) Constant 6
+         4(main):           2 Function None 3
+               5:             Label
+           11(i):     10(ptr) Variable Function
+                              Store 8(o) 9
+                              Store 11(i) 12
+                              Branch 13
+              13:             Label
+                              LoopMerge 15 16 None
+                              Branch 17
+              17:             Label
+              18:      6(int) Load 11(i)
+              21:    20(bool) SLessThan 18 19
+                              BranchConditional 21 14 15
+              14:               Label
+                                Store 8(o) 22
+              23:      6(int)   Load 11(i)
+              26:      6(int)   Load 25(c)
+              27:    20(bool)   IEqual 23 26
+                                SelectionMerge 29 None
+                                BranchConditional 27 28 29
+              28:                 Label
+                                  Store 8(o) 30
+                                  Branch 15
+              29:               Label
+                                Store 8(o) 19
+                                Branch 16
+              16:               Label
+              33:      6(int)   Load 11(i)
+              34:      6(int)   IAdd 33 9
+                                Store 11(i) 34
+                                Branch 13
+              15:             Label
+                              Store 8(o) 35
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.dead-after-return.vert.out b/Test/baseResults/spv.dead-after-return.vert.out
new file mode 100644
index 0000000..d963f9f
--- /dev/null
+++ b/Test/baseResults/spv.dead-after-return.vert.out
@@ -0,0 +1,29 @@
+spv.dead-after-return.vert
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 14
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 8 13
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 8  "o"
+                              Name 13  "c"
+                              Decorate 8(o) Location 0
+                              Decorate 13(c) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Output 6(int)
+            8(o):      7(ptr) Variable Output
+               9:      6(int) Constant 1
+              11:      6(int) Constant 3
+              12:             TypePointer Input 6(int)
+           13(c):     12(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+                              Store 8(o) 9
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.dead-after-switch-break.vert.out b/Test/baseResults/spv.dead-after-switch-break.vert.out
new file mode 100644
index 0000000..a506012
--- /dev/null
+++ b/Test/baseResults/spv.dead-after-switch-break.vert.out
@@ -0,0 +1,40 @@
+spv.dead-after-switch-break.vert
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 21
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 8 14
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 8  "c"
+                              Name 14  "o"
+                              Decorate 8(c) Location 0
+                              Decorate 14(o) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Input 6(int)
+            8(c):      7(ptr) Variable Input
+              13:             TypePointer Output 6(int)
+           14(o):     13(ptr) Variable Output
+              15:      6(int) Constant 1
+              17:      6(int) Constant 2
+              20:      6(int) Constant 3
+         4(main):           2 Function None 3
+               5:             Label
+               9:      6(int) Load 8(c)
+                              SelectionMerge 12 None
+                              Switch 9 11 
+                                     case 0: 10
+              11:               Label
+                                Branch 12
+              10:               Label
+                                Store 14(o) 15
+                                Branch 12
+              12:             Label
+                              Store 14(o) 20
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.dead-complex-continue-after-return.vert.out b/Test/baseResults/spv.dead-complex-continue-after-return.vert.out
new file mode 100644
index 0000000..60e81bd
--- /dev/null
+++ b/Test/baseResults/spv.dead-complex-continue-after-return.vert.out
@@ -0,0 +1,55 @@
+spv.dead-complex-continue-after-return.vert
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 31
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 11 30
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 8  "i"
+                              Name 11  "o"
+                              Name 30  "c"
+                              Decorate 11(o) Location 0
+                              Decorate 30(c) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Function 6(int)
+               9:      6(int) Constant 0
+              10:             TypePointer Output 6(int)
+           11(o):     10(ptr) Variable Output
+              12:      6(int) Constant 1
+              19:      6(int) Constant 5
+              20:             TypeBool
+              22:      6(int) Constant 2
+              24:      6(int) Constant 3
+              27:      6(int) Constant 99
+              28:      6(int) Constant 4
+              29:             TypePointer Input 6(int)
+           30(c):     29(ptr) Variable Input
+         4(main):           2 Function None 3
+               5:             Label
+            8(i):      7(ptr) Variable Function
+                              Store 8(i) 9
+                              Store 11(o) 12
+                              Store 8(i) 9
+                              Branch 13
+              13:             Label
+                              LoopMerge 15 16 None
+                              Branch 17
+              17:             Label
+              18:      6(int) Load 8(i)
+              21:    20(bool) SLessThan 18 19
+                              BranchConditional 21 14 15
+              14:               Label
+                                Store 11(o) 22
+                                Return
+              16:               Label
+                                Branch 13
+              15:             Label
+                              Store 11(o) 28
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/spv.dead-complex-merge-after-return.vert.out b/Test/baseResults/spv.dead-complex-merge-after-return.vert.out
new file mode 100644
index 0000000..609a3ce
--- /dev/null
+++ b/Test/baseResults/spv.dead-complex-merge-after-return.vert.out
@@ -0,0 +1,51 @@
+spv.dead-complex-merge-after-return.vert
+// Module Version 10000
+// Generated by (magic number): 80008
+// Id's are bound by 36
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Vertex 4  "main" 11 27
+                              Source GLSL 450
+                              Name 4  "main"
+                              Name 8  "i"
+                              Name 11  "o"
+                              Name 27  "c"
+                              Decorate 11(o) Location 0
+                              Decorate 27(c) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Function 6(int)
+               9:      6(int) Constant 0
+              10:             TypePointer Output 6(int)
+           11(o):     10(ptr) Variable Output
+              12:      6(int) Constant 1
+              17:      6(int) Constant 2
+              19:      6(int) Constant 3
+              22:      6(int) Constant 5
+              23:             TypeBool
+              25:      6(int) Constant 4
+              26:             TypePointer Input 6(int)
+           27(c):     26(ptr) Variable Input
+              32:      6(int) Constant 100
+              34:      6(int) Constant 200
+              35:      6(int) Constant 300
+         4(main):           2 Function None 3
+               5:             Label
+            8(i):      7(ptr) Variable Function
+                              Store 8(i) 9
+                              Store 11(o) 12
+                              Branch 13
+              13:             Label
+                              LoopMerge 15 16 None
+                              Branch 14
+              14:             Label
+                              Store 11(o) 17
+                              Return
+              16:             Label
+                              Branch 13
+              15:             Label
+                              Unreachable
+                              FunctionEnd
diff --git a/Test/baseResults/spv.debugInfo.1.1.frag.out b/Test/baseResults/spv.debugInfo.1.1.frag.out
index e212089..b68de49 100644
--- a/Test/baseResults/spv.debugInfo.1.1.frag.out
+++ b/Test/baseResults/spv.debugInfo.1.1.frag.out
@@ -2,7 +2,7 @@
 error: SPIRV-Tools Validation Errors
 error: Invalid SPIR-V binary version 1.3 for target environment SPIR-V 1.0 (under OpenGL 4.5 semantics).
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 124
 
                               Capability Shader
diff --git a/Test/baseResults/spv.debugInfo.frag.out b/Test/baseResults/spv.debugInfo.frag.out
index aaa988d..f27aac0 100644
--- a/Test/baseResults/spv.debugInfo.frag.out
+++ b/Test/baseResults/spv.debugInfo.frag.out
@@ -1,6 +1,6 @@
 spv.debugInfo.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 124
 
                               Capability Shader
diff --git a/Test/baseResults/spv.deepRvalue.frag.out b/Test/baseResults/spv.deepRvalue.frag.out
index 1869d76..776fdf8 100644
--- a/Test/baseResults/spv.deepRvalue.frag.out
+++ b/Test/baseResults/spv.deepRvalue.frag.out
@@ -1,6 +1,6 @@
 spv.deepRvalue.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 152
 
                               Capability Shader
diff --git a/Test/baseResults/spv.depthOut.frag.out b/Test/baseResults/spv.depthOut.frag.out
index 59afd3e..d212c89 100644
--- a/Test/baseResults/spv.depthOut.frag.out
+++ b/Test/baseResults/spv.depthOut.frag.out
@@ -1,6 +1,6 @@
 spv.depthOut.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 15
 
                               Capability Shader
diff --git a/Test/baseResults/spv.deviceGroup.frag.out b/Test/baseResults/spv.deviceGroup.frag.out
index 6710b77..2d16272 100644
--- a/Test/baseResults/spv.deviceGroup.frag.out
+++ b/Test/baseResults/spv.deviceGroup.frag.out
@@ -1,6 +1,6 @@
 spv.deviceGroup.frag
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 17
 
                               Capability Shader
diff --git a/Test/baseResults/spv.discard-dce.frag.out b/Test/baseResults/spv.discard-dce.frag.out
index 9d138f2..c4a5cb2 100644
--- a/Test/baseResults/spv.discard-dce.frag.out
+++ b/Test/baseResults/spv.discard-dce.frag.out
@@ -1,6 +1,6 @@
 spv.discard-dce.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 84
 
                               Capability Shader
diff --git a/Test/baseResults/spv.do-simple.vert.out b/Test/baseResults/spv.do-simple.vert.out
index 6014dfe..826cc1c 100644
--- a/Test/baseResults/spv.do-simple.vert.out
+++ b/Test/baseResults/spv.do-simple.vert.out
@@ -1,6 +1,6 @@
 spv.do-simple.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 21
 
                               Capability Shader
diff --git a/Test/baseResults/spv.do-while-continue-break.vert.out b/Test/baseResults/spv.do-while-continue-break.vert.out
index 2838880..36315a2 100644
--- a/Test/baseResults/spv.do-while-continue-break.vert.out
+++ b/Test/baseResults/spv.do-while-continue-break.vert.out
@@ -1,6 +1,6 @@
 spv.do-while-continue-break.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 43
 
                               Capability Shader
diff --git a/Test/baseResults/spv.doWhileLoop.frag.out b/Test/baseResults/spv.doWhileLoop.frag.out
index 808466e..945f0d7 100644
--- a/Test/baseResults/spv.doWhileLoop.frag.out
+++ b/Test/baseResults/spv.doWhileLoop.frag.out
@@ -1,6 +1,6 @@
 spv.doWhileLoop.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 34
 
                               Capability Shader
diff --git a/Test/baseResults/spv.double.comp.out b/Test/baseResults/spv.double.comp.out
index e9470ac..7961fc6 100644
--- a/Test/baseResults/spv.double.comp.out
+++ b/Test/baseResults/spv.double.comp.out
@@ -1,6 +1,6 @@
 spv.double.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 60
 
                               Capability Shader
diff --git a/Test/baseResults/spv.drawParams.vert.out b/Test/baseResults/spv.drawParams.vert.out
index 8f3e2c0..e9d4970 100644
--- a/Test/baseResults/spv.drawParams.vert.out
+++ b/Test/baseResults/spv.drawParams.vert.out
@@ -1,6 +1,6 @@
 spv.drawParams.vert
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 29
 
                               Capability Shader
diff --git a/Test/baseResults/spv.earlyReturnDiscard.frag.out b/Test/baseResults/spv.earlyReturnDiscard.frag.out
index c44b722..a4eb8ca 100644
--- a/Test/baseResults/spv.earlyReturnDiscard.frag.out
+++ b/Test/baseResults/spv.earlyReturnDiscard.frag.out
@@ -1,6 +1,6 @@
 spv.earlyReturnDiscard.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 110
 
                               Capability Shader
@@ -160,7 +160,7 @@
              102:                 Label
                                   Return
              100:               Label
-                                Branch 67
+                                Unreachable
               67:             Label
              106:    7(fvec4) Load 9(color)
              107:    7(fvec4) Load 13(color2)
diff --git a/Test/baseResults/spv.explicittypes.frag.out b/Test/baseResults/spv.explicittypes.frag.out
index c07f66d..9318913 100644
--- a/Test/baseResults/spv.explicittypes.frag.out
+++ b/Test/baseResults/spv.explicittypes.frag.out
@@ -1,6 +1,6 @@
 spv.explicittypes.frag
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 576
 
                               Capability Shader
diff --git a/Test/baseResults/spv.extPostDepthCoverage.frag.out b/Test/baseResults/spv.extPostDepthCoverage.frag.out
index 85a2359..28d207b 100644
--- a/Test/baseResults/spv.extPostDepthCoverage.frag.out
+++ b/Test/baseResults/spv.extPostDepthCoverage.frag.out
@@ -1,6 +1,6 @@
 spv.extPostDepthCoverage.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 6
 
                               Capability Shader
diff --git a/Test/baseResults/spv.float16.frag.out b/Test/baseResults/spv.float16.frag.out
index 1f955c2..ca1bca1 100644
--- a/Test/baseResults/spv.float16.frag.out
+++ b/Test/baseResults/spv.float16.frag.out
@@ -1,7 +1,7 @@
 spv.float16.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 534
 
                               Capability Shader
diff --git a/Test/baseResults/spv.float16Fetch.frag.out b/Test/baseResults/spv.float16Fetch.frag.out
index 45c80fe..92ff631 100644
--- a/Test/baseResults/spv.float16Fetch.frag.out
+++ b/Test/baseResults/spv.float16Fetch.frag.out
@@ -1,7 +1,7 @@
 spv.float16Fetch.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 5923
 
                               Capability Shader
diff --git a/Test/baseResults/spv.float16convertonlyarith.comp.out b/Test/baseResults/spv.float16convertonlyarith.comp.out
index 6abf0d4..5c8c292 100644
--- a/Test/baseResults/spv.float16convertonlyarith.comp.out
+++ b/Test/baseResults/spv.float16convertonlyarith.comp.out
@@ -1,6 +1,6 @@
 spv.float16convertonlyarith.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 22
 
                               Capability Shader
diff --git a/Test/baseResults/spv.float16convertonlystorage.comp.out b/Test/baseResults/spv.float16convertonlystorage.comp.out
index a2ff1d0..b37bb6b 100644
--- a/Test/baseResults/spv.float16convertonlystorage.comp.out
+++ b/Test/baseResults/spv.float16convertonlystorage.comp.out
@@ -1,6 +1,6 @@
 spv.float16convertonlystorage.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 22
 
                               Capability Shader
diff --git a/Test/baseResults/spv.float32.frag.out b/Test/baseResults/spv.float32.frag.out
index f1b0d02..db413c4 100644
--- a/Test/baseResults/spv.float32.frag.out
+++ b/Test/baseResults/spv.float32.frag.out
@@ -1,6 +1,6 @@
 spv.float32.frag
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 533
 
                               Capability Shader
diff --git a/Test/baseResults/spv.float64.frag.out b/Test/baseResults/spv.float64.frag.out
index 231f070..b98c870 100644
--- a/Test/baseResults/spv.float64.frag.out
+++ b/Test/baseResults/spv.float64.frag.out
@@ -1,7 +1,7 @@
 spv.float64.frag
 Validation failed
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 524
 
                               Capability Shader
diff --git a/Test/baseResults/spv.flowControl.frag.out b/Test/baseResults/spv.flowControl.frag.out
index 30c2a4b..fc68306 100644
--- a/Test/baseResults/spv.flowControl.frag.out
+++ b/Test/baseResults/spv.flowControl.frag.out
@@ -1,6 +1,6 @@
 spv.flowControl.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 39
 
                               Capability Shader
diff --git a/Test/baseResults/spv.for-complex-condition.vert.out b/Test/baseResults/spv.for-complex-condition.vert.out
index 41275a4..78252ee 100644
--- a/Test/baseResults/spv.for-complex-condition.vert.out
+++ b/Test/baseResults/spv.for-complex-condition.vert.out
@@ -1,6 +1,6 @@
 spv.for-complex-condition.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 31
 
                               Capability Shader
diff --git a/Test/baseResults/spv.for-continue-break.vert.out b/Test/baseResults/spv.for-continue-break.vert.out
index ff94a93..50c034e 100644
--- a/Test/baseResults/spv.for-continue-break.vert.out
+++ b/Test/baseResults/spv.for-continue-break.vert.out
@@ -1,6 +1,6 @@
 spv.for-continue-break.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 45
 
                               Capability Shader
diff --git a/Test/baseResults/spv.for-nobody.vert.out b/Test/baseResults/spv.for-nobody.vert.out
index 2a3bcf4..26844c2 100644
--- a/Test/baseResults/spv.for-nobody.vert.out
+++ b/Test/baseResults/spv.for-nobody.vert.out
@@ -1,6 +1,6 @@
 spv.for-nobody.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 25
 
                               Capability Shader
diff --git a/Test/baseResults/spv.for-notest.vert.out b/Test/baseResults/spv.for-notest.vert.out
index 36c4a96..ff85cb4 100644
--- a/Test/baseResults/spv.for-notest.vert.out
+++ b/Test/baseResults/spv.for-notest.vert.out
@@ -1,6 +1,6 @@
 spv.for-notest.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 20
 
                               Capability Shader
@@ -38,5 +38,5 @@
                               Store 8(i) 19
                               Branch 10
               12:             Label
-                              Return
+                              Unreachable
                               FunctionEnd
diff --git a/Test/baseResults/spv.for-simple.vert.out b/Test/baseResults/spv.for-simple.vert.out
index ecb539f..a3e5d86 100644
--- a/Test/baseResults/spv.for-simple.vert.out
+++ b/Test/baseResults/spv.for-simple.vert.out
@@ -1,6 +1,6 @@
 spv.for-simple.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 24
 
                               Capability Shader
diff --git a/Test/baseResults/spv.forLoop.frag.out b/Test/baseResults/spv.forLoop.frag.out
index a07921c..b4b0f5d 100644
--- a/Test/baseResults/spv.forLoop.frag.out
+++ b/Test/baseResults/spv.forLoop.frag.out
@@ -1,6 +1,6 @@
 spv.forLoop.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 131
 
                               Capability Shader
diff --git a/Test/baseResults/spv.forwardFun.frag.out b/Test/baseResults/spv.forwardFun.frag.out
index 32875b2..26140af 100644
--- a/Test/baseResults/spv.forwardFun.frag.out
+++ b/Test/baseResults/spv.forwardFun.frag.out
@@ -1,6 +1,6 @@
 spv.forwardFun.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 60
 
                               Capability Shader
@@ -99,8 +99,7 @@
               45:               Label
                                 ReturnValue 46
               42:             Label
-              48:    8(float) Undef
-                              ReturnValue 48
+                              Unreachable
                               FunctionEnd
     16(foo(vf4;):    8(float) Function None 14
          15(bar):     13(ptr) FunctionParameter
diff --git a/Test/baseResults/spv.fragmentDensity-es.frag.out b/Test/baseResults/spv.fragmentDensity-es.frag.out
index 01ac383..69f92c8 100644
--- a/Test/baseResults/spv.fragmentDensity-es.frag.out
+++ b/Test/baseResults/spv.fragmentDensity-es.frag.out
@@ -1,6 +1,6 @@
 spv.fragmentDensity-es.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 18
 
                               Capability Shader
diff --git a/Test/baseResults/spv.fragmentDensity.frag.out b/Test/baseResults/spv.fragmentDensity.frag.out
index 8bbc37c..5bdb43a 100644
--- a/Test/baseResults/spv.fragmentDensity.frag.out
+++ b/Test/baseResults/spv.fragmentDensity.frag.out
@@ -1,6 +1,6 @@
 spv.fragmentDensity.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 21
 
                               Capability Shader
diff --git a/Test/baseResults/spv.fragmentShaderBarycentric.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric.frag.out
index ffb3527..fbded6e 100644
--- a/Test/baseResults/spv.fragmentShaderBarycentric.frag.out
+++ b/Test/baseResults/spv.fragmentShaderBarycentric.frag.out
@@ -1,6 +1,6 @@
 spv.fragmentShaderBarycentric.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 43
 
                               Capability Shader
diff --git a/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out
index 05dce7a..22b84ba 100644
--- a/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out
+++ b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out
@@ -1,6 +1,6 @@
 spv.fragmentShaderBarycentric2.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 42
 
                               Capability Shader
diff --git a/Test/baseResults/spv.fsi.frag.out b/Test/baseResults/spv.fsi.frag.out
index 51fb068..b0c9713 100644
--- a/Test/baseResults/spv.fsi.frag.out
+++ b/Test/baseResults/spv.fsi.frag.out
@@ -1,6 +1,6 @@
 spv.fsi.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 24
 
                               Capability Shader
diff --git a/Test/baseResults/spv.fullyCovered.frag.out b/Test/baseResults/spv.fullyCovered.frag.out
index 76c8e44..4dbea15 100644
--- a/Test/baseResults/spv.fullyCovered.frag.out
+++ b/Test/baseResults/spv.fullyCovered.frag.out
@@ -1,6 +1,6 @@
 spv.fullyCovered.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 18
 
                               Capability Shader
diff --git a/Test/baseResults/spv.functionCall.frag.out b/Test/baseResults/spv.functionCall.frag.out
index 269b74e..4fa7863 100644
--- a/Test/baseResults/spv.functionCall.frag.out
+++ b/Test/baseResults/spv.functionCall.frag.out
@@ -4,7 +4,7 @@
 WARNING: 0:5: varying deprecated in version 130; may be removed in future release
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 76
 
                               Capability Shader
@@ -105,8 +105,7 @@
               44:               Label
                                 ReturnValue 45
               41:             Label
-              47:    6(float) Undef
-                              ReturnValue 47
+                              Unreachable
                               FunctionEnd
 18(missingReturn():    6(float) Function None 15
               19:             Label
diff --git a/Test/baseResults/spv.functionNestedOpaque.vert.out b/Test/baseResults/spv.functionNestedOpaque.vert.out
index df590c1..4543895 100644
--- a/Test/baseResults/spv.functionNestedOpaque.vert.out
+++ b/Test/baseResults/spv.functionNestedOpaque.vert.out
@@ -1,7 +1,7 @@
 spv.functionNestedOpaque.vert
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 39
 
                               Capability Shader
diff --git a/Test/baseResults/spv.functionParameterTypes.frag.out b/Test/baseResults/spv.functionParameterTypes.frag.out
index 24e780e..decc190 100644
--- a/Test/baseResults/spv.functionParameterTypes.frag.out
+++ b/Test/baseResults/spv.functionParameterTypes.frag.out
@@ -1,6 +1,6 @@
 spv.functionParameterTypes.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 34
 
                               Capability Shader
diff --git a/Test/baseResults/spv.functionSemantics.frag.out b/Test/baseResults/spv.functionSemantics.frag.out
index 49bdf7c..000a7bc 100644
--- a/Test/baseResults/spv.functionSemantics.frag.out
+++ b/Test/baseResults/spv.functionSemantics.frag.out
@@ -1,6 +1,6 @@
 spv.functionSemantics.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 156
 
                               Capability Shader
diff --git a/Test/baseResults/spv.glFragColor.frag.out b/Test/baseResults/spv.glFragColor.frag.out
index 55fb24f..af25280 100644
--- a/Test/baseResults/spv.glFragColor.frag.out
+++ b/Test/baseResults/spv.glFragColor.frag.out
@@ -1,6 +1,6 @@
 spv.glFragColor.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 12
 
                               Capability Shader
diff --git a/Test/baseResults/spv.glsl.register.autoassign.frag.out b/Test/baseResults/spv.glsl.register.autoassign.frag.out
index 9c8ccb5..9872f4a 100644
--- a/Test/baseResults/spv.glsl.register.autoassign.frag.out
+++ b/Test/baseResults/spv.glsl.register.autoassign.frag.out
@@ -1,6 +1,6 @@
 spv.glsl.register.autoassign.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 142
 
                               Capability Shader
diff --git a/Test/baseResults/spv.glsl.register.noautoassign.frag.out b/Test/baseResults/spv.glsl.register.noautoassign.frag.out
index 44d63ed..b52e220 100644
--- a/Test/baseResults/spv.glsl.register.noautoassign.frag.out
+++ b/Test/baseResults/spv.glsl.register.noautoassign.frag.out
@@ -1,6 +1,6 @@
 spv.glsl.register.noautoassign.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 142
 
                               Capability Shader
diff --git a/Test/baseResults/spv.hlslDebugInfo.frag.out b/Test/baseResults/spv.hlslDebugInfo.frag.out
index 35a6a4d..1d2e6b4 100644
--- a/Test/baseResults/spv.hlslDebugInfo.frag.out
+++ b/Test/baseResults/spv.hlslDebugInfo.frag.out
@@ -1,6 +1,6 @@
 spv.hlslDebugInfo.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 19
 
                               Capability Shader
diff --git a/Test/baseResults/spv.hlslOffsets.vert.out b/Test/baseResults/spv.hlslOffsets.vert.out
index 7236754..b1cdb6b 100644
--- a/Test/baseResults/spv.hlslOffsets.vert.out
+++ b/Test/baseResults/spv.hlslOffsets.vert.out
@@ -18,7 +18,7 @@
 0:?     'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430) buffer highp float m0, layout( column_major std430) buffer highp 3-component vector of float m4, layout( column_major std430) buffer highp float m16, layout( column_major std430 offset=20) buffer highp 3-component vector of float m20, layout( column_major std430) buffer highp 3-component vector of float m32, layout( column_major std430) buffer highp 2-component vector of float m48, layout( column_major std430) buffer highp 2-component vector of float m56, layout( column_major std430) buffer highp float m64, layout( column_major std430) buffer highp 2-component vector of float m68, layout( column_major std430) buffer highp float m76, layout( column_major std430) buffer highp float m80, layout( column_major std430 offset=88) buffer highp 2-component vector of float m88, layout( column_major std430) buffer highp 2-component vector of float m96, layout( column_major std430) buffer 2-component vector of double m112})
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 14
 
                               Capability Shader
diff --git a/Test/baseResults/spv.image.frag.out b/Test/baseResults/spv.image.frag.out
index 0fefd01..63d26d8 100644
--- a/Test/baseResults/spv.image.frag.out
+++ b/Test/baseResults/spv.image.frag.out
@@ -1,7 +1,7 @@
 spv.image.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 395
 
                               Capability Shader
diff --git a/Test/baseResults/spv.imageLoadStoreLod.frag.out b/Test/baseResults/spv.imageLoadStoreLod.frag.out
index 28cd4f9..526d739 100644
--- a/Test/baseResults/spv.imageLoadStoreLod.frag.out
+++ b/Test/baseResults/spv.imageLoadStoreLod.frag.out
@@ -1,7 +1,7 @@
 spv.imageLoadStoreLod.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 82
 
                               Capability Shader
diff --git a/Test/baseResults/spv.int16.amd.frag.out b/Test/baseResults/spv.int16.amd.frag.out
index 26c701d..3f6179b 100644
--- a/Test/baseResults/spv.int16.amd.frag.out
+++ b/Test/baseResults/spv.int16.amd.frag.out
@@ -1,6 +1,6 @@
 spv.int16.amd.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 560
 
                               Capability Shader
diff --git a/Test/baseResults/spv.int16.frag.out b/Test/baseResults/spv.int16.frag.out
index a7b9bfe..ff8a446 100644
--- a/Test/baseResults/spv.int16.frag.out
+++ b/Test/baseResults/spv.int16.frag.out
@@ -1,6 +1,6 @@
 spv.int16.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 523
 
                               Capability Shader
diff --git a/Test/baseResults/spv.int32.frag.out b/Test/baseResults/spv.int32.frag.out
index e5c7889..1e8cd70 100644
--- a/Test/baseResults/spv.int32.frag.out
+++ b/Test/baseResults/spv.int32.frag.out
@@ -1,6 +1,6 @@
 spv.int32.frag
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 493
 
                               Capability Shader
diff --git a/Test/baseResults/spv.int64.frag.out b/Test/baseResults/spv.int64.frag.out
index b1375a6..4510134 100644
--- a/Test/baseResults/spv.int64.frag.out
+++ b/Test/baseResults/spv.int64.frag.out
@@ -1,7 +1,7 @@
 spv.int64.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 489
 
                               Capability Shader
diff --git a/Test/baseResults/spv.int8.frag.out b/Test/baseResults/spv.int8.frag.out
index 0a4740d..c84ca7e 100644
--- a/Test/baseResults/spv.int8.frag.out
+++ b/Test/baseResults/spv.int8.frag.out
@@ -1,6 +1,6 @@
 spv.int8.frag
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 518
 
                               Capability Shader
diff --git a/Test/baseResults/spv.intOps.vert.out b/Test/baseResults/spv.intOps.vert.out
index 2a63783..272233e 100644
--- a/Test/baseResults/spv.intOps.vert.out
+++ b/Test/baseResults/spv.intOps.vert.out
@@ -1,6 +1,6 @@
 spv.intOps.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 268
 
                               Capability Shader
diff --git a/Test/baseResults/spv.intcoopmat.comp.out b/Test/baseResults/spv.intcoopmat.comp.out
index 06f5623..940ba33 100644
--- a/Test/baseResults/spv.intcoopmat.comp.out
+++ b/Test/baseResults/spv.intcoopmat.comp.out
@@ -1,6 +1,6 @@
 spv.intcoopmat.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 262
 
                               Capability Shader
diff --git a/Test/baseResults/spv.interpOps.frag.out b/Test/baseResults/spv.interpOps.frag.out
index 699524d..7ec4f9f 100644
--- a/Test/baseResults/spv.interpOps.frag.out
+++ b/Test/baseResults/spv.interpOps.frag.out
@@ -1,6 +1,6 @@
 spv.interpOps.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 100
 
                               Capability Shader
diff --git a/Test/baseResults/spv.layoutNested.vert.out b/Test/baseResults/spv.layoutNested.vert.out
index b5ef883..44d58ab 100644
--- a/Test/baseResults/spv.layoutNested.vert.out
+++ b/Test/baseResults/spv.layoutNested.vert.out
@@ -1,6 +1,6 @@
 spv.layoutNested.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 66
 
                               Capability Shader
diff --git a/Test/baseResults/spv.length.frag.out b/Test/baseResults/spv.length.frag.out
index 8e799fb..de391bc 100644
--- a/Test/baseResults/spv.length.frag.out
+++ b/Test/baseResults/spv.length.frag.out
@@ -1,6 +1,6 @@
 spv.length.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 33
 
                               Capability Shader
diff --git a/Test/baseResults/spv.localAggregates.frag.out b/Test/baseResults/spv.localAggregates.frag.out
index f5fad54..adfa0fd 100644
--- a/Test/baseResults/spv.localAggregates.frag.out
+++ b/Test/baseResults/spv.localAggregates.frag.out
@@ -1,6 +1,6 @@
 spv.localAggregates.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 136
 
                               Capability Shader
diff --git a/Test/baseResults/spv.loops.frag.out b/Test/baseResults/spv.loops.frag.out
index 046360f..a3a3423 100644
--- a/Test/baseResults/spv.loops.frag.out
+++ b/Test/baseResults/spv.loops.frag.out
@@ -1,6 +1,6 @@
 spv.loops.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 725
 
                               Capability Shader
diff --git a/Test/baseResults/spv.loopsArtificial.frag.out b/Test/baseResults/spv.loopsArtificial.frag.out
index d0d6054..65329d4 100644
--- a/Test/baseResults/spv.loopsArtificial.frag.out
+++ b/Test/baseResults/spv.loopsArtificial.frag.out
@@ -1,6 +1,6 @@
 spv.loopsArtificial.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 158
 
                               Capability Shader
diff --git a/Test/baseResults/spv.matFun.vert.out b/Test/baseResults/spv.matFun.vert.out
index 8ed378f..d39160d 100644
--- a/Test/baseResults/spv.matFun.vert.out
+++ b/Test/baseResults/spv.matFun.vert.out
@@ -1,6 +1,6 @@
 spv.matFun.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 103
 
                               Capability Shader
diff --git a/Test/baseResults/spv.matrix.frag.out b/Test/baseResults/spv.matrix.frag.out
index c2b4a1f..f7b6ce3 100644
--- a/Test/baseResults/spv.matrix.frag.out
+++ b/Test/baseResults/spv.matrix.frag.out
@@ -1,6 +1,6 @@
 spv.matrix.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 286
 
                               Capability Shader
diff --git a/Test/baseResults/spv.matrix2.frag.out b/Test/baseResults/spv.matrix2.frag.out
index dc574a4..77a098a 100644
--- a/Test/baseResults/spv.matrix2.frag.out
+++ b/Test/baseResults/spv.matrix2.frag.out
@@ -1,6 +1,6 @@
 spv.matrix2.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 221
 
                               Capability Shader
diff --git a/Test/baseResults/spv.memoryQualifier.frag.out b/Test/baseResults/spv.memoryQualifier.frag.out
index 93c6b2d..737e862 100644
--- a/Test/baseResults/spv.memoryQualifier.frag.out
+++ b/Test/baseResults/spv.memoryQualifier.frag.out
@@ -1,7 +1,7 @@
 spv.memoryQualifier.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 97
 
                               Capability Shader
diff --git a/Test/baseResults/spv.memoryScopeSemantics.comp.out b/Test/baseResults/spv.memoryScopeSemantics.comp.out
index 8c4e576..2967591 100644
--- a/Test/baseResults/spv.memoryScopeSemantics.comp.out
+++ b/Test/baseResults/spv.memoryScopeSemantics.comp.out
@@ -1,6 +1,6 @@
 spv.memoryScopeSemantics.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 163
 
                               Capability Shader
diff --git a/Test/baseResults/spv.merge-unreachable.frag.out b/Test/baseResults/spv.merge-unreachable.frag.out
index 7ec0f33..3eab4ec 100644
--- a/Test/baseResults/spv.merge-unreachable.frag.out
+++ b/Test/baseResults/spv.merge-unreachable.frag.out
@@ -1,6 +1,6 @@
 spv.merge-unreachable.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 25
 
                               Capability Shader
@@ -37,5 +37,5 @@
               23:               Label
                                 Return
               21:             Label
-                              Return
+                              Unreachable
                               FunctionEnd
diff --git a/Test/baseResults/spv.meshShaderBuiltins.mesh.out b/Test/baseResults/spv.meshShaderBuiltins.mesh.out
index 38d363b..cea7e4d 100644
--- a/Test/baseResults/spv.meshShaderBuiltins.mesh.out
+++ b/Test/baseResults/spv.meshShaderBuiltins.mesh.out
@@ -1,6 +1,6 @@
 spv.meshShaderBuiltins.mesh
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 148
 
                               Capability ClipDistance
diff --git a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
index b912aca..75f8c63 100644
--- a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
+++ b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out
@@ -1,6 +1,6 @@
 spv.meshShaderPerViewBuiltins.mesh
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 126
 
                               Capability MultiViewport
diff --git a/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out
index 266f662..de019a2 100644
--- a/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out
+++ b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out
@@ -1,6 +1,6 @@
 spv.meshShaderPerViewUserDefined.mesh
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 108
 
                               Capability MeshShadingNV
diff --git a/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out b/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out
index 4afbef9..e9ebd44 100644
--- a/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out
+++ b/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out
@@ -1,6 +1,6 @@
 spv.meshShaderRedeclBuiltins.mesh
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 129
 
                               Capability ClipDistance
diff --git a/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out b/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out
index 6672dc2..38542d5 100644
--- a/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out
+++ b/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out
@@ -1,6 +1,6 @@
 spv.meshShaderRedeclPerViewBuiltins.mesh
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 120
 
                               Capability PerViewAttributesNV
diff --git a/Test/baseResults/spv.meshShaderSharedMem.mesh.out b/Test/baseResults/spv.meshShaderSharedMem.mesh.out
index dd0003d..adac07f 100644
--- a/Test/baseResults/spv.meshShaderSharedMem.mesh.out
+++ b/Test/baseResults/spv.meshShaderSharedMem.mesh.out
@@ -1,6 +1,6 @@
 spv.meshShaderSharedMem.mesh
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 77
 
                               Capability StorageImageWriteWithoutFormat
diff --git a/Test/baseResults/spv.meshShaderTaskMem.mesh.out b/Test/baseResults/spv.meshShaderTaskMem.mesh.out
index e14f7a8..057e0fd 100644
--- a/Test/baseResults/spv.meshShaderTaskMem.mesh.out
+++ b/Test/baseResults/spv.meshShaderTaskMem.mesh.out
@@ -1,6 +1,6 @@
 spv.meshShaderTaskMem.mesh
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 58
 
                               Capability MeshShadingNV
diff --git a/Test/baseResults/spv.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.meshShaderUserDefined.mesh.out
index c3ec915..43579bb 100644
--- a/Test/baseResults/spv.meshShaderUserDefined.mesh.out
+++ b/Test/baseResults/spv.meshShaderUserDefined.mesh.out
@@ -1,6 +1,6 @@
 spv.meshShaderUserDefined.mesh
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 138
 
                               Capability MeshShadingNV
diff --git a/Test/baseResults/spv.meshTaskShader.task.out b/Test/baseResults/spv.meshTaskShader.task.out
index a835d7f..96d37c4 100644
--- a/Test/baseResults/spv.meshTaskShader.task.out
+++ b/Test/baseResults/spv.meshTaskShader.task.out
@@ -1,6 +1,6 @@
 spv.meshTaskShader.task
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 116
 
                               Capability StorageImageWriteWithoutFormat
diff --git a/Test/baseResults/spv.multiStruct.comp.out b/Test/baseResults/spv.multiStruct.comp.out
index 7e88a59..679a4bd 100644
--- a/Test/baseResults/spv.multiStruct.comp.out
+++ b/Test/baseResults/spv.multiStruct.comp.out
@@ -1,6 +1,6 @@
 spv.multiStruct.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 161
 
                               Capability Shader
diff --git a/Test/baseResults/spv.multiStructFuncall.frag.out b/Test/baseResults/spv.multiStructFuncall.frag.out
index a3a4480..9312fe9 100644
--- a/Test/baseResults/spv.multiStructFuncall.frag.out
+++ b/Test/baseResults/spv.multiStructFuncall.frag.out
@@ -1,6 +1,6 @@
 spv.multiStructFuncall.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 66
 
                               Capability Shader
diff --git a/Test/baseResults/spv.multiView.frag.out b/Test/baseResults/spv.multiView.frag.out
index 9dbd36b..5363352 100644
--- a/Test/baseResults/spv.multiView.frag.out
+++ b/Test/baseResults/spv.multiView.frag.out
@@ -1,6 +1,6 @@
 spv.multiView.frag
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 17
 
                               Capability Shader
diff --git a/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out b/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out
index c06a890..16e81a1 100644
--- a/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out
+++ b/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out
@@ -1,6 +1,6 @@
 spv.multiviewPerViewAttributes.tesc
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 41
 
                               Capability Tessellation
diff --git a/Test/baseResults/spv.multiviewPerViewAttributes.vert.out b/Test/baseResults/spv.multiviewPerViewAttributes.vert.out
index c8377cf..acca44e 100644
--- a/Test/baseResults/spv.multiviewPerViewAttributes.vert.out
+++ b/Test/baseResults/spv.multiviewPerViewAttributes.vert.out
@@ -1,6 +1,6 @@
 spv.multiviewPerViewAttributes.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 29
 
                               Capability Shader
diff --git a/Test/baseResults/spv.newTexture.frag.out b/Test/baseResults/spv.newTexture.frag.out
index 1bad3fa..6bbb032 100644
--- a/Test/baseResults/spv.newTexture.frag.out
+++ b/Test/baseResults/spv.newTexture.frag.out
@@ -1,7 +1,7 @@
 spv.newTexture.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 284
 
                               Capability Shader
diff --git a/Test/baseResults/spv.noBuiltInLoc.vert.out b/Test/baseResults/spv.noBuiltInLoc.vert.out
index 066f81f..7a45e72 100644
--- a/Test/baseResults/spv.noBuiltInLoc.vert.out
+++ b/Test/baseResults/spv.noBuiltInLoc.vert.out
@@ -1,6 +1,6 @@
 spv.noBuiltInLoc.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 35
 
                               Capability Shader
diff --git a/Test/baseResults/spv.noDeadDecorations.vert.out b/Test/baseResults/spv.noDeadDecorations.vert.out
index d7e3702..a555ba2 100644
--- a/Test/baseResults/spv.noDeadDecorations.vert.out
+++ b/Test/baseResults/spv.noDeadDecorations.vert.out
@@ -1,6 +1,6 @@
 spv.noDeadDecorations.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 32
 
                               Capability Shader
diff --git a/Test/baseResults/spv.noWorkgroup.comp.out b/Test/baseResults/spv.noWorkgroup.comp.out
index 2624fdc..92ae670 100644
--- a/Test/baseResults/spv.noWorkgroup.comp.out
+++ b/Test/baseResults/spv.noWorkgroup.comp.out
@@ -1,6 +1,6 @@
 spv.noWorkgroup.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 12
 
                               Capability Shader
diff --git a/Test/baseResults/spv.nonSquare.vert.out b/Test/baseResults/spv.nonSquare.vert.out
index 679a5f0..9746fe0 100644
--- a/Test/baseResults/spv.nonSquare.vert.out
+++ b/Test/baseResults/spv.nonSquare.vert.out
@@ -1,6 +1,6 @@
 spv.nonSquare.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 90
 
                               Capability Shader
diff --git a/Test/baseResults/spv.nonuniform.frag.out b/Test/baseResults/spv.nonuniform.frag.out
index 3aaa873..32b6466 100644
--- a/Test/baseResults/spv.nonuniform.frag.out
+++ b/Test/baseResults/spv.nonuniform.frag.out
@@ -1,6 +1,6 @@
 spv.nonuniform.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 212
 
                               Capability Shader
diff --git a/Test/baseResults/spv.nonuniform2.frag.out b/Test/baseResults/spv.nonuniform2.frag.out
index 3f101fe..db24f41 100644
--- a/Test/baseResults/spv.nonuniform2.frag.out
+++ b/Test/baseResults/spv.nonuniform2.frag.out
@@ -1,6 +1,6 @@
 spv.nonuniform2.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 24
 
                               Capability Shader
diff --git a/Test/baseResults/spv.offsets.frag.out b/Test/baseResults/spv.offsets.frag.out
index 17d7b86..08a75e9 100644
--- a/Test/baseResults/spv.offsets.frag.out
+++ b/Test/baseResults/spv.offsets.frag.out
@@ -1,6 +1,6 @@
 spv.offsets.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 15
 
                               Capability Shader
diff --git a/Test/baseResults/spv.paramMemory.frag.out b/Test/baseResults/spv.paramMemory.frag.out
index cba2fbd..df13c65 100644
--- a/Test/baseResults/spv.paramMemory.frag.out
+++ b/Test/baseResults/spv.paramMemory.frag.out
@@ -1,7 +1,7 @@
 spv.paramMemory.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 64
 
                               Capability Shader
diff --git a/Test/baseResults/spv.perprimitiveNV.frag.out b/Test/baseResults/spv.perprimitiveNV.frag.out
index eaff400..9943ee9 100644
--- a/Test/baseResults/spv.perprimitiveNV.frag.out
+++ b/Test/baseResults/spv.perprimitiveNV.frag.out
@@ -1,6 +1,6 @@
 spv.perprimitiveNV.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 23
 
                               Capability Shader
diff --git a/Test/baseResults/spv.pp.line.frag.out b/Test/baseResults/spv.pp.line.frag.out
index 5794177..12c5fa5 100644
--- a/Test/baseResults/spv.pp.line.frag.out
+++ b/Test/baseResults/spv.pp.line.frag.out
@@ -3,7 +3,7 @@
 WARNING: spv.pp.line.frag:7: varying deprecated in version 130; may be removed in future release
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 65
 
                               Capability Shader
diff --git a/Test/baseResults/spv.precise.tesc.out b/Test/baseResults/spv.precise.tesc.out
index 95a048f..840e7b3 100644
--- a/Test/baseResults/spv.precise.tesc.out
+++ b/Test/baseResults/spv.precise.tesc.out
@@ -1,6 +1,6 @@
 spv.precise.tesc
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 72
 
                               Capability Tessellation
diff --git a/Test/baseResults/spv.precise.tese.out b/Test/baseResults/spv.precise.tese.out
index a73cbd8..b59ac0e 100644
--- a/Test/baseResults/spv.precise.tese.out
+++ b/Test/baseResults/spv.precise.tese.out
@@ -1,6 +1,6 @@
 spv.precise.tese
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 119
 
                               Capability Tessellation
diff --git a/Test/baseResults/spv.precision.frag.out b/Test/baseResults/spv.precision.frag.out
index 5ddb492..ac4c0aa 100644
--- a/Test/baseResults/spv.precision.frag.out
+++ b/Test/baseResults/spv.precision.frag.out
@@ -1,6 +1,6 @@
 spv.precision.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 127
 
                               Capability Shader
diff --git a/Test/baseResults/spv.precisionNonESSamp.frag.out b/Test/baseResults/spv.precisionNonESSamp.frag.out
index 0620c41..97681f3 100644
--- a/Test/baseResults/spv.precisionNonESSamp.frag.out
+++ b/Test/baseResults/spv.precisionNonESSamp.frag.out
@@ -1,6 +1,6 @@
 spv.precisionNonESSamp.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 47
 
                               Capability Shader
diff --git a/Test/baseResults/spv.prepost.frag.out b/Test/baseResults/spv.prepost.frag.out
index 3b4bfd8..a0dbbd4 100644
--- a/Test/baseResults/spv.prepost.frag.out
+++ b/Test/baseResults/spv.prepost.frag.out
@@ -1,6 +1,6 @@
 spv.prepost.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 94
 
                               Capability Shader
diff --git a/Test/baseResults/spv.privateVariableTypes.frag.out b/Test/baseResults/spv.privateVariableTypes.frag.out
index 9b4063e..1b8e1a5 100644
--- a/Test/baseResults/spv.privateVariableTypes.frag.out
+++ b/Test/baseResults/spv.privateVariableTypes.frag.out
@@ -1,6 +1,6 @@
 spv.privateVariableTypes.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 27
 
                               Capability Shader
diff --git a/Test/baseResults/spv.pushConstant.vert.out b/Test/baseResults/spv.pushConstant.vert.out
index 40ee328..5348edb 100644
--- a/Test/baseResults/spv.pushConstant.vert.out
+++ b/Test/baseResults/spv.pushConstant.vert.out
@@ -1,6 +1,6 @@
 spv.pushConstant.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 35
 
                               Capability Shader
diff --git a/Test/baseResults/spv.pushConstantAnon.vert.out b/Test/baseResults/spv.pushConstantAnon.vert.out
index b03855d..3932b42 100644
--- a/Test/baseResults/spv.pushConstantAnon.vert.out
+++ b/Test/baseResults/spv.pushConstantAnon.vert.out
@@ -1,6 +1,6 @@
 spv.pushConstantAnon.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 38
 
                               Capability Shader
diff --git a/Test/baseResults/spv.qualifiers.vert.out b/Test/baseResults/spv.qualifiers.vert.out
index ffdc6f8..47f73a0 100644
--- a/Test/baseResults/spv.qualifiers.vert.out
+++ b/Test/baseResults/spv.qualifiers.vert.out
@@ -1,6 +1,6 @@
 spv.qualifiers.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 21
 
                               Capability Shader
diff --git a/Test/baseResults/spv.queryL.frag.out b/Test/baseResults/spv.queryL.frag.out
index 87dbb8c..97d845a 100644
--- a/Test/baseResults/spv.queryL.frag.out
+++ b/Test/baseResults/spv.queryL.frag.out
@@ -1,7 +1,7 @@
 spv.queryL.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 224
 
                               Capability Shader
diff --git a/Test/baseResults/spv.rankShift.comp.out b/Test/baseResults/spv.rankShift.comp.out
index 3ca7514..e0fba77 100644
--- a/Test/baseResults/spv.rankShift.comp.out
+++ b/Test/baseResults/spv.rankShift.comp.out
@@ -1,6 +1,6 @@
 spv.rankShift.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 33
 
                               Capability Shader
diff --git a/Test/baseResults/spv.register.autoassign-2.frag.out b/Test/baseResults/spv.register.autoassign-2.frag.out
index 533e388..9fd317e 100644
--- a/Test/baseResults/spv.register.autoassign-2.frag.out
+++ b/Test/baseResults/spv.register.autoassign-2.frag.out
@@ -1,6 +1,6 @@
 spv.register.autoassign-2.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 47
 
                               Capability Shader
diff --git a/Test/baseResults/spv.register.autoassign.frag.out b/Test/baseResults/spv.register.autoassign.frag.out
index 123ea35..74118ef 100644
--- a/Test/baseResults/spv.register.autoassign.frag.out
+++ b/Test/baseResults/spv.register.autoassign.frag.out
@@ -1,6 +1,6 @@
 spv.register.autoassign.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 155
 
                               Capability Shader
diff --git a/Test/baseResults/spv.register.noautoassign.frag.out b/Test/baseResults/spv.register.noautoassign.frag.out
index 3259f41..1292b0b 100644
--- a/Test/baseResults/spv.register.noautoassign.frag.out
+++ b/Test/baseResults/spv.register.noautoassign.frag.out
@@ -1,6 +1,6 @@
 spv.register.noautoassign.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 155
 
                               Capability Shader
diff --git a/Test/baseResults/spv.register.subpass.frag.out b/Test/baseResults/spv.register.subpass.frag.out
index c42832a..21f7955 100644
--- a/Test/baseResults/spv.register.subpass.frag.out
+++ b/Test/baseResults/spv.register.subpass.frag.out
@@ -1,6 +1,6 @@
 spv.register.subpass.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 40
 
                               Capability Shader
diff --git a/Test/baseResults/spv.rw.autoassign.frag.out b/Test/baseResults/spv.rw.autoassign.frag.out
index 2ee30bc..a575e78 100644
--- a/Test/baseResults/spv.rw.autoassign.frag.out
+++ b/Test/baseResults/spv.rw.autoassign.frag.out
@@ -1,6 +1,6 @@
 spv.rw.autoassign.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 42
 
                               Capability Shader
diff --git a/Test/baseResults/spv.sample.frag.out b/Test/baseResults/spv.sample.frag.out
index e4d38f3..57fbf31 100644
--- a/Test/baseResults/spv.sample.frag.out
+++ b/Test/baseResults/spv.sample.frag.out
@@ -1,6 +1,6 @@
 spv.sample.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 13
 
                               Capability Shader
diff --git a/Test/baseResults/spv.sampleId.frag.out b/Test/baseResults/spv.sampleId.frag.out
index 894d8db..1412da2 100644
--- a/Test/baseResults/spv.sampleId.frag.out
+++ b/Test/baseResults/spv.sampleId.frag.out
@@ -1,6 +1,6 @@
 spv.sampleId.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 26
 
                               Capability Shader
diff --git a/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out b/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out
index 3a9872e..2892325 100644
--- a/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out
+++ b/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out
@@ -1,6 +1,6 @@
 spv.sampleMaskOverrideCoverage.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 20
 
                               Capability Shader
diff --git a/Test/baseResults/spv.samplePosition.frag.out b/Test/baseResults/spv.samplePosition.frag.out
index 882423e..b06c768 100644
--- a/Test/baseResults/spv.samplePosition.frag.out
+++ b/Test/baseResults/spv.samplePosition.frag.out
@@ -1,6 +1,6 @@
 spv.samplePosition.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 30
 
                               Capability Shader
diff --git a/Test/baseResults/spv.samplerlessTextureFunctions.frag.out b/Test/baseResults/spv.samplerlessTextureFunctions.frag.out
index 0f09b43..c12201e 100644
--- a/Test/baseResults/spv.samplerlessTextureFunctions.frag.out
+++ b/Test/baseResults/spv.samplerlessTextureFunctions.frag.out
@@ -1,6 +1,6 @@
 spv.samplerlessTextureFunctions.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 51
 
                               Capability Shader
diff --git a/Test/baseResults/spv.scalarlayout.frag.out b/Test/baseResults/spv.scalarlayout.frag.out
index 0168bc3..1b26242 100644
--- a/Test/baseResults/spv.scalarlayout.frag.out
+++ b/Test/baseResults/spv.scalarlayout.frag.out
@@ -1,7 +1,7 @@
 spv.scalarlayout.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 20
 
                               Capability Shader
diff --git a/Test/baseResults/spv.scalarlayoutfloat16.frag.out b/Test/baseResults/spv.scalarlayoutfloat16.frag.out
index dac7e3a..c88fa7f 100644
--- a/Test/baseResults/spv.scalarlayoutfloat16.frag.out
+++ b/Test/baseResults/spv.scalarlayoutfloat16.frag.out
@@ -1,7 +1,7 @@
 spv.scalarlayoutfloat16.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 18
 
                               Capability Shader
diff --git a/Test/baseResults/spv.separate.frag.out b/Test/baseResults/spv.separate.frag.out
index 27cd3be..690ab2f 100644
--- a/Test/baseResults/spv.separate.frag.out
+++ b/Test/baseResults/spv.separate.frag.out
@@ -1,7 +1,7 @@
 spv.separate.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 319
 
                               Capability Shader
diff --git a/Test/baseResults/spv.set.vert.out b/Test/baseResults/spv.set.vert.out
index 16d771f..fe4326f 100644
--- a/Test/baseResults/spv.set.vert.out
+++ b/Test/baseResults/spv.set.vert.out
@@ -1,6 +1,6 @@
 spv.set.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 22
 
                               Capability Shader
diff --git a/Test/baseResults/spv.shaderBallot.comp.out b/Test/baseResults/spv.shaderBallot.comp.out
index 1c616ee..3ddee0f 100644
--- a/Test/baseResults/spv.shaderBallot.comp.out
+++ b/Test/baseResults/spv.shaderBallot.comp.out
@@ -1,6 +1,6 @@
 spv.shaderBallot.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 318
 
                               Capability Shader
diff --git a/Test/baseResults/spv.shaderBallotAMD.comp.out b/Test/baseResults/spv.shaderBallotAMD.comp.out
index 62ce6f2..eb8f404 100644
--- a/Test/baseResults/spv.shaderBallotAMD.comp.out
+++ b/Test/baseResults/spv.shaderBallotAMD.comp.out
@@ -1,6 +1,6 @@
 spv.shaderBallotAMD.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 1343
 
                               Capability Shader
diff --git a/Test/baseResults/spv.shaderDrawParams.vert.out b/Test/baseResults/spv.shaderDrawParams.vert.out
index d6b43e8..ad51de1 100644
--- a/Test/baseResults/spv.shaderDrawParams.vert.out
+++ b/Test/baseResults/spv.shaderDrawParams.vert.out
@@ -1,6 +1,6 @@
 spv.shaderDrawParams.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 53
 
                               Capability Shader
diff --git a/Test/baseResults/spv.shaderFragMaskAMD.frag.out b/Test/baseResults/spv.shaderFragMaskAMD.frag.out
index 788d3ee..b1e5c0d 100644
--- a/Test/baseResults/spv.shaderFragMaskAMD.frag.out
+++ b/Test/baseResults/spv.shaderFragMaskAMD.frag.out
@@ -1,6 +1,6 @@
 spv.shaderFragMaskAMD.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 80
 
                               Capability Shader
diff --git a/Test/baseResults/spv.shaderGroupVote.comp.out b/Test/baseResults/spv.shaderGroupVote.comp.out
index e45f585..a09e798 100644
--- a/Test/baseResults/spv.shaderGroupVote.comp.out
+++ b/Test/baseResults/spv.shaderGroupVote.comp.out
@@ -1,6 +1,6 @@
 spv.shaderGroupVote.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 33
 
                               Capability Shader
diff --git a/Test/baseResults/spv.shaderImageFootprint.frag.out b/Test/baseResults/spv.shaderImageFootprint.frag.out
index 8218ee4..7559564 100644
--- a/Test/baseResults/spv.shaderImageFootprint.frag.out
+++ b/Test/baseResults/spv.shaderImageFootprint.frag.out
@@ -1,6 +1,6 @@
 spv.shaderImageFootprint.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 622
 
                               Capability Shader
diff --git a/Test/baseResults/spv.shaderStencilExport.frag.out b/Test/baseResults/spv.shaderStencilExport.frag.out
index 8fc691e..37fce5f 100644
--- a/Test/baseResults/spv.shaderStencilExport.frag.out
+++ b/Test/baseResults/spv.shaderStencilExport.frag.out
@@ -1,6 +1,6 @@
 spv.shaderStencilExport.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 10
 
                               Capability Shader
diff --git a/Test/baseResults/spv.shadingRate.frag.out b/Test/baseResults/spv.shadingRate.frag.out
index 1147776..ce56113 100644
--- a/Test/baseResults/spv.shadingRate.frag.out
+++ b/Test/baseResults/spv.shadingRate.frag.out
@@ -1,6 +1,6 @@
 spv.shadingRate.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 21
 
                               Capability Shader
diff --git a/Test/baseResults/spv.shiftOps.frag.out b/Test/baseResults/spv.shiftOps.frag.out
index 3085a55..15df236 100644
--- a/Test/baseResults/spv.shiftOps.frag.out
+++ b/Test/baseResults/spv.shiftOps.frag.out
@@ -1,6 +1,6 @@
 spv.shiftOps.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 38
 
                               Capability Shader
diff --git a/Test/baseResults/spv.shortCircuit.frag.out b/Test/baseResults/spv.shortCircuit.frag.out
index d651824..6104b04 100644
--- a/Test/baseResults/spv.shortCircuit.frag.out
+++ b/Test/baseResults/spv.shortCircuit.frag.out
@@ -1,6 +1,6 @@
 spv.shortCircuit.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 147
 
                               Capability Shader
diff --git a/Test/baseResults/spv.simpleFunctionCall.frag.out b/Test/baseResults/spv.simpleFunctionCall.frag.out
index 627b31c..8e666a6 100644
--- a/Test/baseResults/spv.simpleFunctionCall.frag.out
+++ b/Test/baseResults/spv.simpleFunctionCall.frag.out
@@ -1,6 +1,6 @@
 spv.simpleFunctionCall.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 19
 
                               Capability Shader
diff --git a/Test/baseResults/spv.simpleMat.vert.out b/Test/baseResults/spv.simpleMat.vert.out
index 8557458..ff51dc0 100644
--- a/Test/baseResults/spv.simpleMat.vert.out
+++ b/Test/baseResults/spv.simpleMat.vert.out
@@ -2,7 +2,7 @@
 WARNING: 0:3: varying deprecated in version 130; may be removed in future release
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 39
 
                               Capability Shader
diff --git a/Test/baseResults/spv.smBuiltins.frag.out b/Test/baseResults/spv.smBuiltins.frag.out
index fda06eb..9f4cc60 100644
--- a/Test/baseResults/spv.smBuiltins.frag.out
+++ b/Test/baseResults/spv.smBuiltins.frag.out
@@ -1,6 +1,6 @@
 spv.smBuiltins.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 20
 
                               Capability Shader
diff --git a/Test/baseResults/spv.smBuiltins.vert.out b/Test/baseResults/spv.smBuiltins.vert.out
index 8423e5b..0453b0c 100644
--- a/Test/baseResults/spv.smBuiltins.vert.out
+++ b/Test/baseResults/spv.smBuiltins.vert.out
@@ -1,6 +1,6 @@
 spv.smBuiltins.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 29
 
                               Capability Shader
diff --git a/Test/baseResults/spv.sparseTexture.frag.out b/Test/baseResults/spv.sparseTexture.frag.out
index 7fdea0c..3414200 100644
--- a/Test/baseResults/spv.sparseTexture.frag.out
+++ b/Test/baseResults/spv.sparseTexture.frag.out
@@ -1,7 +1,7 @@
 spv.sparseTexture.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 438
 
                               Capability Shader
diff --git a/Test/baseResults/spv.sparseTextureClamp.frag.out b/Test/baseResults/spv.sparseTextureClamp.frag.out
index ff7dce5..fedd64a 100644
--- a/Test/baseResults/spv.sparseTextureClamp.frag.out
+++ b/Test/baseResults/spv.sparseTextureClamp.frag.out
@@ -1,7 +1,7 @@
 spv.sparseTextureClamp.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 360
 
                               Capability Shader
diff --git a/Test/baseResults/spv.specConst.vert.out b/Test/baseResults/spv.specConst.vert.out
index 70fbd09..116c136 100644
--- a/Test/baseResults/spv.specConst.vert.out
+++ b/Test/baseResults/spv.specConst.vert.out
@@ -1,6 +1,6 @@
 spv.specConst.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 27
 
                               Capability Shader
diff --git a/Test/baseResults/spv.specConstant.comp.out b/Test/baseResults/spv.specConstant.comp.out
index 2f64150..e0ad699 100644
--- a/Test/baseResults/spv.specConstant.comp.out
+++ b/Test/baseResults/spv.specConstant.comp.out
@@ -1,6 +1,6 @@
 spv.specConstant.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 27
 
                               Capability Shader
diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out
index 49bcca6..1be3950 100644
--- a/Test/baseResults/spv.specConstant.vert.out
+++ b/Test/baseResults/spv.specConstant.vert.out
@@ -1,6 +1,6 @@
 spv.specConstant.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 81
 
                               Capability Shader
diff --git a/Test/baseResults/spv.specConstantComposite.vert.out b/Test/baseResults/spv.specConstantComposite.vert.out
index 58d4b6a..20a071b 100644
--- a/Test/baseResults/spv.specConstantComposite.vert.out
+++ b/Test/baseResults/spv.specConstantComposite.vert.out
@@ -1,6 +1,6 @@
 spv.specConstantComposite.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 43
 
                               Capability Shader
diff --git a/Test/baseResults/spv.specConstantOperations.vert.out b/Test/baseResults/spv.specConstantOperations.vert.out
index 0f141e3..747d50b 100644
--- a/Test/baseResults/spv.specConstantOperations.vert.out
+++ b/Test/baseResults/spv.specConstantOperations.vert.out
@@ -1,6 +1,6 @@
 spv.specConstantOperations.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 162
 
                               Capability Shader
diff --git a/Test/baseResults/spv.ssbo.autoassign.frag.out b/Test/baseResults/spv.ssbo.autoassign.frag.out
index 40afa15..7d64847 100644
--- a/Test/baseResults/spv.ssbo.autoassign.frag.out
+++ b/Test/baseResults/spv.ssbo.autoassign.frag.out
@@ -1,6 +1,6 @@
 spv.ssbo.autoassign.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 99
 
                               Capability Shader
diff --git a/Test/baseResults/spv.ssboAlias.frag.out b/Test/baseResults/spv.ssboAlias.frag.out
index f03d2ca..1711d9d 100644
--- a/Test/baseResults/spv.ssboAlias.frag.out
+++ b/Test/baseResults/spv.ssboAlias.frag.out
@@ -1,6 +1,6 @@
 spv.ssboAlias.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 44
 
                               Capability Shader
diff --git a/Test/baseResults/spv.stereoViewRendering.tesc.out b/Test/baseResults/spv.stereoViewRendering.tesc.out
index 43afff9..2cab064 100644
--- a/Test/baseResults/spv.stereoViewRendering.tesc.out
+++ b/Test/baseResults/spv.stereoViewRendering.tesc.out
@@ -1,6 +1,6 @@
 spv.stereoViewRendering.tesc
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 42
 
                               Capability Geometry
diff --git a/Test/baseResults/spv.stereoViewRendering.vert.out b/Test/baseResults/spv.stereoViewRendering.vert.out
index afd8c75..acb8338 100644
--- a/Test/baseResults/spv.stereoViewRendering.vert.out
+++ b/Test/baseResults/spv.stereoViewRendering.vert.out
@@ -1,6 +1,6 @@
 spv.stereoViewRendering.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 27
 
                               Capability Shader
diff --git a/Test/baseResults/spv.storageBuffer.vert.out b/Test/baseResults/spv.storageBuffer.vert.out
index 5006e4c..79cf9f1 100644
--- a/Test/baseResults/spv.storageBuffer.vert.out
+++ b/Test/baseResults/spv.storageBuffer.vert.out
@@ -1,6 +1,6 @@
 spv.storageBuffer.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 31
 
                               Capability Shader
diff --git a/Test/baseResults/spv.structAssignment.frag.out b/Test/baseResults/spv.structAssignment.frag.out
index 4b357da..d61c0e4 100644
--- a/Test/baseResults/spv.structAssignment.frag.out
+++ b/Test/baseResults/spv.structAssignment.frag.out
@@ -3,7 +3,7 @@
          "precision mediump int; precision highp float;" 
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 50
 
                               Capability Shader
diff --git a/Test/baseResults/spv.structDeref.frag.out b/Test/baseResults/spv.structDeref.frag.out
index 6888a85..2a114d7 100644
--- a/Test/baseResults/spv.structDeref.frag.out
+++ b/Test/baseResults/spv.structDeref.frag.out
@@ -1,6 +1,6 @@
 spv.structDeref.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 123
 
                               Capability Shader
diff --git a/Test/baseResults/spv.structure.frag.out b/Test/baseResults/spv.structure.frag.out
index f1da59f..e8f8b39 100644
--- a/Test/baseResults/spv.structure.frag.out
+++ b/Test/baseResults/spv.structure.frag.out
@@ -1,6 +1,6 @@
 spv.structure.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 60
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroup.frag.out b/Test/baseResults/spv.subgroup.frag.out
index 4dd636e..ee932bf 100644
--- a/Test/baseResults/spv.subgroup.frag.out
+++ b/Test/baseResults/spv.subgroup.frag.out
@@ -1,6 +1,6 @@
 spv.subgroup.frag
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 17
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroup.geom.out b/Test/baseResults/spv.subgroup.geom.out
index a68343a..279e646 100644
--- a/Test/baseResults/spv.subgroup.geom.out
+++ b/Test/baseResults/spv.subgroup.geom.out
@@ -1,6 +1,6 @@
 spv.subgroup.geom
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 26
 
                               Capability Geometry
diff --git a/Test/baseResults/spv.subgroup.tesc.out b/Test/baseResults/spv.subgroup.tesc.out
index 4e362e2..bc55b4e 100644
--- a/Test/baseResults/spv.subgroup.tesc.out
+++ b/Test/baseResults/spv.subgroup.tesc.out
@@ -1,6 +1,6 @@
 spv.subgroup.tesc
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 26
 
                               Capability Tessellation
diff --git a/Test/baseResults/spv.subgroup.tese.out b/Test/baseResults/spv.subgroup.tese.out
index e09f558..6b0a5ce 100644
--- a/Test/baseResults/spv.subgroup.tese.out
+++ b/Test/baseResults/spv.subgroup.tese.out
@@ -1,6 +1,6 @@
 spv.subgroup.tese
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 26
 
                               Capability Tessellation
diff --git a/Test/baseResults/spv.subgroup.vert.out b/Test/baseResults/spv.subgroup.vert.out
index 2fbc92b..6deaf55 100644
--- a/Test/baseResults/spv.subgroup.vert.out
+++ b/Test/baseResults/spv.subgroup.vert.out
@@ -1,6 +1,6 @@
 spv.subgroup.vert
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 26
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupArithmetic.comp.out b/Test/baseResults/spv.subgroupArithmetic.comp.out
index f4e251a..29ea9ec 100644
--- a/Test/baseResults/spv.subgroupArithmetic.comp.out
+++ b/Test/baseResults/spv.subgroupArithmetic.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupArithmetic.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 2085
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupBallot.comp.out b/Test/baseResults/spv.subgroupBallot.comp.out
index ea152d9..9fe1964 100644
--- a/Test/baseResults/spv.subgroupBallot.comp.out
+++ b/Test/baseResults/spv.subgroupBallot.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupBallot.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 397
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupBasic.comp.out b/Test/baseResults/spv.subgroupBasic.comp.out
index 641534d..2f6571b 100644
--- a/Test/baseResults/spv.subgroupBasic.comp.out
+++ b/Test/baseResults/spv.subgroupBasic.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupBasic.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 40
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupClustered.comp.out b/Test/baseResults/spv.subgroupClustered.comp.out
index 150eb8a..3971281 100644
--- a/Test/baseResults/spv.subgroupClustered.comp.out
+++ b/Test/baseResults/spv.subgroupClustered.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupClustered.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 737
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out
index 453d6fc..263f48d 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupExtendedTypesArithmetic.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 3665
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out
index 4e1b2dc..9f6a8c0 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupExtendedTypesBallot.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 441
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out
index b0b94b5..af3385e 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupExtendedTypesClustered.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 1273
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out
index 2f5a570..9de4b98 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupExtendedTypesPartitioned.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 1558
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out
index 7d37a41..ebd6132 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupExtendedTypesQuad.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 806
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out
index d647ded..f241389 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupExtendedTypesShuffle.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 497
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out
index ef5def5..06150b0 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupExtendedTypesShuffleRelative.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 497
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out b/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out
index a32c25d..63cc844 100644
--- a/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out
+++ b/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupExtendedTypesVote.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 277
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupPartitioned.comp.out b/Test/baseResults/spv.subgroupPartitioned.comp.out
index 742e5bc..e16e309 100644
--- a/Test/baseResults/spv.subgroupPartitioned.comp.out
+++ b/Test/baseResults/spv.subgroupPartitioned.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupPartitioned.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 2506
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupQuad.comp.out b/Test/baseResults/spv.subgroupQuad.comp.out
index 435c490..1c5e963 100644
--- a/Test/baseResults/spv.subgroupQuad.comp.out
+++ b/Test/baseResults/spv.subgroupQuad.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupQuad.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 616
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupShuffle.comp.out b/Test/baseResults/spv.subgroupShuffle.comp.out
index 991c6fa..532b0d2 100644
--- a/Test/baseResults/spv.subgroupShuffle.comp.out
+++ b/Test/baseResults/spv.subgroupShuffle.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupShuffle.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 379
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupShuffleRelative.comp.out b/Test/baseResults/spv.subgroupShuffleRelative.comp.out
index 3aad760..ae5589a 100644
--- a/Test/baseResults/spv.subgroupShuffleRelative.comp.out
+++ b/Test/baseResults/spv.subgroupShuffleRelative.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupShuffleRelative.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 379
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subgroupVote.comp.out b/Test/baseResults/spv.subgroupVote.comp.out
index 4fdbb0b..6f6f8cf 100644
--- a/Test/baseResults/spv.subgroupVote.comp.out
+++ b/Test/baseResults/spv.subgroupVote.comp.out
@@ -1,6 +1,6 @@
 spv.subgroupVote.comp
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 216
 
                               Capability Shader
diff --git a/Test/baseResults/spv.subpass.frag.out b/Test/baseResults/spv.subpass.frag.out
index 706624d..4bc556a 100644
--- a/Test/baseResults/spv.subpass.frag.out
+++ b/Test/baseResults/spv.subpass.frag.out
@@ -1,6 +1,6 @@
 spv.subpass.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 67
 
                               Capability Shader
diff --git a/Test/baseResults/spv.switch.frag.out b/Test/baseResults/spv.switch.frag.out
index 47cc5d4..729257c 100644
--- a/Test/baseResults/spv.switch.frag.out
+++ b/Test/baseResults/spv.switch.frag.out
@@ -4,7 +4,7 @@
 WARNING: 0:139: 'switch' : last case/default label not followed by statements 
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 269
 
                               Capability Shader
diff --git a/Test/baseResults/spv.swizzle.frag.out b/Test/baseResults/spv.swizzle.frag.out
index 2a132d5..9b31a26 100644
--- a/Test/baseResults/spv.swizzle.frag.out
+++ b/Test/baseResults/spv.swizzle.frag.out
@@ -1,6 +1,6 @@
 spv.swizzle.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 108
 
                               Capability Shader
diff --git a/Test/baseResults/spv.swizzleInversion.frag.out b/Test/baseResults/spv.swizzleInversion.frag.out
index 0aee7ae..7964360 100644
--- a/Test/baseResults/spv.swizzleInversion.frag.out
+++ b/Test/baseResults/spv.swizzleInversion.frag.out
@@ -1,6 +1,6 @@
 spv.swizzleInversion.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 46
 
                               Capability Shader
diff --git a/Test/baseResults/spv.test.frag.out b/Test/baseResults/spv.test.frag.out
index 02e4f66..db77cbb 100644
--- a/Test/baseResults/spv.test.frag.out
+++ b/Test/baseResults/spv.test.frag.out
@@ -1,6 +1,6 @@
 spv.test.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 55
 
                               Capability Shader
diff --git a/Test/baseResults/spv.test.vert.out b/Test/baseResults/spv.test.vert.out
index 3303c88..3b06c66 100644
--- a/Test/baseResults/spv.test.vert.out
+++ b/Test/baseResults/spv.test.vert.out
@@ -2,7 +2,7 @@
 WARNING: 0:5: attribute deprecated in version 130; may be removed in future release
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 24
 
                               Capability Shader
diff --git a/Test/baseResults/spv.texture.frag.out b/Test/baseResults/spv.texture.frag.out
index d518ad7..3ea7338 100644
--- a/Test/baseResults/spv.texture.frag.out
+++ b/Test/baseResults/spv.texture.frag.out
@@ -4,7 +4,7 @@
 WARNING: 0:12: varying deprecated in version 130; may be removed in future release
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 305
 
                               Capability Shader
diff --git a/Test/baseResults/spv.texture.sampler.transform.frag.out b/Test/baseResults/spv.texture.sampler.transform.frag.out
index 612f2a9..f2306e7 100644
--- a/Test/baseResults/spv.texture.sampler.transform.frag.out
+++ b/Test/baseResults/spv.texture.sampler.transform.frag.out
@@ -1,6 +1,6 @@
 spv.texture.sampler.transform.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 20
 
                               Capability Shader
diff --git a/Test/baseResults/spv.texture.vert.out b/Test/baseResults/spv.texture.vert.out
index f3f979c..3f9336b 100644
--- a/Test/baseResults/spv.texture.vert.out
+++ b/Test/baseResults/spv.texture.vert.out
@@ -1,6 +1,6 @@
 spv.texture.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 150
 
                               Capability Shader
diff --git a/Test/baseResults/spv.textureBuffer.vert.out b/Test/baseResults/spv.textureBuffer.vert.out
index 252a9c8..4631290 100644
--- a/Test/baseResults/spv.textureBuffer.vert.out
+++ b/Test/baseResults/spv.textureBuffer.vert.out
@@ -1,6 +1,6 @@
 spv.textureBuffer.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 42
 
                               Capability Shader
diff --git a/Test/baseResults/spv.textureGatherBiasLod.frag.out b/Test/baseResults/spv.textureGatherBiasLod.frag.out
index cd18688..aada70d 100644
--- a/Test/baseResults/spv.textureGatherBiasLod.frag.out
+++ b/Test/baseResults/spv.textureGatherBiasLod.frag.out
@@ -1,7 +1,7 @@
 spv.textureGatherBiasLod.frag
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 298
 
                               Capability Shader
diff --git a/Test/baseResults/spv.types.frag.out b/Test/baseResults/spv.types.frag.out
index e6fd3e0..3f7fd12 100644
--- a/Test/baseResults/spv.types.frag.out
+++ b/Test/baseResults/spv.types.frag.out
@@ -1,6 +1,6 @@
 spv.types.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 260
 
                               Capability Shader
diff --git a/Test/baseResults/spv.uint.frag.out b/Test/baseResults/spv.uint.frag.out
index e6fe5e4..612b323 100644
--- a/Test/baseResults/spv.uint.frag.out
+++ b/Test/baseResults/spv.uint.frag.out
@@ -1,6 +1,6 @@
 spv.uint.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 213
 
                               Capability Shader
diff --git a/Test/baseResults/spv.uniformArray.frag.out b/Test/baseResults/spv.uniformArray.frag.out
index 0f9883e..339d1de 100644
--- a/Test/baseResults/spv.uniformArray.frag.out
+++ b/Test/baseResults/spv.uniformArray.frag.out
@@ -1,6 +1,6 @@
 spv.uniformArray.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 53
 
                               Capability Shader
diff --git a/Test/baseResults/spv.unit1.frag.out b/Test/baseResults/spv.unit1.frag.out
index d64d437..b2ec724 100644
--- a/Test/baseResults/spv.unit1.frag.out
+++ b/Test/baseResults/spv.unit1.frag.out
@@ -193,7 +193,7 @@
 0:?     'h3' ( global highp float)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 69
 
                               Capability Shader
diff --git a/Test/baseResults/spv.variableArrayIndex.frag.out b/Test/baseResults/spv.variableArrayIndex.frag.out
index 87d934e..cc6d96b 100644
--- a/Test/baseResults/spv.variableArrayIndex.frag.out
+++ b/Test/baseResults/spv.variableArrayIndex.frag.out
@@ -1,6 +1,6 @@
 spv.variableArrayIndex.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 93
 
                               Capability Shader
diff --git a/Test/baseResults/spv.varyingArray.frag.out b/Test/baseResults/spv.varyingArray.frag.out
index 2628f82..d5a59ae 100644
--- a/Test/baseResults/spv.varyingArray.frag.out
+++ b/Test/baseResults/spv.varyingArray.frag.out
@@ -1,6 +1,6 @@
 spv.varyingArray.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 61
 
                               Capability Shader
diff --git a/Test/baseResults/spv.varyingArrayIndirect.frag.out b/Test/baseResults/spv.varyingArrayIndirect.frag.out
index 60e9857..799def9 100644
--- a/Test/baseResults/spv.varyingArrayIndirect.frag.out
+++ b/Test/baseResults/spv.varyingArrayIndirect.frag.out
@@ -1,6 +1,6 @@
 spv.varyingArrayIndirect.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 70
 
                               Capability Shader
diff --git a/Test/baseResults/spv.vecMatConstruct.frag.out b/Test/baseResults/spv.vecMatConstruct.frag.out
index 57ecd67..004b2bc 100644
--- a/Test/baseResults/spv.vecMatConstruct.frag.out
+++ b/Test/baseResults/spv.vecMatConstruct.frag.out
@@ -1,6 +1,6 @@
 spv.vecMatConstruct.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 62
 
                               Capability Shader
diff --git a/Test/baseResults/spv.viewportArray2.tesc.out b/Test/baseResults/spv.viewportArray2.tesc.out
index a4016d4..78ee00d 100644
--- a/Test/baseResults/spv.viewportArray2.tesc.out
+++ b/Test/baseResults/spv.viewportArray2.tesc.out
@@ -1,7 +1,7 @@
 spv.viewportArray2.tesc
 Validation failed
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 25
 
                               Capability Geometry
diff --git a/Test/baseResults/spv.viewportArray2.vert.out b/Test/baseResults/spv.viewportArray2.vert.out
index df116cf..6d419a6 100644
--- a/Test/baseResults/spv.viewportArray2.vert.out
+++ b/Test/baseResults/spv.viewportArray2.vert.out
@@ -1,6 +1,6 @@
 spv.viewportArray2.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 19
 
                               Capability Shader
diff --git a/Test/baseResults/spv.voidFunction.frag.out b/Test/baseResults/spv.voidFunction.frag.out
index fbaee87..804b32c 100644
--- a/Test/baseResults/spv.voidFunction.frag.out
+++ b/Test/baseResults/spv.voidFunction.frag.out
@@ -1,6 +1,6 @@
 spv.voidFunction.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 43
 
                               Capability Shader
diff --git a/Test/baseResults/spv.volatileAtomic.comp.out b/Test/baseResults/spv.volatileAtomic.comp.out
index aa2d211..8326374 100644
--- a/Test/baseResults/spv.volatileAtomic.comp.out
+++ b/Test/baseResults/spv.volatileAtomic.comp.out
@@ -1,6 +1,6 @@
 spv.volatileAtomic.comp
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 18
 
                               Capability Shader
diff --git a/Test/baseResults/spv.vulkan110.int16.frag.out b/Test/baseResults/spv.vulkan110.int16.frag.out
index 11f1cd3..b94593c 100644
--- a/Test/baseResults/spv.vulkan110.int16.frag.out
+++ b/Test/baseResults/spv.vulkan110.int16.frag.out
@@ -1,6 +1,6 @@
 spv.vulkan110.int16.frag
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 523
 
                               Capability Shader
diff --git a/Test/baseResults/spv.vulkan110.storageBuffer.vert.out b/Test/baseResults/spv.vulkan110.storageBuffer.vert.out
index a019471..7592cf7 100644
--- a/Test/baseResults/spv.vulkan110.storageBuffer.vert.out
+++ b/Test/baseResults/spv.vulkan110.storageBuffer.vert.out
@@ -1,6 +1,6 @@
 spv.vulkan110.storageBuffer.vert
 // Module Version 10300
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 31
 
                               Capability Shader
diff --git a/Test/baseResults/spv.while-continue-break.vert.out b/Test/baseResults/spv.while-continue-break.vert.out
index d49bca0..132f503 100644
--- a/Test/baseResults/spv.while-continue-break.vert.out
+++ b/Test/baseResults/spv.while-continue-break.vert.out
@@ -1,6 +1,6 @@
 spv.while-continue-break.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 41
 
                               Capability Shader
diff --git a/Test/baseResults/spv.while-simple.vert.out b/Test/baseResults/spv.while-simple.vert.out
index b507da3..ea9a980 100644
--- a/Test/baseResults/spv.while-simple.vert.out
+++ b/Test/baseResults/spv.while-simple.vert.out
@@ -1,6 +1,6 @@
 spv.while-simple.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 22
 
                               Capability Shader
diff --git a/Test/baseResults/spv.whileLoop.frag.out b/Test/baseResults/spv.whileLoop.frag.out
index e294972..67d44f4 100644
--- a/Test/baseResults/spv.whileLoop.frag.out
+++ b/Test/baseResults/spv.whileLoop.frag.out
@@ -1,6 +1,6 @@
 spv.whileLoop.frag
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 35
 
                               Capability Shader
diff --git a/Test/baseResults/spv.xfb.vert.out b/Test/baseResults/spv.xfb.vert.out
index 3cd93d5..7eb38b3 100644
--- a/Test/baseResults/spv.xfb.vert.out
+++ b/Test/baseResults/spv.xfb.vert.out
@@ -1,6 +1,6 @@
 spv.xfb.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 16
 
                               Capability Shader
diff --git a/Test/baseResults/spv.xfb2.vert.out b/Test/baseResults/spv.xfb2.vert.out
index a8551a1..0f593da 100644
--- a/Test/baseResults/spv.xfb2.vert.out
+++ b/Test/baseResults/spv.xfb2.vert.out
@@ -1,6 +1,6 @@
 spv.xfb2.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 35
 
                               Capability Shader
diff --git a/Test/baseResults/spv.xfb3.vert.out b/Test/baseResults/spv.xfb3.vert.out
index 0218847..77894b4 100644
--- a/Test/baseResults/spv.xfb3.vert.out
+++ b/Test/baseResults/spv.xfb3.vert.out
@@ -1,6 +1,6 @@
 spv.xfb3.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 35
 
                               Capability Shader
diff --git a/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out b/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out
index 066aa3a..52ce965 100644
--- a/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out
+++ b/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out
@@ -1,6 +1,6 @@
 spv.xfbOffsetOnBlockMembersAssignment.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 33
 
                               Capability Shader
diff --git a/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out b/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out
index 668d24a..13be843 100644
--- a/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out
+++ b/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out
@@ -1,6 +1,6 @@
 spv.xfbOffsetOnStructMembersAssignment.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 40
 
                               Capability Shader
diff --git a/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out b/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out
index ebc4962..7159f4a 100644
--- a/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out
+++ b/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out
@@ -1,6 +1,6 @@
 spv.xfbOverlapOffsetCheckWithBlockAndMember.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 39
 
                               Capability Shader
diff --git a/Test/baseResults/spv.xfbStrideJustOnce.vert.out b/Test/baseResults/spv.xfbStrideJustOnce.vert.out
index 9b459b5..270d17a 100644
--- a/Test/baseResults/spv.xfbStrideJustOnce.vert.out
+++ b/Test/baseResults/spv.xfbStrideJustOnce.vert.out
@@ -1,6 +1,6 @@
 spv.xfbStrideJustOnce.vert
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 33
 
                               Capability Shader
diff --git a/Test/baseResults/vulkan.ast.vert.out b/Test/baseResults/vulkan.ast.vert.out
index 72a4570..2bf2065 100644
--- a/Test/baseResults/vulkan.ast.vert.out
+++ b/Test/baseResults/vulkan.ast.vert.out
@@ -258,7 +258,7 @@
 0:?       2 (const int)
 
 // Module Version 10000
-// Generated by (magic number): 80007
+// Generated by (magic number): 80008
 // Id's are bound by 50
 
                               Capability Shader
diff --git a/Test/hlsl.doLoop.frag b/Test/hlsl.doLoop.frag
index 0318dc8..8f4bfdc 100644
--- a/Test/hlsl.doLoop.frag
+++ b/Test/hlsl.doLoop.frag
@@ -1,9 +1,29 @@
+void f0() {
+    [unroll] do {} while (false);
+}
+
+void f1() {
+    [unroll] do {;} while (false);
+}
+
+float f2(float input) {
+    do { return (float4)input; } while (input > 2.0);
+}
+
+void f3(float input) {
+    do ++input; while (input < 10.0);
+}
+
+void f4(float input) {
+    do while (++input < 10.0); while (++input < 10.0); // nest while inside do-while
+}
+
 float4 PixelShaderFunction(float input) : COLOR0
 {
-    [unroll] do {} while (false);
-    [unroll] do {;} while (false);
-    do { return (float4)input; } while (input > 2.0);
-    do ++input; while (input < 10.0);
-    do while (++input < 10.0); while (++input < 10.0); // nest while inside do-while
+    f0();
+    f1();
+    f2(input);
+    f3(input);
+    f4(input);
     return (float4)input;
 }
diff --git a/Test/hlsl.forLoop.frag b/Test/hlsl.forLoop.frag
index 9cf60ee..c0783db 100644
--- a/Test/hlsl.forLoop.frag
+++ b/Test/hlsl.forLoop.frag
@@ -1,17 +1,59 @@
+void f0() {
+    for (;;) ;
+}
+
+void f1(float4 input) {
+    for (++input; ; ) ;
+}
+
+void f2(float4 input) {
+    [unroll] for (; any(input != input); ) {}
+}
+
+float f3(float4 input) {
+    for (; any(input != input); ) { return -input; }
+}
+
+float f4(float4 input) {
+    for (--input; any(input != input); input += 2) { return -input; }
+}
+
+void f5(float4 input) {
+    for (;;) if (input.x > 2.0) break;
+}
+
+void f6(float4 input) {
+    for (;;) if (input.x > 2.0) continue;
+}
+
+void f99() {
+    for (int first = 0, second = 1; ;) first + second;
+}
+
+void f100(float ii) {
+    for (--ii, --ii, --ii;;) ii;
+}
+
 float4 PixelShaderFunction(float4 input) : COLOR0
 {
-    for (;;) ;
-    for (++input; ; ) ;
-    [unroll] for (; any(input != input); ) {}
-    for (; any(input != input); ) { return -input; }
-    for (--input; any(input != input); input += 2) { return -input; }
-    for (;;) if (input.x > 2.0) break;
-    for (;;) if (input.x > 2.0) continue;
+    f0();
+    f1(input);
+    f2(input);
+    f3(input);
+    f4(input);
+    f5(input);
+    f6(input);
+
     float ii;
     for (int ii = -1; ii < 3; ++ii) if (ii == 2) continue;
     --ii;
-    for (int first = 0, second = 1; ;) first + second;
+
+    f99();
+
     for ( int i = 0, count = int(ii); i < count; i++ );
     for (float first = 0, second[2], third; first < second[0]; ++second[1]) first + second[1] + third;
-    for (--ii, --ii, --ii;;) ii;
+
+    f100(ii);
+
+    return input;
 }
diff --git a/Test/hlsl.if.frag b/Test/hlsl.if.frag
index b62eda1..a2e47f6 100644
--- a/Test/hlsl.if.frag
+++ b/Test/hlsl.if.frag
@@ -1,12 +1,24 @@
+float4 f0(float4 input) {
+    if (all(input == input))
+        return input;
+    else
+        return -input;
+}
+
+float4 f1(float4 input) {
+    if (all(input == input)) {
+        return input;
+    } else {
+        return -input;
+    }
+}
+
 float4 PixelShaderFunction(float4 input) : COLOR0
 {
     if (all(input == input))
         return input;
 
-    if (all(input == input))
-        return input;
-    else
-        return -input;
+    f0(input);
 
     if (all(input == input))
         ;
@@ -20,11 +32,7 @@
         return input;
     }
 
-    if (all(input == input)) {
-        return input;
-    } else {
-        return -input;
-    }
+    f1(input);
 
 	int ii;
 	if (float ii = input.z)
diff --git a/Test/spv.controlFlowAttributes.frag b/Test/spv.controlFlowAttributes.frag
index 6d90c0d..cedd602 100644
--- a/Test/spv.controlFlowAttributes.frag
+++ b/Test/spv.controlFlowAttributes.frag
@@ -4,11 +4,18 @@
 
 bool cond;
 
+void f0() {
+        [[loop]]                   for (;;) { }
+}
+
+void f1() {
+        [[dont_unroll]]            while(true) {  }
+}
+
 void main()
 {
         [[unroll]]                 for (int i = 0; i < 8; ++i) { }
-        [[loop]]                   for (;;) { }
-        [[dont_unroll]]            while(true) {  }
+	f0();
         [[dependency_infinite]]    do {  } while(true);
         [[dependency_length(1+3)]] for (int i = 0; i < 8; ++i) { }
         [[flatten]]                if (cond) { } else { }
diff --git a/Test/spv.dead-after-continue.vert b/Test/spv.dead-after-continue.vert
new file mode 100644
index 0000000..86e8eea
--- /dev/null
+++ b/Test/spv.dead-after-continue.vert
@@ -0,0 +1,14 @@
+#version 450
+
+layout(location =0 ) in int c;
+layout(location =0 ) out int o;
+
+void main() {
+  int i;
+  for (i=0; i < 5; i++) {
+    o = 1;
+    continue;
+    o = 2;
+  }
+  o = 3;
+}
diff --git a/Test/spv.dead-after-discard.frag b/Test/spv.dead-after-discard.frag
new file mode 100644
index 0000000..769592b
--- /dev/null
+++ b/Test/spv.dead-after-discard.frag
@@ -0,0 +1,10 @@
+#version 450
+
+layout(location =0 ) in float c;
+layout(location =0 ) out int o;
+
+void main() {
+  o = 1;
+  discard;
+  o = 3;
+}
diff --git a/Test/spv.dead-after-loop-break.vert b/Test/spv.dead-after-loop-break.vert
new file mode 100644
index 0000000..5498497
--- /dev/null
+++ b/Test/spv.dead-after-loop-break.vert
@@ -0,0 +1,19 @@
+#version 450
+
+layout(location =0 ) in int c;
+layout(location =0 ) out int o;
+
+void main() {
+  int i;
+  o = 1;
+  for (i=0; i < 5; i++) {
+    o = 2;
+    if (i==c) {
+      o = 3;
+      break;
+      o = 4;
+    }
+    o = 5;
+  }
+  o = 6;
+}
diff --git a/Test/spv.dead-after-return.vert b/Test/spv.dead-after-return.vert
new file mode 100644
index 0000000..7172696
--- /dev/null
+++ b/Test/spv.dead-after-return.vert
@@ -0,0 +1,10 @@
+#version 450
+
+layout(location =0 ) in int c;
+layout(location =0 ) out int o;
+
+void main() {
+  o = 1;
+  return;
+  o = 3;
+}
diff --git a/Test/spv.dead-after-switch-break.vert b/Test/spv.dead-after-switch-break.vert
new file mode 100644
index 0000000..b1483e8
--- /dev/null
+++ b/Test/spv.dead-after-switch-break.vert
@@ -0,0 +1,15 @@
+#version 450
+
+layout(location =0 ) in int c;
+layout(location =0 ) out int o;
+
+void main() {
+  int i;
+  switch(c) {
+    case 0: o=1;
+      break;
+      o=2;
+   default: break;
+  }
+  o = 3;
+}
diff --git a/Test/spv.dead-complex-continue-after-return.vert b/Test/spv.dead-complex-continue-after-return.vert
new file mode 100644
index 0000000..85932a3
--- /dev/null
+++ b/Test/spv.dead-complex-continue-after-return.vert
@@ -0,0 +1,19 @@
+#version 450
+
+layout(location =0 ) in int c;
+layout(location =0 ) out int o;
+
+void main() {
+  int i = 0;
+  o = 1;
+  // This has non-trivial continue target.
+  for (i=0; i < 5; ++i, o=99) {
+    o = 2;
+    return;
+    o = 3;
+  }
+  // This is considered reachable since Glslang codegen will
+  // create a conditional branch in the header, and one arm
+  // of that branch reaches this merge block.
+  o = 4;
+}
diff --git a/Test/spv.dead-complex-merge-after-return.vert b/Test/spv.dead-complex-merge-after-return.vert
new file mode 100644
index 0000000..2fff1a2
--- /dev/null
+++ b/Test/spv.dead-complex-merge-after-return.vert
@@ -0,0 +1,23 @@
+#version 450
+
+layout(location =0 ) in int c;
+layout(location =0 ) out int o;
+
+void main() {
+  int i = 0;
+  o = 1;
+  do {
+    o = 2;
+    return;
+    o = 3;
+  } while(i++ < 5);
+
+  // All this is a dead merge block.
+  o = 4;
+  if (c==4) {
+     o = 100;
+  } else {
+     o = 200;
+  }
+  o = 300;
+}
diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h
index 06fccdf..5933bce 100644
--- a/glslang/Include/revision.h
+++ b/glslang/Include/revision.h
@@ -1,3 +1,3 @@
 // This header is generated by the make-revision script.
 
-#define GLSLANG_PATCH_LEVEL 3381
+#define GLSLANG_PATCH_LEVEL 3500
diff --git a/glslang/MachineIndependent/reflection.cpp b/glslang/MachineIndependent/reflection.cpp
index 9f1089d..b093671 100644
--- a/glslang/MachineIndependent/reflection.cpp
+++ b/glslang/MachineIndependent/reflection.cpp
@@ -137,7 +137,7 @@
                 if (it == ioMapper.end()) {
                     // seperate pipe i/o params from uniforms and blocks
                     // in is only for input in first stage as out is only for last stage. check traverse in call stack.
-                    ioMapper[name.c_str()] = ioItems.size();
+                    ioMapper[name.c_str()] = static_cast<int>(ioItems.size());
                     ioItems.push_back(
                         TObjectReflection(name.c_str(), type, 0, mapToGlType(type), mapToGlArraySize(type), 0));
                     EShLanguageMask& stages = ioItems.back().stages;
diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
index 9620341..ce5960c 100644
--- a/gtests/Spv.FromFile.cpp
+++ b/gtests/Spv.FromFile.cpp
@@ -63,6 +63,7 @@
 }
 
 using CompileVulkanToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
+using CompileVulkanToSpirvDeadCodeElimTest = GlslangTest<::testing::TestWithParam<std::string>>;
 using CompileVulkanToDebugSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
 using CompileVulkan1_1ToSpirvTest = GlslangTest<::testing::TestWithParam<std::string>>;
 using CompileToSpirv14Test = GlslangTest<::testing::TestWithParam<std::string>>;
@@ -85,6 +86,13 @@
                             Target::Spv);
 }
 
+TEST_P(CompileVulkanToSpirvDeadCodeElimTest, FromFile)
+{
+    loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(),
+                            Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0,
+                            Target::Spv);
+}
+
 // Compiling GLSL to SPIR-V with debug info under Vulkan semantics. Expected
 // to successfully generate SPIR-V.
 TEST_P(CompileVulkanToDebugSpirvTest, FromFile)
@@ -417,6 +425,23 @@
     FileNameAsCustomTestSuffix
 );
 
+// Cases with deliberately unreachable code.
+// By default the compiler will aggressively eliminate
+// unreachable merges and continues.
+INSTANTIATE_TEST_CASE_P(
+    GlslWithDeadCode, CompileVulkanToSpirvDeadCodeElimTest,
+    ::testing::ValuesIn(std::vector<std::string>({
+        "spv.dead-after-continue.vert",
+        "spv.dead-after-discard.frag",
+        "spv.dead-after-return.vert",
+        "spv.dead-after-loop-break.vert",
+        "spv.dead-after-switch-break.vert",
+        "spv.dead-complex-continue-after-return.vert",
+        "spv.dead-complex-merge-after-return.vert",
+    })),
+    FileNameAsCustomTestSuffix
+);
+
 // clang-format off
 INSTANTIATE_TEST_CASE_P(
     Glsl, CompileVulkanToDebugSpirvTest,
diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h
index 61a8f23..8d2ebd9 100755
--- a/gtests/TestFixture.h
+++ b/gtests/TestFixture.h
@@ -113,7 +113,7 @@
           forceVersionProfile(false),
           isForwardCompatible(false) {
         // Perform validation by default.
-        validatorOptions.validate = true;
+        spirvOptions.validate = true;
     }
 
     // Tries to load the contents from the file at the given |path|. On success,
@@ -693,14 +693,14 @@
                                     expectedOutputFname, result.spirvWarningsErrors);
     }
 
-    glslang::SpvOptions& options() { return validatorOptions; }
+    glslang::SpvOptions& options() { return spirvOptions; }
 
 private:
     const int defaultVersion;
     const EProfile defaultProfile;
     const bool forceVersionProfile;
     const bool isForwardCompatible;
-    glslang::SpvOptions validatorOptions;
+    glslang::SpvOptions spirvOptions;
 };
 
 }  // namespace glslangtest