Merge remote-tracking branch 'aosp/upstream-master' into update-shaderc

Includes the following:
8ce6e2b Fix non-Windows build error.
f97f2ce HLSL: Support the constructor idiom "(struct type)0".
98ad485 HLSL: Support {...} initializer lists that are too short.
1c98904 Fix crash by returning early from finalCheck() if there is no tree to process.
5307eb2 Non-functional: Change a bunch of 0 to nullptr.
509c421 Non-functional: Fix typos.
e50dc53 Warn on HLSL not finding entry point. Issue #588.
517fe7a Non-functional: Rename some entry-point variables to entryPoint, not main.
fca8262 Always correctly terminate main. Issue #588, PR #600.
1c573fb Merge pull request #601 from BearishSun/master
e122f05 Merge pull request #599 from steve-lunarg/gs
6e848da Merge pull request #596 from steve-lunarg/hlsl-intrinsic-parsing
d347794 Merge pull request #597 from steve-lunarg/sample-keyword-fix
32c294e Adding a way to retrieve vertex attribute TType using TProgram reflection API (required in order to query location attributes).
f49cdf4 WIP: HLSL: Add GS support
75fd223 HLSL: allow "sample" as a valid identifier.
0842dbb HLSL: use HLSL parser to parse HLSL intrinsic prototypes, enable int/bool mats
fabe7d6 Test results: Fix incorrect test result caused by parallel development. Issue #594.
0bf06d3 Merge pull request #576 from steve-lunarg/uav-registers
20b030a Merge pull request #592 from ChrisGautier/barrier-wg
c3f1cdf GLSL: The execution scope for barriers should be Workgroup.
84d11e1 Merge pull request #583 from null77/fix-unref-warning
610ff83 Merge pull request #589 from steve-lunarg/vec1-promotion-fix
d9cb832 HLSL: allow promotion from 1-vector types to scalars, e.g, float<-float1
e69e196 Merge pull request #584 from steve-lunarg/attribute-expressions
a22f7db HLSL: Allow expressions in attributes
57cb69a Fix unrefenced variable warning with AMD_EXTENSIONS disabled.
d3f1122 Whole stack: Fix stale types in the AST linker object nodes, fixing #557.
9088be4 Add UAV (image) binding offset and HLSL register support
e5e58cf Merge pull request #575 from steve-lunarg/iomap-warning-fix
5b2d667 Fix build warnings in remapper, re-indent for glslang standard
89df3c2 Merge pull request #572 from steve-lunarg/numthreads
1061acc Merge pull request #562 from TiemoJung/io_map_control_publish
909b8af Merge pull request #570 from steve-lunarg/mintypes
cf35b17 Merge pull request #574 from dneto0/android-has-no-std-stoi
e301f67 Use std::atoi instead of std::stoi
3226b08 HLSL: Add min*{float,int,uint} types
1868b14 HLSL: implement numthreads for compute shaders
e19e68d Merge pull request #571 from baldurk/explicit-lambda-returns
ca73570 Add explicit lambda return types, for compilers without C++14 support
c2016a5 New uniform mapping handling
9507885 Merge pull request #560 from jeremy-lunarg/pragmas
5163446 Merge pull request #568 from steve-lunarg/logicalop-fix
aba4440 Merge pull request #567 from steve-lunarg/compare-fix
850ac06 Merge pull request #561 from jeremy-lunarg/unused
27939ca HLSL: allow component-wise operations for logical || and &&.
85244d7 HLSL: Enable component-wise vector comparisons from operators
0d628c1 Merge pull request #565 from mre4ce/master
4e3dd20 WIP: avoid strtok
c8e60e2 WIP: apply unused variable
d130075 update
2f4c832 Merge remote-tracking branch 'upstream/master'
8e1e717 fixed MSVC 2015 compile warnings
3fc1543 Merge pull request #559 from steve-lunarg/samplecmp-fix
04e2dc1 Merge pull request #558 from steve-lunarg/image-atomics
921d315 Merge pull request #555 from steve-lunarg/promotion-fixes
720e89b Merge pull request #556 from dneto0/guard-amd-enums
6b59668 HLSL: fix defect in EOpMethodSampleCmp* texture decomposition
6cb1637 Move promote methods to TIntermediate class
2232236 HLSL: phase 4 of rwtexture support: add image atomics
bb5c02f Add missing guard to code that uses AMD extensions
e5921f1 HLSL: Fix unary and binary operator type conversion issues
e07c703 Merge remote-tracking branch 'upstream/master'
5a00501 Merge remote-tracking branch 'upstream/master'
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'

Test: checkbuild.py on Linux x86; unit tests on Windows
Change-Id: I9f2774801b1feeaf26ad9577507570f61a2ecff5
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 49bb0a1..7abd04d 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -99,7 +99,7 @@
 class TGlslangToSpvTraverser : public glslang::TIntermTraverser {
 public:
     TGlslangToSpvTraverser(const glslang::TIntermediate*, spv::SpvBuildLogger* logger);
-    virtual ~TGlslangToSpvTraverser();
+    virtual ~TGlslangToSpvTraverser() { }
 
     bool visitAggregate(glslang::TVisit, glslang::TIntermAggregate*);
     bool visitBinary(glslang::TVisit, glslang::TIntermBinary*);
@@ -111,6 +111,7 @@
     bool visitLoop(glslang::TVisit, glslang::TIntermLoop*);
     bool visitBranch(glslang::TVisit visit, glslang::TIntermBranch*);
 
+    void finishSpv();
     void dumpSpv(std::vector<unsigned int>& out);
 
 protected:
@@ -181,8 +182,8 @@
 
     // There is a 1:1 mapping between a spv builder and a module; this is thread safe
     spv::Builder builder;
-    bool inMain;
-    bool mainTerminated;
+    bool inEntryPoint;
+    bool entryPointTerminated;
     bool linkageOnly;                  // true when visiting the set of objects in the AST present only for establishing interface, whether or not they were statically used
     std::set<spv::Id> iOSet;           // all input/output variables from either static use or declaration of interface
     const glslang::TIntermediate* glslangIntermediate;
@@ -768,7 +769,7 @@
     : TIntermTraverser(true, false, true), shaderEntry(nullptr), currentFunction(nullptr),
       sequenceDepth(0), logger(buildLogger),
       builder((glslang::GetKhronosToolId() << 16) | GeneratorVersion, logger),
-      inMain(false), mainTerminated(false), linkageOnly(false),
+      inEntryPoint(false), entryPointTerminated(false), linkageOnly(false),
       glslangIntermediate(glslangIntermediate)
 {
     spv::ExecutionModel executionModel = TranslateExecutionModel(glslangIntermediate->getStage());
@@ -896,27 +897,27 @@
     default:
         break;
     }
-
 }
 
-// Finish everything and dump
-void TGlslangToSpvTraverser::dumpSpv(std::vector<unsigned int>& out)
+// Finish creating SPV, after the traversal is complete.
+void TGlslangToSpvTraverser::finishSpv()
 {
+    if (! entryPointTerminated) {
+        builder.setBuildPoint(shaderEntry->getLastBlock());
+        builder.leaveFunction();
+    }
+
     // finish off the entry-point SPV instruction by adding the Input/Output <id>
     for (auto it = iOSet.cbegin(); it != iOSet.cend(); ++it)
         entryPoint->addIdOperand(*it);
 
     builder.eliminateDeadDecorations();
-    builder.dump(out);
 }
 
-TGlslangToSpvTraverser::~TGlslangToSpvTraverser()
+// Write the SPV into 'out'.
+void TGlslangToSpvTraverser::dumpSpv(std::vector<unsigned int>& out)
 {
-    if (! mainTerminated) {
-        spv::Block* lastMainBlock = shaderEntry->getLastBlock();
-        builder.setBuildPoint(lastMainBlock);
-        builder.leaveFunction();
-    }
+    builder.dump(out);
 }
 
 //
@@ -1382,17 +1383,17 @@
     case glslang::EOpFunction:
         if (visit == glslang::EvPreVisit) {
             if (isShaderEntryPoint(node)) {
-                inMain = true;
+                inEntryPoint = true;
                 builder.setBuildPoint(shaderEntry->getLastBlock());
                 currentFunction = shaderEntry;
             } else {
                 handleFunctionEntry(node);
             }
         } else {
-            if (inMain)
-                mainTerminated = true;
+            if (inEntryPoint)
+                entryPointTerminated = true;
             builder.leaveFunction();
-            inMain = false;
+            inEntryPoint = false;
         }
 
         return true;
@@ -4118,11 +4119,9 @@
 // Create group invocation operations.
 spv::Id TGlslangToSpvTraverser::createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector<spv::Id>& operands, glslang::TBasicType typeProxy)
 {
-    bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64;
 #ifdef AMD_EXTENSIONS
+    bool isUnsigned = typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64;
     bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble || typeProxy == glslang::EbtFloat16;
-#else
-    bool isFloat = typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble;
 #endif
 
     spv::Op opCode = spv::OpNop;
@@ -4133,10 +4132,12 @@
         builder.addCapability(spv::CapabilitySubgroupBallotKHR);
     } else {
         builder.addCapability(spv::CapabilityGroups);
+#ifdef AMD_EXTENSIONS
         if (op == glslang::EOpMinInvocationsNonUniform ||
             op == glslang::EOpMaxInvocationsNonUniform ||
             op == glslang::EOpAddInvocationsNonUniform)
             builder.addExtension(spv::E_SPV_AMD_shader_ballot);
+#endif
 
         spvGroupOperands.push_back(builder.makeUintConstant(spv::ScopeSubgroup));
 #ifdef AMD_EXTENSIONS
@@ -4597,7 +4598,7 @@
         builder.createNoResultOp(spv::OpEndPrimitive);
         return 0;
     case glslang::EOpBarrier:
-        builder.createControlBarrier(spv::ScopeDevice, spv::ScopeDevice, spv::MemorySemanticsMaskNone);
+        builder.createControlBarrier(spv::ScopeWorkgroup, spv::ScopeDevice, spv::MemorySemanticsMaskNone);
         return 0;
     case glslang::EOpMemoryBarrier:
         builder.createMemoryBarrier(spv::ScopeDevice, spv::MemorySemanticsAllMemory);
@@ -5120,9 +5121,8 @@
     glslang::GetThreadPoolAllocator().push();
 
     TGlslangToSpvTraverser it(&intermediate, logger);
-
     root->traverse(&it);
-
+    it.finishSpv();
     it.dumpSpv(spirv);
 
     glslang::GetThreadPoolAllocator().pop();
diff --git a/SPIRV/GlslangToSpv.h b/SPIRV/GlslangToSpv.h
index 97b280c..428cfb6 100644
--- a/SPIRV/GlslangToSpv.h
+++ b/SPIRV/GlslangToSpv.h
@@ -32,6 +32,10 @@
 //ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 //POSSIBILITY OF SUCH DAMAGE.
 
+#if _MSC_VER >= 1900
+    #pragma warning(disable : 4464) // relative include path contains '..'
+#endif
+
 #include "../glslang/Include/intermediate.h"
 
 #include <string>
diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp
index 4703edc..04b0f04 100644
--- a/SPIRV/SpvBuilder.cpp
+++ b/SPIRV/SpvBuilder.cpp
@@ -64,7 +64,7 @@
     builderNumber(magicNumber),
     buildPoint(0),
     uniqueId(0),
-    mainFunction(0),
+    entryPointFunction(0),
     generatingOpCodeForSpecConst(false),
     logger(buildLogger)
 {
@@ -967,15 +967,15 @@
 // Comments in header
 Function* Builder::makeEntryPoint(const char* entryPoint)
 {
-    assert(! mainFunction);
+    assert(! entryPointFunction);
 
     Block* entry;
     std::vector<Id> params;
     std::vector<Decoration> precisions;
 
-    mainFunction = makeFunctionEntry(NoPrecision, makeVoidType(), entryPoint, params, precisions, &entry);
+    entryPointFunction = makeFunctionEntry(NoPrecision, makeVoidType(), entryPoint, params, precisions, &entry);
 
-    return mainFunction;
+    return entryPointFunction;
 }
 
 // Comments in header
diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h
index 0e8d9ca..e8524b2 100755
--- a/SPIRV/SpvBuilder.h
+++ b/SPIRV/SpvBuilder.h
@@ -564,7 +564,7 @@
     Module module;
     Block* buildPoint;
     Id uniqueId;
-    Function* mainFunction;
+    Function* entryPointFunction;
     bool generatingOpCodeForSpecConst;
     AccessChain accessChain;
 
diff --git a/StandAlone/ResourceLimits.cpp b/StandAlone/ResourceLimits.cpp
index 8a5e6f3..e22ec80 100644
--- a/StandAlone/ResourceLimits.cpp
+++ b/StandAlone/ResourceLimits.cpp
@@ -35,6 +35,7 @@
 #include <cstdlib>
 #include <cstring>
 #include <sstream>
+#include <cctype>
 
 #include "ResourceLimits.h"
 
@@ -240,208 +241,217 @@
 
 void DecodeResourceLimits(TBuiltInResource* resources, char* config)
 {
-    const char* delims = " \t\n\r";
-#pragma warning(suppress: 4996)
-    const char* token = strtok(config, delims);
-    while (token) {
-#pragma warning(suppress: 4996)
-        const char* valueStr = strtok(0, delims);
-        if (valueStr == 0 || ! (valueStr[0] == '-' || (valueStr[0] >= '0' && valueStr[0] <= '9'))) {
-            printf("Error: '%s' bad .conf file.  Each name must be followed by one number.\n", valueStr ? valueStr : "");
+    static const char* delims = " \t\n\r";
+
+    size_t pos     = 0;
+    std::string configStr(config);
+
+    while ((pos = configStr.find_first_not_of(delims, pos)) != std::string::npos) {
+        const size_t token_s = pos;
+        const size_t token_e = configStr.find_first_of(delims, token_s);
+        const size_t value_s = configStr.find_first_not_of(delims, token_e);
+        const size_t value_e = configStr.find_first_of(delims, value_s);
+        pos = value_e;
+
+        // Faster to use compare(), but prefering readability.
+        const std::string tokenStr = configStr.substr(token_s, token_e-token_s);
+        const std::string valueStr = configStr.substr(value_s, value_e-value_s);
+
+        if (value_s == std::string::npos || ! (valueStr[0] == '-' || isdigit(valueStr[0]))) {
+            printf("Error: '%s' bad .conf file.  Each name must be followed by one number.\n",
+                   valueStr.c_str());
             return;
         }
-        int value = atoi(valueStr);
 
-        if (strcmp(token, "MaxLights") == 0)
+        const int value = std::atoi(valueStr.c_str());
+
+        if (tokenStr == "MaxLights")
             resources->maxLights = value;
-        else if (strcmp(token, "MaxClipPlanes") == 0)
+        else if (tokenStr == "MaxClipPlanes")
             resources->maxClipPlanes = value;
-        else if (strcmp(token, "MaxTextureUnits") == 0)
+        else if (tokenStr == "MaxTextureUnits")
             resources->maxTextureUnits = value;
-        else if (strcmp(token, "MaxTextureCoords") == 0)
+        else if (tokenStr == "MaxTextureCoords")
             resources->maxTextureCoords = value;
-        else if (strcmp(token, "MaxVertexAttribs") == 0)
+        else if (tokenStr == "MaxVertexAttribs")
             resources->maxVertexAttribs = value;
-        else if (strcmp(token, "MaxVertexUniformComponents") == 0)
+        else if (tokenStr == "MaxVertexUniformComponents")
             resources->maxVertexUniformComponents = value;
-        else if (strcmp(token, "MaxVaryingFloats") == 0)
+        else if (tokenStr == "MaxVaryingFloats")
             resources->maxVaryingFloats = value;
-        else if (strcmp(token, "MaxVertexTextureImageUnits") == 0)
+        else if (tokenStr == "MaxVertexTextureImageUnits")
             resources->maxVertexTextureImageUnits = value;
-        else if (strcmp(token, "MaxCombinedTextureImageUnits") == 0)
+        else if (tokenStr == "MaxCombinedTextureImageUnits")
             resources->maxCombinedTextureImageUnits = value;
-        else if (strcmp(token, "MaxTextureImageUnits") == 0)
+        else if (tokenStr == "MaxTextureImageUnits")
             resources->maxTextureImageUnits = value;
-        else if (strcmp(token, "MaxFragmentUniformComponents") == 0)
+        else if (tokenStr == "MaxFragmentUniformComponents")
             resources->maxFragmentUniformComponents = value;
-        else if (strcmp(token, "MaxDrawBuffers") == 0)
+        else if (tokenStr == "MaxDrawBuffers")
             resources->maxDrawBuffers = value;
-        else if (strcmp(token, "MaxVertexUniformVectors") == 0)
+        else if (tokenStr == "MaxVertexUniformVectors")
             resources->maxVertexUniformVectors = value;
-        else if (strcmp(token, "MaxVaryingVectors") == 0)
+        else if (tokenStr == "MaxVaryingVectors")
             resources->maxVaryingVectors = value;
-        else if (strcmp(token, "MaxFragmentUniformVectors") == 0)
+        else if (tokenStr == "MaxFragmentUniformVectors")
             resources->maxFragmentUniformVectors = value;
-        else if (strcmp(token, "MaxVertexOutputVectors") == 0)
+        else if (tokenStr == "MaxVertexOutputVectors")
             resources->maxVertexOutputVectors = value;
-        else if (strcmp(token, "MaxFragmentInputVectors") == 0)
+        else if (tokenStr == "MaxFragmentInputVectors")
             resources->maxFragmentInputVectors = value;
-        else if (strcmp(token, "MinProgramTexelOffset") == 0)
+        else if (tokenStr == "MinProgramTexelOffset")
             resources->minProgramTexelOffset = value;
-        else if (strcmp(token, "MaxProgramTexelOffset") == 0)
+        else if (tokenStr == "MaxProgramTexelOffset")
             resources->maxProgramTexelOffset = value;
-        else if (strcmp(token, "MaxClipDistances") == 0)
+        else if (tokenStr == "MaxClipDistances")
             resources->maxClipDistances = value;
-        else if (strcmp(token, "MaxComputeWorkGroupCountX") == 0)
+        else if (tokenStr == "MaxComputeWorkGroupCountX")
             resources->maxComputeWorkGroupCountX = value;
-        else if (strcmp(token, "MaxComputeWorkGroupCountY") == 0)
+        else if (tokenStr == "MaxComputeWorkGroupCountY")
             resources->maxComputeWorkGroupCountY = value;
-        else if (strcmp(token, "MaxComputeWorkGroupCountZ") == 0)
+        else if (tokenStr == "MaxComputeWorkGroupCountZ")
             resources->maxComputeWorkGroupCountZ = value;
-        else if (strcmp(token, "MaxComputeWorkGroupSizeX") == 0)
+        else if (tokenStr == "MaxComputeWorkGroupSizeX")
             resources->maxComputeWorkGroupSizeX = value;
-        else if (strcmp(token, "MaxComputeWorkGroupSizeY") == 0)
+        else if (tokenStr == "MaxComputeWorkGroupSizeY")
             resources->maxComputeWorkGroupSizeY = value;
-        else if (strcmp(token, "MaxComputeWorkGroupSizeZ") == 0)
+        else if (tokenStr == "MaxComputeWorkGroupSizeZ")
             resources->maxComputeWorkGroupSizeZ = value;
-        else if (strcmp(token, "MaxComputeUniformComponents") == 0)
+        else if (tokenStr == "MaxComputeUniformComponents")
             resources->maxComputeUniformComponents = value;
-        else if (strcmp(token, "MaxComputeTextureImageUnits") == 0)
+        else if (tokenStr == "MaxComputeTextureImageUnits")
             resources->maxComputeTextureImageUnits = value;
-        else if (strcmp(token, "MaxComputeImageUniforms") == 0)
+        else if (tokenStr == "MaxComputeImageUniforms")
             resources->maxComputeImageUniforms = value;
-        else if (strcmp(token, "MaxComputeAtomicCounters") == 0)
+        else if (tokenStr == "MaxComputeAtomicCounters")
             resources->maxComputeAtomicCounters = value;
-        else if (strcmp(token, "MaxComputeAtomicCounterBuffers") == 0)
+        else if (tokenStr == "MaxComputeAtomicCounterBuffers")
             resources->maxComputeAtomicCounterBuffers = value;
-        else if (strcmp(token, "MaxVaryingComponents") == 0)
+        else if (tokenStr == "MaxVaryingComponents")
             resources->maxVaryingComponents = value;
-        else if (strcmp(token, "MaxVertexOutputComponents") == 0)
+        else if (tokenStr == "MaxVertexOutputComponents")
             resources->maxVertexOutputComponents = value;
-        else if (strcmp(token, "MaxGeometryInputComponents") == 0)
+        else if (tokenStr == "MaxGeometryInputComponents")
             resources->maxGeometryInputComponents = value;
-        else if (strcmp(token, "MaxGeometryOutputComponents") == 0)
+        else if (tokenStr == "MaxGeometryOutputComponents")
             resources->maxGeometryOutputComponents = value;
-        else if (strcmp(token, "MaxFragmentInputComponents") == 0)
+        else if (tokenStr == "MaxFragmentInputComponents")
             resources->maxFragmentInputComponents = value;
-        else if (strcmp(token, "MaxImageUnits") == 0)
+        else if (tokenStr == "MaxImageUnits")
             resources->maxImageUnits = value;
-        else if (strcmp(token, "MaxCombinedImageUnitsAndFragmentOutputs") == 0)
+        else if (tokenStr == "MaxCombinedImageUnitsAndFragmentOutputs")
             resources->maxCombinedImageUnitsAndFragmentOutputs = value;
-        else if (strcmp(token, "MaxCombinedShaderOutputResources") == 0)
+        else if (tokenStr == "MaxCombinedShaderOutputResources")
             resources->maxCombinedShaderOutputResources = value;
-        else if (strcmp(token, "MaxImageSamples") == 0)
+        else if (tokenStr == "MaxImageSamples")
             resources->maxImageSamples = value;
-        else if (strcmp(token, "MaxVertexImageUniforms") == 0)
+        else if (tokenStr == "MaxVertexImageUniforms")
             resources->maxVertexImageUniforms = value;
-        else if (strcmp(token, "MaxTessControlImageUniforms") == 0)
+        else if (tokenStr == "MaxTessControlImageUniforms")
             resources->maxTessControlImageUniforms = value;
-        else if (strcmp(token, "MaxTessEvaluationImageUniforms") == 0)
+        else if (tokenStr == "MaxTessEvaluationImageUniforms")
             resources->maxTessEvaluationImageUniforms = value;
-        else if (strcmp(token, "MaxGeometryImageUniforms") == 0)
+        else if (tokenStr == "MaxGeometryImageUniforms")
             resources->maxGeometryImageUniforms = value;
-        else if (strcmp(token, "MaxFragmentImageUniforms") == 0)
+        else if (tokenStr == "MaxFragmentImageUniforms")
             resources->maxFragmentImageUniforms = value;
-        else if (strcmp(token, "MaxCombinedImageUniforms") == 0)
+        else if (tokenStr == "MaxCombinedImageUniforms")
             resources->maxCombinedImageUniforms = value;
-        else if (strcmp(token, "MaxGeometryTextureImageUnits") == 0)
+        else if (tokenStr == "MaxGeometryTextureImageUnits")
             resources->maxGeometryTextureImageUnits = value;
-        else if (strcmp(token, "MaxGeometryOutputVertices") == 0)
+        else if (tokenStr == "MaxGeometryOutputVertices")
             resources->maxGeometryOutputVertices = value;
-        else if (strcmp(token, "MaxGeometryTotalOutputComponents") == 0)
+        else if (tokenStr == "MaxGeometryTotalOutputComponents")
             resources->maxGeometryTotalOutputComponents = value;
-        else if (strcmp(token, "MaxGeometryUniformComponents") == 0)
+        else if (tokenStr == "MaxGeometryUniformComponents")
             resources->maxGeometryUniformComponents = value;
-        else if (strcmp(token, "MaxGeometryVaryingComponents") == 0)
+        else if (tokenStr == "MaxGeometryVaryingComponents")
             resources->maxGeometryVaryingComponents = value;
-        else if (strcmp(token, "MaxTessControlInputComponents") == 0)
+        else if (tokenStr == "MaxTessControlInputComponents")
             resources->maxTessControlInputComponents = value;
-        else if (strcmp(token, "MaxTessControlOutputComponents") == 0)
+        else if (tokenStr == "MaxTessControlOutputComponents")
             resources->maxTessControlOutputComponents = value;
-        else if (strcmp(token, "MaxTessControlTextureImageUnits") == 0)
+        else if (tokenStr == "MaxTessControlTextureImageUnits")
             resources->maxTessControlTextureImageUnits = value;
-        else if (strcmp(token, "MaxTessControlUniformComponents") == 0)
+        else if (tokenStr == "MaxTessControlUniformComponents")
             resources->maxTessControlUniformComponents = value;
-        else if (strcmp(token, "MaxTessControlTotalOutputComponents") == 0)
+        else if (tokenStr == "MaxTessControlTotalOutputComponents")
             resources->maxTessControlTotalOutputComponents = value;
-        else if (strcmp(token, "MaxTessEvaluationInputComponents") == 0)
+        else if (tokenStr == "MaxTessEvaluationInputComponents")
             resources->maxTessEvaluationInputComponents = value;
-        else if (strcmp(token, "MaxTessEvaluationOutputComponents") == 0)
+        else if (tokenStr == "MaxTessEvaluationOutputComponents")
             resources->maxTessEvaluationOutputComponents = value;
-        else if (strcmp(token, "MaxTessEvaluationTextureImageUnits") == 0)
+        else if (tokenStr == "MaxTessEvaluationTextureImageUnits")
             resources->maxTessEvaluationTextureImageUnits = value;
-        else if (strcmp(token, "MaxTessEvaluationUniformComponents") == 0)
+        else if (tokenStr == "MaxTessEvaluationUniformComponents")
             resources->maxTessEvaluationUniformComponents = value;
-        else if (strcmp(token, "MaxTessPatchComponents") == 0)
+        else if (tokenStr == "MaxTessPatchComponents")
             resources->maxTessPatchComponents = value;
-        else if (strcmp(token, "MaxPatchVertices") == 0)
+        else if (tokenStr == "MaxPatchVertices")
             resources->maxPatchVertices = value;
-        else if (strcmp(token, "MaxTessGenLevel") == 0)
+        else if (tokenStr == "MaxTessGenLevel")
             resources->maxTessGenLevel = value;
-        else if (strcmp(token, "MaxViewports") == 0)
+        else if (tokenStr == "MaxViewports")
             resources->maxViewports = value;
-        else if (strcmp(token, "MaxVertexAtomicCounters") == 0)
+        else if (tokenStr == "MaxVertexAtomicCounters")
             resources->maxVertexAtomicCounters = value;
-        else if (strcmp(token, "MaxTessControlAtomicCounters") == 0)
+        else if (tokenStr == "MaxTessControlAtomicCounters")
             resources->maxTessControlAtomicCounters = value;
-        else if (strcmp(token, "MaxTessEvaluationAtomicCounters") == 0)
+        else if (tokenStr == "MaxTessEvaluationAtomicCounters")
             resources->maxTessEvaluationAtomicCounters = value;
-        else if (strcmp(token, "MaxGeometryAtomicCounters") == 0)
+        else if (tokenStr == "MaxGeometryAtomicCounters")
             resources->maxGeometryAtomicCounters = value;
-        else if (strcmp(token, "MaxFragmentAtomicCounters") == 0)
+        else if (tokenStr == "MaxFragmentAtomicCounters")
             resources->maxFragmentAtomicCounters = value;
-        else if (strcmp(token, "MaxCombinedAtomicCounters") == 0)
+        else if (tokenStr == "MaxCombinedAtomicCounters")
             resources->maxCombinedAtomicCounters = value;
-        else if (strcmp(token, "MaxAtomicCounterBindings") == 0)
+        else if (tokenStr == "MaxAtomicCounterBindings")
             resources->maxAtomicCounterBindings = value;
-        else if (strcmp(token, "MaxVertexAtomicCounterBuffers") == 0)
+        else if (tokenStr == "MaxVertexAtomicCounterBuffers")
             resources->maxVertexAtomicCounterBuffers = value;
-        else if (strcmp(token, "MaxTessControlAtomicCounterBuffers") == 0)
+        else if (tokenStr == "MaxTessControlAtomicCounterBuffers")
             resources->maxTessControlAtomicCounterBuffers = value;
-        else if (strcmp(token, "MaxTessEvaluationAtomicCounterBuffers") == 0)
+        else if (tokenStr == "MaxTessEvaluationAtomicCounterBuffers")
             resources->maxTessEvaluationAtomicCounterBuffers = value;
-        else if (strcmp(token, "MaxGeometryAtomicCounterBuffers") == 0)
+        else if (tokenStr == "MaxGeometryAtomicCounterBuffers")
             resources->maxGeometryAtomicCounterBuffers = value;
-        else if (strcmp(token, "MaxFragmentAtomicCounterBuffers") == 0)
+        else if (tokenStr == "MaxFragmentAtomicCounterBuffers")
             resources->maxFragmentAtomicCounterBuffers = value;
-        else if (strcmp(token, "MaxCombinedAtomicCounterBuffers") == 0)
+        else if (tokenStr == "MaxCombinedAtomicCounterBuffers")
             resources->maxCombinedAtomicCounterBuffers = value;
-        else if (strcmp(token, "MaxAtomicCounterBufferSize") == 0)
+        else if (tokenStr == "MaxAtomicCounterBufferSize")
             resources->maxAtomicCounterBufferSize = value;
-        else if (strcmp(token, "MaxTransformFeedbackBuffers") == 0)
+        else if (tokenStr == "MaxTransformFeedbackBuffers")
             resources->maxTransformFeedbackBuffers = value;
-        else if (strcmp(token, "MaxTransformFeedbackInterleavedComponents") == 0)
+        else if (tokenStr == "MaxTransformFeedbackInterleavedComponents")
             resources->maxTransformFeedbackInterleavedComponents = value;
-        else if (strcmp(token, "MaxCullDistances") == 0)
+        else if (tokenStr == "MaxCullDistances")
             resources->maxCullDistances = value;
-        else if (strcmp(token, "MaxCombinedClipAndCullDistances") == 0)
+        else if (tokenStr == "MaxCombinedClipAndCullDistances")
             resources->maxCombinedClipAndCullDistances = value;
-        else if (strcmp(token, "MaxSamples") == 0)
+        else if (tokenStr == "MaxSamples")
             resources->maxSamples = value;
-
-        else if (strcmp(token, "nonInductiveForLoops") == 0)
+        else if (tokenStr == "nonInductiveForLoops")
             resources->limits.nonInductiveForLoops = (value != 0);
-        else if (strcmp(token, "whileLoops") == 0)
+        else if (tokenStr == "whileLoops")
             resources->limits.whileLoops = (value != 0);
-        else if (strcmp(token, "doWhileLoops") == 0)
+        else if (tokenStr == "doWhileLoops")
             resources->limits.doWhileLoops = (value != 0);
-        else if (strcmp(token, "generalUniformIndexing") == 0)
+        else if (tokenStr == "generalUniformIndexing")
             resources->limits.generalUniformIndexing = (value != 0);
-        else if (strcmp(token, "generalAttributeMatrixVectorIndexing") == 0)
+        else if (tokenStr == "generalAttributeMatrixVectorIndexing")
             resources->limits.generalAttributeMatrixVectorIndexing = (value != 0);
-        else if (strcmp(token, "generalVaryingIndexing") == 0)
+        else if (tokenStr == "generalVaryingIndexing")
             resources->limits.generalVaryingIndexing = (value != 0);
-        else if (strcmp(token, "generalSamplerIndexing") == 0)
+        else if (tokenStr == "generalSamplerIndexing")
             resources->limits.generalSamplerIndexing = (value != 0);
-        else if (strcmp(token, "generalVariableIndexing") == 0)
+        else if (tokenStr == "generalVariableIndexing")
             resources->limits.generalVariableIndexing = (value != 0);
-        else if (strcmp(token, "generalConstantMatrixVectorIndexing") == 0)
+        else if (tokenStr == "generalConstantMatrixVectorIndexing")
             resources->limits.generalConstantMatrixVectorIndexing = (value != 0);
         else
-            printf("Warning: unrecognized limit (%s) in configuration file.\n", token);
+            printf("Warning: unrecognized limit (%s) in configuration file.\n", tokenStr.c_str());
 
-#pragma warning(suppress: 4996)
-        token = strtok(0, delims);
     }
 }
 
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index 0ac72d3..377e7cb 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -164,6 +164,7 @@
 
 std::array<unsigned int, EShLangCount> baseSamplerBinding;
 std::array<unsigned int, EShLangCount> baseTextureBinding;
+std::array<unsigned int, EShLangCount> baseImageBinding;
 std::array<unsigned int, EShLangCount> baseUboBinding;
 
 //
@@ -252,6 +253,7 @@
 {
     baseSamplerBinding.fill(0);
     baseTextureBinding.fill(0);
+    baseImageBinding.fill(0);
     baseUboBinding.fill(0);
 
     ExecutableName = argv[0];
@@ -279,6 +281,10 @@
                                lowerword == "shift-texture-binding"  ||
                                lowerword == "stb") {
                         ProcessBindingBase(argc, argv, baseTextureBinding);
+                    } else if (lowerword == "shift-image-bindings" ||  // synonyms
+                               lowerword == "shift-image-binding"  ||
+                               lowerword == "sib") {
+                        ProcessBindingBase(argc, argv, baseImageBinding);
                     } else if (lowerword == "shift-ubo-bindings" ||  // synonyms
                                lowerword == "shift-ubo-binding"  ||
                                lowerword == "sub") {
@@ -544,6 +550,7 @@
 
         shader->setShiftSamplerBinding(baseSamplerBinding[compUnit.stage]);
         shader->setShiftTextureBinding(baseTextureBinding[compUnit.stage]);
+        shader->setShiftImageBinding(baseImageBinding[compUnit.stage]);
         shader->setShiftUboBinding(baseUboBinding[compUnit.stage]);
         shader->setFlattenUniformArrays((Options & EOptionFlattenUniformArrays) != 0);
         shader->setNoStorageFormat((Options & EOptionNoStorageFormat) != 0);
@@ -941,6 +948,9 @@
            "  --shift-texture-binding [stage] num     set base binding number for textures\n"
            "  --stb [stage] num                       synonym for --shift-texture-binding\n"
            "\n"
+           "  --shift-image-binding [stage] num       set base binding number for images (uav)\n"
+           "  --sib [stage] num                       synonym for --shift-image-binding\n"
+           "\n"
            "  --shift-UBO-binding [stage] num         set base binding number for UBOs\n"
            "  --sub [stage] num                       synonym for --shift-UBO-binding\n"
            "\n"
diff --git a/Test/baseResults/100.frag.out b/Test/baseResults/100.frag.out
index edd65ab..74a597f 100644
--- a/Test/baseResults/100.frag.out
+++ b/Test/baseResults/100.frag.out
@@ -393,13 +393,13 @@
 0:?     'a' (global 3-element array of mediump int)
 0:?     'uint' (global mediump int)
 0:?     'v' (smooth in 3-element array of mediump 4-component vector of float)
-0:?     'f' (global mediump float)
+0:?     'f' (invariant global mediump float)
 0:?     'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump int x})
 0:?     'fa' (global implicitly-sized array of mediump float)
-0:?     'f13' (global mediump float)
+0:?     'f13' (invariant global mediump float)
 0:?     'fi' (invariant temp mediump float)
-0:?     'av' (smooth in mediump 4-component vector of float)
-0:?     'uv2' (uniform mediump 2-component vector of float)
+0:?     'av' (invariant smooth in mediump 4-component vector of float)
+0:?     'uv2' (invariant uniform mediump 2-component vector of float)
 0:?     'uv3' (invariant uniform mediump 3-component vector of float)
 0:?     'glob2D' (global lowp sampler2D)
 0:?     'vary2D' (smooth in lowp sampler2D)
@@ -731,13 +731,13 @@
 0:?     'a' (global 3-element array of mediump int)
 0:?     'uint' (global mediump int)
 0:?     'v' (smooth in 3-element array of mediump 4-component vector of float)
-0:?     'f' (global mediump float)
+0:?     'f' (invariant global mediump float)
 0:?     'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump int x})
 0:?     'fa' (global 1-element array of mediump float)
-0:?     'f13' (global mediump float)
+0:?     'f13' (invariant global mediump float)
 0:?     'fi' (invariant temp mediump float)
-0:?     'av' (smooth in mediump 4-component vector of float)
-0:?     'uv2' (uniform mediump 2-component vector of float)
+0:?     'av' (invariant smooth in mediump 4-component vector of float)
+0:?     'uv2' (invariant uniform mediump 2-component vector of float)
 0:?     'uv3' (invariant uniform mediump 3-component vector of float)
 0:?     'glob2D' (global lowp sampler2D)
 0:?     'vary2D' (smooth in lowp sampler2D)
diff --git a/Test/baseResults/120.vert.out b/Test/baseResults/120.vert.out
index 73ced6a..18fb221 100644
--- a/Test/baseResults/120.vert.out
+++ b/Test/baseResults/120.vert.out
@@ -420,7 +420,6 @@
 0:?     'concall' (const float)
 0:?       0.295520
 0:?     'gl_TexCoord' (smooth out 35-element array of 4-component vector of float TexCoord)
-0:?     'gl_TexCoord' (smooth out 35-element array of 4-component vector of float TexCoord)
 0:?     'c' (uniform int)
 0:?     'x' (in 2-component vector of int)
 0:?     'v2a' (in 2-component vector of float)
@@ -772,7 +771,6 @@
 0:?     'concall' (const float)
 0:?       0.295520
 0:?     'gl_TexCoord' (smooth out 35-element array of 4-component vector of float TexCoord)
-0:?     'gl_TexCoord' (smooth out 35-element array of 4-component vector of float TexCoord)
 0:?     'c' (uniform int)
 0:?     'x' (in 2-component vector of int)
 0:?     'v2a' (in 2-component vector of float)
diff --git a/Test/baseResults/130.frag.out b/Test/baseResults/130.frag.out
index b2b4dd0..a28908e 100644
--- a/Test/baseResults/130.frag.out
+++ b/Test/baseResults/130.frag.out
@@ -383,8 +383,7 @@
 0:?     'fnop' (noperspective in float)
 0:?     'gl_ClipDistance' (smooth in implicitly-sized array of float ClipDistance)
 0:?     'sampC' (uniform samplerCube)
-0:?     'gl_Color' (smooth in 4-component vector of float Color)
-0:?     'gl_Color' (flat in 4-component vector of float Color)
+0:?     'gl_Color' (in 4-component vector of float Color)
 0:?     'samp2D' (uniform sampler2D)
 0:?     'samp2DS' (uniform sampler2DShadow)
 0:?     'samp2DR' (uniform sampler2DRect)
@@ -759,8 +758,7 @@
 0:?     'fnop' (noperspective in float)
 0:?     'gl_ClipDistance' (smooth in 4-element array of float ClipDistance)
 0:?     'sampC' (uniform samplerCube)
-0:?     'gl_Color' (smooth in 4-component vector of float Color)
-0:?     'gl_Color' (flat in 4-component vector of float Color)
+0:?     'gl_Color' (in 4-component vector of float Color)
 0:?     'samp2D' (uniform sampler2D)
 0:?     'samp2DS' (uniform sampler2DShadow)
 0:?     'samp2DR' (uniform sampler2DRect)
diff --git a/Test/baseResults/140.frag.out b/Test/baseResults/140.frag.out
index fbeee83..38c3b9f 100644
--- a/Test/baseResults/140.frag.out
+++ b/Test/baseResults/140.frag.out
@@ -104,7 +104,6 @@
 0:?     'i' (smooth in 4-component vector of float)
 0:?     'o' (out 4-component vector of float)
 0:?     'gl_ClipDistance' (smooth in 5-element array of float ClipDistance)
-0:?     'gl_ClipDistance' (smooth in 5-element array of float ClipDistance)
 0:?     's' (smooth in structure{global float f})
 0:?     'patch' (global float)
 0:?     'vl' (layout(location=3 ) smooth in 4-component vector of float)
@@ -211,7 +210,6 @@
 0:?     'i' (smooth in 4-component vector of float)
 0:?     'o' (out 4-component vector of float)
 0:?     'gl_ClipDistance' (smooth in 5-element array of float ClipDistance)
-0:?     'gl_ClipDistance' (smooth in 5-element array of float ClipDistance)
 0:?     's' (smooth in structure{global float f})
 0:?     'patch' (global float)
 0:?     'vl' (layout(location=3 ) smooth in 4-component vector of float)
diff --git a/Test/baseResults/140.vert.out b/Test/baseResults/140.vert.out
index 634458c..365a0aa 100644
--- a/Test/baseResults/140.vert.out
+++ b/Test/baseResults/140.vert.out
@@ -124,10 +124,7 @@
 0:?     'locBad' (layout(location=9 ) in 4-component vector of float)
 0:?     'loc' (layout(location=9 ) in 4-component vector of float)
 0:?     'gl_PointSize' (gl_PointSize float PointSize)
-0:?     'gl_PointSize' (gl_PointSize float PointSize)
 0:?     'gl_ClipVertex' (gl_ClipVertex 4-component vector of float ClipVertex)
-0:?     'gl_ClipVertex' (gl_ClipVertex 4-component vector of float ClipVertex)
-0:?     'gl_FogFragCoord' (smooth out float FogFragCoord)
 0:?     'gl_FogFragCoord' (smooth out float FogFragCoord)
 0:?     's2dr' (uniform sampler2DRect)
 0:?     's2drs' (uniform sampler2DRectShadow)
@@ -254,10 +251,7 @@
 0:?     'locBad' (layout(location=9 ) in 4-component vector of float)
 0:?     'loc' (layout(location=9 ) in 4-component vector of float)
 0:?     'gl_PointSize' (gl_PointSize float PointSize)
-0:?     'gl_PointSize' (gl_PointSize float PointSize)
 0:?     'gl_ClipVertex' (gl_ClipVertex 4-component vector of float ClipVertex)
-0:?     'gl_ClipVertex' (gl_ClipVertex 4-component vector of float ClipVertex)
-0:?     'gl_FogFragCoord' (smooth out float FogFragCoord)
 0:?     'gl_FogFragCoord' (smooth out float FogFragCoord)
 0:?     's2dr' (uniform sampler2DRect)
 0:?     's2drs' (uniform sampler2DRectShadow)
diff --git a/Test/baseResults/150.frag.out b/Test/baseResults/150.frag.out
index 082a827..0972fdc 100644
--- a/Test/baseResults/150.frag.out
+++ b/Test/baseResults/150.frag.out
@@ -108,7 +108,6 @@
 0:49        'gl_PrimitiveID' (flat in int PrimitiveID)
 0:?   Linker Objects
 0:?     'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
-0:?     'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
 0:?     'foo' (smooth in 4-component vector of float)
 0:?     's' (smooth in structure{global float f})
 0:?     'patch' (global float)
@@ -228,7 +227,6 @@
 0:49        'gl_PrimitiveID' (flat in int PrimitiveID)
 0:?   Linker Objects
 0:?     'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
-0:?     'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
 0:?     'foo' (smooth in 4-component vector of float)
 0:?     's' (smooth in structure{global float f})
 0:?     'patch' (global float)
diff --git a/Test/baseResults/300.vert.out b/Test/baseResults/300.vert.out
index ecfa3d5..d35929f 100644
--- a/Test/baseResults/300.vert.out
+++ b/Test/baseResults/300.vert.out
@@ -308,9 +308,9 @@
 0:?     'badsize2' (global implicitly-sized array of highp float)
 0:?     'ubInst' (layout(column_major shared ) uniform implicitly-sized array of block{layout(column_major shared ) uniform implicitly-sized array of highp int a})
 0:?     'okayA' (global 2-element array of highp float)
-0:?     'newV' (smooth out highp 3-component vector of float)
-0:?     'invIn' (in highp 4-component vector of float)
-0:?     's2' (smooth out structure{global highp 3-component vector of float c, global highp float f})
+0:?     'newV' (invariant smooth out highp 3-component vector of float)
+0:?     'invIn' (invariant in highp 4-component vector of float)
+0:?     's2' (invariant smooth out structure{global highp 3-component vector of float c, global highp float f})
 0:?     's3' (invariant smooth out structure{global highp 3-component vector of float c, global highp float f})
 0:?     'a' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform highp float f})
 0:?     'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform bool b23})
@@ -592,9 +592,9 @@
 0:?     'badsize2' (global 1-element array of highp float)
 0:?     'ubInst' (layout(column_major shared ) uniform 1-element array of block{layout(column_major shared ) uniform 1-element array of highp int a})
 0:?     'okayA' (global 2-element array of highp float)
-0:?     'newV' (smooth out highp 3-component vector of float)
-0:?     'invIn' (in highp 4-component vector of float)
-0:?     's2' (smooth out structure{global highp 3-component vector of float c, global highp float f})
+0:?     'newV' (invariant smooth out highp 3-component vector of float)
+0:?     'invIn' (invariant in highp 4-component vector of float)
+0:?     's2' (invariant smooth out structure{global highp 3-component vector of float c, global highp float f})
 0:?     's3' (invariant smooth out structure{global highp 3-component vector of float c, global highp float f})
 0:?     'a' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform highp float f})
 0:?     'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform bool b23})
diff --git a/Test/baseResults/310.frag.out b/Test/baseResults/310.frag.out
index 6cfd3f4..66d6ae0 100644
--- a/Test/baseResults/310.frag.out
+++ b/Test/baseResults/310.frag.out
@@ -963,7 +963,6 @@
 0:?     'aliased' (layout(location=13 ) smooth in mediump 4-component vector of float)
 0:?     'arrayedInst' (in 4-element array of block{in mediump float f})
 0:?     'gl_FragDepth' (gl_FragDepth highp float FragDepth)
-0:?     'gl_FragDepth' (gl_FragDepth highp float FragDepth)
 0:?     'inf' (smooth in mediump 2-component vector of float)
 0:?     'ing' (smooth in mediump 2-component vector of float)
 0:?     'offsets' (uniform 4-element array of mediump 2-component vector of int)
@@ -1844,7 +1843,6 @@
 0:?     'aliased' (layout(location=13 ) smooth in mediump 4-component vector of float)
 0:?     'arrayedInst' (in 4-element array of block{in mediump float f})
 0:?     'gl_FragDepth' (gl_FragDepth highp float FragDepth)
-0:?     'gl_FragDepth' (gl_FragDepth highp float FragDepth)
 0:?     'inf' (smooth in mediump 2-component vector of float)
 0:?     'ing' (smooth in mediump 2-component vector of float)
 0:?     'offsets' (uniform 4-element array of mediump 2-component vector of int)
diff --git a/Test/baseResults/310AofA.vert.out b/Test/baseResults/310AofA.vert.out
index 83f105c..28592d5 100644
--- a/Test/baseResults/310AofA.vert.out
+++ b/Test/baseResults/310AofA.vert.out
@@ -5,7 +5,7 @@
 ERROR: 0:28: '[]' : only outermost dimension of an array of arrays can be implicitly sized 
 ERROR: 0:40: '' : array size required 
 ERROR: 0:48: 'constructor' : constructing non-array constituent from array argument 
-ERROR: 0:49: 'constructior' : array constructor argument not correct type to construct array element 
+ERROR: 0:49: 'constructor' : array constructor argument not correct type to construct array element 
 ERROR: 0:62: '[' :  array index out of range '4'
 ERROR: 0:78: 'assign' :  cannot convert from 'global 4-element array of 7-element array of highp float' to 'global 5-element array of 7-element array of highp float'
 ERROR: 0:79: 'assign' :  cannot convert from 'global 4-element array of 7-element array of highp float' to 'global implicitly-sized array of 7-element array of highp float'
diff --git a/Test/baseResults/400.frag.out b/Test/baseResults/400.frag.out
index 33a8c9a..9090414 100644
--- a/Test/baseResults/400.frag.out
+++ b/Test/baseResults/400.frag.out
@@ -481,8 +481,6 @@
 0:?     'vl2' (layout(location=6 ) smooth in 4-component vector of float)
 0:?     'uv3' (layout(location=3 ) uniform 3-component vector of float)
 0:?     'anon@0' (in block{in float FogFragCoord gl_FogFragCoord, in implicitly-sized array of 4-component vector of float TexCoord gl_TexCoord, smooth in 4-component vector of float Color gl_Color, in 4-component vector of float SecondaryColor gl_SecondaryColor})
-0:?     'anon@0' (in block{in float FogFragCoord gl_FogFragCoord, in implicitly-sized array of 4-component vector of float TexCoord gl_TexCoord, smooth in 4-component vector of float Color gl_Color, in 4-component vector of float SecondaryColor gl_SecondaryColor})
-0:?     'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
 0:?     'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
 0:?     'u2drs' (uniform sampler2DRectShadow)
 0:?     'patchIn' (smooth patch in 4-component vector of float)
@@ -962,8 +960,6 @@
 0:?     'vl2' (layout(location=6 ) smooth in 4-component vector of float)
 0:?     'uv3' (layout(location=3 ) uniform 3-component vector of float)
 0:?     'anon@0' (in block{in float FogFragCoord gl_FogFragCoord, in 1-element array of 4-component vector of float TexCoord gl_TexCoord, smooth in 4-component vector of float Color gl_Color, in 4-component vector of float SecondaryColor gl_SecondaryColor})
-0:?     'anon@0' (in block{in float FogFragCoord gl_FogFragCoord, in 1-element array of 4-component vector of float TexCoord gl_TexCoord, smooth in 4-component vector of float Color gl_Color, in 4-component vector of float SecondaryColor gl_SecondaryColor})
-0:?     'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
 0:?     'gl_FragCoord' (gl_FragCoord 4-component vector of float FragCoord)
 0:?     'u2drs' (uniform sampler2DRectShadow)
 0:?     'patchIn' (smooth patch in 4-component vector of float)
diff --git a/Test/baseResults/420.frag.out b/Test/baseResults/420.frag.out
index 784cdb4..3b4c9be 100644
--- a/Test/baseResults/420.frag.out
+++ b/Test/baseResults/420.frag.out
@@ -19,7 +19,6 @@
 0:8          0.300000
 0:?   Linker Objects
 0:?     'gl_FragDepth' (gl_FragDepth float FragDepth)
-0:?     'gl_FragDepth' (gl_FragDepth float FragDepth)
 0:?     'depth' (smooth in float)
 0:?     'a' (layout(binding=0 offset=0 ) uniform implicitly-sized array of atomic_uint)
 
@@ -39,7 +38,6 @@
 0:8          0.300000
 0:?   Linker Objects
 0:?     'gl_FragDepth' (gl_FragDepth float FragDepth)
-0:?     'gl_FragDepth' (gl_FragDepth float FragDepth)
 0:?     'depth' (smooth in float)
 0:?     'a' (layout(binding=0 offset=0 ) uniform 1-element array of atomic_uint)
 
diff --git a/Test/baseResults/430AofA.frag.out b/Test/baseResults/430AofA.frag.out
index 68285f7..f3bbfb8 100644
--- a/Test/baseResults/430AofA.frag.out
+++ b/Test/baseResults/430AofA.frag.out
@@ -2,7 +2,7 @@
 Warning, version 430 is not yet complete; most version-specific features are present, but some are missing.
 ERROR: 0:6: '[]' : only outermost dimension of an array of arrays can be implicitly sized 
 ERROR: 0:14: 'constructor' : constructing non-array constituent from array argument 
-ERROR: 0:15: 'constructior' : array constructor argument not correct type to construct array element 
+ERROR: 0:15: 'constructor' : array constructor argument not correct type to construct array element 
 ERROR: 0:28: '[' :  array index out of range '4'
 ERROR: 0:56: 'constructor' :  cannot convert parameter 2 from 'const 3-element array of 4-component vector of float' to 'temp 2-element array of 4-component vector of float'
 ERROR: 0:60: 'constructor' :  cannot convert parameter 2 from 'const 2-element array of 4-component vector of float' to 'temp 3-element array of 4-component vector of float'
diff --git a/Test/baseResults/hlsl.amend.frag.out b/Test/baseResults/hlsl.amend.frag.out
index 1be5906..44d7655 100755
--- a/Test/baseResults/hlsl.amend.frag.out
+++ b/Test/baseResults/hlsl.amend.frag.out
@@ -58,7 +58,7 @@
 0:25          Constant:
 0:25            0 (const uint)
 0:?   Linker Objects
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
 
 
 Linked fragment stage:
@@ -123,7 +123,7 @@
 0:25          Constant:
 0:25            0 (const uint)
 0:?   Linker Objects
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float a, layout(offset=16 ) uniform float b, layout(offset=32 ) uniform 3-component vector of float c, layout(offset=44 ) uniform int d, uniform int e})
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.array.flatten.frag.out b/Test/baseResults/hlsl.array.flatten.frag.out
index cbfb0ef..74a348a 100644
--- a/Test/baseResults/hlsl.array.flatten.frag.out
+++ b/Test/baseResults/hlsl.array.flatten.frag.out
@@ -138,6 +138,7 @@
 0:?                   'g_samp[2]' (uniform sampler)
 0:37              'aggShadow' (temp 3-element array of sampler)
 0:?   Linker Objects
+0:?     'color' (layout(location=0 ) out 4-component vector of float)
 0:?     'g_tex[0]' (uniform texture1D)
 0:?     'g_tex[1]' (uniform texture1D)
 0:?     'g_tex[2]' (uniform texture1D)
@@ -150,9 +151,8 @@
 0:?     'g_samp_explicit[0]' (layout(binding=5 ) uniform sampler)
 0:?     'g_samp_explicit[1]' (layout(binding=6 ) uniform sampler)
 0:?     'g_samp_explicit[2]' (layout(binding=7 ) uniform sampler)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats})
 0:?     'not_flattened_a' (global 5-element array of int)
-0:?     'color' (layout(location=0 ) out 4-component vector of float)
 
 
 Linked fragment stage:
@@ -297,6 +297,7 @@
 0:?                   'g_samp[2]' (uniform sampler)
 0:37              'aggShadow' (temp 3-element array of sampler)
 0:?   Linker Objects
+0:?     'color' (layout(location=0 ) out 4-component vector of float)
 0:?     'g_tex[0]' (uniform texture1D)
 0:?     'g_tex[1]' (uniform texture1D)
 0:?     'g_tex[2]' (uniform texture1D)
@@ -309,9 +310,8 @@
 0:?     'g_samp_explicit[0]' (layout(binding=5 ) uniform sampler)
 0:?     'g_samp_explicit[1]' (layout(binding=6 ) uniform sampler)
 0:?     'g_samp_explicit[2]' (layout(binding=7 ) uniform sampler)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 3X3 matrix of float g_mats, layout(binding=10 offset=192 ) uniform 4-element array of 3X3 matrix of float g_mats_explicit, layout(offset=384 ) uniform 4-element array of float g_floats})
 0:?     'not_flattened_a' (global 5-element array of int)
-0:?     'color' (layout(location=0 ) out 4-component vector of float)
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.array.frag.out b/Test/baseResults/hlsl.array.frag.out
index 00aedb3..e04a5e8 100755
--- a/Test/baseResults/hlsl.array.frag.out
+++ b/Test/baseResults/hlsl.array.frag.out
@@ -57,9 +57,9 @@
 0:10        Branch: Return
 0:?   Linker Objects
 0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s})
 0:?     'i' (layout(location=0 ) in int)
 0:?     'input' (layout(location=1 ) in 3-element array of 4-component vector of float)
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s})
 
 
 Linked fragment stage:
@@ -123,9 +123,9 @@
 0:10        Branch: Return
 0:?   Linker Objects
 0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s})
 0:?     'i' (layout(location=0 ) in int)
 0:?     'input' (layout(location=1 ) in 3-element array of 4-component vector of float)
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-element array of 4-component vector of float a, layout(offset=64 ) uniform 11-element array of structure{temp 7-element array of 4-component vector of float m} s})
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.array.implicit-size.frag.out b/Test/baseResults/hlsl.array.implicit-size.frag.out
index d8e0ed8..5674cb4 100644
--- a/Test/baseResults/hlsl.array.implicit-size.frag.out
+++ b/Test/baseResults/hlsl.array.implicit-size.frag.out
@@ -81,6 +81,7 @@
 
 Linked fragment stage:
 
+WARNING: Linking fragment stage: Entry point not found
 
 Shader version: 450
 gl_FragCoord origin is upper left
@@ -234,6 +235,7 @@
                               Store 18(g_array) 24
                               Store 28(g_array_unused) 31
                               Store 37(g_mystruct) 42
+                              Return
                               FunctionEnd
 12(main(struct-PS_OUTPUT-vf41;):           2 Function None 10
    11(ps_output):      9(ptr) FunctionParameter
diff --git a/Test/baseResults/hlsl.array.multidim.frag.out b/Test/baseResults/hlsl.array.multidim.frag.out
index a2df1a8..66890b5 100644
--- a/Test/baseResults/hlsl.array.multidim.frag.out
+++ b/Test/baseResults/hlsl.array.multidim.frag.out
@@ -59,7 +59,7 @@
 0:19        Branch: Return
 0:?   Linker Objects
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array})
 
 
 Linked fragment stage:
@@ -125,7 +125,7 @@
 0:19        Branch: Return
 0:?   Linker Objects
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array})
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.attribute.expression.comp.out b/Test/baseResults/hlsl.attribute.expression.comp.out
new file mode 100644
index 0000000..2316cd9
--- /dev/null
+++ b/Test/baseResults/hlsl.attribute.expression.comp.out
@@ -0,0 +1,138 @@
+hlsl.attribute.expression.comp
+Shader version: 450
+local_size = (4, 6, 8)
+0:? Sequence
+0:9  Function Definition: main( (temp 4-component vector of float)
+0:9    Function Parameters: 
+0:?     Sequence
+0:11      Sequence
+0:11        move second child to first child (temp int)
+0:11          'x' (temp int)
+0:11          Constant:
+0:11            0 (const int)
+0:11        Loop with condition tested first
+0:11          Loop Condition
+0:11          Compare Less Than (temp bool)
+0:11            'x' (temp int)
+0:11            bound: direct index for structure (layout(offset=0 ) uniform int)
+0:11              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int bound})
+0:11              Constant:
+0:11                0 (const uint)
+0:11          No loop body
+0:11          Loop Terminal Expression
+0:11          Pre-Increment (temp int)
+0:11            'x' (temp int)
+0:14      Sequence
+0:14        move second child to first child (temp 4-component vector of float)
+0:?           '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:?           Constant:
+0:?             0.000000
+0:?             0.000000
+0:?             0.000000
+0:?             0.000000
+0:14        Branch: Return
+0:?   Linker Objects
+0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int bound})
+
+
+Linked compute stage:
+
+
+Shader version: 450
+local_size = (4, 6, 8)
+0:? Sequence
+0:9  Function Definition: main( (temp 4-component vector of float)
+0:9    Function Parameters: 
+0:?     Sequence
+0:11      Sequence
+0:11        move second child to first child (temp int)
+0:11          'x' (temp int)
+0:11          Constant:
+0:11            0 (const int)
+0:11        Loop with condition tested first
+0:11          Loop Condition
+0:11          Compare Less Than (temp bool)
+0:11            'x' (temp int)
+0:11            bound: direct index for structure (layout(offset=0 ) uniform int)
+0:11              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int bound})
+0:11              Constant:
+0:11                0 (const uint)
+0:11          No loop body
+0:11          Loop Terminal Expression
+0:11          Pre-Increment (temp int)
+0:11            'x' (temp int)
+0:14      Sequence
+0:14        move second child to first child (temp 4-component vector of float)
+0:?           '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:?           Constant:
+0:?             0.000000
+0:?             0.000000
+0:?             0.000000
+0:?             0.000000
+0:14        Branch: Return
+0:?   Linker Objects
+0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int bound})
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 34
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main" 30
+                              ExecutionMode 4 LocalSize 4 6 8
+                              Name 4  "main"
+                              Name 8  "x"
+                              Name 16  "$Global"
+                              MemberName 16($Global) 0  "bound"
+                              Name 18  ""
+                              Name 30  "@entryPointOutput"
+                              MemberDecorate 16($Global) 0 Offset 0
+                              Decorate 16($Global) Block
+                              Decorate 18 DescriptorSet 0
+                              Decorate 30(@entryPointOutput) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Function 6(int)
+               9:      6(int) Constant 0
+     16($Global):             TypeStruct 6(int)
+              17:             TypePointer Uniform 16($Global)
+              18:     17(ptr) Variable Uniform
+              19:             TypePointer Uniform 6(int)
+              22:             TypeBool
+              25:      6(int) Constant 1
+              27:             TypeFloat 32
+              28:             TypeVector 27(float) 4
+              29:             TypePointer Output 28(fvec4)
+30(@entryPointOutput):     29(ptr) Variable Output
+              31:   27(float) Constant 0
+              32:   28(fvec4) ConstantComposite 31 31 31 31
+         4(main):           2 Function None 3
+               5:             Label
+            8(x):      7(ptr) Variable Function
+                              Store 8(x) 9
+                              Branch 10
+              10:             Label
+                              LoopMerge 12 13 None
+                              Branch 14
+              14:             Label
+              15:      6(int) Load 8(x)
+              20:     19(ptr) AccessChain 18 9
+              21:      6(int) Load 20
+              23:    22(bool) SLessThan 15 21
+                              BranchConditional 23 11 12
+              11:               Label
+                                Branch 13
+              13:               Label
+              24:      6(int)   Load 8(x)
+              26:      6(int)   IAdd 24 25
+                                Store 8(x) 26
+                                Branch 10
+              12:             Label
+                              Store 30(@entryPointOutput) 32
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.basic.comp.out b/Test/baseResults/hlsl.basic.comp.out
index c6dc3e5..9101e22 100755
--- a/Test/baseResults/hlsl.basic.comp.out
+++ b/Test/baseResults/hlsl.basic.comp.out
@@ -8,8 +8,8 @@
 0:?     Sequence
 0:5      'dti' (in int LocalInvocationID)
 0:?   Linker Objects
-0:?     'a' (shared 100-element array of 4-component vector of float)
 0:?     'dti' (in int LocalInvocationID)
+0:?     'a' (shared 100-element array of 4-component vector of float)
 
 
 Linked compute stage:
@@ -24,8 +24,8 @@
 0:?     Sequence
 0:5      'dti' (in int LocalInvocationID)
 0:?   Linker Objects
-0:?     'a' (shared 100-element array of 4-component vector of float)
 0:?     'dti' (in int LocalInvocationID)
+0:?     'a' (shared 100-element array of 4-component vector of float)
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.basic.geom.out b/Test/baseResults/hlsl.basic.geom.out
new file mode 100644
index 0000000..2c20b43
--- /dev/null
+++ b/Test/baseResults/hlsl.basic.geom.out
@@ -0,0 +1,201 @@
+hlsl.basic.geom
+Shader version: 450
+invocations = -1
+max_vertices = 4
+input primitive = triangles
+output primitive = line_strip
+0:? Sequence
+0:16  Function Definition: main(u1[3];u1[3];struct-PSInput-f1-i11; (temp void)
+0:16    Function Parameters: 
+0:16      'VertexID' (layout(location=0 ) in 3-element array of uint)
+0:16      'test' (layout(location=3 ) in 3-element array of uint)
+0:16      'OutputStream' (out structure{temp float myfloat, temp int something})
+0:?     Sequence
+0:19      move second child to first child (temp float)
+0:19        myfloat: direct index for structure (temp float)
+0:19          'Vert' (temp structure{temp float myfloat, temp int something})
+0:19          Constant:
+0:19            0 (const int)
+0:19        Convert uint to float (temp float)
+0:19          add (temp uint)
+0:19            add (temp uint)
+0:19              direct index (layout(location=3 ) temp uint)
+0:19                'test' (layout(location=3 ) in 3-element array of uint)
+0:19                Constant:
+0:19                  0 (const int)
+0:19              direct index (layout(location=3 ) temp uint)
+0:19                'test' (layout(location=3 ) in 3-element array of uint)
+0:19                Constant:
+0:19                  1 (const int)
+0:19            direct index (layout(location=3 ) temp uint)
+0:19              'test' (layout(location=3 ) in 3-element array of uint)
+0:19              Constant:
+0:19                2 (const int)
+0:20      move second child to first child (temp int)
+0:20        something: direct index for structure (temp int)
+0:20          'Vert' (temp structure{temp float myfloat, temp int something})
+0:20          Constant:
+0:20            1 (const int)
+0:20        Convert uint to int (temp int)
+0:20          direct index (layout(location=0 ) temp uint)
+0:20            'VertexID' (layout(location=0 ) in 3-element array of uint)
+0:20            Constant:
+0:20              0 (const int)
+0:22      Sequence
+0:22        move second child to first child (temp structure{temp float myfloat, temp int something})
+0:22          'OutputStream' (out structure{temp float myfloat, temp int something})
+0:22          'Vert' (temp structure{temp float myfloat, temp int something})
+0:22        EmitVertex (temp void)
+0:23      Sequence
+0:23        move second child to first child (temp structure{temp float myfloat, temp int something})
+0:23          'OutputStream' (out structure{temp float myfloat, temp int something})
+0:23          'Vert' (temp structure{temp float myfloat, temp int something})
+0:23        EmitVertex (temp void)
+0:24      EndPrimitive (temp void)
+0:?   Linker Objects
+0:?     'VertexID' (layout(location=0 ) in 3-element array of uint)
+0:?     'test' (layout(location=3 ) in 3-element array of uint)
+0:?     'myfloat' (layout(location=0 ) out float)
+0:?     'something' (layout(location=1 ) out int)
+
+
+Linked geometry stage:
+
+
+Shader version: 450
+invocations = 1
+max_vertices = 4
+input primitive = triangles
+output primitive = line_strip
+0:? Sequence
+0:16  Function Definition: main(u1[3];u1[3];struct-PSInput-f1-i11; (temp void)
+0:16    Function Parameters: 
+0:16      'VertexID' (layout(location=0 ) in 3-element array of uint)
+0:16      'test' (layout(location=3 ) in 3-element array of uint)
+0:16      'OutputStream' (out structure{temp float myfloat, temp int something})
+0:?     Sequence
+0:19      move second child to first child (temp float)
+0:19        myfloat: direct index for structure (temp float)
+0:19          'Vert' (temp structure{temp float myfloat, temp int something})
+0:19          Constant:
+0:19            0 (const int)
+0:19        Convert uint to float (temp float)
+0:19          add (temp uint)
+0:19            add (temp uint)
+0:19              direct index (layout(location=3 ) temp uint)
+0:19                'test' (layout(location=3 ) in 3-element array of uint)
+0:19                Constant:
+0:19                  0 (const int)
+0:19              direct index (layout(location=3 ) temp uint)
+0:19                'test' (layout(location=3 ) in 3-element array of uint)
+0:19                Constant:
+0:19                  1 (const int)
+0:19            direct index (layout(location=3 ) temp uint)
+0:19              'test' (layout(location=3 ) in 3-element array of uint)
+0:19              Constant:
+0:19                2 (const int)
+0:20      move second child to first child (temp int)
+0:20        something: direct index for structure (temp int)
+0:20          'Vert' (temp structure{temp float myfloat, temp int something})
+0:20          Constant:
+0:20            1 (const int)
+0:20        Convert uint to int (temp int)
+0:20          direct index (layout(location=0 ) temp uint)
+0:20            'VertexID' (layout(location=0 ) in 3-element array of uint)
+0:20            Constant:
+0:20              0 (const int)
+0:22      Sequence
+0:22        move second child to first child (temp structure{temp float myfloat, temp int something})
+0:22          'OutputStream' (out structure{temp float myfloat, temp int something})
+0:22          'Vert' (temp structure{temp float myfloat, temp int something})
+0:22        EmitVertex (temp void)
+0:23      Sequence
+0:23        move second child to first child (temp structure{temp float myfloat, temp int something})
+0:23          'OutputStream' (out structure{temp float myfloat, temp int something})
+0:23          'Vert' (temp structure{temp float myfloat, temp int something})
+0:23        EmitVertex (temp void)
+0:24      EndPrimitive (temp void)
+0:?   Linker Objects
+0:?     'VertexID' (layout(location=0 ) in 3-element array of uint)
+0:?     'test' (layout(location=3 ) in 3-element array of uint)
+0:?     'myfloat' (layout(location=0 ) out float)
+0:?     'something' (layout(location=1 ) out int)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 45
+
+                              Capability Geometry
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Geometry 4  "main" 16 31 38 42 44
+                              ExecutionMode 4 Triangles
+                              ExecutionMode 4 Invocations 1
+                              ExecutionMode 4 OutputLineStrip
+                              ExecutionMode 4 OutputVertices 4
+                              Name 4  "main"
+                              Name 8  "PSInput"
+                              MemberName 8(PSInput) 0  "myfloat"
+                              MemberName 8(PSInput) 1  "something"
+                              Name 10  "Vert"
+                              Name 16  "test"
+                              Name 31  "VertexID"
+                              Name 38  "OutputStream"
+                              Name 42  "myfloat"
+                              Name 44  "something"
+                              Decorate 16(test) Location 3
+                              Decorate 31(VertexID) Location 0
+                              Decorate 42(myfloat) Location 0
+                              Decorate 44(something) Location 1
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeInt 32 1
+      8(PSInput):             TypeStruct 6(float) 7(int)
+               9:             TypePointer Function 8(PSInput)
+              11:      7(int) Constant 0
+              12:             TypeInt 32 0
+              13:     12(int) Constant 3
+              14:             TypeArray 12(int) 13
+              15:             TypePointer Input 14
+        16(test):     15(ptr) Variable Input
+              17:             TypePointer Input 12(int)
+              20:      7(int) Constant 1
+              24:      7(int) Constant 2
+              29:             TypePointer Function 6(float)
+    31(VertexID):     15(ptr) Variable Input
+              35:             TypePointer Function 7(int)
+              37:             TypePointer Output 8(PSInput)
+38(OutputStream):     37(ptr) Variable Output
+              41:             TypePointer Output 6(float)
+     42(myfloat):     41(ptr) Variable Output
+              43:             TypePointer Output 7(int)
+   44(something):     43(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+        10(Vert):      9(ptr) Variable Function
+              18:     17(ptr) AccessChain 16(test) 11
+              19:     12(int) Load 18
+              21:     17(ptr) AccessChain 16(test) 20
+              22:     12(int) Load 21
+              23:     12(int) IAdd 19 22
+              25:     17(ptr) AccessChain 16(test) 24
+              26:     12(int) Load 25
+              27:     12(int) IAdd 23 26
+              28:    6(float) ConvertUToF 27
+              30:     29(ptr) AccessChain 10(Vert) 11
+                              Store 30 28
+              32:     17(ptr) AccessChain 31(VertexID) 11
+              33:     12(int) Load 32
+              34:      7(int) Bitcast 33
+              36:     35(ptr) AccessChain 10(Vert) 20
+                              Store 36 34
+              39:  8(PSInput) Load 10(Vert)
+                              Store 38(OutputStream) 39
+                              EmitVertex
+              40:  8(PSInput) Load 10(Vert)
+                              Store 38(OutputStream) 40
+                              EmitVertex
+                              EndPrimitive
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.buffer.frag.out b/Test/baseResults/hlsl.buffer.frag.out
index 2eb1f9c..dbb2b5e 100755
--- a/Test/baseResults/hlsl.buffer.frag.out
+++ b/Test/baseResults/hlsl.buffer.frag.out
@@ -32,12 +32,12 @@
 0:31                0 (const uint)
 0:31        Branch: Return
 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)
 0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v1})
 0:?     'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer 4-component vector of float v2})
 0:?     'anon@2' (layout(set=10 binding=2 row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v3, layout(row_major std140 offset=20 ) uniform int i3})
 0:?     'anon@3' (layout(binding=8 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v4, layout(row_major std430 offset=48 ) buffer int i4, layout(row_major std430 offset=60 ) buffer float f1, layout(row_major std430 offset=64 ) buffer float f3, layout(row_major std430 offset=68 ) buffer float f4, layout(row_major std430 offset=72 ) buffer float f5, layout(row_major std430 ) buffer float f6, layout(row_major std430 ) buffer float f7, layout(row_major std430 ) buffer 3X4 matrix of float m1, layout(column_major std430 ) buffer 3X4 matrix of float m2, layout(row_major std430 ) buffer 3X4 matrix of float m3, ...})
-0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
-0:?     'input' (layout(location=0 ) in 4-component vector of float)
 
 
 Linked fragment stage:
@@ -76,12 +76,12 @@
 0:31                0 (const uint)
 0:31        Branch: Return
 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)
 0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v1})
 0:?     'anon@1' (layout(row_major std430 ) buffer block{layout(row_major std430 ) buffer 4-component vector of float v2})
 0:?     'anon@2' (layout(set=10 binding=2 row_major std140 ) uniform block{layout(row_major std140 ) uniform 4-component vector of float v3, layout(row_major std140 offset=20 ) uniform int i3})
 0:?     'anon@3' (layout(binding=8 row_major std430 ) buffer block{layout(row_major std430 offset=16 ) buffer 4-component vector of float v4, layout(row_major std430 offset=48 ) buffer int i4, layout(row_major std430 offset=60 ) buffer float f1, layout(row_major std430 offset=64 ) buffer float f3, layout(row_major std430 offset=68 ) buffer float f4, layout(row_major std430 offset=72 ) buffer float f5, layout(row_major std430 ) buffer float f6, layout(row_major std430 ) buffer float f7, layout(row_major std430 ) buffer 3X4 matrix of float m1, layout(column_major std430 ) buffer 3X4 matrix of float m2, layout(row_major std430 ) buffer 3X4 matrix of float m3, ...})
-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): 80001
diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
index ff18441..56a2ce8 100644
--- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out
+++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
@@ -155,6 +155,8 @@
 0:43                1 (const int)
 0:43        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
 0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
@@ -166,8 +168,6 @@
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
 
 
 Linked fragment stage:
@@ -329,6 +329,8 @@
 0:43                1 (const int)
 0:43        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
 0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
@@ -340,8 +342,6 @@
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
index ecd1f0d..799dcc3 100644
--- a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
+++ b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out
@@ -167,6 +167,8 @@
 0:43                1 (const int)
 0:43        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
 0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
@@ -178,8 +180,6 @@
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
 
 
 Linked fragment stage:
@@ -341,6 +341,8 @@
 0:43                1 (const int)
 0:43        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
 0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
@@ -352,7 +354,5 @@
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
 
 SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/hlsl.comparison.vec.frag.out b/Test/baseResults/hlsl.comparison.vec.frag.out
new file mode 100644
index 0000000..1bf63ec
--- /dev/null
+++ b/Test/baseResults/hlsl.comparison.vec.frag.out
@@ -0,0 +1,402 @@
+hlsl.comparison.vec.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:4  Function Definition: Bug1(vf4; (temp void)
+0:4    Function Parameters: 
+0:4      'a' (in 4-component vector of float)
+0:?     Sequence
+0:5      Sequence
+0:5        move second child to first child (temp 4-component vector of float)
+0:5          'v04' (temp 4-component vector of float)
+0:?           Constant:
+0:?             0.000000
+0:?             0.000000
+0:?             0.000000
+0:?             0.000000
+0:6      Sequence
+0:6        move second child to first child (temp float)
+0:6          'v01' (temp float)
+0:6          Constant:
+0:6            0.000000
+0:8      Sequence
+0:8        move second child to first child (temp 4-component vector of bool)
+0:8          'r00' (temp 4-component vector of bool)
+0:8          Equal (temp 4-component vector of bool)
+0:8            'a' (in 4-component vector of float)
+0:8            'v04' (temp 4-component vector of float)
+0:9      Sequence
+0:9        move second child to first child (temp 4-component vector of bool)
+0:9          'r01' (temp 4-component vector of bool)
+0:9          NotEqual (temp 4-component vector of bool)
+0:9            'a' (in 4-component vector of float)
+0:9            'v04' (temp 4-component vector of float)
+0:10      Sequence
+0:10        move second child to first child (temp 4-component vector of bool)
+0:10          'r02' (temp 4-component vector of bool)
+0:10          Compare Less Than (temp 4-component vector of bool)
+0:10            'a' (in 4-component vector of float)
+0:10            'v04' (temp 4-component vector of float)
+0:11      Sequence
+0:11        move second child to first child (temp 4-component vector of bool)
+0:11          'r03' (temp 4-component vector of bool)
+0:11          Compare Greater Than (temp 4-component vector of bool)
+0:11            'a' (in 4-component vector of float)
+0:11            'v04' (temp 4-component vector of float)
+0:13      Sequence
+0:13        move second child to first child (temp 4-component vector of bool)
+0:13          'r10' (temp 4-component vector of bool)
+0:13          Equal (temp 4-component vector of bool)
+0:13            'a' (in 4-component vector of float)
+0:13            Construct vec4 (in 4-component vector of float)
+0:13              'v01' (temp float)
+0:14      Sequence
+0:14        move second child to first child (temp 4-component vector of bool)
+0:14          'r11' (temp 4-component vector of bool)
+0:14          NotEqual (temp 4-component vector of bool)
+0:14            'a' (in 4-component vector of float)
+0:14            Construct vec4 (in 4-component vector of float)
+0:14              'v01' (temp float)
+0:15      Sequence
+0:15        move second child to first child (temp 4-component vector of bool)
+0:15          'r12' (temp 4-component vector of bool)
+0:15          Compare Less Than (temp 4-component vector of bool)
+0:15            'a' (in 4-component vector of float)
+0:15            Construct vec4 (in 4-component vector of float)
+0:15              'v01' (temp float)
+0:16      Sequence
+0:16        move second child to first child (temp 4-component vector of bool)
+0:16          'r13' (temp 4-component vector of bool)
+0:16          Compare Greater Than (temp 4-component vector of bool)
+0:16            'a' (in 4-component vector of float)
+0:16            Construct vec4 (in 4-component vector of float)
+0:16              'v01' (temp float)
+0:18      Sequence
+0:18        move second child to first child (temp 4-component vector of bool)
+0:18          'r20' (temp 4-component vector of bool)
+0:18          Equal (temp 4-component vector of bool)
+0:18            Construct vec4 (in 4-component vector of float)
+0:18              'v01' (temp float)
+0:18            'a' (in 4-component vector of float)
+0:19      Sequence
+0:19        move second child to first child (temp 4-component vector of bool)
+0:19          'r21' (temp 4-component vector of bool)
+0:19          NotEqual (temp 4-component vector of bool)
+0:19            Construct vec4 (in 4-component vector of float)
+0:19              'v01' (temp float)
+0:19            'a' (in 4-component vector of float)
+0:20      Sequence
+0:20        move second child to first child (temp 4-component vector of bool)
+0:20          'r22' (temp 4-component vector of bool)
+0:20          Compare Less Than (temp 4-component vector of bool)
+0:20            Construct vec4 (in 4-component vector of float)
+0:20              'v01' (temp float)
+0:20            'a' (in 4-component vector of float)
+0:21      Sequence
+0:21        move second child to first child (temp 4-component vector of bool)
+0:21          'r23' (temp 4-component vector of bool)
+0:21          Compare Greater Than (temp 4-component vector of bool)
+0:21            Construct vec4 (in 4-component vector of float)
+0:21              'v01' (temp float)
+0:21            'a' (in 4-component vector of float)
+0:30  Function Definition: main( (temp structure{temp 4-component vector of float Color})
+0:30    Function Parameters: 
+0:?     Sequence
+0:32      move second child to first child (temp 4-component vector of float)
+0:32        Color: direct index for structure (temp 4-component vector of float)
+0:32          'psout' (temp structure{temp 4-component vector of float Color})
+0:32          Constant:
+0:32            0 (const int)
+0:32        Constant:
+0:32          0.000000
+0:32          0.000000
+0:32          0.000000
+0:32          0.000000
+0:33      Sequence
+0:33        Sequence
+0:33          move second child to first child (temp 4-component vector of float)
+0:?             'Color' (layout(location=0 ) out 4-component vector of float)
+0:33            Color: direct index for structure (temp 4-component vector of float)
+0:33              'psout' (temp structure{temp 4-component vector of float Color})
+0:33              Constant:
+0:33                0 (const int)
+0:33        Branch: Return
+0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float uf4})
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:4  Function Definition: Bug1(vf4; (temp void)
+0:4    Function Parameters: 
+0:4      'a' (in 4-component vector of float)
+0:?     Sequence
+0:5      Sequence
+0:5        move second child to first child (temp 4-component vector of float)
+0:5          'v04' (temp 4-component vector of float)
+0:?           Constant:
+0:?             0.000000
+0:?             0.000000
+0:?             0.000000
+0:?             0.000000
+0:6      Sequence
+0:6        move second child to first child (temp float)
+0:6          'v01' (temp float)
+0:6          Constant:
+0:6            0.000000
+0:8      Sequence
+0:8        move second child to first child (temp 4-component vector of bool)
+0:8          'r00' (temp 4-component vector of bool)
+0:8          Equal (temp 4-component vector of bool)
+0:8            'a' (in 4-component vector of float)
+0:8            'v04' (temp 4-component vector of float)
+0:9      Sequence
+0:9        move second child to first child (temp 4-component vector of bool)
+0:9          'r01' (temp 4-component vector of bool)
+0:9          NotEqual (temp 4-component vector of bool)
+0:9            'a' (in 4-component vector of float)
+0:9            'v04' (temp 4-component vector of float)
+0:10      Sequence
+0:10        move second child to first child (temp 4-component vector of bool)
+0:10          'r02' (temp 4-component vector of bool)
+0:10          Compare Less Than (temp 4-component vector of bool)
+0:10            'a' (in 4-component vector of float)
+0:10            'v04' (temp 4-component vector of float)
+0:11      Sequence
+0:11        move second child to first child (temp 4-component vector of bool)
+0:11          'r03' (temp 4-component vector of bool)
+0:11          Compare Greater Than (temp 4-component vector of bool)
+0:11            'a' (in 4-component vector of float)
+0:11            'v04' (temp 4-component vector of float)
+0:13      Sequence
+0:13        move second child to first child (temp 4-component vector of bool)
+0:13          'r10' (temp 4-component vector of bool)
+0:13          Equal (temp 4-component vector of bool)
+0:13            'a' (in 4-component vector of float)
+0:13            Construct vec4 (in 4-component vector of float)
+0:13              'v01' (temp float)
+0:14      Sequence
+0:14        move second child to first child (temp 4-component vector of bool)
+0:14          'r11' (temp 4-component vector of bool)
+0:14          NotEqual (temp 4-component vector of bool)
+0:14            'a' (in 4-component vector of float)
+0:14            Construct vec4 (in 4-component vector of float)
+0:14              'v01' (temp float)
+0:15      Sequence
+0:15        move second child to first child (temp 4-component vector of bool)
+0:15          'r12' (temp 4-component vector of bool)
+0:15          Compare Less Than (temp 4-component vector of bool)
+0:15            'a' (in 4-component vector of float)
+0:15            Construct vec4 (in 4-component vector of float)
+0:15              'v01' (temp float)
+0:16      Sequence
+0:16        move second child to first child (temp 4-component vector of bool)
+0:16          'r13' (temp 4-component vector of bool)
+0:16          Compare Greater Than (temp 4-component vector of bool)
+0:16            'a' (in 4-component vector of float)
+0:16            Construct vec4 (in 4-component vector of float)
+0:16              'v01' (temp float)
+0:18      Sequence
+0:18        move second child to first child (temp 4-component vector of bool)
+0:18          'r20' (temp 4-component vector of bool)
+0:18          Equal (temp 4-component vector of bool)
+0:18            Construct vec4 (in 4-component vector of float)
+0:18              'v01' (temp float)
+0:18            'a' (in 4-component vector of float)
+0:19      Sequence
+0:19        move second child to first child (temp 4-component vector of bool)
+0:19          'r21' (temp 4-component vector of bool)
+0:19          NotEqual (temp 4-component vector of bool)
+0:19            Construct vec4 (in 4-component vector of float)
+0:19              'v01' (temp float)
+0:19            'a' (in 4-component vector of float)
+0:20      Sequence
+0:20        move second child to first child (temp 4-component vector of bool)
+0:20          'r22' (temp 4-component vector of bool)
+0:20          Compare Less Than (temp 4-component vector of bool)
+0:20            Construct vec4 (in 4-component vector of float)
+0:20              'v01' (temp float)
+0:20            'a' (in 4-component vector of float)
+0:21      Sequence
+0:21        move second child to first child (temp 4-component vector of bool)
+0:21          'r23' (temp 4-component vector of bool)
+0:21          Compare Greater Than (temp 4-component vector of bool)
+0:21            Construct vec4 (in 4-component vector of float)
+0:21              'v01' (temp float)
+0:21            'a' (in 4-component vector of float)
+0:30  Function Definition: main( (temp structure{temp 4-component vector of float Color})
+0:30    Function Parameters: 
+0:?     Sequence
+0:32      move second child to first child (temp 4-component vector of float)
+0:32        Color: direct index for structure (temp 4-component vector of float)
+0:32          'psout' (temp structure{temp 4-component vector of float Color})
+0:32          Constant:
+0:32            0 (const int)
+0:32        Constant:
+0:32          0.000000
+0:32          0.000000
+0:32          0.000000
+0:32          0.000000
+0:33      Sequence
+0:33        Sequence
+0:33          move second child to first child (temp 4-component vector of float)
+0:?             'Color' (layout(location=0 ) out 4-component vector of float)
+0:33            Color: direct index for structure (temp 4-component vector of float)
+0:33              'psout' (temp structure{temp 4-component vector of float Color})
+0:33              Constant:
+0:33                0 (const int)
+0:33        Branch: Return
+0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float uf4})
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 91
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 84
+                              ExecutionMode 4 OriginUpperLeft
+                              Name 4  "main"
+                              Name 11  "Bug1(vf4;"
+                              Name 10  "a"
+                              Name 13  "v04"
+                              Name 17  "v01"
+                              Name 21  "r00"
+                              Name 25  "r01"
+                              Name 29  "r02"
+                              Name 33  "r03"
+                              Name 37  "r10"
+                              Name 42  "r11"
+                              Name 47  "r12"
+                              Name 52  "r13"
+                              Name 57  "r20"
+                              Name 62  "r21"
+                              Name 67  "r22"
+                              Name 72  "r23"
+                              Name 77  "PS_OUTPUT"
+                              MemberName 77(PS_OUTPUT) 0  "Color"
+                              Name 79  "psout"
+                              Name 84  "Color"
+                              Name 88  "$Global"
+                              MemberName 88($Global) 0  "uf4"
+                              Name 90  ""
+                              Decorate 84(Color) Location 0
+                              MemberDecorate 88($Global) 0 Offset 0
+                              Decorate 88($Global) Block
+                              Decorate 90 DescriptorSet 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypePointer Function 7(fvec4)
+               9:             TypeFunction 2 8(ptr)
+              14:    6(float) Constant 0
+              15:    7(fvec4) ConstantComposite 14 14 14 14
+              16:             TypePointer Function 6(float)
+              18:             TypeBool
+              19:             TypeVector 18(bool) 4
+              20:             TypePointer Function 19(bvec4)
+   77(PS_OUTPUT):             TypeStruct 7(fvec4)
+              78:             TypePointer Function 77(PS_OUTPUT)
+              80:             TypeInt 32 1
+              81:     80(int) Constant 0
+              83:             TypePointer Output 7(fvec4)
+       84(Color):     83(ptr) Variable Output
+     88($Global):             TypeStruct 7(fvec4)
+              89:             TypePointer Uniform 88($Global)
+              90:     89(ptr) Variable Uniform
+         4(main):           2 Function None 3
+               5:             Label
+       79(psout):     78(ptr) Variable Function
+              82:      8(ptr) AccessChain 79(psout) 81
+                              Store 82 15
+              85:      8(ptr) AccessChain 79(psout) 81
+              86:    7(fvec4) Load 85
+                              Store 84(Color) 86
+                              Return
+                              FunctionEnd
+   11(Bug1(vf4;):           2 Function None 9
+           10(a):      8(ptr) FunctionParameter
+              12:             Label
+         13(v04):      8(ptr) Variable Function
+         17(v01):     16(ptr) Variable Function
+         21(r00):     20(ptr) Variable Function
+         25(r01):     20(ptr) Variable Function
+         29(r02):     20(ptr) Variable Function
+         33(r03):     20(ptr) Variable Function
+         37(r10):     20(ptr) Variable Function
+         42(r11):     20(ptr) Variable Function
+         47(r12):     20(ptr) Variable Function
+         52(r13):     20(ptr) Variable Function
+         57(r20):     20(ptr) Variable Function
+         62(r21):     20(ptr) Variable Function
+         67(r22):     20(ptr) Variable Function
+         72(r23):     20(ptr) Variable Function
+                              Store 13(v04) 15
+                              Store 17(v01) 14
+              22:    7(fvec4) Load 10(a)
+              23:    7(fvec4) Load 13(v04)
+              24:   19(bvec4) FOrdEqual 22 23
+                              Store 21(r00) 24
+              26:    7(fvec4) Load 10(a)
+              27:    7(fvec4) Load 13(v04)
+              28:   19(bvec4) FOrdNotEqual 26 27
+                              Store 25(r01) 28
+              30:    7(fvec4) Load 10(a)
+              31:    7(fvec4) Load 13(v04)
+              32:   19(bvec4) FOrdLessThan 30 31
+                              Store 29(r02) 32
+              34:    7(fvec4) Load 10(a)
+              35:    7(fvec4) Load 13(v04)
+              36:   19(bvec4) FOrdGreaterThan 34 35
+                              Store 33(r03) 36
+              38:    7(fvec4) Load 10(a)
+              39:    6(float) Load 17(v01)
+              40:    7(fvec4) CompositeConstruct 39 39 39 39
+              41:   19(bvec4) FOrdEqual 38 40
+                              Store 37(r10) 41
+              43:    7(fvec4) Load 10(a)
+              44:    6(float) Load 17(v01)
+              45:    7(fvec4) CompositeConstruct 44 44 44 44
+              46:   19(bvec4) FOrdNotEqual 43 45
+                              Store 42(r11) 46
+              48:    7(fvec4) Load 10(a)
+              49:    6(float) Load 17(v01)
+              50:    7(fvec4) CompositeConstruct 49 49 49 49
+              51:   19(bvec4) FOrdLessThan 48 50
+                              Store 47(r12) 51
+              53:    7(fvec4) Load 10(a)
+              54:    6(float) Load 17(v01)
+              55:    7(fvec4) CompositeConstruct 54 54 54 54
+              56:   19(bvec4) FOrdGreaterThan 53 55
+                              Store 52(r13) 56
+              58:    6(float) Load 17(v01)
+              59:    7(fvec4) CompositeConstruct 58 58 58 58
+              60:    7(fvec4) Load 10(a)
+              61:   19(bvec4) FOrdEqual 59 60
+                              Store 57(r20) 61
+              63:    6(float) Load 17(v01)
+              64:    7(fvec4) CompositeConstruct 63 63 63 63
+              65:    7(fvec4) Load 10(a)
+              66:   19(bvec4) FOrdNotEqual 64 65
+                              Store 62(r21) 66
+              68:    6(float) Load 17(v01)
+              69:    7(fvec4) CompositeConstruct 68 68 68 68
+              70:    7(fvec4) Load 10(a)
+              71:   19(bvec4) FOrdLessThan 69 70
+                              Store 67(r22) 71
+              73:    6(float) Load 17(v01)
+              74:    7(fvec4) CompositeConstruct 73 73 73 73
+              75:    7(fvec4) Load 10(a)
+              76:   19(bvec4) FOrdGreaterThan 74 75
+                              Store 72(r23) 76
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.doLoop.frag.out b/Test/baseResults/hlsl.doLoop.frag.out
index 2d5a8fb..c060cdc 100755
--- a/Test/baseResults/hlsl.doLoop.frag.out
+++ b/Test/baseResults/hlsl.doLoop.frag.out
@@ -18,9 +18,10 @@
 0:4        No loop body
 0:5      Loop with condition not tested first
 0:5        Loop Condition
-0:5        Compare Equal (temp bool)
-0:5          'input' (layout(location=0 ) in 4-component vector of float)
-0:5          'input' (layout(location=0 ) in 4-component vector of float)
+0:5        all (temp bool)
+0:5          Equal (temp 4-component vector of bool)
+0:5            'input' (layout(location=0 ) in 4-component vector of float)
+0:5            'input' (layout(location=0 ) in 4-component vector of float)
 0:5        Loop Body
 0:5        Sequence
 0:5          move second child to first child (temp 4-component vector of float)
@@ -54,9 +55,10 @@
 0:4        No loop body
 0:5      Loop with condition not tested first
 0:5        Loop Condition
-0:5        Compare Equal (temp bool)
-0:5          'input' (layout(location=0 ) in 4-component vector of float)
-0:5          'input' (layout(location=0 ) in 4-component vector of float)
+0:5        all (temp bool)
+0:5          Equal (temp 4-component vector of bool)
+0:5            'input' (layout(location=0 ) in 4-component vector of float)
+0:5            'input' (layout(location=0 ) in 4-component vector of float)
 0:5        Loop Body
 0:5        Sequence
 0:5          move second child to first child (temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.float1.frag.out b/Test/baseResults/hlsl.float1.frag.out
index 83a243f..641febd 100755
--- a/Test/baseResults/hlsl.float1.frag.out
+++ b/Test/baseResults/hlsl.float1.frag.out
@@ -32,6 +32,7 @@
 
 Linked fragment stage:
 
+WARNING: Linking fragment stage: Entry point not found
 
 Shader version: 450
 gl_FragCoord origin is upper left
@@ -92,6 +93,7 @@
                5:             Label
                               Store 14(f1) 15
                               Store 16(scalar) 17
+                              Return
                               FunctionEnd
 11(ShaderFunction(vf1;f1;):    6(float) Function None 8
      9(inFloat1):      7(ptr) FunctionParameter
diff --git a/Test/baseResults/hlsl.float4.frag.out b/Test/baseResults/hlsl.float4.frag.out
index 6caac24..27c9a5c 100755
--- a/Test/baseResults/hlsl.float4.frag.out
+++ b/Test/baseResults/hlsl.float4.frag.out
@@ -17,11 +17,12 @@
 0:10            Constant:
 0:10              0 (const uint)
 0:?   Linker Objects
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face 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})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face 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})
 
 
 Linked fragment stage:
 
+WARNING: Linking fragment stage: Entry point not found
 
 Shader version: 450
 gl_FragCoord origin is upper left
@@ -38,7 +39,7 @@
 0:10            Constant:
 0:10              0 (const uint)
 0:?   Linker Objects
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face 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})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 4-component vector of float AmbientColor, layout(offset=16 ) uniform bool Face 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): 80001
@@ -82,6 +83,7 @@
               20:             TypePointer Uniform 7(fvec4)
 4(PixelShaderFunction):           2 Function None 3
                5:             Label
+                              Return
                               FunctionEnd
 11(ShaderFunction(vf4;):    7(fvec4) Function None 9
        10(input):      8(ptr) FunctionParameter
diff --git a/Test/baseResults/hlsl.forLoop.frag.out b/Test/baseResults/hlsl.forLoop.frag.out
index cc47578..85b8fb2 100755
--- a/Test/baseResults/hlsl.forLoop.frag.out
+++ b/Test/baseResults/hlsl.forLoop.frag.out
@@ -19,16 +19,18 @@
 0:?       Sequence
 0:5        Loop with condition tested first
 0:5          Loop Condition
-0:5          Compare Not Equal (temp bool)
-0:5            'input' (layout(location=0 ) in 4-component vector of float)
-0:5            'input' (layout(location=0 ) in 4-component vector of float)
+0:5          any (temp bool)
+0:5            NotEqual (temp 4-component vector of bool)
+0:5              'input' (layout(location=0 ) in 4-component vector of float)
+0:5              'input' (layout(location=0 ) in 4-component vector of float)
 0:5          No loop body
 0:?       Sequence
 0:6        Loop with condition tested first
 0:6          Loop Condition
-0:6          Compare Not Equal (temp bool)
-0:6            'input' (layout(location=0 ) in 4-component vector of float)
-0:6            'input' (layout(location=0 ) in 4-component vector of float)
+0:6          any (temp bool)
+0:6            NotEqual (temp 4-component vector of bool)
+0:6              'input' (layout(location=0 ) in 4-component vector of float)
+0:6              'input' (layout(location=0 ) in 4-component vector of float)
 0:6          Loop Body
 0:?           Sequence
 0:6            Sequence
@@ -42,9 +44,10 @@
 0:7          'input' (layout(location=0 ) in 4-component vector of float)
 0:7        Loop with condition tested first
 0:7          Loop Condition
-0:7          Compare Not Equal (temp bool)
-0:7            'input' (layout(location=0 ) in 4-component vector of float)
-0:7            'input' (layout(location=0 ) in 4-component vector of float)
+0:7          any (temp bool)
+0:7            NotEqual (temp 4-component vector of bool)
+0:7              'input' (layout(location=0 ) in 4-component vector of float)
+0:7              'input' (layout(location=0 ) in 4-component vector of float)
 0:7          Loop Body
 0:?           Sequence
 0:7            Sequence
@@ -141,16 +144,18 @@
 0:?       Sequence
 0:5        Loop with condition tested first
 0:5          Loop Condition
-0:5          Compare Not Equal (temp bool)
-0:5            'input' (layout(location=0 ) in 4-component vector of float)
-0:5            'input' (layout(location=0 ) in 4-component vector of float)
+0:5          any (temp bool)
+0:5            NotEqual (temp 4-component vector of bool)
+0:5              'input' (layout(location=0 ) in 4-component vector of float)
+0:5              'input' (layout(location=0 ) in 4-component vector of float)
 0:5          No loop body
 0:?       Sequence
 0:6        Loop with condition tested first
 0:6          Loop Condition
-0:6          Compare Not Equal (temp bool)
-0:6            'input' (layout(location=0 ) in 4-component vector of float)
-0:6            'input' (layout(location=0 ) in 4-component vector of float)
+0:6          any (temp bool)
+0:6            NotEqual (temp 4-component vector of bool)
+0:6              'input' (layout(location=0 ) in 4-component vector of float)
+0:6              'input' (layout(location=0 ) in 4-component vector of float)
 0:6          Loop Body
 0:?           Sequence
 0:6            Sequence
@@ -164,9 +169,10 @@
 0:7          'input' (layout(location=0 ) in 4-component vector of float)
 0:7        Loop with condition tested first
 0:7          Loop Condition
-0:7          Compare Not Equal (temp bool)
-0:7            'input' (layout(location=0 ) in 4-component vector of float)
-0:7            'input' (layout(location=0 ) in 4-component vector of float)
+0:7          any (temp bool)
+0:7            NotEqual (temp 4-component vector of bool)
+0:7              'input' (layout(location=0 ) in 4-component vector of float)
+0:7              'input' (layout(location=0 ) in 4-component vector of float)
 0:7          Loop Body
 0:?           Sequence
 0:7            Sequence
diff --git a/Test/baseResults/hlsl.gather.array.dx10.frag.out b/Test/baseResults/hlsl.gather.array.dx10.frag.out
index a09b87c..ee550d1 100644
--- a/Test/baseResults/hlsl.gather.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.array.dx10.frag.out
@@ -8,7 +8,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of float)
 0:29          'txval20' (temp 4-component vector of float)
-0:29          textureGather (global 4-component vector of float)
+0:29          textureGather (temp 4-component vector of float)
 0:29            Construct combined texture-sampler (temp sampler2DArray)
 0:29              'g_tTex2df4a' (uniform texture2DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -19,7 +19,7 @@
 0:30      Sequence
 0:30        move second child to first child (temp 4-component vector of int)
 0:30          'txval21' (temp 4-component vector of int)
-0:30          textureGather (global 4-component vector of int)
+0:30          textureGather (temp 4-component vector of int)
 0:30            Construct combined texture-sampler (temp isampler2DArray)
 0:30              'g_tTex2di4a' (uniform itexture2DArray)
 0:30              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -30,7 +30,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of uint)
 0:31          'txval22' (temp 4-component vector of uint)
-0:31          textureGather (global 4-component vector of uint)
+0:31          textureGather (temp 4-component vector of uint)
 0:31            Construct combined texture-sampler (temp usampler2DArray)
 0:31              'g_tTex2du4a' (uniform utexture2DArray)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -41,7 +41,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval40' (temp 4-component vector of float)
-0:35          textureGather (global 4-component vector of float)
+0:35          textureGather (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp samplerCubeArray)
 0:35              'g_tTexcdf4a' (uniform textureCubeArray)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -53,7 +53,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval41' (temp 4-component vector of int)
-0:36          textureGather (global 4-component vector of int)
+0:36          textureGather (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isamplerCubeArray)
 0:36              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -65,7 +65,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval42' (temp 4-component vector of uint)
-0:37          textureGather (global 4-component vector of uint)
+0:37          textureGather (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usamplerCubeArray)
 0:37              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -107,6 +107,8 @@
 0:42                1 (const int)
 0:42        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
 0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
@@ -118,8 +120,6 @@
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
 
 
 Linked fragment stage:
@@ -134,7 +134,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of float)
 0:29          'txval20' (temp 4-component vector of float)
-0:29          textureGather (global 4-component vector of float)
+0:29          textureGather (temp 4-component vector of float)
 0:29            Construct combined texture-sampler (temp sampler2DArray)
 0:29              'g_tTex2df4a' (uniform texture2DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -145,7 +145,7 @@
 0:30      Sequence
 0:30        move second child to first child (temp 4-component vector of int)
 0:30          'txval21' (temp 4-component vector of int)
-0:30          textureGather (global 4-component vector of int)
+0:30          textureGather (temp 4-component vector of int)
 0:30            Construct combined texture-sampler (temp isampler2DArray)
 0:30              'g_tTex2di4a' (uniform itexture2DArray)
 0:30              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -156,7 +156,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of uint)
 0:31          'txval22' (temp 4-component vector of uint)
-0:31          textureGather (global 4-component vector of uint)
+0:31          textureGather (temp 4-component vector of uint)
 0:31            Construct combined texture-sampler (temp usampler2DArray)
 0:31              'g_tTex2du4a' (uniform utexture2DArray)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -167,7 +167,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval40' (temp 4-component vector of float)
-0:35          textureGather (global 4-component vector of float)
+0:35          textureGather (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp samplerCubeArray)
 0:35              'g_tTexcdf4a' (uniform textureCubeArray)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -179,7 +179,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval41' (temp 4-component vector of int)
-0:36          textureGather (global 4-component vector of int)
+0:36          textureGather (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isamplerCubeArray)
 0:36              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -191,7 +191,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval42' (temp 4-component vector of uint)
-0:37          textureGather (global 4-component vector of uint)
+0:37          textureGather (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usamplerCubeArray)
 0:37              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -233,6 +233,8 @@
 0:42                1 (const int)
 0:42        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
 0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
@@ -244,8 +246,6 @@
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.gather.basic.dx10.frag.out b/Test/baseResults/hlsl.gather.basic.dx10.frag.out
index 467ccf4..86e106c 100644
--- a/Test/baseResults/hlsl.gather.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.basic.dx10.frag.out
@@ -8,7 +8,7 @@
 0:34      Sequence
 0:34        move second child to first child (temp 4-component vector of float)
 0:34          'txval20' (temp 4-component vector of float)
-0:34          textureGather (global 4-component vector of float)
+0:34          textureGather (temp 4-component vector of float)
 0:34            Construct combined texture-sampler (temp sampler2D)
 0:34              'g_tTex2df4' (uniform texture2D)
 0:34              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -18,7 +18,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of int)
 0:35          'txval21' (temp 4-component vector of int)
-0:35          textureGather (global 4-component vector of int)
+0:35          textureGather (temp 4-component vector of int)
 0:35            Construct combined texture-sampler (temp isampler2D)
 0:35              'g_tTex2di4' (uniform itexture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -28,7 +28,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of uint)
 0:36          'txval22' (temp 4-component vector of uint)
-0:36          textureGather (global 4-component vector of uint)
+0:36          textureGather (temp 4-component vector of uint)
 0:36            Construct combined texture-sampler (temp usampler2D)
 0:36              'g_tTex2du4' (uniform utexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -38,7 +38,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of float)
 0:40          'txval40' (temp 4-component vector of float)
-0:40          textureGather (global 4-component vector of float)
+0:40          textureGather (temp 4-component vector of float)
 0:40            Construct combined texture-sampler (temp samplerCube)
 0:40              'g_tTexcdf4' (uniform textureCube)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -49,7 +49,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of int)
 0:41          'txval41' (temp 4-component vector of int)
-0:41          textureGather (global 4-component vector of int)
+0:41          textureGather (temp 4-component vector of int)
 0:41            Construct combined texture-sampler (temp isamplerCube)
 0:41              'g_tTexcdi4' (uniform itextureCube)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -60,7 +60,7 @@
 0:42      Sequence
 0:42        move second child to first child (temp 4-component vector of uint)
 0:42          'txval42' (temp 4-component vector of uint)
-0:42          textureGather (global 4-component vector of uint)
+0:42          textureGather (temp 4-component vector of uint)
 0:42            Construct combined texture-sampler (temp usamplerCube)
 0:42              'g_tTexcdu4' (uniform utextureCube)
 0:42              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -101,6 +101,8 @@
 0:47                1 (const int)
 0:47        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_sSamp2d' (uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -116,8 +118,6 @@
 0:?     'g_tTexcdf4' (uniform textureCube)
 0:?     'g_tTexcdi4' (uniform itextureCube)
 0:?     'g_tTexcdu4' (uniform utextureCube)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
 
 
 Linked fragment stage:
@@ -132,7 +132,7 @@
 0:34      Sequence
 0:34        move second child to first child (temp 4-component vector of float)
 0:34          'txval20' (temp 4-component vector of float)
-0:34          textureGather (global 4-component vector of float)
+0:34          textureGather (temp 4-component vector of float)
 0:34            Construct combined texture-sampler (temp sampler2D)
 0:34              'g_tTex2df4' (uniform texture2D)
 0:34              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -142,7 +142,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of int)
 0:35          'txval21' (temp 4-component vector of int)
-0:35          textureGather (global 4-component vector of int)
+0:35          textureGather (temp 4-component vector of int)
 0:35            Construct combined texture-sampler (temp isampler2D)
 0:35              'g_tTex2di4' (uniform itexture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -152,7 +152,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of uint)
 0:36          'txval22' (temp 4-component vector of uint)
-0:36          textureGather (global 4-component vector of uint)
+0:36          textureGather (temp 4-component vector of uint)
 0:36            Construct combined texture-sampler (temp usampler2D)
 0:36              'g_tTex2du4' (uniform utexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -162,7 +162,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of float)
 0:40          'txval40' (temp 4-component vector of float)
-0:40          textureGather (global 4-component vector of float)
+0:40          textureGather (temp 4-component vector of float)
 0:40            Construct combined texture-sampler (temp samplerCube)
 0:40              'g_tTexcdf4' (uniform textureCube)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -173,7 +173,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of int)
 0:41          'txval41' (temp 4-component vector of int)
-0:41          textureGather (global 4-component vector of int)
+0:41          textureGather (temp 4-component vector of int)
 0:41            Construct combined texture-sampler (temp isamplerCube)
 0:41              'g_tTexcdi4' (uniform itextureCube)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -184,7 +184,7 @@
 0:42      Sequence
 0:42        move second child to first child (temp 4-component vector of uint)
 0:42          'txval42' (temp 4-component vector of uint)
-0:42          textureGather (global 4-component vector of uint)
+0:42          textureGather (temp 4-component vector of uint)
 0:42            Construct combined texture-sampler (temp usamplerCube)
 0:42              'g_tTexcdu4' (uniform utextureCube)
 0:42              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -225,6 +225,8 @@
 0:47                1 (const int)
 0:47        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_sSamp2d' (uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -240,8 +242,6 @@
 0:?     'g_tTexcdf4' (uniform textureCube)
 0:?     'g_tTexcdi4' (uniform itextureCube)
 0:?     'g_tTexcdu4' (uniform utextureCube)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.gather.basic.dx10.vert.out b/Test/baseResults/hlsl.gather.basic.dx10.vert.out
index d08a57e..a893675 100644
--- a/Test/baseResults/hlsl.gather.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.gather.basic.dx10.vert.out
@@ -7,7 +7,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of float)
 0:33          'txval20' (temp 4-component vector of float)
-0:33          textureGather (global 4-component vector of float)
+0:33          textureGather (temp 4-component vector of float)
 0:33            Construct combined texture-sampler (temp sampler2D)
 0:33              'g_tTex2df4' (uniform texture2D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -17,7 +17,7 @@
 0:34      Sequence
 0:34        move second child to first child (temp 4-component vector of int)
 0:34          'txval21' (temp 4-component vector of int)
-0:34          textureGather (global 4-component vector of int)
+0:34          textureGather (temp 4-component vector of int)
 0:34            Construct combined texture-sampler (temp isampler2D)
 0:34              'g_tTex2di4' (uniform itexture2D)
 0:34              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -27,7 +27,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of uint)
 0:35          'txval22' (temp 4-component vector of uint)
-0:35          textureGather (global 4-component vector of uint)
+0:35          textureGather (temp 4-component vector of uint)
 0:35            Construct combined texture-sampler (temp usampler2D)
 0:35              'g_tTex2du4' (uniform utexture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -37,7 +37,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          'txval40' (temp 4-component vector of float)
-0:39          textureGather (global 4-component vector of float)
+0:39          textureGather (temp 4-component vector of float)
 0:39            Construct combined texture-sampler (temp samplerCube)
 0:39              'g_tTexcdf4' (uniform textureCube)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -48,7 +48,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          'txval41' (temp 4-component vector of int)
-0:40          textureGather (global 4-component vector of int)
+0:40          textureGather (temp 4-component vector of int)
 0:40            Construct combined texture-sampler (temp isamplerCube)
 0:40              'g_tTexcdi4' (uniform itextureCube)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -59,7 +59,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          'txval42' (temp 4-component vector of uint)
-0:41          textureGather (global 4-component vector of uint)
+0:41          textureGather (temp 4-component vector of uint)
 0:41            Construct combined texture-sampler (temp usamplerCube)
 0:41              'g_tTexcdu4' (uniform utextureCube)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -87,6 +87,7 @@
 0:45                0 (const int)
 0:45        Branch: Return
 0:?   Linker Objects
+0:?     'Pos' (out 4-component vector of float Position)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_sSamp2d' (uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -102,7 +103,6 @@
 0:?     'g_tTexcdf4' (uniform textureCube)
 0:?     'g_tTexcdi4' (uniform itextureCube)
 0:?     'g_tTexcdu4' (uniform utextureCube)
-0:?     'Pos' (out 4-component vector of float Position)
 
 
 Linked vertex stage:
@@ -116,7 +116,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of float)
 0:33          'txval20' (temp 4-component vector of float)
-0:33          textureGather (global 4-component vector of float)
+0:33          textureGather (temp 4-component vector of float)
 0:33            Construct combined texture-sampler (temp sampler2D)
 0:33              'g_tTex2df4' (uniform texture2D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -126,7 +126,7 @@
 0:34      Sequence
 0:34        move second child to first child (temp 4-component vector of int)
 0:34          'txval21' (temp 4-component vector of int)
-0:34          textureGather (global 4-component vector of int)
+0:34          textureGather (temp 4-component vector of int)
 0:34            Construct combined texture-sampler (temp isampler2D)
 0:34              'g_tTex2di4' (uniform itexture2D)
 0:34              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -136,7 +136,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of uint)
 0:35          'txval22' (temp 4-component vector of uint)
-0:35          textureGather (global 4-component vector of uint)
+0:35          textureGather (temp 4-component vector of uint)
 0:35            Construct combined texture-sampler (temp usampler2D)
 0:35              'g_tTex2du4' (uniform utexture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -146,7 +146,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          'txval40' (temp 4-component vector of float)
-0:39          textureGather (global 4-component vector of float)
+0:39          textureGather (temp 4-component vector of float)
 0:39            Construct combined texture-sampler (temp samplerCube)
 0:39              'g_tTexcdf4' (uniform textureCube)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -157,7 +157,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          'txval41' (temp 4-component vector of int)
-0:40          textureGather (global 4-component vector of int)
+0:40          textureGather (temp 4-component vector of int)
 0:40            Construct combined texture-sampler (temp isamplerCube)
 0:40              'g_tTexcdi4' (uniform itextureCube)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -168,7 +168,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          'txval42' (temp 4-component vector of uint)
-0:41          textureGather (global 4-component vector of uint)
+0:41          textureGather (temp 4-component vector of uint)
 0:41            Construct combined texture-sampler (temp usamplerCube)
 0:41              'g_tTexcdu4' (uniform utextureCube)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -196,6 +196,7 @@
 0:45                0 (const int)
 0:45        Branch: Return
 0:?   Linker Objects
+0:?     'Pos' (out 4-component vector of float Position)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_sSamp2d' (uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -211,7 +212,6 @@
 0:?     'g_tTexcdf4' (uniform textureCube)
 0:?     'g_tTexcdi4' (uniform itextureCube)
 0:?     'g_tTexcdu4' (uniform utextureCube)
-0:?     'Pos' (out 4-component vector of float Position)
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.gather.offset.dx10.frag.out b/Test/baseResults/hlsl.gather.offset.dx10.frag.out
index ff7eb39..5b48bf3 100644
--- a/Test/baseResults/hlsl.gather.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.offset.dx10.frag.out
@@ -8,7 +8,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of float)
 0:33          'txval20' (temp 4-component vector of float)
-0:33          textureGatherOffset (global 4-component vector of float)
+0:33          textureGatherOffset (temp 4-component vector of float)
 0:33            Construct combined texture-sampler (temp sampler2D)
 0:33              'g_tTex2df4' (uniform texture2D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -21,7 +21,7 @@
 0:34      Sequence
 0:34        move second child to first child (temp 4-component vector of int)
 0:34          'txval21' (temp 4-component vector of int)
-0:34          textureGatherOffset (global 4-component vector of int)
+0:34          textureGatherOffset (temp 4-component vector of int)
 0:34            Construct combined texture-sampler (temp isampler2D)
 0:34              'g_tTex2di4' (uniform itexture2D)
 0:34              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -34,7 +34,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of uint)
 0:35          'txval22' (temp 4-component vector of uint)
-0:35          textureGatherOffset (global 4-component vector of uint)
+0:35          textureGatherOffset (temp 4-component vector of uint)
 0:35            Construct combined texture-sampler (temp usampler2D)
 0:35              'g_tTex2du4' (uniform utexture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -77,6 +77,8 @@
 0:43                1 (const int)
 0:43        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
 0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -91,8 +93,6 @@
 0:?     'g_tTexcdf4' (uniform textureCube)
 0:?     'g_tTexcdi4' (uniform itextureCube)
 0:?     'g_tTexcdu4' (uniform utextureCube)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
 
 
 Linked fragment stage:
@@ -107,7 +107,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of float)
 0:33          'txval20' (temp 4-component vector of float)
-0:33          textureGatherOffset (global 4-component vector of float)
+0:33          textureGatherOffset (temp 4-component vector of float)
 0:33            Construct combined texture-sampler (temp sampler2D)
 0:33              'g_tTex2df4' (uniform texture2D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -120,7 +120,7 @@
 0:34      Sequence
 0:34        move second child to first child (temp 4-component vector of int)
 0:34          'txval21' (temp 4-component vector of int)
-0:34          textureGatherOffset (global 4-component vector of int)
+0:34          textureGatherOffset (temp 4-component vector of int)
 0:34            Construct combined texture-sampler (temp isampler2D)
 0:34              'g_tTex2di4' (uniform itexture2D)
 0:34              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -133,7 +133,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of uint)
 0:35          'txval22' (temp 4-component vector of uint)
-0:35          textureGatherOffset (global 4-component vector of uint)
+0:35          textureGatherOffset (temp 4-component vector of uint)
 0:35            Construct combined texture-sampler (temp usampler2D)
 0:35              'g_tTex2du4' (uniform utexture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -176,6 +176,8 @@
 0:43                1 (const int)
 0:43        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
 0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
@@ -190,8 +192,6 @@
 0:?     'g_tTexcdf4' (uniform textureCube)
 0:?     'g_tTexcdi4' (uniform itextureCube)
 0:?     'g_tTexcdu4' (uniform utextureCube)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
index dc64a80..a7589cd 100644
--- a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out
@@ -8,7 +8,7 @@
 0:25      Sequence
 0:25        move second child to first child (temp 4-component vector of float)
 0:25          'txval20' (temp 4-component vector of float)
-0:25          textureGatherOffset (global 4-component vector of float)
+0:25          textureGatherOffset (temp 4-component vector of float)
 0:25            Construct combined texture-sampler (temp sampler2DArray)
 0:25              'g_tTex2df4' (uniform texture2DArray)
 0:25              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -22,7 +22,7 @@
 0:26      Sequence
 0:26        move second child to first child (temp 4-component vector of int)
 0:26          'txval21' (temp 4-component vector of int)
-0:26          textureGatherOffset (global 4-component vector of int)
+0:26          textureGatherOffset (temp 4-component vector of int)
 0:26            Construct combined texture-sampler (temp isampler2DArray)
 0:26              'g_tTex2di4' (uniform itexture2DArray)
 0:26              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -36,7 +36,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of uint)
 0:27          'txval22' (temp 4-component vector of uint)
-0:27          textureGatherOffset (global 4-component vector of uint)
+0:27          textureGatherOffset (temp 4-component vector of uint)
 0:27            Construct combined texture-sampler (temp usampler2DArray)
 0:27              'g_tTex2du4' (uniform utexture2DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -80,6 +80,8 @@
 0:35                1 (const int)
 0:35        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
 0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
@@ -88,8 +90,6 @@
 0:?     'g_tTex2df4' (uniform texture2DArray)
 0:?     'g_tTex2di4' (uniform itexture2DArray)
 0:?     'g_tTex2du4' (uniform utexture2DArray)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
 
 
 Linked fragment stage:
@@ -104,7 +104,7 @@
 0:25      Sequence
 0:25        move second child to first child (temp 4-component vector of float)
 0:25          'txval20' (temp 4-component vector of float)
-0:25          textureGatherOffset (global 4-component vector of float)
+0:25          textureGatherOffset (temp 4-component vector of float)
 0:25            Construct combined texture-sampler (temp sampler2DArray)
 0:25              'g_tTex2df4' (uniform texture2DArray)
 0:25              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -118,7 +118,7 @@
 0:26      Sequence
 0:26        move second child to first child (temp 4-component vector of int)
 0:26          'txval21' (temp 4-component vector of int)
-0:26          textureGatherOffset (global 4-component vector of int)
+0:26          textureGatherOffset (temp 4-component vector of int)
 0:26            Construct combined texture-sampler (temp isampler2DArray)
 0:26              'g_tTex2di4' (uniform itexture2DArray)
 0:26              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -132,7 +132,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of uint)
 0:27          'txval22' (temp 4-component vector of uint)
-0:27          textureGatherOffset (global 4-component vector of uint)
+0:27          textureGatherOffset (temp 4-component vector of uint)
 0:27            Construct combined texture-sampler (temp usampler2DArray)
 0:27              'g_tTex2du4' (uniform utexture2DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -176,6 +176,8 @@
 0:35                1 (const int)
 0:35        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
 0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
@@ -184,8 +186,6 @@
 0:?     'g_tTex2df4' (uniform texture2DArray)
 0:?     'g_tTex2di4' (uniform itexture2DArray)
 0:?     'g_tTex2du4' (uniform utexture2DArray)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
index 4e78cda..b04a857 100644
--- a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out
@@ -8,7 +8,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of float)
 0:33          'txval00' (temp 4-component vector of float)
-0:33          textureGather (global 4-component vector of float)
+0:33          textureGather (temp 4-component vector of float)
 0:33            Construct combined texture-sampler (temp sampler2DArray)
 0:33              'g_tTex2df4a' (uniform texture2DArray)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -21,7 +21,7 @@
 0:34      Sequence
 0:34        move second child to first child (temp 4-component vector of int)
 0:34          'txval01' (temp 4-component vector of int)
-0:34          textureGather (global 4-component vector of int)
+0:34          textureGather (temp 4-component vector of int)
 0:34            Construct combined texture-sampler (temp isampler2DArray)
 0:34              'g_tTex2di4a' (uniform itexture2DArray)
 0:34              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -34,7 +34,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of uint)
 0:35          'txval02' (temp 4-component vector of uint)
-0:35          textureGather (global 4-component vector of uint)
+0:35          textureGather (temp 4-component vector of uint)
 0:35            Construct combined texture-sampler (temp usampler2DArray)
 0:35              'g_tTex2du4a' (uniform utexture2DArray)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -47,7 +47,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of float)
 0:37          'txval10' (temp 4-component vector of float)
-0:37          textureGather (global 4-component vector of float)
+0:37          textureGather (temp 4-component vector of float)
 0:37            Construct combined texture-sampler (temp sampler2DArray)
 0:37              'g_tTex2df4a' (uniform texture2DArray)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -60,7 +60,7 @@
 0:38      Sequence
 0:38        move second child to first child (temp 4-component vector of int)
 0:38          'txval11' (temp 4-component vector of int)
-0:38          textureGather (global 4-component vector of int)
+0:38          textureGather (temp 4-component vector of int)
 0:38            Construct combined texture-sampler (temp isampler2DArray)
 0:38              'g_tTex2di4a' (uniform itexture2DArray)
 0:38              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -73,7 +73,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of uint)
 0:39          'txval12' (temp 4-component vector of uint)
-0:39          textureGather (global 4-component vector of uint)
+0:39          textureGather (temp 4-component vector of uint)
 0:39            Construct combined texture-sampler (temp usampler2DArray)
 0:39              'g_tTex2du4a' (uniform utexture2DArray)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -86,7 +86,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of float)
 0:41          'txval20' (temp 4-component vector of float)
-0:41          textureGather (global 4-component vector of float)
+0:41          textureGather (temp 4-component vector of float)
 0:41            Construct combined texture-sampler (temp sampler2DArray)
 0:41              'g_tTex2df4a' (uniform texture2DArray)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -99,7 +99,7 @@
 0:42      Sequence
 0:42        move second child to first child (temp 4-component vector of int)
 0:42          'txval21' (temp 4-component vector of int)
-0:42          textureGather (global 4-component vector of int)
+0:42          textureGather (temp 4-component vector of int)
 0:42            Construct combined texture-sampler (temp isampler2DArray)
 0:42              'g_tTex2di4a' (uniform itexture2DArray)
 0:42              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -112,7 +112,7 @@
 0:43      Sequence
 0:43        move second child to first child (temp 4-component vector of uint)
 0:43          'txval22' (temp 4-component vector of uint)
-0:43          textureGather (global 4-component vector of uint)
+0:43          textureGather (temp 4-component vector of uint)
 0:43            Construct combined texture-sampler (temp usampler2DArray)
 0:43              'g_tTex2du4a' (uniform utexture2DArray)
 0:43              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -125,7 +125,7 @@
 0:45      Sequence
 0:45        move second child to first child (temp 4-component vector of float)
 0:45          'txval30' (temp 4-component vector of float)
-0:45          textureGather (global 4-component vector of float)
+0:45          textureGather (temp 4-component vector of float)
 0:45            Construct combined texture-sampler (temp sampler2DArray)
 0:45              'g_tTex2df4a' (uniform texture2DArray)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -138,7 +138,7 @@
 0:46      Sequence
 0:46        move second child to first child (temp 4-component vector of int)
 0:46          'txval31' (temp 4-component vector of int)
-0:46          textureGather (global 4-component vector of int)
+0:46          textureGather (temp 4-component vector of int)
 0:46            Construct combined texture-sampler (temp isampler2DArray)
 0:46              'g_tTex2di4a' (uniform itexture2DArray)
 0:46              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -151,7 +151,7 @@
 0:47      Sequence
 0:47        move second child to first child (temp 4-component vector of uint)
 0:47          'txval32' (temp 4-component vector of uint)
-0:47          textureGather (global 4-component vector of uint)
+0:47          textureGather (temp 4-component vector of uint)
 0:47            Construct combined texture-sampler (temp usampler2DArray)
 0:47              'g_tTex2du4a' (uniform utexture2DArray)
 0:47              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -164,7 +164,7 @@
 0:51      Sequence
 0:51        move second child to first child (temp 4-component vector of float)
 0:51          'txval40' (temp 4-component vector of float)
-0:51          textureGather (global 4-component vector of float)
+0:51          textureGather (temp 4-component vector of float)
 0:51            Construct combined texture-sampler (temp samplerCubeArray)
 0:51              'g_tTexcdf4a' (uniform textureCubeArray)
 0:51              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -177,7 +177,7 @@
 0:52      Sequence
 0:52        move second child to first child (temp 4-component vector of int)
 0:52          'txval41' (temp 4-component vector of int)
-0:52          textureGather (global 4-component vector of int)
+0:52          textureGather (temp 4-component vector of int)
 0:52            Construct combined texture-sampler (temp isamplerCubeArray)
 0:52              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:52              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -190,7 +190,7 @@
 0:53      Sequence
 0:53        move second child to first child (temp 4-component vector of uint)
 0:53          'txval42' (temp 4-component vector of uint)
-0:53          textureGather (global 4-component vector of uint)
+0:53          textureGather (temp 4-component vector of uint)
 0:53            Construct combined texture-sampler (temp usamplerCubeArray)
 0:53              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:53              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -203,7 +203,7 @@
 0:55      Sequence
 0:55        move second child to first child (temp 4-component vector of float)
 0:55          'txval50' (temp 4-component vector of float)
-0:55          textureGather (global 4-component vector of float)
+0:55          textureGather (temp 4-component vector of float)
 0:55            Construct combined texture-sampler (temp samplerCubeArray)
 0:55              'g_tTexcdf4a' (uniform textureCubeArray)
 0:55              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -216,7 +216,7 @@
 0:56      Sequence
 0:56        move second child to first child (temp 4-component vector of int)
 0:56          'txval51' (temp 4-component vector of int)
-0:56          textureGather (global 4-component vector of int)
+0:56          textureGather (temp 4-component vector of int)
 0:56            Construct combined texture-sampler (temp isamplerCubeArray)
 0:56              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:56              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -229,7 +229,7 @@
 0:57      Sequence
 0:57        move second child to first child (temp 4-component vector of uint)
 0:57          'txval52' (temp 4-component vector of uint)
-0:57          textureGather (global 4-component vector of uint)
+0:57          textureGather (temp 4-component vector of uint)
 0:57            Construct combined texture-sampler (temp usamplerCubeArray)
 0:57              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:57              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -242,7 +242,7 @@
 0:59      Sequence
 0:59        move second child to first child (temp 4-component vector of float)
 0:59          'txval60' (temp 4-component vector of float)
-0:59          textureGather (global 4-component vector of float)
+0:59          textureGather (temp 4-component vector of float)
 0:59            Construct combined texture-sampler (temp samplerCubeArray)
 0:59              'g_tTexcdf4a' (uniform textureCubeArray)
 0:59              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -255,7 +255,7 @@
 0:60      Sequence
 0:60        move second child to first child (temp 4-component vector of int)
 0:60          'txval61' (temp 4-component vector of int)
-0:60          textureGather (global 4-component vector of int)
+0:60          textureGather (temp 4-component vector of int)
 0:60            Construct combined texture-sampler (temp isamplerCubeArray)
 0:60              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:60              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -268,7 +268,7 @@
 0:61      Sequence
 0:61        move second child to first child (temp 4-component vector of uint)
 0:61          'txval62' (temp 4-component vector of uint)
-0:61          textureGather (global 4-component vector of uint)
+0:61          textureGather (temp 4-component vector of uint)
 0:61            Construct combined texture-sampler (temp usamplerCubeArray)
 0:61              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:61              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -281,7 +281,7 @@
 0:63      Sequence
 0:63        move second child to first child (temp 4-component vector of float)
 0:63          'txval70' (temp 4-component vector of float)
-0:63          textureGather (global 4-component vector of float)
+0:63          textureGather (temp 4-component vector of float)
 0:63            Construct combined texture-sampler (temp samplerCubeArray)
 0:63              'g_tTexcdf4a' (uniform textureCubeArray)
 0:63              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -294,7 +294,7 @@
 0:64      Sequence
 0:64        move second child to first child (temp 4-component vector of int)
 0:64          'txval71' (temp 4-component vector of int)
-0:64          textureGather (global 4-component vector of int)
+0:64          textureGather (temp 4-component vector of int)
 0:64            Construct combined texture-sampler (temp isamplerCubeArray)
 0:64              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:64              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -307,7 +307,7 @@
 0:65      Sequence
 0:65        move second child to first child (temp 4-component vector of uint)
 0:65          'txval72' (temp 4-component vector of uint)
-0:65          textureGather (global 4-component vector of uint)
+0:65          textureGather (temp 4-component vector of uint)
 0:65            Construct combined texture-sampler (temp usamplerCubeArray)
 0:65              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:65              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -350,6 +350,8 @@
 0:70                1 (const int)
 0:70        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_sSamp2d' (uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=0 ) uniform texture1DArray)
@@ -361,9 +363,7 @@
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
 
 
 Linked fragment stage:
@@ -378,7 +378,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of float)
 0:33          'txval00' (temp 4-component vector of float)
-0:33          textureGather (global 4-component vector of float)
+0:33          textureGather (temp 4-component vector of float)
 0:33            Construct combined texture-sampler (temp sampler2DArray)
 0:33              'g_tTex2df4a' (uniform texture2DArray)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -391,7 +391,7 @@
 0:34      Sequence
 0:34        move second child to first child (temp 4-component vector of int)
 0:34          'txval01' (temp 4-component vector of int)
-0:34          textureGather (global 4-component vector of int)
+0:34          textureGather (temp 4-component vector of int)
 0:34            Construct combined texture-sampler (temp isampler2DArray)
 0:34              'g_tTex2di4a' (uniform itexture2DArray)
 0:34              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -404,7 +404,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of uint)
 0:35          'txval02' (temp 4-component vector of uint)
-0:35          textureGather (global 4-component vector of uint)
+0:35          textureGather (temp 4-component vector of uint)
 0:35            Construct combined texture-sampler (temp usampler2DArray)
 0:35              'g_tTex2du4a' (uniform utexture2DArray)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -417,7 +417,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of float)
 0:37          'txval10' (temp 4-component vector of float)
-0:37          textureGather (global 4-component vector of float)
+0:37          textureGather (temp 4-component vector of float)
 0:37            Construct combined texture-sampler (temp sampler2DArray)
 0:37              'g_tTex2df4a' (uniform texture2DArray)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -430,7 +430,7 @@
 0:38      Sequence
 0:38        move second child to first child (temp 4-component vector of int)
 0:38          'txval11' (temp 4-component vector of int)
-0:38          textureGather (global 4-component vector of int)
+0:38          textureGather (temp 4-component vector of int)
 0:38            Construct combined texture-sampler (temp isampler2DArray)
 0:38              'g_tTex2di4a' (uniform itexture2DArray)
 0:38              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -443,7 +443,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of uint)
 0:39          'txval12' (temp 4-component vector of uint)
-0:39          textureGather (global 4-component vector of uint)
+0:39          textureGather (temp 4-component vector of uint)
 0:39            Construct combined texture-sampler (temp usampler2DArray)
 0:39              'g_tTex2du4a' (uniform utexture2DArray)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -456,7 +456,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of float)
 0:41          'txval20' (temp 4-component vector of float)
-0:41          textureGather (global 4-component vector of float)
+0:41          textureGather (temp 4-component vector of float)
 0:41            Construct combined texture-sampler (temp sampler2DArray)
 0:41              'g_tTex2df4a' (uniform texture2DArray)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -469,7 +469,7 @@
 0:42      Sequence
 0:42        move second child to first child (temp 4-component vector of int)
 0:42          'txval21' (temp 4-component vector of int)
-0:42          textureGather (global 4-component vector of int)
+0:42          textureGather (temp 4-component vector of int)
 0:42            Construct combined texture-sampler (temp isampler2DArray)
 0:42              'g_tTex2di4a' (uniform itexture2DArray)
 0:42              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -482,7 +482,7 @@
 0:43      Sequence
 0:43        move second child to first child (temp 4-component vector of uint)
 0:43          'txval22' (temp 4-component vector of uint)
-0:43          textureGather (global 4-component vector of uint)
+0:43          textureGather (temp 4-component vector of uint)
 0:43            Construct combined texture-sampler (temp usampler2DArray)
 0:43              'g_tTex2du4a' (uniform utexture2DArray)
 0:43              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -495,7 +495,7 @@
 0:45      Sequence
 0:45        move second child to first child (temp 4-component vector of float)
 0:45          'txval30' (temp 4-component vector of float)
-0:45          textureGather (global 4-component vector of float)
+0:45          textureGather (temp 4-component vector of float)
 0:45            Construct combined texture-sampler (temp sampler2DArray)
 0:45              'g_tTex2df4a' (uniform texture2DArray)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -508,7 +508,7 @@
 0:46      Sequence
 0:46        move second child to first child (temp 4-component vector of int)
 0:46          'txval31' (temp 4-component vector of int)
-0:46          textureGather (global 4-component vector of int)
+0:46          textureGather (temp 4-component vector of int)
 0:46            Construct combined texture-sampler (temp isampler2DArray)
 0:46              'g_tTex2di4a' (uniform itexture2DArray)
 0:46              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -521,7 +521,7 @@
 0:47      Sequence
 0:47        move second child to first child (temp 4-component vector of uint)
 0:47          'txval32' (temp 4-component vector of uint)
-0:47          textureGather (global 4-component vector of uint)
+0:47          textureGather (temp 4-component vector of uint)
 0:47            Construct combined texture-sampler (temp usampler2DArray)
 0:47              'g_tTex2du4a' (uniform utexture2DArray)
 0:47              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -534,7 +534,7 @@
 0:51      Sequence
 0:51        move second child to first child (temp 4-component vector of float)
 0:51          'txval40' (temp 4-component vector of float)
-0:51          textureGather (global 4-component vector of float)
+0:51          textureGather (temp 4-component vector of float)
 0:51            Construct combined texture-sampler (temp samplerCubeArray)
 0:51              'g_tTexcdf4a' (uniform textureCubeArray)
 0:51              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -547,7 +547,7 @@
 0:52      Sequence
 0:52        move second child to first child (temp 4-component vector of int)
 0:52          'txval41' (temp 4-component vector of int)
-0:52          textureGather (global 4-component vector of int)
+0:52          textureGather (temp 4-component vector of int)
 0:52            Construct combined texture-sampler (temp isamplerCubeArray)
 0:52              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:52              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -560,7 +560,7 @@
 0:53      Sequence
 0:53        move second child to first child (temp 4-component vector of uint)
 0:53          'txval42' (temp 4-component vector of uint)
-0:53          textureGather (global 4-component vector of uint)
+0:53          textureGather (temp 4-component vector of uint)
 0:53            Construct combined texture-sampler (temp usamplerCubeArray)
 0:53              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:53              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -573,7 +573,7 @@
 0:55      Sequence
 0:55        move second child to first child (temp 4-component vector of float)
 0:55          'txval50' (temp 4-component vector of float)
-0:55          textureGather (global 4-component vector of float)
+0:55          textureGather (temp 4-component vector of float)
 0:55            Construct combined texture-sampler (temp samplerCubeArray)
 0:55              'g_tTexcdf4a' (uniform textureCubeArray)
 0:55              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -586,7 +586,7 @@
 0:56      Sequence
 0:56        move second child to first child (temp 4-component vector of int)
 0:56          'txval51' (temp 4-component vector of int)
-0:56          textureGather (global 4-component vector of int)
+0:56          textureGather (temp 4-component vector of int)
 0:56            Construct combined texture-sampler (temp isamplerCubeArray)
 0:56              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:56              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -599,7 +599,7 @@
 0:57      Sequence
 0:57        move second child to first child (temp 4-component vector of uint)
 0:57          'txval52' (temp 4-component vector of uint)
-0:57          textureGather (global 4-component vector of uint)
+0:57          textureGather (temp 4-component vector of uint)
 0:57            Construct combined texture-sampler (temp usamplerCubeArray)
 0:57              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:57              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -612,7 +612,7 @@
 0:59      Sequence
 0:59        move second child to first child (temp 4-component vector of float)
 0:59          'txval60' (temp 4-component vector of float)
-0:59          textureGather (global 4-component vector of float)
+0:59          textureGather (temp 4-component vector of float)
 0:59            Construct combined texture-sampler (temp samplerCubeArray)
 0:59              'g_tTexcdf4a' (uniform textureCubeArray)
 0:59              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -625,7 +625,7 @@
 0:60      Sequence
 0:60        move second child to first child (temp 4-component vector of int)
 0:60          'txval61' (temp 4-component vector of int)
-0:60          textureGather (global 4-component vector of int)
+0:60          textureGather (temp 4-component vector of int)
 0:60            Construct combined texture-sampler (temp isamplerCubeArray)
 0:60              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:60              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -638,7 +638,7 @@
 0:61      Sequence
 0:61        move second child to first child (temp 4-component vector of uint)
 0:61          'txval62' (temp 4-component vector of uint)
-0:61          textureGather (global 4-component vector of uint)
+0:61          textureGather (temp 4-component vector of uint)
 0:61            Construct combined texture-sampler (temp usamplerCubeArray)
 0:61              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:61              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -651,7 +651,7 @@
 0:63      Sequence
 0:63        move second child to first child (temp 4-component vector of float)
 0:63          'txval70' (temp 4-component vector of float)
-0:63          textureGather (global 4-component vector of float)
+0:63          textureGather (temp 4-component vector of float)
 0:63            Construct combined texture-sampler (temp samplerCubeArray)
 0:63              'g_tTexcdf4a' (uniform textureCubeArray)
 0:63              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -664,7 +664,7 @@
 0:64      Sequence
 0:64        move second child to first child (temp 4-component vector of int)
 0:64          'txval71' (temp 4-component vector of int)
-0:64          textureGather (global 4-component vector of int)
+0:64          textureGather (temp 4-component vector of int)
 0:64            Construct combined texture-sampler (temp isamplerCubeArray)
 0:64              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:64              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -677,7 +677,7 @@
 0:65      Sequence
 0:65        move second child to first child (temp 4-component vector of uint)
 0:65          'txval72' (temp 4-component vector of uint)
-0:65          textureGather (global 4-component vector of uint)
+0:65          textureGather (temp 4-component vector of uint)
 0:65            Construct combined texture-sampler (temp usamplerCubeArray)
 0:65              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:65              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -720,6 +720,8 @@
 0:70                1 (const int)
 0:70        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_sSamp2d' (uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=0 ) uniform texture1DArray)
@@ -731,9 +733,7 @@
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
index ef1e7e0..d2fb0b1 100644
--- a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out
@@ -8,7 +8,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          'txval00' (temp 4-component vector of float)
-0:39          textureGather (global 4-component vector of float)
+0:39          textureGather (temp 4-component vector of float)
 0:39            Construct combined texture-sampler (temp sampler2D)
 0:39              'g_tTex2df4' (uniform texture2D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -21,7 +21,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          'txval01' (temp 4-component vector of int)
-0:40          textureGather (global 4-component vector of int)
+0:40          textureGather (temp 4-component vector of int)
 0:40            Construct combined texture-sampler (temp isampler2D)
 0:40              'g_tTex2di4' (uniform itexture2D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -34,7 +34,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          'txval02' (temp 4-component vector of uint)
-0:41          textureGather (global 4-component vector of uint)
+0:41          textureGather (temp 4-component vector of uint)
 0:41            Construct combined texture-sampler (temp usampler2D)
 0:41              'g_tTex2du4' (uniform utexture2D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -47,7 +47,7 @@
 0:43      Sequence
 0:43        move second child to first child (temp 4-component vector of float)
 0:43          'txval10' (temp 4-component vector of float)
-0:43          textureGather (global 4-component vector of float)
+0:43          textureGather (temp 4-component vector of float)
 0:43            Construct combined texture-sampler (temp sampler2D)
 0:43              'g_tTex2df4' (uniform texture2D)
 0:43              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -60,7 +60,7 @@
 0:44      Sequence
 0:44        move second child to first child (temp 4-component vector of int)
 0:44          'txval11' (temp 4-component vector of int)
-0:44          textureGather (global 4-component vector of int)
+0:44          textureGather (temp 4-component vector of int)
 0:44            Construct combined texture-sampler (temp isampler2D)
 0:44              'g_tTex2di4' (uniform itexture2D)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -73,7 +73,7 @@
 0:45      Sequence
 0:45        move second child to first child (temp 4-component vector of uint)
 0:45          'txval12' (temp 4-component vector of uint)
-0:45          textureGather (global 4-component vector of uint)
+0:45          textureGather (temp 4-component vector of uint)
 0:45            Construct combined texture-sampler (temp usampler2D)
 0:45              'g_tTex2du4' (uniform utexture2D)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -86,7 +86,7 @@
 0:47      Sequence
 0:47        move second child to first child (temp 4-component vector of float)
 0:47          'txval20' (temp 4-component vector of float)
-0:47          textureGather (global 4-component vector of float)
+0:47          textureGather (temp 4-component vector of float)
 0:47            Construct combined texture-sampler (temp sampler2D)
 0:47              'g_tTex2df4' (uniform texture2D)
 0:47              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -99,7 +99,7 @@
 0:48      Sequence
 0:48        move second child to first child (temp 4-component vector of int)
 0:48          'txval21' (temp 4-component vector of int)
-0:48          textureGather (global 4-component vector of int)
+0:48          textureGather (temp 4-component vector of int)
 0:48            Construct combined texture-sampler (temp isampler2D)
 0:48              'g_tTex2di4' (uniform itexture2D)
 0:48              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -112,7 +112,7 @@
 0:49      Sequence
 0:49        move second child to first child (temp 4-component vector of uint)
 0:49          'txval22' (temp 4-component vector of uint)
-0:49          textureGather (global 4-component vector of uint)
+0:49          textureGather (temp 4-component vector of uint)
 0:49            Construct combined texture-sampler (temp usampler2D)
 0:49              'g_tTex2du4' (uniform utexture2D)
 0:49              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -125,7 +125,7 @@
 0:51      Sequence
 0:51        move second child to first child (temp 4-component vector of float)
 0:51          'txval30' (temp 4-component vector of float)
-0:51          textureGather (global 4-component vector of float)
+0:51          textureGather (temp 4-component vector of float)
 0:51            Construct combined texture-sampler (temp sampler2D)
 0:51              'g_tTex2df4' (uniform texture2D)
 0:51              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -138,7 +138,7 @@
 0:52      Sequence
 0:52        move second child to first child (temp 4-component vector of int)
 0:52          'txval31' (temp 4-component vector of int)
-0:52          textureGather (global 4-component vector of int)
+0:52          textureGather (temp 4-component vector of int)
 0:52            Construct combined texture-sampler (temp isampler2D)
 0:52              'g_tTex2di4' (uniform itexture2D)
 0:52              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -151,7 +151,7 @@
 0:53      Sequence
 0:53        move second child to first child (temp 4-component vector of uint)
 0:53          'txval32' (temp 4-component vector of uint)
-0:53          textureGather (global 4-component vector of uint)
+0:53          textureGather (temp 4-component vector of uint)
 0:53            Construct combined texture-sampler (temp usampler2D)
 0:53              'g_tTex2du4' (uniform utexture2D)
 0:53              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -164,7 +164,7 @@
 0:57      Sequence
 0:57        move second child to first child (temp 4-component vector of float)
 0:57          'txval40' (temp 4-component vector of float)
-0:57          textureGather (global 4-component vector of float)
+0:57          textureGather (temp 4-component vector of float)
 0:57            Construct combined texture-sampler (temp samplerCube)
 0:57              'g_tTexcdf4' (uniform textureCube)
 0:57              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -177,7 +177,7 @@
 0:58      Sequence
 0:58        move second child to first child (temp 4-component vector of int)
 0:58          'txval41' (temp 4-component vector of int)
-0:58          textureGather (global 4-component vector of int)
+0:58          textureGather (temp 4-component vector of int)
 0:58            Construct combined texture-sampler (temp isamplerCube)
 0:58              'g_tTexcdi4' (uniform itextureCube)
 0:58              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -190,7 +190,7 @@
 0:59      Sequence
 0:59        move second child to first child (temp 4-component vector of uint)
 0:59          'txval42' (temp 4-component vector of uint)
-0:59          textureGather (global 4-component vector of uint)
+0:59          textureGather (temp 4-component vector of uint)
 0:59            Construct combined texture-sampler (temp usamplerCube)
 0:59              'g_tTexcdu4' (uniform utextureCube)
 0:59              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -203,7 +203,7 @@
 0:61      Sequence
 0:61        move second child to first child (temp 4-component vector of float)
 0:61          'txval50' (temp 4-component vector of float)
-0:61          textureGather (global 4-component vector of float)
+0:61          textureGather (temp 4-component vector of float)
 0:61            Construct combined texture-sampler (temp samplerCube)
 0:61              'g_tTexcdf4' (uniform textureCube)
 0:61              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -216,7 +216,7 @@
 0:62      Sequence
 0:62        move second child to first child (temp 4-component vector of int)
 0:62          'txval51' (temp 4-component vector of int)
-0:62          textureGather (global 4-component vector of int)
+0:62          textureGather (temp 4-component vector of int)
 0:62            Construct combined texture-sampler (temp isamplerCube)
 0:62              'g_tTexcdi4' (uniform itextureCube)
 0:62              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -229,7 +229,7 @@
 0:63      Sequence
 0:63        move second child to first child (temp 4-component vector of uint)
 0:63          'txval52' (temp 4-component vector of uint)
-0:63          textureGather (global 4-component vector of uint)
+0:63          textureGather (temp 4-component vector of uint)
 0:63            Construct combined texture-sampler (temp usamplerCube)
 0:63              'g_tTexcdu4' (uniform utextureCube)
 0:63              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -242,7 +242,7 @@
 0:65      Sequence
 0:65        move second child to first child (temp 4-component vector of float)
 0:65          'txval60' (temp 4-component vector of float)
-0:65          textureGather (global 4-component vector of float)
+0:65          textureGather (temp 4-component vector of float)
 0:65            Construct combined texture-sampler (temp samplerCube)
 0:65              'g_tTexcdf4' (uniform textureCube)
 0:65              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -255,7 +255,7 @@
 0:66      Sequence
 0:66        move second child to first child (temp 4-component vector of int)
 0:66          'txval61' (temp 4-component vector of int)
-0:66          textureGather (global 4-component vector of int)
+0:66          textureGather (temp 4-component vector of int)
 0:66            Construct combined texture-sampler (temp isamplerCube)
 0:66              'g_tTexcdi4' (uniform itextureCube)
 0:66              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -268,7 +268,7 @@
 0:67      Sequence
 0:67        move second child to first child (temp 4-component vector of uint)
 0:67          'txval62' (temp 4-component vector of uint)
-0:67          textureGather (global 4-component vector of uint)
+0:67          textureGather (temp 4-component vector of uint)
 0:67            Construct combined texture-sampler (temp usamplerCube)
 0:67              'g_tTexcdu4' (uniform utextureCube)
 0:67              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -281,7 +281,7 @@
 0:69      Sequence
 0:69        move second child to first child (temp 4-component vector of float)
 0:69          'txval70' (temp 4-component vector of float)
-0:69          textureGather (global 4-component vector of float)
+0:69          textureGather (temp 4-component vector of float)
 0:69            Construct combined texture-sampler (temp samplerCube)
 0:69              'g_tTexcdf4' (uniform textureCube)
 0:69              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -294,7 +294,7 @@
 0:70      Sequence
 0:70        move second child to first child (temp 4-component vector of int)
 0:70          'txval71' (temp 4-component vector of int)
-0:70          textureGather (global 4-component vector of int)
+0:70          textureGather (temp 4-component vector of int)
 0:70            Construct combined texture-sampler (temp isamplerCube)
 0:70              'g_tTexcdi4' (uniform itextureCube)
 0:70              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -307,7 +307,7 @@
 0:71      Sequence
 0:71        move second child to first child (temp 4-component vector of uint)
 0:71          'txval72' (temp 4-component vector of uint)
-0:71          textureGather (global 4-component vector of uint)
+0:71          textureGather (temp 4-component vector of uint)
 0:71            Construct combined texture-sampler (temp usamplerCube)
 0:71              'g_tTexcdu4' (uniform utextureCube)
 0:71              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -350,6 +350,8 @@
 0:76                1 (const int)
 0:76        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_sSamp2d' (uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -365,9 +367,7 @@
 0:?     'g_tTexcdf4' (uniform textureCube)
 0:?     'g_tTexcdi4' (uniform itextureCube)
 0:?     'g_tTexcdu4' (uniform utextureCube)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
 
 
 Linked fragment stage:
@@ -382,7 +382,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          'txval00' (temp 4-component vector of float)
-0:39          textureGather (global 4-component vector of float)
+0:39          textureGather (temp 4-component vector of float)
 0:39            Construct combined texture-sampler (temp sampler2D)
 0:39              'g_tTex2df4' (uniform texture2D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -395,7 +395,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          'txval01' (temp 4-component vector of int)
-0:40          textureGather (global 4-component vector of int)
+0:40          textureGather (temp 4-component vector of int)
 0:40            Construct combined texture-sampler (temp isampler2D)
 0:40              'g_tTex2di4' (uniform itexture2D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -408,7 +408,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          'txval02' (temp 4-component vector of uint)
-0:41          textureGather (global 4-component vector of uint)
+0:41          textureGather (temp 4-component vector of uint)
 0:41            Construct combined texture-sampler (temp usampler2D)
 0:41              'g_tTex2du4' (uniform utexture2D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -421,7 +421,7 @@
 0:43      Sequence
 0:43        move second child to first child (temp 4-component vector of float)
 0:43          'txval10' (temp 4-component vector of float)
-0:43          textureGather (global 4-component vector of float)
+0:43          textureGather (temp 4-component vector of float)
 0:43            Construct combined texture-sampler (temp sampler2D)
 0:43              'g_tTex2df4' (uniform texture2D)
 0:43              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -434,7 +434,7 @@
 0:44      Sequence
 0:44        move second child to first child (temp 4-component vector of int)
 0:44          'txval11' (temp 4-component vector of int)
-0:44          textureGather (global 4-component vector of int)
+0:44          textureGather (temp 4-component vector of int)
 0:44            Construct combined texture-sampler (temp isampler2D)
 0:44              'g_tTex2di4' (uniform itexture2D)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -447,7 +447,7 @@
 0:45      Sequence
 0:45        move second child to first child (temp 4-component vector of uint)
 0:45          'txval12' (temp 4-component vector of uint)
-0:45          textureGather (global 4-component vector of uint)
+0:45          textureGather (temp 4-component vector of uint)
 0:45            Construct combined texture-sampler (temp usampler2D)
 0:45              'g_tTex2du4' (uniform utexture2D)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -460,7 +460,7 @@
 0:47      Sequence
 0:47        move second child to first child (temp 4-component vector of float)
 0:47          'txval20' (temp 4-component vector of float)
-0:47          textureGather (global 4-component vector of float)
+0:47          textureGather (temp 4-component vector of float)
 0:47            Construct combined texture-sampler (temp sampler2D)
 0:47              'g_tTex2df4' (uniform texture2D)
 0:47              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -473,7 +473,7 @@
 0:48      Sequence
 0:48        move second child to first child (temp 4-component vector of int)
 0:48          'txval21' (temp 4-component vector of int)
-0:48          textureGather (global 4-component vector of int)
+0:48          textureGather (temp 4-component vector of int)
 0:48            Construct combined texture-sampler (temp isampler2D)
 0:48              'g_tTex2di4' (uniform itexture2D)
 0:48              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -486,7 +486,7 @@
 0:49      Sequence
 0:49        move second child to first child (temp 4-component vector of uint)
 0:49          'txval22' (temp 4-component vector of uint)
-0:49          textureGather (global 4-component vector of uint)
+0:49          textureGather (temp 4-component vector of uint)
 0:49            Construct combined texture-sampler (temp usampler2D)
 0:49              'g_tTex2du4' (uniform utexture2D)
 0:49              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -499,7 +499,7 @@
 0:51      Sequence
 0:51        move second child to first child (temp 4-component vector of float)
 0:51          'txval30' (temp 4-component vector of float)
-0:51          textureGather (global 4-component vector of float)
+0:51          textureGather (temp 4-component vector of float)
 0:51            Construct combined texture-sampler (temp sampler2D)
 0:51              'g_tTex2df4' (uniform texture2D)
 0:51              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -512,7 +512,7 @@
 0:52      Sequence
 0:52        move second child to first child (temp 4-component vector of int)
 0:52          'txval31' (temp 4-component vector of int)
-0:52          textureGather (global 4-component vector of int)
+0:52          textureGather (temp 4-component vector of int)
 0:52            Construct combined texture-sampler (temp isampler2D)
 0:52              'g_tTex2di4' (uniform itexture2D)
 0:52              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -525,7 +525,7 @@
 0:53      Sequence
 0:53        move second child to first child (temp 4-component vector of uint)
 0:53          'txval32' (temp 4-component vector of uint)
-0:53          textureGather (global 4-component vector of uint)
+0:53          textureGather (temp 4-component vector of uint)
 0:53            Construct combined texture-sampler (temp usampler2D)
 0:53              'g_tTex2du4' (uniform utexture2D)
 0:53              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -538,7 +538,7 @@
 0:57      Sequence
 0:57        move second child to first child (temp 4-component vector of float)
 0:57          'txval40' (temp 4-component vector of float)
-0:57          textureGather (global 4-component vector of float)
+0:57          textureGather (temp 4-component vector of float)
 0:57            Construct combined texture-sampler (temp samplerCube)
 0:57              'g_tTexcdf4' (uniform textureCube)
 0:57              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -551,7 +551,7 @@
 0:58      Sequence
 0:58        move second child to first child (temp 4-component vector of int)
 0:58          'txval41' (temp 4-component vector of int)
-0:58          textureGather (global 4-component vector of int)
+0:58          textureGather (temp 4-component vector of int)
 0:58            Construct combined texture-sampler (temp isamplerCube)
 0:58              'g_tTexcdi4' (uniform itextureCube)
 0:58              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -564,7 +564,7 @@
 0:59      Sequence
 0:59        move second child to first child (temp 4-component vector of uint)
 0:59          'txval42' (temp 4-component vector of uint)
-0:59          textureGather (global 4-component vector of uint)
+0:59          textureGather (temp 4-component vector of uint)
 0:59            Construct combined texture-sampler (temp usamplerCube)
 0:59              'g_tTexcdu4' (uniform utextureCube)
 0:59              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -577,7 +577,7 @@
 0:61      Sequence
 0:61        move second child to first child (temp 4-component vector of float)
 0:61          'txval50' (temp 4-component vector of float)
-0:61          textureGather (global 4-component vector of float)
+0:61          textureGather (temp 4-component vector of float)
 0:61            Construct combined texture-sampler (temp samplerCube)
 0:61              'g_tTexcdf4' (uniform textureCube)
 0:61              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -590,7 +590,7 @@
 0:62      Sequence
 0:62        move second child to first child (temp 4-component vector of int)
 0:62          'txval51' (temp 4-component vector of int)
-0:62          textureGather (global 4-component vector of int)
+0:62          textureGather (temp 4-component vector of int)
 0:62            Construct combined texture-sampler (temp isamplerCube)
 0:62              'g_tTexcdi4' (uniform itextureCube)
 0:62              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -603,7 +603,7 @@
 0:63      Sequence
 0:63        move second child to first child (temp 4-component vector of uint)
 0:63          'txval52' (temp 4-component vector of uint)
-0:63          textureGather (global 4-component vector of uint)
+0:63          textureGather (temp 4-component vector of uint)
 0:63            Construct combined texture-sampler (temp usamplerCube)
 0:63              'g_tTexcdu4' (uniform utextureCube)
 0:63              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -616,7 +616,7 @@
 0:65      Sequence
 0:65        move second child to first child (temp 4-component vector of float)
 0:65          'txval60' (temp 4-component vector of float)
-0:65          textureGather (global 4-component vector of float)
+0:65          textureGather (temp 4-component vector of float)
 0:65            Construct combined texture-sampler (temp samplerCube)
 0:65              'g_tTexcdf4' (uniform textureCube)
 0:65              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -629,7 +629,7 @@
 0:66      Sequence
 0:66        move second child to first child (temp 4-component vector of int)
 0:66          'txval61' (temp 4-component vector of int)
-0:66          textureGather (global 4-component vector of int)
+0:66          textureGather (temp 4-component vector of int)
 0:66            Construct combined texture-sampler (temp isamplerCube)
 0:66              'g_tTexcdi4' (uniform itextureCube)
 0:66              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -642,7 +642,7 @@
 0:67      Sequence
 0:67        move second child to first child (temp 4-component vector of uint)
 0:67          'txval62' (temp 4-component vector of uint)
-0:67          textureGather (global 4-component vector of uint)
+0:67          textureGather (temp 4-component vector of uint)
 0:67            Construct combined texture-sampler (temp usamplerCube)
 0:67              'g_tTexcdu4' (uniform utextureCube)
 0:67              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -655,7 +655,7 @@
 0:69      Sequence
 0:69        move second child to first child (temp 4-component vector of float)
 0:69          'txval70' (temp 4-component vector of float)
-0:69          textureGather (global 4-component vector of float)
+0:69          textureGather (temp 4-component vector of float)
 0:69            Construct combined texture-sampler (temp samplerCube)
 0:69              'g_tTexcdf4' (uniform textureCube)
 0:69              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -668,7 +668,7 @@
 0:70      Sequence
 0:70        move second child to first child (temp 4-component vector of int)
 0:70          'txval71' (temp 4-component vector of int)
-0:70          textureGather (global 4-component vector of int)
+0:70          textureGather (temp 4-component vector of int)
 0:70            Construct combined texture-sampler (temp isamplerCube)
 0:70              'g_tTexcdi4' (uniform itextureCube)
 0:70              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -681,7 +681,7 @@
 0:71      Sequence
 0:71        move second child to first child (temp 4-component vector of uint)
 0:71          'txval72' (temp 4-component vector of uint)
-0:71          textureGather (global 4-component vector of uint)
+0:71          textureGather (temp 4-component vector of uint)
 0:71            Construct combined texture-sampler (temp usamplerCube)
 0:71              'g_tTexcdu4' (uniform utextureCube)
 0:71              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -724,6 +724,8 @@
 0:76                1 (const int)
 0:76        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_sSamp2d' (uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -739,9 +741,7 @@
 0:?     'g_tTexcdf4' (uniform textureCube)
 0:?     'g_tTexcdi4' (uniform itextureCube)
 0:?     'g_tTexcdu4' (uniform utextureCube)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
index f178c3b..4339574 100644
--- a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out
@@ -8,7 +8,7 @@
 0:46      Sequence
 0:46        move second child to first child (temp 4-component vector of float)
 0:46          'txval001' (temp 4-component vector of float)
-0:46          textureGatherOffset (global 4-component vector of float)
+0:46          textureGatherOffset (temp 4-component vector of float)
 0:46            Construct combined texture-sampler (temp sampler2D)
 0:46              'g_tTex2df4' (uniform texture2D)
 0:46              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -25,7 +25,7 @@
 0:47      Sequence
 0:47        move second child to first child (temp 4-component vector of int)
 0:47          'txval011' (temp 4-component vector of int)
-0:47          textureGatherOffset (global 4-component vector of int)
+0:47          textureGatherOffset (temp 4-component vector of int)
 0:47            Construct combined texture-sampler (temp isampler2D)
 0:47              'g_tTex2di4' (uniform itexture2D)
 0:47              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -42,7 +42,7 @@
 0:48      Sequence
 0:48        move second child to first child (temp 4-component vector of uint)
 0:48          'txval021' (temp 4-component vector of uint)
-0:48          textureGatherOffset (global 4-component vector of uint)
+0:48          textureGatherOffset (temp 4-component vector of uint)
 0:48            Construct combined texture-sampler (temp usampler2D)
 0:48              'g_tTex2du4' (uniform utexture2D)
 0:48              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -59,7 +59,7 @@
 0:50      Sequence
 0:50        move second child to first child (temp 4-component vector of float)
 0:50          'txval004' (temp 4-component vector of float)
-0:50          textureGatherOffsets (global 4-component vector of float)
+0:50          textureGatherOffsets (temp 4-component vector of float)
 0:50            Construct combined texture-sampler (temp sampler2D)
 0:50              'g_tTex2df4' (uniform texture2D)
 0:50              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -89,7 +89,7 @@
 0:51      Sequence
 0:51        move second child to first child (temp 4-component vector of int)
 0:51          'txval014' (temp 4-component vector of int)
-0:51          textureGatherOffsets (global 4-component vector of int)
+0:51          textureGatherOffsets (temp 4-component vector of int)
 0:51            Construct combined texture-sampler (temp isampler2D)
 0:51              'g_tTex2di4' (uniform itexture2D)
 0:51              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -119,7 +119,7 @@
 0:52      Sequence
 0:52        move second child to first child (temp 4-component vector of uint)
 0:52          'txval024' (temp 4-component vector of uint)
-0:52          textureGatherOffsets (global 4-component vector of uint)
+0:52          textureGatherOffsets (temp 4-component vector of uint)
 0:52            Construct combined texture-sampler (temp usampler2D)
 0:52              'g_tTex2du4' (uniform utexture2D)
 0:52              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -149,7 +149,7 @@
 0:62      Sequence
 0:62        move second child to first child (temp 4-component vector of float)
 0:62          'txval101' (temp 4-component vector of float)
-0:62          textureGatherOffset (global 4-component vector of float)
+0:62          textureGatherOffset (temp 4-component vector of float)
 0:62            Construct combined texture-sampler (temp sampler2D)
 0:62              'g_tTex2df4' (uniform texture2D)
 0:62              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -166,7 +166,7 @@
 0:63      Sequence
 0:63        move second child to first child (temp 4-component vector of int)
 0:63          'txval111' (temp 4-component vector of int)
-0:63          textureGatherOffset (global 4-component vector of int)
+0:63          textureGatherOffset (temp 4-component vector of int)
 0:63            Construct combined texture-sampler (temp isampler2D)
 0:63              'g_tTex2di4' (uniform itexture2D)
 0:63              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -183,7 +183,7 @@
 0:64      Sequence
 0:64        move second child to first child (temp 4-component vector of uint)
 0:64          'txval121' (temp 4-component vector of uint)
-0:64          textureGatherOffset (global 4-component vector of uint)
+0:64          textureGatherOffset (temp 4-component vector of uint)
 0:64            Construct combined texture-sampler (temp usampler2D)
 0:64              'g_tTex2du4' (uniform utexture2D)
 0:64              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -200,7 +200,7 @@
 0:66      Sequence
 0:66        move second child to first child (temp 4-component vector of float)
 0:66          'txval104' (temp 4-component vector of float)
-0:66          textureGatherOffsets (global 4-component vector of float)
+0:66          textureGatherOffsets (temp 4-component vector of float)
 0:66            Construct combined texture-sampler (temp sampler2D)
 0:66              'g_tTex2df4' (uniform texture2D)
 0:66              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -230,7 +230,7 @@
 0:67      Sequence
 0:67        move second child to first child (temp 4-component vector of int)
 0:67          'txval114' (temp 4-component vector of int)
-0:67          textureGatherOffsets (global 4-component vector of int)
+0:67          textureGatherOffsets (temp 4-component vector of int)
 0:67            Construct combined texture-sampler (temp isampler2D)
 0:67              'g_tTex2di4' (uniform itexture2D)
 0:67              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -260,7 +260,7 @@
 0:68      Sequence
 0:68        move second child to first child (temp 4-component vector of uint)
 0:68          'txval124' (temp 4-component vector of uint)
-0:68          textureGatherOffsets (global 4-component vector of uint)
+0:68          textureGatherOffsets (temp 4-component vector of uint)
 0:68            Construct combined texture-sampler (temp usampler2D)
 0:68              'g_tTex2du4' (uniform utexture2D)
 0:68              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -290,7 +290,7 @@
 0:78      Sequence
 0:78        move second child to first child (temp 4-component vector of float)
 0:78          'txval201' (temp 4-component vector of float)
-0:78          textureGatherOffset (global 4-component vector of float)
+0:78          textureGatherOffset (temp 4-component vector of float)
 0:78            Construct combined texture-sampler (temp sampler2D)
 0:78              'g_tTex2df4' (uniform texture2D)
 0:78              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -307,7 +307,7 @@
 0:79      Sequence
 0:79        move second child to first child (temp 4-component vector of int)
 0:79          'txval211' (temp 4-component vector of int)
-0:79          textureGatherOffset (global 4-component vector of int)
+0:79          textureGatherOffset (temp 4-component vector of int)
 0:79            Construct combined texture-sampler (temp isampler2D)
 0:79              'g_tTex2di4' (uniform itexture2D)
 0:79              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -324,7 +324,7 @@
 0:80      Sequence
 0:80        move second child to first child (temp 4-component vector of uint)
 0:80          'txval221' (temp 4-component vector of uint)
-0:80          textureGatherOffset (global 4-component vector of uint)
+0:80          textureGatherOffset (temp 4-component vector of uint)
 0:80            Construct combined texture-sampler (temp usampler2D)
 0:80              'g_tTex2du4' (uniform utexture2D)
 0:80              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -341,7 +341,7 @@
 0:82      Sequence
 0:82        move second child to first child (temp 4-component vector of float)
 0:82          'txval204' (temp 4-component vector of float)
-0:82          textureGatherOffsets (global 4-component vector of float)
+0:82          textureGatherOffsets (temp 4-component vector of float)
 0:82            Construct combined texture-sampler (temp sampler2D)
 0:82              'g_tTex2df4' (uniform texture2D)
 0:82              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -371,7 +371,7 @@
 0:83      Sequence
 0:83        move second child to first child (temp 4-component vector of int)
 0:83          'txval214' (temp 4-component vector of int)
-0:83          textureGatherOffsets (global 4-component vector of int)
+0:83          textureGatherOffsets (temp 4-component vector of int)
 0:83            Construct combined texture-sampler (temp isampler2D)
 0:83              'g_tTex2di4' (uniform itexture2D)
 0:83              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -401,7 +401,7 @@
 0:84      Sequence
 0:84        move second child to first child (temp 4-component vector of uint)
 0:84          'txval224' (temp 4-component vector of uint)
-0:84          textureGatherOffsets (global 4-component vector of uint)
+0:84          textureGatherOffsets (temp 4-component vector of uint)
 0:84            Construct combined texture-sampler (temp usampler2D)
 0:84              'g_tTex2du4' (uniform utexture2D)
 0:84              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -431,7 +431,7 @@
 0:94      Sequence
 0:94        move second child to first child (temp 4-component vector of float)
 0:94          'txval301' (temp 4-component vector of float)
-0:94          textureGatherOffset (global 4-component vector of float)
+0:94          textureGatherOffset (temp 4-component vector of float)
 0:94            Construct combined texture-sampler (temp sampler2D)
 0:94              'g_tTex2df4' (uniform texture2D)
 0:94              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -448,7 +448,7 @@
 0:95      Sequence
 0:95        move second child to first child (temp 4-component vector of int)
 0:95          'txval311' (temp 4-component vector of int)
-0:95          textureGatherOffset (global 4-component vector of int)
+0:95          textureGatherOffset (temp 4-component vector of int)
 0:95            Construct combined texture-sampler (temp isampler2D)
 0:95              'g_tTex2di4' (uniform itexture2D)
 0:95              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -465,7 +465,7 @@
 0:96      Sequence
 0:96        move second child to first child (temp 4-component vector of uint)
 0:96          'txval321' (temp 4-component vector of uint)
-0:96          textureGatherOffset (global 4-component vector of uint)
+0:96          textureGatherOffset (temp 4-component vector of uint)
 0:96            Construct combined texture-sampler (temp usampler2D)
 0:96              'g_tTex2du4' (uniform utexture2D)
 0:96              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -482,7 +482,7 @@
 0:98      Sequence
 0:98        move second child to first child (temp 4-component vector of float)
 0:98          'txval304' (temp 4-component vector of float)
-0:98          textureGatherOffsets (global 4-component vector of float)
+0:98          textureGatherOffsets (temp 4-component vector of float)
 0:98            Construct combined texture-sampler (temp sampler2D)
 0:98              'g_tTex2df4' (uniform texture2D)
 0:98              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -512,7 +512,7 @@
 0:99      Sequence
 0:99        move second child to first child (temp 4-component vector of int)
 0:99          'txval314' (temp 4-component vector of int)
-0:99          textureGatherOffsets (global 4-component vector of int)
+0:99          textureGatherOffsets (temp 4-component vector of int)
 0:99            Construct combined texture-sampler (temp isampler2D)
 0:99              'g_tTex2di4' (uniform itexture2D)
 0:99              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -542,7 +542,7 @@
 0:100      Sequence
 0:100        move second child to first child (temp 4-component vector of uint)
 0:100          'txval324' (temp 4-component vector of uint)
-0:100          textureGatherOffsets (global 4-component vector of uint)
+0:100          textureGatherOffsets (temp 4-component vector of uint)
 0:100            Construct combined texture-sampler (temp usampler2D)
 0:100              'g_tTex2du4' (uniform utexture2D)
 0:100              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -602,6 +602,8 @@
 0:115                1 (const int)
 0:115        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_sSamp2d' (uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -617,9 +619,7 @@
 0:?     'g_tTexcdf4' (uniform textureCube)
 0:?     'g_tTexcdi4' (uniform itextureCube)
 0:?     'g_tTexcdu4' (uniform utextureCube)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 
 Linked fragment stage:
@@ -634,7 +634,7 @@
 0:46      Sequence
 0:46        move second child to first child (temp 4-component vector of float)
 0:46          'txval001' (temp 4-component vector of float)
-0:46          textureGatherOffset (global 4-component vector of float)
+0:46          textureGatherOffset (temp 4-component vector of float)
 0:46            Construct combined texture-sampler (temp sampler2D)
 0:46              'g_tTex2df4' (uniform texture2D)
 0:46              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -651,7 +651,7 @@
 0:47      Sequence
 0:47        move second child to first child (temp 4-component vector of int)
 0:47          'txval011' (temp 4-component vector of int)
-0:47          textureGatherOffset (global 4-component vector of int)
+0:47          textureGatherOffset (temp 4-component vector of int)
 0:47            Construct combined texture-sampler (temp isampler2D)
 0:47              'g_tTex2di4' (uniform itexture2D)
 0:47              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -668,7 +668,7 @@
 0:48      Sequence
 0:48        move second child to first child (temp 4-component vector of uint)
 0:48          'txval021' (temp 4-component vector of uint)
-0:48          textureGatherOffset (global 4-component vector of uint)
+0:48          textureGatherOffset (temp 4-component vector of uint)
 0:48            Construct combined texture-sampler (temp usampler2D)
 0:48              'g_tTex2du4' (uniform utexture2D)
 0:48              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -685,7 +685,7 @@
 0:50      Sequence
 0:50        move second child to first child (temp 4-component vector of float)
 0:50          'txval004' (temp 4-component vector of float)
-0:50          textureGatherOffsets (global 4-component vector of float)
+0:50          textureGatherOffsets (temp 4-component vector of float)
 0:50            Construct combined texture-sampler (temp sampler2D)
 0:50              'g_tTex2df4' (uniform texture2D)
 0:50              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -715,7 +715,7 @@
 0:51      Sequence
 0:51        move second child to first child (temp 4-component vector of int)
 0:51          'txval014' (temp 4-component vector of int)
-0:51          textureGatherOffsets (global 4-component vector of int)
+0:51          textureGatherOffsets (temp 4-component vector of int)
 0:51            Construct combined texture-sampler (temp isampler2D)
 0:51              'g_tTex2di4' (uniform itexture2D)
 0:51              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -745,7 +745,7 @@
 0:52      Sequence
 0:52        move second child to first child (temp 4-component vector of uint)
 0:52          'txval024' (temp 4-component vector of uint)
-0:52          textureGatherOffsets (global 4-component vector of uint)
+0:52          textureGatherOffsets (temp 4-component vector of uint)
 0:52            Construct combined texture-sampler (temp usampler2D)
 0:52              'g_tTex2du4' (uniform utexture2D)
 0:52              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -775,7 +775,7 @@
 0:62      Sequence
 0:62        move second child to first child (temp 4-component vector of float)
 0:62          'txval101' (temp 4-component vector of float)
-0:62          textureGatherOffset (global 4-component vector of float)
+0:62          textureGatherOffset (temp 4-component vector of float)
 0:62            Construct combined texture-sampler (temp sampler2D)
 0:62              'g_tTex2df4' (uniform texture2D)
 0:62              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -792,7 +792,7 @@
 0:63      Sequence
 0:63        move second child to first child (temp 4-component vector of int)
 0:63          'txval111' (temp 4-component vector of int)
-0:63          textureGatherOffset (global 4-component vector of int)
+0:63          textureGatherOffset (temp 4-component vector of int)
 0:63            Construct combined texture-sampler (temp isampler2D)
 0:63              'g_tTex2di4' (uniform itexture2D)
 0:63              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -809,7 +809,7 @@
 0:64      Sequence
 0:64        move second child to first child (temp 4-component vector of uint)
 0:64          'txval121' (temp 4-component vector of uint)
-0:64          textureGatherOffset (global 4-component vector of uint)
+0:64          textureGatherOffset (temp 4-component vector of uint)
 0:64            Construct combined texture-sampler (temp usampler2D)
 0:64              'g_tTex2du4' (uniform utexture2D)
 0:64              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -826,7 +826,7 @@
 0:66      Sequence
 0:66        move second child to first child (temp 4-component vector of float)
 0:66          'txval104' (temp 4-component vector of float)
-0:66          textureGatherOffsets (global 4-component vector of float)
+0:66          textureGatherOffsets (temp 4-component vector of float)
 0:66            Construct combined texture-sampler (temp sampler2D)
 0:66              'g_tTex2df4' (uniform texture2D)
 0:66              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -856,7 +856,7 @@
 0:67      Sequence
 0:67        move second child to first child (temp 4-component vector of int)
 0:67          'txval114' (temp 4-component vector of int)
-0:67          textureGatherOffsets (global 4-component vector of int)
+0:67          textureGatherOffsets (temp 4-component vector of int)
 0:67            Construct combined texture-sampler (temp isampler2D)
 0:67              'g_tTex2di4' (uniform itexture2D)
 0:67              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -886,7 +886,7 @@
 0:68      Sequence
 0:68        move second child to first child (temp 4-component vector of uint)
 0:68          'txval124' (temp 4-component vector of uint)
-0:68          textureGatherOffsets (global 4-component vector of uint)
+0:68          textureGatherOffsets (temp 4-component vector of uint)
 0:68            Construct combined texture-sampler (temp usampler2D)
 0:68              'g_tTex2du4' (uniform utexture2D)
 0:68              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -916,7 +916,7 @@
 0:78      Sequence
 0:78        move second child to first child (temp 4-component vector of float)
 0:78          'txval201' (temp 4-component vector of float)
-0:78          textureGatherOffset (global 4-component vector of float)
+0:78          textureGatherOffset (temp 4-component vector of float)
 0:78            Construct combined texture-sampler (temp sampler2D)
 0:78              'g_tTex2df4' (uniform texture2D)
 0:78              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -933,7 +933,7 @@
 0:79      Sequence
 0:79        move second child to first child (temp 4-component vector of int)
 0:79          'txval211' (temp 4-component vector of int)
-0:79          textureGatherOffset (global 4-component vector of int)
+0:79          textureGatherOffset (temp 4-component vector of int)
 0:79            Construct combined texture-sampler (temp isampler2D)
 0:79              'g_tTex2di4' (uniform itexture2D)
 0:79              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -950,7 +950,7 @@
 0:80      Sequence
 0:80        move second child to first child (temp 4-component vector of uint)
 0:80          'txval221' (temp 4-component vector of uint)
-0:80          textureGatherOffset (global 4-component vector of uint)
+0:80          textureGatherOffset (temp 4-component vector of uint)
 0:80            Construct combined texture-sampler (temp usampler2D)
 0:80              'g_tTex2du4' (uniform utexture2D)
 0:80              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -967,7 +967,7 @@
 0:82      Sequence
 0:82        move second child to first child (temp 4-component vector of float)
 0:82          'txval204' (temp 4-component vector of float)
-0:82          textureGatherOffsets (global 4-component vector of float)
+0:82          textureGatherOffsets (temp 4-component vector of float)
 0:82            Construct combined texture-sampler (temp sampler2D)
 0:82              'g_tTex2df4' (uniform texture2D)
 0:82              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -997,7 +997,7 @@
 0:83      Sequence
 0:83        move second child to first child (temp 4-component vector of int)
 0:83          'txval214' (temp 4-component vector of int)
-0:83          textureGatherOffsets (global 4-component vector of int)
+0:83          textureGatherOffsets (temp 4-component vector of int)
 0:83            Construct combined texture-sampler (temp isampler2D)
 0:83              'g_tTex2di4' (uniform itexture2D)
 0:83              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -1027,7 +1027,7 @@
 0:84      Sequence
 0:84        move second child to first child (temp 4-component vector of uint)
 0:84          'txval224' (temp 4-component vector of uint)
-0:84          textureGatherOffsets (global 4-component vector of uint)
+0:84          textureGatherOffsets (temp 4-component vector of uint)
 0:84            Construct combined texture-sampler (temp usampler2D)
 0:84              'g_tTex2du4' (uniform utexture2D)
 0:84              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -1057,7 +1057,7 @@
 0:94      Sequence
 0:94        move second child to first child (temp 4-component vector of float)
 0:94          'txval301' (temp 4-component vector of float)
-0:94          textureGatherOffset (global 4-component vector of float)
+0:94          textureGatherOffset (temp 4-component vector of float)
 0:94            Construct combined texture-sampler (temp sampler2D)
 0:94              'g_tTex2df4' (uniform texture2D)
 0:94              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -1074,7 +1074,7 @@
 0:95      Sequence
 0:95        move second child to first child (temp 4-component vector of int)
 0:95          'txval311' (temp 4-component vector of int)
-0:95          textureGatherOffset (global 4-component vector of int)
+0:95          textureGatherOffset (temp 4-component vector of int)
 0:95            Construct combined texture-sampler (temp isampler2D)
 0:95              'g_tTex2di4' (uniform itexture2D)
 0:95              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -1091,7 +1091,7 @@
 0:96      Sequence
 0:96        move second child to first child (temp 4-component vector of uint)
 0:96          'txval321' (temp 4-component vector of uint)
-0:96          textureGatherOffset (global 4-component vector of uint)
+0:96          textureGatherOffset (temp 4-component vector of uint)
 0:96            Construct combined texture-sampler (temp usampler2D)
 0:96              'g_tTex2du4' (uniform utexture2D)
 0:96              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -1108,7 +1108,7 @@
 0:98      Sequence
 0:98        move second child to first child (temp 4-component vector of float)
 0:98          'txval304' (temp 4-component vector of float)
-0:98          textureGatherOffsets (global 4-component vector of float)
+0:98          textureGatherOffsets (temp 4-component vector of float)
 0:98            Construct combined texture-sampler (temp sampler2D)
 0:98              'g_tTex2df4' (uniform texture2D)
 0:98              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -1138,7 +1138,7 @@
 0:99      Sequence
 0:99        move second child to first child (temp 4-component vector of int)
 0:99          'txval314' (temp 4-component vector of int)
-0:99          textureGatherOffsets (global 4-component vector of int)
+0:99          textureGatherOffsets (temp 4-component vector of int)
 0:99            Construct combined texture-sampler (temp isampler2D)
 0:99              'g_tTex2di4' (uniform itexture2D)
 0:99              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -1168,7 +1168,7 @@
 0:100      Sequence
 0:100        move second child to first child (temp 4-component vector of uint)
 0:100          'txval324' (temp 4-component vector of uint)
-0:100          textureGatherOffsets (global 4-component vector of uint)
+0:100          textureGatherOffsets (temp 4-component vector of uint)
 0:100            Construct combined texture-sampler (temp usampler2D)
 0:100              'g_tTex2du4' (uniform utexture2D)
 0:100              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -1228,6 +1228,8 @@
 0:115                1 (const int)
 0:115        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_sSamp2d' (uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=1 ) uniform texture1D)
@@ -1243,9 +1245,7 @@
 0:?     'g_tTexcdf4' (uniform textureCube)
 0:?     'g_tTexcdi4' (uniform itextureCube)
 0:?     'g_tTexcdu4' (uniform utextureCube)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
index f565379..4722cff 100644
--- a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out
@@ -8,7 +8,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of float)
 0:40          'txval001' (temp 4-component vector of float)
-0:40          textureGatherOffset (global 4-component vector of float)
+0:40          textureGatherOffset (temp 4-component vector of float)
 0:40            Construct combined texture-sampler (temp sampler2DArray)
 0:40              'g_tTex2df4a' (uniform texture2DArray)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -25,7 +25,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of int)
 0:41          'txval011' (temp 4-component vector of int)
-0:41          textureGatherOffset (global 4-component vector of int)
+0:41          textureGatherOffset (temp 4-component vector of int)
 0:41            Construct combined texture-sampler (temp isampler2DArray)
 0:41              'g_tTex2di4a' (uniform itexture2DArray)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -42,7 +42,7 @@
 0:42      Sequence
 0:42        move second child to first child (temp 4-component vector of uint)
 0:42          'txval021' (temp 4-component vector of uint)
-0:42          textureGatherOffset (global 4-component vector of uint)
+0:42          textureGatherOffset (temp 4-component vector of uint)
 0:42            Construct combined texture-sampler (temp usampler2DArray)
 0:42              'g_tTex2du4a' (uniform utexture2DArray)
 0:42              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -59,7 +59,7 @@
 0:44      Sequence
 0:44        move second child to first child (temp 4-component vector of float)
 0:44          'txval004' (temp 4-component vector of float)
-0:44          textureGatherOffsets (global 4-component vector of float)
+0:44          textureGatherOffsets (temp 4-component vector of float)
 0:44            Construct combined texture-sampler (temp sampler2DArray)
 0:44              'g_tTex2df4a' (uniform texture2DArray)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -89,7 +89,7 @@
 0:45      Sequence
 0:45        move second child to first child (temp 4-component vector of int)
 0:45          'txval014' (temp 4-component vector of int)
-0:45          textureGatherOffsets (global 4-component vector of int)
+0:45          textureGatherOffsets (temp 4-component vector of int)
 0:45            Construct combined texture-sampler (temp isampler2DArray)
 0:45              'g_tTex2di4a' (uniform itexture2DArray)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -119,7 +119,7 @@
 0:46      Sequence
 0:46        move second child to first child (temp 4-component vector of uint)
 0:46          'txval024' (temp 4-component vector of uint)
-0:46          textureGatherOffsets (global 4-component vector of uint)
+0:46          textureGatherOffsets (temp 4-component vector of uint)
 0:46            Construct combined texture-sampler (temp usampler2DArray)
 0:46              'g_tTex2du4a' (uniform utexture2DArray)
 0:46              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -149,7 +149,7 @@
 0:56      Sequence
 0:56        move second child to first child (temp 4-component vector of float)
 0:56          'txval101' (temp 4-component vector of float)
-0:56          textureGatherOffset (global 4-component vector of float)
+0:56          textureGatherOffset (temp 4-component vector of float)
 0:56            Construct combined texture-sampler (temp sampler2DArray)
 0:56              'g_tTex2df4a' (uniform texture2DArray)
 0:56              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -166,7 +166,7 @@
 0:57      Sequence
 0:57        move second child to first child (temp 4-component vector of int)
 0:57          'txval111' (temp 4-component vector of int)
-0:57          textureGatherOffset (global 4-component vector of int)
+0:57          textureGatherOffset (temp 4-component vector of int)
 0:57            Construct combined texture-sampler (temp isampler2DArray)
 0:57              'g_tTex2di4a' (uniform itexture2DArray)
 0:57              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -183,7 +183,7 @@
 0:58      Sequence
 0:58        move second child to first child (temp 4-component vector of uint)
 0:58          'txval121' (temp 4-component vector of uint)
-0:58          textureGatherOffset (global 4-component vector of uint)
+0:58          textureGatherOffset (temp 4-component vector of uint)
 0:58            Construct combined texture-sampler (temp usampler2DArray)
 0:58              'g_tTex2du4a' (uniform utexture2DArray)
 0:58              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -200,7 +200,7 @@
 0:60      Sequence
 0:60        move second child to first child (temp 4-component vector of float)
 0:60          'txval104' (temp 4-component vector of float)
-0:60          textureGatherOffsets (global 4-component vector of float)
+0:60          textureGatherOffsets (temp 4-component vector of float)
 0:60            Construct combined texture-sampler (temp sampler2DArray)
 0:60              'g_tTex2df4a' (uniform texture2DArray)
 0:60              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -230,7 +230,7 @@
 0:61      Sequence
 0:61        move second child to first child (temp 4-component vector of int)
 0:61          'txval114' (temp 4-component vector of int)
-0:61          textureGatherOffsets (global 4-component vector of int)
+0:61          textureGatherOffsets (temp 4-component vector of int)
 0:61            Construct combined texture-sampler (temp isampler2DArray)
 0:61              'g_tTex2di4a' (uniform itexture2DArray)
 0:61              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -260,7 +260,7 @@
 0:62      Sequence
 0:62        move second child to first child (temp 4-component vector of uint)
 0:62          'txval124' (temp 4-component vector of uint)
-0:62          textureGatherOffsets (global 4-component vector of uint)
+0:62          textureGatherOffsets (temp 4-component vector of uint)
 0:62            Construct combined texture-sampler (temp usampler2DArray)
 0:62              'g_tTex2du4a' (uniform utexture2DArray)
 0:62              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -290,7 +290,7 @@
 0:72      Sequence
 0:72        move second child to first child (temp 4-component vector of float)
 0:72          'txval201' (temp 4-component vector of float)
-0:72          textureGatherOffset (global 4-component vector of float)
+0:72          textureGatherOffset (temp 4-component vector of float)
 0:72            Construct combined texture-sampler (temp sampler2DArray)
 0:72              'g_tTex2df4a' (uniform texture2DArray)
 0:72              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -307,7 +307,7 @@
 0:73      Sequence
 0:73        move second child to first child (temp 4-component vector of int)
 0:73          'txval211' (temp 4-component vector of int)
-0:73          textureGatherOffset (global 4-component vector of int)
+0:73          textureGatherOffset (temp 4-component vector of int)
 0:73            Construct combined texture-sampler (temp isampler2DArray)
 0:73              'g_tTex2di4a' (uniform itexture2DArray)
 0:73              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -324,7 +324,7 @@
 0:74      Sequence
 0:74        move second child to first child (temp 4-component vector of uint)
 0:74          'txval221' (temp 4-component vector of uint)
-0:74          textureGatherOffset (global 4-component vector of uint)
+0:74          textureGatherOffset (temp 4-component vector of uint)
 0:74            Construct combined texture-sampler (temp usampler2DArray)
 0:74              'g_tTex2du4a' (uniform utexture2DArray)
 0:74              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -341,7 +341,7 @@
 0:76      Sequence
 0:76        move second child to first child (temp 4-component vector of float)
 0:76          'txval204' (temp 4-component vector of float)
-0:76          textureGatherOffsets (global 4-component vector of float)
+0:76          textureGatherOffsets (temp 4-component vector of float)
 0:76            Construct combined texture-sampler (temp sampler2DArray)
 0:76              'g_tTex2df4a' (uniform texture2DArray)
 0:76              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -371,7 +371,7 @@
 0:77      Sequence
 0:77        move second child to first child (temp 4-component vector of int)
 0:77          'txval214' (temp 4-component vector of int)
-0:77          textureGatherOffsets (global 4-component vector of int)
+0:77          textureGatherOffsets (temp 4-component vector of int)
 0:77            Construct combined texture-sampler (temp isampler2DArray)
 0:77              'g_tTex2di4a' (uniform itexture2DArray)
 0:77              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -401,7 +401,7 @@
 0:78      Sequence
 0:78        move second child to first child (temp 4-component vector of uint)
 0:78          'txval224' (temp 4-component vector of uint)
-0:78          textureGatherOffsets (global 4-component vector of uint)
+0:78          textureGatherOffsets (temp 4-component vector of uint)
 0:78            Construct combined texture-sampler (temp usampler2DArray)
 0:78              'g_tTex2du4a' (uniform utexture2DArray)
 0:78              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -431,7 +431,7 @@
 0:88      Sequence
 0:88        move second child to first child (temp 4-component vector of float)
 0:88          'txval301' (temp 4-component vector of float)
-0:88          textureGatherOffset (global 4-component vector of float)
+0:88          textureGatherOffset (temp 4-component vector of float)
 0:88            Construct combined texture-sampler (temp sampler2DArray)
 0:88              'g_tTex2df4a' (uniform texture2DArray)
 0:88              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -448,7 +448,7 @@
 0:89      Sequence
 0:89        move second child to first child (temp 4-component vector of int)
 0:89          'txval311' (temp 4-component vector of int)
-0:89          textureGatherOffset (global 4-component vector of int)
+0:89          textureGatherOffset (temp 4-component vector of int)
 0:89            Construct combined texture-sampler (temp isampler2DArray)
 0:89              'g_tTex2di4a' (uniform itexture2DArray)
 0:89              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -465,7 +465,7 @@
 0:90      Sequence
 0:90        move second child to first child (temp 4-component vector of uint)
 0:90          'txval321' (temp 4-component vector of uint)
-0:90          textureGatherOffset (global 4-component vector of uint)
+0:90          textureGatherOffset (temp 4-component vector of uint)
 0:90            Construct combined texture-sampler (temp usampler2DArray)
 0:90              'g_tTex2du4a' (uniform utexture2DArray)
 0:90              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -482,7 +482,7 @@
 0:92      Sequence
 0:92        move second child to first child (temp 4-component vector of float)
 0:92          'txval304' (temp 4-component vector of float)
-0:92          textureGatherOffsets (global 4-component vector of float)
+0:92          textureGatherOffsets (temp 4-component vector of float)
 0:92            Construct combined texture-sampler (temp sampler2DArray)
 0:92              'g_tTex2df4a' (uniform texture2DArray)
 0:92              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -512,7 +512,7 @@
 0:93      Sequence
 0:93        move second child to first child (temp 4-component vector of int)
 0:93          'txval314' (temp 4-component vector of int)
-0:93          textureGatherOffsets (global 4-component vector of int)
+0:93          textureGatherOffsets (temp 4-component vector of int)
 0:93            Construct combined texture-sampler (temp isampler2DArray)
 0:93              'g_tTex2di4a' (uniform itexture2DArray)
 0:93              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -542,7 +542,7 @@
 0:94      Sequence
 0:94        move second child to first child (temp 4-component vector of uint)
 0:94          'txval324' (temp 4-component vector of uint)
-0:94          textureGatherOffsets (global 4-component vector of uint)
+0:94          textureGatherOffsets (temp 4-component vector of uint)
 0:94            Construct combined texture-sampler (temp usampler2DArray)
 0:94              'g_tTex2du4a' (uniform utexture2DArray)
 0:94              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -602,6 +602,8 @@
 0:109                1 (const int)
 0:109        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_sSamp2d' (uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=0 ) uniform texture1DArray)
@@ -613,9 +615,7 @@
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 
 Linked fragment stage:
@@ -630,7 +630,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of float)
 0:40          'txval001' (temp 4-component vector of float)
-0:40          textureGatherOffset (global 4-component vector of float)
+0:40          textureGatherOffset (temp 4-component vector of float)
 0:40            Construct combined texture-sampler (temp sampler2DArray)
 0:40              'g_tTex2df4a' (uniform texture2DArray)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -647,7 +647,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of int)
 0:41          'txval011' (temp 4-component vector of int)
-0:41          textureGatherOffset (global 4-component vector of int)
+0:41          textureGatherOffset (temp 4-component vector of int)
 0:41            Construct combined texture-sampler (temp isampler2DArray)
 0:41              'g_tTex2di4a' (uniform itexture2DArray)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -664,7 +664,7 @@
 0:42      Sequence
 0:42        move second child to first child (temp 4-component vector of uint)
 0:42          'txval021' (temp 4-component vector of uint)
-0:42          textureGatherOffset (global 4-component vector of uint)
+0:42          textureGatherOffset (temp 4-component vector of uint)
 0:42            Construct combined texture-sampler (temp usampler2DArray)
 0:42              'g_tTex2du4a' (uniform utexture2DArray)
 0:42              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -681,7 +681,7 @@
 0:44      Sequence
 0:44        move second child to first child (temp 4-component vector of float)
 0:44          'txval004' (temp 4-component vector of float)
-0:44          textureGatherOffsets (global 4-component vector of float)
+0:44          textureGatherOffsets (temp 4-component vector of float)
 0:44            Construct combined texture-sampler (temp sampler2DArray)
 0:44              'g_tTex2df4a' (uniform texture2DArray)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -711,7 +711,7 @@
 0:45      Sequence
 0:45        move second child to first child (temp 4-component vector of int)
 0:45          'txval014' (temp 4-component vector of int)
-0:45          textureGatherOffsets (global 4-component vector of int)
+0:45          textureGatherOffsets (temp 4-component vector of int)
 0:45            Construct combined texture-sampler (temp isampler2DArray)
 0:45              'g_tTex2di4a' (uniform itexture2DArray)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -741,7 +741,7 @@
 0:46      Sequence
 0:46        move second child to first child (temp 4-component vector of uint)
 0:46          'txval024' (temp 4-component vector of uint)
-0:46          textureGatherOffsets (global 4-component vector of uint)
+0:46          textureGatherOffsets (temp 4-component vector of uint)
 0:46            Construct combined texture-sampler (temp usampler2DArray)
 0:46              'g_tTex2du4a' (uniform utexture2DArray)
 0:46              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -771,7 +771,7 @@
 0:56      Sequence
 0:56        move second child to first child (temp 4-component vector of float)
 0:56          'txval101' (temp 4-component vector of float)
-0:56          textureGatherOffset (global 4-component vector of float)
+0:56          textureGatherOffset (temp 4-component vector of float)
 0:56            Construct combined texture-sampler (temp sampler2DArray)
 0:56              'g_tTex2df4a' (uniform texture2DArray)
 0:56              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -788,7 +788,7 @@
 0:57      Sequence
 0:57        move second child to first child (temp 4-component vector of int)
 0:57          'txval111' (temp 4-component vector of int)
-0:57          textureGatherOffset (global 4-component vector of int)
+0:57          textureGatherOffset (temp 4-component vector of int)
 0:57            Construct combined texture-sampler (temp isampler2DArray)
 0:57              'g_tTex2di4a' (uniform itexture2DArray)
 0:57              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -805,7 +805,7 @@
 0:58      Sequence
 0:58        move second child to first child (temp 4-component vector of uint)
 0:58          'txval121' (temp 4-component vector of uint)
-0:58          textureGatherOffset (global 4-component vector of uint)
+0:58          textureGatherOffset (temp 4-component vector of uint)
 0:58            Construct combined texture-sampler (temp usampler2DArray)
 0:58              'g_tTex2du4a' (uniform utexture2DArray)
 0:58              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -822,7 +822,7 @@
 0:60      Sequence
 0:60        move second child to first child (temp 4-component vector of float)
 0:60          'txval104' (temp 4-component vector of float)
-0:60          textureGatherOffsets (global 4-component vector of float)
+0:60          textureGatherOffsets (temp 4-component vector of float)
 0:60            Construct combined texture-sampler (temp sampler2DArray)
 0:60              'g_tTex2df4a' (uniform texture2DArray)
 0:60              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -852,7 +852,7 @@
 0:61      Sequence
 0:61        move second child to first child (temp 4-component vector of int)
 0:61          'txval114' (temp 4-component vector of int)
-0:61          textureGatherOffsets (global 4-component vector of int)
+0:61          textureGatherOffsets (temp 4-component vector of int)
 0:61            Construct combined texture-sampler (temp isampler2DArray)
 0:61              'g_tTex2di4a' (uniform itexture2DArray)
 0:61              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -882,7 +882,7 @@
 0:62      Sequence
 0:62        move second child to first child (temp 4-component vector of uint)
 0:62          'txval124' (temp 4-component vector of uint)
-0:62          textureGatherOffsets (global 4-component vector of uint)
+0:62          textureGatherOffsets (temp 4-component vector of uint)
 0:62            Construct combined texture-sampler (temp usampler2DArray)
 0:62              'g_tTex2du4a' (uniform utexture2DArray)
 0:62              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -912,7 +912,7 @@
 0:72      Sequence
 0:72        move second child to first child (temp 4-component vector of float)
 0:72          'txval201' (temp 4-component vector of float)
-0:72          textureGatherOffset (global 4-component vector of float)
+0:72          textureGatherOffset (temp 4-component vector of float)
 0:72            Construct combined texture-sampler (temp sampler2DArray)
 0:72              'g_tTex2df4a' (uniform texture2DArray)
 0:72              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -929,7 +929,7 @@
 0:73      Sequence
 0:73        move second child to first child (temp 4-component vector of int)
 0:73          'txval211' (temp 4-component vector of int)
-0:73          textureGatherOffset (global 4-component vector of int)
+0:73          textureGatherOffset (temp 4-component vector of int)
 0:73            Construct combined texture-sampler (temp isampler2DArray)
 0:73              'g_tTex2di4a' (uniform itexture2DArray)
 0:73              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -946,7 +946,7 @@
 0:74      Sequence
 0:74        move second child to first child (temp 4-component vector of uint)
 0:74          'txval221' (temp 4-component vector of uint)
-0:74          textureGatherOffset (global 4-component vector of uint)
+0:74          textureGatherOffset (temp 4-component vector of uint)
 0:74            Construct combined texture-sampler (temp usampler2DArray)
 0:74              'g_tTex2du4a' (uniform utexture2DArray)
 0:74              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -963,7 +963,7 @@
 0:76      Sequence
 0:76        move second child to first child (temp 4-component vector of float)
 0:76          'txval204' (temp 4-component vector of float)
-0:76          textureGatherOffsets (global 4-component vector of float)
+0:76          textureGatherOffsets (temp 4-component vector of float)
 0:76            Construct combined texture-sampler (temp sampler2DArray)
 0:76              'g_tTex2df4a' (uniform texture2DArray)
 0:76              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -993,7 +993,7 @@
 0:77      Sequence
 0:77        move second child to first child (temp 4-component vector of int)
 0:77          'txval214' (temp 4-component vector of int)
-0:77          textureGatherOffsets (global 4-component vector of int)
+0:77          textureGatherOffsets (temp 4-component vector of int)
 0:77            Construct combined texture-sampler (temp isampler2DArray)
 0:77              'g_tTex2di4a' (uniform itexture2DArray)
 0:77              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -1023,7 +1023,7 @@
 0:78      Sequence
 0:78        move second child to first child (temp 4-component vector of uint)
 0:78          'txval224' (temp 4-component vector of uint)
-0:78          textureGatherOffsets (global 4-component vector of uint)
+0:78          textureGatherOffsets (temp 4-component vector of uint)
 0:78            Construct combined texture-sampler (temp usampler2DArray)
 0:78              'g_tTex2du4a' (uniform utexture2DArray)
 0:78              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -1053,7 +1053,7 @@
 0:88      Sequence
 0:88        move second child to first child (temp 4-component vector of float)
 0:88          'txval301' (temp 4-component vector of float)
-0:88          textureGatherOffset (global 4-component vector of float)
+0:88          textureGatherOffset (temp 4-component vector of float)
 0:88            Construct combined texture-sampler (temp sampler2DArray)
 0:88              'g_tTex2df4a' (uniform texture2DArray)
 0:88              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -1070,7 +1070,7 @@
 0:89      Sequence
 0:89        move second child to first child (temp 4-component vector of int)
 0:89          'txval311' (temp 4-component vector of int)
-0:89          textureGatherOffset (global 4-component vector of int)
+0:89          textureGatherOffset (temp 4-component vector of int)
 0:89            Construct combined texture-sampler (temp isampler2DArray)
 0:89              'g_tTex2di4a' (uniform itexture2DArray)
 0:89              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -1087,7 +1087,7 @@
 0:90      Sequence
 0:90        move second child to first child (temp 4-component vector of uint)
 0:90          'txval321' (temp 4-component vector of uint)
-0:90          textureGatherOffset (global 4-component vector of uint)
+0:90          textureGatherOffset (temp 4-component vector of uint)
 0:90            Construct combined texture-sampler (temp usampler2DArray)
 0:90              'g_tTex2du4a' (uniform utexture2DArray)
 0:90              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -1104,7 +1104,7 @@
 0:92      Sequence
 0:92        move second child to first child (temp 4-component vector of float)
 0:92          'txval304' (temp 4-component vector of float)
-0:92          textureGatherOffsets (global 4-component vector of float)
+0:92          textureGatherOffsets (temp 4-component vector of float)
 0:92            Construct combined texture-sampler (temp sampler2DArray)
 0:92              'g_tTex2df4a' (uniform texture2DArray)
 0:92              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -1134,7 +1134,7 @@
 0:93      Sequence
 0:93        move second child to first child (temp 4-component vector of int)
 0:93          'txval314' (temp 4-component vector of int)
-0:93          textureGatherOffsets (global 4-component vector of int)
+0:93          textureGatherOffsets (temp 4-component vector of int)
 0:93            Construct combined texture-sampler (temp isampler2DArray)
 0:93              'g_tTex2di4a' (uniform itexture2DArray)
 0:93              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -1164,7 +1164,7 @@
 0:94      Sequence
 0:94        move second child to first child (temp 4-component vector of uint)
 0:94          'txval324' (temp 4-component vector of uint)
-0:94          textureGatherOffsets (global 4-component vector of uint)
+0:94          textureGatherOffsets (temp 4-component vector of uint)
 0:94            Construct combined texture-sampler (temp usampler2DArray)
 0:94              'g_tTex2du4a' (uniform utexture2DArray)
 0:94              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -1224,6 +1224,8 @@
 0:109                1 (const int)
 0:109        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_sSamp2d' (uniform sampler)
 0:?     'g_tTex1df4a' (layout(binding=0 ) uniform texture1DArray)
@@ -1235,9 +1237,7 @@
 0:?     'g_tTexcdf4a' (uniform textureCubeArray)
 0:?     'g_tTexcdi4a' (uniform itextureCubeArray)
 0:?     'g_tTexcdu4a' (uniform utextureCubeArray)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform float c1, layout(offset=8 ) uniform 2-component vector of float c2, layout(offset=16 ) uniform 3-component vector of float c3, layout(offset=32 ) uniform 4-component vector of float c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.getdimensions.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.dx10.frag.out
index 3a55d68..0c488cf 100644
--- a/Test/baseResults/hlsl.getdimensions.dx10.frag.out
+++ b/Test/baseResults/hlsl.getdimensions.dx10.frag.out
@@ -1076,6 +1076,8 @@
 0:279                1 (const int)
 0:279        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:?     'g_tTex1di4' (uniform itexture1D)
@@ -1104,8 +1106,6 @@
 0:?     'g_tTex2dmsf4a' (uniform texture2DMSArray)
 0:?     'g_tTex2dmsi4a' (uniform itexture2DMSArray)
 0:?     'g_tTex2dmsu4a' (uniform utexture2DMSArray)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
 
 
 Linked fragment stage:
@@ -2188,6 +2188,8 @@
 0:279                1 (const int)
 0:279        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:?     'g_tTex1di4' (uniform itexture1D)
@@ -2216,8 +2218,6 @@
 0:?     'g_tTex2dmsf4a' (uniform texture2DMSArray)
 0:?     'g_tTex2dmsi4a' (uniform itexture2DMSArray)
 0:?     'g_tTex2dmsu4a' (uniform utexture2DMSArray)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.getdimensions.dx10.vert.out b/Test/baseResults/hlsl.getdimensions.dx10.vert.out
index 3a05bca..c1c90f4 100644
--- a/Test/baseResults/hlsl.getdimensions.dx10.vert.out
+++ b/Test/baseResults/hlsl.getdimensions.dx10.vert.out
@@ -46,9 +46,9 @@
 0:26                0 (const int)
 0:26        Branch: Return
 0:?   Linker Objects
+0:?     'Pos' (out 4-component vector of float Position)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
-0:?     'Pos' (out 4-component vector of float Position)
 
 
 Linked vertex stage:
@@ -101,9 +101,9 @@
 0:26                0 (const int)
 0:26        Branch: Return
 0:?   Linker Objects
+0:?     'Pos' (out 4-component vector of float Position)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
-0:?     'Pos' (out 4-component vector of float Position)
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out
index 717c376..918246b 100644
--- a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out
+++ b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out
@@ -326,6 +326,8 @@
 0:95                1 (const int)
 0:95        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
 0:?     'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
@@ -345,9 +347,7 @@
 0:?     'g_tBuffF' (layout(rgba32f ) uniform imageBuffer)
 0:?     'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer)
 0:?     'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 
 Linked fragment stage:
@@ -680,6 +680,8 @@
 0:95                1 (const int)
 0:95        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
 0:?     'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
@@ -699,9 +701,7 @@
 0:?     'g_tBuffF' (layout(rgba32f ) uniform imageBuffer)
 0:?     'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer)
 0:?     'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:?     'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 
 // Module Version 10000
 // Generated by (magic number): 80001
@@ -796,6 +796,14 @@
                               Decorate 214(Depth) BuiltIn FragDepth
                               Decorate 220(g_sSamp) DescriptorSet 0
                               Decorate 220(g_sSamp) Binding 0
+                              MemberDecorate 222($Global) 0 Offset 0
+                              MemberDecorate 222($Global) 1 Offset 8
+                              MemberDecorate 222($Global) 2 Offset 16
+                              MemberDecorate 222($Global) 3 Offset 32
+                              MemberDecorate 222($Global) 4 Offset 48
+                              MemberDecorate 222($Global) 5 Offset 56
+                              MemberDecorate 222($Global) 6 Offset 64
+                              MemberDecorate 222($Global) 7 Offset 80
                               Decorate 222($Global) Block
                               Decorate 224 DescriptorSet 0
                2:             TypeVoid
diff --git a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
index 9465c62..5985ead 100644
--- a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
+++ b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out
@@ -14,7 +14,7 @@
 0:16        move second child to first child (temp 2-component vector of float)
 0:16          'r00' (temp 2-component vector of float)
 0:16          ERROR: Bad aggregation op
- (global 2-component vector of float)
+ (temp 2-component vector of float)
 0:16            'g_tTex2dmsf4' (uniform texture2DMS)
 0:16            Constant:
 0:16              1 (const int)
@@ -22,7 +22,7 @@
 0:17        move second child to first child (temp 2-component vector of float)
 0:17          'r01' (temp 2-component vector of float)
 0:17          ERROR: Bad aggregation op
- (global 2-component vector of float)
+ (temp 2-component vector of float)
 0:17            'g_tTex2dmsf4a' (uniform texture2DMSArray)
 0:17            Constant:
 0:17              2 (const int)
@@ -59,11 +59,11 @@
 0:22                1 (const int)
 0:22        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex2dmsf4' (uniform texture2DMS)
 0:?     'g_tTex2dmsf4a' (uniform texture2DMSArray)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
 
 
 Linked fragment stage:
@@ -79,7 +79,7 @@
 0:16        move second child to first child (temp 2-component vector of float)
 0:16          'r00' (temp 2-component vector of float)
 0:16          ERROR: Bad aggregation op
- (global 2-component vector of float)
+ (temp 2-component vector of float)
 0:16            'g_tTex2dmsf4' (uniform texture2DMS)
 0:16            Constant:
 0:16              1 (const int)
@@ -87,7 +87,7 @@
 0:17        move second child to first child (temp 2-component vector of float)
 0:17          'r01' (temp 2-component vector of float)
 0:17          ERROR: Bad aggregation op
- (global 2-component vector of float)
+ (temp 2-component vector of float)
 0:17            'g_tTex2dmsf4a' (uniform texture2DMSArray)
 0:17            Constant:
 0:17              2 (const int)
@@ -124,10 +124,10 @@
 0:22                1 (const int)
 0:22        Branch: Return
 0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
 0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
 0:?     'g_tTex2dmsf4' (uniform texture2DMS)
 0:?     'g_tTex2dmsf4a' (uniform texture2DMSArray)
-0:?     'Color' (layout(location=0 ) out 4-component vector of float)
-0:?     'Depth' (out float FragDepth)
 
 SPIR-V is not generated for failed compile or link
diff --git a/Test/baseResults/hlsl.identifier.sample.frag.out b/Test/baseResults/hlsl.identifier.sample.frag.out
new file mode 100644
index 0000000..8e74081
--- /dev/null
+++ b/Test/baseResults/hlsl.identifier.sample.frag.out
@@ -0,0 +1,103 @@
+hlsl.identifier.sample.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:9  Function Definition: sample(i1; (temp int)
+0:9    Function Parameters: 
+0:9      'x' (in int)
+0:?     Sequence
+0:9      Branch: Return with expression
+0:9        'x' (in int)
+0:12  Function Definition: main( (temp 4-component vector of float)
+0:12    Function Parameters: 
+0:?     Sequence
+0:15      Sequence
+0:15        move second child to first child (temp int)
+0:15          'sample' (temp int)
+0:15          Constant:
+0:15            3 (const int)
+0:17      Sequence
+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:?           Constant:
+0:?             0.000000
+0:?             0.000000
+0:?             0.000000
+0:?             0.000000
+0:17        Branch: Return
+0:?   Linker Objects
+0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:9  Function Definition: sample(i1; (temp int)
+0:9    Function Parameters: 
+0:9      'x' (in int)
+0:?     Sequence
+0:9      Branch: Return with expression
+0:9        'x' (in int)
+0:12  Function Definition: main( (temp 4-component vector of float)
+0:12    Function Parameters: 
+0:?     Sequence
+0:15      Sequence
+0:15        move second child to first child (temp int)
+0:15          'sample' (temp int)
+0:15          Constant:
+0:15            3 (const int)
+0:17      Sequence
+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:?           Constant:
+0:?             0.000000
+0:?             0.000000
+0:?             0.000000
+0:?             0.000000
+0:17        Branch: Return
+0:?   Linker Objects
+0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 24
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 20
+                              ExecutionMode 4 OriginUpperLeft
+                              Name 4  "main"
+                              Name 10  "sample(i1;"
+                              Name 9  "x"
+                              Name 15  "sample"
+                              Name 20  "@entryPointOutput"
+                              Decorate 20(@entryPointOutput) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Function 6(int)
+               8:             TypeFunction 6(int) 7(ptr)
+              16:      6(int) Constant 3
+              17:             TypeFloat 32
+              18:             TypeVector 17(float) 4
+              19:             TypePointer Output 18(fvec4)
+20(@entryPointOutput):     19(ptr) Variable Output
+              21:   17(float) Constant 0
+              22:   18(fvec4) ConstantComposite 21 21 21 21
+         4(main):           2 Function None 3
+               5:             Label
+      15(sample):      7(ptr) Variable Function
+                              Store 15(sample) 16
+                              Store 20(@entryPointOutput) 22
+                              Return
+                              FunctionEnd
+  10(sample(i1;):      6(int) Function None 8
+            9(x):      7(ptr) FunctionParameter
+              11:             Label
+              12:      6(int) Load 9(x)
+                              ReturnValue 12
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.if.frag.out b/Test/baseResults/hlsl.if.frag.out
index 3b329ae..c37bff6 100755
--- a/Test/baseResults/hlsl.if.frag.out
+++ b/Test/baseResults/hlsl.if.frag.out
@@ -8,9 +8,10 @@
 0:?     Sequence
 0:3      Test condition and select (temp void)
 0:3        Condition
-0:3        Compare Equal (temp bool)
-0:3          'input' (layout(location=0 ) in 4-component vector of float)
-0:3          'input' (layout(location=0 ) in 4-component vector of float)
+0:3        all (temp bool)
+0:3          Equal (temp 4-component vector of bool)
+0:3            'input' (layout(location=0 ) in 4-component vector of float)
+0:3            'input' (layout(location=0 ) in 4-component vector of float)
 0:3        true case
 0:4        Sequence
 0:4          move second child to first child (temp 4-component vector of float)
@@ -19,9 +20,10 @@
 0:4          Branch: Return
 0:6      Test condition and select (temp void)
 0:6        Condition
-0:6        Compare Equal (temp bool)
-0:6          'input' (layout(location=0 ) in 4-component vector of float)
-0:6          'input' (layout(location=0 ) in 4-component vector of float)
+0:6        all (temp bool)
+0:6          Equal (temp 4-component vector of bool)
+0:6            'input' (layout(location=0 ) in 4-component vector of float)
+0:6            'input' (layout(location=0 ) in 4-component vector of float)
 0:6        true case
 0:7        Sequence
 0:7          move second child to first child (temp 4-component vector of float)
@@ -37,21 +39,24 @@
 0:9          Branch: Return
 0:11      Test condition and select (temp void)
 0:11        Condition
-0:11        Compare Equal (temp bool)
-0:11          'input' (layout(location=0 ) in 4-component vector of float)
-0:11          'input' (layout(location=0 ) in 4-component vector of float)
+0:11        all (temp bool)
+0:11          Equal (temp 4-component vector of bool)
+0:11            'input' (layout(location=0 ) in 4-component vector of float)
+0:11            'input' (layout(location=0 ) 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        Compare Equal (temp bool)
-0:14          'input' (layout(location=0 ) in 4-component vector of float)
-0:14          'input' (layout(location=0 ) in 4-component vector of float)
+0:14        all (temp bool)
+0:14          Equal (temp 4-component vector of bool)
+0:14            'input' (layout(location=0 ) in 4-component vector of float)
+0:14            'input' (layout(location=0 ) in 4-component vector of float)
 0:14        true case is null
 0:19      Test condition and select (temp void)
 0:19        Condition
-0:19        Compare Equal (temp bool)
-0:19          'input' (layout(location=0 ) in 4-component vector of float)
-0:19          'input' (layout(location=0 ) in 4-component vector of float)
+0:19        all (temp bool)
+0:19          Equal (temp 4-component vector of bool)
+0:19            'input' (layout(location=0 ) in 4-component vector of float)
+0:19            'input' (layout(location=0 ) in 4-component vector of float)
 0:19        true case
 0:?         Sequence
 0:20          Sequence
@@ -61,9 +66,10 @@
 0:20            Branch: Return
 0:23      Test condition and select (temp void)
 0:23        Condition
-0:23        Compare Equal (temp bool)
-0:23          'input' (layout(location=0 ) in 4-component vector of float)
-0:23          'input' (layout(location=0 ) in 4-component vector of float)
+0:23        all (temp bool)
+0:23          Equal (temp 4-component vector of bool)
+0:23            'input' (layout(location=0 ) in 4-component vector of float)
+0:23            'input' (layout(location=0 ) in 4-component vector of float)
 0:23        true case
 0:?         Sequence
 0:24          Sequence
@@ -109,9 +115,10 @@
 0:?     Sequence
 0:3      Test condition and select (temp void)
 0:3        Condition
-0:3        Compare Equal (temp bool)
-0:3          'input' (layout(location=0 ) in 4-component vector of float)
-0:3          'input' (layout(location=0 ) in 4-component vector of float)
+0:3        all (temp bool)
+0:3          Equal (temp 4-component vector of bool)
+0:3            'input' (layout(location=0 ) in 4-component vector of float)
+0:3            'input' (layout(location=0 ) in 4-component vector of float)
 0:3        true case
 0:4        Sequence
 0:4          move second child to first child (temp 4-component vector of float)
@@ -120,9 +127,10 @@
 0:4          Branch: Return
 0:6      Test condition and select (temp void)
 0:6        Condition
-0:6        Compare Equal (temp bool)
-0:6          'input' (layout(location=0 ) in 4-component vector of float)
-0:6          'input' (layout(location=0 ) in 4-component vector of float)
+0:6        all (temp bool)
+0:6          Equal (temp 4-component vector of bool)
+0:6            'input' (layout(location=0 ) in 4-component vector of float)
+0:6            'input' (layout(location=0 ) in 4-component vector of float)
 0:6        true case
 0:7        Sequence
 0:7          move second child to first child (temp 4-component vector of float)
@@ -138,21 +146,24 @@
 0:9          Branch: Return
 0:11      Test condition and select (temp void)
 0:11        Condition
-0:11        Compare Equal (temp bool)
-0:11          'input' (layout(location=0 ) in 4-component vector of float)
-0:11          'input' (layout(location=0 ) in 4-component vector of float)
+0:11        all (temp bool)
+0:11          Equal (temp 4-component vector of bool)
+0:11            'input' (layout(location=0 ) in 4-component vector of float)
+0:11            'input' (layout(location=0 ) 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        Compare Equal (temp bool)
-0:14          'input' (layout(location=0 ) in 4-component vector of float)
-0:14          'input' (layout(location=0 ) in 4-component vector of float)
+0:14        all (temp bool)
+0:14          Equal (temp 4-component vector of bool)
+0:14            'input' (layout(location=0 ) in 4-component vector of float)
+0:14            'input' (layout(location=0 ) in 4-component vector of float)
 0:14        true case is null
 0:19      Test condition and select (temp void)
 0:19        Condition
-0:19        Compare Equal (temp bool)
-0:19          'input' (layout(location=0 ) in 4-component vector of float)
-0:19          'input' (layout(location=0 ) in 4-component vector of float)
+0:19        all (temp bool)
+0:19          Equal (temp 4-component vector of bool)
+0:19            'input' (layout(location=0 ) in 4-component vector of float)
+0:19            'input' (layout(location=0 ) in 4-component vector of float)
 0:19        true case
 0:?         Sequence
 0:20          Sequence
@@ -162,9 +173,10 @@
 0:20            Branch: Return
 0:23      Test condition and select (temp void)
 0:23        Condition
-0:23        Compare Equal (temp bool)
-0:23          'input' (layout(location=0 ) in 4-component vector of float)
-0:23          'input' (layout(location=0 ) in 4-component vector of float)
+0:23        all (temp bool)
+0:23          Equal (temp 4-component vector of bool)
+0:23            'input' (layout(location=0 ) in 4-component vector of float)
+0:23            'input' (layout(location=0 ) in 4-component vector of float)
 0:23        true case
 0:?         Sequence
 0:24          Sequence
diff --git a/Test/baseResults/hlsl.init.frag.out b/Test/baseResults/hlsl.init.frag.out
index b31921b..42f94ca 100755
--- a/Test/baseResults/hlsl.init.frag.out
+++ b/Test/baseResults/hlsl.init.frag.out
@@ -132,6 +132,8 @@
 0:35            'a1' (global 4-component vector of float)
 0:35        Branch: Return
 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)
 0:?     'a1' (global 4-component vector of float)
 0:?     'b1' (global 4-component vector of float)
 0:?     'a1i' (global 4-component vector of float)
@@ -150,8 +152,6 @@
 0:?     'single2' (global structure{temp 2-component vector of uint v})
 0:?     'single3' (global structure{temp structure{temp int f} s1})
 0:?     'single4' (global structure{temp structure{temp 2-component vector of uint v} s1})
-0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
-0:?     'input' (layout(location=0 ) in 4-component vector of float)
 
 
 Linked fragment stage:
@@ -290,6 +290,8 @@
 0:35            'a1' (global 4-component vector of float)
 0:35        Branch: Return
 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)
 0:?     'a1' (global 4-component vector of float)
 0:?     'b1' (global 4-component vector of float)
 0:?     'a1i' (global 4-component vector of float)
@@ -308,8 +310,6 @@
 0:?     'single2' (global structure{temp 2-component vector of uint v})
 0:?     'single3' (global structure{temp structure{temp int f} s1})
 0:?     'single4' (global structure{temp structure{temp 2-component vector of uint v} s1})
-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): 80001
diff --git a/Test/baseResults/hlsl.intrinsics.barriers.comp.out b/Test/baseResults/hlsl.intrinsics.barriers.comp.out
index 5d92dd1..07bd370 100644
--- a/Test/baseResults/hlsl.intrinsics.barriers.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.barriers.comp.out
@@ -5,12 +5,12 @@
 0:3  Function Definition: ComputeShaderFunction( (temp float)
 0:3    Function Parameters: 
 0:?     Sequence
-0:4      MemoryBarrier (global void)
-0:5      AllMemoryBarrierWithGroupSync (global void)
-0:6      GroupMemoryBarrier (global void)
-0:7      GroupMemoryBarrierWithGroupSync (global void)
-0:8      WorkgroupMemoryBarrier (global void)
-0:9      WorkgroupMemoryBarrierWithGroupSync (global void)
+0:4      MemoryBarrier (temp void)
+0:5      AllMemoryBarrierWithGroupSync (temp void)
+0:6      GroupMemoryBarrier (temp void)
+0:7      GroupMemoryBarrierWithGroupSync (temp void)
+0:8      WorkgroupMemoryBarrier (temp void)
+0:9      WorkgroupMemoryBarrierWithGroupSync (temp void)
 0:11      Sequence
 0:11        move second child to first child (temp float)
 0:?           '@entryPointOutput' (layout(location=0 ) out float)
@@ -30,12 +30,12 @@
 0:3  Function Definition: ComputeShaderFunction( (temp float)
 0:3    Function Parameters: 
 0:?     Sequence
-0:4      MemoryBarrier (global void)
-0:5      AllMemoryBarrierWithGroupSync (global void)
-0:6      GroupMemoryBarrier (global void)
-0:7      GroupMemoryBarrierWithGroupSync (global void)
-0:8      WorkgroupMemoryBarrier (global void)
-0:9      WorkgroupMemoryBarrierWithGroupSync (global void)
+0:4      MemoryBarrier (temp void)
+0:5      AllMemoryBarrierWithGroupSync (temp void)
+0:6      GroupMemoryBarrier (temp void)
+0:7      GroupMemoryBarrierWithGroupSync (temp void)
+0:8      WorkgroupMemoryBarrier (temp void)
+0:9      WorkgroupMemoryBarrierWithGroupSync (temp void)
 0:11      Sequence
 0:11        move second child to first child (temp float)
 0:?           '@entryPointOutput' (layout(location=0 ) out float)
diff --git a/Test/baseResults/hlsl.intrinsics.comp.out b/Test/baseResults/hlsl.intrinsics.comp.out
index cd366fc..42ad973 100644
--- a/Test/baseResults/hlsl.intrinsics.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.comp.out
@@ -10,9 +10,9 @@
 0:17      'inU0' (in uint)
 0:17      'inU1' (in uint)
 0:?     Sequence
-0:21      all (global bool)
+0:21      all (temp bool)
 0:21        'inF0' (in float)
-0:24      AtomicAdd (global void)
+0:24      AtomicAdd (temp void)
 0:24        'gs_ua' (shared uint)
 0:24        'gs_ub' (shared uint)
 0:25      move second child to first child (temp uint)
@@ -20,7 +20,7 @@
 0:25        AtomicAdd (temp uint)
 0:25          'gs_ua' (shared uint)
 0:25          'gs_ub' (shared uint)
-0:26      AtomicAnd (global void)
+0:26      AtomicAnd (temp void)
 0:26        'gs_ua' (shared uint)
 0:26        'gs_ub' (shared uint)
 0:27      move second child to first child (temp uint)
@@ -39,7 +39,7 @@
 0:29        AtomicExchange (temp uint)
 0:29          'gs_ua' (shared uint)
 0:29          'gs_ub' (shared uint)
-0:30      AtomicMax (global void)
+0:30      AtomicMax (temp void)
 0:30        'gs_ua' (shared uint)
 0:30        'gs_ub' (shared uint)
 0:31      move second child to first child (temp uint)
@@ -47,7 +47,7 @@
 0:31        AtomicMax (temp uint)
 0:31          'gs_ua' (shared uint)
 0:31          'gs_ub' (shared uint)
-0:32      AtomicMin (global void)
+0:32      AtomicMin (temp void)
 0:32        'gs_ua' (shared uint)
 0:32        'gs_ub' (shared uint)
 0:33      move second child to first child (temp uint)
@@ -55,7 +55,7 @@
 0:33        AtomicMin (temp uint)
 0:33          'gs_ua' (shared uint)
 0:33          'gs_ub' (shared uint)
-0:34      AtomicOr (global void)
+0:34      AtomicOr (temp void)
 0:34        'gs_ua' (shared uint)
 0:34        'gs_ub' (shared uint)
 0:35      move second child to first child (temp uint)
@@ -63,7 +63,7 @@
 0:35        AtomicOr (temp uint)
 0:35          'gs_ua' (shared uint)
 0:35          'gs_ub' (shared uint)
-0:36      AtomicXor (global void)
+0:36      AtomicXor (temp void)
 0:36        'gs_ua' (shared uint)
 0:36        'gs_ub' (shared uint)
 0:37      move second child to first child (temp uint)
@@ -91,9 +91,9 @@
 0:51      'inU0' (in 2-component vector of uint)
 0:51      'inU1' (in 2-component vector of uint)
 0:?     Sequence
-0:55      all (global bool)
+0:55      all (temp bool)
 0:55        'inF0' (in 2-component vector of float)
-0:58      AtomicAdd (global void)
+0:58      AtomicAdd (temp void)
 0:58        'gs_ua2' (shared 2-component vector of uint)
 0:58        'gs_ub2' (shared 2-component vector of uint)
 0:59      move second child to first child (temp 2-component vector of uint)
@@ -101,7 +101,7 @@
 0:59        AtomicAdd (temp 2-component vector of uint)
 0:59          'gs_ua2' (shared 2-component vector of uint)
 0:59          'gs_ub2' (shared 2-component vector of uint)
-0:60      AtomicAnd (global void)
+0:60      AtomicAnd (temp void)
 0:60        'gs_ua2' (shared 2-component vector of uint)
 0:60        'gs_ub2' (shared 2-component vector of uint)
 0:61      move second child to first child (temp 2-component vector of uint)
@@ -120,7 +120,7 @@
 0:63        AtomicExchange (temp 2-component vector of uint)
 0:63          'gs_ua2' (shared 2-component vector of uint)
 0:63          'gs_ub2' (shared 2-component vector of uint)
-0:64      AtomicMax (global void)
+0:64      AtomicMax (temp void)
 0:64        'gs_ua2' (shared 2-component vector of uint)
 0:64        'gs_ub2' (shared 2-component vector of uint)
 0:65      move second child to first child (temp 2-component vector of uint)
@@ -128,7 +128,7 @@
 0:65        AtomicMax (temp 2-component vector of uint)
 0:65          'gs_ua2' (shared 2-component vector of uint)
 0:65          'gs_ub2' (shared 2-component vector of uint)
-0:66      AtomicMin (global void)
+0:66      AtomicMin (temp void)
 0:66        'gs_ua2' (shared 2-component vector of uint)
 0:66        'gs_ub2' (shared 2-component vector of uint)
 0:67      move second child to first child (temp 2-component vector of uint)
@@ -136,7 +136,7 @@
 0:67        AtomicMin (temp 2-component vector of uint)
 0:67          'gs_ua2' (shared 2-component vector of uint)
 0:67          'gs_ub2' (shared 2-component vector of uint)
-0:68      AtomicOr (global void)
+0:68      AtomicOr (temp void)
 0:68        'gs_ua2' (shared 2-component vector of uint)
 0:68        'gs_ub2' (shared 2-component vector of uint)
 0:69      move second child to first child (temp 2-component vector of uint)
@@ -144,7 +144,7 @@
 0:69        AtomicOr (temp 2-component vector of uint)
 0:69          'gs_ua2' (shared 2-component vector of uint)
 0:69          'gs_ub2' (shared 2-component vector of uint)
-0:70      AtomicXor (global void)
+0:70      AtomicXor (temp void)
 0:70        'gs_ua2' (shared 2-component vector of uint)
 0:70        'gs_ub2' (shared 2-component vector of uint)
 0:71      move second child to first child (temp 2-component vector of uint)
@@ -164,9 +164,9 @@
 0:78      'inU0' (in 3-component vector of uint)
 0:78      'inU1' (in 3-component vector of uint)
 0:?     Sequence
-0:82      all (global bool)
+0:82      all (temp bool)
 0:82        'inF0' (in 3-component vector of float)
-0:85      AtomicAdd (global void)
+0:85      AtomicAdd (temp void)
 0:85        'gs_ua3' (shared 3-component vector of uint)
 0:85        'gs_ub3' (shared 3-component vector of uint)
 0:86      move second child to first child (temp 3-component vector of uint)
@@ -174,7 +174,7 @@
 0:86        AtomicAdd (temp 3-component vector of uint)
 0:86          'gs_ua3' (shared 3-component vector of uint)
 0:86          'gs_ub3' (shared 3-component vector of uint)
-0:87      AtomicAnd (global void)
+0:87      AtomicAnd (temp void)
 0:87        'gs_ua3' (shared 3-component vector of uint)
 0:87        'gs_ub3' (shared 3-component vector of uint)
 0:88      move second child to first child (temp 3-component vector of uint)
@@ -193,7 +193,7 @@
 0:90        AtomicExchange (temp 3-component vector of uint)
 0:90          'gs_ua3' (shared 3-component vector of uint)
 0:90          'gs_ub3' (shared 3-component vector of uint)
-0:91      AtomicMax (global void)
+0:91      AtomicMax (temp void)
 0:91        'gs_ua3' (shared 3-component vector of uint)
 0:91        'gs_ub3' (shared 3-component vector of uint)
 0:92      move second child to first child (temp 3-component vector of uint)
@@ -201,7 +201,7 @@
 0:92        AtomicMax (temp 3-component vector of uint)
 0:92          'gs_ua3' (shared 3-component vector of uint)
 0:92          'gs_ub3' (shared 3-component vector of uint)
-0:93      AtomicMin (global void)
+0:93      AtomicMin (temp void)
 0:93        'gs_ua3' (shared 3-component vector of uint)
 0:93        'gs_ub3' (shared 3-component vector of uint)
 0:94      move second child to first child (temp 3-component vector of uint)
@@ -209,7 +209,7 @@
 0:94        AtomicMin (temp 3-component vector of uint)
 0:94          'gs_ua3' (shared 3-component vector of uint)
 0:94          'gs_ub3' (shared 3-component vector of uint)
-0:95      AtomicOr (global void)
+0:95      AtomicOr (temp void)
 0:95        'gs_ua3' (shared 3-component vector of uint)
 0:95        'gs_ub3' (shared 3-component vector of uint)
 0:96      move second child to first child (temp 3-component vector of uint)
@@ -217,7 +217,7 @@
 0:96        AtomicOr (temp 3-component vector of uint)
 0:96          'gs_ua3' (shared 3-component vector of uint)
 0:96          'gs_ub3' (shared 3-component vector of uint)
-0:97      AtomicXor (global void)
+0:97      AtomicXor (temp void)
 0:97        'gs_ua3' (shared 3-component vector of uint)
 0:97        'gs_ub3' (shared 3-component vector of uint)
 0:98      move second child to first child (temp 3-component vector of uint)
@@ -238,9 +238,9 @@
 0:105      'inU0' (layout(location=3 ) in 4-component vector of uint)
 0:105      'inU1' (layout(location=4 ) in 4-component vector of uint)
 0:?     Sequence
-0:109      all (global bool)
+0:109      all (temp bool)
 0:109        'inF0' (layout(location=0 ) in 4-component vector of float)
-0:112      AtomicAdd (global void)
+0:112      AtomicAdd (temp void)
 0:112        'gs_ua4' (shared 4-component vector of uint)
 0:112        'gs_ub4' (shared 4-component vector of uint)
 0:113      move second child to first child (temp 4-component vector of uint)
@@ -248,7 +248,7 @@
 0:113        AtomicAdd (temp 4-component vector of uint)
 0:113          'gs_ua4' (shared 4-component vector of uint)
 0:113          'gs_ub4' (shared 4-component vector of uint)
-0:114      AtomicAnd (global void)
+0:114      AtomicAnd (temp void)
 0:114        'gs_ua4' (shared 4-component vector of uint)
 0:114        'gs_ub4' (shared 4-component vector of uint)
 0:115      move second child to first child (temp 4-component vector of uint)
@@ -267,7 +267,7 @@
 0:117        AtomicExchange (temp 4-component vector of uint)
 0:117          'gs_ua4' (shared 4-component vector of uint)
 0:117          'gs_ub4' (shared 4-component vector of uint)
-0:118      AtomicMax (global void)
+0:118      AtomicMax (temp void)
 0:118        'gs_ua4' (shared 4-component vector of uint)
 0:118        'gs_ub4' (shared 4-component vector of uint)
 0:119      move second child to first child (temp 4-component vector of uint)
@@ -275,7 +275,7 @@
 0:119        AtomicMax (temp 4-component vector of uint)
 0:119          'gs_ua4' (shared 4-component vector of uint)
 0:119          'gs_ub4' (shared 4-component vector of uint)
-0:120      AtomicMin (global void)
+0:120      AtomicMin (temp void)
 0:120        'gs_ua4' (shared 4-component vector of uint)
 0:120        'gs_ub4' (shared 4-component vector of uint)
 0:121      move second child to first child (temp 4-component vector of uint)
@@ -283,7 +283,7 @@
 0:121        AtomicMin (temp 4-component vector of uint)
 0:121          'gs_ua4' (shared 4-component vector of uint)
 0:121          'gs_ub4' (shared 4-component vector of uint)
-0:122      AtomicOr (global void)
+0:122      AtomicOr (temp void)
 0:122        'gs_ua4' (shared 4-component vector of uint)
 0:122        'gs_ub4' (shared 4-component vector of uint)
 0:123      move second child to first child (temp 4-component vector of uint)
@@ -291,7 +291,7 @@
 0:123        AtomicOr (temp 4-component vector of uint)
 0:123          'gs_ua4' (shared 4-component vector of uint)
 0:123          'gs_ub4' (shared 4-component vector of uint)
-0:124      AtomicXor (global void)
+0:124      AtomicXor (temp void)
 0:124        'gs_ua4' (shared 4-component vector of uint)
 0:124        'gs_ub4' (shared 4-component vector of uint)
 0:125      move second child to first child (temp 4-component vector of uint)
@@ -309,6 +309,12 @@
 0:?             4.000000
 0:128        Branch: Return
 0:?   Linker Objects
+0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:?     'inF0' (layout(location=0 ) in 4-component vector of float)
+0:?     'inF1' (layout(location=1 ) in 4-component vector of float)
+0:?     'inF2' (layout(location=2 ) in 4-component vector of float)
+0:?     'inU0' (layout(location=3 ) in 4-component vector of uint)
+0:?     'inU1' (layout(location=4 ) in 4-component vector of uint)
 0:?     'gs_ua' (shared uint)
 0:?     'gs_ub' (shared uint)
 0:?     'gs_uc' (shared uint)
@@ -321,12 +327,6 @@
 0:?     'gs_ua4' (shared 4-component vector of uint)
 0:?     'gs_ub4' (shared 4-component vector of uint)
 0:?     'gs_uc4' (shared 4-component vector of uint)
-0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
-0:?     'inF0' (layout(location=0 ) in 4-component vector of float)
-0:?     'inF1' (layout(location=1 ) in 4-component vector of float)
-0:?     'inF2' (layout(location=2 ) in 4-component vector of float)
-0:?     'inU0' (layout(location=3 ) in 4-component vector of uint)
-0:?     'inU1' (layout(location=4 ) in 4-component vector of uint)
 
 
 Linked compute stage:
@@ -343,9 +343,9 @@
 0:17      'inU0' (in uint)
 0:17      'inU1' (in uint)
 0:?     Sequence
-0:21      all (global bool)
+0:21      all (temp bool)
 0:21        'inF0' (in float)
-0:24      AtomicAdd (global void)
+0:24      AtomicAdd (temp void)
 0:24        'gs_ua' (shared uint)
 0:24        'gs_ub' (shared uint)
 0:25      move second child to first child (temp uint)
@@ -353,7 +353,7 @@
 0:25        AtomicAdd (temp uint)
 0:25          'gs_ua' (shared uint)
 0:25          'gs_ub' (shared uint)
-0:26      AtomicAnd (global void)
+0:26      AtomicAnd (temp void)
 0:26        'gs_ua' (shared uint)
 0:26        'gs_ub' (shared uint)
 0:27      move second child to first child (temp uint)
@@ -372,7 +372,7 @@
 0:29        AtomicExchange (temp uint)
 0:29          'gs_ua' (shared uint)
 0:29          'gs_ub' (shared uint)
-0:30      AtomicMax (global void)
+0:30      AtomicMax (temp void)
 0:30        'gs_ua' (shared uint)
 0:30        'gs_ub' (shared uint)
 0:31      move second child to first child (temp uint)
@@ -380,7 +380,7 @@
 0:31        AtomicMax (temp uint)
 0:31          'gs_ua' (shared uint)
 0:31          'gs_ub' (shared uint)
-0:32      AtomicMin (global void)
+0:32      AtomicMin (temp void)
 0:32        'gs_ua' (shared uint)
 0:32        'gs_ub' (shared uint)
 0:33      move second child to first child (temp uint)
@@ -388,7 +388,7 @@
 0:33        AtomicMin (temp uint)
 0:33          'gs_ua' (shared uint)
 0:33          'gs_ub' (shared uint)
-0:34      AtomicOr (global void)
+0:34      AtomicOr (temp void)
 0:34        'gs_ua' (shared uint)
 0:34        'gs_ub' (shared uint)
 0:35      move second child to first child (temp uint)
@@ -396,7 +396,7 @@
 0:35        AtomicOr (temp uint)
 0:35          'gs_ua' (shared uint)
 0:35          'gs_ub' (shared uint)
-0:36      AtomicXor (global void)
+0:36      AtomicXor (temp void)
 0:36        'gs_ua' (shared uint)
 0:36        'gs_ub' (shared uint)
 0:37      move second child to first child (temp uint)
@@ -424,9 +424,9 @@
 0:51      'inU0' (in 2-component vector of uint)
 0:51      'inU1' (in 2-component vector of uint)
 0:?     Sequence
-0:55      all (global bool)
+0:55      all (temp bool)
 0:55        'inF0' (in 2-component vector of float)
-0:58      AtomicAdd (global void)
+0:58      AtomicAdd (temp void)
 0:58        'gs_ua2' (shared 2-component vector of uint)
 0:58        'gs_ub2' (shared 2-component vector of uint)
 0:59      move second child to first child (temp 2-component vector of uint)
@@ -434,7 +434,7 @@
 0:59        AtomicAdd (temp 2-component vector of uint)
 0:59          'gs_ua2' (shared 2-component vector of uint)
 0:59          'gs_ub2' (shared 2-component vector of uint)
-0:60      AtomicAnd (global void)
+0:60      AtomicAnd (temp void)
 0:60        'gs_ua2' (shared 2-component vector of uint)
 0:60        'gs_ub2' (shared 2-component vector of uint)
 0:61      move second child to first child (temp 2-component vector of uint)
@@ -453,7 +453,7 @@
 0:63        AtomicExchange (temp 2-component vector of uint)
 0:63          'gs_ua2' (shared 2-component vector of uint)
 0:63          'gs_ub2' (shared 2-component vector of uint)
-0:64      AtomicMax (global void)
+0:64      AtomicMax (temp void)
 0:64        'gs_ua2' (shared 2-component vector of uint)
 0:64        'gs_ub2' (shared 2-component vector of uint)
 0:65      move second child to first child (temp 2-component vector of uint)
@@ -461,7 +461,7 @@
 0:65        AtomicMax (temp 2-component vector of uint)
 0:65          'gs_ua2' (shared 2-component vector of uint)
 0:65          'gs_ub2' (shared 2-component vector of uint)
-0:66      AtomicMin (global void)
+0:66      AtomicMin (temp void)
 0:66        'gs_ua2' (shared 2-component vector of uint)
 0:66        'gs_ub2' (shared 2-component vector of uint)
 0:67      move second child to first child (temp 2-component vector of uint)
@@ -469,7 +469,7 @@
 0:67        AtomicMin (temp 2-component vector of uint)
 0:67          'gs_ua2' (shared 2-component vector of uint)
 0:67          'gs_ub2' (shared 2-component vector of uint)
-0:68      AtomicOr (global void)
+0:68      AtomicOr (temp void)
 0:68        'gs_ua2' (shared 2-component vector of uint)
 0:68        'gs_ub2' (shared 2-component vector of uint)
 0:69      move second child to first child (temp 2-component vector of uint)
@@ -477,7 +477,7 @@
 0:69        AtomicOr (temp 2-component vector of uint)
 0:69          'gs_ua2' (shared 2-component vector of uint)
 0:69          'gs_ub2' (shared 2-component vector of uint)
-0:70      AtomicXor (global void)
+0:70      AtomicXor (temp void)
 0:70        'gs_ua2' (shared 2-component vector of uint)
 0:70        'gs_ub2' (shared 2-component vector of uint)
 0:71      move second child to first child (temp 2-component vector of uint)
@@ -497,9 +497,9 @@
 0:78      'inU0' (in 3-component vector of uint)
 0:78      'inU1' (in 3-component vector of uint)
 0:?     Sequence
-0:82      all (global bool)
+0:82      all (temp bool)
 0:82        'inF0' (in 3-component vector of float)
-0:85      AtomicAdd (global void)
+0:85      AtomicAdd (temp void)
 0:85        'gs_ua3' (shared 3-component vector of uint)
 0:85        'gs_ub3' (shared 3-component vector of uint)
 0:86      move second child to first child (temp 3-component vector of uint)
@@ -507,7 +507,7 @@
 0:86        AtomicAdd (temp 3-component vector of uint)
 0:86          'gs_ua3' (shared 3-component vector of uint)
 0:86          'gs_ub3' (shared 3-component vector of uint)
-0:87      AtomicAnd (global void)
+0:87      AtomicAnd (temp void)
 0:87        'gs_ua3' (shared 3-component vector of uint)
 0:87        'gs_ub3' (shared 3-component vector of uint)
 0:88      move second child to first child (temp 3-component vector of uint)
@@ -526,7 +526,7 @@
 0:90        AtomicExchange (temp 3-component vector of uint)
 0:90          'gs_ua3' (shared 3-component vector of uint)
 0:90          'gs_ub3' (shared 3-component vector of uint)
-0:91      AtomicMax (global void)
+0:91      AtomicMax (temp void)
 0:91        'gs_ua3' (shared 3-component vector of uint)
 0:91        'gs_ub3' (shared 3-component vector of uint)
 0:92      move second child to first child (temp 3-component vector of uint)
@@ -534,7 +534,7 @@
 0:92        AtomicMax (temp 3-component vector of uint)
 0:92          'gs_ua3' (shared 3-component vector of uint)
 0:92          'gs_ub3' (shared 3-component vector of uint)
-0:93      AtomicMin (global void)
+0:93      AtomicMin (temp void)
 0:93        'gs_ua3' (shared 3-component vector of uint)
 0:93        'gs_ub3' (shared 3-component vector of uint)
 0:94      move second child to first child (temp 3-component vector of uint)
@@ -542,7 +542,7 @@
 0:94        AtomicMin (temp 3-component vector of uint)
 0:94          'gs_ua3' (shared 3-component vector of uint)
 0:94          'gs_ub3' (shared 3-component vector of uint)
-0:95      AtomicOr (global void)
+0:95      AtomicOr (temp void)
 0:95        'gs_ua3' (shared 3-component vector of uint)
 0:95        'gs_ub3' (shared 3-component vector of uint)
 0:96      move second child to first child (temp 3-component vector of uint)
@@ -550,7 +550,7 @@
 0:96        AtomicOr (temp 3-component vector of uint)
 0:96          'gs_ua3' (shared 3-component vector of uint)
 0:96          'gs_ub3' (shared 3-component vector of uint)
-0:97      AtomicXor (global void)
+0:97      AtomicXor (temp void)
 0:97        'gs_ua3' (shared 3-component vector of uint)
 0:97        'gs_ub3' (shared 3-component vector of uint)
 0:98      move second child to first child (temp 3-component vector of uint)
@@ -571,9 +571,9 @@
 0:105      'inU0' (layout(location=3 ) in 4-component vector of uint)
 0:105      'inU1' (layout(location=4 ) in 4-component vector of uint)
 0:?     Sequence
-0:109      all (global bool)
+0:109      all (temp bool)
 0:109        'inF0' (layout(location=0 ) in 4-component vector of float)
-0:112      AtomicAdd (global void)
+0:112      AtomicAdd (temp void)
 0:112        'gs_ua4' (shared 4-component vector of uint)
 0:112        'gs_ub4' (shared 4-component vector of uint)
 0:113      move second child to first child (temp 4-component vector of uint)
@@ -581,7 +581,7 @@
 0:113        AtomicAdd (temp 4-component vector of uint)
 0:113          'gs_ua4' (shared 4-component vector of uint)
 0:113          'gs_ub4' (shared 4-component vector of uint)
-0:114      AtomicAnd (global void)
+0:114      AtomicAnd (temp void)
 0:114        'gs_ua4' (shared 4-component vector of uint)
 0:114        'gs_ub4' (shared 4-component vector of uint)
 0:115      move second child to first child (temp 4-component vector of uint)
@@ -600,7 +600,7 @@
 0:117        AtomicExchange (temp 4-component vector of uint)
 0:117          'gs_ua4' (shared 4-component vector of uint)
 0:117          'gs_ub4' (shared 4-component vector of uint)
-0:118      AtomicMax (global void)
+0:118      AtomicMax (temp void)
 0:118        'gs_ua4' (shared 4-component vector of uint)
 0:118        'gs_ub4' (shared 4-component vector of uint)
 0:119      move second child to first child (temp 4-component vector of uint)
@@ -608,7 +608,7 @@
 0:119        AtomicMax (temp 4-component vector of uint)
 0:119          'gs_ua4' (shared 4-component vector of uint)
 0:119          'gs_ub4' (shared 4-component vector of uint)
-0:120      AtomicMin (global void)
+0:120      AtomicMin (temp void)
 0:120        'gs_ua4' (shared 4-component vector of uint)
 0:120        'gs_ub4' (shared 4-component vector of uint)
 0:121      move second child to first child (temp 4-component vector of uint)
@@ -616,7 +616,7 @@
 0:121        AtomicMin (temp 4-component vector of uint)
 0:121          'gs_ua4' (shared 4-component vector of uint)
 0:121          'gs_ub4' (shared 4-component vector of uint)
-0:122      AtomicOr (global void)
+0:122      AtomicOr (temp void)
 0:122        'gs_ua4' (shared 4-component vector of uint)
 0:122        'gs_ub4' (shared 4-component vector of uint)
 0:123      move second child to first child (temp 4-component vector of uint)
@@ -624,7 +624,7 @@
 0:123        AtomicOr (temp 4-component vector of uint)
 0:123          'gs_ua4' (shared 4-component vector of uint)
 0:123          'gs_ub4' (shared 4-component vector of uint)
-0:124      AtomicXor (global void)
+0:124      AtomicXor (temp void)
 0:124        'gs_ua4' (shared 4-component vector of uint)
 0:124        'gs_ub4' (shared 4-component vector of uint)
 0:125      move second child to first child (temp 4-component vector of uint)
@@ -642,6 +642,12 @@
 0:?             4.000000
 0:128        Branch: Return
 0:?   Linker Objects
+0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:?     'inF0' (layout(location=0 ) in 4-component vector of float)
+0:?     'inF1' (layout(location=1 ) in 4-component vector of float)
+0:?     'inF2' (layout(location=2 ) in 4-component vector of float)
+0:?     'inU0' (layout(location=3 ) in 4-component vector of uint)
+0:?     'inU1' (layout(location=4 ) in 4-component vector of uint)
 0:?     'gs_ua' (shared uint)
 0:?     'gs_ub' (shared uint)
 0:?     'gs_uc' (shared uint)
@@ -654,12 +660,6 @@
 0:?     'gs_ua4' (shared 4-component vector of uint)
 0:?     'gs_ub4' (shared 4-component vector of uint)
 0:?     'gs_uc4' (shared 4-component vector of uint)
-0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
-0:?     'inF0' (layout(location=0 ) in 4-component vector of float)
-0:?     'inF1' (layout(location=1 ) in 4-component vector of float)
-0:?     'inF2' (layout(location=2 ) in 4-component vector of float)
-0:?     'inU0' (layout(location=3 ) in 4-component vector of uint)
-0:?     'inU1' (layout(location=4 ) in 4-component vector of uint)
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.intrinsics.double.frag.out b/Test/baseResults/hlsl.intrinsics.double.frag.out
index 554e552..91abf73 100644
--- a/Test/baseResults/hlsl.intrinsics.double.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.double.frag.out
@@ -16,7 +16,7 @@
 0:6      Sequence
 0:6        move second child to first child (temp double)
 0:6          'r00' (temp double)
-0:6          fma (global double)
+0:6          fma (temp double)
 0:6            'inDV1a' (layout(location=0 ) in double)
 0:6            'inDV1b' (layout(location=1 ) in double)
 0:6            'inDV1c' (layout(location=2 ) in double)
@@ -65,7 +65,7 @@
 0:6      Sequence
 0:6        move second child to first child (temp double)
 0:6          'r00' (temp double)
-0:6          fma (global double)
+0:6          fma (temp double)
 0:6            'inDV1a' (layout(location=0 ) in double)
 0:6            'inDV1b' (layout(location=1 ) in double)
 0:6            'inDV1c' (layout(location=2 ) in double)
diff --git a/Test/baseResults/hlsl.intrinsics.f1632.frag.out b/Test/baseResults/hlsl.intrinsics.f1632.frag.out
index 5fcb5f9..0b4c074 100644
--- a/Test/baseResults/hlsl.intrinsics.f1632.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.f1632.frag.out
@@ -14,7 +14,7 @@
 0:2      'inF0' (in float)
 0:?     Sequence
 0:3      ERROR: Bad unary op
- (global uint)
+ (temp uint)
 0:3        'inF0' (in float)
 0:5      Branch: Return with expression
 0:5        Constant:
@@ -31,7 +31,7 @@
 0:15      'inF0' (in 2-component vector of float)
 0:?     Sequence
 0:16      ERROR: Bad unary op
- (global 2-component vector of uint)
+ (temp 2-component vector of uint)
 0:16        'inF0' (in 2-component vector of float)
 0:18      Branch: Return with expression
 0:?         Constant:
@@ -42,7 +42,7 @@
 0:22      'inF0' (in 3-component vector of float)
 0:?     Sequence
 0:23      ERROR: Bad unary op
- (global 3-component vector of uint)
+ (temp 3-component vector of uint)
 0:23        'inF0' (in 3-component vector of float)
 0:25      Branch: Return with expression
 0:?         Constant:
@@ -54,7 +54,7 @@
 0:29      'inF0' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
 0:30      ERROR: Bad unary op
- (global 4-component vector of uint)
+ (temp 4-component vector of uint)
 0:30        'inF0' (layout(location=0 ) in 4-component vector of float)
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of float)
@@ -81,7 +81,7 @@
 0:2      'inF0' (in float)
 0:?     Sequence
 0:3      ERROR: Bad unary op
- (global uint)
+ (temp uint)
 0:3        'inF0' (in float)
 0:5      Branch: Return with expression
 0:5        Constant:
@@ -98,7 +98,7 @@
 0:15      'inF0' (in 2-component vector of float)
 0:?     Sequence
 0:16      ERROR: Bad unary op
- (global 2-component vector of uint)
+ (temp 2-component vector of uint)
 0:16        'inF0' (in 2-component vector of float)
 0:18      Branch: Return with expression
 0:?         Constant:
@@ -109,7 +109,7 @@
 0:22      'inF0' (in 3-component vector of float)
 0:?     Sequence
 0:23      ERROR: Bad unary op
- (global 3-component vector of uint)
+ (temp 3-component vector of uint)
 0:23        'inF0' (in 3-component vector of float)
 0:25      Branch: Return with expression
 0:?         Constant:
@@ -121,7 +121,7 @@
 0:29      'inF0' (layout(location=0 ) in 4-component vector of float)
 0:?     Sequence
 0:30      ERROR: Bad unary op
- (global 4-component vector of uint)
+ (temp 4-component vector of uint)
 0:30        'inF0' (layout(location=0 ) in 4-component vector of float)
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of float)
diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out
index d5a0f99..8a1935e 100644
--- a/Test/baseResults/hlsl.intrinsics.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.frag.out
@@ -13,63 +13,63 @@
 0:20      Sequence
 0:20        move second child to first child (temp bool)
 0:20          'r000' (temp bool)
-0:20          all (global bool)
+0:20          all (temp bool)
 0:20            'inF0' (in float)
 0:21      Sequence
 0:21        move second child to first child (temp float)
 0:21          'r001' (temp float)
-0:21          Absolute value (global float)
+0:21          Absolute value (temp float)
 0:21            'inF0' (in float)
 0:22      Sequence
 0:22        move second child to first child (temp float)
 0:22          'r002' (temp float)
-0:22          arc cosine (global float)
+0:22          arc cosine (temp float)
 0:22            'inF0' (in float)
 0:23      Sequence
 0:23        move second child to first child (temp bool)
 0:23          'r003' (temp bool)
-0:23          any (global bool)
+0:23          any (temp bool)
 0:23            'inF0' (in float)
 0:24      Sequence
 0:24        move second child to first child (temp float)
 0:24          'r004' (temp float)
-0:24          arc sine (global float)
+0:24          arc sine (temp float)
 0:24            'inF0' (in float)
 0:25      Sequence
 0:25        move second child to first child (temp int)
 0:25          'r005' (temp int)
-0:25          floatBitsToInt (global int)
+0:25          floatBitsToInt (temp int)
 0:25            'inF0' (in float)
 0:26      Sequence
 0:26        move second child to first child (temp uint)
 0:26          'r006' (temp uint)
-0:26          floatBitsToUint (global uint)
+0:26          floatBitsToUint (temp uint)
 0:26            'inF0' (in float)
 0:27      Sequence
 0:27        move second child to first child (temp float)
 0:27          'r007' (temp float)
-0:27          intBitsToFloat (global float)
+0:27          intBitsToFloat (temp float)
 0:27            'inU0' (in uint)
 0:29      Sequence
 0:29        move second child to first child (temp float)
 0:29          'r009' (temp float)
-0:29          arc tangent (global float)
+0:29          arc tangent (temp float)
 0:29            'inF0' (in float)
 0:30      Sequence
 0:30        move second child to first child (temp float)
 0:30          'r010' (temp float)
-0:30          arc tangent (global float)
+0:30          arc tangent (temp float)
 0:30            'inF0' (in float)
 0:30            'inF1' (in float)
 0:31      Sequence
 0:31        move second child to first child (temp float)
 0:31          'r011' (temp float)
-0:31          Ceiling (global float)
+0:31          Ceiling (temp float)
 0:31            'inF0' (in float)
 0:32      Sequence
 0:32        move second child to first child (temp float)
 0:32          'r012' (temp float)
-0:32          clamp (global float)
+0:32          clamp (temp float)
 0:32            'inF0' (in float)
 0:32            'inF1' (in float)
 0:32            'inF2' (in float)
@@ -84,132 +84,132 @@
 0:34      Sequence
 0:34        move second child to first child (temp float)
 0:34          'r014' (temp float)
-0:34          cosine (global float)
+0:34          cosine (temp float)
 0:34            'inF0' (in float)
 0:35      Sequence
 0:35        move second child to first child (temp float)
 0:35          'r015' (temp float)
-0:35          hyp. cosine (global float)
+0:35          hyp. cosine (temp float)
 0:35            'inF0' (in float)
 0:36      Sequence
 0:36        move second child to first child (temp uint)
 0:36          'r016' (temp uint)
-0:36          bitCount (global uint)
+0:36          bitCount (temp uint)
 0:36            Constant:
 0:36              7 (const uint)
 0:37      Sequence
 0:37        move second child to first child (temp float)
 0:37          'r017' (temp float)
-0:37          dPdx (global float)
+0:37          dPdx (temp float)
 0:37            'inF0' (in float)
 0:38      Sequence
 0:38        move second child to first child (temp float)
 0:38          'r018' (temp float)
-0:38          dPdxCoarse (global float)
+0:38          dPdxCoarse (temp float)
 0:38            'inF0' (in float)
 0:39      Sequence
 0:39        move second child to first child (temp float)
 0:39          'r019' (temp float)
-0:39          dPdxFine (global float)
+0:39          dPdxFine (temp float)
 0:39            'inF0' (in float)
 0:40      Sequence
 0:40        move second child to first child (temp float)
 0:40          'r020' (temp float)
-0:40          dPdy (global float)
+0:40          dPdy (temp float)
 0:40            'inF0' (in float)
 0:41      Sequence
 0:41        move second child to first child (temp float)
 0:41          'r021' (temp float)
-0:41          dPdyCoarse (global float)
+0:41          dPdyCoarse (temp float)
 0:41            'inF0' (in float)
 0:42      Sequence
 0:42        move second child to first child (temp float)
 0:42          'r022' (temp float)
-0:42          dPdyFine (global float)
+0:42          dPdyFine (temp float)
 0:42            'inF0' (in float)
 0:43      Sequence
 0:43        move second child to first child (temp float)
 0:43          'r023' (temp float)
-0:43          degrees (global float)
+0:43          degrees (temp float)
 0:43            'inF0' (in float)
 0:47      Sequence
 0:47        move second child to first child (temp float)
 0:47          'r027' (temp float)
-0:47          exp (global float)
+0:47          exp (temp float)
 0:47            'inF0' (in float)
 0:48      Sequence
 0:48        move second child to first child (temp float)
 0:48          'r028' (temp float)
-0:48          exp2 (global float)
+0:48          exp2 (temp float)
 0:48            'inF0' (in float)
 0:49      Sequence
 0:49        move second child to first child (temp uint)
 0:49          'r029' (temp uint)
 0:49          Convert int to uint (temp uint)
-0:49            findMSB (global int)
+0:49            findMSB (temp int)
 0:49              Constant:
 0:49                7 (const int)
 0:50      Sequence
 0:50        move second child to first child (temp uint)
 0:50          'r030' (temp uint)
 0:50          Convert int to uint (temp uint)
-0:50            findLSB (global int)
+0:50            findLSB (temp int)
 0:50              Constant:
 0:50                7 (const int)
 0:51      Sequence
 0:51        move second child to first child (temp float)
 0:51          'r031' (temp float)
-0:51          Floor (global float)
+0:51          Floor (temp float)
 0:51            'inF0' (in float)
 0:53      Sequence
 0:53        move second child to first child (temp float)
 0:53          'r033' (temp float)
-0:53          mod (global float)
+0:53          mod (temp float)
 0:53            'inF0' (in float)
 0:53            'inF1' (in float)
 0:54      Sequence
 0:54        move second child to first child (temp float)
 0:54          'r034' (temp float)
-0:54          Fraction (global float)
+0:54          Fraction (temp float)
 0:54            'inF0' (in float)
 0:55      Sequence
 0:55        move second child to first child (temp float)
 0:55          'r035' (temp float)
-0:55          frexp (global float)
+0:55          frexp (temp float)
 0:55            'inF0' (in float)
 0:55            'inF1' (in float)
 0:56      Sequence
 0:56        move second child to first child (temp float)
 0:56          'r036' (temp float)
-0:56          fwidth (global float)
+0:56          fwidth (temp float)
 0:56            'inF0' (in float)
 0:57      Sequence
 0:57        move second child to first child (temp bool)
 0:57          'r037' (temp bool)
-0:57          isinf (global bool)
+0:57          isinf (temp bool)
 0:57            'inF0' (in float)
 0:58      Sequence
 0:58        move second child to first child (temp bool)
 0:58          'r038' (temp bool)
-0:58          isnan (global bool)
+0:58          isnan (temp bool)
 0:58            'inF0' (in float)
 0:59      Sequence
 0:59        move second child to first child (temp float)
 0:59          'r039' (temp float)
-0:59          ldexp (global float)
+0:59          ldexp (temp float)
 0:59            'inF0' (in float)
 0:59            'inF1' (in float)
 0:60      Sequence
 0:60        move second child to first child (temp float)
 0:60          'r039a' (temp float)
-0:60          mix (global float)
+0:60          mix (temp float)
 0:60            'inF0' (in float)
 0:60            'inF1' (in float)
 0:60            'inF2' (in float)
 0:61      Sequence
 0:61        move second child to first child (temp float)
 0:61          'r040' (temp float)
-0:61          log (global float)
+0:61          log (temp float)
 0:61            'inF0' (in float)
 0:62      Sequence
 0:62        move second child to first child (temp float)
@@ -222,30 +222,30 @@
 0:63      Sequence
 0:63        move second child to first child (temp float)
 0:63          'r042' (temp float)
-0:63          log2 (global float)
+0:63          log2 (temp float)
 0:63            'inF0' (in float)
 0:64      Sequence
 0:64        move second child to first child (temp float)
 0:64          'r043' (temp float)
-0:64          max (global float)
+0:64          max (temp float)
 0:64            'inF0' (in float)
 0:64            'inF1' (in float)
 0:65      Sequence
 0:65        move second child to first child (temp float)
 0:65          'r044' (temp float)
-0:65          min (global float)
+0:65          min (temp float)
 0:65            'inF0' (in float)
 0:65            'inF1' (in float)
 0:66      Sequence
 0:66        move second child to first child (temp float)
 0:66          'r045' (temp float)
-0:66          pow (global float)
+0:66          pow (temp float)
 0:66            'inF0' (in float)
 0:66            'inF1' (in float)
 0:67      Sequence
 0:67        move second child to first child (temp float)
 0:67          'r046' (temp float)
-0:67          radians (global float)
+0:67          radians (temp float)
 0:67            'inF0' (in float)
 0:68      Sequence
 0:68        move second child to first child (temp float)
@@ -257,18 +257,18 @@
 0:69      Sequence
 0:69        move second child to first child (temp uint)
 0:69          'r048' (temp uint)
-0:69          bitFieldReverse (global uint)
+0:69          bitFieldReverse (temp uint)
 0:69            Constant:
 0:69              2 (const uint)
 0:70      Sequence
 0:70        move second child to first child (temp float)
 0:70          'r049' (temp float)
-0:70          roundEven (global float)
+0:70          roundEven (temp float)
 0:70            'inF0' (in float)
 0:71      Sequence
 0:71        move second child to first child (temp float)
 0:71          'r050' (temp float)
-0:71          inverse sqrt (global float)
+0:71          inverse sqrt (temp float)
 0:71            'inF0' (in float)
 0:72      Sequence
 0:72        move second child to first child (temp float)
@@ -282,12 +282,12 @@
 0:73      Sequence
 0:73        move second child to first child (temp float)
 0:73          'r052' (temp float)
-0:73          Sign (global float)
+0:73          Sign (temp float)
 0:73            'inF0' (in float)
 0:74      Sequence
 0:74        move second child to first child (temp float)
 0:74          'r053' (temp float)
-0:74          sine (global float)
+0:74          sine (temp float)
 0:74            'inF0' (in float)
 0:75      Sequence
 0:75        move second child to first child (temp float)
@@ -301,40 +301,40 @@
 0:76      Sequence
 0:76        move second child to first child (temp float)
 0:76          'r055' (temp float)
-0:76          hyp. sine (global float)
+0:76          hyp. sine (temp float)
 0:76            'inF0' (in float)
 0:77      Sequence
 0:77        move second child to first child (temp float)
 0:77          'r056' (temp float)
-0:77          smoothstep (global float)
+0:77          smoothstep (temp float)
 0:77            'inF0' (in float)
 0:77            'inF1' (in float)
 0:77            'inF2' (in float)
 0:78      Sequence
 0:78        move second child to first child (temp float)
 0:78          'r057' (temp float)
-0:78          sqrt (global float)
+0:78          sqrt (temp float)
 0:78            'inF0' (in float)
 0:79      Sequence
 0:79        move second child to first child (temp float)
 0:79          'r058' (temp float)
-0:79          step (global float)
+0:79          step (temp float)
 0:79            'inF0' (in float)
 0:79            'inF1' (in float)
 0:80      Sequence
 0:80        move second child to first child (temp float)
 0:80          'r059' (temp float)
-0:80          tangent (global float)
+0:80          tangent (temp float)
 0:80            'inF0' (in float)
 0:81      Sequence
 0:81        move second child to first child (temp float)
 0:81          'r060' (temp float)
-0:81          hyp. tangent (global float)
+0:81          hyp. tangent (temp float)
 0:81            'inF0' (in float)
 0:83      Sequence
 0:83        move second child to first child (temp float)
 0:83          'r061' (temp float)
-0:83          trunc (global float)
+0:83          trunc (temp float)
 0:83            'inF0' (in float)
 0:85      Branch: Return with expression
 0:85        Constant:
@@ -359,63 +359,63 @@
 0:98      Sequence
 0:98        move second child to first child (temp bool)
 0:98          'r000' (temp bool)
-0:98          all (global bool)
+0:98          all (temp bool)
 0:98            'inF0' (in 2-component vector of float)
 0:99      Sequence
 0:99        move second child to first child (temp 2-component vector of float)
 0:99          'r001' (temp 2-component vector of float)
-0:99          Absolute value (global 2-component vector of float)
+0:99          Absolute value (temp 2-component vector of float)
 0:99            'inF0' (in 2-component vector of float)
 0:100      Sequence
 0:100        move second child to first child (temp 2-component vector of float)
 0:100          'r002' (temp 2-component vector of float)
-0:100          arc cosine (global 2-component vector of float)
+0:100          arc cosine (temp 2-component vector of float)
 0:100            'inF0' (in 2-component vector of float)
 0:101      Sequence
 0:101        move second child to first child (temp bool)
 0:101          'r003' (temp bool)
-0:101          any (global bool)
+0:101          any (temp bool)
 0:101            'inF0' (in 2-component vector of float)
 0:102      Sequence
 0:102        move second child to first child (temp 2-component vector of float)
 0:102          'r004' (temp 2-component vector of float)
-0:102          arc sine (global 2-component vector of float)
+0:102          arc sine (temp 2-component vector of float)
 0:102            'inF0' (in 2-component vector of float)
 0:103      Sequence
 0:103        move second child to first child (temp 2-component vector of int)
 0:103          'r005' (temp 2-component vector of int)
-0:103          floatBitsToInt (global 2-component vector of int)
+0:103          floatBitsToInt (temp 2-component vector of int)
 0:103            'inF0' (in 2-component vector of float)
 0:104      Sequence
 0:104        move second child to first child (temp 2-component vector of uint)
 0:104          'r006' (temp 2-component vector of uint)
-0:104          floatBitsToUint (global 2-component vector of uint)
+0:104          floatBitsToUint (temp 2-component vector of uint)
 0:104            'inF0' (in 2-component vector of float)
 0:105      Sequence
 0:105        move second child to first child (temp 2-component vector of float)
 0:105          'r007' (temp 2-component vector of float)
-0:105          intBitsToFloat (global 2-component vector of float)
+0:105          intBitsToFloat (temp 2-component vector of float)
 0:105            'inU0' (in 2-component vector of uint)
 0:107      Sequence
 0:107        move second child to first child (temp 2-component vector of float)
 0:107          'r009' (temp 2-component vector of float)
-0:107          arc tangent (global 2-component vector of float)
+0:107          arc tangent (temp 2-component vector of float)
 0:107            'inF0' (in 2-component vector of float)
 0:108      Sequence
 0:108        move second child to first child (temp 2-component vector of float)
 0:108          'r010' (temp 2-component vector of float)
-0:108          arc tangent (global 2-component vector of float)
+0:108          arc tangent (temp 2-component vector of float)
 0:108            'inF0' (in 2-component vector of float)
 0:108            'inF1' (in 2-component vector of float)
 0:109      Sequence
 0:109        move second child to first child (temp 2-component vector of float)
 0:109          'r011' (temp 2-component vector of float)
-0:109          Ceiling (global 2-component vector of float)
+0:109          Ceiling (temp 2-component vector of float)
 0:109            'inF0' (in 2-component vector of float)
 0:110      Sequence
 0:110        move second child to first child (temp 2-component vector of float)
 0:110          'r012' (temp 2-component vector of float)
-0:110          clamp (global 2-component vector of float)
+0:110          clamp (temp 2-component vector of float)
 0:110            'inF0' (in 2-component vector of float)
 0:110            'inF1' (in 2-component vector of float)
 0:110            'inF2' (in 2-component vector of float)
@@ -432,157 +432,157 @@
 0:112      Sequence
 0:112        move second child to first child (temp 2-component vector of float)
 0:112          'r013' (temp 2-component vector of float)
-0:112          cosine (global 2-component vector of float)
+0:112          cosine (temp 2-component vector of float)
 0:112            'inF0' (in 2-component vector of float)
 0:113      Sequence
 0:113        move second child to first child (temp 2-component vector of float)
 0:113          'r015' (temp 2-component vector of float)
-0:113          hyp. cosine (global 2-component vector of float)
+0:113          hyp. cosine (temp 2-component vector of float)
 0:113            'inF0' (in 2-component vector of float)
 0:114      Sequence
 0:114        move second child to first child (temp 2-component vector of uint)
 0:114          'r016' (temp 2-component vector of uint)
-0:?           bitCount (global 2-component vector of uint)
+0:?           bitCount (temp 2-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               3 (const uint)
 0:115      Sequence
 0:115        move second child to first child (temp 2-component vector of float)
 0:115          'r017' (temp 2-component vector of float)
-0:115          dPdx (global 2-component vector of float)
+0:115          dPdx (temp 2-component vector of float)
 0:115            'inF0' (in 2-component vector of float)
 0:116      Sequence
 0:116        move second child to first child (temp 2-component vector of float)
 0:116          'r018' (temp 2-component vector of float)
-0:116          dPdxCoarse (global 2-component vector of float)
+0:116          dPdxCoarse (temp 2-component vector of float)
 0:116            'inF0' (in 2-component vector of float)
 0:117      Sequence
 0:117        move second child to first child (temp 2-component vector of float)
 0:117          'r019' (temp 2-component vector of float)
-0:117          dPdxFine (global 2-component vector of float)
+0:117          dPdxFine (temp 2-component vector of float)
 0:117            'inF0' (in 2-component vector of float)
 0:118      Sequence
 0:118        move second child to first child (temp 2-component vector of float)
 0:118          'r020' (temp 2-component vector of float)
-0:118          dPdy (global 2-component vector of float)
+0:118          dPdy (temp 2-component vector of float)
 0:118            'inF0' (in 2-component vector of float)
 0:119      Sequence
 0:119        move second child to first child (temp 2-component vector of float)
 0:119          'r021' (temp 2-component vector of float)
-0:119          dPdyCoarse (global 2-component vector of float)
+0:119          dPdyCoarse (temp 2-component vector of float)
 0:119            'inF0' (in 2-component vector of float)
 0:120      Sequence
 0:120        move second child to first child (temp 2-component vector of float)
 0:120          'r022' (temp 2-component vector of float)
-0:120          dPdyFine (global 2-component vector of float)
+0:120          dPdyFine (temp 2-component vector of float)
 0:120            'inF0' (in 2-component vector of float)
 0:121      Sequence
 0:121        move second child to first child (temp 2-component vector of float)
 0:121          'r023' (temp 2-component vector of float)
-0:121          degrees (global 2-component vector of float)
+0:121          degrees (temp 2-component vector of float)
 0:121            'inF0' (in 2-component vector of float)
 0:125      Sequence
 0:125        move second child to first child (temp float)
 0:125          'r026' (temp float)
-0:125          distance (global float)
+0:125          distance (temp float)
 0:125            'inF0' (in 2-component vector of float)
 0:125            'inF1' (in 2-component vector of float)
 0:126      Sequence
 0:126        move second child to first child (temp float)
 0:126          'r027' (temp float)
-0:126          dot-product (global float)
+0:126          dot-product (temp float)
 0:126            'inF0' (in 2-component vector of float)
 0:126            'inF1' (in 2-component vector of float)
 0:130      Sequence
 0:130        move second child to first child (temp 2-component vector of float)
 0:130          'r028' (temp 2-component vector of float)
-0:130          exp (global 2-component vector of float)
+0:130          exp (temp 2-component vector of float)
 0:130            'inF0' (in 2-component vector of float)
 0:131      Sequence
 0:131        move second child to first child (temp 2-component vector of float)
 0:131          'r029' (temp 2-component vector of float)
-0:131          exp2 (global 2-component vector of float)
+0:131          exp2 (temp 2-component vector of float)
 0:131            'inF0' (in 2-component vector of float)
 0:132      Sequence
 0:132        move second child to first child (temp 2-component vector of float)
 0:132          'r030' (temp 2-component vector of float)
-0:132          face-forward (global 2-component vector of float)
+0:132          face-forward (temp 2-component vector of float)
 0:132            'inF0' (in 2-component vector of float)
 0:132            'inF1' (in 2-component vector of float)
 0:132            'inF2' (in 2-component vector of float)
 0:133      Sequence
 0:133        move second child to first child (temp 2-component vector of uint)
 0:133          'r031' (temp 2-component vector of uint)
-0:?           findMSB (global 2-component vector of uint)
+0:?           findMSB (temp 2-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               8 (const uint)
 0:134      Sequence
 0:134        move second child to first child (temp 2-component vector of uint)
 0:134          'r032' (temp 2-component vector of uint)
-0:?           findLSB (global 2-component vector of uint)
+0:?           findLSB (temp 2-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               8 (const uint)
 0:135      Sequence
 0:135        move second child to first child (temp 2-component vector of float)
 0:135          'r033' (temp 2-component vector of float)
-0:135          Floor (global 2-component vector of float)
+0:135          Floor (temp 2-component vector of float)
 0:135            'inF0' (in 2-component vector of float)
 0:137      Sequence
 0:137        move second child to first child (temp 2-component vector of float)
 0:137          'r035' (temp 2-component vector of float)
-0:137          mod (global 2-component vector of float)
+0:137          mod (temp 2-component vector of float)
 0:137            'inF0' (in 2-component vector of float)
 0:137            'inF1' (in 2-component vector of float)
 0:138      Sequence
 0:138        move second child to first child (temp 2-component vector of float)
 0:138          'r036' (temp 2-component vector of float)
-0:138          Fraction (global 2-component vector of float)
+0:138          Fraction (temp 2-component vector of float)
 0:138            'inF0' (in 2-component vector of float)
 0:139      Sequence
 0:139        move second child to first child (temp 2-component vector of float)
 0:139          'r037' (temp 2-component vector of float)
-0:139          frexp (global 2-component vector of float)
+0:139          frexp (temp 2-component vector of float)
 0:139            'inF0' (in 2-component vector of float)
 0:139            'inF1' (in 2-component vector of float)
 0:140      Sequence
 0:140        move second child to first child (temp 2-component vector of float)
 0:140          'r038' (temp 2-component vector of float)
-0:140          fwidth (global 2-component vector of float)
+0:140          fwidth (temp 2-component vector of float)
 0:140            'inF0' (in 2-component vector of float)
 0:141      Sequence
 0:141        move second child to first child (temp 2-component vector of bool)
 0:141          'r039' (temp 2-component vector of bool)
-0:141          isinf (global 2-component vector of bool)
+0:141          isinf (temp 2-component vector of bool)
 0:141            'inF0' (in 2-component vector of float)
 0:142      Sequence
 0:142        move second child to first child (temp 2-component vector of bool)
 0:142          'r040' (temp 2-component vector of bool)
-0:142          isnan (global 2-component vector of bool)
+0:142          isnan (temp 2-component vector of bool)
 0:142            'inF0' (in 2-component vector of float)
 0:143      Sequence
 0:143        move second child to first child (temp 2-component vector of float)
 0:143          'r041' (temp 2-component vector of float)
-0:143          ldexp (global 2-component vector of float)
+0:143          ldexp (temp 2-component vector of float)
 0:143            'inF0' (in 2-component vector of float)
 0:143            'inF1' (in 2-component vector of float)
 0:144      Sequence
 0:144        move second child to first child (temp 2-component vector of float)
 0:144          'r039a' (temp 2-component vector of float)
-0:144          mix (global 2-component vector of float)
+0:144          mix (temp 2-component vector of float)
 0:144            'inF0' (in 2-component vector of float)
 0:144            'inF1' (in 2-component vector of float)
 0:144            'inF2' (in 2-component vector of float)
 0:145      Sequence
 0:145        move second child to first child (temp float)
 0:145          'r042' (temp float)
-0:145          length (global float)
+0:145          length (temp float)
 0:145            'inF0' (in 2-component vector of float)
 0:146      Sequence
 0:146        move second child to first child (temp 2-component vector of float)
 0:146          'r043' (temp 2-component vector of float)
-0:146          log (global 2-component vector of float)
+0:146          log (temp 2-component vector of float)
 0:146            'inF0' (in 2-component vector of float)
 0:147      Sequence
 0:147        move second child to first child (temp 2-component vector of float)
@@ -595,35 +595,35 @@
 0:148      Sequence
 0:148        move second child to first child (temp 2-component vector of float)
 0:148          'r045' (temp 2-component vector of float)
-0:148          log2 (global 2-component vector of float)
+0:148          log2 (temp 2-component vector of float)
 0:148            'inF0' (in 2-component vector of float)
 0:149      Sequence
 0:149        move second child to first child (temp 2-component vector of float)
 0:149          'r046' (temp 2-component vector of float)
-0:149          max (global 2-component vector of float)
+0:149          max (temp 2-component vector of float)
 0:149            'inF0' (in 2-component vector of float)
 0:149            'inF1' (in 2-component vector of float)
 0:150      Sequence
 0:150        move second child to first child (temp 2-component vector of float)
 0:150          'r047' (temp 2-component vector of float)
-0:150          min (global 2-component vector of float)
+0:150          min (temp 2-component vector of float)
 0:150            'inF0' (in 2-component vector of float)
 0:150            'inF1' (in 2-component vector of float)
 0:151      Sequence
 0:151        move second child to first child (temp 2-component vector of float)
 0:151          'r048' (temp 2-component vector of float)
-0:151          normalize (global 2-component vector of float)
+0:151          normalize (temp 2-component vector of float)
 0:151            'inF0' (in 2-component vector of float)
 0:152      Sequence
 0:152        move second child to first child (temp 2-component vector of float)
 0:152          'r049' (temp 2-component vector of float)
-0:152          pow (global 2-component vector of float)
+0:152          pow (temp 2-component vector of float)
 0:152            'inF0' (in 2-component vector of float)
 0:152            'inF1' (in 2-component vector of float)
 0:153      Sequence
 0:153        move second child to first child (temp 2-component vector of float)
 0:153          'r050' (temp 2-component vector of float)
-0:153          radians (global 2-component vector of float)
+0:153          radians (temp 2-component vector of float)
 0:153            'inF0' (in 2-component vector of float)
 0:154      Sequence
 0:154        move second child to first child (temp 2-component vector of float)
@@ -635,13 +635,13 @@
 0:155      Sequence
 0:155        move second child to first child (temp 2-component vector of float)
 0:155          'r052' (temp 2-component vector of float)
-0:155          reflect (global 2-component vector of float)
+0:155          reflect (temp 2-component vector of float)
 0:155            'inF0' (in 2-component vector of float)
 0:155            'inF1' (in 2-component vector of float)
 0:156      Sequence
 0:156        move second child to first child (temp 2-component vector of float)
 0:156          'r053' (temp 2-component vector of float)
-0:156          refract (global 2-component vector of float)
+0:156          refract (temp 2-component vector of float)
 0:156            'inF0' (in 2-component vector of float)
 0:156            'inF1' (in 2-component vector of float)
 0:156            Constant:
@@ -649,19 +649,19 @@
 0:157      Sequence
 0:157        move second child to first child (temp 2-component vector of uint)
 0:157          'r054' (temp 2-component vector of uint)
-0:?           bitFieldReverse (global 2-component vector of uint)
+0:?           bitFieldReverse (temp 2-component vector of uint)
 0:?             Constant:
 0:?               1 (const uint)
 0:?               2 (const uint)
 0:158      Sequence
 0:158        move second child to first child (temp 2-component vector of float)
 0:158          'r055' (temp 2-component vector of float)
-0:158          roundEven (global 2-component vector of float)
+0:158          roundEven (temp 2-component vector of float)
 0:158            'inF0' (in 2-component vector of float)
 0:159      Sequence
 0:159        move second child to first child (temp 2-component vector of float)
 0:159          'r056' (temp 2-component vector of float)
-0:159          inverse sqrt (global 2-component vector of float)
+0:159          inverse sqrt (temp 2-component vector of float)
 0:159            'inF0' (in 2-component vector of float)
 0:160      Sequence
 0:160        move second child to first child (temp 2-component vector of float)
@@ -675,12 +675,12 @@
 0:161      Sequence
 0:161        move second child to first child (temp 2-component vector of float)
 0:161          'r058' (temp 2-component vector of float)
-0:161          Sign (global 2-component vector of float)
+0:161          Sign (temp 2-component vector of float)
 0:161            'inF0' (in 2-component vector of float)
 0:162      Sequence
 0:162        move second child to first child (temp 2-component vector of float)
 0:162          'r059' (temp 2-component vector of float)
-0:162          sine (global 2-component vector of float)
+0:162          sine (temp 2-component vector of float)
 0:162            'inF0' (in 2-component vector of float)
 0:163      Sequence
 0:163        move second child to first child (temp 2-component vector of float)
@@ -694,40 +694,40 @@
 0:164      Sequence
 0:164        move second child to first child (temp 2-component vector of float)
 0:164          'r060' (temp 2-component vector of float)
-0:164          hyp. sine (global 2-component vector of float)
+0:164          hyp. sine (temp 2-component vector of float)
 0:164            'inF0' (in 2-component vector of float)
 0:165      Sequence
 0:165        move second child to first child (temp 2-component vector of float)
 0:165          'r061' (temp 2-component vector of float)
-0:165          smoothstep (global 2-component vector of float)
+0:165          smoothstep (temp 2-component vector of float)
 0:165            'inF0' (in 2-component vector of float)
 0:165            'inF1' (in 2-component vector of float)
 0:165            'inF2' (in 2-component vector of float)
 0:166      Sequence
 0:166        move second child to first child (temp 2-component vector of float)
 0:166          'r062' (temp 2-component vector of float)
-0:166          sqrt (global 2-component vector of float)
+0:166          sqrt (temp 2-component vector of float)
 0:166            'inF0' (in 2-component vector of float)
 0:167      Sequence
 0:167        move second child to first child (temp 2-component vector of float)
 0:167          'r063' (temp 2-component vector of float)
-0:167          step (global 2-component vector of float)
+0:167          step (temp 2-component vector of float)
 0:167            'inF0' (in 2-component vector of float)
 0:167            'inF1' (in 2-component vector of float)
 0:168      Sequence
 0:168        move second child to first child (temp 2-component vector of float)
 0:168          'r064' (temp 2-component vector of float)
-0:168          tangent (global 2-component vector of float)
+0:168          tangent (temp 2-component vector of float)
 0:168            'inF0' (in 2-component vector of float)
 0:169      Sequence
 0:169        move second child to first child (temp 2-component vector of float)
 0:169          'r065' (temp 2-component vector of float)
-0:169          hyp. tangent (global 2-component vector of float)
+0:169          hyp. tangent (temp 2-component vector of float)
 0:169            'inF0' (in 2-component vector of float)
 0:171      Sequence
 0:171        move second child to first child (temp 2-component vector of float)
 0:171          'r066' (temp 2-component vector of float)
-0:171          trunc (global 2-component vector of float)
+0:171          trunc (temp 2-component vector of float)
 0:171            'inF0' (in 2-component vector of float)
 0:174      Branch: Return with expression
 0:?         Constant:
@@ -744,63 +744,63 @@
 0:181      Sequence
 0:181        move second child to first child (temp bool)
 0:181          'r000' (temp bool)
-0:181          all (global bool)
+0:181          all (temp bool)
 0:181            'inF0' (in 3-component vector of float)
 0:182      Sequence
 0:182        move second child to first child (temp 3-component vector of float)
 0:182          'r001' (temp 3-component vector of float)
-0:182          Absolute value (global 3-component vector of float)
+0:182          Absolute value (temp 3-component vector of float)
 0:182            'inF0' (in 3-component vector of float)
 0:183      Sequence
 0:183        move second child to first child (temp 3-component vector of float)
 0:183          'r002' (temp 3-component vector of float)
-0:183          arc cosine (global 3-component vector of float)
+0:183          arc cosine (temp 3-component vector of float)
 0:183            'inF0' (in 3-component vector of float)
 0:184      Sequence
 0:184        move second child to first child (temp bool)
 0:184          'r003' (temp bool)
-0:184          any (global bool)
+0:184          any (temp bool)
 0:184            'inF0' (in 3-component vector of float)
 0:185      Sequence
 0:185        move second child to first child (temp 3-component vector of float)
 0:185          'r004' (temp 3-component vector of float)
-0:185          arc sine (global 3-component vector of float)
+0:185          arc sine (temp 3-component vector of float)
 0:185            'inF0' (in 3-component vector of float)
 0:186      Sequence
 0:186        move second child to first child (temp 3-component vector of int)
 0:186          'r005' (temp 3-component vector of int)
-0:186          floatBitsToInt (global 3-component vector of int)
+0:186          floatBitsToInt (temp 3-component vector of int)
 0:186            'inF0' (in 3-component vector of float)
 0:187      Sequence
 0:187        move second child to first child (temp 3-component vector of uint)
 0:187          'r006' (temp 3-component vector of uint)
-0:187          floatBitsToUint (global 3-component vector of uint)
+0:187          floatBitsToUint (temp 3-component vector of uint)
 0:187            'inF0' (in 3-component vector of float)
 0:188      Sequence
 0:188        move second child to first child (temp 3-component vector of float)
 0:188          'r007' (temp 3-component vector of float)
-0:188          intBitsToFloat (global 3-component vector of float)
+0:188          intBitsToFloat (temp 3-component vector of float)
 0:188            'inU0' (in 3-component vector of uint)
 0:190      Sequence
 0:190        move second child to first child (temp 3-component vector of float)
 0:190          'r009' (temp 3-component vector of float)
-0:190          arc tangent (global 3-component vector of float)
+0:190          arc tangent (temp 3-component vector of float)
 0:190            'inF0' (in 3-component vector of float)
 0:191      Sequence
 0:191        move second child to first child (temp 3-component vector of float)
 0:191          'r010' (temp 3-component vector of float)
-0:191          arc tangent (global 3-component vector of float)
+0:191          arc tangent (temp 3-component vector of float)
 0:191            'inF0' (in 3-component vector of float)
 0:191            'inF1' (in 3-component vector of float)
 0:192      Sequence
 0:192        move second child to first child (temp 3-component vector of float)
 0:192          'r011' (temp 3-component vector of float)
-0:192          Ceiling (global 3-component vector of float)
+0:192          Ceiling (temp 3-component vector of float)
 0:192            'inF0' (in 3-component vector of float)
 0:193      Sequence
 0:193        move second child to first child (temp 3-component vector of float)
 0:193          'r012' (temp 3-component vector of float)
-0:193          clamp (global 3-component vector of float)
+0:193          clamp (temp 3-component vector of float)
 0:193            'inF0' (in 3-component vector of float)
 0:193            'inF1' (in 3-component vector of float)
 0:193            'inF2' (in 3-component vector of float)
@@ -818,17 +818,17 @@
 0:195      Sequence
 0:195        move second child to first child (temp 3-component vector of float)
 0:195          'r013' (temp 3-component vector of float)
-0:195          cosine (global 3-component vector of float)
+0:195          cosine (temp 3-component vector of float)
 0:195            'inF0' (in 3-component vector of float)
 0:196      Sequence
 0:196        move second child to first child (temp 3-component vector of float)
 0:196          'r014' (temp 3-component vector of float)
-0:196          hyp. cosine (global 3-component vector of float)
+0:196          hyp. cosine (temp 3-component vector of float)
 0:196            'inF0' (in 3-component vector of float)
 0:197      Sequence
 0:197        move second child to first child (temp 3-component vector of uint)
 0:197          'r015' (temp 3-component vector of uint)
-0:?           bitCount (global 3-component vector of uint)
+0:?           bitCount (temp 3-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               3 (const uint)
@@ -836,77 +836,77 @@
 0:198      Sequence
 0:198        move second child to first child (temp 3-component vector of float)
 0:198          'r016' (temp 3-component vector of float)
-0:198          cross-product (global 3-component vector of float)
+0:198          cross-product (temp 3-component vector of float)
 0:198            'inF0' (in 3-component vector of float)
 0:198            'inF1' (in 3-component vector of float)
 0:199      Sequence
 0:199        move second child to first child (temp 3-component vector of float)
 0:199          'r017' (temp 3-component vector of float)
-0:199          dPdx (global 3-component vector of float)
+0:199          dPdx (temp 3-component vector of float)
 0:199            'inF0' (in 3-component vector of float)
 0:200      Sequence
 0:200        move second child to first child (temp 3-component vector of float)
 0:200          'r018' (temp 3-component vector of float)
-0:200          dPdxCoarse (global 3-component vector of float)
+0:200          dPdxCoarse (temp 3-component vector of float)
 0:200            'inF0' (in 3-component vector of float)
 0:201      Sequence
 0:201        move second child to first child (temp 3-component vector of float)
 0:201          'r019' (temp 3-component vector of float)
-0:201          dPdxFine (global 3-component vector of float)
+0:201          dPdxFine (temp 3-component vector of float)
 0:201            'inF0' (in 3-component vector of float)
 0:202      Sequence
 0:202        move second child to first child (temp 3-component vector of float)
 0:202          'r020' (temp 3-component vector of float)
-0:202          dPdy (global 3-component vector of float)
+0:202          dPdy (temp 3-component vector of float)
 0:202            'inF0' (in 3-component vector of float)
 0:203      Sequence
 0:203        move second child to first child (temp 3-component vector of float)
 0:203          'r021' (temp 3-component vector of float)
-0:203          dPdyCoarse (global 3-component vector of float)
+0:203          dPdyCoarse (temp 3-component vector of float)
 0:203            'inF0' (in 3-component vector of float)
 0:204      Sequence
 0:204        move second child to first child (temp 3-component vector of float)
 0:204          'r022' (temp 3-component vector of float)
-0:204          dPdyFine (global 3-component vector of float)
+0:204          dPdyFine (temp 3-component vector of float)
 0:204            'inF0' (in 3-component vector of float)
 0:205      Sequence
 0:205        move second child to first child (temp 3-component vector of float)
 0:205          'r023' (temp 3-component vector of float)
-0:205          degrees (global 3-component vector of float)
+0:205          degrees (temp 3-component vector of float)
 0:205            'inF0' (in 3-component vector of float)
 0:206      Sequence
 0:206        move second child to first child (temp float)
 0:206          'r024' (temp float)
-0:206          distance (global float)
+0:206          distance (temp float)
 0:206            'inF0' (in 3-component vector of float)
 0:206            'inF1' (in 3-component vector of float)
 0:207      Sequence
 0:207        move second child to first child (temp float)
 0:207          'r025' (temp float)
-0:207          dot-product (global float)
+0:207          dot-product (temp float)
 0:207            'inF0' (in 3-component vector of float)
 0:207            'inF1' (in 3-component vector of float)
 0:211      Sequence
 0:211        move second child to first child (temp 3-component vector of float)
 0:211          'r029' (temp 3-component vector of float)
-0:211          exp (global 3-component vector of float)
+0:211          exp (temp 3-component vector of float)
 0:211            'inF0' (in 3-component vector of float)
 0:212      Sequence
 0:212        move second child to first child (temp 3-component vector of float)
 0:212          'r030' (temp 3-component vector of float)
-0:212          exp2 (global 3-component vector of float)
+0:212          exp2 (temp 3-component vector of float)
 0:212            'inF0' (in 3-component vector of float)
 0:213      Sequence
 0:213        move second child to first child (temp 3-component vector of float)
 0:213          'r031' (temp 3-component vector of float)
-0:213          face-forward (global 3-component vector of float)
+0:213          face-forward (temp 3-component vector of float)
 0:213            'inF0' (in 3-component vector of float)
 0:213            'inF1' (in 3-component vector of float)
 0:213            'inF2' (in 3-component vector of float)
 0:214      Sequence
 0:214        move second child to first child (temp 3-component vector of uint)
 0:214          'r032' (temp 3-component vector of uint)
-0:?           findMSB (global 3-component vector of uint)
+0:?           findMSB (temp 3-component vector of uint)
 0:?             Constant:
 0:?               2 (const uint)
 0:?               3 (const uint)
@@ -914,7 +914,7 @@
 0:215      Sequence
 0:215        move second child to first child (temp 3-component vector of uint)
 0:215          'r033' (temp 3-component vector of uint)
-0:?           findLSB (global 3-component vector of uint)
+0:?           findLSB (temp 3-component vector of uint)
 0:?             Constant:
 0:?               2 (const uint)
 0:?               3 (const uint)
@@ -922,57 +922,57 @@
 0:216      Sequence
 0:216        move second child to first child (temp 3-component vector of float)
 0:216          'r034' (temp 3-component vector of float)
-0:216          Floor (global 3-component vector of float)
+0:216          Floor (temp 3-component vector of float)
 0:216            'inF0' (in 3-component vector of float)
 0:218      Sequence
 0:218        move second child to first child (temp 3-component vector of float)
 0:218          'r036' (temp 3-component vector of float)
-0:218          mod (global 3-component vector of float)
+0:218          mod (temp 3-component vector of float)
 0:218            'inF0' (in 3-component vector of float)
 0:218            'inF1' (in 3-component vector of float)
 0:219      Sequence
 0:219        move second child to first child (temp 3-component vector of float)
 0:219          'r037' (temp 3-component vector of float)
-0:219          Fraction (global 3-component vector of float)
+0:219          Fraction (temp 3-component vector of float)
 0:219            'inF0' (in 3-component vector of float)
 0:220      Sequence
 0:220        move second child to first child (temp 3-component vector of float)
 0:220          'r038' (temp 3-component vector of float)
-0:220          frexp (global 3-component vector of float)
+0:220          frexp (temp 3-component vector of float)
 0:220            'inF0' (in 3-component vector of float)
 0:220            'inF1' (in 3-component vector of float)
 0:221      Sequence
 0:221        move second child to first child (temp 3-component vector of float)
 0:221          'r039' (temp 3-component vector of float)
-0:221          fwidth (global 3-component vector of float)
+0:221          fwidth (temp 3-component vector of float)
 0:221            'inF0' (in 3-component vector of float)
 0:222      Sequence
 0:222        move second child to first child (temp 3-component vector of bool)
 0:222          'r040' (temp 3-component vector of bool)
-0:222          isinf (global 3-component vector of bool)
+0:222          isinf (temp 3-component vector of bool)
 0:222            'inF0' (in 3-component vector of float)
 0:223      Sequence
 0:223        move second child to first child (temp 3-component vector of bool)
 0:223          'r041' (temp 3-component vector of bool)
-0:223          isnan (global 3-component vector of bool)
+0:223          isnan (temp 3-component vector of bool)
 0:223            'inF0' (in 3-component vector of float)
 0:224      Sequence
 0:224        move second child to first child (temp 3-component vector of float)
 0:224          'r042' (temp 3-component vector of float)
-0:224          ldexp (global 3-component vector of float)
+0:224          ldexp (temp 3-component vector of float)
 0:224            'inF0' (in 3-component vector of float)
 0:224            'inF1' (in 3-component vector of float)
 0:225      Sequence
 0:225        move second child to first child (temp 3-component vector of float)
 0:225          'r039a' (temp 3-component vector of float)
-0:225          mix (global 3-component vector of float)
+0:225          mix (temp 3-component vector of float)
 0:225            'inF0' (in 3-component vector of float)
 0:225            'inF1' (in 3-component vector of float)
 0:225            'inF2' (in 3-component vector of float)
 0:226      Sequence
 0:226        move second child to first child (temp 3-component vector of float)
 0:226          'r039b' (temp 3-component vector of float)
-0:226          mix (global 3-component vector of float)
+0:226          mix (temp 3-component vector of float)
 0:226            'inF0' (in 3-component vector of float)
 0:226            'inF1' (in 3-component vector of float)
 0:226            Constant:
@@ -980,12 +980,12 @@
 0:227      Sequence
 0:227        move second child to first child (temp float)
 0:227          'r043' (temp float)
-0:227          length (global float)
+0:227          length (temp float)
 0:227            'inF0' (in 3-component vector of float)
 0:228      Sequence
 0:228        move second child to first child (temp 3-component vector of float)
 0:228          'r044' (temp 3-component vector of float)
-0:228          log (global 3-component vector of float)
+0:228          log (temp 3-component vector of float)
 0:228            'inF0' (in 3-component vector of float)
 0:229      Sequence
 0:229        move second child to first child (temp 3-component vector of float)
@@ -998,35 +998,35 @@
 0:230      Sequence
 0:230        move second child to first child (temp 3-component vector of float)
 0:230          'r046' (temp 3-component vector of float)
-0:230          log2 (global 3-component vector of float)
+0:230          log2 (temp 3-component vector of float)
 0:230            'inF0' (in 3-component vector of float)
 0:231      Sequence
 0:231        move second child to first child (temp 3-component vector of float)
 0:231          'r047' (temp 3-component vector of float)
-0:231          max (global 3-component vector of float)
+0:231          max (temp 3-component vector of float)
 0:231            'inF0' (in 3-component vector of float)
 0:231            'inF1' (in 3-component vector of float)
 0:232      Sequence
 0:232        move second child to first child (temp 3-component vector of float)
 0:232          'r048' (temp 3-component vector of float)
-0:232          min (global 3-component vector of float)
+0:232          min (temp 3-component vector of float)
 0:232            'inF0' (in 3-component vector of float)
 0:232            'inF1' (in 3-component vector of float)
 0:233      Sequence
 0:233        move second child to first child (temp 3-component vector of float)
 0:233          'r049' (temp 3-component vector of float)
-0:233          normalize (global 3-component vector of float)
+0:233          normalize (temp 3-component vector of float)
 0:233            'inF0' (in 3-component vector of float)
 0:234      Sequence
 0:234        move second child to first child (temp 3-component vector of float)
 0:234          'r050' (temp 3-component vector of float)
-0:234          pow (global 3-component vector of float)
+0:234          pow (temp 3-component vector of float)
 0:234            'inF0' (in 3-component vector of float)
 0:234            'inF1' (in 3-component vector of float)
 0:235      Sequence
 0:235        move second child to first child (temp 3-component vector of float)
 0:235          'r051' (temp 3-component vector of float)
-0:235          radians (global 3-component vector of float)
+0:235          radians (temp 3-component vector of float)
 0:235            'inF0' (in 3-component vector of float)
 0:236      Sequence
 0:236        move second child to first child (temp 3-component vector of float)
@@ -1038,13 +1038,13 @@
 0:237      Sequence
 0:237        move second child to first child (temp 3-component vector of float)
 0:237          'r053' (temp 3-component vector of float)
-0:237          reflect (global 3-component vector of float)
+0:237          reflect (temp 3-component vector of float)
 0:237            'inF0' (in 3-component vector of float)
 0:237            'inF1' (in 3-component vector of float)
 0:238      Sequence
 0:238        move second child to first child (temp 3-component vector of float)
 0:238          'r054' (temp 3-component vector of float)
-0:238          refract (global 3-component vector of float)
+0:238          refract (temp 3-component vector of float)
 0:238            'inF0' (in 3-component vector of float)
 0:238            'inF1' (in 3-component vector of float)
 0:238            Constant:
@@ -1052,7 +1052,7 @@
 0:239      Sequence
 0:239        move second child to first child (temp 3-component vector of uint)
 0:239          'r055' (temp 3-component vector of uint)
-0:?           bitFieldReverse (global 3-component vector of uint)
+0:?           bitFieldReverse (temp 3-component vector of uint)
 0:?             Constant:
 0:?               1 (const uint)
 0:?               2 (const uint)
@@ -1060,12 +1060,12 @@
 0:240      Sequence
 0:240        move second child to first child (temp 3-component vector of float)
 0:240          'r056' (temp 3-component vector of float)
-0:240          roundEven (global 3-component vector of float)
+0:240          roundEven (temp 3-component vector of float)
 0:240            'inF0' (in 3-component vector of float)
 0:241      Sequence
 0:241        move second child to first child (temp 3-component vector of float)
 0:241          'r057' (temp 3-component vector of float)
-0:241          inverse sqrt (global 3-component vector of float)
+0:241          inverse sqrt (temp 3-component vector of float)
 0:241            'inF0' (in 3-component vector of float)
 0:242      Sequence
 0:242        move second child to first child (temp 3-component vector of float)
@@ -1079,12 +1079,12 @@
 0:243      Sequence
 0:243        move second child to first child (temp 3-component vector of float)
 0:243          'r059' (temp 3-component vector of float)
-0:243          Sign (global 3-component vector of float)
+0:243          Sign (temp 3-component vector of float)
 0:243            'inF0' (in 3-component vector of float)
 0:244      Sequence
 0:244        move second child to first child (temp 3-component vector of float)
 0:244          'r060' (temp 3-component vector of float)
-0:244          sine (global 3-component vector of float)
+0:244          sine (temp 3-component vector of float)
 0:244            'inF0' (in 3-component vector of float)
 0:245      Sequence
 0:245        move second child to first child (temp 3-component vector of float)
@@ -1098,40 +1098,40 @@
 0:246      Sequence
 0:246        move second child to first child (temp 3-component vector of float)
 0:246          'r061' (temp 3-component vector of float)
-0:246          hyp. sine (global 3-component vector of float)
+0:246          hyp. sine (temp 3-component vector of float)
 0:246            'inF0' (in 3-component vector of float)
 0:247      Sequence
 0:247        move second child to first child (temp 3-component vector of float)
 0:247          'r062' (temp 3-component vector of float)
-0:247          smoothstep (global 3-component vector of float)
+0:247          smoothstep (temp 3-component vector of float)
 0:247            'inF0' (in 3-component vector of float)
 0:247            'inF1' (in 3-component vector of float)
 0:247            'inF2' (in 3-component vector of float)
 0:248      Sequence
 0:248        move second child to first child (temp 3-component vector of float)
 0:248          'r063' (temp 3-component vector of float)
-0:248          sqrt (global 3-component vector of float)
+0:248          sqrt (temp 3-component vector of float)
 0:248            'inF0' (in 3-component vector of float)
 0:249      Sequence
 0:249        move second child to first child (temp 3-component vector of float)
 0:249          'r064' (temp 3-component vector of float)
-0:249          step (global 3-component vector of float)
+0:249          step (temp 3-component vector of float)
 0:249            'inF0' (in 3-component vector of float)
 0:249            'inF1' (in 3-component vector of float)
 0:250      Sequence
 0:250        move second child to first child (temp 3-component vector of float)
 0:250          'r065' (temp 3-component vector of float)
-0:250          tangent (global 3-component vector of float)
+0:250          tangent (temp 3-component vector of float)
 0:250            'inF0' (in 3-component vector of float)
 0:251      Sequence
 0:251        move second child to first child (temp 3-component vector of float)
 0:251          'r066' (temp 3-component vector of float)
-0:251          hyp. tangent (global 3-component vector of float)
+0:251          hyp. tangent (temp 3-component vector of float)
 0:251            'inF0' (in 3-component vector of float)
 0:253      Sequence
 0:253        move second child to first child (temp 3-component vector of float)
 0:253          'r067' (temp 3-component vector of float)
-0:253          trunc (global 3-component vector of float)
+0:253          trunc (temp 3-component vector of float)
 0:253            'inF0' (in 3-component vector of float)
 0:256      Branch: Return with expression
 0:?         Constant:
@@ -1149,63 +1149,63 @@
 0:263      Sequence
 0:263        move second child to first child (temp bool)
 0:263          'r000' (temp bool)
-0:263          all (global bool)
+0:263          all (temp bool)
 0:263            'inF0' (in 4-component vector of float)
 0:264      Sequence
 0:264        move second child to first child (temp 4-component vector of float)
 0:264          'r001' (temp 4-component vector of float)
-0:264          Absolute value (global 4-component vector of float)
+0:264          Absolute value (temp 4-component vector of float)
 0:264            'inF0' (in 4-component vector of float)
 0:265      Sequence
 0:265        move second child to first child (temp 4-component vector of float)
 0:265          'r002' (temp 4-component vector of float)
-0:265          arc cosine (global 4-component vector of float)
+0:265          arc cosine (temp 4-component vector of float)
 0:265            'inF0' (in 4-component vector of float)
 0:266      Sequence
 0:266        move second child to first child (temp bool)
 0:266          'r003' (temp bool)
-0:266          any (global bool)
+0:266          any (temp bool)
 0:266            'inF0' (in 4-component vector of float)
 0:267      Sequence
 0:267        move second child to first child (temp 4-component vector of float)
 0:267          'r004' (temp 4-component vector of float)
-0:267          arc sine (global 4-component vector of float)
+0:267          arc sine (temp 4-component vector of float)
 0:267            'inF0' (in 4-component vector of float)
 0:268      Sequence
 0:268        move second child to first child (temp 4-component vector of int)
 0:268          'r005' (temp 4-component vector of int)
-0:268          floatBitsToInt (global 4-component vector of int)
+0:268          floatBitsToInt (temp 4-component vector of int)
 0:268            'inF0' (in 4-component vector of float)
 0:269      Sequence
 0:269        move second child to first child (temp 4-component vector of uint)
 0:269          'r006' (temp 4-component vector of uint)
-0:269          floatBitsToUint (global 4-component vector of uint)
+0:269          floatBitsToUint (temp 4-component vector of uint)
 0:269            'inF0' (in 4-component vector of float)
 0:270      Sequence
 0:270        move second child to first child (temp 4-component vector of float)
 0:270          'r007' (temp 4-component vector of float)
-0:270          intBitsToFloat (global 4-component vector of float)
+0:270          intBitsToFloat (temp 4-component vector of float)
 0:270            'inU0' (in 4-component vector of uint)
 0:272      Sequence
 0:272        move second child to first child (temp 4-component vector of float)
 0:272          'r009' (temp 4-component vector of float)
-0:272          arc tangent (global 4-component vector of float)
+0:272          arc tangent (temp 4-component vector of float)
 0:272            'inF0' (in 4-component vector of float)
 0:273      Sequence
 0:273        move second child to first child (temp 4-component vector of float)
 0:273          'r010' (temp 4-component vector of float)
-0:273          arc tangent (global 4-component vector of float)
+0:273          arc tangent (temp 4-component vector of float)
 0:273            'inF0' (in 4-component vector of float)
 0:273            'inF1' (in 4-component vector of float)
 0:274      Sequence
 0:274        move second child to first child (temp 4-component vector of float)
 0:274          'r011' (temp 4-component vector of float)
-0:274          Ceiling (global 4-component vector of float)
+0:274          Ceiling (temp 4-component vector of float)
 0:274            'inF0' (in 4-component vector of float)
 0:275      Sequence
 0:275        move second child to first child (temp 4-component vector of float)
 0:275          'r012' (temp 4-component vector of float)
-0:275          clamp (global 4-component vector of float)
+0:275          clamp (temp 4-component vector of float)
 0:275            'inF0' (in 4-component vector of float)
 0:275            'inF1' (in 4-component vector of float)
 0:275            'inF2' (in 4-component vector of float)
@@ -1224,17 +1224,17 @@
 0:277      Sequence
 0:277        move second child to first child (temp 4-component vector of float)
 0:277          'r013' (temp 4-component vector of float)
-0:277          cosine (global 4-component vector of float)
+0:277          cosine (temp 4-component vector of float)
 0:277            'inF0' (in 4-component vector of float)
 0:278      Sequence
 0:278        move second child to first child (temp 4-component vector of float)
 0:278          'r014' (temp 4-component vector of float)
-0:278          hyp. cosine (global 4-component vector of float)
+0:278          hyp. cosine (temp 4-component vector of float)
 0:278            'inF0' (in 4-component vector of float)
 0:279      Sequence
 0:279        move second child to first child (temp 4-component vector of uint)
 0:279          'r015' (temp 4-component vector of uint)
-0:?           bitCount (global 4-component vector of uint)
+0:?           bitCount (temp 4-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               3 (const uint)
@@ -1243,48 +1243,48 @@
 0:280      Sequence
 0:280        move second child to first child (temp 4-component vector of float)
 0:280          'r016' (temp 4-component vector of float)
-0:280          dPdx (global 4-component vector of float)
+0:280          dPdx (temp 4-component vector of float)
 0:280            'inF0' (in 4-component vector of float)
 0:281      Sequence
 0:281        move second child to first child (temp 4-component vector of float)
 0:281          'r017' (temp 4-component vector of float)
-0:281          dPdxCoarse (global 4-component vector of float)
+0:281          dPdxCoarse (temp 4-component vector of float)
 0:281            'inF0' (in 4-component vector of float)
 0:282      Sequence
 0:282        move second child to first child (temp 4-component vector of float)
 0:282          'r018' (temp 4-component vector of float)
-0:282          dPdxFine (global 4-component vector of float)
+0:282          dPdxFine (temp 4-component vector of float)
 0:282            'inF0' (in 4-component vector of float)
 0:283      Sequence
 0:283        move second child to first child (temp 4-component vector of float)
 0:283          'r019' (temp 4-component vector of float)
-0:283          dPdy (global 4-component vector of float)
+0:283          dPdy (temp 4-component vector of float)
 0:283            'inF0' (in 4-component vector of float)
 0:284      Sequence
 0:284        move second child to first child (temp 4-component vector of float)
 0:284          'r020' (temp 4-component vector of float)
-0:284          dPdyCoarse (global 4-component vector of float)
+0:284          dPdyCoarse (temp 4-component vector of float)
 0:284            'inF0' (in 4-component vector of float)
 0:285      Sequence
 0:285        move second child to first child (temp 4-component vector of float)
 0:285          'r021' (temp 4-component vector of float)
-0:285          dPdyFine (global 4-component vector of float)
+0:285          dPdyFine (temp 4-component vector of float)
 0:285            'inF0' (in 4-component vector of float)
 0:286      Sequence
 0:286        move second child to first child (temp 4-component vector of float)
 0:286          'r022' (temp 4-component vector of float)
-0:286          degrees (global 4-component vector of float)
+0:286          degrees (temp 4-component vector of float)
 0:286            'inF0' (in 4-component vector of float)
 0:287      Sequence
 0:287        move second child to first child (temp float)
 0:287          'r023' (temp float)
-0:287          distance (global float)
+0:287          distance (temp float)
 0:287            'inF0' (in 4-component vector of float)
 0:287            'inF1' (in 4-component vector of float)
 0:288      Sequence
 0:288        move second child to first child (temp float)
 0:288          'r024' (temp float)
-0:288          dot-product (global float)
+0:288          dot-product (temp float)
 0:288            'inF0' (in 4-component vector of float)
 0:288            'inF1' (in 4-component vector of float)
 0:289      Sequence
@@ -1313,24 +1313,24 @@
 0:293      Sequence
 0:293        move second child to first child (temp 4-component vector of float)
 0:293          'r029' (temp 4-component vector of float)
-0:293          exp (global 4-component vector of float)
+0:293          exp (temp 4-component vector of float)
 0:293            'inF0' (in 4-component vector of float)
 0:294      Sequence
 0:294        move second child to first child (temp 4-component vector of float)
 0:294          'r030' (temp 4-component vector of float)
-0:294          exp2 (global 4-component vector of float)
+0:294          exp2 (temp 4-component vector of float)
 0:294            'inF0' (in 4-component vector of float)
 0:295      Sequence
 0:295        move second child to first child (temp 4-component vector of float)
 0:295          'r031' (temp 4-component vector of float)
-0:295          face-forward (global 4-component vector of float)
+0:295          face-forward (temp 4-component vector of float)
 0:295            'inF0' (in 4-component vector of float)
 0:295            'inF1' (in 4-component vector of float)
 0:295            'inF2' (in 4-component vector of float)
 0:296      Sequence
 0:296        move second child to first child (temp 4-component vector of uint)
 0:296          'r032' (temp 4-component vector of uint)
-0:?           findMSB (global 4-component vector of uint)
+0:?           findMSB (temp 4-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               8 (const uint)
@@ -1339,7 +1339,7 @@
 0:297      Sequence
 0:297        move second child to first child (temp 4-component vector of uint)
 0:297          'r033' (temp 4-component vector of uint)
-0:?           findLSB (global 4-component vector of uint)
+0:?           findLSB (temp 4-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               8 (const uint)
@@ -1348,62 +1348,62 @@
 0:298      Sequence
 0:298        move second child to first child (temp 4-component vector of float)
 0:298          'r034' (temp 4-component vector of float)
-0:298          Floor (global 4-component vector of float)
+0:298          Floor (temp 4-component vector of float)
 0:298            'inF0' (in 4-component vector of float)
 0:300      Sequence
 0:300        move second child to first child (temp 4-component vector of float)
 0:300          'r036' (temp 4-component vector of float)
-0:300          mod (global 4-component vector of float)
+0:300          mod (temp 4-component vector of float)
 0:300            'inF0' (in 4-component vector of float)
 0:300            'inF1' (in 4-component vector of float)
 0:301      Sequence
 0:301        move second child to first child (temp 4-component vector of float)
 0:301          'r037' (temp 4-component vector of float)
-0:301          Fraction (global 4-component vector of float)
+0:301          Fraction (temp 4-component vector of float)
 0:301            'inF0' (in 4-component vector of float)
 0:302      Sequence
 0:302        move second child to first child (temp 4-component vector of float)
 0:302          'r038' (temp 4-component vector of float)
-0:302          frexp (global 4-component vector of float)
+0:302          frexp (temp 4-component vector of float)
 0:302            'inF0' (in 4-component vector of float)
 0:302            'inF1' (in 4-component vector of float)
 0:303      Sequence
 0:303        move second child to first child (temp 4-component vector of float)
 0:303          'r039' (temp 4-component vector of float)
-0:303          fwidth (global 4-component vector of float)
+0:303          fwidth (temp 4-component vector of float)
 0:303            'inF0' (in 4-component vector of float)
 0:304      Sequence
 0:304        move second child to first child (temp 4-component vector of bool)
 0:304          'r040' (temp 4-component vector of bool)
-0:304          isinf (global 4-component vector of bool)
+0:304          isinf (temp 4-component vector of bool)
 0:304            'inF0' (in 4-component vector of float)
 0:305      Sequence
 0:305        move second child to first child (temp 4-component vector of bool)
 0:305          'r041' (temp 4-component vector of bool)
-0:305          isnan (global 4-component vector of bool)
+0:305          isnan (temp 4-component vector of bool)
 0:305            'inF0' (in 4-component vector of float)
 0:306      Sequence
 0:306        move second child to first child (temp 4-component vector of float)
 0:306          'r042' (temp 4-component vector of float)
-0:306          ldexp (global 4-component vector of float)
+0:306          ldexp (temp 4-component vector of float)
 0:306            'inF0' (in 4-component vector of float)
 0:306            'inF1' (in 4-component vector of float)
 0:307      Sequence
 0:307        move second child to first child (temp 4-component vector of float)
 0:307          'r039a' (temp 4-component vector of float)
-0:307          mix (global 4-component vector of float)
+0:307          mix (temp 4-component vector of float)
 0:307            'inF0' (in 4-component vector of float)
 0:307            'inF1' (in 4-component vector of float)
 0:307            'inF2' (in 4-component vector of float)
 0:308      Sequence
 0:308        move second child to first child (temp float)
 0:308          'r043' (temp float)
-0:308          length (global float)
+0:308          length (temp float)
 0:308            'inF0' (in 4-component vector of float)
 0:309      Sequence
 0:309        move second child to first child (temp 4-component vector of float)
 0:309          'r044' (temp 4-component vector of float)
-0:309          log (global 4-component vector of float)
+0:309          log (temp 4-component vector of float)
 0:309            'inF0' (in 4-component vector of float)
 0:310      Sequence
 0:310        move second child to first child (temp 4-component vector of float)
@@ -1416,35 +1416,35 @@
 0:311      Sequence
 0:311        move second child to first child (temp 4-component vector of float)
 0:311          'r046' (temp 4-component vector of float)
-0:311          log2 (global 4-component vector of float)
+0:311          log2 (temp 4-component vector of float)
 0:311            'inF0' (in 4-component vector of float)
 0:312      Sequence
 0:312        move second child to first child (temp 4-component vector of float)
 0:312          'r047' (temp 4-component vector of float)
-0:312          max (global 4-component vector of float)
+0:312          max (temp 4-component vector of float)
 0:312            'inF0' (in 4-component vector of float)
 0:312            'inF1' (in 4-component vector of float)
 0:313      Sequence
 0:313        move second child to first child (temp 4-component vector of float)
 0:313          'r048' (temp 4-component vector of float)
-0:313          min (global 4-component vector of float)
+0:313          min (temp 4-component vector of float)
 0:313            'inF0' (in 4-component vector of float)
 0:313            'inF1' (in 4-component vector of float)
 0:314      Sequence
 0:314        move second child to first child (temp 4-component vector of float)
 0:314          'r049' (temp 4-component vector of float)
-0:314          normalize (global 4-component vector of float)
+0:314          normalize (temp 4-component vector of float)
 0:314            'inF0' (in 4-component vector of float)
 0:315      Sequence
 0:315        move second child to first child (temp 4-component vector of float)
 0:315          'r050' (temp 4-component vector of float)
-0:315          pow (global 4-component vector of float)
+0:315          pow (temp 4-component vector of float)
 0:315            'inF0' (in 4-component vector of float)
 0:315            'inF1' (in 4-component vector of float)
 0:316      Sequence
 0:316        move second child to first child (temp 4-component vector of float)
 0:316          'r051' (temp 4-component vector of float)
-0:316          radians (global 4-component vector of float)
+0:316          radians (temp 4-component vector of float)
 0:316            'inF0' (in 4-component vector of float)
 0:317      Sequence
 0:317        move second child to first child (temp 4-component vector of float)
@@ -1456,13 +1456,13 @@
 0:318      Sequence
 0:318        move second child to first child (temp 4-component vector of float)
 0:318          'r053' (temp 4-component vector of float)
-0:318          reflect (global 4-component vector of float)
+0:318          reflect (temp 4-component vector of float)
 0:318            'inF0' (in 4-component vector of float)
 0:318            'inF1' (in 4-component vector of float)
 0:319      Sequence
 0:319        move second child to first child (temp 4-component vector of float)
 0:319          'r054' (temp 4-component vector of float)
-0:319          refract (global 4-component vector of float)
+0:319          refract (temp 4-component vector of float)
 0:319            'inF0' (in 4-component vector of float)
 0:319            'inF1' (in 4-component vector of float)
 0:319            Constant:
@@ -1470,7 +1470,7 @@
 0:320      Sequence
 0:320        move second child to first child (temp 4-component vector of uint)
 0:320          'r055' (temp 4-component vector of uint)
-0:?           bitFieldReverse (global 4-component vector of uint)
+0:?           bitFieldReverse (temp 4-component vector of uint)
 0:?             Constant:
 0:?               1 (const uint)
 0:?               2 (const uint)
@@ -1479,12 +1479,12 @@
 0:321      Sequence
 0:321        move second child to first child (temp 4-component vector of float)
 0:321          'r056' (temp 4-component vector of float)
-0:321          roundEven (global 4-component vector of float)
+0:321          roundEven (temp 4-component vector of float)
 0:321            'inF0' (in 4-component vector of float)
 0:322      Sequence
 0:322        move second child to first child (temp 4-component vector of float)
 0:322          'r057' (temp 4-component vector of float)
-0:322          inverse sqrt (global 4-component vector of float)
+0:322          inverse sqrt (temp 4-component vector of float)
 0:322            'inF0' (in 4-component vector of float)
 0:323      Sequence
 0:323        move second child to first child (temp 4-component vector of float)
@@ -1498,12 +1498,12 @@
 0:324      Sequence
 0:324        move second child to first child (temp 4-component vector of float)
 0:324          'r059' (temp 4-component vector of float)
-0:324          Sign (global 4-component vector of float)
+0:324          Sign (temp 4-component vector of float)
 0:324            'inF0' (in 4-component vector of float)
 0:325      Sequence
 0:325        move second child to first child (temp 4-component vector of float)
 0:325          'r060' (temp 4-component vector of float)
-0:325          sine (global 4-component vector of float)
+0:325          sine (temp 4-component vector of float)
 0:325            'inF0' (in 4-component vector of float)
 0:326      Sequence
 0:326        move second child to first child (temp 4-component vector of float)
@@ -1517,40 +1517,40 @@
 0:327      Sequence
 0:327        move second child to first child (temp 4-component vector of float)
 0:327          'r061' (temp 4-component vector of float)
-0:327          hyp. sine (global 4-component vector of float)
+0:327          hyp. sine (temp 4-component vector of float)
 0:327            'inF0' (in 4-component vector of float)
 0:328      Sequence
 0:328        move second child to first child (temp 4-component vector of float)
 0:328          'r062' (temp 4-component vector of float)
-0:328          smoothstep (global 4-component vector of float)
+0:328          smoothstep (temp 4-component vector of float)
 0:328            'inF0' (in 4-component vector of float)
 0:328            'inF1' (in 4-component vector of float)
 0:328            'inF2' (in 4-component vector of float)
 0:329      Sequence
 0:329        move second child to first child (temp 4-component vector of float)
 0:329          'r063' (temp 4-component vector of float)
-0:329          sqrt (global 4-component vector of float)
+0:329          sqrt (temp 4-component vector of float)
 0:329            'inF0' (in 4-component vector of float)
 0:330      Sequence
 0:330        move second child to first child (temp 4-component vector of float)
 0:330          'r064' (temp 4-component vector of float)
-0:330          step (global 4-component vector of float)
+0:330          step (temp 4-component vector of float)
 0:330            'inF0' (in 4-component vector of float)
 0:330            'inF1' (in 4-component vector of float)
 0:331      Sequence
 0:331        move second child to first child (temp 4-component vector of float)
 0:331          'r065' (temp 4-component vector of float)
-0:331          tangent (global 4-component vector of float)
+0:331          tangent (temp 4-component vector of float)
 0:331            'inF0' (in 4-component vector of float)
 0:332      Sequence
 0:332        move second child to first child (temp 4-component vector of float)
 0:332          'r066' (temp 4-component vector of float)
-0:332          hyp. tangent (global 4-component vector of float)
+0:332          hyp. tangent (temp 4-component vector of float)
 0:332            'inF0' (in 4-component vector of float)
 0:334      Sequence
 0:334        move second child to first child (temp 4-component vector of float)
 0:334          'r067' (temp 4-component vector of float)
-0:334          trunc (global 4-component vector of float)
+0:334          trunc (temp 4-component vector of float)
 0:334            'inF0' (in 4-component vector of float)
 0:337      Branch: Return with expression
 0:?         Constant:
@@ -1567,40 +1567,40 @@
 0:403      Sequence
 0:403        move second child to first child (temp bool)
 0:403          'r000' (temp bool)
-0:403          all (global bool)
+0:403          all (temp bool)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r001' (temp 2X2 matrix of float)
-0:403          Absolute value (global 2X2 matrix of float)
+0:403          Absolute value (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
-0:403      arc cosine (global 2X2 matrix of float)
+0:403      arc cosine (temp 2X2 matrix of float)
 0:403        'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp bool)
 0:403          'r003' (temp bool)
-0:403          any (global bool)
+0:403          any (temp bool)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r004' (temp 2X2 matrix of float)
-0:403          arc sine (global 2X2 matrix of float)
+0:403          arc sine (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r005' (temp 2X2 matrix of float)
-0:403          arc tangent (global 2X2 matrix of float)
+0:403          arc tangent (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r006' (temp 2X2 matrix of float)
-0:403          arc tangent (global 2X2 matrix of float)
+0:403          arc tangent (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r007' (temp 2X2 matrix of float)
-0:403          Ceiling (global 2X2 matrix of float)
+0:403          Ceiling (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Test condition and select (temp void)
 0:403        Condition
@@ -1617,114 +1617,114 @@
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r008' (temp 2X2 matrix of float)
-0:403          clamp (global 2X2 matrix of float)
+0:403          clamp (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403            'inF2' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r009' (temp 2X2 matrix of float)
-0:403          cosine (global 2X2 matrix of float)
+0:403          cosine (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r010' (temp 2X2 matrix of float)
-0:403          hyp. cosine (global 2X2 matrix of float)
+0:403          hyp. cosine (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r011' (temp 2X2 matrix of float)
-0:403          dPdx (global 2X2 matrix of float)
+0:403          dPdx (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r012' (temp 2X2 matrix of float)
-0:403          dPdxCoarse (global 2X2 matrix of float)
+0:403          dPdxCoarse (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r013' (temp 2X2 matrix of float)
-0:403          dPdxFine (global 2X2 matrix of float)
+0:403          dPdxFine (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r014' (temp 2X2 matrix of float)
-0:403          dPdy (global 2X2 matrix of float)
+0:403          dPdy (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r015' (temp 2X2 matrix of float)
-0:403          dPdyCoarse (global 2X2 matrix of float)
+0:403          dPdyCoarse (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r016' (temp 2X2 matrix of float)
-0:403          dPdyFine (global 2X2 matrix of float)
+0:403          dPdyFine (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r017' (temp 2X2 matrix of float)
-0:403          degrees (global 2X2 matrix of float)
+0:403          degrees (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp float)
 0:403          'r018' (temp float)
-0:403          determinant (global float)
+0:403          determinant (temp float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r019' (temp 2X2 matrix of float)
-0:403          exp (global 2X2 matrix of float)
+0:403          exp (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'R020' (temp 2X2 matrix of float)
-0:403          exp2 (global 2X2 matrix of float)
+0:403          exp2 (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r021' (temp 2X2 matrix of float)
-0:403          Floor (global 2X2 matrix of float)
+0:403          Floor (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r022' (temp 2X2 matrix of float)
-0:403          mod (global 2X2 matrix of float)
+0:403          mod (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r023' (temp 2X2 matrix of float)
-0:403          Fraction (global 2X2 matrix of float)
+0:403          Fraction (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r024' (temp 2X2 matrix of float)
-0:403          frexp (global 2X2 matrix of float)
+0:403          frexp (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r025' (temp 2X2 matrix of float)
-0:403          fwidth (global 2X2 matrix of float)
+0:403          fwidth (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r026' (temp 2X2 matrix of float)
-0:403          ldexp (global 2X2 matrix of float)
+0:403          ldexp (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r026a' (temp 2X2 matrix of float)
-0:403          mix (global 2X2 matrix of float)
+0:403          mix (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403            'inF2' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r027' (temp 2X2 matrix of float)
-0:403          log (global 2X2 matrix of float)
+0:403          log (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
@@ -1737,40 +1737,40 @@
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r029' (temp 2X2 matrix of float)
-0:403          log2 (global 2X2 matrix of float)
+0:403          log2 (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r030' (temp 2X2 matrix of float)
-0:403          max (global 2X2 matrix of float)
+0:403          max (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r031' (temp 2X2 matrix of float)
-0:403          min (global 2X2 matrix of float)
+0:403          min (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r032' (temp 2X2 matrix of float)
-0:403          pow (global 2X2 matrix of float)
+0:403          pow (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r033' (temp 2X2 matrix of float)
-0:403          radians (global 2X2 matrix of float)
+0:403          radians (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r034' (temp 2X2 matrix of float)
-0:403          roundEven (global 2X2 matrix of float)
+0:403          roundEven (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r035' (temp 2X2 matrix of float)
-0:403          inverse sqrt (global 2X2 matrix of float)
+0:403          inverse sqrt (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
@@ -1784,12 +1784,12 @@
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r037' (temp 2X2 matrix of float)
-0:403          Sign (global 2X2 matrix of float)
+0:403          Sign (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r038' (temp 2X2 matrix of float)
-0:403          sine (global 2X2 matrix of float)
+0:403          sine (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
@@ -1803,42 +1803,42 @@
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r039' (temp 2X2 matrix of float)
-0:403          hyp. sine (global 2X2 matrix of float)
+0:403          hyp. sine (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r049' (temp 2X2 matrix of float)
-0:403          smoothstep (global 2X2 matrix of float)
+0:403          smoothstep (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403            'inF2' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r041' (temp 2X2 matrix of float)
-0:403          sqrt (global 2X2 matrix of float)
+0:403          sqrt (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r042' (temp 2X2 matrix of float)
-0:403          step (global 2X2 matrix of float)
+0:403          step (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r043' (temp 2X2 matrix of float)
-0:403          tangent (global 2X2 matrix of float)
+0:403          tangent (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r044' (temp 2X2 matrix of float)
-0:403          hyp. tangent (global 2X2 matrix of float)
+0:403          hyp. tangent (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
-0:403      transpose (global 2X2 matrix of float)
+0:403      transpose (temp 2X2 matrix of float)
 0:403        'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r046' (temp 2X2 matrix of float)
-0:403          trunc (global 2X2 matrix of float)
+0:403          trunc (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:406      Branch: Return with expression
 0:?         Constant:
@@ -1855,40 +1855,40 @@
 0:412      Sequence
 0:412        move second child to first child (temp bool)
 0:412          'r000' (temp bool)
-0:412          all (global bool)
+0:412          all (temp bool)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r001' (temp 3X3 matrix of float)
-0:412          Absolute value (global 3X3 matrix of float)
+0:412          Absolute value (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
-0:412      arc cosine (global 3X3 matrix of float)
+0:412      arc cosine (temp 3X3 matrix of float)
 0:412        'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp bool)
 0:412          'r003' (temp bool)
-0:412          any (global bool)
+0:412          any (temp bool)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r004' (temp 3X3 matrix of float)
-0:412          arc sine (global 3X3 matrix of float)
+0:412          arc sine (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r005' (temp 3X3 matrix of float)
-0:412          arc tangent (global 3X3 matrix of float)
+0:412          arc tangent (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r006' (temp 3X3 matrix of float)
-0:412          arc tangent (global 3X3 matrix of float)
+0:412          arc tangent (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r007' (temp 3X3 matrix of float)
-0:412          Ceiling (global 3X3 matrix of float)
+0:412          Ceiling (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Test condition and select (temp void)
 0:412        Condition
@@ -1910,114 +1910,114 @@
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r008' (temp 3X3 matrix of float)
-0:412          clamp (global 3X3 matrix of float)
+0:412          clamp (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412            'inF2' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r009' (temp 3X3 matrix of float)
-0:412          cosine (global 3X3 matrix of float)
+0:412          cosine (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r010' (temp 3X3 matrix of float)
-0:412          hyp. cosine (global 3X3 matrix of float)
+0:412          hyp. cosine (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r011' (temp 3X3 matrix of float)
-0:412          dPdx (global 3X3 matrix of float)
+0:412          dPdx (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r012' (temp 3X3 matrix of float)
-0:412          dPdxCoarse (global 3X3 matrix of float)
+0:412          dPdxCoarse (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r013' (temp 3X3 matrix of float)
-0:412          dPdxFine (global 3X3 matrix of float)
+0:412          dPdxFine (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r014' (temp 3X3 matrix of float)
-0:412          dPdy (global 3X3 matrix of float)
+0:412          dPdy (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r015' (temp 3X3 matrix of float)
-0:412          dPdyCoarse (global 3X3 matrix of float)
+0:412          dPdyCoarse (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r016' (temp 3X3 matrix of float)
-0:412          dPdyFine (global 3X3 matrix of float)
+0:412          dPdyFine (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r017' (temp 3X3 matrix of float)
-0:412          degrees (global 3X3 matrix of float)
+0:412          degrees (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp float)
 0:412          'r018' (temp float)
-0:412          determinant (global float)
+0:412          determinant (temp float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r019' (temp 3X3 matrix of float)
-0:412          exp (global 3X3 matrix of float)
+0:412          exp (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'R020' (temp 3X3 matrix of float)
-0:412          exp2 (global 3X3 matrix of float)
+0:412          exp2 (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r021' (temp 3X3 matrix of float)
-0:412          Floor (global 3X3 matrix of float)
+0:412          Floor (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r022' (temp 3X3 matrix of float)
-0:412          mod (global 3X3 matrix of float)
+0:412          mod (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r023' (temp 3X3 matrix of float)
-0:412          Fraction (global 3X3 matrix of float)
+0:412          Fraction (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r024' (temp 3X3 matrix of float)
-0:412          frexp (global 3X3 matrix of float)
+0:412          frexp (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r025' (temp 3X3 matrix of float)
-0:412          fwidth (global 3X3 matrix of float)
+0:412          fwidth (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r026' (temp 3X3 matrix of float)
-0:412          ldexp (global 3X3 matrix of float)
+0:412          ldexp (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r026a' (temp 3X3 matrix of float)
-0:412          mix (global 3X3 matrix of float)
+0:412          mix (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412            'inF2' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r027' (temp 3X3 matrix of float)
-0:412          log (global 3X3 matrix of float)
+0:412          log (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
@@ -2030,40 +2030,40 @@
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r029' (temp 3X3 matrix of float)
-0:412          log2 (global 3X3 matrix of float)
+0:412          log2 (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r030' (temp 3X3 matrix of float)
-0:412          max (global 3X3 matrix of float)
+0:412          max (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r031' (temp 3X3 matrix of float)
-0:412          min (global 3X3 matrix of float)
+0:412          min (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r032' (temp 3X3 matrix of float)
-0:412          pow (global 3X3 matrix of float)
+0:412          pow (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r033' (temp 3X3 matrix of float)
-0:412          radians (global 3X3 matrix of float)
+0:412          radians (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r034' (temp 3X3 matrix of float)
-0:412          roundEven (global 3X3 matrix of float)
+0:412          roundEven (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r035' (temp 3X3 matrix of float)
-0:412          inverse sqrt (global 3X3 matrix of float)
+0:412          inverse sqrt (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
@@ -2077,12 +2077,12 @@
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r037' (temp 3X3 matrix of float)
-0:412          Sign (global 3X3 matrix of float)
+0:412          Sign (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r038' (temp 3X3 matrix of float)
-0:412          sine (global 3X3 matrix of float)
+0:412          sine (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
@@ -2096,42 +2096,42 @@
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r039' (temp 3X3 matrix of float)
-0:412          hyp. sine (global 3X3 matrix of float)
+0:412          hyp. sine (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r049' (temp 3X3 matrix of float)
-0:412          smoothstep (global 3X3 matrix of float)
+0:412          smoothstep (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412            'inF2' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r041' (temp 3X3 matrix of float)
-0:412          sqrt (global 3X3 matrix of float)
+0:412          sqrt (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r042' (temp 3X3 matrix of float)
-0:412          step (global 3X3 matrix of float)
+0:412          step (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r043' (temp 3X3 matrix of float)
-0:412          tangent (global 3X3 matrix of float)
+0:412          tangent (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r044' (temp 3X3 matrix of float)
-0:412          hyp. tangent (global 3X3 matrix of float)
+0:412          hyp. tangent (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
-0:412      transpose (global 3X3 matrix of float)
+0:412      transpose (temp 3X3 matrix of float)
 0:412        'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r046' (temp 3X3 matrix of float)
-0:412          trunc (global 3X3 matrix of float)
+0:412          trunc (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:415      Branch: Return with expression
 0:?         Constant:
@@ -2153,40 +2153,40 @@
 0:421      Sequence
 0:421        move second child to first child (temp bool)
 0:421          'r000' (temp bool)
-0:421          all (global bool)
+0:421          all (temp bool)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r001' (temp 4X4 matrix of float)
-0:421          Absolute value (global 4X4 matrix of float)
+0:421          Absolute value (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
-0:421      arc cosine (global 4X4 matrix of float)
+0:421      arc cosine (temp 4X4 matrix of float)
 0:421        'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp bool)
 0:421          'r003' (temp bool)
-0:421          any (global bool)
+0:421          any (temp bool)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r004' (temp 4X4 matrix of float)
-0:421          arc sine (global 4X4 matrix of float)
+0:421          arc sine (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r005' (temp 4X4 matrix of float)
-0:421          arc tangent (global 4X4 matrix of float)
+0:421          arc tangent (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r006' (temp 4X4 matrix of float)
-0:421          arc tangent (global 4X4 matrix of float)
+0:421          arc tangent (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r007' (temp 4X4 matrix of float)
-0:421          Ceiling (global 4X4 matrix of float)
+0:421          Ceiling (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Test condition and select (temp void)
 0:421        Condition
@@ -2215,114 +2215,114 @@
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r008' (temp 4X4 matrix of float)
-0:421          clamp (global 4X4 matrix of float)
+0:421          clamp (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421            'inF2' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r009' (temp 4X4 matrix of float)
-0:421          cosine (global 4X4 matrix of float)
+0:421          cosine (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r010' (temp 4X4 matrix of float)
-0:421          hyp. cosine (global 4X4 matrix of float)
+0:421          hyp. cosine (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r011' (temp 4X4 matrix of float)
-0:421          dPdx (global 4X4 matrix of float)
+0:421          dPdx (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r012' (temp 4X4 matrix of float)
-0:421          dPdxCoarse (global 4X4 matrix of float)
+0:421          dPdxCoarse (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r013' (temp 4X4 matrix of float)
-0:421          dPdxFine (global 4X4 matrix of float)
+0:421          dPdxFine (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r014' (temp 4X4 matrix of float)
-0:421          dPdy (global 4X4 matrix of float)
+0:421          dPdy (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r015' (temp 4X4 matrix of float)
-0:421          dPdyCoarse (global 4X4 matrix of float)
+0:421          dPdyCoarse (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r016' (temp 4X4 matrix of float)
-0:421          dPdyFine (global 4X4 matrix of float)
+0:421          dPdyFine (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r017' (temp 4X4 matrix of float)
-0:421          degrees (global 4X4 matrix of float)
+0:421          degrees (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp float)
 0:421          'r018' (temp float)
-0:421          determinant (global float)
+0:421          determinant (temp float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r019' (temp 4X4 matrix of float)
-0:421          exp (global 4X4 matrix of float)
+0:421          exp (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'R020' (temp 4X4 matrix of float)
-0:421          exp2 (global 4X4 matrix of float)
+0:421          exp2 (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r021' (temp 4X4 matrix of float)
-0:421          Floor (global 4X4 matrix of float)
+0:421          Floor (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r022' (temp 4X4 matrix of float)
-0:421          mod (global 4X4 matrix of float)
+0:421          mod (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r023' (temp 4X4 matrix of float)
-0:421          Fraction (global 4X4 matrix of float)
+0:421          Fraction (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r024' (temp 4X4 matrix of float)
-0:421          frexp (global 4X4 matrix of float)
+0:421          frexp (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r025' (temp 4X4 matrix of float)
-0:421          fwidth (global 4X4 matrix of float)
+0:421          fwidth (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r026' (temp 4X4 matrix of float)
-0:421          ldexp (global 4X4 matrix of float)
+0:421          ldexp (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r026a' (temp 4X4 matrix of float)
-0:421          mix (global 4X4 matrix of float)
+0:421          mix (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421            'inF2' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r027' (temp 4X4 matrix of float)
-0:421          log (global 4X4 matrix of float)
+0:421          log (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
@@ -2335,40 +2335,40 @@
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r029' (temp 4X4 matrix of float)
-0:421          log2 (global 4X4 matrix of float)
+0:421          log2 (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r030' (temp 4X4 matrix of float)
-0:421          max (global 4X4 matrix of float)
+0:421          max (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r031' (temp 4X4 matrix of float)
-0:421          min (global 4X4 matrix of float)
+0:421          min (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r032' (temp 4X4 matrix of float)
-0:421          pow (global 4X4 matrix of float)
+0:421          pow (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r033' (temp 4X4 matrix of float)
-0:421          radians (global 4X4 matrix of float)
+0:421          radians (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r034' (temp 4X4 matrix of float)
-0:421          roundEven (global 4X4 matrix of float)
+0:421          roundEven (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r035' (temp 4X4 matrix of float)
-0:421          inverse sqrt (global 4X4 matrix of float)
+0:421          inverse sqrt (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
@@ -2382,12 +2382,12 @@
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r037' (temp 4X4 matrix of float)
-0:421          Sign (global 4X4 matrix of float)
+0:421          Sign (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r038' (temp 4X4 matrix of float)
-0:421          sine (global 4X4 matrix of float)
+0:421          sine (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
@@ -2401,42 +2401,42 @@
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r039' (temp 4X4 matrix of float)
-0:421          hyp. sine (global 4X4 matrix of float)
+0:421          hyp. sine (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r049' (temp 4X4 matrix of float)
-0:421          smoothstep (global 4X4 matrix of float)
+0:421          smoothstep (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421            'inF2' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r041' (temp 4X4 matrix of float)
-0:421          sqrt (global 4X4 matrix of float)
+0:421          sqrt (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r042' (temp 4X4 matrix of float)
-0:421          step (global 4X4 matrix of float)
+0:421          step (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r043' (temp 4X4 matrix of float)
-0:421          tangent (global 4X4 matrix of float)
+0:421          tangent (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r044' (temp 4X4 matrix of float)
-0:421          hyp. tangent (global 4X4 matrix of float)
+0:421          hyp. tangent (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
-0:421      transpose (global 4X4 matrix of float)
+0:421      transpose (temp 4X4 matrix of float)
 0:421        'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r046' (temp 4X4 matrix of float)
-0:421          trunc (global 4X4 matrix of float)
+0:421          trunc (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:424      Branch: Return with expression
 0:?         Constant:
@@ -2486,7 +2486,7 @@
 0:443      Sequence
 0:443        move second child to first child (temp float)
 0:443          'r3' (temp float)
-0:443          dot-product (global float)
+0:443          dot-product (temp float)
 0:443            'inFV0' (in 2-component vector of float)
 0:443            'inFV1' (in 2-component vector of float)
 0:443      Sequence
@@ -2549,7 +2549,7 @@
 0:450      Sequence
 0:450        move second child to first child (temp float)
 0:450          'r3' (temp float)
-0:450          dot-product (global float)
+0:450          dot-product (temp float)
 0:450            'inFV0' (in 3-component vector of float)
 0:450            'inFV1' (in 3-component vector of float)
 0:450      Sequence
@@ -2612,7 +2612,7 @@
 0:457      Sequence
 0:457        move second child to first child (temp float)
 0:457          'r3' (temp float)
-0:457          dot-product (global float)
+0:457          dot-product (temp float)
 0:457            'inFV0' (in 4-component vector of float)
 0:457            'inFV1' (in 4-component vector of float)
 0:457      Sequence
@@ -2690,13 +2690,13 @@
 0:472      Sequence
 0:472        move second child to first child (temp float)
 0:472          'r05' (temp float)
-0:472          dot-product (global float)
+0:472          dot-product (temp float)
 0:472            'inFV2' (in 2-component vector of float)
 0:472            'inFV2' (in 2-component vector of float)
 0:473      Sequence
 0:473        move second child to first child (temp float)
 0:473          'r06' (temp float)
-0:473          dot-product (global float)
+0:473          dot-product (temp float)
 0:473            'inFV3' (in 3-component vector of float)
 0:473            'inFV3' (in 3-component vector of float)
 0:474      Sequence
@@ -2782,6 +2782,7 @@
 0:492                0 (const int)
 0:492        Branch: Return
 0:?   Linker Objects
+0:?     'color' (layout(location=0 ) out 4-component vector of float)
 0:?     'gs_ua' (shared uint)
 0:?     'gs_ub' (shared uint)
 0:?     'gs_uc' (shared uint)
@@ -2794,7 +2795,6 @@
 0:?     'gs_ua4' (shared 4-component vector of uint)
 0:?     'gs_ub4' (shared 4-component vector of uint)
 0:?     'gs_uc4' (shared 4-component vector of uint)
-0:?     'color' (layout(location=0 ) out 4-component vector of float)
 
 
 Linked fragment stage:
@@ -2814,63 +2814,63 @@
 0:20      Sequence
 0:20        move second child to first child (temp bool)
 0:20          'r000' (temp bool)
-0:20          all (global bool)
+0:20          all (temp bool)
 0:20            'inF0' (in float)
 0:21      Sequence
 0:21        move second child to first child (temp float)
 0:21          'r001' (temp float)
-0:21          Absolute value (global float)
+0:21          Absolute value (temp float)
 0:21            'inF0' (in float)
 0:22      Sequence
 0:22        move second child to first child (temp float)
 0:22          'r002' (temp float)
-0:22          arc cosine (global float)
+0:22          arc cosine (temp float)
 0:22            'inF0' (in float)
 0:23      Sequence
 0:23        move second child to first child (temp bool)
 0:23          'r003' (temp bool)
-0:23          any (global bool)
+0:23          any (temp bool)
 0:23            'inF0' (in float)
 0:24      Sequence
 0:24        move second child to first child (temp float)
 0:24          'r004' (temp float)
-0:24          arc sine (global float)
+0:24          arc sine (temp float)
 0:24            'inF0' (in float)
 0:25      Sequence
 0:25        move second child to first child (temp int)
 0:25          'r005' (temp int)
-0:25          floatBitsToInt (global int)
+0:25          floatBitsToInt (temp int)
 0:25            'inF0' (in float)
 0:26      Sequence
 0:26        move second child to first child (temp uint)
 0:26          'r006' (temp uint)
-0:26          floatBitsToUint (global uint)
+0:26          floatBitsToUint (temp uint)
 0:26            'inF0' (in float)
 0:27      Sequence
 0:27        move second child to first child (temp float)
 0:27          'r007' (temp float)
-0:27          intBitsToFloat (global float)
+0:27          intBitsToFloat (temp float)
 0:27            'inU0' (in uint)
 0:29      Sequence
 0:29        move second child to first child (temp float)
 0:29          'r009' (temp float)
-0:29          arc tangent (global float)
+0:29          arc tangent (temp float)
 0:29            'inF0' (in float)
 0:30      Sequence
 0:30        move second child to first child (temp float)
 0:30          'r010' (temp float)
-0:30          arc tangent (global float)
+0:30          arc tangent (temp float)
 0:30            'inF0' (in float)
 0:30            'inF1' (in float)
 0:31      Sequence
 0:31        move second child to first child (temp float)
 0:31          'r011' (temp float)
-0:31          Ceiling (global float)
+0:31          Ceiling (temp float)
 0:31            'inF0' (in float)
 0:32      Sequence
 0:32        move second child to first child (temp float)
 0:32          'r012' (temp float)
-0:32          clamp (global float)
+0:32          clamp (temp float)
 0:32            'inF0' (in float)
 0:32            'inF1' (in float)
 0:32            'inF2' (in float)
@@ -2885,132 +2885,132 @@
 0:34      Sequence
 0:34        move second child to first child (temp float)
 0:34          'r014' (temp float)
-0:34          cosine (global float)
+0:34          cosine (temp float)
 0:34            'inF0' (in float)
 0:35      Sequence
 0:35        move second child to first child (temp float)
 0:35          'r015' (temp float)
-0:35          hyp. cosine (global float)
+0:35          hyp. cosine (temp float)
 0:35            'inF0' (in float)
 0:36      Sequence
 0:36        move second child to first child (temp uint)
 0:36          'r016' (temp uint)
-0:36          bitCount (global uint)
+0:36          bitCount (temp uint)
 0:36            Constant:
 0:36              7 (const uint)
 0:37      Sequence
 0:37        move second child to first child (temp float)
 0:37          'r017' (temp float)
-0:37          dPdx (global float)
+0:37          dPdx (temp float)
 0:37            'inF0' (in float)
 0:38      Sequence
 0:38        move second child to first child (temp float)
 0:38          'r018' (temp float)
-0:38          dPdxCoarse (global float)
+0:38          dPdxCoarse (temp float)
 0:38            'inF0' (in float)
 0:39      Sequence
 0:39        move second child to first child (temp float)
 0:39          'r019' (temp float)
-0:39          dPdxFine (global float)
+0:39          dPdxFine (temp float)
 0:39            'inF0' (in float)
 0:40      Sequence
 0:40        move second child to first child (temp float)
 0:40          'r020' (temp float)
-0:40          dPdy (global float)
+0:40          dPdy (temp float)
 0:40            'inF0' (in float)
 0:41      Sequence
 0:41        move second child to first child (temp float)
 0:41          'r021' (temp float)
-0:41          dPdyCoarse (global float)
+0:41          dPdyCoarse (temp float)
 0:41            'inF0' (in float)
 0:42      Sequence
 0:42        move second child to first child (temp float)
 0:42          'r022' (temp float)
-0:42          dPdyFine (global float)
+0:42          dPdyFine (temp float)
 0:42            'inF0' (in float)
 0:43      Sequence
 0:43        move second child to first child (temp float)
 0:43          'r023' (temp float)
-0:43          degrees (global float)
+0:43          degrees (temp float)
 0:43            'inF0' (in float)
 0:47      Sequence
 0:47        move second child to first child (temp float)
 0:47          'r027' (temp float)
-0:47          exp (global float)
+0:47          exp (temp float)
 0:47            'inF0' (in float)
 0:48      Sequence
 0:48        move second child to first child (temp float)
 0:48          'r028' (temp float)
-0:48          exp2 (global float)
+0:48          exp2 (temp float)
 0:48            'inF0' (in float)
 0:49      Sequence
 0:49        move second child to first child (temp uint)
 0:49          'r029' (temp uint)
 0:49          Convert int to uint (temp uint)
-0:49            findMSB (global int)
+0:49            findMSB (temp int)
 0:49              Constant:
 0:49                7 (const int)
 0:50      Sequence
 0:50        move second child to first child (temp uint)
 0:50          'r030' (temp uint)
 0:50          Convert int to uint (temp uint)
-0:50            findLSB (global int)
+0:50            findLSB (temp int)
 0:50              Constant:
 0:50                7 (const int)
 0:51      Sequence
 0:51        move second child to first child (temp float)
 0:51          'r031' (temp float)
-0:51          Floor (global float)
+0:51          Floor (temp float)
 0:51            'inF0' (in float)
 0:53      Sequence
 0:53        move second child to first child (temp float)
 0:53          'r033' (temp float)
-0:53          mod (global float)
+0:53          mod (temp float)
 0:53            'inF0' (in float)
 0:53            'inF1' (in float)
 0:54      Sequence
 0:54        move second child to first child (temp float)
 0:54          'r034' (temp float)
-0:54          Fraction (global float)
+0:54          Fraction (temp float)
 0:54            'inF0' (in float)
 0:55      Sequence
 0:55        move second child to first child (temp float)
 0:55          'r035' (temp float)
-0:55          frexp (global float)
+0:55          frexp (temp float)
 0:55            'inF0' (in float)
 0:55            'inF1' (in float)
 0:56      Sequence
 0:56        move second child to first child (temp float)
 0:56          'r036' (temp float)
-0:56          fwidth (global float)
+0:56          fwidth (temp float)
 0:56            'inF0' (in float)
 0:57      Sequence
 0:57        move second child to first child (temp bool)
 0:57          'r037' (temp bool)
-0:57          isinf (global bool)
+0:57          isinf (temp bool)
 0:57            'inF0' (in float)
 0:58      Sequence
 0:58        move second child to first child (temp bool)
 0:58          'r038' (temp bool)
-0:58          isnan (global bool)
+0:58          isnan (temp bool)
 0:58            'inF0' (in float)
 0:59      Sequence
 0:59        move second child to first child (temp float)
 0:59          'r039' (temp float)
-0:59          ldexp (global float)
+0:59          ldexp (temp float)
 0:59            'inF0' (in float)
 0:59            'inF1' (in float)
 0:60      Sequence
 0:60        move second child to first child (temp float)
 0:60          'r039a' (temp float)
-0:60          mix (global float)
+0:60          mix (temp float)
 0:60            'inF0' (in float)
 0:60            'inF1' (in float)
 0:60            'inF2' (in float)
 0:61      Sequence
 0:61        move second child to first child (temp float)
 0:61          'r040' (temp float)
-0:61          log (global float)
+0:61          log (temp float)
 0:61            'inF0' (in float)
 0:62      Sequence
 0:62        move second child to first child (temp float)
@@ -3023,30 +3023,30 @@
 0:63      Sequence
 0:63        move second child to first child (temp float)
 0:63          'r042' (temp float)
-0:63          log2 (global float)
+0:63          log2 (temp float)
 0:63            'inF0' (in float)
 0:64      Sequence
 0:64        move second child to first child (temp float)
 0:64          'r043' (temp float)
-0:64          max (global float)
+0:64          max (temp float)
 0:64            'inF0' (in float)
 0:64            'inF1' (in float)
 0:65      Sequence
 0:65        move second child to first child (temp float)
 0:65          'r044' (temp float)
-0:65          min (global float)
+0:65          min (temp float)
 0:65            'inF0' (in float)
 0:65            'inF1' (in float)
 0:66      Sequence
 0:66        move second child to first child (temp float)
 0:66          'r045' (temp float)
-0:66          pow (global float)
+0:66          pow (temp float)
 0:66            'inF0' (in float)
 0:66            'inF1' (in float)
 0:67      Sequence
 0:67        move second child to first child (temp float)
 0:67          'r046' (temp float)
-0:67          radians (global float)
+0:67          radians (temp float)
 0:67            'inF0' (in float)
 0:68      Sequence
 0:68        move second child to first child (temp float)
@@ -3058,18 +3058,18 @@
 0:69      Sequence
 0:69        move second child to first child (temp uint)
 0:69          'r048' (temp uint)
-0:69          bitFieldReverse (global uint)
+0:69          bitFieldReverse (temp uint)
 0:69            Constant:
 0:69              2 (const uint)
 0:70      Sequence
 0:70        move second child to first child (temp float)
 0:70          'r049' (temp float)
-0:70          roundEven (global float)
+0:70          roundEven (temp float)
 0:70            'inF0' (in float)
 0:71      Sequence
 0:71        move second child to first child (temp float)
 0:71          'r050' (temp float)
-0:71          inverse sqrt (global float)
+0:71          inverse sqrt (temp float)
 0:71            'inF0' (in float)
 0:72      Sequence
 0:72        move second child to first child (temp float)
@@ -3083,12 +3083,12 @@
 0:73      Sequence
 0:73        move second child to first child (temp float)
 0:73          'r052' (temp float)
-0:73          Sign (global float)
+0:73          Sign (temp float)
 0:73            'inF0' (in float)
 0:74      Sequence
 0:74        move second child to first child (temp float)
 0:74          'r053' (temp float)
-0:74          sine (global float)
+0:74          sine (temp float)
 0:74            'inF0' (in float)
 0:75      Sequence
 0:75        move second child to first child (temp float)
@@ -3102,40 +3102,40 @@
 0:76      Sequence
 0:76        move second child to first child (temp float)
 0:76          'r055' (temp float)
-0:76          hyp. sine (global float)
+0:76          hyp. sine (temp float)
 0:76            'inF0' (in float)
 0:77      Sequence
 0:77        move second child to first child (temp float)
 0:77          'r056' (temp float)
-0:77          smoothstep (global float)
+0:77          smoothstep (temp float)
 0:77            'inF0' (in float)
 0:77            'inF1' (in float)
 0:77            'inF2' (in float)
 0:78      Sequence
 0:78        move second child to first child (temp float)
 0:78          'r057' (temp float)
-0:78          sqrt (global float)
+0:78          sqrt (temp float)
 0:78            'inF0' (in float)
 0:79      Sequence
 0:79        move second child to first child (temp float)
 0:79          'r058' (temp float)
-0:79          step (global float)
+0:79          step (temp float)
 0:79            'inF0' (in float)
 0:79            'inF1' (in float)
 0:80      Sequence
 0:80        move second child to first child (temp float)
 0:80          'r059' (temp float)
-0:80          tangent (global float)
+0:80          tangent (temp float)
 0:80            'inF0' (in float)
 0:81      Sequence
 0:81        move second child to first child (temp float)
 0:81          'r060' (temp float)
-0:81          hyp. tangent (global float)
+0:81          hyp. tangent (temp float)
 0:81            'inF0' (in float)
 0:83      Sequence
 0:83        move second child to first child (temp float)
 0:83          'r061' (temp float)
-0:83          trunc (global float)
+0:83          trunc (temp float)
 0:83            'inF0' (in float)
 0:85      Branch: Return with expression
 0:85        Constant:
@@ -3160,63 +3160,63 @@
 0:98      Sequence
 0:98        move second child to first child (temp bool)
 0:98          'r000' (temp bool)
-0:98          all (global bool)
+0:98          all (temp bool)
 0:98            'inF0' (in 2-component vector of float)
 0:99      Sequence
 0:99        move second child to first child (temp 2-component vector of float)
 0:99          'r001' (temp 2-component vector of float)
-0:99          Absolute value (global 2-component vector of float)
+0:99          Absolute value (temp 2-component vector of float)
 0:99            'inF0' (in 2-component vector of float)
 0:100      Sequence
 0:100        move second child to first child (temp 2-component vector of float)
 0:100          'r002' (temp 2-component vector of float)
-0:100          arc cosine (global 2-component vector of float)
+0:100          arc cosine (temp 2-component vector of float)
 0:100            'inF0' (in 2-component vector of float)
 0:101      Sequence
 0:101        move second child to first child (temp bool)
 0:101          'r003' (temp bool)
-0:101          any (global bool)
+0:101          any (temp bool)
 0:101            'inF0' (in 2-component vector of float)
 0:102      Sequence
 0:102        move second child to first child (temp 2-component vector of float)
 0:102          'r004' (temp 2-component vector of float)
-0:102          arc sine (global 2-component vector of float)
+0:102          arc sine (temp 2-component vector of float)
 0:102            'inF0' (in 2-component vector of float)
 0:103      Sequence
 0:103        move second child to first child (temp 2-component vector of int)
 0:103          'r005' (temp 2-component vector of int)
-0:103          floatBitsToInt (global 2-component vector of int)
+0:103          floatBitsToInt (temp 2-component vector of int)
 0:103            'inF0' (in 2-component vector of float)
 0:104      Sequence
 0:104        move second child to first child (temp 2-component vector of uint)
 0:104          'r006' (temp 2-component vector of uint)
-0:104          floatBitsToUint (global 2-component vector of uint)
+0:104          floatBitsToUint (temp 2-component vector of uint)
 0:104            'inF0' (in 2-component vector of float)
 0:105      Sequence
 0:105        move second child to first child (temp 2-component vector of float)
 0:105          'r007' (temp 2-component vector of float)
-0:105          intBitsToFloat (global 2-component vector of float)
+0:105          intBitsToFloat (temp 2-component vector of float)
 0:105            'inU0' (in 2-component vector of uint)
 0:107      Sequence
 0:107        move second child to first child (temp 2-component vector of float)
 0:107          'r009' (temp 2-component vector of float)
-0:107          arc tangent (global 2-component vector of float)
+0:107          arc tangent (temp 2-component vector of float)
 0:107            'inF0' (in 2-component vector of float)
 0:108      Sequence
 0:108        move second child to first child (temp 2-component vector of float)
 0:108          'r010' (temp 2-component vector of float)
-0:108          arc tangent (global 2-component vector of float)
+0:108          arc tangent (temp 2-component vector of float)
 0:108            'inF0' (in 2-component vector of float)
 0:108            'inF1' (in 2-component vector of float)
 0:109      Sequence
 0:109        move second child to first child (temp 2-component vector of float)
 0:109          'r011' (temp 2-component vector of float)
-0:109          Ceiling (global 2-component vector of float)
+0:109          Ceiling (temp 2-component vector of float)
 0:109            'inF0' (in 2-component vector of float)
 0:110      Sequence
 0:110        move second child to first child (temp 2-component vector of float)
 0:110          'r012' (temp 2-component vector of float)
-0:110          clamp (global 2-component vector of float)
+0:110          clamp (temp 2-component vector of float)
 0:110            'inF0' (in 2-component vector of float)
 0:110            'inF1' (in 2-component vector of float)
 0:110            'inF2' (in 2-component vector of float)
@@ -3233,157 +3233,157 @@
 0:112      Sequence
 0:112        move second child to first child (temp 2-component vector of float)
 0:112          'r013' (temp 2-component vector of float)
-0:112          cosine (global 2-component vector of float)
+0:112          cosine (temp 2-component vector of float)
 0:112            'inF0' (in 2-component vector of float)
 0:113      Sequence
 0:113        move second child to first child (temp 2-component vector of float)
 0:113          'r015' (temp 2-component vector of float)
-0:113          hyp. cosine (global 2-component vector of float)
+0:113          hyp. cosine (temp 2-component vector of float)
 0:113            'inF0' (in 2-component vector of float)
 0:114      Sequence
 0:114        move second child to first child (temp 2-component vector of uint)
 0:114          'r016' (temp 2-component vector of uint)
-0:?           bitCount (global 2-component vector of uint)
+0:?           bitCount (temp 2-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               3 (const uint)
 0:115      Sequence
 0:115        move second child to first child (temp 2-component vector of float)
 0:115          'r017' (temp 2-component vector of float)
-0:115          dPdx (global 2-component vector of float)
+0:115          dPdx (temp 2-component vector of float)
 0:115            'inF0' (in 2-component vector of float)
 0:116      Sequence
 0:116        move second child to first child (temp 2-component vector of float)
 0:116          'r018' (temp 2-component vector of float)
-0:116          dPdxCoarse (global 2-component vector of float)
+0:116          dPdxCoarse (temp 2-component vector of float)
 0:116            'inF0' (in 2-component vector of float)
 0:117      Sequence
 0:117        move second child to first child (temp 2-component vector of float)
 0:117          'r019' (temp 2-component vector of float)
-0:117          dPdxFine (global 2-component vector of float)
+0:117          dPdxFine (temp 2-component vector of float)
 0:117            'inF0' (in 2-component vector of float)
 0:118      Sequence
 0:118        move second child to first child (temp 2-component vector of float)
 0:118          'r020' (temp 2-component vector of float)
-0:118          dPdy (global 2-component vector of float)
+0:118          dPdy (temp 2-component vector of float)
 0:118            'inF0' (in 2-component vector of float)
 0:119      Sequence
 0:119        move second child to first child (temp 2-component vector of float)
 0:119          'r021' (temp 2-component vector of float)
-0:119          dPdyCoarse (global 2-component vector of float)
+0:119          dPdyCoarse (temp 2-component vector of float)
 0:119            'inF0' (in 2-component vector of float)
 0:120      Sequence
 0:120        move second child to first child (temp 2-component vector of float)
 0:120          'r022' (temp 2-component vector of float)
-0:120          dPdyFine (global 2-component vector of float)
+0:120          dPdyFine (temp 2-component vector of float)
 0:120            'inF0' (in 2-component vector of float)
 0:121      Sequence
 0:121        move second child to first child (temp 2-component vector of float)
 0:121          'r023' (temp 2-component vector of float)
-0:121          degrees (global 2-component vector of float)
+0:121          degrees (temp 2-component vector of float)
 0:121            'inF0' (in 2-component vector of float)
 0:125      Sequence
 0:125        move second child to first child (temp float)
 0:125          'r026' (temp float)
-0:125          distance (global float)
+0:125          distance (temp float)
 0:125            'inF0' (in 2-component vector of float)
 0:125            'inF1' (in 2-component vector of float)
 0:126      Sequence
 0:126        move second child to first child (temp float)
 0:126          'r027' (temp float)
-0:126          dot-product (global float)
+0:126          dot-product (temp float)
 0:126            'inF0' (in 2-component vector of float)
 0:126            'inF1' (in 2-component vector of float)
 0:130      Sequence
 0:130        move second child to first child (temp 2-component vector of float)
 0:130          'r028' (temp 2-component vector of float)
-0:130          exp (global 2-component vector of float)
+0:130          exp (temp 2-component vector of float)
 0:130            'inF0' (in 2-component vector of float)
 0:131      Sequence
 0:131        move second child to first child (temp 2-component vector of float)
 0:131          'r029' (temp 2-component vector of float)
-0:131          exp2 (global 2-component vector of float)
+0:131          exp2 (temp 2-component vector of float)
 0:131            'inF0' (in 2-component vector of float)
 0:132      Sequence
 0:132        move second child to first child (temp 2-component vector of float)
 0:132          'r030' (temp 2-component vector of float)
-0:132          face-forward (global 2-component vector of float)
+0:132          face-forward (temp 2-component vector of float)
 0:132            'inF0' (in 2-component vector of float)
 0:132            'inF1' (in 2-component vector of float)
 0:132            'inF2' (in 2-component vector of float)
 0:133      Sequence
 0:133        move second child to first child (temp 2-component vector of uint)
 0:133          'r031' (temp 2-component vector of uint)
-0:?           findMSB (global 2-component vector of uint)
+0:?           findMSB (temp 2-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               8 (const uint)
 0:134      Sequence
 0:134        move second child to first child (temp 2-component vector of uint)
 0:134          'r032' (temp 2-component vector of uint)
-0:?           findLSB (global 2-component vector of uint)
+0:?           findLSB (temp 2-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               8 (const uint)
 0:135      Sequence
 0:135        move second child to first child (temp 2-component vector of float)
 0:135          'r033' (temp 2-component vector of float)
-0:135          Floor (global 2-component vector of float)
+0:135          Floor (temp 2-component vector of float)
 0:135            'inF0' (in 2-component vector of float)
 0:137      Sequence
 0:137        move second child to first child (temp 2-component vector of float)
 0:137          'r035' (temp 2-component vector of float)
-0:137          mod (global 2-component vector of float)
+0:137          mod (temp 2-component vector of float)
 0:137            'inF0' (in 2-component vector of float)
 0:137            'inF1' (in 2-component vector of float)
 0:138      Sequence
 0:138        move second child to first child (temp 2-component vector of float)
 0:138          'r036' (temp 2-component vector of float)
-0:138          Fraction (global 2-component vector of float)
+0:138          Fraction (temp 2-component vector of float)
 0:138            'inF0' (in 2-component vector of float)
 0:139      Sequence
 0:139        move second child to first child (temp 2-component vector of float)
 0:139          'r037' (temp 2-component vector of float)
-0:139          frexp (global 2-component vector of float)
+0:139          frexp (temp 2-component vector of float)
 0:139            'inF0' (in 2-component vector of float)
 0:139            'inF1' (in 2-component vector of float)
 0:140      Sequence
 0:140        move second child to first child (temp 2-component vector of float)
 0:140          'r038' (temp 2-component vector of float)
-0:140          fwidth (global 2-component vector of float)
+0:140          fwidth (temp 2-component vector of float)
 0:140            'inF0' (in 2-component vector of float)
 0:141      Sequence
 0:141        move second child to first child (temp 2-component vector of bool)
 0:141          'r039' (temp 2-component vector of bool)
-0:141          isinf (global 2-component vector of bool)
+0:141          isinf (temp 2-component vector of bool)
 0:141            'inF0' (in 2-component vector of float)
 0:142      Sequence
 0:142        move second child to first child (temp 2-component vector of bool)
 0:142          'r040' (temp 2-component vector of bool)
-0:142          isnan (global 2-component vector of bool)
+0:142          isnan (temp 2-component vector of bool)
 0:142            'inF0' (in 2-component vector of float)
 0:143      Sequence
 0:143        move second child to first child (temp 2-component vector of float)
 0:143          'r041' (temp 2-component vector of float)
-0:143          ldexp (global 2-component vector of float)
+0:143          ldexp (temp 2-component vector of float)
 0:143            'inF0' (in 2-component vector of float)
 0:143            'inF1' (in 2-component vector of float)
 0:144      Sequence
 0:144        move second child to first child (temp 2-component vector of float)
 0:144          'r039a' (temp 2-component vector of float)
-0:144          mix (global 2-component vector of float)
+0:144          mix (temp 2-component vector of float)
 0:144            'inF0' (in 2-component vector of float)
 0:144            'inF1' (in 2-component vector of float)
 0:144            'inF2' (in 2-component vector of float)
 0:145      Sequence
 0:145        move second child to first child (temp float)
 0:145          'r042' (temp float)
-0:145          length (global float)
+0:145          length (temp float)
 0:145            'inF0' (in 2-component vector of float)
 0:146      Sequence
 0:146        move second child to first child (temp 2-component vector of float)
 0:146          'r043' (temp 2-component vector of float)
-0:146          log (global 2-component vector of float)
+0:146          log (temp 2-component vector of float)
 0:146            'inF0' (in 2-component vector of float)
 0:147      Sequence
 0:147        move second child to first child (temp 2-component vector of float)
@@ -3396,35 +3396,35 @@
 0:148      Sequence
 0:148        move second child to first child (temp 2-component vector of float)
 0:148          'r045' (temp 2-component vector of float)
-0:148          log2 (global 2-component vector of float)
+0:148          log2 (temp 2-component vector of float)
 0:148            'inF0' (in 2-component vector of float)
 0:149      Sequence
 0:149        move second child to first child (temp 2-component vector of float)
 0:149          'r046' (temp 2-component vector of float)
-0:149          max (global 2-component vector of float)
+0:149          max (temp 2-component vector of float)
 0:149            'inF0' (in 2-component vector of float)
 0:149            'inF1' (in 2-component vector of float)
 0:150      Sequence
 0:150        move second child to first child (temp 2-component vector of float)
 0:150          'r047' (temp 2-component vector of float)
-0:150          min (global 2-component vector of float)
+0:150          min (temp 2-component vector of float)
 0:150            'inF0' (in 2-component vector of float)
 0:150            'inF1' (in 2-component vector of float)
 0:151      Sequence
 0:151        move second child to first child (temp 2-component vector of float)
 0:151          'r048' (temp 2-component vector of float)
-0:151          normalize (global 2-component vector of float)
+0:151          normalize (temp 2-component vector of float)
 0:151            'inF0' (in 2-component vector of float)
 0:152      Sequence
 0:152        move second child to first child (temp 2-component vector of float)
 0:152          'r049' (temp 2-component vector of float)
-0:152          pow (global 2-component vector of float)
+0:152          pow (temp 2-component vector of float)
 0:152            'inF0' (in 2-component vector of float)
 0:152            'inF1' (in 2-component vector of float)
 0:153      Sequence
 0:153        move second child to first child (temp 2-component vector of float)
 0:153          'r050' (temp 2-component vector of float)
-0:153          radians (global 2-component vector of float)
+0:153          radians (temp 2-component vector of float)
 0:153            'inF0' (in 2-component vector of float)
 0:154      Sequence
 0:154        move second child to first child (temp 2-component vector of float)
@@ -3436,13 +3436,13 @@
 0:155      Sequence
 0:155        move second child to first child (temp 2-component vector of float)
 0:155          'r052' (temp 2-component vector of float)
-0:155          reflect (global 2-component vector of float)
+0:155          reflect (temp 2-component vector of float)
 0:155            'inF0' (in 2-component vector of float)
 0:155            'inF1' (in 2-component vector of float)
 0:156      Sequence
 0:156        move second child to first child (temp 2-component vector of float)
 0:156          'r053' (temp 2-component vector of float)
-0:156          refract (global 2-component vector of float)
+0:156          refract (temp 2-component vector of float)
 0:156            'inF0' (in 2-component vector of float)
 0:156            'inF1' (in 2-component vector of float)
 0:156            Constant:
@@ -3450,19 +3450,19 @@
 0:157      Sequence
 0:157        move second child to first child (temp 2-component vector of uint)
 0:157          'r054' (temp 2-component vector of uint)
-0:?           bitFieldReverse (global 2-component vector of uint)
+0:?           bitFieldReverse (temp 2-component vector of uint)
 0:?             Constant:
 0:?               1 (const uint)
 0:?               2 (const uint)
 0:158      Sequence
 0:158        move second child to first child (temp 2-component vector of float)
 0:158          'r055' (temp 2-component vector of float)
-0:158          roundEven (global 2-component vector of float)
+0:158          roundEven (temp 2-component vector of float)
 0:158            'inF0' (in 2-component vector of float)
 0:159      Sequence
 0:159        move second child to first child (temp 2-component vector of float)
 0:159          'r056' (temp 2-component vector of float)
-0:159          inverse sqrt (global 2-component vector of float)
+0:159          inverse sqrt (temp 2-component vector of float)
 0:159            'inF0' (in 2-component vector of float)
 0:160      Sequence
 0:160        move second child to first child (temp 2-component vector of float)
@@ -3476,12 +3476,12 @@
 0:161      Sequence
 0:161        move second child to first child (temp 2-component vector of float)
 0:161          'r058' (temp 2-component vector of float)
-0:161          Sign (global 2-component vector of float)
+0:161          Sign (temp 2-component vector of float)
 0:161            'inF0' (in 2-component vector of float)
 0:162      Sequence
 0:162        move second child to first child (temp 2-component vector of float)
 0:162          'r059' (temp 2-component vector of float)
-0:162          sine (global 2-component vector of float)
+0:162          sine (temp 2-component vector of float)
 0:162            'inF0' (in 2-component vector of float)
 0:163      Sequence
 0:163        move second child to first child (temp 2-component vector of float)
@@ -3495,40 +3495,40 @@
 0:164      Sequence
 0:164        move second child to first child (temp 2-component vector of float)
 0:164          'r060' (temp 2-component vector of float)
-0:164          hyp. sine (global 2-component vector of float)
+0:164          hyp. sine (temp 2-component vector of float)
 0:164            'inF0' (in 2-component vector of float)
 0:165      Sequence
 0:165        move second child to first child (temp 2-component vector of float)
 0:165          'r061' (temp 2-component vector of float)
-0:165          smoothstep (global 2-component vector of float)
+0:165          smoothstep (temp 2-component vector of float)
 0:165            'inF0' (in 2-component vector of float)
 0:165            'inF1' (in 2-component vector of float)
 0:165            'inF2' (in 2-component vector of float)
 0:166      Sequence
 0:166        move second child to first child (temp 2-component vector of float)
 0:166          'r062' (temp 2-component vector of float)
-0:166          sqrt (global 2-component vector of float)
+0:166          sqrt (temp 2-component vector of float)
 0:166            'inF0' (in 2-component vector of float)
 0:167      Sequence
 0:167        move second child to first child (temp 2-component vector of float)
 0:167          'r063' (temp 2-component vector of float)
-0:167          step (global 2-component vector of float)
+0:167          step (temp 2-component vector of float)
 0:167            'inF0' (in 2-component vector of float)
 0:167            'inF1' (in 2-component vector of float)
 0:168      Sequence
 0:168        move second child to first child (temp 2-component vector of float)
 0:168          'r064' (temp 2-component vector of float)
-0:168          tangent (global 2-component vector of float)
+0:168          tangent (temp 2-component vector of float)
 0:168            'inF0' (in 2-component vector of float)
 0:169      Sequence
 0:169        move second child to first child (temp 2-component vector of float)
 0:169          'r065' (temp 2-component vector of float)
-0:169          hyp. tangent (global 2-component vector of float)
+0:169          hyp. tangent (temp 2-component vector of float)
 0:169            'inF0' (in 2-component vector of float)
 0:171      Sequence
 0:171        move second child to first child (temp 2-component vector of float)
 0:171          'r066' (temp 2-component vector of float)
-0:171          trunc (global 2-component vector of float)
+0:171          trunc (temp 2-component vector of float)
 0:171            'inF0' (in 2-component vector of float)
 0:174      Branch: Return with expression
 0:?         Constant:
@@ -3545,63 +3545,63 @@
 0:181      Sequence
 0:181        move second child to first child (temp bool)
 0:181          'r000' (temp bool)
-0:181          all (global bool)
+0:181          all (temp bool)
 0:181            'inF0' (in 3-component vector of float)
 0:182      Sequence
 0:182        move second child to first child (temp 3-component vector of float)
 0:182          'r001' (temp 3-component vector of float)
-0:182          Absolute value (global 3-component vector of float)
+0:182          Absolute value (temp 3-component vector of float)
 0:182            'inF0' (in 3-component vector of float)
 0:183      Sequence
 0:183        move second child to first child (temp 3-component vector of float)
 0:183          'r002' (temp 3-component vector of float)
-0:183          arc cosine (global 3-component vector of float)
+0:183          arc cosine (temp 3-component vector of float)
 0:183            'inF0' (in 3-component vector of float)
 0:184      Sequence
 0:184        move second child to first child (temp bool)
 0:184          'r003' (temp bool)
-0:184          any (global bool)
+0:184          any (temp bool)
 0:184            'inF0' (in 3-component vector of float)
 0:185      Sequence
 0:185        move second child to first child (temp 3-component vector of float)
 0:185          'r004' (temp 3-component vector of float)
-0:185          arc sine (global 3-component vector of float)
+0:185          arc sine (temp 3-component vector of float)
 0:185            'inF0' (in 3-component vector of float)
 0:186      Sequence
 0:186        move second child to first child (temp 3-component vector of int)
 0:186          'r005' (temp 3-component vector of int)
-0:186          floatBitsToInt (global 3-component vector of int)
+0:186          floatBitsToInt (temp 3-component vector of int)
 0:186            'inF0' (in 3-component vector of float)
 0:187      Sequence
 0:187        move second child to first child (temp 3-component vector of uint)
 0:187          'r006' (temp 3-component vector of uint)
-0:187          floatBitsToUint (global 3-component vector of uint)
+0:187          floatBitsToUint (temp 3-component vector of uint)
 0:187            'inF0' (in 3-component vector of float)
 0:188      Sequence
 0:188        move second child to first child (temp 3-component vector of float)
 0:188          'r007' (temp 3-component vector of float)
-0:188          intBitsToFloat (global 3-component vector of float)
+0:188          intBitsToFloat (temp 3-component vector of float)
 0:188            'inU0' (in 3-component vector of uint)
 0:190      Sequence
 0:190        move second child to first child (temp 3-component vector of float)
 0:190          'r009' (temp 3-component vector of float)
-0:190          arc tangent (global 3-component vector of float)
+0:190          arc tangent (temp 3-component vector of float)
 0:190            'inF0' (in 3-component vector of float)
 0:191      Sequence
 0:191        move second child to first child (temp 3-component vector of float)
 0:191          'r010' (temp 3-component vector of float)
-0:191          arc tangent (global 3-component vector of float)
+0:191          arc tangent (temp 3-component vector of float)
 0:191            'inF0' (in 3-component vector of float)
 0:191            'inF1' (in 3-component vector of float)
 0:192      Sequence
 0:192        move second child to first child (temp 3-component vector of float)
 0:192          'r011' (temp 3-component vector of float)
-0:192          Ceiling (global 3-component vector of float)
+0:192          Ceiling (temp 3-component vector of float)
 0:192            'inF0' (in 3-component vector of float)
 0:193      Sequence
 0:193        move second child to first child (temp 3-component vector of float)
 0:193          'r012' (temp 3-component vector of float)
-0:193          clamp (global 3-component vector of float)
+0:193          clamp (temp 3-component vector of float)
 0:193            'inF0' (in 3-component vector of float)
 0:193            'inF1' (in 3-component vector of float)
 0:193            'inF2' (in 3-component vector of float)
@@ -3619,17 +3619,17 @@
 0:195      Sequence
 0:195        move second child to first child (temp 3-component vector of float)
 0:195          'r013' (temp 3-component vector of float)
-0:195          cosine (global 3-component vector of float)
+0:195          cosine (temp 3-component vector of float)
 0:195            'inF0' (in 3-component vector of float)
 0:196      Sequence
 0:196        move second child to first child (temp 3-component vector of float)
 0:196          'r014' (temp 3-component vector of float)
-0:196          hyp. cosine (global 3-component vector of float)
+0:196          hyp. cosine (temp 3-component vector of float)
 0:196            'inF0' (in 3-component vector of float)
 0:197      Sequence
 0:197        move second child to first child (temp 3-component vector of uint)
 0:197          'r015' (temp 3-component vector of uint)
-0:?           bitCount (global 3-component vector of uint)
+0:?           bitCount (temp 3-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               3 (const uint)
@@ -3637,77 +3637,77 @@
 0:198      Sequence
 0:198        move second child to first child (temp 3-component vector of float)
 0:198          'r016' (temp 3-component vector of float)
-0:198          cross-product (global 3-component vector of float)
+0:198          cross-product (temp 3-component vector of float)
 0:198            'inF0' (in 3-component vector of float)
 0:198            'inF1' (in 3-component vector of float)
 0:199      Sequence
 0:199        move second child to first child (temp 3-component vector of float)
 0:199          'r017' (temp 3-component vector of float)
-0:199          dPdx (global 3-component vector of float)
+0:199          dPdx (temp 3-component vector of float)
 0:199            'inF0' (in 3-component vector of float)
 0:200      Sequence
 0:200        move second child to first child (temp 3-component vector of float)
 0:200          'r018' (temp 3-component vector of float)
-0:200          dPdxCoarse (global 3-component vector of float)
+0:200          dPdxCoarse (temp 3-component vector of float)
 0:200            'inF0' (in 3-component vector of float)
 0:201      Sequence
 0:201        move second child to first child (temp 3-component vector of float)
 0:201          'r019' (temp 3-component vector of float)
-0:201          dPdxFine (global 3-component vector of float)
+0:201          dPdxFine (temp 3-component vector of float)
 0:201            'inF0' (in 3-component vector of float)
 0:202      Sequence
 0:202        move second child to first child (temp 3-component vector of float)
 0:202          'r020' (temp 3-component vector of float)
-0:202          dPdy (global 3-component vector of float)
+0:202          dPdy (temp 3-component vector of float)
 0:202            'inF0' (in 3-component vector of float)
 0:203      Sequence
 0:203        move second child to first child (temp 3-component vector of float)
 0:203          'r021' (temp 3-component vector of float)
-0:203          dPdyCoarse (global 3-component vector of float)
+0:203          dPdyCoarse (temp 3-component vector of float)
 0:203            'inF0' (in 3-component vector of float)
 0:204      Sequence
 0:204        move second child to first child (temp 3-component vector of float)
 0:204          'r022' (temp 3-component vector of float)
-0:204          dPdyFine (global 3-component vector of float)
+0:204          dPdyFine (temp 3-component vector of float)
 0:204            'inF0' (in 3-component vector of float)
 0:205      Sequence
 0:205        move second child to first child (temp 3-component vector of float)
 0:205          'r023' (temp 3-component vector of float)
-0:205          degrees (global 3-component vector of float)
+0:205          degrees (temp 3-component vector of float)
 0:205            'inF0' (in 3-component vector of float)
 0:206      Sequence
 0:206        move second child to first child (temp float)
 0:206          'r024' (temp float)
-0:206          distance (global float)
+0:206          distance (temp float)
 0:206            'inF0' (in 3-component vector of float)
 0:206            'inF1' (in 3-component vector of float)
 0:207      Sequence
 0:207        move second child to first child (temp float)
 0:207          'r025' (temp float)
-0:207          dot-product (global float)
+0:207          dot-product (temp float)
 0:207            'inF0' (in 3-component vector of float)
 0:207            'inF1' (in 3-component vector of float)
 0:211      Sequence
 0:211        move second child to first child (temp 3-component vector of float)
 0:211          'r029' (temp 3-component vector of float)
-0:211          exp (global 3-component vector of float)
+0:211          exp (temp 3-component vector of float)
 0:211            'inF0' (in 3-component vector of float)
 0:212      Sequence
 0:212        move second child to first child (temp 3-component vector of float)
 0:212          'r030' (temp 3-component vector of float)
-0:212          exp2 (global 3-component vector of float)
+0:212          exp2 (temp 3-component vector of float)
 0:212            'inF0' (in 3-component vector of float)
 0:213      Sequence
 0:213        move second child to first child (temp 3-component vector of float)
 0:213          'r031' (temp 3-component vector of float)
-0:213          face-forward (global 3-component vector of float)
+0:213          face-forward (temp 3-component vector of float)
 0:213            'inF0' (in 3-component vector of float)
 0:213            'inF1' (in 3-component vector of float)
 0:213            'inF2' (in 3-component vector of float)
 0:214      Sequence
 0:214        move second child to first child (temp 3-component vector of uint)
 0:214          'r032' (temp 3-component vector of uint)
-0:?           findMSB (global 3-component vector of uint)
+0:?           findMSB (temp 3-component vector of uint)
 0:?             Constant:
 0:?               2 (const uint)
 0:?               3 (const uint)
@@ -3715,7 +3715,7 @@
 0:215      Sequence
 0:215        move second child to first child (temp 3-component vector of uint)
 0:215          'r033' (temp 3-component vector of uint)
-0:?           findLSB (global 3-component vector of uint)
+0:?           findLSB (temp 3-component vector of uint)
 0:?             Constant:
 0:?               2 (const uint)
 0:?               3 (const uint)
@@ -3723,57 +3723,57 @@
 0:216      Sequence
 0:216        move second child to first child (temp 3-component vector of float)
 0:216          'r034' (temp 3-component vector of float)
-0:216          Floor (global 3-component vector of float)
+0:216          Floor (temp 3-component vector of float)
 0:216            'inF0' (in 3-component vector of float)
 0:218      Sequence
 0:218        move second child to first child (temp 3-component vector of float)
 0:218          'r036' (temp 3-component vector of float)
-0:218          mod (global 3-component vector of float)
+0:218          mod (temp 3-component vector of float)
 0:218            'inF0' (in 3-component vector of float)
 0:218            'inF1' (in 3-component vector of float)
 0:219      Sequence
 0:219        move second child to first child (temp 3-component vector of float)
 0:219          'r037' (temp 3-component vector of float)
-0:219          Fraction (global 3-component vector of float)
+0:219          Fraction (temp 3-component vector of float)
 0:219            'inF0' (in 3-component vector of float)
 0:220      Sequence
 0:220        move second child to first child (temp 3-component vector of float)
 0:220          'r038' (temp 3-component vector of float)
-0:220          frexp (global 3-component vector of float)
+0:220          frexp (temp 3-component vector of float)
 0:220            'inF0' (in 3-component vector of float)
 0:220            'inF1' (in 3-component vector of float)
 0:221      Sequence
 0:221        move second child to first child (temp 3-component vector of float)
 0:221          'r039' (temp 3-component vector of float)
-0:221          fwidth (global 3-component vector of float)
+0:221          fwidth (temp 3-component vector of float)
 0:221            'inF0' (in 3-component vector of float)
 0:222      Sequence
 0:222        move second child to first child (temp 3-component vector of bool)
 0:222          'r040' (temp 3-component vector of bool)
-0:222          isinf (global 3-component vector of bool)
+0:222          isinf (temp 3-component vector of bool)
 0:222            'inF0' (in 3-component vector of float)
 0:223      Sequence
 0:223        move second child to first child (temp 3-component vector of bool)
 0:223          'r041' (temp 3-component vector of bool)
-0:223          isnan (global 3-component vector of bool)
+0:223          isnan (temp 3-component vector of bool)
 0:223            'inF0' (in 3-component vector of float)
 0:224      Sequence
 0:224        move second child to first child (temp 3-component vector of float)
 0:224          'r042' (temp 3-component vector of float)
-0:224          ldexp (global 3-component vector of float)
+0:224          ldexp (temp 3-component vector of float)
 0:224            'inF0' (in 3-component vector of float)
 0:224            'inF1' (in 3-component vector of float)
 0:225      Sequence
 0:225        move second child to first child (temp 3-component vector of float)
 0:225          'r039a' (temp 3-component vector of float)
-0:225          mix (global 3-component vector of float)
+0:225          mix (temp 3-component vector of float)
 0:225            'inF0' (in 3-component vector of float)
 0:225            'inF1' (in 3-component vector of float)
 0:225            'inF2' (in 3-component vector of float)
 0:226      Sequence
 0:226        move second child to first child (temp 3-component vector of float)
 0:226          'r039b' (temp 3-component vector of float)
-0:226          mix (global 3-component vector of float)
+0:226          mix (temp 3-component vector of float)
 0:226            'inF0' (in 3-component vector of float)
 0:226            'inF1' (in 3-component vector of float)
 0:226            Constant:
@@ -3781,12 +3781,12 @@
 0:227      Sequence
 0:227        move second child to first child (temp float)
 0:227          'r043' (temp float)
-0:227          length (global float)
+0:227          length (temp float)
 0:227            'inF0' (in 3-component vector of float)
 0:228      Sequence
 0:228        move second child to first child (temp 3-component vector of float)
 0:228          'r044' (temp 3-component vector of float)
-0:228          log (global 3-component vector of float)
+0:228          log (temp 3-component vector of float)
 0:228            'inF0' (in 3-component vector of float)
 0:229      Sequence
 0:229        move second child to first child (temp 3-component vector of float)
@@ -3799,35 +3799,35 @@
 0:230      Sequence
 0:230        move second child to first child (temp 3-component vector of float)
 0:230          'r046' (temp 3-component vector of float)
-0:230          log2 (global 3-component vector of float)
+0:230          log2 (temp 3-component vector of float)
 0:230            'inF0' (in 3-component vector of float)
 0:231      Sequence
 0:231        move second child to first child (temp 3-component vector of float)
 0:231          'r047' (temp 3-component vector of float)
-0:231          max (global 3-component vector of float)
+0:231          max (temp 3-component vector of float)
 0:231            'inF0' (in 3-component vector of float)
 0:231            'inF1' (in 3-component vector of float)
 0:232      Sequence
 0:232        move second child to first child (temp 3-component vector of float)
 0:232          'r048' (temp 3-component vector of float)
-0:232          min (global 3-component vector of float)
+0:232          min (temp 3-component vector of float)
 0:232            'inF0' (in 3-component vector of float)
 0:232            'inF1' (in 3-component vector of float)
 0:233      Sequence
 0:233        move second child to first child (temp 3-component vector of float)
 0:233          'r049' (temp 3-component vector of float)
-0:233          normalize (global 3-component vector of float)
+0:233          normalize (temp 3-component vector of float)
 0:233            'inF0' (in 3-component vector of float)
 0:234      Sequence
 0:234        move second child to first child (temp 3-component vector of float)
 0:234          'r050' (temp 3-component vector of float)
-0:234          pow (global 3-component vector of float)
+0:234          pow (temp 3-component vector of float)
 0:234            'inF0' (in 3-component vector of float)
 0:234            'inF1' (in 3-component vector of float)
 0:235      Sequence
 0:235        move second child to first child (temp 3-component vector of float)
 0:235          'r051' (temp 3-component vector of float)
-0:235          radians (global 3-component vector of float)
+0:235          radians (temp 3-component vector of float)
 0:235            'inF0' (in 3-component vector of float)
 0:236      Sequence
 0:236        move second child to first child (temp 3-component vector of float)
@@ -3839,13 +3839,13 @@
 0:237      Sequence
 0:237        move second child to first child (temp 3-component vector of float)
 0:237          'r053' (temp 3-component vector of float)
-0:237          reflect (global 3-component vector of float)
+0:237          reflect (temp 3-component vector of float)
 0:237            'inF0' (in 3-component vector of float)
 0:237            'inF1' (in 3-component vector of float)
 0:238      Sequence
 0:238        move second child to first child (temp 3-component vector of float)
 0:238          'r054' (temp 3-component vector of float)
-0:238          refract (global 3-component vector of float)
+0:238          refract (temp 3-component vector of float)
 0:238            'inF0' (in 3-component vector of float)
 0:238            'inF1' (in 3-component vector of float)
 0:238            Constant:
@@ -3853,7 +3853,7 @@
 0:239      Sequence
 0:239        move second child to first child (temp 3-component vector of uint)
 0:239          'r055' (temp 3-component vector of uint)
-0:?           bitFieldReverse (global 3-component vector of uint)
+0:?           bitFieldReverse (temp 3-component vector of uint)
 0:?             Constant:
 0:?               1 (const uint)
 0:?               2 (const uint)
@@ -3861,12 +3861,12 @@
 0:240      Sequence
 0:240        move second child to first child (temp 3-component vector of float)
 0:240          'r056' (temp 3-component vector of float)
-0:240          roundEven (global 3-component vector of float)
+0:240          roundEven (temp 3-component vector of float)
 0:240            'inF0' (in 3-component vector of float)
 0:241      Sequence
 0:241        move second child to first child (temp 3-component vector of float)
 0:241          'r057' (temp 3-component vector of float)
-0:241          inverse sqrt (global 3-component vector of float)
+0:241          inverse sqrt (temp 3-component vector of float)
 0:241            'inF0' (in 3-component vector of float)
 0:242      Sequence
 0:242        move second child to first child (temp 3-component vector of float)
@@ -3880,12 +3880,12 @@
 0:243      Sequence
 0:243        move second child to first child (temp 3-component vector of float)
 0:243          'r059' (temp 3-component vector of float)
-0:243          Sign (global 3-component vector of float)
+0:243          Sign (temp 3-component vector of float)
 0:243            'inF0' (in 3-component vector of float)
 0:244      Sequence
 0:244        move second child to first child (temp 3-component vector of float)
 0:244          'r060' (temp 3-component vector of float)
-0:244          sine (global 3-component vector of float)
+0:244          sine (temp 3-component vector of float)
 0:244            'inF0' (in 3-component vector of float)
 0:245      Sequence
 0:245        move second child to first child (temp 3-component vector of float)
@@ -3899,40 +3899,40 @@
 0:246      Sequence
 0:246        move second child to first child (temp 3-component vector of float)
 0:246          'r061' (temp 3-component vector of float)
-0:246          hyp. sine (global 3-component vector of float)
+0:246          hyp. sine (temp 3-component vector of float)
 0:246            'inF0' (in 3-component vector of float)
 0:247      Sequence
 0:247        move second child to first child (temp 3-component vector of float)
 0:247          'r062' (temp 3-component vector of float)
-0:247          smoothstep (global 3-component vector of float)
+0:247          smoothstep (temp 3-component vector of float)
 0:247            'inF0' (in 3-component vector of float)
 0:247            'inF1' (in 3-component vector of float)
 0:247            'inF2' (in 3-component vector of float)
 0:248      Sequence
 0:248        move second child to first child (temp 3-component vector of float)
 0:248          'r063' (temp 3-component vector of float)
-0:248          sqrt (global 3-component vector of float)
+0:248          sqrt (temp 3-component vector of float)
 0:248            'inF0' (in 3-component vector of float)
 0:249      Sequence
 0:249        move second child to first child (temp 3-component vector of float)
 0:249          'r064' (temp 3-component vector of float)
-0:249          step (global 3-component vector of float)
+0:249          step (temp 3-component vector of float)
 0:249            'inF0' (in 3-component vector of float)
 0:249            'inF1' (in 3-component vector of float)
 0:250      Sequence
 0:250        move second child to first child (temp 3-component vector of float)
 0:250          'r065' (temp 3-component vector of float)
-0:250          tangent (global 3-component vector of float)
+0:250          tangent (temp 3-component vector of float)
 0:250            'inF0' (in 3-component vector of float)
 0:251      Sequence
 0:251        move second child to first child (temp 3-component vector of float)
 0:251          'r066' (temp 3-component vector of float)
-0:251          hyp. tangent (global 3-component vector of float)
+0:251          hyp. tangent (temp 3-component vector of float)
 0:251            'inF0' (in 3-component vector of float)
 0:253      Sequence
 0:253        move second child to first child (temp 3-component vector of float)
 0:253          'r067' (temp 3-component vector of float)
-0:253          trunc (global 3-component vector of float)
+0:253          trunc (temp 3-component vector of float)
 0:253            'inF0' (in 3-component vector of float)
 0:256      Branch: Return with expression
 0:?         Constant:
@@ -3950,63 +3950,63 @@
 0:263      Sequence
 0:263        move second child to first child (temp bool)
 0:263          'r000' (temp bool)
-0:263          all (global bool)
+0:263          all (temp bool)
 0:263            'inF0' (in 4-component vector of float)
 0:264      Sequence
 0:264        move second child to first child (temp 4-component vector of float)
 0:264          'r001' (temp 4-component vector of float)
-0:264          Absolute value (global 4-component vector of float)
+0:264          Absolute value (temp 4-component vector of float)
 0:264            'inF0' (in 4-component vector of float)
 0:265      Sequence
 0:265        move second child to first child (temp 4-component vector of float)
 0:265          'r002' (temp 4-component vector of float)
-0:265          arc cosine (global 4-component vector of float)
+0:265          arc cosine (temp 4-component vector of float)
 0:265            'inF0' (in 4-component vector of float)
 0:266      Sequence
 0:266        move second child to first child (temp bool)
 0:266          'r003' (temp bool)
-0:266          any (global bool)
+0:266          any (temp bool)
 0:266            'inF0' (in 4-component vector of float)
 0:267      Sequence
 0:267        move second child to first child (temp 4-component vector of float)
 0:267          'r004' (temp 4-component vector of float)
-0:267          arc sine (global 4-component vector of float)
+0:267          arc sine (temp 4-component vector of float)
 0:267            'inF0' (in 4-component vector of float)
 0:268      Sequence
 0:268        move second child to first child (temp 4-component vector of int)
 0:268          'r005' (temp 4-component vector of int)
-0:268          floatBitsToInt (global 4-component vector of int)
+0:268          floatBitsToInt (temp 4-component vector of int)
 0:268            'inF0' (in 4-component vector of float)
 0:269      Sequence
 0:269        move second child to first child (temp 4-component vector of uint)
 0:269          'r006' (temp 4-component vector of uint)
-0:269          floatBitsToUint (global 4-component vector of uint)
+0:269          floatBitsToUint (temp 4-component vector of uint)
 0:269            'inF0' (in 4-component vector of float)
 0:270      Sequence
 0:270        move second child to first child (temp 4-component vector of float)
 0:270          'r007' (temp 4-component vector of float)
-0:270          intBitsToFloat (global 4-component vector of float)
+0:270          intBitsToFloat (temp 4-component vector of float)
 0:270            'inU0' (in 4-component vector of uint)
 0:272      Sequence
 0:272        move second child to first child (temp 4-component vector of float)
 0:272          'r009' (temp 4-component vector of float)
-0:272          arc tangent (global 4-component vector of float)
+0:272          arc tangent (temp 4-component vector of float)
 0:272            'inF0' (in 4-component vector of float)
 0:273      Sequence
 0:273        move second child to first child (temp 4-component vector of float)
 0:273          'r010' (temp 4-component vector of float)
-0:273          arc tangent (global 4-component vector of float)
+0:273          arc tangent (temp 4-component vector of float)
 0:273            'inF0' (in 4-component vector of float)
 0:273            'inF1' (in 4-component vector of float)
 0:274      Sequence
 0:274        move second child to first child (temp 4-component vector of float)
 0:274          'r011' (temp 4-component vector of float)
-0:274          Ceiling (global 4-component vector of float)
+0:274          Ceiling (temp 4-component vector of float)
 0:274            'inF0' (in 4-component vector of float)
 0:275      Sequence
 0:275        move second child to first child (temp 4-component vector of float)
 0:275          'r012' (temp 4-component vector of float)
-0:275          clamp (global 4-component vector of float)
+0:275          clamp (temp 4-component vector of float)
 0:275            'inF0' (in 4-component vector of float)
 0:275            'inF1' (in 4-component vector of float)
 0:275            'inF2' (in 4-component vector of float)
@@ -4025,17 +4025,17 @@
 0:277      Sequence
 0:277        move second child to first child (temp 4-component vector of float)
 0:277          'r013' (temp 4-component vector of float)
-0:277          cosine (global 4-component vector of float)
+0:277          cosine (temp 4-component vector of float)
 0:277            'inF0' (in 4-component vector of float)
 0:278      Sequence
 0:278        move second child to first child (temp 4-component vector of float)
 0:278          'r014' (temp 4-component vector of float)
-0:278          hyp. cosine (global 4-component vector of float)
+0:278          hyp. cosine (temp 4-component vector of float)
 0:278            'inF0' (in 4-component vector of float)
 0:279      Sequence
 0:279        move second child to first child (temp 4-component vector of uint)
 0:279          'r015' (temp 4-component vector of uint)
-0:?           bitCount (global 4-component vector of uint)
+0:?           bitCount (temp 4-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               3 (const uint)
@@ -4044,48 +4044,48 @@
 0:280      Sequence
 0:280        move second child to first child (temp 4-component vector of float)
 0:280          'r016' (temp 4-component vector of float)
-0:280          dPdx (global 4-component vector of float)
+0:280          dPdx (temp 4-component vector of float)
 0:280            'inF0' (in 4-component vector of float)
 0:281      Sequence
 0:281        move second child to first child (temp 4-component vector of float)
 0:281          'r017' (temp 4-component vector of float)
-0:281          dPdxCoarse (global 4-component vector of float)
+0:281          dPdxCoarse (temp 4-component vector of float)
 0:281            'inF0' (in 4-component vector of float)
 0:282      Sequence
 0:282        move second child to first child (temp 4-component vector of float)
 0:282          'r018' (temp 4-component vector of float)
-0:282          dPdxFine (global 4-component vector of float)
+0:282          dPdxFine (temp 4-component vector of float)
 0:282            'inF0' (in 4-component vector of float)
 0:283      Sequence
 0:283        move second child to first child (temp 4-component vector of float)
 0:283          'r019' (temp 4-component vector of float)
-0:283          dPdy (global 4-component vector of float)
+0:283          dPdy (temp 4-component vector of float)
 0:283            'inF0' (in 4-component vector of float)
 0:284      Sequence
 0:284        move second child to first child (temp 4-component vector of float)
 0:284          'r020' (temp 4-component vector of float)
-0:284          dPdyCoarse (global 4-component vector of float)
+0:284          dPdyCoarse (temp 4-component vector of float)
 0:284            'inF0' (in 4-component vector of float)
 0:285      Sequence
 0:285        move second child to first child (temp 4-component vector of float)
 0:285          'r021' (temp 4-component vector of float)
-0:285          dPdyFine (global 4-component vector of float)
+0:285          dPdyFine (temp 4-component vector of float)
 0:285            'inF0' (in 4-component vector of float)
 0:286      Sequence
 0:286        move second child to first child (temp 4-component vector of float)
 0:286          'r022' (temp 4-component vector of float)
-0:286          degrees (global 4-component vector of float)
+0:286          degrees (temp 4-component vector of float)
 0:286            'inF0' (in 4-component vector of float)
 0:287      Sequence
 0:287        move second child to first child (temp float)
 0:287          'r023' (temp float)
-0:287          distance (global float)
+0:287          distance (temp float)
 0:287            'inF0' (in 4-component vector of float)
 0:287            'inF1' (in 4-component vector of float)
 0:288      Sequence
 0:288        move second child to first child (temp float)
 0:288          'r024' (temp float)
-0:288          dot-product (global float)
+0:288          dot-product (temp float)
 0:288            'inF0' (in 4-component vector of float)
 0:288            'inF1' (in 4-component vector of float)
 0:289      Sequence
@@ -4114,24 +4114,24 @@
 0:293      Sequence
 0:293        move second child to first child (temp 4-component vector of float)
 0:293          'r029' (temp 4-component vector of float)
-0:293          exp (global 4-component vector of float)
+0:293          exp (temp 4-component vector of float)
 0:293            'inF0' (in 4-component vector of float)
 0:294      Sequence
 0:294        move second child to first child (temp 4-component vector of float)
 0:294          'r030' (temp 4-component vector of float)
-0:294          exp2 (global 4-component vector of float)
+0:294          exp2 (temp 4-component vector of float)
 0:294            'inF0' (in 4-component vector of float)
 0:295      Sequence
 0:295        move second child to first child (temp 4-component vector of float)
 0:295          'r031' (temp 4-component vector of float)
-0:295          face-forward (global 4-component vector of float)
+0:295          face-forward (temp 4-component vector of float)
 0:295            'inF0' (in 4-component vector of float)
 0:295            'inF1' (in 4-component vector of float)
 0:295            'inF2' (in 4-component vector of float)
 0:296      Sequence
 0:296        move second child to first child (temp 4-component vector of uint)
 0:296          'r032' (temp 4-component vector of uint)
-0:?           findMSB (global 4-component vector of uint)
+0:?           findMSB (temp 4-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               8 (const uint)
@@ -4140,7 +4140,7 @@
 0:297      Sequence
 0:297        move second child to first child (temp 4-component vector of uint)
 0:297          'r033' (temp 4-component vector of uint)
-0:?           findLSB (global 4-component vector of uint)
+0:?           findLSB (temp 4-component vector of uint)
 0:?             Constant:
 0:?               7 (const uint)
 0:?               8 (const uint)
@@ -4149,62 +4149,62 @@
 0:298      Sequence
 0:298        move second child to first child (temp 4-component vector of float)
 0:298          'r034' (temp 4-component vector of float)
-0:298          Floor (global 4-component vector of float)
+0:298          Floor (temp 4-component vector of float)
 0:298            'inF0' (in 4-component vector of float)
 0:300      Sequence
 0:300        move second child to first child (temp 4-component vector of float)
 0:300          'r036' (temp 4-component vector of float)
-0:300          mod (global 4-component vector of float)
+0:300          mod (temp 4-component vector of float)
 0:300            'inF0' (in 4-component vector of float)
 0:300            'inF1' (in 4-component vector of float)
 0:301      Sequence
 0:301        move second child to first child (temp 4-component vector of float)
 0:301          'r037' (temp 4-component vector of float)
-0:301          Fraction (global 4-component vector of float)
+0:301          Fraction (temp 4-component vector of float)
 0:301            'inF0' (in 4-component vector of float)
 0:302      Sequence
 0:302        move second child to first child (temp 4-component vector of float)
 0:302          'r038' (temp 4-component vector of float)
-0:302          frexp (global 4-component vector of float)
+0:302          frexp (temp 4-component vector of float)
 0:302            'inF0' (in 4-component vector of float)
 0:302            'inF1' (in 4-component vector of float)
 0:303      Sequence
 0:303        move second child to first child (temp 4-component vector of float)
 0:303          'r039' (temp 4-component vector of float)
-0:303          fwidth (global 4-component vector of float)
+0:303          fwidth (temp 4-component vector of float)
 0:303            'inF0' (in 4-component vector of float)
 0:304      Sequence
 0:304        move second child to first child (temp 4-component vector of bool)
 0:304          'r040' (temp 4-component vector of bool)
-0:304          isinf (global 4-component vector of bool)
+0:304          isinf (temp 4-component vector of bool)
 0:304            'inF0' (in 4-component vector of float)
 0:305      Sequence
 0:305        move second child to first child (temp 4-component vector of bool)
 0:305          'r041' (temp 4-component vector of bool)
-0:305          isnan (global 4-component vector of bool)
+0:305          isnan (temp 4-component vector of bool)
 0:305            'inF0' (in 4-component vector of float)
 0:306      Sequence
 0:306        move second child to first child (temp 4-component vector of float)
 0:306          'r042' (temp 4-component vector of float)
-0:306          ldexp (global 4-component vector of float)
+0:306          ldexp (temp 4-component vector of float)
 0:306            'inF0' (in 4-component vector of float)
 0:306            'inF1' (in 4-component vector of float)
 0:307      Sequence
 0:307        move second child to first child (temp 4-component vector of float)
 0:307          'r039a' (temp 4-component vector of float)
-0:307          mix (global 4-component vector of float)
+0:307          mix (temp 4-component vector of float)
 0:307            'inF0' (in 4-component vector of float)
 0:307            'inF1' (in 4-component vector of float)
 0:307            'inF2' (in 4-component vector of float)
 0:308      Sequence
 0:308        move second child to first child (temp float)
 0:308          'r043' (temp float)
-0:308          length (global float)
+0:308          length (temp float)
 0:308            'inF0' (in 4-component vector of float)
 0:309      Sequence
 0:309        move second child to first child (temp 4-component vector of float)
 0:309          'r044' (temp 4-component vector of float)
-0:309          log (global 4-component vector of float)
+0:309          log (temp 4-component vector of float)
 0:309            'inF0' (in 4-component vector of float)
 0:310      Sequence
 0:310        move second child to first child (temp 4-component vector of float)
@@ -4217,35 +4217,35 @@
 0:311      Sequence
 0:311        move second child to first child (temp 4-component vector of float)
 0:311          'r046' (temp 4-component vector of float)
-0:311          log2 (global 4-component vector of float)
+0:311          log2 (temp 4-component vector of float)
 0:311            'inF0' (in 4-component vector of float)
 0:312      Sequence
 0:312        move second child to first child (temp 4-component vector of float)
 0:312          'r047' (temp 4-component vector of float)
-0:312          max (global 4-component vector of float)
+0:312          max (temp 4-component vector of float)
 0:312            'inF0' (in 4-component vector of float)
 0:312            'inF1' (in 4-component vector of float)
 0:313      Sequence
 0:313        move second child to first child (temp 4-component vector of float)
 0:313          'r048' (temp 4-component vector of float)
-0:313          min (global 4-component vector of float)
+0:313          min (temp 4-component vector of float)
 0:313            'inF0' (in 4-component vector of float)
 0:313            'inF1' (in 4-component vector of float)
 0:314      Sequence
 0:314        move second child to first child (temp 4-component vector of float)
 0:314          'r049' (temp 4-component vector of float)
-0:314          normalize (global 4-component vector of float)
+0:314          normalize (temp 4-component vector of float)
 0:314            'inF0' (in 4-component vector of float)
 0:315      Sequence
 0:315        move second child to first child (temp 4-component vector of float)
 0:315          'r050' (temp 4-component vector of float)
-0:315          pow (global 4-component vector of float)
+0:315          pow (temp 4-component vector of float)
 0:315            'inF0' (in 4-component vector of float)
 0:315            'inF1' (in 4-component vector of float)
 0:316      Sequence
 0:316        move second child to first child (temp 4-component vector of float)
 0:316          'r051' (temp 4-component vector of float)
-0:316          radians (global 4-component vector of float)
+0:316          radians (temp 4-component vector of float)
 0:316            'inF0' (in 4-component vector of float)
 0:317      Sequence
 0:317        move second child to first child (temp 4-component vector of float)
@@ -4257,13 +4257,13 @@
 0:318      Sequence
 0:318        move second child to first child (temp 4-component vector of float)
 0:318          'r053' (temp 4-component vector of float)
-0:318          reflect (global 4-component vector of float)
+0:318          reflect (temp 4-component vector of float)
 0:318            'inF0' (in 4-component vector of float)
 0:318            'inF1' (in 4-component vector of float)
 0:319      Sequence
 0:319        move second child to first child (temp 4-component vector of float)
 0:319          'r054' (temp 4-component vector of float)
-0:319          refract (global 4-component vector of float)
+0:319          refract (temp 4-component vector of float)
 0:319            'inF0' (in 4-component vector of float)
 0:319            'inF1' (in 4-component vector of float)
 0:319            Constant:
@@ -4271,7 +4271,7 @@
 0:320      Sequence
 0:320        move second child to first child (temp 4-component vector of uint)
 0:320          'r055' (temp 4-component vector of uint)
-0:?           bitFieldReverse (global 4-component vector of uint)
+0:?           bitFieldReverse (temp 4-component vector of uint)
 0:?             Constant:
 0:?               1 (const uint)
 0:?               2 (const uint)
@@ -4280,12 +4280,12 @@
 0:321      Sequence
 0:321        move second child to first child (temp 4-component vector of float)
 0:321          'r056' (temp 4-component vector of float)
-0:321          roundEven (global 4-component vector of float)
+0:321          roundEven (temp 4-component vector of float)
 0:321            'inF0' (in 4-component vector of float)
 0:322      Sequence
 0:322        move second child to first child (temp 4-component vector of float)
 0:322          'r057' (temp 4-component vector of float)
-0:322          inverse sqrt (global 4-component vector of float)
+0:322          inverse sqrt (temp 4-component vector of float)
 0:322            'inF0' (in 4-component vector of float)
 0:323      Sequence
 0:323        move second child to first child (temp 4-component vector of float)
@@ -4299,12 +4299,12 @@
 0:324      Sequence
 0:324        move second child to first child (temp 4-component vector of float)
 0:324          'r059' (temp 4-component vector of float)
-0:324          Sign (global 4-component vector of float)
+0:324          Sign (temp 4-component vector of float)
 0:324            'inF0' (in 4-component vector of float)
 0:325      Sequence
 0:325        move second child to first child (temp 4-component vector of float)
 0:325          'r060' (temp 4-component vector of float)
-0:325          sine (global 4-component vector of float)
+0:325          sine (temp 4-component vector of float)
 0:325            'inF0' (in 4-component vector of float)
 0:326      Sequence
 0:326        move second child to first child (temp 4-component vector of float)
@@ -4318,40 +4318,40 @@
 0:327      Sequence
 0:327        move second child to first child (temp 4-component vector of float)
 0:327          'r061' (temp 4-component vector of float)
-0:327          hyp. sine (global 4-component vector of float)
+0:327          hyp. sine (temp 4-component vector of float)
 0:327            'inF0' (in 4-component vector of float)
 0:328      Sequence
 0:328        move second child to first child (temp 4-component vector of float)
 0:328          'r062' (temp 4-component vector of float)
-0:328          smoothstep (global 4-component vector of float)
+0:328          smoothstep (temp 4-component vector of float)
 0:328            'inF0' (in 4-component vector of float)
 0:328            'inF1' (in 4-component vector of float)
 0:328            'inF2' (in 4-component vector of float)
 0:329      Sequence
 0:329        move second child to first child (temp 4-component vector of float)
 0:329          'r063' (temp 4-component vector of float)
-0:329          sqrt (global 4-component vector of float)
+0:329          sqrt (temp 4-component vector of float)
 0:329            'inF0' (in 4-component vector of float)
 0:330      Sequence
 0:330        move second child to first child (temp 4-component vector of float)
 0:330          'r064' (temp 4-component vector of float)
-0:330          step (global 4-component vector of float)
+0:330          step (temp 4-component vector of float)
 0:330            'inF0' (in 4-component vector of float)
 0:330            'inF1' (in 4-component vector of float)
 0:331      Sequence
 0:331        move second child to first child (temp 4-component vector of float)
 0:331          'r065' (temp 4-component vector of float)
-0:331          tangent (global 4-component vector of float)
+0:331          tangent (temp 4-component vector of float)
 0:331            'inF0' (in 4-component vector of float)
 0:332      Sequence
 0:332        move second child to first child (temp 4-component vector of float)
 0:332          'r066' (temp 4-component vector of float)
-0:332          hyp. tangent (global 4-component vector of float)
+0:332          hyp. tangent (temp 4-component vector of float)
 0:332            'inF0' (in 4-component vector of float)
 0:334      Sequence
 0:334        move second child to first child (temp 4-component vector of float)
 0:334          'r067' (temp 4-component vector of float)
-0:334          trunc (global 4-component vector of float)
+0:334          trunc (temp 4-component vector of float)
 0:334            'inF0' (in 4-component vector of float)
 0:337      Branch: Return with expression
 0:?         Constant:
@@ -4368,40 +4368,40 @@
 0:403      Sequence
 0:403        move second child to first child (temp bool)
 0:403          'r000' (temp bool)
-0:403          all (global bool)
+0:403          all (temp bool)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r001' (temp 2X2 matrix of float)
-0:403          Absolute value (global 2X2 matrix of float)
+0:403          Absolute value (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
-0:403      arc cosine (global 2X2 matrix of float)
+0:403      arc cosine (temp 2X2 matrix of float)
 0:403        'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp bool)
 0:403          'r003' (temp bool)
-0:403          any (global bool)
+0:403          any (temp bool)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r004' (temp 2X2 matrix of float)
-0:403          arc sine (global 2X2 matrix of float)
+0:403          arc sine (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r005' (temp 2X2 matrix of float)
-0:403          arc tangent (global 2X2 matrix of float)
+0:403          arc tangent (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r006' (temp 2X2 matrix of float)
-0:403          arc tangent (global 2X2 matrix of float)
+0:403          arc tangent (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r007' (temp 2X2 matrix of float)
-0:403          Ceiling (global 2X2 matrix of float)
+0:403          Ceiling (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Test condition and select (temp void)
 0:403        Condition
@@ -4418,114 +4418,114 @@
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r008' (temp 2X2 matrix of float)
-0:403          clamp (global 2X2 matrix of float)
+0:403          clamp (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403            'inF2' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r009' (temp 2X2 matrix of float)
-0:403          cosine (global 2X2 matrix of float)
+0:403          cosine (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r010' (temp 2X2 matrix of float)
-0:403          hyp. cosine (global 2X2 matrix of float)
+0:403          hyp. cosine (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r011' (temp 2X2 matrix of float)
-0:403          dPdx (global 2X2 matrix of float)
+0:403          dPdx (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r012' (temp 2X2 matrix of float)
-0:403          dPdxCoarse (global 2X2 matrix of float)
+0:403          dPdxCoarse (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r013' (temp 2X2 matrix of float)
-0:403          dPdxFine (global 2X2 matrix of float)
+0:403          dPdxFine (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r014' (temp 2X2 matrix of float)
-0:403          dPdy (global 2X2 matrix of float)
+0:403          dPdy (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r015' (temp 2X2 matrix of float)
-0:403          dPdyCoarse (global 2X2 matrix of float)
+0:403          dPdyCoarse (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r016' (temp 2X2 matrix of float)
-0:403          dPdyFine (global 2X2 matrix of float)
+0:403          dPdyFine (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r017' (temp 2X2 matrix of float)
-0:403          degrees (global 2X2 matrix of float)
+0:403          degrees (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp float)
 0:403          'r018' (temp float)
-0:403          determinant (global float)
+0:403          determinant (temp float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r019' (temp 2X2 matrix of float)
-0:403          exp (global 2X2 matrix of float)
+0:403          exp (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'R020' (temp 2X2 matrix of float)
-0:403          exp2 (global 2X2 matrix of float)
+0:403          exp2 (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r021' (temp 2X2 matrix of float)
-0:403          Floor (global 2X2 matrix of float)
+0:403          Floor (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r022' (temp 2X2 matrix of float)
-0:403          mod (global 2X2 matrix of float)
+0:403          mod (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r023' (temp 2X2 matrix of float)
-0:403          Fraction (global 2X2 matrix of float)
+0:403          Fraction (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r024' (temp 2X2 matrix of float)
-0:403          frexp (global 2X2 matrix of float)
+0:403          frexp (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r025' (temp 2X2 matrix of float)
-0:403          fwidth (global 2X2 matrix of float)
+0:403          fwidth (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r026' (temp 2X2 matrix of float)
-0:403          ldexp (global 2X2 matrix of float)
+0:403          ldexp (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r026a' (temp 2X2 matrix of float)
-0:403          mix (global 2X2 matrix of float)
+0:403          mix (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403            'inF2' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r027' (temp 2X2 matrix of float)
-0:403          log (global 2X2 matrix of float)
+0:403          log (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
@@ -4538,40 +4538,40 @@
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r029' (temp 2X2 matrix of float)
-0:403          log2 (global 2X2 matrix of float)
+0:403          log2 (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r030' (temp 2X2 matrix of float)
-0:403          max (global 2X2 matrix of float)
+0:403          max (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r031' (temp 2X2 matrix of float)
-0:403          min (global 2X2 matrix of float)
+0:403          min (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r032' (temp 2X2 matrix of float)
-0:403          pow (global 2X2 matrix of float)
+0:403          pow (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r033' (temp 2X2 matrix of float)
-0:403          radians (global 2X2 matrix of float)
+0:403          radians (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r034' (temp 2X2 matrix of float)
-0:403          roundEven (global 2X2 matrix of float)
+0:403          roundEven (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r035' (temp 2X2 matrix of float)
-0:403          inverse sqrt (global 2X2 matrix of float)
+0:403          inverse sqrt (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
@@ -4585,12 +4585,12 @@
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r037' (temp 2X2 matrix of float)
-0:403          Sign (global 2X2 matrix of float)
+0:403          Sign (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r038' (temp 2X2 matrix of float)
-0:403          sine (global 2X2 matrix of float)
+0:403          sine (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
@@ -4604,42 +4604,42 @@
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r039' (temp 2X2 matrix of float)
-0:403          hyp. sine (global 2X2 matrix of float)
+0:403          hyp. sine (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r049' (temp 2X2 matrix of float)
-0:403          smoothstep (global 2X2 matrix of float)
+0:403          smoothstep (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403            'inF2' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r041' (temp 2X2 matrix of float)
-0:403          sqrt (global 2X2 matrix of float)
+0:403          sqrt (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r042' (temp 2X2 matrix of float)
-0:403          step (global 2X2 matrix of float)
+0:403          step (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403            'inF1' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r043' (temp 2X2 matrix of float)
-0:403          tangent (global 2X2 matrix of float)
+0:403          tangent (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r044' (temp 2X2 matrix of float)
-0:403          hyp. tangent (global 2X2 matrix of float)
+0:403          hyp. tangent (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
-0:403      transpose (global 2X2 matrix of float)
+0:403      transpose (temp 2X2 matrix of float)
 0:403        'inF0' (in 2X2 matrix of float)
 0:403      Sequence
 0:403        move second child to first child (temp 2X2 matrix of float)
 0:403          'r046' (temp 2X2 matrix of float)
-0:403          trunc (global 2X2 matrix of float)
+0:403          trunc (temp 2X2 matrix of float)
 0:403            'inF0' (in 2X2 matrix of float)
 0:406      Branch: Return with expression
 0:?         Constant:
@@ -4656,40 +4656,40 @@
 0:412      Sequence
 0:412        move second child to first child (temp bool)
 0:412          'r000' (temp bool)
-0:412          all (global bool)
+0:412          all (temp bool)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r001' (temp 3X3 matrix of float)
-0:412          Absolute value (global 3X3 matrix of float)
+0:412          Absolute value (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
-0:412      arc cosine (global 3X3 matrix of float)
+0:412      arc cosine (temp 3X3 matrix of float)
 0:412        'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp bool)
 0:412          'r003' (temp bool)
-0:412          any (global bool)
+0:412          any (temp bool)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r004' (temp 3X3 matrix of float)
-0:412          arc sine (global 3X3 matrix of float)
+0:412          arc sine (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r005' (temp 3X3 matrix of float)
-0:412          arc tangent (global 3X3 matrix of float)
+0:412          arc tangent (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r006' (temp 3X3 matrix of float)
-0:412          arc tangent (global 3X3 matrix of float)
+0:412          arc tangent (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r007' (temp 3X3 matrix of float)
-0:412          Ceiling (global 3X3 matrix of float)
+0:412          Ceiling (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Test condition and select (temp void)
 0:412        Condition
@@ -4711,114 +4711,114 @@
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r008' (temp 3X3 matrix of float)
-0:412          clamp (global 3X3 matrix of float)
+0:412          clamp (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412            'inF2' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r009' (temp 3X3 matrix of float)
-0:412          cosine (global 3X3 matrix of float)
+0:412          cosine (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r010' (temp 3X3 matrix of float)
-0:412          hyp. cosine (global 3X3 matrix of float)
+0:412          hyp. cosine (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r011' (temp 3X3 matrix of float)
-0:412          dPdx (global 3X3 matrix of float)
+0:412          dPdx (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r012' (temp 3X3 matrix of float)
-0:412          dPdxCoarse (global 3X3 matrix of float)
+0:412          dPdxCoarse (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r013' (temp 3X3 matrix of float)
-0:412          dPdxFine (global 3X3 matrix of float)
+0:412          dPdxFine (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r014' (temp 3X3 matrix of float)
-0:412          dPdy (global 3X3 matrix of float)
+0:412          dPdy (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r015' (temp 3X3 matrix of float)
-0:412          dPdyCoarse (global 3X3 matrix of float)
+0:412          dPdyCoarse (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r016' (temp 3X3 matrix of float)
-0:412          dPdyFine (global 3X3 matrix of float)
+0:412          dPdyFine (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r017' (temp 3X3 matrix of float)
-0:412          degrees (global 3X3 matrix of float)
+0:412          degrees (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp float)
 0:412          'r018' (temp float)
-0:412          determinant (global float)
+0:412          determinant (temp float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r019' (temp 3X3 matrix of float)
-0:412          exp (global 3X3 matrix of float)
+0:412          exp (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'R020' (temp 3X3 matrix of float)
-0:412          exp2 (global 3X3 matrix of float)
+0:412          exp2 (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r021' (temp 3X3 matrix of float)
-0:412          Floor (global 3X3 matrix of float)
+0:412          Floor (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r022' (temp 3X3 matrix of float)
-0:412          mod (global 3X3 matrix of float)
+0:412          mod (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r023' (temp 3X3 matrix of float)
-0:412          Fraction (global 3X3 matrix of float)
+0:412          Fraction (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r024' (temp 3X3 matrix of float)
-0:412          frexp (global 3X3 matrix of float)
+0:412          frexp (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r025' (temp 3X3 matrix of float)
-0:412          fwidth (global 3X3 matrix of float)
+0:412          fwidth (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r026' (temp 3X3 matrix of float)
-0:412          ldexp (global 3X3 matrix of float)
+0:412          ldexp (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r026a' (temp 3X3 matrix of float)
-0:412          mix (global 3X3 matrix of float)
+0:412          mix (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412            'inF2' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r027' (temp 3X3 matrix of float)
-0:412          log (global 3X3 matrix of float)
+0:412          log (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
@@ -4831,40 +4831,40 @@
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r029' (temp 3X3 matrix of float)
-0:412          log2 (global 3X3 matrix of float)
+0:412          log2 (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r030' (temp 3X3 matrix of float)
-0:412          max (global 3X3 matrix of float)
+0:412          max (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r031' (temp 3X3 matrix of float)
-0:412          min (global 3X3 matrix of float)
+0:412          min (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r032' (temp 3X3 matrix of float)
-0:412          pow (global 3X3 matrix of float)
+0:412          pow (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r033' (temp 3X3 matrix of float)
-0:412          radians (global 3X3 matrix of float)
+0:412          radians (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r034' (temp 3X3 matrix of float)
-0:412          roundEven (global 3X3 matrix of float)
+0:412          roundEven (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r035' (temp 3X3 matrix of float)
-0:412          inverse sqrt (global 3X3 matrix of float)
+0:412          inverse sqrt (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
@@ -4878,12 +4878,12 @@
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r037' (temp 3X3 matrix of float)
-0:412          Sign (global 3X3 matrix of float)
+0:412          Sign (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r038' (temp 3X3 matrix of float)
-0:412          sine (global 3X3 matrix of float)
+0:412          sine (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
@@ -4897,42 +4897,42 @@
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r039' (temp 3X3 matrix of float)
-0:412          hyp. sine (global 3X3 matrix of float)
+0:412          hyp. sine (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r049' (temp 3X3 matrix of float)
-0:412          smoothstep (global 3X3 matrix of float)
+0:412          smoothstep (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412            'inF2' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r041' (temp 3X3 matrix of float)
-0:412          sqrt (global 3X3 matrix of float)
+0:412          sqrt (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r042' (temp 3X3 matrix of float)
-0:412          step (global 3X3 matrix of float)
+0:412          step (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412            'inF1' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r043' (temp 3X3 matrix of float)
-0:412          tangent (global 3X3 matrix of float)
+0:412          tangent (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r044' (temp 3X3 matrix of float)
-0:412          hyp. tangent (global 3X3 matrix of float)
+0:412          hyp. tangent (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
-0:412      transpose (global 3X3 matrix of float)
+0:412      transpose (temp 3X3 matrix of float)
 0:412        'inF0' (in 3X3 matrix of float)
 0:412      Sequence
 0:412        move second child to first child (temp 3X3 matrix of float)
 0:412          'r046' (temp 3X3 matrix of float)
-0:412          trunc (global 3X3 matrix of float)
+0:412          trunc (temp 3X3 matrix of float)
 0:412            'inF0' (in 3X3 matrix of float)
 0:415      Branch: Return with expression
 0:?         Constant:
@@ -4954,40 +4954,40 @@
 0:421      Sequence
 0:421        move second child to first child (temp bool)
 0:421          'r000' (temp bool)
-0:421          all (global bool)
+0:421          all (temp bool)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r001' (temp 4X4 matrix of float)
-0:421          Absolute value (global 4X4 matrix of float)
+0:421          Absolute value (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
-0:421      arc cosine (global 4X4 matrix of float)
+0:421      arc cosine (temp 4X4 matrix of float)
 0:421        'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp bool)
 0:421          'r003' (temp bool)
-0:421          any (global bool)
+0:421          any (temp bool)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r004' (temp 4X4 matrix of float)
-0:421          arc sine (global 4X4 matrix of float)
+0:421          arc sine (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r005' (temp 4X4 matrix of float)
-0:421          arc tangent (global 4X4 matrix of float)
+0:421          arc tangent (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r006' (temp 4X4 matrix of float)
-0:421          arc tangent (global 4X4 matrix of float)
+0:421          arc tangent (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r007' (temp 4X4 matrix of float)
-0:421          Ceiling (global 4X4 matrix of float)
+0:421          Ceiling (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Test condition and select (temp void)
 0:421        Condition
@@ -5016,114 +5016,114 @@
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r008' (temp 4X4 matrix of float)
-0:421          clamp (global 4X4 matrix of float)
+0:421          clamp (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421            'inF2' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r009' (temp 4X4 matrix of float)
-0:421          cosine (global 4X4 matrix of float)
+0:421          cosine (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r010' (temp 4X4 matrix of float)
-0:421          hyp. cosine (global 4X4 matrix of float)
+0:421          hyp. cosine (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r011' (temp 4X4 matrix of float)
-0:421          dPdx (global 4X4 matrix of float)
+0:421          dPdx (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r012' (temp 4X4 matrix of float)
-0:421          dPdxCoarse (global 4X4 matrix of float)
+0:421          dPdxCoarse (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r013' (temp 4X4 matrix of float)
-0:421          dPdxFine (global 4X4 matrix of float)
+0:421          dPdxFine (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r014' (temp 4X4 matrix of float)
-0:421          dPdy (global 4X4 matrix of float)
+0:421          dPdy (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r015' (temp 4X4 matrix of float)
-0:421          dPdyCoarse (global 4X4 matrix of float)
+0:421          dPdyCoarse (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r016' (temp 4X4 matrix of float)
-0:421          dPdyFine (global 4X4 matrix of float)
+0:421          dPdyFine (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r017' (temp 4X4 matrix of float)
-0:421          degrees (global 4X4 matrix of float)
+0:421          degrees (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp float)
 0:421          'r018' (temp float)
-0:421          determinant (global float)
+0:421          determinant (temp float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r019' (temp 4X4 matrix of float)
-0:421          exp (global 4X4 matrix of float)
+0:421          exp (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'R020' (temp 4X4 matrix of float)
-0:421          exp2 (global 4X4 matrix of float)
+0:421          exp2 (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r021' (temp 4X4 matrix of float)
-0:421          Floor (global 4X4 matrix of float)
+0:421          Floor (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r022' (temp 4X4 matrix of float)
-0:421          mod (global 4X4 matrix of float)
+0:421          mod (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r023' (temp 4X4 matrix of float)
-0:421          Fraction (global 4X4 matrix of float)
+0:421          Fraction (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r024' (temp 4X4 matrix of float)
-0:421          frexp (global 4X4 matrix of float)
+0:421          frexp (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r025' (temp 4X4 matrix of float)
-0:421          fwidth (global 4X4 matrix of float)
+0:421          fwidth (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r026' (temp 4X4 matrix of float)
-0:421          ldexp (global 4X4 matrix of float)
+0:421          ldexp (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r026a' (temp 4X4 matrix of float)
-0:421          mix (global 4X4 matrix of float)
+0:421          mix (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421            'inF2' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r027' (temp 4X4 matrix of float)
-0:421          log (global 4X4 matrix of float)
+0:421          log (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
@@ -5136,40 +5136,40 @@
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r029' (temp 4X4 matrix of float)
-0:421          log2 (global 4X4 matrix of float)
+0:421          log2 (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r030' (temp 4X4 matrix of float)
-0:421          max (global 4X4 matrix of float)
+0:421          max (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r031' (temp 4X4 matrix of float)
-0:421          min (global 4X4 matrix of float)
+0:421          min (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r032' (temp 4X4 matrix of float)
-0:421          pow (global 4X4 matrix of float)
+0:421          pow (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r033' (temp 4X4 matrix of float)
-0:421          radians (global 4X4 matrix of float)
+0:421          radians (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r034' (temp 4X4 matrix of float)
-0:421          roundEven (global 4X4 matrix of float)
+0:421          roundEven (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r035' (temp 4X4 matrix of float)
-0:421          inverse sqrt (global 4X4 matrix of float)
+0:421          inverse sqrt (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
@@ -5183,12 +5183,12 @@
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r037' (temp 4X4 matrix of float)
-0:421          Sign (global 4X4 matrix of float)
+0:421          Sign (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r038' (temp 4X4 matrix of float)
-0:421          sine (global 4X4 matrix of float)
+0:421          sine (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
@@ -5202,42 +5202,42 @@
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r039' (temp 4X4 matrix of float)
-0:421          hyp. sine (global 4X4 matrix of float)
+0:421          hyp. sine (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r049' (temp 4X4 matrix of float)
-0:421          smoothstep (global 4X4 matrix of float)
+0:421          smoothstep (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421            'inF2' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r041' (temp 4X4 matrix of float)
-0:421          sqrt (global 4X4 matrix of float)
+0:421          sqrt (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r042' (temp 4X4 matrix of float)
-0:421          step (global 4X4 matrix of float)
+0:421          step (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421            'inF1' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r043' (temp 4X4 matrix of float)
-0:421          tangent (global 4X4 matrix of float)
+0:421          tangent (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r044' (temp 4X4 matrix of float)
-0:421          hyp. tangent (global 4X4 matrix of float)
+0:421          hyp. tangent (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
-0:421      transpose (global 4X4 matrix of float)
+0:421      transpose (temp 4X4 matrix of float)
 0:421        'inF0' (in 4X4 matrix of float)
 0:421      Sequence
 0:421        move second child to first child (temp 4X4 matrix of float)
 0:421          'r046' (temp 4X4 matrix of float)
-0:421          trunc (global 4X4 matrix of float)
+0:421          trunc (temp 4X4 matrix of float)
 0:421            'inF0' (in 4X4 matrix of float)
 0:424      Branch: Return with expression
 0:?         Constant:
@@ -5287,7 +5287,7 @@
 0:443      Sequence
 0:443        move second child to first child (temp float)
 0:443          'r3' (temp float)
-0:443          dot-product (global float)
+0:443          dot-product (temp float)
 0:443            'inFV0' (in 2-component vector of float)
 0:443            'inFV1' (in 2-component vector of float)
 0:443      Sequence
@@ -5350,7 +5350,7 @@
 0:450      Sequence
 0:450        move second child to first child (temp float)
 0:450          'r3' (temp float)
-0:450          dot-product (global float)
+0:450          dot-product (temp float)
 0:450            'inFV0' (in 3-component vector of float)
 0:450            'inFV1' (in 3-component vector of float)
 0:450      Sequence
@@ -5413,7 +5413,7 @@
 0:457      Sequence
 0:457        move second child to first child (temp float)
 0:457          'r3' (temp float)
-0:457          dot-product (global float)
+0:457          dot-product (temp float)
 0:457            'inFV0' (in 4-component vector of float)
 0:457            'inFV1' (in 4-component vector of float)
 0:457      Sequence
@@ -5491,13 +5491,13 @@
 0:472      Sequence
 0:472        move second child to first child (temp float)
 0:472          'r05' (temp float)
-0:472          dot-product (global float)
+0:472          dot-product (temp float)
 0:472            'inFV2' (in 2-component vector of float)
 0:472            'inFV2' (in 2-component vector of float)
 0:473      Sequence
 0:473        move second child to first child (temp float)
 0:473          'r06' (temp float)
-0:473          dot-product (global float)
+0:473          dot-product (temp float)
 0:473            'inFV3' (in 3-component vector of float)
 0:473            'inFV3' (in 3-component vector of float)
 0:474      Sequence
@@ -5583,6 +5583,7 @@
 0:492                0 (const int)
 0:492        Branch: Return
 0:?   Linker Objects
+0:?     'color' (layout(location=0 ) out 4-component vector of float)
 0:?     'gs_ua' (shared uint)
 0:?     'gs_ub' (shared uint)
 0:?     'gs_uc' (shared uint)
@@ -5595,7 +5596,6 @@
 0:?     'gs_ua4' (shared 4-component vector of uint)
 0:?     'gs_ub4' (shared 4-component vector of uint)
 0:?     'gs_uc4' (shared 4-component vector of uint)
-0:?     'color' (layout(location=0 ) out 4-component vector of float)
 
 // Module Version 10000
 // Generated by (magic number): 80001
diff --git a/Test/baseResults/hlsl.intrinsics.negative.frag.out b/Test/baseResults/hlsl.intrinsics.negative.frag.out
index 29ee009..e275054 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.frag.out
@@ -78,36 +78,36 @@
 0:5            'inF0' (in float)
 0:5          Convert float to uint (temp uint)
 0:5            'inF1' (in float)
-0:6      Function Call: CheckAccessFullyMapped(u1; (global bool)
+0:6      Function Call: CheckAccessFullyMapped(u1; (temp bool)
 0:6        Constant:
 0:6          3 (const uint)
-0:7      bitCount (global uint)
+0:7      bitCount (temp uint)
 0:7        Convert float to uint (temp uint)
 0:7          'inF0' (in float)
-0:8      cross-product (global 3-component vector of float)
+0:8      cross-product (temp 3-component vector of float)
 0:8        Construct vec3 (in 3-component vector of float)
 0:8          'inF0' (in float)
 0:8        Construct vec3 (in 3-component vector of float)
 0:8          'inF1' (in float)
-0:9      Function Call: D3DCOLORtoUBYTE4(vf4; (global 4-component vector of int)
+0:9      Function Call: D3DCOLORtoUBYTE4(vf4; (temp 4-component vector of int)
 0:9        Construct vec4 (in 4-component vector of float)
 0:9          'inF0' (in float)
 0:10      Constant:
 0:10        0.000000
 0:12      ERROR: Bad unary op
- (global float)
+ (temp float)
 0:12        Convert float to uint (temp uint)
 0:12          'inF0' (in float)
-0:13      findMSB (global uint)
+0:13      findMSB (temp uint)
 0:13        Convert float to uint (temp uint)
 0:13          'inF0' (in float)
-0:14      findLSB (global uint)
+0:14      findLSB (temp uint)
 0:14        Convert float to uint (temp uint)
 0:14          'inF0' (in float)
-0:23      length (global float)
+0:23      length (temp float)
 0:23        Construct vec2 (in 2-component vector of float)
 0:23          'inF0' (in float)
-0:24      Function Call: msad4(u1;vu2;vu4; (global 4-component vector of uint)
+0:24      Function Call: msad4(u1;vu2;vu4; (temp 4-component vector of uint)
 0:24        Convert float to uint (temp uint)
 0:24          'inF0' (in float)
 0:24        Constant:
@@ -118,15 +118,15 @@
 0:24          0 (const uint)
 0:24          0 (const uint)
 0:24          0 (const uint)
-0:25      normalize (global 2-component vector of float)
+0:25      normalize (temp 2-component vector of float)
 0:25        Construct vec2 (in 2-component vector of float)
 0:25          'inF0' (in float)
-0:26      reflect (global 2-component vector of float)
+0:26      reflect (temp 2-component vector of float)
 0:26        Construct vec2 (in 2-component vector of float)
 0:26          'inF0' (in float)
 0:26        Construct vec2 (in 2-component vector of float)
 0:26          'inF1' (in float)
-0:27      refract (global 2-component vector of float)
+0:27      refract (temp 2-component vector of float)
 0:27        Construct vec2 (in 2-component vector of float)
 0:27          'inF0' (in float)
 0:27        Construct vec2 (in 2-component vector of float)
@@ -134,7 +134,7 @@
 0:27        'inF2' (in float)
 0:28      Constant:
 0:28        0.000000
-0:29      bitFieldReverse (global uint)
+0:29      bitFieldReverse (temp uint)
 0:29        Convert float to uint (temp uint)
 0:29          'inF0' (in float)
 0:30      Constant:
@@ -162,14 +162,14 @@
 0:45      'inI0' (in 2-component vector of int)
 0:?     Sequence
 0:46      ERROR: Bad aggregation op
- (global 2-component vector of double)
+ (temp 2-component vector of double)
 0:46        Convert float to uint (temp 2-component vector of uint)
 0:46          'inF0' (in 2-component vector of float)
 0:46        Convert float to uint (temp 2-component vector of uint)
 0:46          'inF1' (in 2-component vector of float)
 0:47      Constant:
 0:47        0.000000
-0:48      bitCount (global 2-component vector of uint)
+0:48      bitCount (temp 2-component vector of uint)
 0:48        Convert float to uint (temp 2-component vector of uint)
 0:48          'inF0' (in 2-component vector of float)
 0:49      Constant:
@@ -179,16 +179,16 @@
 0:51      Constant:
 0:51        0.000000
 0:52      ERROR: Bad unary op
- (global 2-component vector of float)
+ (temp 2-component vector of float)
 0:52        Convert float to uint (temp 2-component vector of uint)
 0:52          'inF0' (in 2-component vector of float)
-0:53      findMSB (global 2-component vector of uint)
+0:53      findMSB (temp 2-component vector of uint)
 0:53        Convert float to uint (temp 2-component vector of uint)
 0:53          'inF0' (in 2-component vector of float)
-0:54      findLSB (global 2-component vector of uint)
+0:54      findLSB (temp 2-component vector of uint)
 0:54        Convert float to uint (temp 2-component vector of uint)
 0:54          'inF0' (in 2-component vector of float)
-0:56      bitFieldReverse (global 2-component vector of uint)
+0:56      bitFieldReverse (temp 2-component vector of uint)
 0:56        Convert float to uint (temp 2-component vector of uint)
 0:56          'inF0' (in 2-component vector of float)
 0:57      Constant:
@@ -206,7 +206,7 @@
 0:?     Sequence
 0:64      Constant:
 0:64        0.000000
-0:65      bitCount (global 3-component vector of uint)
+0:65      bitCount (temp 3-component vector of uint)
 0:65        Convert float to uint (temp 3-component vector of uint)
 0:65          'inF0' (in 3-component vector of float)
 0:66      Constant:
@@ -214,16 +214,16 @@
 0:67      Constant:
 0:67        0.000000
 0:68      ERROR: Bad unary op
- (global 3-component vector of float)
+ (temp 3-component vector of float)
 0:68        Convert float to uint (temp 3-component vector of uint)
 0:68          'inF0' (in 3-component vector of float)
-0:69      findMSB (global 3-component vector of uint)
+0:69      findMSB (temp 3-component vector of uint)
 0:69        Convert float to uint (temp 3-component vector of uint)
 0:69          'inF0' (in 3-component vector of float)
-0:70      findLSB (global 3-component vector of uint)
+0:70      findLSB (temp 3-component vector of uint)
 0:70        Convert float to uint (temp 3-component vector of uint)
 0:70          'inF0' (in 3-component vector of float)
-0:72      bitFieldReverse (global 3-component vector of uint)
+0:72      bitFieldReverse (temp 3-component vector of uint)
 0:72        Convert float to uint (temp 3-component vector of uint)
 0:72          'inF0' (in 3-component vector of float)
 0:73      Constant:
@@ -242,10 +242,10 @@
 0:?     Sequence
 0:81      Constant:
 0:81        0.000000
-0:82      bitCount (global 4-component vector of uint)
+0:82      bitCount (temp 4-component vector of uint)
 0:82        Convert float to uint (temp 4-component vector of uint)
 0:82          'inF0' (layout(location=0 ) in 4-component vector of float)
-0:83      cross-product (global 3-component vector of float)
+0:83      cross-product (temp 3-component vector of float)
 0:83        Construct vec3 (in 3-component vector of float)
 0:83          'inF0' (layout(location=0 ) in 4-component vector of float)
 0:83        Construct vec3 (in 3-component vector of float)
@@ -253,16 +253,16 @@
 0:84      Constant:
 0:84        0.000000
 0:85      ERROR: Bad unary op
- (global 4-component vector of float)
+ (temp 4-component vector of float)
 0:85        Convert float to uint (temp 4-component vector of uint)
 0:85          'inF0' (layout(location=0 ) in 4-component vector of float)
-0:86      findMSB (global 4-component vector of uint)
+0:86      findMSB (temp 4-component vector of uint)
 0:86        Convert float to uint (temp 4-component vector of uint)
 0:86          'inF0' (layout(location=0 ) in 4-component vector of float)
-0:87      findLSB (global 4-component vector of uint)
+0:87      findLSB (temp 4-component vector of uint)
 0:87        Convert float to uint (temp 4-component vector of uint)
 0:87          'inF0' (layout(location=0 ) in 4-component vector of float)
-0:89      bitFieldReverse (global 4-component vector of uint)
+0:89      bitFieldReverse (temp 4-component vector of uint)
 0:89        Convert float to uint (temp 4-component vector of uint)
 0:89          'inF0' (layout(location=0 ) in 4-component vector of float)
 0:90      Constant:
@@ -434,36 +434,36 @@
 0:5            'inF0' (in float)
 0:5          Convert float to uint (temp uint)
 0:5            'inF1' (in float)
-0:6      Function Call: CheckAccessFullyMapped(u1; (global bool)
+0:6      Function Call: CheckAccessFullyMapped(u1; (temp bool)
 0:6        Constant:
 0:6          3 (const uint)
-0:7      bitCount (global uint)
+0:7      bitCount (temp uint)
 0:7        Convert float to uint (temp uint)
 0:7          'inF0' (in float)
-0:8      cross-product (global 3-component vector of float)
+0:8      cross-product (temp 3-component vector of float)
 0:8        Construct vec3 (in 3-component vector of float)
 0:8          'inF0' (in float)
 0:8        Construct vec3 (in 3-component vector of float)
 0:8          'inF1' (in float)
-0:9      Function Call: D3DCOLORtoUBYTE4(vf4; (global 4-component vector of int)
+0:9      Function Call: D3DCOLORtoUBYTE4(vf4; (temp 4-component vector of int)
 0:9        Construct vec4 (in 4-component vector of float)
 0:9          'inF0' (in float)
 0:10      Constant:
 0:10        0.000000
 0:12      ERROR: Bad unary op
- (global float)
+ (temp float)
 0:12        Convert float to uint (temp uint)
 0:12          'inF0' (in float)
-0:13      findMSB (global uint)
+0:13      findMSB (temp uint)
 0:13        Convert float to uint (temp uint)
 0:13          'inF0' (in float)
-0:14      findLSB (global uint)
+0:14      findLSB (temp uint)
 0:14        Convert float to uint (temp uint)
 0:14          'inF0' (in float)
-0:23      length (global float)
+0:23      length (temp float)
 0:23        Construct vec2 (in 2-component vector of float)
 0:23          'inF0' (in float)
-0:24      Function Call: msad4(u1;vu2;vu4; (global 4-component vector of uint)
+0:24      Function Call: msad4(u1;vu2;vu4; (temp 4-component vector of uint)
 0:24        Convert float to uint (temp uint)
 0:24          'inF0' (in float)
 0:24        Constant:
@@ -474,15 +474,15 @@
 0:24          0 (const uint)
 0:24          0 (const uint)
 0:24          0 (const uint)
-0:25      normalize (global 2-component vector of float)
+0:25      normalize (temp 2-component vector of float)
 0:25        Construct vec2 (in 2-component vector of float)
 0:25          'inF0' (in float)
-0:26      reflect (global 2-component vector of float)
+0:26      reflect (temp 2-component vector of float)
 0:26        Construct vec2 (in 2-component vector of float)
 0:26          'inF0' (in float)
 0:26        Construct vec2 (in 2-component vector of float)
 0:26          'inF1' (in float)
-0:27      refract (global 2-component vector of float)
+0:27      refract (temp 2-component vector of float)
 0:27        Construct vec2 (in 2-component vector of float)
 0:27          'inF0' (in float)
 0:27        Construct vec2 (in 2-component vector of float)
@@ -490,7 +490,7 @@
 0:27        'inF2' (in float)
 0:28      Constant:
 0:28        0.000000
-0:29      bitFieldReverse (global uint)
+0:29      bitFieldReverse (temp uint)
 0:29        Convert float to uint (temp uint)
 0:29          'inF0' (in float)
 0:30      Constant:
@@ -518,14 +518,14 @@
 0:45      'inI0' (in 2-component vector of int)
 0:?     Sequence
 0:46      ERROR: Bad aggregation op
- (global 2-component vector of double)
+ (temp 2-component vector of double)
 0:46        Convert float to uint (temp 2-component vector of uint)
 0:46          'inF0' (in 2-component vector of float)
 0:46        Convert float to uint (temp 2-component vector of uint)
 0:46          'inF1' (in 2-component vector of float)
 0:47      Constant:
 0:47        0.000000
-0:48      bitCount (global 2-component vector of uint)
+0:48      bitCount (temp 2-component vector of uint)
 0:48        Convert float to uint (temp 2-component vector of uint)
 0:48          'inF0' (in 2-component vector of float)
 0:49      Constant:
@@ -535,16 +535,16 @@
 0:51      Constant:
 0:51        0.000000
 0:52      ERROR: Bad unary op
- (global 2-component vector of float)
+ (temp 2-component vector of float)
 0:52        Convert float to uint (temp 2-component vector of uint)
 0:52          'inF0' (in 2-component vector of float)
-0:53      findMSB (global 2-component vector of uint)
+0:53      findMSB (temp 2-component vector of uint)
 0:53        Convert float to uint (temp 2-component vector of uint)
 0:53          'inF0' (in 2-component vector of float)
-0:54      findLSB (global 2-component vector of uint)
+0:54      findLSB (temp 2-component vector of uint)
 0:54        Convert float to uint (temp 2-component vector of uint)
 0:54          'inF0' (in 2-component vector of float)
-0:56      bitFieldReverse (global 2-component vector of uint)
+0:56      bitFieldReverse (temp 2-component vector of uint)
 0:56        Convert float to uint (temp 2-component vector of uint)
 0:56          'inF0' (in 2-component vector of float)
 0:57      Constant:
@@ -562,7 +562,7 @@
 0:?     Sequence
 0:64      Constant:
 0:64        0.000000
-0:65      bitCount (global 3-component vector of uint)
+0:65      bitCount (temp 3-component vector of uint)
 0:65        Convert float to uint (temp 3-component vector of uint)
 0:65          'inF0' (in 3-component vector of float)
 0:66      Constant:
@@ -570,16 +570,16 @@
 0:67      Constant:
 0:67        0.000000
 0:68      ERROR: Bad unary op
- (global 3-component vector of float)
+ (temp 3-component vector of float)
 0:68        Convert float to uint (temp 3-component vector of uint)
 0:68          'inF0' (in 3-component vector of float)
-0:69      findMSB (global 3-component vector of uint)
+0:69      findMSB (temp 3-component vector of uint)
 0:69        Convert float to uint (temp 3-component vector of uint)
 0:69          'inF0' (in 3-component vector of float)
-0:70      findLSB (global 3-component vector of uint)
+0:70      findLSB (temp 3-component vector of uint)
 0:70        Convert float to uint (temp 3-component vector of uint)
 0:70          'inF0' (in 3-component vector of float)
-0:72      bitFieldReverse (global 3-component vector of uint)
+0:72      bitFieldReverse (temp 3-component vector of uint)
 0:72        Convert float to uint (temp 3-component vector of uint)
 0:72          'inF0' (in 3-component vector of float)
 0:73      Constant:
@@ -598,10 +598,10 @@
 0:?     Sequence
 0:81      Constant:
 0:81        0.000000
-0:82      bitCount (global 4-component vector of uint)
+0:82      bitCount (temp 4-component vector of uint)
 0:82        Convert float to uint (temp 4-component vector of uint)
 0:82          'inF0' (layout(location=0 ) in 4-component vector of float)
-0:83      cross-product (global 3-component vector of float)
+0:83      cross-product (temp 3-component vector of float)
 0:83        Construct vec3 (in 3-component vector of float)
 0:83          'inF0' (layout(location=0 ) in 4-component vector of float)
 0:83        Construct vec3 (in 3-component vector of float)
@@ -609,16 +609,16 @@
 0:84      Constant:
 0:84        0.000000
 0:85      ERROR: Bad unary op
- (global 4-component vector of float)
+ (temp 4-component vector of float)
 0:85        Convert float to uint (temp 4-component vector of uint)
 0:85          'inF0' (layout(location=0 ) in 4-component vector of float)
-0:86      findMSB (global 4-component vector of uint)
+0:86      findMSB (temp 4-component vector of uint)
 0:86        Convert float to uint (temp 4-component vector of uint)
 0:86          'inF0' (layout(location=0 ) in 4-component vector of float)
-0:87      findLSB (global 4-component vector of uint)
+0:87      findLSB (temp 4-component vector of uint)
 0:87        Convert float to uint (temp 4-component vector of uint)
 0:87          'inF0' (layout(location=0 ) in 4-component vector of float)
-0:89      bitFieldReverse (global 4-component vector of uint)
+0:89      bitFieldReverse (temp 4-component vector of uint)
 0:89        Convert float to uint (temp 4-component vector of uint)
 0:89          'inF0' (layout(location=0 ) in 4-component vector of float)
 0:90      Constant:
diff --git a/Test/baseResults/hlsl.intrinsics.negative.vert.out b/Test/baseResults/hlsl.intrinsics.negative.vert.out
index 72b6fbc..b57a5a9 100644
--- a/Test/baseResults/hlsl.intrinsics.negative.vert.out
+++ b/Test/baseResults/hlsl.intrinsics.negative.vert.out
@@ -114,6 +114,11 @@
 0:?           4.000000
 0:?           4.000000
 0:?   Linker Objects
+0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:?     'inF0' (layout(location=0 ) in 4-component vector of float)
+0:?     'inF1' (layout(location=1 ) in 4-component vector of float)
+0:?     'inF2' (layout(location=2 ) in 4-component vector of float)
+0:?     'inI0' (layout(location=3 ) in 4-component vector of int)
 0:?     'gs_ua' (global uint)
 0:?     'gs_ub' (global uint)
 0:?     'gs_uc' (global uint)
@@ -126,11 +131,6 @@
 0:?     'gs_ua4' (global 4-component vector of uint)
 0:?     'gs_ub4' (global 4-component vector of uint)
 0:?     'gs_uc4' (global 4-component vector of uint)
-0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
-0:?     'inF0' (layout(location=0 ) in 4-component vector of float)
-0:?     'inF1' (layout(location=1 ) in 4-component vector of float)
-0:?     'inF2' (layout(location=2 ) in 4-component vector of float)
-0:?     'inI0' (layout(location=3 ) in 4-component vector of int)
 
 
 Linked vertex stage:
@@ -251,6 +251,11 @@
 0:?           4.000000
 0:?           4.000000
 0:?   Linker Objects
+0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
+0:?     'inF0' (layout(location=0 ) in 4-component vector of float)
+0:?     'inF1' (layout(location=1 ) in 4-component vector of float)
+0:?     'inF2' (layout(location=2 ) in 4-component vector of float)
+0:?     'inI0' (layout(location=3 ) in 4-component vector of int)
 0:?     'gs_ua' (global uint)
 0:?     'gs_ub' (global uint)
 0:?     'gs_uc' (global uint)
@@ -263,11 +268,6 @@
 0:?     'gs_ua4' (global 4-component vector of uint)
 0:?     'gs_ub4' (global 4-component vector of uint)
 0:?     'gs_uc4' (global 4-component vector of uint)
-0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
-0:?     'inF0' (layout(location=0 ) in 4-component vector of float)
-0:?     'inF1' (layout(location=1 ) in 4-component vector of float)
-0:?     'inF2' (layout(location=2 ) in 4-component vector of float)
-0:?     'inI0' (layout(location=3 ) in 4-component vector of int)
 
 // Module Version 10000
 // Generated by (magic number): 80001
@@ -276,7 +276,7 @@
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Vertex 4  "VertexShaderFunction" 85 122 123 124 127
+                              EntryPoint Vertex 4  "VertexShaderFunction" 85 102 103 104 107
                               Name 4  "VertexShaderFunction"
                               Name 15  "VertexShaderFunctionS(f1;f1;f1;i1;"
                               Name 11  "inF0"
@@ -311,27 +311,27 @@
                               Name 66  "inF1"
                               Name 67  "inF2"
                               Name 85  "@entryPointOutput"
-                              Name 103  "gs_ua"
-                              Name 104  "gs_ub"
-                              Name 105  "gs_uc"
-                              Name 108  "gs_ua2"
-                              Name 109  "gs_ub2"
-                              Name 110  "gs_uc2"
-                              Name 113  "gs_ua3"
-                              Name 114  "gs_ub3"
-                              Name 115  "gs_uc3"
-                              Name 118  "gs_ua4"
-                              Name 119  "gs_ub4"
-                              Name 120  "gs_uc4"
-                              Name 122  "inF0"
-                              Name 123  "inF1"
-                              Name 124  "inF2"
-                              Name 127  "inI0"
+                              Name 102  "inF0"
+                              Name 103  "inF1"
+                              Name 104  "inF2"
+                              Name 107  "inI0"
+                              Name 110  "gs_ua"
+                              Name 111  "gs_ub"
+                              Name 112  "gs_uc"
+                              Name 115  "gs_ua2"
+                              Name 116  "gs_ub2"
+                              Name 117  "gs_uc2"
+                              Name 120  "gs_ua3"
+                              Name 121  "gs_ub3"
+                              Name 122  "gs_uc3"
+                              Name 125  "gs_ua4"
+                              Name 126  "gs_ub4"
+                              Name 127  "gs_uc4"
                               Decorate 85(@entryPointOutput) Location 0
-                              Decorate 122(inF0) Location 0
-                              Decorate 123(inF1) Location 1
-                              Decorate 124(inF2) Location 2
-                              Decorate 127(inI0) Location 3
+                              Decorate 102(inF0) Location 0
+                              Decorate 103(inF1) Location 1
+                              Decorate 104(inF2) Location 2
+                              Decorate 107(inI0) Location 3
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -375,33 +375,33 @@
               94:          53 ConstantComposite 93 93 93
               97:   61(fvec4) ConstantComposite 86 86 86 86
               98:          62 ConstantComposite 97 97 97 97
-             101:             TypeInt 32 0
-             102:             TypePointer Private 101(int)
-      103(gs_ua):    102(ptr) Variable Private
-      104(gs_ub):    102(ptr) Variable Private
-      105(gs_uc):    102(ptr) Variable Private
-             106:             TypeVector 101(int) 2
-             107:             TypePointer Private 106(ivec2)
-     108(gs_ua2):    107(ptr) Variable Private
-     109(gs_ub2):    107(ptr) Variable Private
-     110(gs_uc2):    107(ptr) Variable Private
-             111:             TypeVector 101(int) 3
-             112:             TypePointer Private 111(ivec3)
-     113(gs_ua3):    112(ptr) Variable Private
-     114(gs_ub3):    112(ptr) Variable Private
-     115(gs_uc3):    112(ptr) Variable Private
-             116:             TypeVector 101(int) 4
-             117:             TypePointer Private 116(ivec4)
-     118(gs_ua4):    117(ptr) Variable Private
-     119(gs_ub4):    117(ptr) Variable Private
-     120(gs_uc4):    117(ptr) Variable Private
-             121:             TypePointer Input 61(fvec4)
-       122(inF0):    121(ptr) Variable Input
-       123(inF1):    121(ptr) Variable Input
-       124(inF2):    121(ptr) Variable Input
-             125:             TypeVector 8(int) 4
-             126:             TypePointer Input 125(ivec4)
-       127(inI0):    126(ptr) Variable Input
+             101:             TypePointer Input 61(fvec4)
+       102(inF0):    101(ptr) Variable Input
+       103(inF1):    101(ptr) Variable Input
+       104(inF2):    101(ptr) Variable Input
+             105:             TypeVector 8(int) 4
+             106:             TypePointer Input 105(ivec4)
+       107(inI0):    106(ptr) Variable Input
+             108:             TypeInt 32 0
+             109:             TypePointer Private 108(int)
+      110(gs_ua):    109(ptr) Variable Private
+      111(gs_ub):    109(ptr) Variable Private
+      112(gs_uc):    109(ptr) Variable Private
+             113:             TypeVector 108(int) 2
+             114:             TypePointer Private 113(ivec2)
+     115(gs_ua2):    114(ptr) Variable Private
+     116(gs_ub2):    114(ptr) Variable Private
+     117(gs_uc2):    114(ptr) Variable Private
+             118:             TypeVector 108(int) 3
+             119:             TypePointer Private 118(ivec3)
+     120(gs_ua3):    119(ptr) Variable Private
+     121(gs_ub3):    119(ptr) Variable Private
+     122(gs_uc3):    119(ptr) Variable Private
+             123:             TypeVector 108(int) 4
+             124:             TypePointer Private 123(ivec4)
+     125(gs_ua4):    124(ptr) Variable Private
+     126(gs_ub4):    124(ptr) Variable Private
+     127(gs_uc4):    124(ptr) Variable Private
 4(VertexShaderFunction):           2 Function None 3
                5:             Label
                               Store 85(@entryPointOutput) 87
diff --git a/Test/baseResults/hlsl.intrinsics.vert.out b/Test/baseResults/hlsl.intrinsics.vert.out
index 811a752..bcf911b 100644
--- a/Test/baseResults/hlsl.intrinsics.vert.out
+++ b/Test/baseResults/hlsl.intrinsics.vert.out
@@ -9,99 +9,99 @@
 0:2      'inU0' (in uint)
 0:2      'inU1' (in uint)
 0:?     Sequence
-0:3      all (global bool)
+0:3      all (temp bool)
 0:3        'inF0' (in float)
-0:4      Absolute value (global float)
+0:4      Absolute value (temp float)
 0:4        'inF0' (in float)
-0:5      arc cosine (global float)
+0:5      arc cosine (temp float)
 0:5        'inF0' (in float)
-0:6      any (global bool)
+0:6      any (temp bool)
 0:6        'inF0' (in float)
-0:7      arc sine (global float)
+0:7      arc sine (temp float)
 0:7        'inF0' (in float)
-0:8      floatBitsToInt (global int)
+0:8      floatBitsToInt (temp int)
 0:8        'inF0' (in float)
-0:9      floatBitsToUint (global uint)
+0:9      floatBitsToUint (temp uint)
 0:9        'inF0' (in float)
-0:10      intBitsToFloat (global float)
+0:10      intBitsToFloat (temp float)
 0:10        'inU0' (in uint)
-0:12      arc tangent (global float)
+0:12      arc tangent (temp float)
 0:12        'inF0' (in float)
-0:13      arc tangent (global float)
+0:13      arc tangent (temp float)
 0:13        'inF0' (in float)
 0:13        'inF1' (in float)
-0:14      Ceiling (global float)
+0:14      Ceiling (temp float)
 0:14        'inF0' (in float)
-0:15      clamp (global float)
+0:15      clamp (temp float)
 0:15        'inF0' (in float)
 0:15        'inF1' (in float)
 0:15        'inF2' (in float)
-0:16      cosine (global float)
+0:16      cosine (temp float)
 0:16        'inF0' (in float)
-0:17      hyp. cosine (global float)
+0:17      hyp. cosine (temp float)
 0:17        'inF0' (in float)
-0:18      bitCount (global uint)
+0:18      bitCount (temp uint)
 0:18        Constant:
 0:18          7 (const uint)
-0:19      degrees (global float)
+0:19      degrees (temp float)
 0:19        'inF0' (in float)
-0:23      exp (global float)
+0:23      exp (temp float)
 0:23        'inF0' (in float)
-0:24      exp2 (global float)
+0:24      exp2 (temp float)
 0:24        'inF0' (in float)
-0:25      findMSB (global int)
+0:25      findMSB (temp int)
 0:25        Constant:
 0:25          7 (const int)
-0:26      findLSB (global int)
+0:26      findLSB (temp int)
 0:26        Constant:
 0:26          7 (const int)
-0:27      Floor (global float)
+0:27      Floor (temp float)
 0:27        'inF0' (in float)
-0:29      mod (global float)
+0:29      mod (temp float)
 0:29        'inF0' (in float)
 0:29        'inF1' (in float)
-0:30      Fraction (global float)
+0:30      Fraction (temp float)
 0:30        'inF0' (in float)
-0:31      frexp (global float)
+0:31      frexp (temp float)
 0:31        'inF0' (in float)
 0:31        'inF1' (in float)
-0:32      isinf (global bool)
+0:32      isinf (temp bool)
 0:32        'inF0' (in float)
-0:33      isnan (global bool)
+0:33      isnan (temp bool)
 0:33        'inF0' (in float)
-0:34      ldexp (global float)
+0:34      ldexp (temp float)
 0:34        'inF0' (in float)
 0:34        'inF1' (in float)
-0:35      mix (global float)
+0:35      mix (temp float)
 0:35        'inF0' (in float)
 0:35        'inF1' (in float)
 0:35        'inF2' (in float)
-0:36      log (global float)
+0:36      log (temp float)
 0:36        'inF0' (in float)
 0:37      component-wise multiply (temp float)
 0:37        log2 (temp float)
 0:37          'inF0' (in float)
 0:37        Constant:
 0:37          0.301030
-0:38      log2 (global float)
+0:38      log2 (temp float)
 0:38        'inF0' (in float)
-0:39      max (global float)
+0:39      max (temp float)
 0:39        'inF0' (in float)
 0:39        'inF1' (in float)
-0:40      min (global float)
+0:40      min (temp float)
 0:40        'inF0' (in float)
 0:40        'inF1' (in float)
-0:42      pow (global float)
+0:42      pow (temp float)
 0:42        'inF0' (in float)
 0:42        'inF1' (in float)
-0:43      radians (global float)
+0:43      radians (temp float)
 0:43        'inF0' (in float)
-0:44      bitFieldReverse (global uint)
+0:44      bitFieldReverse (temp uint)
 0:44        Constant:
 0:44          2 (const uint)
-0:45      roundEven (global float)
+0:45      roundEven (temp float)
 0:45        'inF0' (in float)
-0:46      inverse sqrt (global float)
+0:46      inverse sqrt (temp float)
 0:46        'inF0' (in float)
 0:47      clamp (temp float)
 0:47        'inF0' (in float)
@@ -109,9 +109,9 @@
 0:47          0.000000
 0:47        Constant:
 0:47          1.000000
-0:48      Sign (global float)
+0:48      Sign (temp float)
 0:48        'inF0' (in float)
-0:49      sine (global float)
+0:49      sine (temp float)
 0:49        'inF0' (in float)
 0:50      Sequence
 0:50        move second child to first child (temp float)
@@ -122,22 +122,22 @@
 0:50          'inF2' (in float)
 0:50          cosine (temp float)
 0:50            'inF0' (in float)
-0:51      hyp. sine (global float)
+0:51      hyp. sine (temp float)
 0:51        'inF0' (in float)
-0:52      smoothstep (global float)
+0:52      smoothstep (temp float)
 0:52        'inF0' (in float)
 0:52        'inF1' (in float)
 0:52        'inF2' (in float)
-0:53      sqrt (global float)
+0:53      sqrt (temp float)
 0:53        'inF0' (in float)
-0:54      step (global float)
+0:54      step (temp float)
 0:54        'inF0' (in float)
 0:54        'inF1' (in float)
-0:55      tangent (global float)
+0:55      tangent (temp float)
 0:55        'inF0' (in float)
-0:56      hyp. tangent (global float)
+0:56      hyp. tangent (temp float)
 0:56        'inF0' (in float)
-0:58      trunc (global float)
+0:58      trunc (temp float)
 0:58        'inF0' (in float)
 0:60      Branch: Return with expression
 0:60        Constant:
@@ -159,123 +159,123 @@
 0:70      'inU0' (in 2-component vector of uint)
 0:70      'inU1' (in 2-component vector of uint)
 0:?     Sequence
-0:71      all (global bool)
+0:71      all (temp bool)
 0:71        'inF0' (in 2-component vector of float)
-0:72      Absolute value (global 2-component vector of float)
+0:72      Absolute value (temp 2-component vector of float)
 0:72        'inF0' (in 2-component vector of float)
-0:73      arc cosine (global 2-component vector of float)
+0:73      arc cosine (temp 2-component vector of float)
 0:73        'inF0' (in 2-component vector of float)
-0:74      any (global bool)
+0:74      any (temp bool)
 0:74        'inF0' (in 2-component vector of float)
-0:75      arc sine (global 2-component vector of float)
+0:75      arc sine (temp 2-component vector of float)
 0:75        'inF0' (in 2-component vector of float)
-0:76      floatBitsToInt (global 2-component vector of int)
+0:76      floatBitsToInt (temp 2-component vector of int)
 0:76        'inF0' (in 2-component vector of float)
-0:77      floatBitsToUint (global 2-component vector of uint)
+0:77      floatBitsToUint (temp 2-component vector of uint)
 0:77        'inF0' (in 2-component vector of float)
-0:78      intBitsToFloat (global 2-component vector of float)
+0:78      intBitsToFloat (temp 2-component vector of float)
 0:78        'inU0' (in 2-component vector of uint)
-0:80      arc tangent (global 2-component vector of float)
+0:80      arc tangent (temp 2-component vector of float)
 0:80        'inF0' (in 2-component vector of float)
-0:81      arc tangent (global 2-component vector of float)
+0:81      arc tangent (temp 2-component vector of float)
 0:81        'inF0' (in 2-component vector of float)
 0:81        'inF1' (in 2-component vector of float)
-0:82      Ceiling (global 2-component vector of float)
+0:82      Ceiling (temp 2-component vector of float)
 0:82        'inF0' (in 2-component vector of float)
-0:83      clamp (global 2-component vector of float)
+0:83      clamp (temp 2-component vector of float)
 0:83        'inF0' (in 2-component vector of float)
 0:83        'inF1' (in 2-component vector of float)
 0:83        'inF2' (in 2-component vector of float)
-0:84      cosine (global 2-component vector of float)
+0:84      cosine (temp 2-component vector of float)
 0:84        'inF0' (in 2-component vector of float)
-0:85      hyp. cosine (global 2-component vector of float)
+0:85      hyp. cosine (temp 2-component vector of float)
 0:85        'inF0' (in 2-component vector of float)
-0:?       bitCount (global 2-component vector of uint)
+0:?       bitCount (temp 2-component vector of uint)
 0:?         Constant:
 0:?           7 (const uint)
 0:?           3 (const uint)
-0:87      degrees (global 2-component vector of float)
+0:87      degrees (temp 2-component vector of float)
 0:87        'inF0' (in 2-component vector of float)
-0:88      distance (global float)
+0:88      distance (temp float)
 0:88        'inF0' (in 2-component vector of float)
 0:88        'inF1' (in 2-component vector of float)
-0:89      dot-product (global float)
+0:89      dot-product (temp float)
 0:89        'inF0' (in 2-component vector of float)
 0:89        'inF1' (in 2-component vector of float)
-0:93      exp (global 2-component vector of float)
+0:93      exp (temp 2-component vector of float)
 0:93        'inF0' (in 2-component vector of float)
-0:94      exp2 (global 2-component vector of float)
+0:94      exp2 (temp 2-component vector of float)
 0:94        'inF0' (in 2-component vector of float)
-0:95      face-forward (global 2-component vector of float)
+0:95      face-forward (temp 2-component vector of float)
 0:95        'inF0' (in 2-component vector of float)
 0:95        'inF1' (in 2-component vector of float)
 0:95        'inF2' (in 2-component vector of float)
-0:96      findMSB (global int)
+0:96      findMSB (temp int)
 0:96        Constant:
 0:96          7 (const int)
-0:97      findLSB (global int)
+0:97      findLSB (temp int)
 0:97        Constant:
 0:97          7 (const int)
-0:98      Floor (global 2-component vector of float)
+0:98      Floor (temp 2-component vector of float)
 0:98        'inF0' (in 2-component vector of float)
-0:100      mod (global 2-component vector of float)
+0:100      mod (temp 2-component vector of float)
 0:100        'inF0' (in 2-component vector of float)
 0:100        'inF1' (in 2-component vector of float)
-0:101      Fraction (global 2-component vector of float)
+0:101      Fraction (temp 2-component vector of float)
 0:101        'inF0' (in 2-component vector of float)
-0:102      frexp (global 2-component vector of float)
+0:102      frexp (temp 2-component vector of float)
 0:102        'inF0' (in 2-component vector of float)
 0:102        'inF1' (in 2-component vector of float)
-0:103      isinf (global 2-component vector of bool)
+0:103      isinf (temp 2-component vector of bool)
 0:103        'inF0' (in 2-component vector of float)
-0:104      isnan (global 2-component vector of bool)
+0:104      isnan (temp 2-component vector of bool)
 0:104        'inF0' (in 2-component vector of float)
-0:105      ldexp (global 2-component vector of float)
+0:105      ldexp (temp 2-component vector of float)
 0:105        'inF0' (in 2-component vector of float)
 0:105        'inF1' (in 2-component vector of float)
-0:106      mix (global 2-component vector of float)
+0:106      mix (temp 2-component vector of float)
 0:106        'inF0' (in 2-component vector of float)
 0:106        'inF1' (in 2-component vector of float)
 0:106        'inF2' (in 2-component vector of float)
-0:107      length (global float)
+0:107      length (temp float)
 0:107        'inF0' (in 2-component vector of float)
-0:108      log (global 2-component vector of float)
+0:108      log (temp 2-component vector of float)
 0:108        'inF0' (in 2-component vector of float)
 0:109      vector-scale (temp 2-component vector of float)
 0:109        log2 (temp 2-component vector of float)
 0:109          'inF0' (in 2-component vector of float)
 0:109        Constant:
 0:109          0.301030
-0:110      log2 (global 2-component vector of float)
+0:110      log2 (temp 2-component vector of float)
 0:110        'inF0' (in 2-component vector of float)
-0:111      max (global 2-component vector of float)
+0:111      max (temp 2-component vector of float)
 0:111        'inF0' (in 2-component vector of float)
 0:111        'inF1' (in 2-component vector of float)
-0:112      min (global 2-component vector of float)
+0:112      min (temp 2-component vector of float)
 0:112        'inF0' (in 2-component vector of float)
 0:112        'inF1' (in 2-component vector of float)
-0:114      normalize (global 2-component vector of float)
+0:114      normalize (temp 2-component vector of float)
 0:114        'inF0' (in 2-component vector of float)
-0:115      pow (global 2-component vector of float)
+0:115      pow (temp 2-component vector of float)
 0:115        'inF0' (in 2-component vector of float)
 0:115        'inF1' (in 2-component vector of float)
-0:116      radians (global 2-component vector of float)
+0:116      radians (temp 2-component vector of float)
 0:116        'inF0' (in 2-component vector of float)
-0:117      reflect (global 2-component vector of float)
+0:117      reflect (temp 2-component vector of float)
 0:117        'inF0' (in 2-component vector of float)
 0:117        'inF1' (in 2-component vector of float)
-0:118      refract (global 2-component vector of float)
+0:118      refract (temp 2-component vector of float)
 0:118        'inF0' (in 2-component vector of float)
 0:118        'inF1' (in 2-component vector of float)
 0:118        Constant:
 0:118          2.000000
-0:?       bitFieldReverse (global 2-component vector of uint)
+0:?       bitFieldReverse (temp 2-component vector of uint)
 0:?         Constant:
 0:?           1 (const uint)
 0:?           2 (const uint)
-0:120      roundEven (global 2-component vector of float)
+0:120      roundEven (temp 2-component vector of float)
 0:120        'inF0' (in 2-component vector of float)
-0:121      inverse sqrt (global 2-component vector of float)
+0:121      inverse sqrt (temp 2-component vector of float)
 0:121        'inF0' (in 2-component vector of float)
 0:122      clamp (temp 2-component vector of float)
 0:122        'inF0' (in 2-component vector of float)
@@ -283,9 +283,9 @@
 0:122          0.000000
 0:122        Constant:
 0:122          1.000000
-0:123      Sign (global 2-component vector of float)
+0:123      Sign (temp 2-component vector of float)
 0:123        'inF0' (in 2-component vector of float)
-0:124      sine (global 2-component vector of float)
+0:124      sine (temp 2-component vector of float)
 0:124        'inF0' (in 2-component vector of float)
 0:125      Sequence
 0:125        move second child to first child (temp 2-component vector of float)
@@ -296,22 +296,22 @@
 0:125          'inF2' (in 2-component vector of float)
 0:125          cosine (temp 2-component vector of float)
 0:125            'inF0' (in 2-component vector of float)
-0:126      hyp. sine (global 2-component vector of float)
+0:126      hyp. sine (temp 2-component vector of float)
 0:126        'inF0' (in 2-component vector of float)
-0:127      smoothstep (global 2-component vector of float)
+0:127      smoothstep (temp 2-component vector of float)
 0:127        'inF0' (in 2-component vector of float)
 0:127        'inF1' (in 2-component vector of float)
 0:127        'inF2' (in 2-component vector of float)
-0:128      sqrt (global 2-component vector of float)
+0:128      sqrt (temp 2-component vector of float)
 0:128        'inF0' (in 2-component vector of float)
-0:129      step (global 2-component vector of float)
+0:129      step (temp 2-component vector of float)
 0:129        'inF0' (in 2-component vector of float)
 0:129        'inF1' (in 2-component vector of float)
-0:130      tangent (global 2-component vector of float)
+0:130      tangent (temp 2-component vector of float)
 0:130        'inF0' (in 2-component vector of float)
-0:131      hyp. tangent (global 2-component vector of float)
+0:131      hyp. tangent (temp 2-component vector of float)
 0:131        'inF0' (in 2-component vector of float)
-0:133      trunc (global 2-component vector of float)
+0:133      trunc (temp 2-component vector of float)
 0:133        'inF0' (in 2-component vector of float)
 0:136      Branch: Return with expression
 0:?         Constant:
@@ -325,128 +325,128 @@
 0:140      'inU0' (in 3-component vector of uint)
 0:140      'inU1' (in 3-component vector of uint)
 0:?     Sequence
-0:141      all (global bool)
+0:141      all (temp bool)
 0:141        'inF0' (in 3-component vector of float)
-0:142      Absolute value (global 3-component vector of float)
+0:142      Absolute value (temp 3-component vector of float)
 0:142        'inF0' (in 3-component vector of float)
-0:143      arc cosine (global 3-component vector of float)
+0:143      arc cosine (temp 3-component vector of float)
 0:143        'inF0' (in 3-component vector of float)
-0:144      any (global bool)
+0:144      any (temp bool)
 0:144        'inF0' (in 3-component vector of float)
-0:145      arc sine (global 3-component vector of float)
+0:145      arc sine (temp 3-component vector of float)
 0:145        'inF0' (in 3-component vector of float)
-0:146      floatBitsToInt (global 3-component vector of int)
+0:146      floatBitsToInt (temp 3-component vector of int)
 0:146        'inF0' (in 3-component vector of float)
-0:147      floatBitsToUint (global 3-component vector of uint)
+0:147      floatBitsToUint (temp 3-component vector of uint)
 0:147        'inF0' (in 3-component vector of float)
-0:148      intBitsToFloat (global 3-component vector of float)
+0:148      intBitsToFloat (temp 3-component vector of float)
 0:148        'inU0' (in 3-component vector of uint)
-0:150      arc tangent (global 3-component vector of float)
+0:150      arc tangent (temp 3-component vector of float)
 0:150        'inF0' (in 3-component vector of float)
-0:151      arc tangent (global 3-component vector of float)
+0:151      arc tangent (temp 3-component vector of float)
 0:151        'inF0' (in 3-component vector of float)
 0:151        'inF1' (in 3-component vector of float)
-0:152      Ceiling (global 3-component vector of float)
+0:152      Ceiling (temp 3-component vector of float)
 0:152        'inF0' (in 3-component vector of float)
-0:153      clamp (global 3-component vector of float)
+0:153      clamp (temp 3-component vector of float)
 0:153        'inF0' (in 3-component vector of float)
 0:153        'inF1' (in 3-component vector of float)
 0:153        'inF2' (in 3-component vector of float)
-0:154      cosine (global 3-component vector of float)
+0:154      cosine (temp 3-component vector of float)
 0:154        'inF0' (in 3-component vector of float)
-0:155      hyp. cosine (global 3-component vector of float)
+0:155      hyp. cosine (temp 3-component vector of float)
 0:155        'inF0' (in 3-component vector of float)
-0:?       bitCount (global 3-component vector of uint)
+0:?       bitCount (temp 3-component vector of uint)
 0:?         Constant:
 0:?           7 (const uint)
 0:?           3 (const uint)
 0:?           5 (const uint)
-0:157      cross-product (global 3-component vector of float)
+0:157      cross-product (temp 3-component vector of float)
 0:157        'inF0' (in 3-component vector of float)
 0:157        'inF1' (in 3-component vector of float)
-0:158      degrees (global 3-component vector of float)
+0:158      degrees (temp 3-component vector of float)
 0:158        'inF0' (in 3-component vector of float)
-0:159      distance (global float)
+0:159      distance (temp float)
 0:159        'inF0' (in 3-component vector of float)
 0:159        'inF1' (in 3-component vector of float)
-0:160      dot-product (global float)
+0:160      dot-product (temp float)
 0:160        'inF0' (in 3-component vector of float)
 0:160        'inF1' (in 3-component vector of float)
-0:164      exp (global 3-component vector of float)
+0:164      exp (temp 3-component vector of float)
 0:164        'inF0' (in 3-component vector of float)
-0:165      exp2 (global 3-component vector of float)
+0:165      exp2 (temp 3-component vector of float)
 0:165        'inF0' (in 3-component vector of float)
-0:166      face-forward (global 3-component vector of float)
+0:166      face-forward (temp 3-component vector of float)
 0:166        'inF0' (in 3-component vector of float)
 0:166        'inF1' (in 3-component vector of float)
 0:166        'inF2' (in 3-component vector of float)
-0:167      findMSB (global int)
+0:167      findMSB (temp int)
 0:167        Constant:
 0:167          7 (const int)
-0:168      findLSB (global int)
+0:168      findLSB (temp int)
 0:168        Constant:
 0:168          7 (const int)
-0:169      Floor (global 3-component vector of float)
+0:169      Floor (temp 3-component vector of float)
 0:169        'inF0' (in 3-component vector of float)
-0:171      mod (global 3-component vector of float)
+0:171      mod (temp 3-component vector of float)
 0:171        'inF0' (in 3-component vector of float)
 0:171        'inF1' (in 3-component vector of float)
-0:172      Fraction (global 3-component vector of float)
+0:172      Fraction (temp 3-component vector of float)
 0:172        'inF0' (in 3-component vector of float)
-0:173      frexp (global 3-component vector of float)
+0:173      frexp (temp 3-component vector of float)
 0:173        'inF0' (in 3-component vector of float)
 0:173        'inF1' (in 3-component vector of float)
-0:174      isinf (global 3-component vector of bool)
+0:174      isinf (temp 3-component vector of bool)
 0:174        'inF0' (in 3-component vector of float)
-0:175      isnan (global 3-component vector of bool)
+0:175      isnan (temp 3-component vector of bool)
 0:175        'inF0' (in 3-component vector of float)
-0:176      ldexp (global 3-component vector of float)
+0:176      ldexp (temp 3-component vector of float)
 0:176        'inF0' (in 3-component vector of float)
 0:176        'inF1' (in 3-component vector of float)
-0:177      mix (global 3-component vector of float)
+0:177      mix (temp 3-component vector of float)
 0:177        'inF0' (in 3-component vector of float)
 0:177        'inF1' (in 3-component vector of float)
 0:177        'inF2' (in 3-component vector of float)
-0:178      length (global float)
+0:178      length (temp float)
 0:178        'inF0' (in 3-component vector of float)
-0:179      log (global 3-component vector of float)
+0:179      log (temp 3-component vector of float)
 0:179        'inF0' (in 3-component vector of float)
 0:180      vector-scale (temp 3-component vector of float)
 0:180        log2 (temp 3-component vector of float)
 0:180          'inF0' (in 3-component vector of float)
 0:180        Constant:
 0:180          0.301030
-0:181      log2 (global 3-component vector of float)
+0:181      log2 (temp 3-component vector of float)
 0:181        'inF0' (in 3-component vector of float)
-0:182      max (global 3-component vector of float)
+0:182      max (temp 3-component vector of float)
 0:182        'inF0' (in 3-component vector of float)
 0:182        'inF1' (in 3-component vector of float)
-0:183      min (global 3-component vector of float)
+0:183      min (temp 3-component vector of float)
 0:183        'inF0' (in 3-component vector of float)
 0:183        'inF1' (in 3-component vector of float)
-0:185      normalize (global 3-component vector of float)
+0:185      normalize (temp 3-component vector of float)
 0:185        'inF0' (in 3-component vector of float)
-0:186      pow (global 3-component vector of float)
+0:186      pow (temp 3-component vector of float)
 0:186        'inF0' (in 3-component vector of float)
 0:186        'inF1' (in 3-component vector of float)
-0:187      radians (global 3-component vector of float)
+0:187      radians (temp 3-component vector of float)
 0:187        'inF0' (in 3-component vector of float)
-0:188      reflect (global 3-component vector of float)
+0:188      reflect (temp 3-component vector of float)
 0:188        'inF0' (in 3-component vector of float)
 0:188        'inF1' (in 3-component vector of float)
-0:189      refract (global 3-component vector of float)
+0:189      refract (temp 3-component vector of float)
 0:189        'inF0' (in 3-component vector of float)
 0:189        'inF1' (in 3-component vector of float)
 0:189        Constant:
 0:189          2.000000
-0:?       bitFieldReverse (global 3-component vector of uint)
+0:?       bitFieldReverse (temp 3-component vector of uint)
 0:?         Constant:
 0:?           1 (const uint)
 0:?           2 (const uint)
 0:?           3 (const uint)
-0:191      roundEven (global 3-component vector of float)
+0:191      roundEven (temp 3-component vector of float)
 0:191        'inF0' (in 3-component vector of float)
-0:192      inverse sqrt (global 3-component vector of float)
+0:192      inverse sqrt (temp 3-component vector of float)
 0:192        'inF0' (in 3-component vector of float)
 0:193      clamp (temp 3-component vector of float)
 0:193        'inF0' (in 3-component vector of float)
@@ -454,9 +454,9 @@
 0:193          0.000000
 0:193        Constant:
 0:193          1.000000
-0:194      Sign (global 3-component vector of float)
+0:194      Sign (temp 3-component vector of float)
 0:194        'inF0' (in 3-component vector of float)
-0:195      sine (global 3-component vector of float)
+0:195      sine (temp 3-component vector of float)
 0:195        'inF0' (in 3-component vector of float)
 0:196      Sequence
 0:196        move second child to first child (temp 3-component vector of float)
@@ -467,22 +467,22 @@
 0:196          'inF2' (in 3-component vector of float)
 0:196          cosine (temp 3-component vector of float)
 0:196            'inF0' (in 3-component vector of float)
-0:197      hyp. sine (global 3-component vector of float)
+0:197      hyp. sine (temp 3-component vector of float)
 0:197        'inF0' (in 3-component vector of float)
-0:198      smoothstep (global 3-component vector of float)
+0:198      smoothstep (temp 3-component vector of float)
 0:198        'inF0' (in 3-component vector of float)
 0:198        'inF1' (in 3-component vector of float)
 0:198        'inF2' (in 3-component vector of float)
-0:199      sqrt (global 3-component vector of float)
+0:199      sqrt (temp 3-component vector of float)
 0:199        'inF0' (in 3-component vector of float)
-0:200      step (global 3-component vector of float)
+0:200      step (temp 3-component vector of float)
 0:200        'inF0' (in 3-component vector of float)
 0:200        'inF1' (in 3-component vector of float)
-0:201      tangent (global 3-component vector of float)
+0:201      tangent (temp 3-component vector of float)
 0:201        'inF0' (in 3-component vector of float)
-0:202      hyp. tangent (global 3-component vector of float)
+0:202      hyp. tangent (temp 3-component vector of float)
 0:202        'inF0' (in 3-component vector of float)
-0:204      trunc (global 3-component vector of float)
+0:204      trunc (temp 3-component vector of float)
 0:204        'inF0' (in 3-component vector of float)
 0:207      Branch: Return with expression
 0:?         Constant:
@@ -497,49 +497,49 @@
 0:211      'inU0' (in 4-component vector of uint)
 0:211      'inU1' (in 4-component vector of uint)
 0:?     Sequence
-0:212      all (global bool)
+0:212      all (temp bool)
 0:212        'inF0' (in 4-component vector of float)
-0:213      Absolute value (global 4-component vector of float)
+0:213      Absolute value (temp 4-component vector of float)
 0:213        'inF0' (in 4-component vector of float)
-0:214      arc cosine (global 4-component vector of float)
+0:214      arc cosine (temp 4-component vector of float)
 0:214        'inF0' (in 4-component vector of float)
-0:215      any (global bool)
+0:215      any (temp bool)
 0:215        'inF0' (in 4-component vector of float)
-0:216      arc sine (global 4-component vector of float)
+0:216      arc sine (temp 4-component vector of float)
 0:216        'inF0' (in 4-component vector of float)
-0:217      floatBitsToInt (global 4-component vector of int)
+0:217      floatBitsToInt (temp 4-component vector of int)
 0:217        'inF0' (in 4-component vector of float)
-0:218      floatBitsToUint (global 4-component vector of uint)
+0:218      floatBitsToUint (temp 4-component vector of uint)
 0:218        'inF0' (in 4-component vector of float)
-0:219      intBitsToFloat (global 4-component vector of float)
+0:219      intBitsToFloat (temp 4-component vector of float)
 0:219        'inU0' (in 4-component vector of uint)
-0:221      arc tangent (global 4-component vector of float)
+0:221      arc tangent (temp 4-component vector of float)
 0:221        'inF0' (in 4-component vector of float)
-0:222      arc tangent (global 4-component vector of float)
+0:222      arc tangent (temp 4-component vector of float)
 0:222        'inF0' (in 4-component vector of float)
 0:222        'inF1' (in 4-component vector of float)
-0:223      Ceiling (global 4-component vector of float)
+0:223      Ceiling (temp 4-component vector of float)
 0:223        'inF0' (in 4-component vector of float)
-0:224      clamp (global 4-component vector of float)
+0:224      clamp (temp 4-component vector of float)
 0:224        'inF0' (in 4-component vector of float)
 0:224        'inF1' (in 4-component vector of float)
 0:224        'inF2' (in 4-component vector of float)
-0:225      cosine (global 4-component vector of float)
+0:225      cosine (temp 4-component vector of float)
 0:225        'inF0' (in 4-component vector of float)
-0:226      hyp. cosine (global 4-component vector of float)
+0:226      hyp. cosine (temp 4-component vector of float)
 0:226        'inF0' (in 4-component vector of float)
-0:?       bitCount (global 4-component vector of uint)
+0:?       bitCount (temp 4-component vector of uint)
 0:?         Constant:
 0:?           7 (const uint)
 0:?           3 (const uint)
 0:?           5 (const uint)
 0:?           2 (const uint)
-0:228      degrees (global 4-component vector of float)
+0:228      degrees (temp 4-component vector of float)
 0:228        'inF0' (in 4-component vector of float)
-0:229      distance (global float)
+0:229      distance (temp float)
 0:229        'inF0' (in 4-component vector of float)
 0:229        'inF1' (in 4-component vector of float)
-0:230      dot-product (global float)
+0:230      dot-product (temp float)
 0:230        'inF0' (in 4-component vector of float)
 0:230        'inF1' (in 4-component vector of float)
 0:231      Construct vec4 (temp 4-component vector of float)
@@ -562,82 +562,82 @@
 0:231          'inF1' (in 4-component vector of float)
 0:231          Constant:
 0:231            3 (const int)
-0:235      exp (global 4-component vector of float)
+0:235      exp (temp 4-component vector of float)
 0:235        'inF0' (in 4-component vector of float)
-0:236      exp2 (global 4-component vector of float)
+0:236      exp2 (temp 4-component vector of float)
 0:236        'inF0' (in 4-component vector of float)
-0:237      face-forward (global 4-component vector of float)
+0:237      face-forward (temp 4-component vector of float)
 0:237        'inF0' (in 4-component vector of float)
 0:237        'inF1' (in 4-component vector of float)
 0:237        'inF2' (in 4-component vector of float)
-0:238      findMSB (global int)
+0:238      findMSB (temp int)
 0:238        Constant:
 0:238          7 (const int)
-0:239      findLSB (global int)
+0:239      findLSB (temp int)
 0:239        Constant:
 0:239          7 (const int)
-0:240      Floor (global 4-component vector of float)
+0:240      Floor (temp 4-component vector of float)
 0:240        'inF0' (in 4-component vector of float)
-0:242      mod (global 4-component vector of float)
+0:242      mod (temp 4-component vector of float)
 0:242        'inF0' (in 4-component vector of float)
 0:242        'inF1' (in 4-component vector of float)
-0:243      Fraction (global 4-component vector of float)
+0:243      Fraction (temp 4-component vector of float)
 0:243        'inF0' (in 4-component vector of float)
-0:244      frexp (global 4-component vector of float)
+0:244      frexp (temp 4-component vector of float)
 0:244        'inF0' (in 4-component vector of float)
 0:244        'inF1' (in 4-component vector of float)
-0:245      isinf (global 4-component vector of bool)
+0:245      isinf (temp 4-component vector of bool)
 0:245        'inF0' (in 4-component vector of float)
-0:246      isnan (global 4-component vector of bool)
+0:246      isnan (temp 4-component vector of bool)
 0:246        'inF0' (in 4-component vector of float)
-0:247      ldexp (global 4-component vector of float)
+0:247      ldexp (temp 4-component vector of float)
 0:247        'inF0' (in 4-component vector of float)
 0:247        'inF1' (in 4-component vector of float)
-0:248      mix (global 4-component vector of float)
+0:248      mix (temp 4-component vector of float)
 0:248        'inF0' (in 4-component vector of float)
 0:248        'inF1' (in 4-component vector of float)
 0:248        'inF2' (in 4-component vector of float)
-0:249      length (global float)
+0:249      length (temp float)
 0:249        'inF0' (in 4-component vector of float)
-0:250      log (global 4-component vector of float)
+0:250      log (temp 4-component vector of float)
 0:250        'inF0' (in 4-component vector of float)
 0:251      vector-scale (temp 4-component vector of float)
 0:251        log2 (temp 4-component vector of float)
 0:251          'inF0' (in 4-component vector of float)
 0:251        Constant:
 0:251          0.301030
-0:252      log2 (global 4-component vector of float)
+0:252      log2 (temp 4-component vector of float)
 0:252        'inF0' (in 4-component vector of float)
-0:253      max (global 4-component vector of float)
+0:253      max (temp 4-component vector of float)
 0:253        'inF0' (in 4-component vector of float)
 0:253        'inF1' (in 4-component vector of float)
-0:254      min (global 4-component vector of float)
+0:254      min (temp 4-component vector of float)
 0:254        'inF0' (in 4-component vector of float)
 0:254        'inF1' (in 4-component vector of float)
-0:256      normalize (global 4-component vector of float)
+0:256      normalize (temp 4-component vector of float)
 0:256        'inF0' (in 4-component vector of float)
-0:257      pow (global 4-component vector of float)
+0:257      pow (temp 4-component vector of float)
 0:257        'inF0' (in 4-component vector of float)
 0:257        'inF1' (in 4-component vector of float)
-0:258      radians (global 4-component vector of float)
+0:258      radians (temp 4-component vector of float)
 0:258        'inF0' (in 4-component vector of float)
-0:259      reflect (global 4-component vector of float)
+0:259      reflect (temp 4-component vector of float)
 0:259        'inF0' (in 4-component vector of float)
 0:259        'inF1' (in 4-component vector of float)
-0:260      refract (global 4-component vector of float)
+0:260      refract (temp 4-component vector of float)
 0:260        'inF0' (in 4-component vector of float)
 0:260        'inF1' (in 4-component vector of float)
 0:260        Constant:
 0:260          2.000000
-0:?       bitFieldReverse (global 4-component vector of uint)
+0:?       bitFieldReverse (temp 4-component vector of uint)
 0:?         Constant:
 0:?           1 (const uint)
 0:?           2 (const uint)
 0:?           3 (const uint)
 0:?           4 (const uint)
-0:262      roundEven (global 4-component vector of float)
+0:262      roundEven (temp 4-component vector of float)
 0:262        'inF0' (in 4-component vector of float)
-0:263      inverse sqrt (global 4-component vector of float)
+0:263      inverse sqrt (temp 4-component vector of float)
 0:263        'inF0' (in 4-component vector of float)
 0:264      clamp (temp 4-component vector of float)
 0:264        'inF0' (in 4-component vector of float)
@@ -645,9 +645,9 @@
 0:264          0.000000
 0:264        Constant:
 0:264          1.000000
-0:265      Sign (global 4-component vector of float)
+0:265      Sign (temp 4-component vector of float)
 0:265        'inF0' (in 4-component vector of float)
-0:266      sine (global 4-component vector of float)
+0:266      sine (temp 4-component vector of float)
 0:266        'inF0' (in 4-component vector of float)
 0:267      Sequence
 0:267        move second child to first child (temp 4-component vector of float)
@@ -658,22 +658,22 @@
 0:267          'inF2' (in 4-component vector of float)
 0:267          cosine (temp 4-component vector of float)
 0:267            'inF0' (in 4-component vector of float)
-0:268      hyp. sine (global 4-component vector of float)
+0:268      hyp. sine (temp 4-component vector of float)
 0:268        'inF0' (in 4-component vector of float)
-0:269      smoothstep (global 4-component vector of float)
+0:269      smoothstep (temp 4-component vector of float)
 0:269        'inF0' (in 4-component vector of float)
 0:269        'inF1' (in 4-component vector of float)
 0:269        'inF2' (in 4-component vector of float)
-0:270      sqrt (global 4-component vector of float)
+0:270      sqrt (temp 4-component vector of float)
 0:270        'inF0' (in 4-component vector of float)
-0:271      step (global 4-component vector of float)
+0:271      step (temp 4-component vector of float)
 0:271        'inF0' (in 4-component vector of float)
 0:271        'inF1' (in 4-component vector of float)
-0:272      tangent (global 4-component vector of float)
+0:272      tangent (temp 4-component vector of float)
 0:272        'inF0' (in 4-component vector of float)
-0:273      hyp. tangent (global 4-component vector of float)
+0:273      hyp. tangent (temp 4-component vector of float)
 0:273        'inF0' (in 4-component vector of float)
-0:275      trunc (global 4-component vector of float)
+0:275      trunc (temp 4-component vector of float)
 0:275        'inF0' (in 4-component vector of float)
 0:278      Branch: Return with expression
 0:?         Constant:
@@ -687,85 +687,85 @@
 0:336      'inF1' (in 2X2 matrix of float)
 0:336      'inF2' (in 2X2 matrix of float)
 0:?     Sequence
-0:338      all (global bool)
+0:338      all (temp bool)
 0:338        'inF0' (in 2X2 matrix of float)
-0:338      Absolute value (global 2X2 matrix of float)
+0:338      Absolute value (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
-0:338      arc cosine (global 2X2 matrix of float)
+0:338      arc cosine (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
-0:338      any (global bool)
+0:338      any (temp bool)
 0:338        'inF0' (in 2X2 matrix of float)
-0:338      arc sine (global 2X2 matrix of float)
+0:338      arc sine (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
-0:338      arc tangent (global 2X2 matrix of float)
+0:338      arc tangent (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
-0:338      arc tangent (global 2X2 matrix of float)
+0:338      arc tangent (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
 0:338        'inF1' (in 2X2 matrix of float)
-0:338      Ceiling (global 2X2 matrix of float)
+0:338      Ceiling (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
-0:338      clamp (global 2X2 matrix of float)
+0:338      clamp (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
 0:338        'inF1' (in 2X2 matrix of float)
 0:338        'inF2' (in 2X2 matrix of float)
-0:338      cosine (global 2X2 matrix of float)
+0:338      cosine (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
-0:338      hyp. cosine (global 2X2 matrix of float)
+0:338      hyp. cosine (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
-0:338      degrees (global 2X2 matrix of float)
+0:338      degrees (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
-0:338      determinant (global float)
+0:338      determinant (temp float)
 0:338        'inF0' (in 2X2 matrix of float)
-0:338      exp (global 2X2 matrix of float)
+0:338      exp (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
-0:338      exp2 (global 2X2 matrix of float)
+0:338      exp2 (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
-0:338      findMSB (global int)
+0:338      findMSB (temp int)
 0:338        Constant:
 0:338          7 (const int)
-0:338      findLSB (global int)
+0:338      findLSB (temp int)
 0:338        Constant:
 0:338          7 (const int)
-0:338      Floor (global 2X2 matrix of float)
+0:338      Floor (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
-0:338      mod (global 2X2 matrix of float)
+0:338      mod (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
 0:338        'inF1' (in 2X2 matrix of float)
-0:338      Fraction (global 2X2 matrix of float)
+0:338      Fraction (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
-0:338      frexp (global 2X2 matrix of float)
+0:338      frexp (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
 0:338        'inF1' (in 2X2 matrix of float)
-0:338      ldexp (global 2X2 matrix of float)
+0:338      ldexp (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
 0:338        'inF1' (in 2X2 matrix of float)
-0:338      mix (global 2X2 matrix of float)
+0:338      mix (temp 2X2 matrix of float)
 0:338        'inF0' (in 2X2 matrix of float)
 0:338        'inF1' (in 2X2 matrix of float)
 0:338        'inF2' (in 2X2 matrix of float