Backward incompatible: Turn on PureOperatorBuiltins: use only enum-based built-in functions in the AST.

If this breaks your AST consumer, best is to modify it to test
against the enum values instead of doing string comparisons on
built-in function names.  This is the reason the change was made.

If you need the old behavior, you should be able to get it back by changing
PureOperatorBuiltins to be false instead of true.  This path will work for
a while, but is marked deprecated.

Also, the old behavior is tagged as release 2.4.
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 4b8c933..045b856 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -96,8 +96,8 @@
     void visitFunctions(const glslang::TIntermSequence&);
     void handleFunctionEntry(const glslang::TIntermAggregate* node);
     void translateArguments(const glslang::TIntermSequence& glslangArguments, std::vector<spv::Id>& arguments);
-    spv::Id handleBuiltInFunctionCall(const glslang::TIntermAggregate*);
-    spv::Id handleTextureCall(spv::Decoration precision, glslang::TOperator, spv::Id typeId, glslang::TSampler, std::vector<spv::Id>& idArguments);
+    void translateArguments(glslang::TIntermUnary& node, std::vector<spv::Id>& arguments);
+    spv::Id createImageTextureFunctionCall(glslang::TIntermOperator* node);
     spv::Id handleUserFunctionCall(const glslang::TIntermAggregate*);
 
     spv::Id createBinaryOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, spv::Id left, spv::Id right, glslang::TBasicType typeProxy, bool reduceComparison = true);
@@ -664,6 +664,20 @@
 
 bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TIntermUnary* node)
 {
+    spv::Id result = spv::NoResult;
+
+    // try texturing first
+    result = createImageTextureFunctionCall(node);
+    if (result != spv::NoResult) {
+        builder.clearAccessChain();
+        builder.setAccessChainRValue(result);
+
+        return false; // done with this node
+    }
+
+    // Non-texturing.
+    // Start by evaluating the operand
+
     builder.clearAccessChain();
     node->getOperand()->traverse(this);
     spv::Id operand = builder.accessChainLoad(TranslatePrecisionDecoration(node->getOperand()->getType()));
@@ -671,11 +685,13 @@
     spv::Decoration precision = TranslatePrecisionDecoration(node->getType());
 
     // it could be a conversion
-    spv::Id result = createConversion(node->getOp(), precision, convertGlslangToSpvType(node->getType()), operand);
+    if (! result)
+        result = createConversion(node->getOp(), precision, convertGlslangToSpvType(node->getType()), operand);
 
     // if not, then possibly an operation
     if (! result)
-        result = createUnaryOperation(node->getOp(), precision, convertGlslangToSpvType(node->getType()), operand, node->getBasicType() == glslang::EbtFloat || node->getBasicType() == glslang::EbtDouble);
+        result = createUnaryOperation(node->getOp(), precision, convertGlslangToSpvType(node->getType()), operand,
+                                      node->getBasicType() == glslang::EbtFloat || node->getBasicType() == glslang::EbtDouble);
 
     if (result) {
         builder.clearAccessChain();
@@ -728,16 +744,6 @@
         builder.createNoResultOp(spv::OpEndStreamPrimitive, operand);
         return false;
 
-    case glslang::EOpAtomicCounterIncrement:
-    case glslang::EOpAtomicCounterDecrement:
-    case glslang::EOpAtomicCounter:
-    {
-        // Handle all of the atomics in one place, in createAtomicOperation()
-        std::vector<spv::Id> operands;
-        operands.push_back(operand);
-        result = createAtomicOperation(node->getOp(), precision, convertGlslangToSpvType(node->getType()), operands);
-        return false;
-    }
     default:
         spv::MissingFunctionality("glslang unary");
         break;
@@ -748,7 +754,17 @@
 
 bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TIntermAggregate* node)
 {
-    spv::Id result;
+    spv::Id result = spv::NoResult;
+
+    // try texturing
+    result = createImageTextureFunctionCall(node);
+    if (result != spv::NoResult) {
+        builder.clearAccessChain();
+        builder.setAccessChainRValue(result);
+
+        return false;
+    }
+
     glslang::TOperator binOp = glslang::EOpNull;
     bool reduceComparison = true;
     bool isMatrix = false;
@@ -830,8 +846,6 @@
     {
         if (node->isUserDefined())
             result = handleUserFunctionCall(node);
-        else
-            result = handleBuiltInFunctionCall(node);
 
         if (! result) {
             spv::MissingFunctionality("glslang function call");
@@ -984,6 +998,21 @@
         atomic = true;
         break;
 
+    case glslang::EOpAddCarry:
+    case glslang::EOpSubBorrow:
+    case glslang::EOpUMulExtended:
+    case glslang::EOpIMulExtended:
+    case glslang::EOpBitfieldExtract:
+    case glslang::EOpBitfieldInsert:
+        spv::MissingFunctionality("integer aggregate");
+        break;
+
+    case glslang::EOpFma:
+    case glslang::EFrexp:
+    case glslang::ELdexp:
+        spv::MissingFunctionality("fma/frexp/ldexp aggregate");
+        break;
+
     default:
         break;
     }
@@ -1578,123 +1607,123 @@
     }
 }
 
-spv::Id TGlslangToSpvTraverser::handleBuiltInFunctionCall(const glslang::TIntermAggregate* node)
+void TGlslangToSpvTraverser::translateArguments(glslang::TIntermUnary& node, std::vector<spv::Id>& arguments)
 {
-    std::vector<spv::Id> arguments;
-    translateArguments(node->getSequence(), arguments);
-    spv::Decoration precision = TranslatePrecisionDecoration(node->getType());
+    builder.clearAccessChain();
+    node.getOperand()->traverse(this);
+    arguments.push_back(builder.accessChainLoad(TranslatePrecisionDecoration(node.getAsTyped()->getType())));
+}
 
-    if (node->getName() == "ftransform(") {
-        spv::MissingFunctionality("ftransform()");
-        //spv::Id vertex = builder.createVariable(spv::StorageShaderGlobal, spv::VectorType::get(spv::makeFloatType(), 4),
-        //                                                             "gl_Vertex_sim");
-        //spv::Id matrix = builder.createVariable(spv::StorageShaderGlobal, spv::VectorType::get(spv::makeFloatType(), 4),
-        //                                                             "gl_ModelViewProjectionMatrix_sim");
-        return 0;
+spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermOperator* node)
+{
+    if (node->isImage()) {
+        spv::MissingFunctionality("GLSL image function");
+        return spv::NoResult;
+    } else if (! node->isTexture()) {
+        return spv::NoResult;
     }
 
-    if (node->getName().substr(0, 7) == "texture" || node->getName().substr(0, 5) == "texel" || node->getName().substr(0, 6) == "shadow") {
-        const glslang::TSampler sampler = node->getSequence()[0]->getAsTyped()->getType().getSampler();
-        spv::Builder::TextureParameters params = { };
-        params.sampler = arguments[0];
+    // Process a GLSL texturing op (will be SPV image)
 
-        // special case size query
-        if (node->getName().find("textureSize", 0) != std::string::npos) {
+    glslang::TCrackedTextureOp cracked;
+    node->crackTexture(cracked);
+
+    const glslang::TSampler sampler = node->getAsAggregate() ? node->getAsAggregate()->getSequence()[0]->getAsTyped()->getType().getSampler()
+                                                             : node->getAsUnaryNode()->getOperand()->getAsTyped()->getType().getSampler();
+    std::vector<spv::Id> arguments;
+    if (node->getAsAggregate())
+        translateArguments(node->getAsAggregate()->getSequence(), arguments);
+    else
+        translateArguments(*node->getAsUnaryNode(), arguments);
+    spv::Decoration precision = TranslatePrecisionDecoration(node->getType());
+
+    spv::Builder::TextureParameters params = { };
+    params.sampler = arguments[0];
+
+    // Check for queries
+    if (cracked.query) {
+        switch (node->getOp()) {
+        case glslang::EOpImageQuerySize:
+        case glslang::EOpTextureQuerySize:
             if (arguments.size() > 1) {
                 params.lod = arguments[1];
                 return builder.createTextureQueryCall(spv::OpImageQuerySizeLod, params);
             } else
                 return builder.createTextureQueryCall(spv::OpImageQuerySize, params);
-        }
-
-        // special case the number of samples query
-        if (node->getName().find("textureSamples", 0) != std::string::npos)
+        case glslang::EOpImageQuerySamples:
+        case glslang::EOpTextureQuerySamples:
             return builder.createTextureQueryCall(spv::OpImageQuerySamples, params);
-
-        // special case the other queries
-        if (node->getName().find("Query", 0) != std::string::npos) {
-            if (node->getName().find("Levels", 0) != std::string::npos)
-                return builder.createTextureQueryCall(spv::OpImageQueryLevels, params);
-            else if (node->getName().find("Lod", 0) != std::string::npos) {
-                params.coords = arguments[1];
-                return builder.createTextureQueryCall(spv::OpImageQueryLod, params);
-            } else
-                spv::MissingFunctionality("glslang texture query");
+        case glslang::EOpTextureQueryLod:
+            params.coords = arguments[1];
+            return builder.createTextureQueryCall(spv::OpImageQueryLod, params);
+        case glslang::EOpTextureQueryLevels:
+            return builder.createTextureQueryCall(spv::OpImageQueryLevels, params);
+        default:
+            assert(0);
+            break;
         }
-
-        // This is no longer a query....
-
-        bool lod = node->getName().find("Lod", 0) != std::string::npos;
-        bool proj = node->getName().find("Proj", 0) != std::string::npos;
-        bool offsets = node->getName().find("Offsets", 0) != std::string::npos;
-        bool offset = ! offsets && node->getName().find("Offset", 0) != std::string::npos;
-        bool fetch = node->getName().find("Fetch", 0) != std::string::npos;
-        bool gather = node->getName().find("Gather", 0) != std::string::npos;
-        bool grad = node->getName().find("Grad", 0) != std::string::npos;
-
-        if (fetch)
-            spv::MissingFunctionality("texel fetch");
-        if (gather)
-            spv::MissingFunctionality("texture gather");
-
-        // check for bias argument
-        bool bias = false;
-        if (! lod && ! gather && ! grad && ! fetch) {
-            int nonBiasArgCount = 2;
-            if (offset)
-                ++nonBiasArgCount;
-            if (grad)
-                nonBiasArgCount += 2;
-
-            if ((int)arguments.size() > nonBiasArgCount)
-                bias = true;
-        }
-
-        bool cubeCompare = sampler.dim == glslang::EsdCube && sampler.arrayed && sampler.shadow;
-
-        // set the rest of the arguments
-        params.coords = arguments[1];
-        int extraArgs = 0;
-        if (cubeCompare)
-            params.Dref = arguments[2];
-        else if (sampler.shadow) {
-            std::vector<spv::Id> indexes;
-            int comp;
-            if (proj)
-                comp = 3;
-            else
-                comp = builder.getNumComponents(params.coords) - 1;
-            indexes.push_back(comp);
-            params.Dref = builder.createCompositeExtract(params.coords, builder.getScalarTypeId(builder.getTypeId(params.coords)), indexes);
-        }
-        if (lod) {
-            params.lod = arguments[2];
-            ++extraArgs;
-        }
-        if (grad) {
-            params.gradX = arguments[2 + extraArgs];
-            params.gradY = arguments[3 + extraArgs];
-            extraArgs += 2;
-        }
-        //if (gather && compare) {
-        //    params.compare = arguments[2 + extraArgs];
-        //    ++extraArgs;
-        //}
-        if (offset | offsets) {
-            params.offset = arguments[2 + extraArgs];
-            ++extraArgs;
-        }
-        if (bias) {
-            params.bias = arguments[2 + extraArgs];
-            ++extraArgs;
-        }
-
-        return builder.createTextureCall(precision, convertGlslangToSpvType(node->getType()), proj, params);
     }
 
-    spv::MissingFunctionality("built-in function call");
+    // This is no longer a query....
 
-    return 0;
+    if (cracked.fetch)
+        spv::MissingFunctionality("texel fetch");
+    if (cracked.gather)
+        spv::MissingFunctionality("texture gather");
+
+    // check for bias argument
+    bool bias = false;
+    if (! cracked.lod && ! cracked.gather && ! cracked.grad && ! cracked.fetch) {
+        int nonBiasArgCount = 2;
+        if (cracked.offset)
+            ++nonBiasArgCount;
+        if (cracked.grad)
+            nonBiasArgCount += 2;
+
+        if ((int)arguments.size() > nonBiasArgCount)
+            bias = true;
+    }
+
+    bool cubeCompare = sampler.dim == glslang::EsdCube && sampler.arrayed && sampler.shadow;
+
+    // set the rest of the arguments
+    params.coords = arguments[1];
+    int extraArgs = 0;
+    if (cubeCompare)
+        params.Dref = arguments[2];
+    else if (sampler.shadow) {
+        std::vector<spv::Id> indexes;
+        int comp;
+        if (cracked.proj)
+            comp = 3;
+        else
+            comp = builder.getNumComponents(params.coords) - 1;
+        indexes.push_back(comp);
+        params.Dref = builder.createCompositeExtract(params.coords, builder.getScalarTypeId(builder.getTypeId(params.coords)), indexes);
+    }
+    if (cracked.lod) {
+        params.lod = arguments[2];
+        ++extraArgs;
+    }
+    if (cracked.grad) {
+        params.gradX = arguments[2 + extraArgs];
+        params.gradY = arguments[3 + extraArgs];
+        extraArgs += 2;
+    }
+    //if (gather && compare) {
+    //    params.compare = arguments[2 + extraArgs];
+    //    ++extraArgs;
+    //}
+    if (cracked.offset || cracked.offsets) {
+        params.offset = arguments[2 + extraArgs];
+        ++extraArgs;
+    }
+    if (bias) {
+        params.bias = arguments[2 + extraArgs];
+        ++extraArgs;
+    }
+
+    return builder.createTextureCall(precision, convertGlslangToSpvType(node->getType()), cracked.proj, params);
 }
 
 spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAggregate* node)
@@ -2172,6 +2201,24 @@
     case glslang::EOpUnpackHalf2x16:
         libCall = spv::GLSLstd450UnpackHalf2x16;
         break;
+    case glslang::EOpPackSnorm4x8:
+        libCall = spv::GLSLstd450PackSnorm4x8;
+        break;
+    case glslang::EOpUnpackSnorm4x8:
+        libCall = spv::GLSLstd450UnpackSnorm4x8;
+        break;
+    case glslang::EOpPackUnorm4x8:
+        libCall = spv::GLSLstd450PackUnorm4x8;
+        break;
+    case glslang::EOpUnpackUnorm4x8:
+        libCall = spv::GLSLstd450UnpackUnorm4x8;
+        break;
+    case glslang::EOpPackDouble2x32:
+        libCall = spv::GLSLstd450PackDouble2x32;
+        break;
+    case glslang::EOpUnpackDouble2x32:
+        libCall = spv::GLSLstd450UnpackDouble2x32;
+        break;
 
     case glslang::EOpDPdx:
         unaryOp = spv::OpDPdx;
@@ -2221,6 +2268,34 @@
             libCall = spv::GLSLstd450SSign;
         break;
 
+    case glslang::EOpAtomicCounterIncrement:
+    case glslang::EOpAtomicCounterDecrement:
+    case glslang::EOpAtomicCounter:
+    {
+        // Handle all of the atomics in one place, in createAtomicOperation()
+        std::vector<spv::Id> operands;
+        operands.push_back(operand);
+        return createAtomicOperation(op, precision, typeId, operands);
+    }
+
+    case glslang::EOpImageLoad:
+        unaryOp = spv::OpImageRead;
+        break;
+
+    case glslang::EOpBitFieldReverse:
+        unaryOp = spv::OpBitReverse;
+        break;
+    case glslang::EOpBitCount:
+        unaryOp = spv::OpBitCount;
+        break;
+    case glslang::EOpFindLSB:
+        libCall = spv::GLSLstd450FindILSB;
+        break;
+    case glslang::EOpFindMSB:
+        spv::MissingFunctionality("signed vs. unsigned FindMSB");
+        libCall = spv::GLSLstd450FindSMSB;
+        break;
+
     default:
         return 0;
     }
diff --git a/Test/baseResults/100.frag.out b/Test/baseResults/100.frag.out
index 7d7aa32..f468a68 100644
--- a/Test/baseResults/100.frag.out
+++ b/Test/baseResults/100.frag.out
@@ -177,7 +177,7 @@
 0:87  Function Definition: foo234( (global void)

 0:87    Function Parameters: 

 0:89    Sequence

-0:89      Function Call: texture3D(s31;vf3;f1; (global highp 4-component vector of float)

+0:89      texture (global highp 4-component vector of float)

 0:89        's3D2' (uniform highp sampler3D)

 0:89        Constant:

 0:89          0.200000

@@ -185,7 +185,7 @@
 0:89          0.200000

 0:89        Constant:

 0:89          0.200000

-0:90      Function Call: texture3DProj(s31;vf4;f1; (global highp 4-component vector of float)

+0:90      textureProj (global highp 4-component vector of float)

 0:90        's3D2' (uniform highp sampler3D)

 0:90        direct index (smooth temp mediump 4-component vector of float)

 0:90          'v' (smooth in 3-element array of mediump 4-component vector of float)

@@ -232,16 +232,16 @@
 0:119  Function Definition: foo245( (global void)

 0:119    Function Parameters: 

 0:121    Sequence

-0:121      Function Call: texture2D(sE21;vf2; (global lowp 4-component vector of float)

+0:121      texture (global lowp 4-component vector of float)

 0:121        'sExt' (uniform lowp samplerExternalOES)

 0:121        Constant:

 0:121          0.200000

 0:121          0.200000

-0:122      Function Call: texture2DProj(sE21;vf3; (global lowp 4-component vector of float)

+0:122      textureProj (global lowp 4-component vector of float)

 0:122        'sExt' (uniform lowp samplerExternalOES)

-0:122        Construct vec3 (temp 3-component vector of float)

+0:122        Construct vec3 (temp lowp 3-component vector of float)

 0:122          'f13' (invariant global mediump float)

-0:123      Function Call: texture2DProj(sE21;vf4; (global lowp 4-component vector of float)

+0:123      textureProj (global lowp 4-component vector of float)

 0:123        'sExt' (uniform lowp samplerExternalOES)

 0:123        direct index (smooth temp mediump 4-component vector of float)

 0:123          'v' (smooth in 3-element array of mediump 4-component vector of float)

@@ -250,12 +250,12 @@
 0:130  Function Definition: foo246( (global void)

 0:130    Function Parameters: 

 0:132    Sequence

-0:132      Function Call: texture2D(sE21;vf2; (global mediump 4-component vector of float)

+0:132      texture (global mediump 4-component vector of float)

 0:132        'mediumExt' (uniform mediump samplerExternalOES)

 0:132        Constant:

 0:132          0.200000

 0:132          0.200000

-0:133      Function Call: texture2DProj(sE21;vf4; (global highp 4-component vector of float)

+0:133      textureProj (global highp 4-component vector of float)

 0:133        'highExt' (uniform highp samplerExternalOES)

 0:133        direct index (smooth temp mediump 4-component vector of float)

 0:133          'v' (smooth in 3-element array of mediump 4-component vector of float)

@@ -278,9 +278,9 @@
 0:145      'a' (in mediump int)

 0:145      'b' (in mediump float)

 0:147    Sequence

-0:147      Function Call: texture2DProjGradEXT(s21;vf3;vf2;vf2; (global lowp 4-component vector of float)

+0:147      textureProjGrad (global lowp 4-component vector of float)

 0:147        's2Dg' (uniform lowp sampler2D)

-0:147        Construct vec3 (temp 3-component vector of float)

+0:147        Construct vec3 (temp mediump 3-component vector of float)

 0:147          'f13' (invariant global mediump float)

 0:147        'uv2' (invariant uniform mediump 2-component vector of float)

 0:147        'uv2' (invariant uniform mediump 2-component vector of float)

@@ -299,28 +299,28 @@
 0:158  Function Definition: foo323433( (global void)

 0:158    Function Parameters: 

 0:160    Sequence

-0:160      Function Call: texture2DLodEXT(s21;vf2;f1; (global lowp 4-component vector of float)

+0:160      textureLod (global lowp 4-component vector of float)

 0:160        's2Dg' (uniform lowp sampler2D)

 0:160        'uv2' (invariant uniform mediump 2-component vector of float)

 0:160        'f13' (invariant global mediump float)

-0:161      Function Call: texture2DProjGradEXT(s21;vf3;vf2;vf2; (global lowp 4-component vector of float)

+0:161      textureProjGrad (global lowp 4-component vector of float)

 0:161        's2Dg' (uniform lowp sampler2D)

-0:161        Construct vec3 (temp 3-component vector of float)

+0:161        Construct vec3 (temp mediump 3-component vector of float)

 0:161          'f13' (invariant global mediump float)

 0:161        'uv2' (invariant uniform mediump 2-component vector of float)

 0:161        'uv2' (invariant uniform mediump 2-component vector of float)

-0:162      Function Call: texture2DGradEXT(s21;vf2;vf2;vf2; (global lowp 4-component vector of float)

+0:162      textureGrad (global lowp 4-component vector of float)

 0:162        's2Dg' (uniform lowp sampler2D)

 0:162        'uv2' (invariant uniform mediump 2-component vector of float)

 0:162        'uv2' (invariant uniform mediump 2-component vector of float)

 0:162        'uv2' (invariant uniform mediump 2-component vector of float)

-0:163      Function Call: textureCubeGradEXT(sC1;vf3;vf3;vf3; (global lowp 4-component vector of float)

+0:163      textureGrad (global lowp 4-component vector of float)

 0:163        'sCube' (uniform lowp samplerCube)

-0:163        Construct vec3 (temp 3-component vector of float)

+0:163        Construct vec3 (temp lowp 3-component vector of float)

 0:163          'f13' (invariant global mediump float)

-0:163        Construct vec3 (temp 3-component vector of float)

+0:163        Construct vec3 (temp lowp 3-component vector of float)

 0:163          'f13' (invariant global mediump float)

-0:163        Construct vec3 (temp 3-component vector of float)

+0:163        Construct vec3 (temp lowp 3-component vector of float)

 0:163          'f13' (invariant global mediump float)

 0:167  Function Definition: fgfg(f1;i1; (global mediump int)

 0:167    Function Parameters: 

@@ -501,7 +501,7 @@
 0:87  Function Definition: foo234( (global void)

 0:87    Function Parameters: 

 0:89    Sequence

-0:89      Function Call: texture3D(s31;vf3;f1; (global highp 4-component vector of float)

+0:89      texture (global highp 4-component vector of float)

 0:89        's3D2' (uniform highp sampler3D)

 0:89        Constant:

 0:89          0.200000

@@ -509,7 +509,7 @@
 0:89          0.200000

 0:89        Constant:

 0:89          0.200000

-0:90      Function Call: texture3DProj(s31;vf4;f1; (global highp 4-component vector of float)

+0:90      textureProj (global highp 4-component vector of float)

 0:90        's3D2' (uniform highp sampler3D)

 0:90        direct index (smooth temp mediump 4-component vector of float)

 0:90          'v' (smooth in 3-element array of mediump 4-component vector of float)

@@ -556,16 +556,16 @@
 0:119  Function Definition: foo245( (global void)

 0:119    Function Parameters: 

 0:121    Sequence

-0:121      Function Call: texture2D(sE21;vf2; (global lowp 4-component vector of float)

+0:121      texture (global lowp 4-component vector of float)

 0:121        'sExt' (uniform lowp samplerExternalOES)

 0:121        Constant:

 0:121          0.200000

 0:121          0.200000

-0:122      Function Call: texture2DProj(sE21;vf3; (global lowp 4-component vector of float)

+0:122      textureProj (global lowp 4-component vector of float)

 0:122        'sExt' (uniform lowp samplerExternalOES)

-0:122        Construct vec3 (temp 3-component vector of float)

+0:122        Construct vec3 (temp lowp 3-component vector of float)

 0:122          'f13' (invariant global mediump float)

-0:123      Function Call: texture2DProj(sE21;vf4; (global lowp 4-component vector of float)

+0:123      textureProj (global lowp 4-component vector of float)

 0:123        'sExt' (uniform lowp samplerExternalOES)

 0:123        direct index (smooth temp mediump 4-component vector of float)

 0:123          'v' (smooth in 3-element array of mediump 4-component vector of float)

@@ -574,12 +574,12 @@
 0:130  Function Definition: foo246( (global void)

 0:130    Function Parameters: 

 0:132    Sequence

-0:132      Function Call: texture2D(sE21;vf2; (global mediump 4-component vector of float)

+0:132      texture (global mediump 4-component vector of float)

 0:132        'mediumExt' (uniform mediump samplerExternalOES)

 0:132        Constant:

 0:132          0.200000

 0:132          0.200000

-0:133      Function Call: texture2DProj(sE21;vf4; (global highp 4-component vector of float)

+0:133      textureProj (global highp 4-component vector of float)

 0:133        'highExt' (uniform highp samplerExternalOES)

 0:133        direct index (smooth temp mediump 4-component vector of float)

 0:133          'v' (smooth in 3-element array of mediump 4-component vector of float)

@@ -602,9 +602,9 @@
 0:145      'a' (in mediump int)

 0:145      'b' (in mediump float)

 0:147    Sequence

-0:147      Function Call: texture2DProjGradEXT(s21;vf3;vf2;vf2; (global lowp 4-component vector of float)

+0:147      textureProjGrad (global lowp 4-component vector of float)

 0:147        's2Dg' (uniform lowp sampler2D)

-0:147        Construct vec3 (temp 3-component vector of float)

+0:147        Construct vec3 (temp mediump 3-component vector of float)

 0:147          'f13' (invariant global mediump float)

 0:147        'uv2' (invariant uniform mediump 2-component vector of float)

 0:147        'uv2' (invariant uniform mediump 2-component vector of float)

@@ -623,28 +623,28 @@
 0:158  Function Definition: foo323433( (global void)

 0:158    Function Parameters: 

 0:160    Sequence

-0:160      Function Call: texture2DLodEXT(s21;vf2;f1; (global lowp 4-component vector of float)

+0:160      textureLod (global lowp 4-component vector of float)

 0:160        's2Dg' (uniform lowp sampler2D)

 0:160        'uv2' (invariant uniform mediump 2-component vector of float)

 0:160        'f13' (invariant global mediump float)

-0:161      Function Call: texture2DProjGradEXT(s21;vf3;vf2;vf2; (global lowp 4-component vector of float)

+0:161      textureProjGrad (global lowp 4-component vector of float)

 0:161        's2Dg' (uniform lowp sampler2D)

-0:161        Construct vec3 (temp 3-component vector of float)

+0:161        Construct vec3 (temp mediump 3-component vector of float)

 0:161          'f13' (invariant global mediump float)

 0:161        'uv2' (invariant uniform mediump 2-component vector of float)

 0:161        'uv2' (invariant uniform mediump 2-component vector of float)

-0:162      Function Call: texture2DGradEXT(s21;vf2;vf2;vf2; (global lowp 4-component vector of float)

+0:162      textureGrad (global lowp 4-component vector of float)

 0:162        's2Dg' (uniform lowp sampler2D)

 0:162        'uv2' (invariant uniform mediump 2-component vector of float)

 0:162        'uv2' (invariant uniform mediump 2-component vector of float)

 0:162        'uv2' (invariant uniform mediump 2-component vector of float)

-0:163      Function Call: textureCubeGradEXT(sC1;vf3;vf3;vf3; (global lowp 4-component vector of float)

+0:163      textureGrad (global lowp 4-component vector of float)

 0:163        'sCube' (uniform lowp samplerCube)

-0:163        Construct vec3 (temp 3-component vector of float)

+0:163        Construct vec3 (temp lowp 3-component vector of float)

 0:163          'f13' (invariant global mediump float)

-0:163        Construct vec3 (temp 3-component vector of float)

+0:163        Construct vec3 (temp lowp 3-component vector of float)

 0:163          'f13' (invariant global mediump float)

-0:163        Construct vec3 (temp 3-component vector of float)

+0:163        Construct vec3 (temp lowp 3-component vector of float)

 0:163          'f13' (invariant global mediump float)

 0:167  Function Definition: fgfg(f1;i1; (global mediump int)

 0:167    Function Parameters: 

diff --git a/Test/baseResults/120.frag.out b/Test/baseResults/120.frag.out
index d33d99d..f92e106 100644
--- a/Test/baseResults/120.frag.out
+++ b/Test/baseResults/120.frag.out
@@ -242,7 +242,7 @@
 0:63      'f' (temp float)

 0:65      move second child to first child (temp 4-component vector of float)

 0:65        'gl_FragColor' (fragColor 4-component vector of float FragColor)

-0:65        Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:65        texture (global 4-component vector of float)

 0:65          's2D' (uniform sampler2D)

 0:65          'centTexCoord' (centroid smooth in 2-component vector of float)

 0:?       Sequence

@@ -454,45 +454,45 @@
 0:?     Sequence

 0:184      move second child to first child (temp 4-component vector of float)

 0:184        'v' (temp 4-component vector of float)

-0:184        Function Call: texture2DLod(s21;vf2;f1; (global 4-component vector of float)

+0:184        textureLod (global 4-component vector of float)

 0:184          's2D' (uniform sampler2D)

 0:184          'v2' (temp 2-component vector of float)

 0:184          'f' (temp float)

 0:185      move second child to first child (temp 4-component vector of float)

 0:185        'v' (temp 4-component vector of float)

-0:185        Function Call: texture3DProjLod(s31;vf4;f1; (global 4-component vector of float)

+0:185        textureProjLod (global 4-component vector of float)

 0:185          's3D' (uniform sampler3D)

 0:185          'v' (temp 4-component vector of float)

 0:185          'f' (temp float)

 0:186      move second child to first child (temp 4-component vector of float)

 0:186        'v' (temp 4-component vector of float)

-0:186        Function Call: texture1DProjLod(s11;vf4;f1; (global 4-component vector of float)

+0:186        textureProjLod (global 4-component vector of float)

 0:186          's1D' (uniform sampler1D)

 0:186          'v' (temp 4-component vector of float)

 0:186          'f' (temp float)

 0:187      move second child to first child (temp 4-component vector of float)

 0:187        'v' (temp 4-component vector of float)

-0:187        Function Call: shadow2DProjLod(sS21;vf4;f1; (global 4-component vector of float)

+0:187        textureProjLod (global 4-component vector of float)

 0:187          's2DS' (uniform sampler2DShadow)

 0:187          'v' (temp 4-component vector of float)

 0:187          'f' (temp float)

 0:189      move second child to first child (temp 4-component vector of float)

 0:189        'v' (temp 4-component vector of float)

-0:189        Function Call: texture1DGradARB(s11;f1;f1;f1; (global 4-component vector of float)

+0:189        textureGrad (global 4-component vector of float)

 0:189          's1D' (uniform sampler1D)

 0:189          'f' (temp float)

 0:189          'f' (temp float)

 0:189          'f' (temp float)

 0:190      move second child to first child (temp 4-component vector of float)

 0:190        'v' (temp 4-component vector of float)

-0:190        Function Call: texture2DProjGradARB(s21;vf4;vf2;vf2; (global 4-component vector of float)

+0:190        textureProjGrad (global 4-component vector of float)

 0:190          's2D' (uniform sampler2D)

 0:190          'v' (temp 4-component vector of float)

 0:190          'v2' (temp 2-component vector of float)

 0:190          'v2' (temp 2-component vector of float)

 0:191      move second child to first child (temp 4-component vector of float)

 0:191        'v' (temp 4-component vector of float)

-0:191        Function Call: shadow2DProjGradARB(sS21;vf4;vf2;vf2; (global 4-component vector of float)

+0:191        textureProjGrad (global 4-component vector of float)

 0:191          's2DS' (uniform sampler2DShadow)

 0:191          'v' (temp 4-component vector of float)

 0:191          'v2' (temp 2-component vector of float)

@@ -502,45 +502,45 @@
 0:?     Sequence

 0:201      move second child to first child (temp 4-component vector of float)

 0:201        'v' (temp 4-component vector of float)

-0:201        Function Call: texture2DLod(s21;vf2;f1; (global 4-component vector of float)

+0:201        textureLod (global 4-component vector of float)

 0:201          's2D' (uniform sampler2D)

 0:201          'v2' (temp 2-component vector of float)

 0:201          'f' (temp float)

 0:202      move second child to first child (temp 4-component vector of float)

 0:202        'v' (temp 4-component vector of float)

-0:202        Function Call: texture3DProjLod(s31;vf4;f1; (global 4-component vector of float)

+0:202        textureProjLod (global 4-component vector of float)

 0:202          's3D' (uniform sampler3D)

 0:202          'v' (temp 4-component vector of float)

 0:202          'f' (temp float)

 0:203      move second child to first child (temp 4-component vector of float)

 0:203        'v' (temp 4-component vector of float)

-0:203        Function Call: texture1DProjLod(s11;vf4;f1; (global 4-component vector of float)

+0:203        textureProjLod (global 4-component vector of float)

 0:203          's1D' (uniform sampler1D)

 0:203          'v' (temp 4-component vector of float)

 0:203          'f' (temp float)

 0:204      move second child to first child (temp 4-component vector of float)

 0:204        'v' (temp 4-component vector of float)

-0:204        Function Call: shadow2DProjLod(sS21;vf4;f1; (global 4-component vector of float)

+0:204        textureProjLod (global 4-component vector of float)

 0:204          's2DS' (uniform sampler2DShadow)

 0:204          'v' (temp 4-component vector of float)

 0:204          'f' (temp float)

 0:206      move second child to first child (temp 4-component vector of float)

 0:206        'v' (temp 4-component vector of float)

-0:206        Function Call: texture1DGradARB(s11;f1;f1;f1; (global 4-component vector of float)

+0:206        textureGrad (global 4-component vector of float)

 0:206          's1D' (uniform sampler1D)

 0:206          'f' (temp float)

 0:206          'f' (temp float)

 0:206          'f' (temp float)

 0:207      move second child to first child (temp 4-component vector of float)

 0:207        'v' (temp 4-component vector of float)

-0:207        Function Call: texture2DProjGradARB(s21;vf4;vf2;vf2; (global 4-component vector of float)

+0:207        textureProjGrad (global 4-component vector of float)

 0:207          's2D' (uniform sampler2D)

 0:207          'v' (temp 4-component vector of float)

 0:207          'v2' (temp 2-component vector of float)

 0:207          'v2' (temp 2-component vector of float)

 0:208      move second child to first child (temp 4-component vector of float)

 0:208        'v' (temp 4-component vector of float)

-0:208        Function Call: shadow2DProjGradARB(sS21;vf4;vf2;vf2; (global 4-component vector of float)

+0:208        textureProjGrad (global 4-component vector of float)

 0:208          's2DS' (uniform sampler2DShadow)

 0:208          'v' (temp 4-component vector of float)

 0:208          'v2' (temp 2-component vector of float)

@@ -552,7 +552,7 @@
 0:217      Sequence

 0:217        move second child to first child (temp 4-component vector of float)

 0:217          'v' (temp 4-component vector of float)

-0:217          Function Call: texture2DRect(sR21;vf2; (global 4-component vector of float)

+0:217          texture (global 4-component vector of float)

 0:217            's2DRbad' (uniform sampler2DRect)

 0:217            'v2' (temp 2-component vector of float)

 0:225  Function Definition: foo12111( (global void)

@@ -560,32 +560,32 @@
 0:?     Sequence

 0:231      move second child to first child (temp 4-component vector of float)

 0:231        'v' (temp 4-component vector of float)

-0:231        Function Call: texture2DRect(sR21;vf2; (global 4-component vector of float)

+0:231        texture (global 4-component vector of float)

 0:231          's2DR' (uniform sampler2DRect)

 0:231          'v2' (temp 2-component vector of float)

 0:232      move second child to first child (temp 4-component vector of float)

 0:232        'v' (temp 4-component vector of float)

-0:232        Function Call: texture2DRectProj(sR21;vf3; (global 4-component vector of float)

+0:232        textureProj (global 4-component vector of float)

 0:232          's2DR' (uniform sampler2DRect)

 0:232          'v3' (temp 3-component vector of float)

 0:233      move second child to first child (temp 4-component vector of float)

 0:233        'v' (temp 4-component vector of float)

-0:233        Function Call: texture2DRectProj(sR21;vf4; (global 4-component vector of float)

+0:233        textureProj (global 4-component vector of float)

 0:233          's2DR' (uniform sampler2DRect)

 0:233          'v4' (temp 4-component vector of float)

 0:234      move second child to first child (temp 4-component vector of float)

 0:234        'v' (temp 4-component vector of float)

-0:234        Function Call: shadow2DRect(sSR21;vf3; (global 4-component vector of float)

+0:234        texture (global 4-component vector of float)

 0:234          's2DRS' (uniform sampler2DRectShadow)

 0:234          'v3' (temp 3-component vector of float)

 0:235      move second child to first child (temp 4-component vector of float)

 0:235        'v' (temp 4-component vector of float)

-0:235        Function Call: shadow2DRectProj(sSR21;vf4; (global 4-component vector of float)

+0:235        textureProj (global 4-component vector of float)

 0:235          's2DRS' (uniform sampler2DRectShadow)

 0:235          'v4' (temp 4-component vector of float)

 0:237      move second child to first child (temp 4-component vector of float)

 0:237        'v' (temp 4-component vector of float)

-0:237        Function Call: shadow2DRectProjGradARB(sSR21;vf4;vf2;vf2; (global 4-component vector of float)

+0:237        textureProjGrad (global 4-component vector of float)

 0:237          's2DRS' (uniform sampler2DRectShadow)

 0:237          'v' (temp 4-component vector of float)

 0:237          'v2' (temp 2-component vector of float)

@@ -813,7 +813,7 @@
 0:63      'f' (temp float)

 0:65      move second child to first child (temp 4-component vector of float)

 0:65        'gl_FragColor' (fragColor 4-component vector of float FragColor)

-0:65        Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:65        texture (global 4-component vector of float)

 0:65          's2D' (uniform sampler2D)

 0:65          'centTexCoord' (centroid smooth in 2-component vector of float)

 0:?       Sequence

@@ -1025,45 +1025,45 @@
 0:?     Sequence

 0:184      move second child to first child (temp 4-component vector of float)

 0:184        'v' (temp 4-component vector of float)

-0:184        Function Call: texture2DLod(s21;vf2;f1; (global 4-component vector of float)

+0:184        textureLod (global 4-component vector of float)

 0:184          's2D' (uniform sampler2D)

 0:184          'v2' (temp 2-component vector of float)

 0:184          'f' (temp float)

 0:185      move second child to first child (temp 4-component vector of float)

 0:185        'v' (temp 4-component vector of float)

-0:185        Function Call: texture3DProjLod(s31;vf4;f1; (global 4-component vector of float)

+0:185        textureProjLod (global 4-component vector of float)

 0:185          's3D' (uniform sampler3D)

 0:185          'v' (temp 4-component vector of float)

 0:185          'f' (temp float)

 0:186      move second child to first child (temp 4-component vector of float)

 0:186        'v' (temp 4-component vector of float)

-0:186        Function Call: texture1DProjLod(s11;vf4;f1; (global 4-component vector of float)

+0:186        textureProjLod (global 4-component vector of float)

 0:186          's1D' (uniform sampler1D)

 0:186          'v' (temp 4-component vector of float)

 0:186          'f' (temp float)

 0:187      move second child to first child (temp 4-component vector of float)

 0:187        'v' (temp 4-component vector of float)

-0:187        Function Call: shadow2DProjLod(sS21;vf4;f1; (global 4-component vector of float)

+0:187        textureProjLod (global 4-component vector of float)

 0:187          's2DS' (uniform sampler2DShadow)

 0:187          'v' (temp 4-component vector of float)

 0:187          'f' (temp float)

 0:189      move second child to first child (temp 4-component vector of float)

 0:189        'v' (temp 4-component vector of float)

-0:189        Function Call: texture1DGradARB(s11;f1;f1;f1; (global 4-component vector of float)

+0:189        textureGrad (global 4-component vector of float)

 0:189          's1D' (uniform sampler1D)

 0:189          'f' (temp float)

 0:189          'f' (temp float)

 0:189          'f' (temp float)

 0:190      move second child to first child (temp 4-component vector of float)

 0:190        'v' (temp 4-component vector of float)

-0:190        Function Call: texture2DProjGradARB(s21;vf4;vf2;vf2; (global 4-component vector of float)

+0:190        textureProjGrad (global 4-component vector of float)

 0:190          's2D' (uniform sampler2D)

 0:190          'v' (temp 4-component vector of float)

 0:190          'v2' (temp 2-component vector of float)

 0:190          'v2' (temp 2-component vector of float)

 0:191      move second child to first child (temp 4-component vector of float)

 0:191        'v' (temp 4-component vector of float)

-0:191        Function Call: shadow2DProjGradARB(sS21;vf4;vf2;vf2; (global 4-component vector of float)

+0:191        textureProjGrad (global 4-component vector of float)

 0:191          's2DS' (uniform sampler2DShadow)

 0:191          'v' (temp 4-component vector of float)

 0:191          'v2' (temp 2-component vector of float)

@@ -1073,45 +1073,45 @@
 0:?     Sequence

 0:201      move second child to first child (temp 4-component vector of float)

 0:201        'v' (temp 4-component vector of float)

-0:201        Function Call: texture2DLod(s21;vf2;f1; (global 4-component vector of float)

+0:201        textureLod (global 4-component vector of float)

 0:201          's2D' (uniform sampler2D)

 0:201          'v2' (temp 2-component vector of float)

 0:201          'f' (temp float)

 0:202      move second child to first child (temp 4-component vector of float)

 0:202        'v' (temp 4-component vector of float)

-0:202        Function Call: texture3DProjLod(s31;vf4;f1; (global 4-component vector of float)

+0:202        textureProjLod (global 4-component vector of float)

 0:202          's3D' (uniform sampler3D)

 0:202          'v' (temp 4-component vector of float)

 0:202          'f' (temp float)

 0:203      move second child to first child (temp 4-component vector of float)

 0:203        'v' (temp 4-component vector of float)

-0:203        Function Call: texture1DProjLod(s11;vf4;f1; (global 4-component vector of float)

+0:203        textureProjLod (global 4-component vector of float)

 0:203          's1D' (uniform sampler1D)

 0:203          'v' (temp 4-component vector of float)

 0:203          'f' (temp float)

 0:204      move second child to first child (temp 4-component vector of float)

 0:204        'v' (temp 4-component vector of float)

-0:204        Function Call: shadow2DProjLod(sS21;vf4;f1; (global 4-component vector of float)

+0:204        textureProjLod (global 4-component vector of float)

 0:204          's2DS' (uniform sampler2DShadow)

 0:204          'v' (temp 4-component vector of float)

 0:204          'f' (temp float)

 0:206      move second child to first child (temp 4-component vector of float)

 0:206        'v' (temp 4-component vector of float)

-0:206        Function Call: texture1DGradARB(s11;f1;f1;f1; (global 4-component vector of float)

+0:206        textureGrad (global 4-component vector of float)

 0:206          's1D' (uniform sampler1D)

 0:206          'f' (temp float)

 0:206          'f' (temp float)

 0:206          'f' (temp float)

 0:207      move second child to first child (temp 4-component vector of float)

 0:207        'v' (temp 4-component vector of float)

-0:207        Function Call: texture2DProjGradARB(s21;vf4;vf2;vf2; (global 4-component vector of float)

+0:207        textureProjGrad (global 4-component vector of float)

 0:207          's2D' (uniform sampler2D)

 0:207          'v' (temp 4-component vector of float)

 0:207          'v2' (temp 2-component vector of float)

 0:207          'v2' (temp 2-component vector of float)

 0:208      move second child to first child (temp 4-component vector of float)

 0:208        'v' (temp 4-component vector of float)

-0:208        Function Call: shadow2DProjGradARB(sS21;vf4;vf2;vf2; (global 4-component vector of float)

+0:208        textureProjGrad (global 4-component vector of float)

 0:208          's2DS' (uniform sampler2DShadow)

 0:208          'v' (temp 4-component vector of float)

 0:208          'v2' (temp 2-component vector of float)

@@ -1123,7 +1123,7 @@
 0:217      Sequence

 0:217        move second child to first child (temp 4-component vector of float)

 0:217          'v' (temp 4-component vector of float)

-0:217          Function Call: texture2DRect(sR21;vf2; (global 4-component vector of float)

+0:217          texture (global 4-component vector of float)

 0:217            's2DRbad' (uniform sampler2DRect)

 0:217            'v2' (temp 2-component vector of float)

 0:225  Function Definition: foo12111( (global void)

@@ -1131,32 +1131,32 @@
 0:?     Sequence

 0:231      move second child to first child (temp 4-component vector of float)

 0:231        'v' (temp 4-component vector of float)

-0:231        Function Call: texture2DRect(sR21;vf2; (global 4-component vector of float)

+0:231        texture (global 4-component vector of float)

 0:231          's2DR' (uniform sampler2DRect)

 0:231          'v2' (temp 2-component vector of float)

 0:232      move second child to first child (temp 4-component vector of float)

 0:232        'v' (temp 4-component vector of float)

-0:232        Function Call: texture2DRectProj(sR21;vf3; (global 4-component vector of float)

+0:232        textureProj (global 4-component vector of float)

 0:232          's2DR' (uniform sampler2DRect)

 0:232          'v3' (temp 3-component vector of float)

 0:233      move second child to first child (temp 4-component vector of float)

 0:233        'v' (temp 4-component vector of float)

-0:233        Function Call: texture2DRectProj(sR21;vf4; (global 4-component vector of float)

+0:233        textureProj (global 4-component vector of float)

 0:233          's2DR' (uniform sampler2DRect)

 0:233          'v4' (temp 4-component vector of float)

 0:234      move second child to first child (temp 4-component vector of float)

 0:234        'v' (temp 4-component vector of float)

-0:234        Function Call: shadow2DRect(sSR21;vf3; (global 4-component vector of float)

+0:234        texture (global 4-component vector of float)

 0:234          's2DRS' (uniform sampler2DRectShadow)

 0:234          'v3' (temp 3-component vector of float)

 0:235      move second child to first child (temp 4-component vector of float)

 0:235        'v' (temp 4-component vector of float)

-0:235        Function Call: shadow2DRectProj(sSR21;vf4; (global 4-component vector of float)

+0:235        textureProj (global 4-component vector of float)

 0:235          's2DRS' (uniform sampler2DRectShadow)

 0:235          'v4' (temp 4-component vector of float)

 0:237      move second child to first child (temp 4-component vector of float)

 0:237        'v' (temp 4-component vector of float)

-0:237        Function Call: shadow2DRectProjGradARB(sSR21;vf4;vf2;vf2; (global 4-component vector of float)

+0:237        textureProjGrad (global 4-component vector of float)

 0:237          's2DRS' (uniform sampler2DRectShadow)

 0:237          'v' (temp 4-component vector of float)

 0:237          'v2' (temp 2-component vector of float)

diff --git a/Test/baseResults/120.vert.out b/Test/baseResults/120.vert.out
index 7b58c8b..b235868 100644
--- a/Test/baseResults/120.vert.out
+++ b/Test/baseResults/120.vert.out
@@ -183,7 +183,7 @@
 0:98        0.000000

 0:100      Constant:

 0:100        0.841471

-0:101      Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:101      texture (global 4-component vector of float)

 0:101        's2D' (uniform sampler2D)

 0:101        Constant:

 0:101          0.000000

@@ -502,7 +502,7 @@
 0:98        0.000000

 0:100      Constant:

 0:100        0.841471

-0:101      Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:101      texture (global 4-component vector of float)

 0:101        's2D' (uniform sampler2D)

 0:101        Constant:

 0:101          0.000000

diff --git a/Test/baseResults/130.frag.out b/Test/baseResults/130.frag.out
index d03268d..e418127 100644
--- a/Test/baseResults/130.frag.out
+++ b/Test/baseResults/130.frag.out
@@ -58,7 +58,7 @@
 0:25      Sequence

 0:25        move second child to first child (temp 4-component vector of float)

 0:25          's' (temp 4-component vector of float)

-0:25          Function Call: textureGather(sC1;vf3; (global 4-component vector of float)

+0:25          textureGather (global 4-component vector of float)

 0:25            'sampC' (uniform samplerCube)

 0:25            Constant:

 0:25              0.200000

@@ -70,7 +70,7 @@
 0:32      Sequence

 0:32        move second child to first child (temp 4-component vector of float)

 0:32          's' (temp 4-component vector of float)

-0:32          Function Call: textureGather(sC1;vf3; (global 4-component vector of float)

+0:32          textureGather (global 4-component vector of float)

 0:32            'sampC' (uniform samplerCube)

 0:32            Constant:

 0:32              0.200000

@@ -82,7 +82,7 @@
 0:45      Sequence

 0:45        move second child to first child (temp 4-component vector of float)

 0:45          's' (temp 4-component vector of float)

-0:45          Function Call: textureGather(sC1;vf3; (global 4-component vector of float)

+0:45          textureGather (global 4-component vector of float)

 0:45            'sampC' (uniform samplerCube)

 0:45            Constant:

 0:45              0.200000

@@ -129,7 +129,7 @@
 0:80      's' (temp 4-component vector of float)

 0:81      move second child to first child (temp 4-component vector of float)

 0:81        's' (temp 4-component vector of float)

-0:81        Function Call: textureGatherOffset(sR21;vf2;vi2; (global 4-component vector of float)

+0:81        textureGatherOffset (global 4-component vector of float)

 0:81          'samp2DR' (uniform sampler2DRect)

 0:81          Constant:

 0:81            0.300000

@@ -139,7 +139,7 @@
 0:81            1 (const int)

 0:82      move second child to first child (temp 4-component vector of float)

 0:82        's' (temp 4-component vector of float)

-0:82        Function Call: textureGatherOffset(s21;vf2;vi2; (global 4-component vector of float)

+0:82        textureGatherOffset (global 4-component vector of float)

 0:82          'samp2D' (uniform sampler2D)

 0:82          Constant:

 0:82            0.300000

@@ -149,7 +149,7 @@
 0:82            1 (const int)

 0:83      move second child to first child (temp 4-component vector of float)

 0:83        's' (temp 4-component vector of float)

-0:83        Function Call: textureGatherOffset(sA21;vf3;vi2; (global 4-component vector of float)

+0:83        textureGatherOffset (global 4-component vector of float)

 0:83          'samp2DA' (uniform sampler2DArray)

 0:83          Constant:

 0:83            0.300000

@@ -160,7 +160,7 @@
 0:83            1 (const int)

 0:84      move second child to first child (temp 4-component vector of float)

 0:84        's' (temp 4-component vector of float)

-0:84        Function Call: textureGatherOffset(sS21;vf2;f1;vi2; (global 4-component vector of float)

+0:84        textureGatherOffset (global 4-component vector of float)

 0:84          'samp2DS' (uniform sampler2DShadow)

 0:84          Constant:

 0:84            0.300000

@@ -172,7 +172,7 @@
 0:84            1 (const int)

 0:85      move second child to first child (temp 4-component vector of float)

 0:85        's' (temp 4-component vector of float)

-0:85        Function Call: textureGatherOffset(s21;vf2;vi2;i1; (global 4-component vector of float)

+0:85        textureGatherOffset (global 4-component vector of float)

 0:85          'samp2D' (uniform sampler2D)

 0:85          Constant:

 0:85            0.300000

@@ -187,7 +187,7 @@
 0:?     Sequence

 0:93      move second child to first child (temp 4-component vector of float)

 0:93        's' (temp 4-component vector of float)

-0:93        Function Call: textureGatherOffset(s21;vf2;vi2; (global 4-component vector of float)

+0:93        textureGatherOffset (global 4-component vector of float)

 0:93          'samp2D' (uniform sampler2D)

 0:93          Constant:

 0:93            0.300000

@@ -197,7 +197,7 @@
 0:93            1 (const int)

 0:94      move second child to first child (temp 4-component vector of float)

 0:94        's' (temp 4-component vector of float)

-0:94        Function Call: textureGatherOffset(sA21;vf3;vi2; (global 4-component vector of float)

+0:94        textureGatherOffset (global 4-component vector of float)

 0:94          'samp2DA' (uniform sampler2DArray)

 0:94          Constant:

 0:94            0.300000

@@ -208,7 +208,7 @@
 0:94            1 (const int)

 0:95      move second child to first child (temp 4-component vector of float)

 0:95        's' (temp 4-component vector of float)

-0:95        Function Call: textureGatherOffset(sR21;vf2;vi2; (global 4-component vector of float)

+0:95        textureGatherOffset (global 4-component vector of float)

 0:95          'samp2DR' (uniform sampler2DRect)

 0:95          Constant:

 0:95            0.300000

@@ -218,7 +218,7 @@
 0:95            1 (const int)

 0:96      move second child to first child (temp 4-component vector of float)

 0:96        's' (temp 4-component vector of float)

-0:96        Function Call: textureGatherOffset(sS21;vf2;f1;vi2; (global 4-component vector of float)

+0:96        textureGatherOffset (global 4-component vector of float)

 0:96          'samp2DS' (uniform sampler2DShadow)

 0:96          Constant:

 0:96            0.300000

@@ -230,7 +230,7 @@
 0:96            1 (const int)

 0:97      move second child to first child (temp 4-component vector of float)

 0:97        's' (temp 4-component vector of float)

-0:97        Function Call: textureGatherOffset(s21;vf2;vi2;i1; (global 4-component vector of float)

+0:97        textureGatherOffset (global 4-component vector of float)

 0:97          'samp2D' (uniform sampler2D)

 0:97          Constant:

 0:97            0.300000

@@ -246,20 +246,20 @@
 0:109      Sequence

 0:109        move second child to first child (temp 3-component vector of int)

 0:109          'a' (temp 3-component vector of int)

-0:109          Function Call: textureSize(sAC1;i1; (global 3-component vector of int)

+0:109          textureSize (global 3-component vector of int)

 0:109            'Sca' (uniform samplerCubeArray)

 0:109            Constant:

 0:109              3 (const int)

 0:110      Sequence

 0:110        move second child to first child (temp 4-component vector of float)

 0:110          'b' (temp 4-component vector of float)

-0:110          Function Call: texture(sAC1;vf4; (global 4-component vector of float)

+0:110          texture (global 4-component vector of float)

 0:110            'Sca' (uniform samplerCubeArray)

 0:110            'i' (smooth in 4-component vector of float)

 0:111      Sequence

 0:111        move second child to first child (temp 4-component vector of int)

 0:111          'c' (temp 4-component vector of int)

-0:111          Function Call: texture(isAC1;vf4;f1; (global 4-component vector of int)

+0:111          texture (global 4-component vector of int)

 0:111            'Isca' (uniform isamplerCubeArray)

 0:111            'i' (smooth in 4-component vector of float)

 0:111            Constant:

@@ -267,19 +267,19 @@
 0:112      Sequence

 0:112        move second child to first child (temp 4-component vector of uint)

 0:112          'd' (temp 4-component vector of uint)

-0:112          Function Call: texture(usAC1;vf4; (global 4-component vector of uint)

+0:112          texture (global 4-component vector of uint)

 0:112            'Usca' (uniform usamplerCubeArray)

 0:112            'i' (smooth in 4-component vector of float)

 0:114      move second child to first child (temp 4-component vector of float)

 0:114        'b' (temp 4-component vector of float)

-0:114        Function Call: textureLod(sAC1;vf4;f1; (global 4-component vector of float)

+0:114        textureLod (global 4-component vector of float)

 0:114          'Sca' (uniform samplerCubeArray)

 0:114          'i' (smooth in 4-component vector of float)

 0:114          Constant:

 0:114            1.700000

 0:115      move second child to first child (temp 3-component vector of int)

 0:115        'a' (temp 3-component vector of int)

-0:115        Function Call: textureSize(sASC1;i1; (global 3-component vector of int)

+0:115        textureSize (global 3-component vector of int)

 0:115          'Scas' (uniform samplerCubeArrayShadow)

 0:115          direct index (temp int)

 0:115            'a' (temp 3-component vector of int)

@@ -288,7 +288,7 @@
 0:116      Sequence

 0:116        move second child to first child (temp float)

 0:116          'f' (temp float)

-0:116          Function Call: texture(sASC1;vf4;f1; (global float)

+0:116          texture (global float)

 0:116            'Scas' (uniform samplerCubeArrayShadow)

 0:116            'i' (smooth in 4-component vector of float)

 0:116            direct index (temp float)

@@ -297,7 +297,7 @@
 0:116                1 (const int)

 0:117      move second child to first child (temp 4-component vector of int)

 0:117        'c' (temp 4-component vector of int)

-0:117        Function Call: textureGrad(isAC1;vf4;vf3;vf3; (global 4-component vector of int)

+0:117        textureGrad (global 4-component vector of int)

 0:117          'Isca' (uniform isamplerCubeArray)

 0:117          'i' (smooth in 4-component vector of float)

 0:117          Constant:

@@ -357,7 +357,7 @@
 0:162  Function Definition: qux2( (global void)

 0:162    Function Parameters: 

 0:?     Sequence

-0:165      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (global int)

+0:165      imageAtomicCompSwap (global int)

 0:165        'iimg2D' (layout(r32i ) uniform iimage2D)

 0:165        Construct ivec2 (temp 2-component vector of int)

 0:165          'i' (temp int)

@@ -367,7 +367,7 @@
 0:166      Sequence

 0:166        move second child to first child (temp 4-component vector of int)

 0:166          'pos' (temp 4-component vector of int)

-0:166          Function Call: imageLoad(iI21;vi2; (global 4-component vector of int)

+0:166          imageLoad (global 4-component vector of int)

 0:166            'iimg2D' (layout(r32i ) uniform iimage2D)

 0:166            Construct ivec2 (temp 2-component vector of int)

 0:166              'i' (temp int)

@@ -434,7 +434,7 @@
 0:25      Sequence

 0:25        move second child to first child (temp 4-component vector of float)

 0:25          's' (temp 4-component vector of float)

-0:25          Function Call: textureGather(sC1;vf3; (global 4-component vector of float)

+0:25          textureGather (global 4-component vector of float)

 0:25            'sampC' (uniform samplerCube)

 0:25            Constant:

 0:25              0.200000

@@ -446,7 +446,7 @@
 0:32      Sequence

 0:32        move second child to first child (temp 4-component vector of float)

 0:32          's' (temp 4-component vector of float)

-0:32          Function Call: textureGather(sC1;vf3; (global 4-component vector of float)

+0:32          textureGather (global 4-component vector of float)

 0:32            'sampC' (uniform samplerCube)

 0:32            Constant:

 0:32              0.200000

@@ -458,7 +458,7 @@
 0:45      Sequence

 0:45        move second child to first child (temp 4-component vector of float)

 0:45          's' (temp 4-component vector of float)

-0:45          Function Call: textureGather(sC1;vf3; (global 4-component vector of float)

+0:45          textureGather (global 4-component vector of float)

 0:45            'sampC' (uniform samplerCube)

 0:45            Constant:

 0:45              0.200000

@@ -505,7 +505,7 @@
 0:80      's' (temp 4-component vector of float)

 0:81      move second child to first child (temp 4-component vector of float)

 0:81        's' (temp 4-component vector of float)

-0:81        Function Call: textureGatherOffset(sR21;vf2;vi2; (global 4-component vector of float)

+0:81        textureGatherOffset (global 4-component vector of float)

 0:81          'samp2DR' (uniform sampler2DRect)

 0:81          Constant:

 0:81            0.300000

@@ -515,7 +515,7 @@
 0:81            1 (const int)

 0:82      move second child to first child (temp 4-component vector of float)

 0:82        's' (temp 4-component vector of float)

-0:82        Function Call: textureGatherOffset(s21;vf2;vi2; (global 4-component vector of float)

+0:82        textureGatherOffset (global 4-component vector of float)

 0:82          'samp2D' (uniform sampler2D)

 0:82          Constant:

 0:82            0.300000

@@ -525,7 +525,7 @@
 0:82            1 (const int)

 0:83      move second child to first child (temp 4-component vector of float)

 0:83        's' (temp 4-component vector of float)

-0:83        Function Call: textureGatherOffset(sA21;vf3;vi2; (global 4-component vector of float)

+0:83        textureGatherOffset (global 4-component vector of float)

 0:83          'samp2DA' (uniform sampler2DArray)

 0:83          Constant:

 0:83            0.300000

@@ -536,7 +536,7 @@
 0:83            1 (const int)

 0:84      move second child to first child (temp 4-component vector of float)

 0:84        's' (temp 4-component vector of float)

-0:84        Function Call: textureGatherOffset(sS21;vf2;f1;vi2; (global 4-component vector of float)

+0:84        textureGatherOffset (global 4-component vector of float)

 0:84          'samp2DS' (uniform sampler2DShadow)

 0:84          Constant:

 0:84            0.300000

@@ -548,7 +548,7 @@
 0:84            1 (const int)

 0:85      move second child to first child (temp 4-component vector of float)

 0:85        's' (temp 4-component vector of float)

-0:85        Function Call: textureGatherOffset(s21;vf2;vi2;i1; (global 4-component vector of float)

+0:85        textureGatherOffset (global 4-component vector of float)

 0:85          'samp2D' (uniform sampler2D)

 0:85          Constant:

 0:85            0.300000

@@ -563,7 +563,7 @@
 0:?     Sequence

 0:93      move second child to first child (temp 4-component vector of float)

 0:93        's' (temp 4-component vector of float)

-0:93        Function Call: textureGatherOffset(s21;vf2;vi2; (global 4-component vector of float)

+0:93        textureGatherOffset (global 4-component vector of float)

 0:93          'samp2D' (uniform sampler2D)

 0:93          Constant:

 0:93            0.300000

@@ -573,7 +573,7 @@
 0:93            1 (const int)

 0:94      move second child to first child (temp 4-component vector of float)

 0:94        's' (temp 4-component vector of float)

-0:94        Function Call: textureGatherOffset(sA21;vf3;vi2; (global 4-component vector of float)

+0:94        textureGatherOffset (global 4-component vector of float)

 0:94          'samp2DA' (uniform sampler2DArray)

 0:94          Constant:

 0:94            0.300000

@@ -584,7 +584,7 @@
 0:94            1 (const int)

 0:95      move second child to first child (temp 4-component vector of float)

 0:95        's' (temp 4-component vector of float)

-0:95        Function Call: textureGatherOffset(sR21;vf2;vi2; (global 4-component vector of float)

+0:95        textureGatherOffset (global 4-component vector of float)

 0:95          'samp2DR' (uniform sampler2DRect)

 0:95          Constant:

 0:95            0.300000

@@ -594,7 +594,7 @@
 0:95            1 (const int)

 0:96      move second child to first child (temp 4-component vector of float)

 0:96        's' (temp 4-component vector of float)

-0:96        Function Call: textureGatherOffset(sS21;vf2;f1;vi2; (global 4-component vector of float)

+0:96        textureGatherOffset (global 4-component vector of float)

 0:96          'samp2DS' (uniform sampler2DShadow)

 0:96          Constant:

 0:96            0.300000

@@ -606,7 +606,7 @@
 0:96            1 (const int)

 0:97      move second child to first child (temp 4-component vector of float)

 0:97        's' (temp 4-component vector of float)

-0:97        Function Call: textureGatherOffset(s21;vf2;vi2;i1; (global 4-component vector of float)

+0:97        textureGatherOffset (global 4-component vector of float)

 0:97          'samp2D' (uniform sampler2D)

 0:97          Constant:

 0:97            0.300000

@@ -622,20 +622,20 @@
 0:109      Sequence

 0:109        move second child to first child (temp 3-component vector of int)

 0:109          'a' (temp 3-component vector of int)

-0:109          Function Call: textureSize(sAC1;i1; (global 3-component vector of int)

+0:109          textureSize (global 3-component vector of int)

 0:109            'Sca' (uniform samplerCubeArray)

 0:109            Constant:

 0:109              3 (const int)

 0:110      Sequence

 0:110        move second child to first child (temp 4-component vector of float)

 0:110          'b' (temp 4-component vector of float)

-0:110          Function Call: texture(sAC1;vf4; (global 4-component vector of float)

+0:110          texture (global 4-component vector of float)

 0:110            'Sca' (uniform samplerCubeArray)

 0:110            'i' (smooth in 4-component vector of float)

 0:111      Sequence

 0:111        move second child to first child (temp 4-component vector of int)

 0:111          'c' (temp 4-component vector of int)

-0:111          Function Call: texture(isAC1;vf4;f1; (global 4-component vector of int)

+0:111          texture (global 4-component vector of int)

 0:111            'Isca' (uniform isamplerCubeArray)

 0:111            'i' (smooth in 4-component vector of float)

 0:111            Constant:

@@ -643,19 +643,19 @@
 0:112      Sequence

 0:112        move second child to first child (temp 4-component vector of uint)

 0:112          'd' (temp 4-component vector of uint)

-0:112          Function Call: texture(usAC1;vf4; (global 4-component vector of uint)

+0:112          texture (global 4-component vector of uint)

 0:112            'Usca' (uniform usamplerCubeArray)

 0:112            'i' (smooth in 4-component vector of float)

 0:114      move second child to first child (temp 4-component vector of float)

 0:114        'b' (temp 4-component vector of float)

-0:114        Function Call: textureLod(sAC1;vf4;f1; (global 4-component vector of float)

+0:114        textureLod (global 4-component vector of float)

 0:114          'Sca' (uniform samplerCubeArray)

 0:114          'i' (smooth in 4-component vector of float)

 0:114          Constant:

 0:114            1.700000

 0:115      move second child to first child (temp 3-component vector of int)

 0:115        'a' (temp 3-component vector of int)

-0:115        Function Call: textureSize(sASC1;i1; (global 3-component vector of int)

+0:115        textureSize (global 3-component vector of int)

 0:115          'Scas' (uniform samplerCubeArrayShadow)

 0:115          direct index (temp int)

 0:115            'a' (temp 3-component vector of int)

@@ -664,7 +664,7 @@
 0:116      Sequence

 0:116        move second child to first child (temp float)

 0:116          'f' (temp float)

-0:116          Function Call: texture(sASC1;vf4;f1; (global float)

+0:116          texture (global float)

 0:116            'Scas' (uniform samplerCubeArrayShadow)

 0:116            'i' (smooth in 4-component vector of float)

 0:116            direct index (temp float)

@@ -673,7 +673,7 @@
 0:116                1 (const int)

 0:117      move second child to first child (temp 4-component vector of int)

 0:117        'c' (temp 4-component vector of int)

-0:117        Function Call: textureGrad(isAC1;vf4;vf3;vf3; (global 4-component vector of int)

+0:117        textureGrad (global 4-component vector of int)

 0:117          'Isca' (uniform isamplerCubeArray)

 0:117          'i' (smooth in 4-component vector of float)

 0:117          Constant:

@@ -733,7 +733,7 @@
 0:162  Function Definition: qux2( (global void)

 0:162    Function Parameters: 

 0:?     Sequence

-0:165      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (global int)

+0:165      imageAtomicCompSwap (global int)

 0:165        'iimg2D' (layout(r32i ) uniform iimage2D)

 0:165        Construct ivec2 (temp 2-component vector of int)

 0:165          'i' (temp int)

@@ -743,7 +743,7 @@
 0:166      Sequence

 0:166        move second child to first child (temp 4-component vector of int)

 0:166          'pos' (temp 4-component vector of int)

-0:166          Function Call: imageLoad(iI21;vi2; (global 4-component vector of int)

+0:166          imageLoad (global 4-component vector of int)

 0:166            'iimg2D' (layout(r32i ) uniform iimage2D)

 0:166            Construct ivec2 (temp 2-component vector of int)

 0:166              'i' (temp int)

diff --git a/Test/baseResults/130.vert.out b/Test/baseResults/130.vert.out
index 74ed634..cbfe39f 100644
--- a/Test/baseResults/130.vert.out
+++ b/Test/baseResults/130.vert.out
@@ -50,7 +50,7 @@
 0:29      move second child to first child (temp uint)

 0:29        'i' (temp uint)

 0:29        direct index (temp uint)

-0:29          Function Call: texture(us21;vf2; (global 4-component vector of uint)

+0:29          texture (global 4-component vector of uint)

 0:29            'us2D' (uniform usampler2D)

 0:29            Convert int to float (temp 2-component vector of float)

 0:29              'x' (in 2-component vector of int)

@@ -199,7 +199,7 @@
 0:29      move second child to first child (temp uint)

 0:29        'i' (temp uint)

 0:29        direct index (temp uint)

-0:29          Function Call: texture(us21;vf2; (global 4-component vector of uint)

+0:29          texture (global 4-component vector of uint)

 0:29            'us2D' (uniform usampler2D)

 0:29            Convert int to float (temp 2-component vector of float)

 0:29              'x' (in 2-component vector of int)

diff --git a/Test/baseResults/140.vert.out b/Test/baseResults/140.vert.out
index 5f5287a..3493c0e 100644
--- a/Test/baseResults/140.vert.out
+++ b/Test/baseResults/140.vert.out
@@ -32,7 +32,7 @@
 0:13      add second child into first child (temp int)

 0:13        'id' (temp int)

 0:13        direct index (temp int)

-0:13          Function Call: texelFetch(isB1;i1; (global 4-component vector of int)

+0:13          textureFetch (global 4-component vector of int)

 0:13            'sbuf' (uniform isamplerBuffer)

 0:13            Constant:

 0:13              8 (const int)

@@ -57,7 +57,7 @@
 0:50      Sequence

 0:50        move second child to first child (temp 4-component vector of float)

 0:50          'v' (temp 4-component vector of float)

-0:50          Function Call: texelFetch(sR21;vi2; (global 4-component vector of float)

+0:50          textureFetch (global 4-component vector of float)

 0:50            's2dr' (uniform sampler2DRect)

 0:50            'itloc2' (in 2-component vector of int)

 0:51      add second child into first child (temp 4-component vector of float)

@@ -66,7 +66,7 @@
 0:51          0.000000

 0:52      add second child into first child (temp 4-component vector of float)

 0:52        'v' (temp 4-component vector of float)

-0:52        Function Call: texture(sR21;vf2; (global 4-component vector of float)

+0:52        texture (global 4-component vector of float)

 0:52          's2dr' (uniform sampler2DRect)

 0:52          'tloc2' (in 2-component vector of float)

 0:53      add second child into first child (temp 4-component vector of float)

@@ -75,22 +75,22 @@
 0:53          0.000000

 0:54      add second child into first child (temp 4-component vector of float)

 0:54        'v' (temp 4-component vector of float)

-0:54        Function Call: texture(sSR21;vf3; (global float)

+0:54        texture (global float)

 0:54          's2drs' (uniform sampler2DRectShadow)

 0:54          'tloc3' (in 3-component vector of float)

 0:55      add second child into first child (temp 4-component vector of float)

 0:55        'v' (temp 4-component vector of float)

-0:55        Function Call: textureProj(sR21;vf3; (global 4-component vector of float)

+0:55        textureProj (global 4-component vector of float)

 0:55          's2dr' (uniform sampler2DRect)

 0:55          'tloc3' (in 3-component vector of float)

 0:56      add second child into first child (temp 4-component vector of float)

 0:56        'v' (temp 4-component vector of float)

-0:56        Function Call: textureProj(sR21;vf4; (global 4-component vector of float)

+0:56        textureProj (global 4-component vector of float)

 0:56          's2dr' (uniform sampler2DRect)

 0:56          'tloc4' (in 4-component vector of float)

 0:57      add second child into first child (temp 4-component vector of float)

 0:57        'v' (temp 4-component vector of float)

-0:57        Function Call: textureProjGradOffset(sR21;vf4;vf2;vf2;vi2; (global 4-component vector of float)

+0:57        textureProjGradOffset (global 4-component vector of float)

 0:57          's2dr' (uniform sampler2DRect)

 0:57          'tloc4' (in 4-component vector of float)

 0:57          Constant:

@@ -104,7 +104,7 @@
 0:57            2 (const int)

 0:58      add second child into first child (temp 4-component vector of float)

 0:58        'v' (temp 4-component vector of float)

-0:58        Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

+0:58        textureProjGradOffset (global float)

 0:58          's2drs' (uniform sampler2DRectShadow)

 0:58          'tloc4' (in 4-component vector of float)

 0:58          Constant:

@@ -162,7 +162,7 @@
 0:13      add second child into first child (temp int)

 0:13        'id' (temp int)

 0:13        direct index (temp int)

-0:13          Function Call: texelFetch(isB1;i1; (global 4-component vector of int)

+0:13          textureFetch (global 4-component vector of int)

 0:13            'sbuf' (uniform isamplerBuffer)

 0:13            Constant:

 0:13              8 (const int)

@@ -187,7 +187,7 @@
 0:50      Sequence

 0:50        move second child to first child (temp 4-component vector of float)

 0:50          'v' (temp 4-component vector of float)

-0:50          Function Call: texelFetch(sR21;vi2; (global 4-component vector of float)

+0:50          textureFetch (global 4-component vector of float)

 0:50            's2dr' (uniform sampler2DRect)

 0:50            'itloc2' (in 2-component vector of int)

 0:51      add second child into first child (temp 4-component vector of float)

@@ -196,7 +196,7 @@
 0:51          0.000000

 0:52      add second child into first child (temp 4-component vector of float)

 0:52        'v' (temp 4-component vector of float)

-0:52        Function Call: texture(sR21;vf2; (global 4-component vector of float)

+0:52        texture (global 4-component vector of float)

 0:52          's2dr' (uniform sampler2DRect)

 0:52          'tloc2' (in 2-component vector of float)

 0:53      add second child into first child (temp 4-component vector of float)

@@ -205,22 +205,22 @@
 0:53          0.000000

 0:54      add second child into first child (temp 4-component vector of float)

 0:54        'v' (temp 4-component vector of float)

-0:54        Function Call: texture(sSR21;vf3; (global float)

+0:54        texture (global float)

 0:54          's2drs' (uniform sampler2DRectShadow)

 0:54          'tloc3' (in 3-component vector of float)

 0:55      add second child into first child (temp 4-component vector of float)

 0:55        'v' (temp 4-component vector of float)

-0:55        Function Call: textureProj(sR21;vf3; (global 4-component vector of float)

+0:55        textureProj (global 4-component vector of float)

 0:55          's2dr' (uniform sampler2DRect)

 0:55          'tloc3' (in 3-component vector of float)

 0:56      add second child into first child (temp 4-component vector of float)

 0:56        'v' (temp 4-component vector of float)

-0:56        Function Call: textureProj(sR21;vf4; (global 4-component vector of float)

+0:56        textureProj (global 4-component vector of float)

 0:56          's2dr' (uniform sampler2DRect)

 0:56          'tloc4' (in 4-component vector of float)

 0:57      add second child into first child (temp 4-component vector of float)

 0:57        'v' (temp 4-component vector of float)

-0:57        Function Call: textureProjGradOffset(sR21;vf4;vf2;vf2;vi2; (global 4-component vector of float)

+0:57        textureProjGradOffset (global 4-component vector of float)

 0:57          's2dr' (uniform sampler2DRect)

 0:57          'tloc4' (in 4-component vector of float)

 0:57          Constant:

@@ -234,7 +234,7 @@
 0:57            2 (const int)

 0:58      add second child into first child (temp 4-component vector of float)

 0:58        'v' (temp 4-component vector of float)

-0:58        Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

+0:58        textureProjGradOffset (global float)

 0:58          's2drs' (uniform sampler2DRectShadow)

 0:58          'tloc4' (in 4-component vector of float)

 0:58          Constant:

diff --git a/Test/baseResults/150.frag.out b/Test/baseResults/150.frag.out
index aa63e5d..f8a6fc8 100644
--- a/Test/baseResults/150.frag.out
+++ b/Test/baseResults/150.frag.out
@@ -28,51 +28,51 @@
 0:33      Sequence

 0:33        move second child to first child (temp 2-component vector of int)

 0:33          't11' (temp 2-component vector of int)

-0:33          Function Call: textureSize(s2M1; (global 2-component vector of int)

+0:33          textureSize (global 2-component vector of int)

 0:33            'sms' (uniform sampler2DMS)

 0:34      Sequence

 0:34        move second child to first child (temp 2-component vector of int)

 0:34          't12' (temp 2-component vector of int)

-0:34          Function Call: textureSize(is2M1; (global 2-component vector of int)

+0:34          textureSize (global 2-component vector of int)

 0:34            'isms' (uniform isampler2DMS)

 0:35      Sequence

 0:35        move second child to first child (temp 2-component vector of int)

 0:35          't13' (temp 2-component vector of int)

-0:35          Function Call: textureSize(us2M1; (global 2-component vector of int)

+0:35          textureSize (global 2-component vector of int)

 0:35            'usms' (uniform usampler2DMS)

 0:36      Sequence

 0:36        move second child to first child (temp 3-component vector of int)

 0:36          't21' (temp 3-component vector of int)

-0:36          Function Call: textureSize(sA2M1; (global 3-component vector of int)

+0:36          textureSize (global 3-component vector of int)

 0:36            'smsa' (uniform sampler2DMSArray)

 0:37      Sequence

 0:37        move second child to first child (temp 3-component vector of int)

 0:37          't22' (temp 3-component vector of int)

-0:37          Function Call: textureSize(isA2M1; (global 3-component vector of int)

+0:37          textureSize (global 3-component vector of int)

 0:37            'ismsa' (uniform isampler2DMSArray)

 0:38      Sequence

 0:38        move second child to first child (temp 3-component vector of int)

 0:38          't23' (temp 3-component vector of int)

-0:38          Function Call: textureSize(usA2M1; (global 3-component vector of int)

+0:38          textureSize (global 3-component vector of int)

 0:38            'usmsa' (uniform usampler2DMSArray)

 0:39      Sequence

 0:39        move second child to first child (temp 4-component vector of float)

 0:39          't31' (temp 4-component vector of float)

-0:39          Function Call: texelFetch(s2M1;vi2;i1; (global 4-component vector of float)

+0:39          textureFetch (global 4-component vector of float)

 0:39            'sms' (uniform sampler2DMS)

 0:39            'p2' (flat in 2-component vector of int)

 0:39            'samp' (flat in int)

 0:40      Sequence

 0:40        move second child to first child (temp 4-component vector of int)

 0:40          't32' (temp 4-component vector of int)

-0:40          Function Call: texelFetch(is2M1;vi2;i1; (global 4-component vector of int)

+0:40          textureFetch (global 4-component vector of int)

 0:40            'isms' (uniform isampler2DMS)

 0:40            'p2' (flat in 2-component vector of int)

 0:40            'samp' (flat in int)

 0:41      Sequence

 0:41        move second child to first child (temp 4-component vector of uint)

 0:41          't33' (temp 4-component vector of uint)

-0:41          Function Call: texelFetch(us2M1;vi2;i1; (global 4-component vector of uint)

+0:41          textureFetch (global 4-component vector of uint)

 0:41            'usms' (uniform usampler2DMS)

 0:41            'p2' (flat in 2-component vector of int)

 0:41            Constant:

@@ -80,14 +80,14 @@
 0:42      Sequence

 0:42        move second child to first child (temp 4-component vector of float)

 0:42          't41' (temp 4-component vector of float)

-0:42          Function Call: texelFetch(sA2M1;vi3;i1; (global 4-component vector of float)

+0:42          textureFetch (global 4-component vector of float)

 0:42            'smsa' (uniform sampler2DMSArray)

 0:42            'p3' (flat in 3-component vector of int)

 0:42            'samp' (flat in int)

 0:43      Sequence

 0:43        move second child to first child (temp 4-component vector of int)

 0:43          't42' (temp 4-component vector of int)

-0:43          Function Call: texelFetch(isA2M1;vi3;i1; (global 4-component vector of int)

+0:43          textureFetch (global 4-component vector of int)

 0:43            'ismsa' (uniform isampler2DMSArray)

 0:43            Constant:

 0:43              2 (const int)

@@ -97,7 +97,7 @@
 0:44      Sequence

 0:44        move second child to first child (temp 4-component vector of uint)

 0:44          't43' (temp 4-component vector of uint)

-0:44          Function Call: texelFetch(usA2M1;vi3;i1; (global 4-component vector of uint)

+0:44          textureFetch (global 4-component vector of uint)

 0:44            'usmsa' (uniform usampler2DMSArray)

 0:44            'p3' (flat in 3-component vector of int)

 0:44            'samp' (flat in int)

@@ -143,51 +143,51 @@
 0:33      Sequence

 0:33        move second child to first child (temp 2-component vector of int)

 0:33          't11' (temp 2-component vector of int)

-0:33          Function Call: textureSize(s2M1; (global 2-component vector of int)

+0:33          textureSize (global 2-component vector of int)

 0:33            'sms' (uniform sampler2DMS)

 0:34      Sequence

 0:34        move second child to first child (temp 2-component vector of int)

 0:34          't12' (temp 2-component vector of int)

-0:34          Function Call: textureSize(is2M1; (global 2-component vector of int)

+0:34          textureSize (global 2-component vector of int)

 0:34            'isms' (uniform isampler2DMS)

 0:35      Sequence

 0:35        move second child to first child (temp 2-component vector of int)

 0:35          't13' (temp 2-component vector of int)

-0:35          Function Call: textureSize(us2M1; (global 2-component vector of int)

+0:35          textureSize (global 2-component vector of int)

 0:35            'usms' (uniform usampler2DMS)

 0:36      Sequence

 0:36        move second child to first child (temp 3-component vector of int)

 0:36          't21' (temp 3-component vector of int)

-0:36          Function Call: textureSize(sA2M1; (global 3-component vector of int)

+0:36          textureSize (global 3-component vector of int)

 0:36            'smsa' (uniform sampler2DMSArray)

 0:37      Sequence

 0:37        move second child to first child (temp 3-component vector of int)

 0:37          't22' (temp 3-component vector of int)

-0:37          Function Call: textureSize(isA2M1; (global 3-component vector of int)

+0:37          textureSize (global 3-component vector of int)

 0:37            'ismsa' (uniform isampler2DMSArray)

 0:38      Sequence

 0:38        move second child to first child (temp 3-component vector of int)

 0:38          't23' (temp 3-component vector of int)

-0:38          Function Call: textureSize(usA2M1; (global 3-component vector of int)

+0:38          textureSize (global 3-component vector of int)

 0:38            'usmsa' (uniform usampler2DMSArray)

 0:39      Sequence

 0:39        move second child to first child (temp 4-component vector of float)

 0:39          't31' (temp 4-component vector of float)

-0:39          Function Call: texelFetch(s2M1;vi2;i1; (global 4-component vector of float)

+0:39          textureFetch (global 4-component vector of float)

 0:39            'sms' (uniform sampler2DMS)

 0:39            'p2' (flat in 2-component vector of int)

 0:39            'samp' (flat in int)

 0:40      Sequence

 0:40        move second child to first child (temp 4-component vector of int)

 0:40          't32' (temp 4-component vector of int)

-0:40          Function Call: texelFetch(is2M1;vi2;i1; (global 4-component vector of int)

+0:40          textureFetch (global 4-component vector of int)

 0:40            'isms' (uniform isampler2DMS)

 0:40            'p2' (flat in 2-component vector of int)

 0:40            'samp' (flat in int)

 0:41      Sequence

 0:41        move second child to first child (temp 4-component vector of uint)

 0:41          't33' (temp 4-component vector of uint)

-0:41          Function Call: texelFetch(us2M1;vi2;i1; (global 4-component vector of uint)

+0:41          textureFetch (global 4-component vector of uint)

 0:41            'usms' (uniform usampler2DMS)

 0:41            'p2' (flat in 2-component vector of int)

 0:41            Constant:

@@ -195,14 +195,14 @@
 0:42      Sequence

 0:42        move second child to first child (temp 4-component vector of float)

 0:42          't41' (temp 4-component vector of float)

-0:42          Function Call: texelFetch(sA2M1;vi3;i1; (global 4-component vector of float)

+0:42          textureFetch (global 4-component vector of float)

 0:42            'smsa' (uniform sampler2DMSArray)

 0:42            'p3' (flat in 3-component vector of int)

 0:42            'samp' (flat in int)

 0:43      Sequence

 0:43        move second child to first child (temp 4-component vector of int)

 0:43          't42' (temp 4-component vector of int)

-0:43          Function Call: texelFetch(isA2M1;vi3;i1; (global 4-component vector of int)

+0:43          textureFetch (global 4-component vector of int)

 0:43            'ismsa' (uniform isampler2DMSArray)

 0:43            Constant:

 0:43              2 (const int)

@@ -212,7 +212,7 @@
 0:44      Sequence

 0:44        move second child to first child (temp 4-component vector of uint)

 0:44          't43' (temp 4-component vector of uint)

-0:44          Function Call: texelFetch(usA2M1;vi3;i1; (global 4-component vector of uint)

+0:44          textureFetch (global 4-component vector of uint)

 0:44            'usmsa' (uniform usampler2DMSArray)

 0:44            'p3' (flat in 3-component vector of int)

 0:44            'samp' (flat in int)

diff --git a/Test/baseResults/300.frag.out b/Test/baseResults/300.frag.out
index fb050a5..b175028 100644
--- a/Test/baseResults/300.frag.out
+++ b/Test/baseResults/300.frag.out
@@ -6,6 +6,7 @@
 ERROR: 0:32: 'uint' : cannot apply precision statement to this type; use 'float', 'int' or a sampler type 

 ERROR: 0:39: 'structure' : non-uniform struct contains a sampler or image: badout

 ERROR: 0:60: 'texel offset' : argument must be compile-time constant 

+ERROR: 0:62: 'texel offset' : argument must be compile-time constant 

 ERROR: 0:63: 'texel offset' : argument must be compile-time constant 

 ERROR: 0:64: 'texel offset' : argument must be compile-time constant 

 ERROR: 0:66: 'texel offset' : argument must be compile-time constant 

@@ -41,7 +42,7 @@
 ERROR: 0:158: 'invariant' : can only apply to an output 

 ERROR: 0:160: 'imageBuffer' : Reserved word. 

 ERROR: 0:160: '' :  syntax error

-ERROR: 42 compilation errors.  No code generated.

+ERROR: 43 compilation errors.  No code generated.

 

 

 Shader version: 300

@@ -52,37 +53,37 @@
 0:?     Sequence

 0:57      move second child to first child (temp lowp 4-component vector of float)

 0:57        'v' (temp lowp 4-component vector of float)

-0:57        Function Call: texture(s21;vf2; (global lowp 4-component vector of float)

+0:57        texture (global lowp 4-component vector of float)

 0:57          's2D' (uniform lowp sampler2D)

 0:57          'c2D' (smooth in lowp 2-component vector of float)

 0:58      move second child to first child (temp lowp 4-component vector of float)

 0:58        'v' (temp lowp 4-component vector of float)

-0:58        Function Call: textureProj(s31;vf4; (global lowp 4-component vector of float)

+0:58        textureProj (global lowp 4-component vector of float)

 0:58          's3D' (uniform lowp sampler3D)

 0:58          'c4D' (smooth temp lowp 4-component vector of float)

 0:59      move second child to first child (temp lowp 4-component vector of float)

 0:59        'v' (temp lowp 4-component vector of float)

-0:59        Function Call: textureLod(sA21;vf3;f1; (global lowp 4-component vector of float)

+0:59        textureLod (global lowp 4-component vector of float)

 0:59          's2DArray' (uniform lowp sampler2DArray)

 0:59          'c3D' (smooth in lowp 3-component vector of float)

 0:59          Constant:

 0:59            1.200000

 0:60      move second child to first child (temp lowp float)

 0:60        'f' (temp lowp float)

-0:60        Function Call: textureOffset(sS21;vf3;vi2;f1; (global lowp float)

+0:60        textureOffset (global lowp float)

 0:60          's2DShadow' (uniform lowp sampler2DShadow)

 0:60          'c3D' (smooth in lowp 3-component vector of float)

 0:60          'ic2D' (flat in mediump 2-component vector of int)

 0:60          'c1D' (smooth in lowp float)

 0:61      move second child to first child (temp lowp 4-component vector of float)

 0:61        'v' (temp lowp 4-component vector of float)

-0:61        Function Call: texelFetch(s31;vi3;i1; (global lowp 4-component vector of float)

+0:61        textureFetch (global lowp 4-component vector of float)

 0:61          's3D' (uniform lowp sampler3D)

 0:61          'ic3D' (flat in mediump 3-component vector of int)

 0:61          'ic1D' (flat in mediump int)

 0:62      move second child to first child (temp lowp 4-component vector of float)

 0:62        'v' (temp lowp 4-component vector of float)

-0:62        Function Call: texelFetchOffset(s21;vi2;i1;vi2; (global lowp 4-component vector of float)

+0:62        textureFetchOffset (global lowp 4-component vector of float)

 0:62          direct index (temp lowp sampler2D)

 0:62            'arrayedSampler' (uniform 5-element array of lowp sampler2D)

 0:62            Constant:

@@ -93,28 +94,28 @@
 0:62          'ic2D' (flat in mediump 2-component vector of int)

 0:63      move second child to first child (temp lowp float)

 0:63        'f' (temp lowp float)

-0:63        Function Call: textureLodOffset(sS21;vf3;f1;vi2; (global lowp float)

+0:63        textureLodOffset (global lowp float)

 0:63          's2DShadow' (uniform lowp sampler2DShadow)

 0:63          'c3D' (smooth in lowp 3-component vector of float)

 0:63          'c1D' (smooth in lowp float)

 0:63          'ic2D' (flat in mediump 2-component vector of int)

 0:64      move second child to first child (temp lowp 4-component vector of float)

 0:64        'v' (temp lowp 4-component vector of float)

-0:64        Function Call: textureProjLodOffset(s21;vf3;f1;vi2; (global lowp 4-component vector of float)

+0:64        textureProjLodOffset (global lowp 4-component vector of float)

 0:64          's2D' (uniform lowp sampler2D)

 0:64          'c3D' (smooth in lowp 3-component vector of float)

 0:64          'c1D' (smooth in lowp float)

 0:64          'ic2D' (flat in mediump 2-component vector of int)

 0:65      move second child to first child (temp lowp 4-component vector of float)

 0:65        'v' (temp lowp 4-component vector of float)

-0:65        Function Call: textureGrad(sC1;vf3;vf3;vf3; (global lowp 4-component vector of float)

+0:65        textureGrad (global lowp 4-component vector of float)

 0:65          'sCube' (uniform lowp samplerCube)

 0:65          'c3D' (smooth in lowp 3-component vector of float)

 0:65          'c3D' (smooth in lowp 3-component vector of float)

 0:65          'c3D' (smooth in lowp 3-component vector of float)

 0:66      move second child to first child (temp lowp float)

 0:66        'f' (temp lowp float)

-0:66        Function Call: textureGradOffset(sAS21;vf4;vf2;vf2;vi2; (global lowp float)

+0:66        textureGradOffset (global lowp float)

 0:66          's2DArrayShadow' (uniform lowp sampler2DArrayShadow)

 0:66          'c4D' (smooth temp lowp 4-component vector of float)

 0:66          'c2D' (smooth in lowp 2-component vector of float)

@@ -122,14 +123,14 @@
 0:66          'ic2D' (flat in mediump 2-component vector of int)

 0:67      move second child to first child (temp lowp 4-component vector of float)

 0:67        'v' (temp lowp 4-component vector of float)

-0:67        Function Call: textureProjGrad(s31;vf4;vf3;vf3; (global lowp 4-component vector of float)

+0:67        textureProjGrad (global lowp 4-component vector of float)

 0:67          's3D' (uniform lowp sampler3D)

 0:67          'c4D' (smooth temp lowp 4-component vector of float)

 0:67          'c3D' (smooth in lowp 3-component vector of float)

 0:67          'c3D' (smooth in lowp 3-component vector of float)

 0:68      move second child to first child (temp lowp 4-component vector of float)

 0:68        'v' (temp lowp 4-component vector of float)

-0:68        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (global lowp 4-component vector of float)

+0:68        textureProjGradOffset (global lowp 4-component vector of float)

 0:68          's2D' (uniform lowp sampler2D)

 0:68          'c3D' (smooth in lowp 3-component vector of float)

 0:68          'c2D' (smooth in lowp 2-component vector of float)

@@ -137,51 +138,51 @@
 0:68          'ic2D' (flat in mediump 2-component vector of int)

 0:69      move second child to first child (temp lowp 4-component vector of float)

 0:69        'v' (temp lowp 4-component vector of float)

-0:69        Function Call: texture(s21;vf2; (global lowp 4-component vector of float)

+0:69        texture (global lowp 4-component vector of float)

 0:69          indirect index (temp lowp sampler2D)

 0:69            'arrayedSampler' (uniform 5-element array of lowp sampler2D)

 0:69            'ic1D' (flat in mediump int)

 0:69          'c2D' (smooth in lowp 2-component vector of float)

 0:72      move second child to first child (temp mediump 4-component vector of int)

 0:72        'iv' (temp mediump 4-component vector of int)

-0:72        Function Call: texture(is21;vf2; (global mediump 4-component vector of int)

+0:72        texture (global mediump 4-component vector of int)

 0:72          'is2D' (uniform lowp isampler2D)

 0:72          'c2D' (smooth in lowp 2-component vector of float)

 0:73      move second child to first child (temp mediump 4-component vector of int)

 0:73        'iv' (temp mediump 4-component vector of int)

-0:73        Function Call: textureProjOffset(is21;vf4;vi2; (global mediump 4-component vector of int)

+0:73        textureProjOffset (global mediump 4-component vector of int)

 0:73          'is2D' (uniform lowp isampler2D)

 0:73          'c4D' (smooth temp lowp 4-component vector of float)

 0:73          'ic2D' (flat in mediump 2-component vector of int)

 0:74      move second child to first child (temp mediump 4-component vector of int)

 0:74        'iv' (temp mediump 4-component vector of int)

-0:74        Function Call: textureProjLod(is21;vf3;f1; (global mediump 4-component vector of int)

+0:74        textureProjLod (global mediump 4-component vector of int)

 0:74          'is2D' (uniform lowp isampler2D)

 0:74          'c3D' (smooth in lowp 3-component vector of float)

 0:74          'c1D' (smooth in lowp float)

 0:75      move second child to first child (temp mediump 4-component vector of int)

 0:75        'iv' (temp mediump 4-component vector of int)

-0:75        Function Call: textureProjGrad(is21;vf3;vf2;vf2; (global mediump 4-component vector of int)

+0:75        textureProjGrad (global mediump 4-component vector of int)

 0:75          'is2D' (uniform lowp isampler2D)

 0:75          'c3D' (smooth in lowp 3-component vector of float)

 0:75          'c2D' (smooth in lowp 2-component vector of float)

 0:75          'c2D' (smooth in lowp 2-component vector of float)

 0:76      move second child to first child (temp mediump 4-component vector of int)

 0:76        'iv' (temp mediump 4-component vector of int)

-0:76        Function Call: texture(is31;vf3;f1; (global mediump 4-component vector of int)

+0:76        texture (global mediump 4-component vector of int)

 0:76          'is3D' (uniform lowp isampler3D)

 0:76          'c3D' (smooth in lowp 3-component vector of float)

 0:76          Constant:

 0:76            4.200000

 0:77      move second child to first child (temp mediump 4-component vector of int)

 0:77        'iv' (temp mediump 4-component vector of int)

-0:77        Function Call: textureLod(isC1;vf3;f1; (global mediump 4-component vector of int)

+0:77        textureLod (global mediump 4-component vector of int)

 0:77          'isCube' (uniform lowp isamplerCube)

 0:77          'c3D' (smooth in lowp 3-component vector of float)

 0:77          'c1D' (smooth in lowp float)

 0:78      move second child to first child (temp mediump 4-component vector of int)

 0:78        'iv' (temp mediump 4-component vector of int)

-0:78        Function Call: texelFetch(isA21;vi3;i1; (global mediump 4-component vector of int)

+0:78        textureFetch (global mediump 4-component vector of int)

 0:78          'is2DArray' (uniform lowp isampler2DArray)

 0:78          'ic3D' (flat in mediump 3-component vector of int)

 0:78          'ic1D' (flat in mediump int)

@@ -193,7 +194,7 @@
 0:80              0 (const int)

 0:80            Constant:

 0:80              1 (const int)

-0:80        Function Call: textureSize(sSC1;i1; (global highp 2-component vector of int)

+0:80        textureSize (global highp 2-component vector of int)

 0:80          'sCubeShadow' (uniform lowp samplerCubeShadow)

 0:80          Constant:

 0:80            2 (const int)

@@ -274,14 +275,14 @@
 0:126  Function Definition: foo23( (global void)

 0:126    Function Parameters: 

 0:128    Sequence

-0:128      Function Call: textureOffset(sS21;vf3;vi2;f1; (global lowp float)

+0:128      textureOffset (global lowp float)

 0:128        's2DShadow' (uniform lowp sampler2DShadow)

 0:128        'c3D' (smooth in lowp 3-component vector of float)

 0:128        Constant:

 0:128          -8 (const int)

 0:128          7 (const int)

 0:128        'c1D' (smooth in lowp float)

-0:129      Function Call: textureOffset(sS21;vf3;vi2;f1; (global lowp float)

+0:129      textureOffset (global lowp float)

 0:129        's2DShadow' (uniform lowp sampler2DShadow)

 0:129        'c3D' (smooth in lowp 3-component vector of float)

 0:129        Constant:

@@ -408,37 +409,37 @@
 0:?     Sequence

 0:57      move second child to first child (temp lowp 4-component vector of float)

 0:57        'v' (temp lowp 4-component vector of float)

-0:57        Function Call: texture(s21;vf2; (global lowp 4-component vector of float)

+0:57        texture (global lowp 4-component vector of float)

 0:57          's2D' (uniform lowp sampler2D)

 0:57          'c2D' (smooth in lowp 2-component vector of float)

 0:58      move second child to first child (temp lowp 4-component vector of float)

 0:58        'v' (temp lowp 4-component vector of float)

-0:58        Function Call: textureProj(s31;vf4; (global lowp 4-component vector of float)

+0:58        textureProj (global lowp 4-component vector of float)

 0:58          's3D' (uniform lowp sampler3D)

 0:58          'c4D' (smooth temp lowp 4-component vector of float)

 0:59      move second child to first child (temp lowp 4-component vector of float)

 0:59        'v' (temp lowp 4-component vector of float)

-0:59        Function Call: textureLod(sA21;vf3;f1; (global lowp 4-component vector of float)

+0:59        textureLod (global lowp 4-component vector of float)

 0:59          's2DArray' (uniform lowp sampler2DArray)

 0:59          'c3D' (smooth in lowp 3-component vector of float)

 0:59          Constant:

 0:59            1.200000

 0:60      move second child to first child (temp lowp float)

 0:60        'f' (temp lowp float)

-0:60        Function Call: textureOffset(sS21;vf3;vi2;f1; (global lowp float)

+0:60        textureOffset (global lowp float)

 0:60          's2DShadow' (uniform lowp sampler2DShadow)

 0:60          'c3D' (smooth in lowp 3-component vector of float)

 0:60          'ic2D' (flat in mediump 2-component vector of int)

 0:60          'c1D' (smooth in lowp float)

 0:61      move second child to first child (temp lowp 4-component vector of float)

 0:61        'v' (temp lowp 4-component vector of float)

-0:61        Function Call: texelFetch(s31;vi3;i1; (global lowp 4-component vector of float)

+0:61        textureFetch (global lowp 4-component vector of float)

 0:61          's3D' (uniform lowp sampler3D)

 0:61          'ic3D' (flat in mediump 3-component vector of int)

 0:61          'ic1D' (flat in mediump int)

 0:62      move second child to first child (temp lowp 4-component vector of float)

 0:62        'v' (temp lowp 4-component vector of float)

-0:62        Function Call: texelFetchOffset(s21;vi2;i1;vi2; (global lowp 4-component vector of float)

+0:62        textureFetchOffset (global lowp 4-component vector of float)

 0:62          direct index (temp lowp sampler2D)

 0:62            'arrayedSampler' (uniform 5-element array of lowp sampler2D)

 0:62            Constant:

@@ -449,28 +450,28 @@
 0:62          'ic2D' (flat in mediump 2-component vector of int)

 0:63      move second child to first child (temp lowp float)

 0:63        'f' (temp lowp float)

-0:63        Function Call: textureLodOffset(sS21;vf3;f1;vi2; (global lowp float)

+0:63        textureLodOffset (global lowp float)

 0:63          's2DShadow' (uniform lowp sampler2DShadow)

 0:63          'c3D' (smooth in lowp 3-component vector of float)

 0:63          'c1D' (smooth in lowp float)

 0:63          'ic2D' (flat in mediump 2-component vector of int)

 0:64      move second child to first child (temp lowp 4-component vector of float)

 0:64        'v' (temp lowp 4-component vector of float)

-0:64        Function Call: textureProjLodOffset(s21;vf3;f1;vi2; (global lowp 4-component vector of float)

+0:64        textureProjLodOffset (global lowp 4-component vector of float)

 0:64          's2D' (uniform lowp sampler2D)

 0:64          'c3D' (smooth in lowp 3-component vector of float)

 0:64          'c1D' (smooth in lowp float)

 0:64          'ic2D' (flat in mediump 2-component vector of int)

 0:65      move second child to first child (temp lowp 4-component vector of float)

 0:65        'v' (temp lowp 4-component vector of float)

-0:65        Function Call: textureGrad(sC1;vf3;vf3;vf3; (global lowp 4-component vector of float)

+0:65        textureGrad (global lowp 4-component vector of float)

 0:65          'sCube' (uniform lowp samplerCube)

 0:65          'c3D' (smooth in lowp 3-component vector of float)

 0:65          'c3D' (smooth in lowp 3-component vector of float)

 0:65          'c3D' (smooth in lowp 3-component vector of float)

 0:66      move second child to first child (temp lowp float)

 0:66        'f' (temp lowp float)

-0:66        Function Call: textureGradOffset(sAS21;vf4;vf2;vf2;vi2; (global lowp float)

+0:66        textureGradOffset (global lowp float)

 0:66          's2DArrayShadow' (uniform lowp sampler2DArrayShadow)

 0:66          'c4D' (smooth temp lowp 4-component vector of float)

 0:66          'c2D' (smooth in lowp 2-component vector of float)

@@ -478,14 +479,14 @@
 0:66          'ic2D' (flat in mediump 2-component vector of int)

 0:67      move second child to first child (temp lowp 4-component vector of float)

 0:67        'v' (temp lowp 4-component vector of float)

-0:67        Function Call: textureProjGrad(s31;vf4;vf3;vf3; (global lowp 4-component vector of float)

+0:67        textureProjGrad (global lowp 4-component vector of float)

 0:67          's3D' (uniform lowp sampler3D)

 0:67          'c4D' (smooth temp lowp 4-component vector of float)

 0:67          'c3D' (smooth in lowp 3-component vector of float)

 0:67          'c3D' (smooth in lowp 3-component vector of float)

 0:68      move second child to first child (temp lowp 4-component vector of float)

 0:68        'v' (temp lowp 4-component vector of float)

-0:68        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (global lowp 4-component vector of float)

+0:68        textureProjGradOffset (global lowp 4-component vector of float)

 0:68          's2D' (uniform lowp sampler2D)

 0:68          'c3D' (smooth in lowp 3-component vector of float)

 0:68          'c2D' (smooth in lowp 2-component vector of float)

@@ -493,51 +494,51 @@
 0:68          'ic2D' (flat in mediump 2-component vector of int)

 0:69      move second child to first child (temp lowp 4-component vector of float)

 0:69        'v' (temp lowp 4-component vector of float)

-0:69        Function Call: texture(s21;vf2; (global lowp 4-component vector of float)

+0:69        texture (global lowp 4-component vector of float)

 0:69          indirect index (temp lowp sampler2D)

 0:69            'arrayedSampler' (uniform 5-element array of lowp sampler2D)

 0:69            'ic1D' (flat in mediump int)

 0:69          'c2D' (smooth in lowp 2-component vector of float)

 0:72      move second child to first child (temp mediump 4-component vector of int)

 0:72        'iv' (temp mediump 4-component vector of int)

-0:72        Function Call: texture(is21;vf2; (global mediump 4-component vector of int)

+0:72        texture (global mediump 4-component vector of int)

 0:72          'is2D' (uniform lowp isampler2D)

 0:72          'c2D' (smooth in lowp 2-component vector of float)

 0:73      move second child to first child (temp mediump 4-component vector of int)

 0:73        'iv' (temp mediump 4-component vector of int)

-0:73        Function Call: textureProjOffset(is21;vf4;vi2; (global mediump 4-component vector of int)

+0:73        textureProjOffset (global mediump 4-component vector of int)

 0:73          'is2D' (uniform lowp isampler2D)

 0:73          'c4D' (smooth temp lowp 4-component vector of float)

 0:73          'ic2D' (flat in mediump 2-component vector of int)

 0:74      move second child to first child (temp mediump 4-component vector of int)

 0:74        'iv' (temp mediump 4-component vector of int)

-0:74        Function Call: textureProjLod(is21;vf3;f1; (global mediump 4-component vector of int)

+0:74        textureProjLod (global mediump 4-component vector of int)

 0:74          'is2D' (uniform lowp isampler2D)

 0:74          'c3D' (smooth in lowp 3-component vector of float)

 0:74          'c1D' (smooth in lowp float)

 0:75      move second child to first child (temp mediump 4-component vector of int)

 0:75        'iv' (temp mediump 4-component vector of int)

-0:75        Function Call: textureProjGrad(is21;vf3;vf2;vf2; (global mediump 4-component vector of int)

+0:75        textureProjGrad (global mediump 4-component vector of int)

 0:75          'is2D' (uniform lowp isampler2D)

 0:75          'c3D' (smooth in lowp 3-component vector of float)

 0:75          'c2D' (smooth in lowp 2-component vector of float)

 0:75          'c2D' (smooth in lowp 2-component vector of float)

 0:76      move second child to first child (temp mediump 4-component vector of int)

 0:76        'iv' (temp mediump 4-component vector of int)

-0:76        Function Call: texture(is31;vf3;f1; (global mediump 4-component vector of int)

+0:76        texture (global mediump 4-component vector of int)

 0:76          'is3D' (uniform lowp isampler3D)

 0:76          'c3D' (smooth in lowp 3-component vector of float)

 0:76          Constant:

 0:76            4.200000

 0:77      move second child to first child (temp mediump 4-component vector of int)

 0:77        'iv' (temp mediump 4-component vector of int)

-0:77        Function Call: textureLod(isC1;vf3;f1; (global mediump 4-component vector of int)

+0:77        textureLod (global mediump 4-component vector of int)

 0:77          'isCube' (uniform lowp isamplerCube)

 0:77          'c3D' (smooth in lowp 3-component vector of float)

 0:77          'c1D' (smooth in lowp float)

 0:78      move second child to first child (temp mediump 4-component vector of int)

 0:78        'iv' (temp mediump 4-component vector of int)

-0:78        Function Call: texelFetch(isA21;vi3;i1; (global mediump 4-component vector of int)

+0:78        textureFetch (global mediump 4-component vector of int)

 0:78          'is2DArray' (uniform lowp isampler2DArray)

 0:78          'ic3D' (flat in mediump 3-component vector of int)

 0:78          'ic1D' (flat in mediump int)

@@ -549,7 +550,7 @@
 0:80              0 (const int)

 0:80            Constant:

 0:80              1 (const int)

-0:80        Function Call: textureSize(sSC1;i1; (global highp 2-component vector of int)

+0:80        textureSize (global highp 2-component vector of int)

 0:80          'sCubeShadow' (uniform lowp samplerCubeShadow)

 0:80          Constant:

 0:80            2 (const int)

@@ -630,14 +631,14 @@
 0:126  Function Definition: foo23( (global void)

 0:126    Function Parameters: 

 0:128    Sequence

-0:128      Function Call: textureOffset(sS21;vf3;vi2;f1; (global lowp float)

+0:128      textureOffset (global lowp float)

 0:128        's2DShadow' (uniform lowp sampler2DShadow)

 0:128        'c3D' (smooth in lowp 3-component vector of float)

 0:128        Constant:

 0:128          -8 (const int)

 0:128          7 (const int)

 0:128        'c1D' (smooth in lowp float)

-0:129      Function Call: textureOffset(sS21;vf3;vi2;f1; (global lowp float)

+0:129      textureOffset (global lowp float)

 0:129        's2DShadow' (uniform lowp sampler2DShadow)

 0:129        'c3D' (smooth in lowp 3-component vector of float)

 0:129        Constant:

diff --git a/Test/baseResults/300.vert.out b/Test/baseResults/300.vert.out
index b75c489..cb861f6 100644
--- a/Test/baseResults/300.vert.out
+++ b/Test/baseResults/300.vert.out
@@ -173,7 +173,7 @@
 0:120      Sequence

 0:120        move second child to first child (temp highp 2-component vector of int)

 0:120          'x1' (temp highp 2-component vector of int)

-0:120          Function Call: textureSize(s21;i1; (global highp 2-component vector of int)

+0:120          textureSize (global highp 2-component vector of int)

 0:120            's2D' (uniform lowp sampler2D)

 0:120            Constant:

 0:120              2 (const int)

@@ -182,7 +182,7 @@
 0:122      Sequence

 0:122        move second child to first child (temp highp 3-component vector of int)

 0:122          'x3' (temp highp 3-component vector of int)

-0:122          Function Call: textureSize(sAS21;i1; (global highp 3-component vector of int)

+0:122          textureSize (global highp 3-component vector of int)

 0:122            's2DAS' (uniform lowp sampler2DArrayShadow)

 0:122            Constant:

 0:122              -1 (const int)

@@ -191,7 +191,7 @@
 0:124      Sequence

 0:124        move second child to first child (temp highp 4-component vector of float)

 0:124          'x4' (temp highp 4-component vector of float)

-0:124          Function Call: texture(s21;vf2; (global highp 4-component vector of float)

+0:124          texture (global highp 4-component vector of float)

 0:124            's2D' (uniform lowp sampler2D)

 0:124            'c2D' (in highp 2-component vector of float)

 0:125      Constant:

@@ -199,7 +199,7 @@
 0:126      Sequence

 0:126        move second child to first child (temp highp 4-component vector of float)

 0:126          'x5' (temp highp 4-component vector of float)

-0:126          Function Call: textureProjOffset(s31;vf4;vi3; (global highp 4-component vector of float)

+0:126          textureProjOffset (global highp 4-component vector of float)

 0:126            's3D' (uniform lowp sampler3D)

 0:126            Constant:

 0:126              0.200000

@@ -215,7 +215,7 @@
 0:128      Sequence

 0:128        move second child to first child (temp highp float)

 0:128          'x6' (temp highp float)

-0:128          Function Call: textureProjGradOffset(sS21;vf4;vf2;vf2;vi2; (global highp float)

+0:128          textureProjGradOffset (global highp float)

 0:128            's2DS' (uniform lowp sampler2DShadow)

 0:128            'invIn' (invariant in highp 4-component vector of float)

 0:128            Constant:

@@ -432,7 +432,7 @@
 0:120      Sequence

 0:120        move second child to first child (temp highp 2-component vector of int)

 0:120          'x1' (temp highp 2-component vector of int)

-0:120          Function Call: textureSize(s21;i1; (global highp 2-component vector of int)

+0:120          textureSize (global highp 2-component vector of int)

 0:120            's2D' (uniform lowp sampler2D)

 0:120            Constant:

 0:120              2 (const int)

@@ -441,7 +441,7 @@
 0:122      Sequence

 0:122        move second child to first child (temp highp 3-component vector of int)

 0:122          'x3' (temp highp 3-component vector of int)

-0:122          Function Call: textureSize(sAS21;i1; (global highp 3-component vector of int)

+0:122          textureSize (global highp 3-component vector of int)

 0:122            's2DAS' (uniform lowp sampler2DArrayShadow)

 0:122            Constant:

 0:122              -1 (const int)

@@ -450,7 +450,7 @@
 0:124      Sequence

 0:124        move second child to first child (temp highp 4-component vector of float)

 0:124          'x4' (temp highp 4-component vector of float)

-0:124          Function Call: texture(s21;vf2; (global highp 4-component vector of float)

+0:124          texture (global highp 4-component vector of float)

 0:124            's2D' (uniform lowp sampler2D)

 0:124            'c2D' (in highp 2-component vector of float)

 0:125      Constant:

@@ -458,7 +458,7 @@
 0:126      Sequence

 0:126        move second child to first child (temp highp 4-component vector of float)

 0:126          'x5' (temp highp 4-component vector of float)

-0:126          Function Call: textureProjOffset(s31;vf4;vi3; (global highp 4-component vector of float)

+0:126          textureProjOffset (global highp 4-component vector of float)

 0:126            's3D' (uniform lowp sampler3D)

 0:126            Constant:

 0:126              0.200000

@@ -474,7 +474,7 @@
 0:128      Sequence

 0:128        move second child to first child (temp highp float)

 0:128          'x6' (temp highp float)

-0:128          Function Call: textureProjGradOffset(sS21;vf4;vf2;vf2;vi2; (global highp float)

+0:128          textureProjGradOffset (global highp float)

 0:128            's2DS' (uniform lowp sampler2DShadow)

 0:128            'invIn' (invariant in highp 4-component vector of float)

 0:128            Constant:

diff --git a/Test/baseResults/300block.frag.out b/Test/baseResults/300block.frag.out
index 4756e66..1704845 100644
--- a/Test/baseResults/300block.frag.out
+++ b/Test/baseResults/300block.frag.out
@@ -23,18 +23,18 @@
 0:42  Function Definition: main( (global void)

 0:42    Function Parameters: 

 0:44    Sequence

-0:44      Function Call: texture(is31;vf3; (global mediump 4-component vector of int)

+0:44      texture (global mediump 4-component vector of int)

 0:44        sampler: direct index for structure (global lowp isampler3D)

 0:44          's' (uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t})

 0:44          Constant:

 0:44            2 (const int)

-0:44        Construct vec3 (temp 3-component vector of float)

-0:44          Convert int to float (temp float)

+0:44        Construct vec3 (temp mediump 3-component vector of float)

+0:44          Convert int to float (temp mediump float)

 0:44            ni: direct index for structure (layout(column_major shared ) uniform mediump int)

 0:44              'inst' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

 0:44              Constant:

 0:44                1 (const int)

-0:44          Convert uint to float (temp float)

+0:44          Convert uint to float (temp mediump float)

 0:44            direct index (temp mediump uint)

 0:44              bv: direct index for structure (layout(column_major shared ) uniform mediump 4-component vector of uint)

 0:44                'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint bv, layout(column_major shared ) uniform mediump 2X2 matrix of float bm2, layout(column_major shared ) uniform lowp isampler2D sampler, layout(column_major shared ) uniform structure{global mediump int a} t, layout(column_major shared ) uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t} fbs})

@@ -42,7 +42,7 @@
 0:44                  0 (const uint)

 0:44              Constant:

 0:44                1 (const int)

-0:44          Convert uint to float (temp float)

+0:44          Convert uint to float (temp mediump float)

 0:44            direct index (temp mediump uint)

 0:44              nbv: direct index for structure (layout(column_major shared ) uniform mediump 4-component vector of uint)

 0:44                direct index (layout(column_major shared ) temp block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

@@ -91,18 +91,18 @@
 0:42  Function Definition: main( (global void)

 0:42    Function Parameters: 

 0:44    Sequence

-0:44      Function Call: texture(is31;vf3; (global mediump 4-component vector of int)

+0:44      texture (global mediump 4-component vector of int)

 0:44        sampler: direct index for structure (global lowp isampler3D)

 0:44          's' (uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t})

 0:44          Constant:

 0:44            2 (const int)

-0:44        Construct vec3 (temp 3-component vector of float)

-0:44          Convert int to float (temp float)

+0:44        Construct vec3 (temp mediump 3-component vector of float)

+0:44          Convert int to float (temp mediump float)

 0:44            ni: direct index for structure (layout(column_major shared ) uniform mediump int)

 0:44              'inst' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

 0:44              Constant:

 0:44                1 (const int)

-0:44          Convert uint to float (temp float)

+0:44          Convert uint to float (temp mediump float)

 0:44            direct index (temp mediump uint)

 0:44              bv: direct index for structure (layout(column_major shared ) uniform mediump 4-component vector of uint)

 0:44                'anon@0' (layout(column_major shared ) uniform block{layout(column_major shared ) uniform mediump 4-component vector of uint bv, layout(column_major shared ) uniform mediump 2X2 matrix of float bm2, layout(column_major shared ) uniform lowp isampler2D sampler, layout(column_major shared ) uniform structure{global mediump int a} t, layout(column_major shared ) uniform structure{global mediump 4-component vector of float u, global mediump 4-component vector of uint v, global lowp isampler3D sampler, global mediump 3-component vector of float w, global structure{global mediump int a} t} fbs})

@@ -110,7 +110,7 @@
 0:44                  0 (const uint)

 0:44              Constant:

 0:44                1 (const int)

-0:44          Convert uint to float (temp float)

+0:44          Convert uint to float (temp mediump float)

 0:44            direct index (temp mediump uint)

 0:44              nbv: direct index for structure (layout(column_major shared ) uniform mediump 4-component vector of uint)

 0:44                direct index (layout(column_major shared ) temp block{layout(column_major shared ) uniform mediump 4-component vector of uint nbv, layout(column_major shared ) uniform mediump int ni})

diff --git a/Test/baseResults/310.comp.out b/Test/baseResults/310.comp.out
index cec584a..645b2cc 100644
--- a/Test/baseResults/310.comp.out
+++ b/Test/baseResults/310.comp.out
@@ -134,23 +134,23 @@
 0:86          'i' (temp highp int)

 0:86          Constant:

 0:86            4 (const int)

-0:87      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (global highp int)

+0:87      imageAtomicCompSwap (global highp int)

 0:87        'iimg2D' (layout(r32i ) uniform highp iimage2D)

-0:87        Construct ivec2 (temp 2-component vector of int)

+0:87        Construct ivec2 (temp highp 2-component vector of int)

 0:87          'i' (temp highp int)

 0:87          'i' (temp highp int)

 0:87        'i' (temp highp int)

 0:87        'i' (temp highp int)

-0:88      Function Call: imageAtomicAdd(uI21;vi2;u1; (global highp uint)

+0:88      imageAtomicAdd (global highp uint)

 0:88        'uimg2D' (layout(r32ui ) uniform highp uimage2D)

-0:88        Construct ivec2 (temp 2-component vector of int)

+0:88        Construct ivec2 (temp highp 2-component vector of int)

 0:88          'i' (temp highp int)

 0:88          'i' (temp highp int)

-0:88        Convert int to uint (temp uint)

+0:88        Convert int to uint (temp highp uint)

 0:88          'i' (temp highp int)

-0:89      Function Call: imageAtomicMin(iI21;vi2;i1; (global highp int)

+0:89      imageAtomicMin (global highp int)

 0:89        'iimg2Drgba' (layout(rgba32i ) readonly uniform highp iimage2D)

-0:89        Construct ivec2 (temp 2-component vector of int)

+0:89        Construct ivec2 (temp highp 2-component vector of int)

 0:89          'i' (temp highp int)

 0:89          'i' (temp highp int)

 0:89        'i' (temp highp int)

@@ -159,12 +159,12 @@
 0:91      Sequence

 0:91        move second child to first child (temp highp 4-component vector of int)

 0:91          'pos' (temp highp 4-component vector of int)

-0:91          Function Call: imageLoad(iI21;vi2; (global highp 4-component vector of int)

+0:91          imageLoad (global highp 4-component vector of int)

 0:91            'iimg2D' (layout(r32i ) uniform highp iimage2D)

-0:91            Construct ivec2 (temp 2-component vector of int)

+0:91            Construct ivec2 (temp highp 2-component vector of int)

 0:91              'i' (temp highp int)

 0:91              'i' (temp highp int)

-0:92      Function Call: imageStore(iIA21;vi3;vi4; (global highp void)

+0:92      imageStore (global highp void)

 0:92        'ii2da' (writeonly uniform highp iimage2DArray)

 0:92        Construct ivec3 (temp 3-component vector of int)

 0:92          'i' (temp highp int)

@@ -175,14 +175,14 @@
 0:92          0 (const int)

 0:92          0 (const int)

 0:92          0 (const int)

-0:93      Function Call: imageLoad(I21;vi2; (global highp 4-component vector of float)

+0:93      imageLoad (global highp 4-component vector of float)

 0:93        'img2Drgba' (layout(rgba32f ) readonly uniform lowp image2D)

-0:93        Construct ivec2 (temp 2-component vector of int)

+0:93        Construct ivec2 (temp highp 2-component vector of int)

 0:93          'i' (temp highp int)

 0:93          'i' (temp highp int)

-0:94      Function Call: imageLoad(iIA21;vi3; (global highp 4-component vector of int)

+0:94      imageLoad (global highp 4-component vector of int)

 0:94        'ii2da' (writeonly uniform highp iimage2DArray)

-0:94        Construct ivec3 (temp 3-component vector of int)

+0:94        Construct ivec3 (temp highp 3-component vector of int)

 0:94          'i' (temp highp int)

 0:94          'i' (temp highp int)

 0:94          'i' (temp highp int)

@@ -560,23 +560,23 @@
 0:86          'i' (temp highp int)

 0:86          Constant:

 0:86            4 (const int)

-0:87      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (global highp int)

+0:87      imageAtomicCompSwap (global highp int)

 0:87        'iimg2D' (layout(r32i ) uniform highp iimage2D)

-0:87        Construct ivec2 (temp 2-component vector of int)

+0:87        Construct ivec2 (temp highp 2-component vector of int)

 0:87          'i' (temp highp int)

 0:87          'i' (temp highp int)

 0:87        'i' (temp highp int)

 0:87        'i' (temp highp int)

-0:88      Function Call: imageAtomicAdd(uI21;vi2;u1; (global highp uint)

+0:88      imageAtomicAdd (global highp uint)

 0:88        'uimg2D' (layout(r32ui ) uniform highp uimage2D)

-0:88        Construct ivec2 (temp 2-component vector of int)

+0:88        Construct ivec2 (temp highp 2-component vector of int)

 0:88          'i' (temp highp int)

 0:88          'i' (temp highp int)

-0:88        Convert int to uint (temp uint)

+0:88        Convert int to uint (temp highp uint)

 0:88          'i' (temp highp int)

-0:89      Function Call: imageAtomicMin(iI21;vi2;i1; (global highp int)

+0:89      imageAtomicMin (global highp int)

 0:89        'iimg2Drgba' (layout(rgba32i ) readonly uniform highp iimage2D)

-0:89        Construct ivec2 (temp 2-component vector of int)

+0:89        Construct ivec2 (temp highp 2-component vector of int)

 0:89          'i' (temp highp int)

 0:89          'i' (temp highp int)

 0:89        'i' (temp highp int)

@@ -585,12 +585,12 @@
 0:91      Sequence

 0:91        move second child to first child (temp highp 4-component vector of int)

 0:91          'pos' (temp highp 4-component vector of int)

-0:91          Function Call: imageLoad(iI21;vi2; (global highp 4-component vector of int)

+0:91          imageLoad (global highp 4-component vector of int)

 0:91            'iimg2D' (layout(r32i ) uniform highp iimage2D)

-0:91            Construct ivec2 (temp 2-component vector of int)

+0:91            Construct ivec2 (temp highp 2-component vector of int)

 0:91              'i' (temp highp int)

 0:91              'i' (temp highp int)

-0:92      Function Call: imageStore(iIA21;vi3;vi4; (global highp void)

+0:92      imageStore (global highp void)

 0:92        'ii2da' (writeonly uniform highp iimage2DArray)

 0:92        Construct ivec3 (temp 3-component vector of int)

 0:92          'i' (temp highp int)

@@ -601,14 +601,14 @@
 0:92          0 (const int)

 0:92          0 (const int)

 0:92          0 (const int)

-0:93      Function Call: imageLoad(I21;vi2; (global highp 4-component vector of float)

+0:93      imageLoad (global highp 4-component vector of float)

 0:93        'img2Drgba' (layout(rgba32f ) readonly uniform lowp image2D)

-0:93        Construct ivec2 (temp 2-component vector of int)

+0:93        Construct ivec2 (temp highp 2-component vector of int)

 0:93          'i' (temp highp int)

 0:93          'i' (temp highp int)

-0:94      Function Call: imageLoad(iIA21;vi3; (global highp 4-component vector of int)

+0:94      imageLoad (global highp 4-component vector of int)

 0:94        'ii2da' (writeonly uniform highp iimage2DArray)

-0:94        Construct ivec3 (temp 3-component vector of int)

+0:94        Construct ivec3 (temp highp 3-component vector of int)

 0:94          'i' (temp highp int)

 0:94          'i' (temp highp int)

 0:94          'i' (temp highp int)

diff --git a/Test/baseResults/310.frag.out b/Test/baseResults/310.frag.out
index 3b8421e..36c94db 100644
--- a/Test/baseResults/310.frag.out
+++ b/Test/baseResults/310.frag.out
@@ -120,7 +120,7 @@
 0:23      Sequence

 0:23        move second child to first child (temp highp 4-component vector of float)

 0:23          'v' (temp mediump 4-component vector of float)

-0:23          Function Call: texture(s21;vf2; (global highp 4-component vector of float)

+0:23          texture (global highp 4-component vector of float)

 0:23            indirect index (temp highp sampler2D)

 0:23              'arrayedSampler' (uniform 5-element array of highp sampler2D)

 0:23              'i' (uniform mediump int)

@@ -128,7 +128,7 @@
 0:28      Sequence

 0:28        move second child to first child (temp highp 4-component vector of float)

 0:28          'v4' (temp mediump 4-component vector of float)

-0:28          Function Call: textureGather(s21;vf2; (global highp 4-component vector of float)

+0:28          textureGather (global highp 4-component vector of float)

 0:28            direct index (temp highp sampler2D)

 0:28              'arrayedSampler' (uniform 5-element array of highp sampler2D)

 0:28              Constant:

@@ -137,7 +137,7 @@
 0:29      Sequence

 0:29        move second child to first child (temp mediump 4-component vector of int)

 0:29          'iv4' (temp mediump 4-component vector of int)

-0:29          Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global mediump 4-component vector of int)

+0:29          textureGatherOffset (global mediump 4-component vector of int)

 0:29            'isamp2DA' (uniform highp isampler2DArray)

 0:29            Constant:

 0:29              0.100000

@@ -150,7 +150,7 @@
 0:29              3 (const int)

 0:30      move second child to first child (temp mediump 4-component vector of int)

 0:30        'iv4' (temp mediump 4-component vector of int)

-0:30        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global mediump 4-component vector of int)

+0:30        textureGatherOffset (global mediump 4-component vector of int)

 0:30          'isamp2DA' (uniform highp isampler2DArray)

 0:30          Constant:

 0:30            0.100000

@@ -162,7 +162,7 @@
 0:30          'i' (uniform mediump int)

 0:31      move second child to first child (temp mediump 4-component vector of int)

 0:31        'iv4' (temp mediump 4-component vector of int)

-0:31        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global mediump 4-component vector of int)

+0:31        textureGatherOffset (global mediump 4-component vector of int)

 0:31          'isamp2DA' (uniform highp isampler2DArray)

 0:31          Constant:

 0:31            0.100000

@@ -175,7 +175,7 @@
 0:31            4 (const int)

 0:32      move second child to first child (temp mediump 4-component vector of int)

 0:32        'iv4' (temp mediump 4-component vector of int)

-0:32        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global mediump 4-component vector of int)

+0:32        textureGatherOffset (global mediump 4-component vector of int)

 0:32          'isamp2DA' (uniform highp isampler2DArray)

 0:32          Constant:

 0:32            0.100000

@@ -188,7 +188,7 @@
 0:32            3 (const int)

 0:33      move second child to first child (temp mediump 4-component vector of int)

 0:33        'iv4' (temp mediump 4-component vector of int)

-0:33        Function Call: textureGatherOffset(isA21;vf3;vi2; (global mediump 4-component vector of int)

+0:33        textureGatherOffset (global mediump 4-component vector of int)

 0:33          'isamp2DA' (uniform highp isampler2DArray)

 0:33          Constant:

 0:33            0.100000

@@ -199,18 +199,18 @@
 0:33            0 (const int)

 0:34      move second child to first child (temp mediump 4-component vector of int)

 0:34        'iv4' (temp mediump 4-component vector of int)

-0:34        Function Call: textureGatherOffset(isA21;vf3;vi2; (global mediump 4-component vector of int)

+0:34        textureGatherOffset (global mediump 4-component vector of int)

 0:34          'isamp2DA' (uniform highp isampler2DArray)

 0:34          Constant:

 0:34            0.100000

 0:34            0.100000

 0:34            0.100000

-0:34          Construct ivec2 (temp 2-component vector of int)

+0:34          Construct ivec2 (temp mediump 2-component vector of int)

 0:34            'i' (uniform mediump int)

 0:38  Function Definition: foo23( (global void)

 0:38    Function Parameters: 

 0:?     Sequence

-0:42      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (global mediump 4-component vector of uint)

+0:42      textureProjGradOffset (global mediump 4-component vector of uint)

 0:42        'usamp2d' (uniform highp usampler2D)

 0:42        'outp' (out mediump 4-component vector of float)

 0:42        Constant:

@@ -219,9 +219,9 @@
 0:42        Constant:

 0:42          0.000000

 0:42          0.000000

-0:42        Convert float to int (temp 2-component vector of int)

+0:42        Convert float to int (temp mediump 2-component vector of int)

 0:42          'c2D' (smooth in mediump 2-component vector of float)

-0:43      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (global mediump 4-component vector of uint)

+0:43      textureProjGradOffset (global mediump 4-component vector of uint)

 0:43        'usamp2d' (uniform highp usampler2D)

 0:43        'outp' (out mediump 4-component vector of float)

 0:43        Constant:

@@ -233,7 +233,7 @@
 0:43        Constant:

 0:43          3 (const int)

 0:43          4 (const int)

-0:44      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (global mediump 4-component vector of uint)

+0:44      textureProjGradOffset (global mediump 4-component vector of uint)

 0:44        'usamp2d' (uniform highp usampler2D)

 0:44        'outp' (out mediump 4-component vector of float)

 0:44        Constant:

@@ -245,7 +245,7 @@
 0:44        Constant:

 0:44          15 (const int)

 0:44          16 (const int)

-0:45      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (global mediump 4-component vector of uint)

+0:45      textureProjGradOffset (global mediump 4-component vector of uint)

 0:45        'usamp2d' (uniform highp usampler2D)

 0:45        'outp' (out mediump 4-component vector of float)

 0:45        Constant:

@@ -302,40 +302,40 @@
 0:100      Sequence

 0:100        move second child to first child (temp highp 2-component vector of int)

 0:100          'v2' (temp highp 2-component vector of int)

-0:100          Function Call: textureSize(s21;i1; (global highp 2-component vector of int)

+0:100          textureSize (global highp 2-component vector of int)

 0:100            's1' (layout(binding=3 ) uniform highp sampler2D)

 0:100            Constant:

 0:100              2 (const int)

 0:101      Sequence

 0:101        move second child to first child (temp highp 3-component vector of int)

 0:101          'v3' (temp highp 3-component vector of int)

-0:101          Function Call: textureSize(isA21;i1; (global highp 3-component vector of int)

+0:101          textureSize (global highp 3-component vector of int)

 0:101            'isamp2DA' (uniform highp isampler2DArray)

 0:101            Constant:

 0:101              3 (const int)

 0:102      move second child to first child (temp highp 2-component vector of int)

 0:102        'v2' (temp highp 2-component vector of int)

-0:102        Function Call: textureSize(s2M1; (global highp 2-component vector of int)

+0:102        textureSize (global highp 2-component vector of int)

 0:102          's2dms' (uniform highp sampler2DMS)

 0:103      move second child to first child (temp highp 2-component vector of int)

 0:103        'v2' (temp highp 2-component vector of int)

-0:103        Function Call: imageSize(I21; (global highp 2-component vector of int)

+0:103        imageQuerySize (global highp 2-component vector of int)

 0:103          'i2D' (layout(binding=2 ) writeonly uniform highp image2D)

 0:104      move second child to first child (temp highp 3-component vector of int)

 0:104        'v3' (temp highp 3-component vector of int)

-0:104        Function Call: imageSize(I31; (global highp 3-component vector of int)

+0:104        imageQuerySize (global highp 3-component vector of int)

 0:104          'i3D' (layout(binding=4 ) readonly uniform mediump image3D)

 0:105      move second child to first child (temp highp 2-component vector of int)

 0:105        'v2' (temp highp 2-component vector of int)

-0:105        Function Call: imageSize(IC1; (global highp 2-component vector of int)

+0:105        imageQuerySize (global highp 2-component vector of int)

 0:105          'iCube' (layout(binding=5 ) uniform lowp imageCube)

 0:106      move second child to first child (temp highp 3-component vector of int)

 0:106        'v3' (temp highp 3-component vector of int)

-0:106        Function Call: imageSize(IA21; (global highp 3-component vector of int)

+0:106        imageQuerySize (global highp 3-component vector of int)

 0:106          'i2DA' (layout(binding=6 ) uniform mediump image2DArray)

 0:107      move second child to first child (temp highp 2-component vector of int)

 0:107        'v2' (temp highp 2-component vector of int)

-0:107        Function Call: imageSize(I21; (global highp 2-component vector of int)

+0:107        imageQuerySize (global highp 2-component vector of int)

 0:107          'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform highp image2D)

 0:165  Function Definition: fooIO( (global void)

 0:165    Function Parameters: 

@@ -402,7 +402,7 @@
 0:210          'inf' (smooth in mediump 2-component vector of float)

 0:210          'ing' (smooth in mediump 2-component vector of float)

 0:210          'h' (temp mediump 2-component vector of float)

-0:211      Function Call: textureGatherOffset(s21;vf2;vi2; (global highp 4-component vector of float)

+0:211      textureGatherOffset (global highp 4-component vector of float)

 0:211        direct index (temp highp sampler2D)

 0:211          'sArray' (uniform 4-element array of highp sampler2D)

 0:211          Constant:

@@ -410,9 +410,9 @@
 0:211        Constant:

 0:211          0.100000

 0:211          0.100000

-0:211        Convert float to int (temp 2-component vector of int)

+0:211        Convert float to int (temp highp 2-component vector of int)

 0:211          'inf' (smooth in mediump 2-component vector of float)

-0:212      Function Call: textureGatherOffsets(s21;vf2;vi2[4]; (global highp 4-component vector of float)

+0:212      textureGatherOffsets (global highp 4-component vector of float)

 0:212        direct index (temp highp sampler2D)

 0:212          'sArray' (uniform 4-element array of highp sampler2D)

 0:212          Constant:

@@ -438,7 +438,7 @@
 0:220          'inf' (smooth in mediump 2-component vector of float)

 0:220          'ing' (smooth in mediump 2-component vector of float)

 0:220          'h' (temp mediump 2-component vector of float)

-0:221      Function Call: textureGatherOffset(s21;vf2;vi2; (global highp 4-component vector of float)

+0:221      textureGatherOffset (global highp 4-component vector of float)

 0:221        direct index (temp highp sampler2D)

 0:221          'sArray' (uniform 4-element array of highp sampler2D)

 0:221          Constant:

@@ -446,9 +446,9 @@
 0:221        Constant:

 0:221          0.100000

 0:221          0.100000

-0:221        Convert float to int (temp 2-component vector of int)

+0:221        Convert float to int (temp highp 2-component vector of int)

 0:221          'inf' (smooth in mediump 2-component vector of float)

-0:222      Function Call: textureGatherOffsets(s21;vf2;vi2[4]; (global highp 4-component vector of float)

+0:222      textureGatherOffsets (global highp 4-component vector of float)

 0:222        direct index (temp highp sampler2D)

 0:222          'sArray' (uniform 4-element array of highp sampler2D)

 0:222          Constant:

@@ -465,7 +465,7 @@
 0:222          0 (const int)

 0:222          0 (const int)

 0:222          0 (const int)

-0:223      Function Call: textureGatherOffsets(s21;vf2;vi2[4]; (global highp 4-component vector of float)

+0:223      textureGatherOffsets (global highp 4-component vector of float)

 0:223        direct index (temp highp sampler2D)

 0:223          'sArray' (uniform 4-element array of highp sampler2D)

 0:223          Constant:

@@ -480,7 +480,7 @@
 0:250      Sequence

 0:250        move second child to first child (temp highp 4-component vector of float)

 0:250          'b4' (temp highp 4-component vector of float)

-0:250          Function Call: texture(sAC1;vf4;f1; (global highp 4-component vector of float)

+0:250          texture (global highp 4-component vector of float)

 0:250            'CA4' (uniform highp samplerCubeArray)

 0:250            Constant:

 0:250              0.500000

@@ -492,7 +492,7 @@
 0:251      Sequence

 0:251        move second child to first child (temp highp 4-component vector of int)

 0:251          'b6' (temp highp 4-component vector of int)

-0:251          Function Call: texture(isAC1;vf4;f1; (global mediump 4-component vector of int)

+0:251          texture (global mediump 4-component vector of int)

 0:251            'CA6' (uniform highp isamplerCubeArray)

 0:251            Constant:

 0:251              0.500000

@@ -504,7 +504,7 @@
 0:252      Sequence

 0:252        move second child to first child (temp highp 4-component vector of uint)

 0:252          'b7' (temp highp 4-component vector of uint)

-0:252          Function Call: texture(usAC1;vf4;f1; (global mediump 4-component vector of uint)

+0:252          texture (global mediump 4-component vector of uint)

 0:252            'CA7' (uniform highp usamplerCubeArray)

 0:252            Constant:

 0:252              0.500000

@@ -577,73 +577,73 @@
 0:283  Function Definition: badImageAtom( (global void)

 0:283    Function Parameters: 

 0:?     Sequence

-0:289      Function Call: imageAtomicAdd(iI21;vi2;i1; (global mediump int)

+0:289      imageAtomicAdd (global mediump int)

 0:289        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:289        'P' (uniform mediump 2-component vector of int)

 0:289        'dati' (temp mediump int)

-0:290      Function Call: imageAtomicAdd(uI21;vi2;u1; (global mediump uint)

+0:290      imageAtomicAdd (global mediump uint)

 0:290        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:290        'P' (uniform mediump 2-component vector of int)

 0:290        'datu' (temp mediump uint)

-0:291      Function Call: imageAtomicMin(iI21;vi2;i1; (global mediump int)

+0:291      imageAtomicMin (global mediump int)

 0:291        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:291        'P' (uniform mediump 2-component vector of int)

 0:291        'dati' (temp mediump int)

-0:292      Function Call: imageAtomicMin(uI21;vi2;u1; (global mediump uint)

+0:292      imageAtomicMin (global mediump uint)

 0:292        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:292        'P' (uniform mediump 2-component vector of int)

 0:292        'datu' (temp mediump uint)

-0:293      Function Call: imageAtomicMax(iI21;vi2;i1; (global mediump int)

+0:293      imageAtomicMax (global mediump int)

 0:293        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:293        'P' (uniform mediump 2-component vector of int)

 0:293        'dati' (temp mediump int)

-0:294      Function Call: imageAtomicMax(uI21;vi2;u1; (global mediump uint)

+0:294      imageAtomicMax (global mediump uint)

 0:294        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:294        'P' (uniform mediump 2-component vector of int)

 0:294        'datu' (temp mediump uint)

-0:295      Function Call: imageAtomicAnd(iI21;vi2;i1; (global mediump int)

+0:295      imageAtomicAnd (global mediump int)

 0:295        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:295        'P' (uniform mediump 2-component vector of int)

 0:295        'dati' (temp mediump int)

-0:296      Function Call: imageAtomicAnd(uI21;vi2;u1; (global mediump uint)

+0:296      imageAtomicAnd (global mediump uint)

 0:296        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:296        'P' (uniform mediump 2-component vector of int)

 0:296        'datu' (temp mediump uint)

-0:297      Function Call: imageAtomicOr(iI21;vi2;i1; (global mediump int)

+0:297      imageAtomicOr (global mediump int)

 0:297        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:297        'P' (uniform mediump 2-component vector of int)

 0:297        'dati' (temp mediump int)

-0:298      Function Call: imageAtomicOr(uI21;vi2;u1; (global mediump uint)

+0:298      imageAtomicOr (global mediump uint)

 0:298        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:298        'P' (uniform mediump 2-component vector of int)

 0:298        'datu' (temp mediump uint)

-0:299      Function Call: imageAtomicXor(iI21;vi2;i1; (global mediump int)

+0:299      imageAtomicXor (global mediump int)

 0:299        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:299        'P' (uniform mediump 2-component vector of int)

 0:299        'dati' (temp mediump int)

-0:300      Function Call: imageAtomicXor(uI21;vi2;u1; (global mediump uint)

+0:300      imageAtomicXor (global mediump uint)

 0:300        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:300        'P' (uniform mediump 2-component vector of int)

 0:300        'datu' (temp mediump uint)

-0:301      Function Call: imageAtomicExchange(iI21;vi2;i1; (global mediump int)

+0:301      imageAtomicExchange (global mediump int)

 0:301        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:301        'P' (uniform mediump 2-component vector of int)

 0:301        'dati' (temp mediump int)

-0:302      Function Call: imageAtomicExchange(uI21;vi2;u1; (global mediump uint)

+0:302      imageAtomicExchange (global mediump uint)

 0:302        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:302        'P' (uniform mediump 2-component vector of int)

 0:302        'datu' (temp mediump uint)

-0:303      Function Call: imageAtomicExchange(I21;vi2;f1; (global highp float)

+0:303      imageAtomicExchange (global highp float)

 0:303        'im2Df' (layout(r32f ) uniform highp image2D)

 0:303        'P' (uniform mediump 2-component vector of int)

 0:303        'datf' (temp mediump float)

-0:304      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (global mediump int)

+0:304      imageAtomicCompSwap (global mediump int)

 0:304        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:304        'P' (uniform mediump 2-component vector of int)

 0:304        Constant:

 0:304          3 (const int)

 0:304        'dati' (temp mediump int)

-0:305      Function Call: imageAtomicCompSwap(uI21;vi2;u1;u1; (global mediump uint)

+0:305      imageAtomicCompSwap (global mediump uint)

 0:305        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:305        'P' (uniform mediump 2-component vector of int)

 0:305        Constant:

@@ -652,87 +652,87 @@
 0:316  Function Definition: goodImageAtom( (global void)

 0:316    Function Parameters: 

 0:?     Sequence

-0:322      Function Call: imageAtomicAdd(iI21;vi2;i1; (global mediump int)

+0:322      imageAtomicAdd (global mediump int)

 0:322        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:322        'P' (uniform mediump 2-component vector of int)

 0:322        'dati' (temp mediump int)

-0:323      Function Call: imageAtomicAdd(uI21;vi2;u1; (global mediump uint)

+0:323      imageAtomicAdd (global mediump uint)

 0:323        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:323        'P' (uniform mediump 2-component vector of int)

 0:323        'datu' (temp mediump uint)

-0:324      Function Call: imageAtomicMin(iI21;vi2;i1; (global mediump int)

+0:324      imageAtomicMin (global mediump int)

 0:324        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:324        'P' (uniform mediump 2-component vector of int)

 0:324        'dati' (temp mediump int)

-0:325      Function Call: imageAtomicMin(uI21;vi2;u1; (global mediump uint)

+0:325      imageAtomicMin (global mediump uint)

 0:325        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:325        'P' (uniform mediump 2-component vector of int)

 0:325        'datu' (temp mediump uint)

-0:326      Function Call: imageAtomicMax(iI21;vi2;i1; (global mediump int)

+0:326      imageAtomicMax (global mediump int)

 0:326        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:326        'P' (uniform mediump 2-component vector of int)

 0:326        'dati' (temp mediump int)

-0:327      Function Call: imageAtomicMax(uI21;vi2;u1; (global mediump uint)

+0:327      imageAtomicMax (global mediump uint)

 0:327        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:327        'P' (uniform mediump 2-component vector of int)

 0:327        'datu' (temp mediump uint)

-0:328      Function Call: imageAtomicAnd(iI21;vi2;i1; (global mediump int)

+0:328      imageAtomicAnd (global mediump int)

 0:328        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:328        'P' (uniform mediump 2-component vector of int)

 0:328        'dati' (temp mediump int)

-0:329      Function Call: imageAtomicAnd(uI21;vi2;u1; (global mediump uint)

+0:329      imageAtomicAnd (global mediump uint)

 0:329        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:329        'P' (uniform mediump 2-component vector of int)

 0:329        'datu' (temp mediump uint)

-0:330      Function Call: imageAtomicOr(iI21;vi2;i1; (global mediump int)

+0:330      imageAtomicOr (global mediump int)

 0:330        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:330        'P' (uniform mediump 2-component vector of int)

 0:330        'dati' (temp mediump int)

-0:331      Function Call: imageAtomicOr(uI21;vi2;u1; (global mediump uint)

+0:331      imageAtomicOr (global mediump uint)

 0:331        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:331        'P' (uniform mediump 2-component vector of int)

 0:331        'datu' (temp mediump uint)

-0:332      Function Call: imageAtomicXor(iI21;vi2;i1; (global mediump int)

+0:332      imageAtomicXor (global mediump int)

 0:332        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:332        'P' (uniform mediump 2-component vector of int)

 0:332        'dati' (temp mediump int)

-0:333      Function Call: imageAtomicXor(uI21;vi2;u1; (global mediump uint)

+0:333      imageAtomicXor (global mediump uint)

 0:333        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:333        'P' (uniform mediump 2-component vector of int)

 0:333        'datu' (temp mediump uint)

-0:334      Function Call: imageAtomicExchange(iI21;vi2;i1; (global mediump int)

+0:334      imageAtomicExchange (global mediump int)

 0:334        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:334        'P' (uniform mediump 2-component vector of int)

 0:334        'dati' (temp mediump int)

-0:335      Function Call: imageAtomicExchange(uI21;vi2;u1; (global mediump uint)

+0:335      imageAtomicExchange (global mediump uint)

 0:335        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:335        'P' (uniform mediump 2-component vector of int)

 0:335        'datu' (temp mediump uint)

-0:336      Function Call: imageAtomicExchange(I21;vi2;f1; (global highp float)

+0:336      imageAtomicExchange (global highp float)

 0:336        'im2Df' (layout(r32f ) uniform highp image2D)

 0:336        'P' (uniform mediump 2-component vector of int)

 0:336        'datf' (temp mediump float)

-0:337      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (global mediump int)

+0:337      imageAtomicCompSwap (global mediump int)

 0:337        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:337        'P' (uniform mediump 2-component vector of int)

 0:337        Constant:

 0:337          3 (const int)

 0:337        'dati' (temp mediump int)

-0:338      Function Call: imageAtomicCompSwap(uI21;vi2;u1;u1; (global mediump uint)

+0:338      imageAtomicCompSwap (global mediump uint)

 0:338        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:338        'P' (uniform mediump 2-component vector of int)

 0:338        Constant:

 0:338          5 (const uint)

 0:338        'datu' (temp mediump uint)

-0:340      Function Call: imageAtomicMax(iI21;vi2;i1; (global mediump int)

+0:340      imageAtomicMax (global mediump int)

 0:340        'badIm2Di' (layout(rgba16i ) uniform highp iimage2D)

 0:340        'P' (uniform mediump 2-component vector of int)

 0:340        'dati' (temp mediump int)

-0:341      Function Call: imageAtomicMax(uI21;vi2;u1; (global mediump uint)

+0:341      imageAtomicMax (global mediump uint)

 0:341        'badIm2Du' (layout(rgba8ui ) uniform highp uimage2D)

 0:341        'P' (uniform mediump 2-component vector of int)

 0:341        'datu' (temp mediump uint)

-0:342      Function Call: imageAtomicExchange(I21;vi2;f1; (global highp float)

+0:342      imageAtomicExchange (global highp float)

 0:342        'badIm2Df' (layout(rgba32f ) uniform highp image2D)

 0:342        'P' (uniform mediump 2-component vector of int)

 0:342        'datf' (temp mediump float)

@@ -843,7 +843,7 @@
 0:23      Sequence

 0:23        move second child to first child (temp highp 4-component vector of float)

 0:23          'v' (temp mediump 4-component vector of float)

-0:23          Function Call: texture(s21;vf2; (global highp 4-component vector of float)

+0:23          texture (global highp 4-component vector of float)

 0:23            indirect index (temp highp sampler2D)

 0:23              'arrayedSampler' (uniform 5-element array of highp sampler2D)

 0:23              'i' (uniform mediump int)

@@ -851,7 +851,7 @@
 0:28      Sequence

 0:28        move second child to first child (temp highp 4-component vector of float)

 0:28          'v4' (temp mediump 4-component vector of float)

-0:28          Function Call: textureGather(s21;vf2; (global highp 4-component vector of float)

+0:28          textureGather (global highp 4-component vector of float)

 0:28            direct index (temp highp sampler2D)

 0:28              'arrayedSampler' (uniform 5-element array of highp sampler2D)

 0:28              Constant:

@@ -860,7 +860,7 @@
 0:29      Sequence

 0:29        move second child to first child (temp mediump 4-component vector of int)

 0:29          'iv4' (temp mediump 4-component vector of int)

-0:29          Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global mediump 4-component vector of int)

+0:29          textureGatherOffset (global mediump 4-component vector of int)

 0:29            'isamp2DA' (uniform highp isampler2DArray)

 0:29            Constant:

 0:29              0.100000

@@ -873,7 +873,7 @@
 0:29              3 (const int)

 0:30      move second child to first child (temp mediump 4-component vector of int)

 0:30        'iv4' (temp mediump 4-component vector of int)

-0:30        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global mediump 4-component vector of int)

+0:30        textureGatherOffset (global mediump 4-component vector of int)

 0:30          'isamp2DA' (uniform highp isampler2DArray)

 0:30          Constant:

 0:30            0.100000

@@ -885,7 +885,7 @@
 0:30          'i' (uniform mediump int)

 0:31      move second child to first child (temp mediump 4-component vector of int)

 0:31        'iv4' (temp mediump 4-component vector of int)

-0:31        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global mediump 4-component vector of int)

+0:31        textureGatherOffset (global mediump 4-component vector of int)

 0:31          'isamp2DA' (uniform highp isampler2DArray)

 0:31          Constant:

 0:31            0.100000

@@ -898,7 +898,7 @@
 0:31            4 (const int)

 0:32      move second child to first child (temp mediump 4-component vector of int)

 0:32        'iv4' (temp mediump 4-component vector of int)

-0:32        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global mediump 4-component vector of int)

+0:32        textureGatherOffset (global mediump 4-component vector of int)

 0:32          'isamp2DA' (uniform highp isampler2DArray)

 0:32          Constant:

 0:32            0.100000

@@ -911,7 +911,7 @@
 0:32            3 (const int)

 0:33      move second child to first child (temp mediump 4-component vector of int)

 0:33        'iv4' (temp mediump 4-component vector of int)

-0:33        Function Call: textureGatherOffset(isA21;vf3;vi2; (global mediump 4-component vector of int)

+0:33        textureGatherOffset (global mediump 4-component vector of int)

 0:33          'isamp2DA' (uniform highp isampler2DArray)

 0:33          Constant:

 0:33            0.100000

@@ -922,18 +922,18 @@
 0:33            0 (const int)

 0:34      move second child to first child (temp mediump 4-component vector of int)

 0:34        'iv4' (temp mediump 4-component vector of int)

-0:34        Function Call: textureGatherOffset(isA21;vf3;vi2; (global mediump 4-component vector of int)

+0:34        textureGatherOffset (global mediump 4-component vector of int)

 0:34          'isamp2DA' (uniform highp isampler2DArray)

 0:34          Constant:

 0:34            0.100000

 0:34            0.100000

 0:34            0.100000

-0:34          Construct ivec2 (temp 2-component vector of int)

+0:34          Construct ivec2 (temp mediump 2-component vector of int)

 0:34            'i' (uniform mediump int)

 0:38  Function Definition: foo23( (global void)

 0:38    Function Parameters: 

 0:?     Sequence

-0:42      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (global mediump 4-component vector of uint)

+0:42      textureProjGradOffset (global mediump 4-component vector of uint)

 0:42        'usamp2d' (uniform highp usampler2D)

 0:42        'outp' (out mediump 4-component vector of float)

 0:42        Constant:

@@ -942,9 +942,9 @@
 0:42        Constant:

 0:42          0.000000

 0:42          0.000000

-0:42        Convert float to int (temp 2-component vector of int)

+0:42        Convert float to int (temp mediump 2-component vector of int)

 0:42          'c2D' (smooth in mediump 2-component vector of float)

-0:43      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (global mediump 4-component vector of uint)

+0:43      textureProjGradOffset (global mediump 4-component vector of uint)

 0:43        'usamp2d' (uniform highp usampler2D)

 0:43        'outp' (out mediump 4-component vector of float)

 0:43        Constant:

@@ -956,7 +956,7 @@
 0:43        Constant:

 0:43          3 (const int)

 0:43          4 (const int)

-0:44      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (global mediump 4-component vector of uint)

+0:44      textureProjGradOffset (global mediump 4-component vector of uint)

 0:44        'usamp2d' (uniform highp usampler2D)

 0:44        'outp' (out mediump 4-component vector of float)

 0:44        Constant:

@@ -968,7 +968,7 @@
 0:44        Constant:

 0:44          15 (const int)

 0:44          16 (const int)

-0:45      Function Call: textureProjGradOffset(us21;vf4;vf2;vf2;vi2; (global mediump 4-component vector of uint)

+0:45      textureProjGradOffset (global mediump 4-component vector of uint)

 0:45        'usamp2d' (uniform highp usampler2D)

 0:45        'outp' (out mediump 4-component vector of float)

 0:45        Constant:

@@ -1025,40 +1025,40 @@
 0:100      Sequence

 0:100        move second child to first child (temp highp 2-component vector of int)

 0:100          'v2' (temp highp 2-component vector of int)

-0:100          Function Call: textureSize(s21;i1; (global highp 2-component vector of int)

+0:100          textureSize (global highp 2-component vector of int)

 0:100            's1' (layout(binding=3 ) uniform highp sampler2D)

 0:100            Constant:

 0:100              2 (const int)

 0:101      Sequence

 0:101        move second child to first child (temp highp 3-component vector of int)

 0:101          'v3' (temp highp 3-component vector of int)

-0:101          Function Call: textureSize(isA21;i1; (global highp 3-component vector of int)

+0:101          textureSize (global highp 3-component vector of int)

 0:101            'isamp2DA' (uniform highp isampler2DArray)

 0:101            Constant:

 0:101              3 (const int)

 0:102      move second child to first child (temp highp 2-component vector of int)

 0:102        'v2' (temp highp 2-component vector of int)

-0:102        Function Call: textureSize(s2M1; (global highp 2-component vector of int)

+0:102        textureSize (global highp 2-component vector of int)

 0:102          's2dms' (uniform highp sampler2DMS)

 0:103      move second child to first child (temp highp 2-component vector of int)

 0:103        'v2' (temp highp 2-component vector of int)

-0:103        Function Call: imageSize(I21; (global highp 2-component vector of int)

+0:103        imageQuerySize (global highp 2-component vector of int)

 0:103          'i2D' (layout(binding=2 ) writeonly uniform highp image2D)

 0:104      move second child to first child (temp highp 3-component vector of int)

 0:104        'v3' (temp highp 3-component vector of int)

-0:104        Function Call: imageSize(I31; (global highp 3-component vector of int)

+0:104        imageQuerySize (global highp 3-component vector of int)

 0:104          'i3D' (layout(binding=4 ) readonly uniform mediump image3D)

 0:105      move second child to first child (temp highp 2-component vector of int)

 0:105        'v2' (temp highp 2-component vector of int)

-0:105        Function Call: imageSize(IC1; (global highp 2-component vector of int)

+0:105        imageQuerySize (global highp 2-component vector of int)

 0:105          'iCube' (layout(binding=5 ) uniform lowp imageCube)

 0:106      move second child to first child (temp highp 3-component vector of int)

 0:106        'v3' (temp highp 3-component vector of int)

-0:106        Function Call: imageSize(IA21; (global highp 3-component vector of int)

+0:106        imageQuerySize (global highp 3-component vector of int)

 0:106          'i2DA' (layout(binding=6 ) uniform mediump image2DArray)

 0:107      move second child to first child (temp highp 2-component vector of int)

 0:107        'v2' (temp highp 2-component vector of int)

-0:107        Function Call: imageSize(I21; (global highp 2-component vector of int)

+0:107        imageQuerySize (global highp 2-component vector of int)

 0:107          'i2Dqualified' (layout(binding=6 ) coherent volatile restrict uniform highp image2D)

 0:165  Function Definition: fooIO( (global void)

 0:165    Function Parameters: 

@@ -1125,7 +1125,7 @@
 0:210          'inf' (smooth in mediump 2-component vector of float)

 0:210          'ing' (smooth in mediump 2-component vector of float)

 0:210          'h' (temp mediump 2-component vector of float)

-0:211      Function Call: textureGatherOffset(s21;vf2;vi2; (global highp 4-component vector of float)

+0:211      textureGatherOffset (global highp 4-component vector of float)

 0:211        direct index (temp highp sampler2D)

 0:211          'sArray' (uniform 4-element array of highp sampler2D)

 0:211          Constant:

@@ -1133,9 +1133,9 @@
 0:211        Constant:

 0:211          0.100000

 0:211          0.100000

-0:211        Convert float to int (temp 2-component vector of int)

+0:211        Convert float to int (temp highp 2-component vector of int)

 0:211          'inf' (smooth in mediump 2-component vector of float)

-0:212      Function Call: textureGatherOffsets(s21;vf2;vi2[4]; (global highp 4-component vector of float)

+0:212      textureGatherOffsets (global highp 4-component vector of float)

 0:212        direct index (temp highp sampler2D)

 0:212          'sArray' (uniform 4-element array of highp sampler2D)

 0:212          Constant:

@@ -1161,7 +1161,7 @@
 0:220          'inf' (smooth in mediump 2-component vector of float)

 0:220          'ing' (smooth in mediump 2-component vector of float)

 0:220          'h' (temp mediump 2-component vector of float)

-0:221      Function Call: textureGatherOffset(s21;vf2;vi2; (global highp 4-component vector of float)

+0:221      textureGatherOffset (global highp 4-component vector of float)

 0:221        direct index (temp highp sampler2D)

 0:221          'sArray' (uniform 4-element array of highp sampler2D)

 0:221          Constant:

@@ -1169,9 +1169,9 @@
 0:221        Constant:

 0:221          0.100000

 0:221          0.100000

-0:221        Convert float to int (temp 2-component vector of int)

+0:221        Convert float to int (temp highp 2-component vector of int)

 0:221          'inf' (smooth in mediump 2-component vector of float)

-0:222      Function Call: textureGatherOffsets(s21;vf2;vi2[4]; (global highp 4-component vector of float)

+0:222      textureGatherOffsets (global highp 4-component vector of float)

 0:222        direct index (temp highp sampler2D)

 0:222          'sArray' (uniform 4-element array of highp sampler2D)

 0:222          Constant:

@@ -1188,7 +1188,7 @@
 0:222          0 (const int)

 0:222          0 (const int)

 0:222          0 (const int)

-0:223      Function Call: textureGatherOffsets(s21;vf2;vi2[4]; (global highp 4-component vector of float)

+0:223      textureGatherOffsets (global highp 4-component vector of float)

 0:223        direct index (temp highp sampler2D)

 0:223          'sArray' (uniform 4-element array of highp sampler2D)

 0:223          Constant:

@@ -1203,7 +1203,7 @@
 0:250      Sequence

 0:250        move second child to first child (temp highp 4-component vector of float)

 0:250          'b4' (temp highp 4-component vector of float)

-0:250          Function Call: texture(sAC1;vf4;f1; (global highp 4-component vector of float)

+0:250          texture (global highp 4-component vector of float)

 0:250            'CA4' (uniform highp samplerCubeArray)

 0:250            Constant:

 0:250              0.500000

@@ -1215,7 +1215,7 @@
 0:251      Sequence

 0:251        move second child to first child (temp highp 4-component vector of int)

 0:251          'b6' (temp highp 4-component vector of int)

-0:251          Function Call: texture(isAC1;vf4;f1; (global mediump 4-component vector of int)

+0:251          texture (global mediump 4-component vector of int)

 0:251            'CA6' (uniform highp isamplerCubeArray)

 0:251            Constant:

 0:251              0.500000

@@ -1227,7 +1227,7 @@
 0:252      Sequence

 0:252        move second child to first child (temp highp 4-component vector of uint)

 0:252          'b7' (temp highp 4-component vector of uint)

-0:252          Function Call: texture(usAC1;vf4;f1; (global mediump 4-component vector of uint)

+0:252          texture (global mediump 4-component vector of uint)

 0:252            'CA7' (uniform highp usamplerCubeArray)

 0:252            Constant:

 0:252              0.500000

@@ -1300,73 +1300,73 @@
 0:283  Function Definition: badImageAtom( (global void)

 0:283    Function Parameters: 

 0:?     Sequence

-0:289      Function Call: imageAtomicAdd(iI21;vi2;i1; (global mediump int)

+0:289      imageAtomicAdd (global mediump int)

 0:289        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:289        'P' (uniform mediump 2-component vector of int)

 0:289        'dati' (temp mediump int)

-0:290      Function Call: imageAtomicAdd(uI21;vi2;u1; (global mediump uint)

+0:290      imageAtomicAdd (global mediump uint)

 0:290        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:290        'P' (uniform mediump 2-component vector of int)

 0:290        'datu' (temp mediump uint)

-0:291      Function Call: imageAtomicMin(iI21;vi2;i1; (global mediump int)

+0:291      imageAtomicMin (global mediump int)

 0:291        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:291        'P' (uniform mediump 2-component vector of int)

 0:291        'dati' (temp mediump int)

-0:292      Function Call: imageAtomicMin(uI21;vi2;u1; (global mediump uint)

+0:292      imageAtomicMin (global mediump uint)

 0:292        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:292        'P' (uniform mediump 2-component vector of int)

 0:292        'datu' (temp mediump uint)

-0:293      Function Call: imageAtomicMax(iI21;vi2;i1; (global mediump int)

+0:293      imageAtomicMax (global mediump int)

 0:293        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:293        'P' (uniform mediump 2-component vector of int)

 0:293        'dati' (temp mediump int)

-0:294      Function Call: imageAtomicMax(uI21;vi2;u1; (global mediump uint)

+0:294      imageAtomicMax (global mediump uint)

 0:294        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:294        'P' (uniform mediump 2-component vector of int)

 0:294        'datu' (temp mediump uint)

-0:295      Function Call: imageAtomicAnd(iI21;vi2;i1; (global mediump int)

+0:295      imageAtomicAnd (global mediump int)

 0:295        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:295        'P' (uniform mediump 2-component vector of int)

 0:295        'dati' (temp mediump int)

-0:296      Function Call: imageAtomicAnd(uI21;vi2;u1; (global mediump uint)

+0:296      imageAtomicAnd (global mediump uint)

 0:296        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:296        'P' (uniform mediump 2-component vector of int)

 0:296        'datu' (temp mediump uint)

-0:297      Function Call: imageAtomicOr(iI21;vi2;i1; (global mediump int)

+0:297      imageAtomicOr (global mediump int)

 0:297        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:297        'P' (uniform mediump 2-component vector of int)

 0:297        'dati' (temp mediump int)

-0:298      Function Call: imageAtomicOr(uI21;vi2;u1; (global mediump uint)

+0:298      imageAtomicOr (global mediump uint)

 0:298        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:298        'P' (uniform mediump 2-component vector of int)

 0:298        'datu' (temp mediump uint)

-0:299      Function Call: imageAtomicXor(iI21;vi2;i1; (global mediump int)

+0:299      imageAtomicXor (global mediump int)

 0:299        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:299        'P' (uniform mediump 2-component vector of int)

 0:299        'dati' (temp mediump int)

-0:300      Function Call: imageAtomicXor(uI21;vi2;u1; (global mediump uint)

+0:300      imageAtomicXor (global mediump uint)

 0:300        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:300        'P' (uniform mediump 2-component vector of int)

 0:300        'datu' (temp mediump uint)

-0:301      Function Call: imageAtomicExchange(iI21;vi2;i1; (global mediump int)

+0:301      imageAtomicExchange (global mediump int)

 0:301        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:301        'P' (uniform mediump 2-component vector of int)

 0:301        'dati' (temp mediump int)

-0:302      Function Call: imageAtomicExchange(uI21;vi2;u1; (global mediump uint)

+0:302      imageAtomicExchange (global mediump uint)

 0:302        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:302        'P' (uniform mediump 2-component vector of int)

 0:302        'datu' (temp mediump uint)

-0:303      Function Call: imageAtomicExchange(I21;vi2;f1; (global highp float)

+0:303      imageAtomicExchange (global highp float)

 0:303        'im2Df' (layout(r32f ) uniform highp image2D)

 0:303        'P' (uniform mediump 2-component vector of int)

 0:303        'datf' (temp mediump float)

-0:304      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (global mediump int)

+0:304      imageAtomicCompSwap (global mediump int)

 0:304        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:304        'P' (uniform mediump 2-component vector of int)

 0:304        Constant:

 0:304          3 (const int)

 0:304        'dati' (temp mediump int)

-0:305      Function Call: imageAtomicCompSwap(uI21;vi2;u1;u1; (global mediump uint)

+0:305      imageAtomicCompSwap (global mediump uint)

 0:305        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:305        'P' (uniform mediump 2-component vector of int)

 0:305        Constant:

@@ -1375,87 +1375,87 @@
 0:316  Function Definition: goodImageAtom( (global void)

 0:316    Function Parameters: 

 0:?     Sequence

-0:322      Function Call: imageAtomicAdd(iI21;vi2;i1; (global mediump int)

+0:322      imageAtomicAdd (global mediump int)

 0:322        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:322        'P' (uniform mediump 2-component vector of int)

 0:322        'dati' (temp mediump int)

-0:323      Function Call: imageAtomicAdd(uI21;vi2;u1; (global mediump uint)

+0:323      imageAtomicAdd (global mediump uint)

 0:323        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:323        'P' (uniform mediump 2-component vector of int)

 0:323        'datu' (temp mediump uint)

-0:324      Function Call: imageAtomicMin(iI21;vi2;i1; (global mediump int)

+0:324      imageAtomicMin (global mediump int)

 0:324        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:324        'P' (uniform mediump 2-component vector of int)

 0:324        'dati' (temp mediump int)

-0:325      Function Call: imageAtomicMin(uI21;vi2;u1; (global mediump uint)

+0:325      imageAtomicMin (global mediump uint)

 0:325        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:325        'P' (uniform mediump 2-component vector of int)

 0:325        'datu' (temp mediump uint)

-0:326      Function Call: imageAtomicMax(iI21;vi2;i1; (global mediump int)

+0:326      imageAtomicMax (global mediump int)

 0:326        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:326        'P' (uniform mediump 2-component vector of int)

 0:326        'dati' (temp mediump int)

-0:327      Function Call: imageAtomicMax(uI21;vi2;u1; (global mediump uint)

+0:327      imageAtomicMax (global mediump uint)

 0:327        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:327        'P' (uniform mediump 2-component vector of int)

 0:327        'datu' (temp mediump uint)

-0:328      Function Call: imageAtomicAnd(iI21;vi2;i1; (global mediump int)

+0:328      imageAtomicAnd (global mediump int)

 0:328        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:328        'P' (uniform mediump 2-component vector of int)

 0:328        'dati' (temp mediump int)

-0:329      Function Call: imageAtomicAnd(uI21;vi2;u1; (global mediump uint)

+0:329      imageAtomicAnd (global mediump uint)

 0:329        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:329        'P' (uniform mediump 2-component vector of int)

 0:329        'datu' (temp mediump uint)

-0:330      Function Call: imageAtomicOr(iI21;vi2;i1; (global mediump int)

+0:330      imageAtomicOr (global mediump int)

 0:330        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:330        'P' (uniform mediump 2-component vector of int)

 0:330        'dati' (temp mediump int)

-0:331      Function Call: imageAtomicOr(uI21;vi2;u1; (global mediump uint)

+0:331      imageAtomicOr (global mediump uint)

 0:331        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:331        'P' (uniform mediump 2-component vector of int)

 0:331        'datu' (temp mediump uint)

-0:332      Function Call: imageAtomicXor(iI21;vi2;i1; (global mediump int)

+0:332      imageAtomicXor (global mediump int)

 0:332        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:332        'P' (uniform mediump 2-component vector of int)

 0:332        'dati' (temp mediump int)

-0:333      Function Call: imageAtomicXor(uI21;vi2;u1; (global mediump uint)

+0:333      imageAtomicXor (global mediump uint)

 0:333        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:333        'P' (uniform mediump 2-component vector of int)

 0:333        'datu' (temp mediump uint)

-0:334      Function Call: imageAtomicExchange(iI21;vi2;i1; (global mediump int)

+0:334      imageAtomicExchange (global mediump int)

 0:334        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:334        'P' (uniform mediump 2-component vector of int)

 0:334        'dati' (temp mediump int)

-0:335      Function Call: imageAtomicExchange(uI21;vi2;u1; (global mediump uint)

+0:335      imageAtomicExchange (global mediump uint)

 0:335        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:335        'P' (uniform mediump 2-component vector of int)

 0:335        'datu' (temp mediump uint)

-0:336      Function Call: imageAtomicExchange(I21;vi2;f1; (global highp float)

+0:336      imageAtomicExchange (global highp float)

 0:336        'im2Df' (layout(r32f ) uniform highp image2D)

 0:336        'P' (uniform mediump 2-component vector of int)

 0:336        'datf' (temp mediump float)

-0:337      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (global mediump int)

+0:337      imageAtomicCompSwap (global mediump int)

 0:337        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:337        'P' (uniform mediump 2-component vector of int)

 0:337        Constant:

 0:337          3 (const int)

 0:337        'dati' (temp mediump int)

-0:338      Function Call: imageAtomicCompSwap(uI21;vi2;u1;u1; (global mediump uint)

+0:338      imageAtomicCompSwap (global mediump uint)

 0:338        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:338        'P' (uniform mediump 2-component vector of int)

 0:338        Constant:

 0:338          5 (const uint)

 0:338        'datu' (temp mediump uint)

-0:340      Function Call: imageAtomicMax(iI21;vi2;i1; (global mediump int)

+0:340      imageAtomicMax (global mediump int)

 0:340        'badIm2Di' (layout(rgba16i ) uniform highp iimage2D)

 0:340        'P' (uniform mediump 2-component vector of int)

 0:340        'dati' (temp mediump int)

-0:341      Function Call: imageAtomicMax(uI21;vi2;u1; (global mediump uint)

+0:341      imageAtomicMax (global mediump uint)

 0:341        'badIm2Du' (layout(rgba8ui ) uniform highp uimage2D)

 0:341        'P' (uniform mediump 2-component vector of int)

 0:341        'datu' (temp mediump uint)

-0:342      Function Call: imageAtomicExchange(I21;vi2;f1; (global highp float)

+0:342      imageAtomicExchange (global highp float)

 0:342        'badIm2Df' (layout(rgba32f ) uniform highp image2D)

 0:342        'P' (uniform mediump 2-component vector of int)

 0:342        'datf' (temp mediump float)

diff --git a/Test/baseResults/310.vert.out b/Test/baseResults/310.vert.out
index 36a86e4..ecd6fd1 100644
--- a/Test/baseResults/310.vert.out
+++ b/Test/baseResults/310.vert.out
@@ -224,16 +224,16 @@
 0:?     Sequence

 0:63      move second child to first child (temp highp 2-component vector of int)

 0:63        'v2' (temp highp 2-component vector of int)

-0:63        Function Call: textureSize(s2M1; (global highp 2-component vector of int)

+0:63        textureSize (global highp 2-component vector of int)

 0:63          's2dms' (uniform highp sampler2DMS)

 0:64      move second child to first child (temp highp 2-component vector of int)

 0:64        'v2' (temp highp 2-component vector of int)

-0:64        Function Call: textureSize(us2M1; (global highp 2-component vector of int)

+0:64        textureSize (global highp 2-component vector of int)

 0:64          'us2dms' (uniform highp usampler2DMS)

 0:65      Sequence

 0:65        move second child to first child (temp highp 4-component vector of float)

 0:65          'v4' (temp highp 4-component vector of float)

-0:65          Function Call: texelFetch(s2M1;vi2;i1; (global highp 4-component vector of float)

+0:65          textureFetch (global highp 4-component vector of float)

 0:65            's2dms' (uniform highp sampler2DMS)

 0:65            'v2' (temp highp 2-component vector of int)

 0:65            Constant:

@@ -241,7 +241,7 @@
 0:66      Sequence

 0:66        move second child to first child (temp highp 4-component vector of int)

 0:66          'iv4' (temp highp 4-component vector of int)

-0:66          Function Call: texelFetch(is2M1;vi2;i1; (global highp 4-component vector of int)

+0:66          textureFetch (global highp 4-component vector of int)

 0:66            'is2dms' (uniform highp isampler2DMS)

 0:66            'v2' (temp highp 2-component vector of int)

 0:66            Constant:

@@ -319,7 +319,7 @@
 0:164          'sIndex' (uniform highp int)

 0:164          Constant:

 0:164            2 (const int)

-0:165      Function Call: textureGatherOffset(s21;vf2;vi2; (global highp 4-component vector of float)

+0:165      textureGatherOffset (global highp 4-component vector of float)

 0:165        direct index (temp highp sampler2D)

 0:165          'sArray' (uniform 4-element array of highp sampler2D)

 0:165          Constant:

@@ -327,9 +327,9 @@
 0:165        Constant:

 0:165          0.100000

 0:165          0.100000

-0:165        Convert float to int (temp 2-component vector of int)

+0:165        Convert float to int (temp highp 2-component vector of int)

 0:165          'inf' (in highp 2-component vector of float)

-0:166      Function Call: textureGatherOffsets(s21;vf2;vi2[4]; (global highp 4-component vector of float)

+0:166      textureGatherOffsets (global highp 4-component vector of float)

 0:166        direct index (temp highp sampler2D)

 0:166          'sArray' (uniform 4-element array of highp sampler2D)

 0:166          Constant:

@@ -383,7 +383,7 @@
 0:179          'sIndex' (uniform highp int)

 0:179          Constant:

 0:179            2 (const int)

-0:180      Function Call: textureGatherOffset(s21;vf2;vi2; (global highp 4-component vector of float)

+0:180      textureGatherOffset (global highp 4-component vector of float)

 0:180        direct index (temp highp sampler2D)

 0:180          'sArray' (uniform 4-element array of highp sampler2D)

 0:180          Constant:

@@ -391,9 +391,9 @@
 0:180        Constant:

 0:180          0.100000

 0:180          0.100000

-0:180        Convert float to int (temp 2-component vector of int)

+0:180        Convert float to int (temp highp 2-component vector of int)

 0:180          'inf' (in highp 2-component vector of float)

-0:181      Function Call: textureGatherOffsets(s21;vf2;vi2[4]; (global highp 4-component vector of float)

+0:181      textureGatherOffsets (global highp 4-component vector of float)

 0:181        direct index (temp highp sampler2D)

 0:181          'sArray' (uniform 4-element array of highp sampler2D)

 0:181          Constant:

@@ -410,7 +410,7 @@
 0:181          0 (const int)

 0:181          0 (const int)

 0:181          0 (const int)

-0:182      Function Call: textureGatherOffsets(s21;vf2;vi2[4]; (global highp 4-component vector of float)

+0:182      textureGatherOffsets (global highp 4-component vector of float)

 0:182        direct index (temp highp sampler2D)

 0:182          'sArray' (uniform 4-element array of highp sampler2D)

 0:182          Constant:

@@ -425,49 +425,49 @@
 0:222      Sequence

 0:222        move second child to first child (temp highp int)

 0:222          's1' (temp highp int)

-0:222          Function Call: textureSize(sB1; (global highp int)

+0:222          textureSize (global highp int)

 0:222            'bufSamp1' (uniform highp samplerBuffer)

 0:223      Sequence

 0:223        move second child to first child (temp highp int)

 0:223          's2' (temp highp int)

-0:223          Function Call: textureSize(isB1; (global highp int)

+0:223          textureSize (global highp int)

 0:223            'bufSamp2' (uniform highp isamplerBuffer)

 0:224      Sequence

 0:224        move second child to first child (temp highp int)

 0:224          's3' (temp highp int)

-0:224          Function Call: textureSize(usB1; (global highp int)

+0:224          textureSize (global highp int)

 0:224            'bufSamp3' (uniform highp usamplerBuffer)

 0:226      Sequence

 0:226        move second child to first child (temp highp int)

 0:226          's4' (temp highp int)

-0:226          Function Call: imageSize(IB1; (global highp int)

+0:226          imageQuerySize (global highp int)

 0:226            'bufSamp4' (writeonly uniform highp imageBuffer)

 0:227      Sequence

 0:227        move second child to first child (temp highp int)

 0:227          's5' (temp highp int)

-0:227          Function Call: imageSize(iIB1; (global highp int)

+0:227          imageQuerySize (global highp int)

 0:227            'bufSamp5' (writeonly uniform highp iimageBuffer)

 0:228      Sequence

 0:228        move second child to first child (temp highp int)

 0:228          's6' (temp highp int)

-0:228          Function Call: imageSize(uIB1; (global highp int)

+0:228          imageQuerySize (global highp int)

 0:228            'bufSamp6' (writeonly uniform highp uimageBuffer)

 0:230      Sequence

 0:230        move second child to first child (temp highp 4-component vector of float)

 0:230          'f1' (temp highp 4-component vector of float)

-0:230          Function Call: texelFetch(sB1;i1; (global highp 4-component vector of float)

+0:230          textureFetch (global highp 4-component vector of float)

 0:230            'bufSamp1' (uniform highp samplerBuffer)

 0:230            's1' (temp highp int)

 0:231      Sequence

 0:231        move second child to first child (temp highp 4-component vector of int)

 0:231          'f2' (temp highp 4-component vector of int)

-0:231          Function Call: texelFetch(isB1;i1; (global highp 4-component vector of int)

+0:231          textureFetch (global highp 4-component vector of int)

 0:231            'bufSamp2' (uniform highp isamplerBuffer)

 0:231            's2' (temp highp int)

 0:232      Sequence

 0:232        move second child to first child (temp highp 4-component vector of uint)

 0:232          'f3' (temp highp 4-component vector of uint)

-0:232          Function Call: texelFetch(usB1;i1; (global highp 4-component vector of uint)

+0:232          textureFetch (global highp 4-component vector of uint)

 0:232            'bufSamp3' (uniform highp usamplerBuffer)

 0:232            's3' (temp highp int)

 0:275  Function Definition: CAT( (global void)

@@ -476,35 +476,35 @@
 0:277      Sequence

 0:277        move second child to first child (temp highp 3-component vector of int)

 0:277          's4' (temp highp 3-component vector of int)

-0:277          Function Call: textureSize(sAC1;i1; (global highp 3-component vector of int)

+0:277          textureSize (global highp 3-component vector of int)

 0:277            'CA4' (uniform highp samplerCubeArray)

 0:277            Constant:

 0:277              1 (const int)

 0:278      Sequence

 0:278        move second child to first child (temp highp 3-component vector of int)

 0:278          's5' (temp highp 3-component vector of int)

-0:278          Function Call: textureSize(sASC1;i1; (global highp 3-component vector of int)

+0:278          textureSize (global highp 3-component vector of int)

 0:278            'CA5' (uniform highp samplerCubeArrayShadow)

 0:278            Constant:

 0:278              1 (const int)

 0:279      Sequence

 0:279        move second child to first child (temp highp 3-component vector of int)

 0:279          's6' (temp highp 3-component vector of int)

-0:279          Function Call: textureSize(isAC1;i1; (global highp 3-component vector of int)

+0:279          textureSize (global highp 3-component vector of int)

 0:279            'CA6' (uniform highp isamplerCubeArray)

 0:279            Constant:

 0:279              1 (const int)

 0:280      Sequence

 0:280        move second child to first child (temp highp 3-component vector of int)

 0:280          's7' (temp highp 3-component vector of int)

-0:280          Function Call: textureSize(usAC1;i1; (global highp 3-component vector of int)

+0:280          textureSize (global highp 3-component vector of int)

 0:280            'CA7' (uniform highp usamplerCubeArray)

 0:280            Constant:

 0:280              1 (const int)

 0:282      Sequence

 0:282        move second child to first child (temp highp 4-component vector of float)

 0:282          't4' (temp highp 4-component vector of float)

-0:282          Function Call: texture(sAC1;vf4; (global highp 4-component vector of float)

+0:282          texture (global highp 4-component vector of float)

 0:282            'CA4' (uniform highp samplerCubeArray)

 0:282            Constant:

 0:282              0.500000

@@ -514,7 +514,7 @@
 0:283      Sequence

 0:283        move second child to first child (temp highp float)

 0:283          't5' (temp highp float)

-0:283          Function Call: texture(sASC1;vf4;f1; (global highp float)

+0:283          texture (global highp float)

 0:283            'CA5' (uniform highp samplerCubeArrayShadow)

 0:283            Constant:

 0:283              0.500000

@@ -526,7 +526,7 @@
 0:284      Sequence

 0:284        move second child to first child (temp highp 4-component vector of int)

 0:284          't6' (temp highp 4-component vector of int)

-0:284          Function Call: texture(isAC1;vf4; (global highp 4-component vector of int)

+0:284          texture (global highp 4-component vector of int)

 0:284            'CA6' (uniform highp isamplerCubeArray)

 0:284            Constant:

 0:284              0.500000

@@ -536,7 +536,7 @@
 0:285      Sequence

 0:285        move second child to first child (temp highp 4-component vector of uint)

 0:285          't7' (temp highp 4-component vector of uint)

-0:285          Function Call: texture(usAC1;vf4; (global highp 4-component vector of uint)

+0:285          texture (global highp 4-component vector of uint)

 0:285            'CA7' (uniform highp usamplerCubeArray)

 0:285            Constant:

 0:285              0.500000

@@ -546,7 +546,7 @@
 0:287      Sequence

 0:287        move second child to first child (temp highp 4-component vector of float)

 0:287          'L4' (temp highp 4-component vector of float)

-0:287          Function Call: textureLod(sAC1;vf4;f1; (global highp 4-component vector of float)

+0:287          textureLod (global highp 4-component vector of float)

 0:287            'CA4' (uniform highp samplerCubeArray)

 0:287            Constant:

 0:287              0.500000

@@ -558,7 +558,7 @@
 0:288      Sequence

 0:288        move second child to first child (temp highp 4-component vector of int)

 0:288          'L6' (temp highp 4-component vector of int)

-0:288          Function Call: textureLod(isAC1;vf4;f1; (global highp 4-component vector of int)

+0:288          textureLod (global highp 4-component vector of int)

 0:288            'CA6' (uniform highp isamplerCubeArray)

 0:288            Constant:

 0:288              0.500000

@@ -570,7 +570,7 @@
 0:289      Sequence

 0:289        move second child to first child (temp highp 4-component vector of uint)

 0:289          'L7' (temp highp 4-component vector of uint)

-0:289          Function Call: textureLod(usAC1;vf4;f1; (global highp 4-component vector of uint)

+0:289          textureLod (global highp 4-component vector of uint)

 0:289            'CA7' (uniform highp usamplerCubeArray)

 0:289            Constant:

 0:289              0.500000

@@ -582,7 +582,7 @@
 0:291      Sequence

 0:291        move second child to first child (temp highp 4-component vector of float)

 0:291          'g4' (temp highp 4-component vector of float)

-0:291          Function Call: textureGrad(sAC1;vf4;vf3;vf3; (global highp 4-component vector of float)

+0:291          textureGrad (global highp 4-component vector of float)

 0:291            'CA4' (uniform highp samplerCubeArray)

 0:291            Constant:

 0:291              0.500000

@@ -600,7 +600,7 @@
 0:292      Sequence

 0:292        move second child to first child (temp highp 4-component vector of int)

 0:292          'g6' (temp highp 4-component vector of int)

-0:292          Function Call: textureGrad(isAC1;vf4;vf3;vf3; (global highp 4-component vector of int)

+0:292          textureGrad (global highp 4-component vector of int)

 0:292            'CA6' (uniform highp isamplerCubeArray)

 0:292            Constant:

 0:292              0.500000

@@ -618,7 +618,7 @@
 0:293      Sequence

 0:293        move second child to first child (temp highp 4-component vector of uint)

 0:293          'g7' (temp highp 4-component vector of uint)

-0:293          Function Call: textureGrad(usAC1;vf4;vf3;vf3; (global highp 4-component vector of uint)

+0:293          textureGrad (global highp 4-component vector of uint)

 0:293            'CA7' (uniform highp usamplerCubeArray)

 0:293            Constant:

 0:293              0.500000

@@ -636,7 +636,7 @@
 0:295      Sequence

 0:295        move second child to first child (temp highp 4-component vector of float)

 0:295          'gath4' (temp highp 4-component vector of float)

-0:295          Function Call: textureGather(sAC1;vf4; (global highp 4-component vector of float)

+0:295          textureGather (global highp 4-component vector of float)

 0:295            'CA4' (uniform highp samplerCubeArray)

 0:295            Constant:

 0:295              0.500000

@@ -646,7 +646,7 @@
 0:296      Sequence

 0:296        move second child to first child (temp highp 4-component vector of float)

 0:296          'gathC4' (temp highp 4-component vector of float)

-0:296          Function Call: textureGather(sAC1;vf4;i1; (global highp 4-component vector of float)

+0:296          textureGather (global highp 4-component vector of float)

 0:296            'CA4' (uniform highp samplerCubeArray)

 0:296            Constant:

 0:296              0.500000

@@ -658,7 +658,7 @@
 0:297      Sequence

 0:297        move second child to first child (temp highp 4-component vector of int)

 0:297          'gath6' (temp highp 4-component vector of int)

-0:297          Function Call: textureGather(isAC1;vf4; (global highp 4-component vector of int)

+0:297          textureGather (global highp 4-component vector of int)

 0:297            'CA6' (uniform highp isamplerCubeArray)

 0:297            Constant:

 0:297              0.500000

@@ -668,7 +668,7 @@
 0:298      Sequence

 0:298        move second child to first child (temp highp 4-component vector of int)

 0:298          'gathC6' (temp highp 4-component vector of int)

-0:298          Function Call: textureGather(isAC1;vf4;i1; (global highp 4-component vector of int)

+0:298          textureGather (global highp 4-component vector of int)

 0:298            'CA6' (uniform highp isamplerCubeArray)

 0:298            Constant:

 0:298              0.500000

@@ -680,7 +680,7 @@
 0:299      Sequence

 0:299        move second child to first child (temp highp 4-component vector of uint)

 0:299          'gath7' (temp highp 4-component vector of uint)

-0:299          Function Call: textureGather(usAC1;vf4; (global highp 4-component vector of uint)

+0:299          textureGather (global highp 4-component vector of uint)

 0:299            'CA7' (uniform highp usamplerCubeArray)

 0:299            Constant:

 0:299              0.500000

@@ -690,7 +690,7 @@
 0:300      Sequence

 0:300        move second child to first child (temp highp 4-component vector of uint)

 0:300          'gathC7' (temp highp 4-component vector of uint)

-0:300          Function Call: textureGather(usAC1;vf4;i1; (global highp 4-component vector of uint)

+0:300          textureGather (global highp 4-component vector of uint)

 0:300            'CA7' (uniform highp usamplerCubeArray)

 0:300            Constant:

 0:300              0.500000

@@ -702,7 +702,7 @@
 0:302      Sequence

 0:302        move second child to first child (temp highp 4-component vector of float)

 0:302          'gath5' (temp highp 4-component vector of float)

-0:302          Function Call: textureGather(sASC1;vf4;f1; (global highp 4-component vector of float)

+0:302          textureGather (global highp 4-component vector of float)

 0:302            'CA5' (uniform highp samplerCubeArrayShadow)

 0:302            Constant:

 0:302              0.500000

@@ -714,17 +714,17 @@
 0:304      Sequence

 0:304        move second child to first child (temp highp 3-component vector of int)

 0:304          's1' (temp highp 3-component vector of int)

-0:304          Function Call: imageSize(IAC1; (global highp 3-component vector of int)

+0:304          imageQuerySize (global highp 3-component vector of int)

 0:304            'CA1' (writeonly uniform highp imageCubeArray)

 0:305      Sequence

 0:305        move second child to first child (temp highp 3-component vector of int)

 0:305          's2' (temp highp 3-component vector of int)

-0:305          Function Call: imageSize(iIAC1; (global highp 3-component vector of int)

+0:305          imageQuerySize (global highp 3-component vector of int)

 0:305            'CA2' (writeonly uniform highp iimageCubeArray)

 0:306      Sequence

 0:306        move second child to first child (temp highp 3-component vector of int)

 0:306          's3' (temp highp 3-component vector of int)

-0:306          Function Call: imageSize(uIAC1; (global highp 3-component vector of int)

+0:306          imageQuerySize (global highp 3-component vector of int)

 0:306            'CA3' (writeonly uniform highp uimageCubeArray)

 0:331  Function Definition: MSA( (global void)

 0:331    Function Parameters: 

@@ -732,7 +732,7 @@
 0:333      Sequence

 0:333        move second child to first child (temp highp 4-component vector of float)

 0:333          'tf' (temp highp 4-component vector of float)

-0:333          Function Call: texelFetch(sA2M1;vi3;i1; (global highp 4-component vector of float)

+0:333          textureFetch (global highp 4-component vector of float)

 0:333            'samp2DMSA' (uniform highp sampler2DMSArray)

 0:333            Constant:

 0:333              5 (const int)

@@ -743,7 +743,7 @@
 0:334      Sequence

 0:334        move second child to first child (temp highp 4-component vector of int)

 0:334          'tfi' (temp highp 4-component vector of int)

-0:334          Function Call: texelFetch(isA2M1;vi3;i1; (global highp 4-component vector of int)

+0:334          textureFetch (global highp 4-component vector of int)

 0:334            'samp2DMSAi' (uniform highp isampler2DMSArray)

 0:334            Constant:

 0:334              5 (const int)

@@ -754,7 +754,7 @@
 0:335      Sequence

 0:335        move second child to first child (temp highp 4-component vector of uint)

 0:335          'tfu' (temp highp 4-component vector of uint)

-0:335          Function Call: texelFetch(usA2M1;vi3;i1; (global highp 4-component vector of uint)

+0:335          textureFetch (global highp 4-component vector of uint)

 0:335            'samp2DMSAu' (uniform highp usampler2DMSArray)

 0:335            Constant:

 0:335              5 (const int)

@@ -765,88 +765,88 @@
 0:337      Sequence

 0:337        move second child to first child (temp highp 3-component vector of int)

 0:337          'tfs' (temp highp 3-component vector of int)

-0:337          Function Call: textureSize(sA2M1; (global highp 3-component vector of int)

+0:337          textureSize (global highp 3-component vector of int)

 0:337            'samp2DMSA' (uniform highp sampler2DMSArray)

 0:338      Sequence

 0:338        move second child to first child (temp highp 3-component vector of int)

 0:338          'tfsi' (temp highp 3-component vector of int)

-0:338          Function Call: textureSize(isA2M1; (global highp 3-component vector of int)

+0:338          textureSize (global highp 3-component vector of int)

 0:338            'samp2DMSAi' (uniform highp isampler2DMSArray)

 0:340      Sequence

 0:340        move second child to first child (temp highp 3-component vector of int)

 0:340          'tfsu' (temp highp 3-component vector of int)

-0:340          Function Call: textureSize(usA2M1; (global highp 3-component vector of int)

+0:340          textureSize (global highp 3-component vector of int)

 0:340            'samp2DMSAu' (uniform highp usampler2DMSArray)

 0:352  Function Definition: goodImageAtom( (global void)

 0:352    Function Parameters: 

 0:?     Sequence

-0:358      Function Call: imageAtomicAdd(iI21;vi2;i1; (global highp int)

+0:358      imageAtomicAdd (global highp int)

 0:358        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:358        'P' (uniform highp 2-component vector of int)

 0:358        'dati' (temp highp int)

-0:359      Function Call: imageAtomicAdd(uI21;vi2;u1; (global highp uint)

+0:359      imageAtomicAdd (global highp uint)

 0:359        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:359        'P' (uniform highp 2-component vector of int)

 0:359        'datu' (temp highp uint)

-0:360      Function Call: imageAtomicMin(iI21;vi2;i1; (global highp int)

+0:360      imageAtomicMin (global highp int)

 0:360        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:360        'P' (uniform highp 2-component vector of int)

 0:360        'dati' (temp highp int)

-0:361      Function Call: imageAtomicMin(uI21;vi2;u1; (global highp uint)

+0:361      imageAtomicMin (global highp uint)

 0:361        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:361        'P' (uniform highp 2-component vector of int)

 0:361        'datu' (temp highp uint)

-0:362      Function Call: imageAtomicMax(iI21;vi2;i1; (global highp int)

+0:362      imageAtomicMax (global highp int)

 0:362        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:362        'P' (uniform highp 2-component vector of int)

 0:362        'dati' (temp highp int)

-0:363      Function Call: imageAtomicMax(uI21;vi2;u1; (global highp uint)

+0:363      imageAtomicMax (global highp uint)

 0:363        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:363        'P' (uniform highp 2-component vector of int)

 0:363        'datu' (temp highp uint)

-0:364      Function Call: imageAtomicAnd(iI21;vi2;i1; (global highp int)

+0:364      imageAtomicAnd (global highp int)

 0:364        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:364        'P' (uniform highp 2-component vector of int)

 0:364        'dati' (temp highp int)

-0:365      Function Call: imageAtomicAnd(uI21;vi2;u1; (global highp uint)

+0:365      imageAtomicAnd (global highp uint)

 0:365        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:365        'P' (uniform highp 2-component vector of int)

 0:365        'datu' (temp highp uint)

-0:366      Function Call: imageAtomicOr(iI21;vi2;i1; (global highp int)

+0:366      imageAtomicOr (global highp int)

 0:366        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:366        'P' (uniform highp 2-component vector of int)

 0:366        'dati' (temp highp int)

-0:367      Function Call: imageAtomicOr(uI21;vi2;u1; (global highp uint)

+0:367      imageAtomicOr (global highp uint)

 0:367        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:367        'P' (uniform highp 2-component vector of int)

 0:367        'datu' (temp highp uint)

-0:368      Function Call: imageAtomicXor(iI21;vi2;i1; (global highp int)

+0:368      imageAtomicXor (global highp int)

 0:368        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:368        'P' (uniform highp 2-component vector of int)

 0:368        'dati' (temp highp int)

-0:369      Function Call: imageAtomicXor(uI21;vi2;u1; (global highp uint)

+0:369      imageAtomicXor (global highp uint)

 0:369        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:369        'P' (uniform highp 2-component vector of int)

 0:369        'datu' (temp highp uint)

-0:370      Function Call: imageAtomicExchange(iI21;vi2;i1; (global highp int)

+0:370      imageAtomicExchange (global highp int)

 0:370        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:370        'P' (uniform highp 2-component vector of int)

 0:370        'dati' (temp highp int)

-0:371      Function Call: imageAtomicExchange(uI21;vi2;u1; (global highp uint)

+0:371      imageAtomicExchange (global highp uint)

 0:371        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:371        'P' (uniform highp 2-component vector of int)

 0:371        'datu' (temp highp uint)

-0:372      Function Call: imageAtomicExchange(I21;vi2;f1; (global highp float)

+0:372      imageAtomicExchange (global highp float)

 0:372        'im2Df' (layout(r32f ) uniform highp image2D)

 0:372        'P' (uniform highp 2-component vector of int)

 0:372        'datf' (temp highp float)

-0:373      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (global highp int)

+0:373      imageAtomicCompSwap (global highp int)

 0:373        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:373        'P' (uniform highp 2-component vector of int)

 0:373        Constant:

 0:373          3 (const int)

 0:373        'dati' (temp highp int)

-0:374      Function Call: imageAtomicCompSwap(uI21;vi2;u1;u1; (global highp uint)

+0:374      imageAtomicCompSwap (global highp uint)

 0:374        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:374        'P' (uniform highp 2-component vector of int)

 0:374        Constant:

@@ -1091,16 +1091,16 @@
 0:?     Sequence

 0:63      move second child to first child (temp highp 2-component vector of int)

 0:63        'v2' (temp highp 2-component vector of int)

-0:63        Function Call: textureSize(s2M1; (global highp 2-component vector of int)

+0:63        textureSize (global highp 2-component vector of int)

 0:63          's2dms' (uniform highp sampler2DMS)

 0:64      move second child to first child (temp highp 2-component vector of int)

 0:64        'v2' (temp highp 2-component vector of int)

-0:64        Function Call: textureSize(us2M1; (global highp 2-component vector of int)

+0:64        textureSize (global highp 2-component vector of int)

 0:64          'us2dms' (uniform highp usampler2DMS)

 0:65      Sequence

 0:65        move second child to first child (temp highp 4-component vector of float)

 0:65          'v4' (temp highp 4-component vector of float)

-0:65          Function Call: texelFetch(s2M1;vi2;i1; (global highp 4-component vector of float)

+0:65          textureFetch (global highp 4-component vector of float)

 0:65            's2dms' (uniform highp sampler2DMS)

 0:65            'v2' (temp highp 2-component vector of int)

 0:65            Constant:

@@ -1108,7 +1108,7 @@
 0:66      Sequence

 0:66        move second child to first child (temp highp 4-component vector of int)

 0:66          'iv4' (temp highp 4-component vector of int)

-0:66          Function Call: texelFetch(is2M1;vi2;i1; (global highp 4-component vector of int)

+0:66          textureFetch (global highp 4-component vector of int)

 0:66            'is2dms' (uniform highp isampler2DMS)

 0:66            'v2' (temp highp 2-component vector of int)

 0:66            Constant:

@@ -1186,7 +1186,7 @@
 0:164          'sIndex' (uniform highp int)

 0:164          Constant:

 0:164            2 (const int)

-0:165      Function Call: textureGatherOffset(s21;vf2;vi2; (global highp 4-component vector of float)

+0:165      textureGatherOffset (global highp 4-component vector of float)

 0:165        direct index (temp highp sampler2D)

 0:165          'sArray' (uniform 4-element array of highp sampler2D)

 0:165          Constant:

@@ -1194,9 +1194,9 @@
 0:165        Constant:

 0:165          0.100000

 0:165          0.100000

-0:165        Convert float to int (temp 2-component vector of int)

+0:165        Convert float to int (temp highp 2-component vector of int)

 0:165          'inf' (in highp 2-component vector of float)

-0:166      Function Call: textureGatherOffsets(s21;vf2;vi2[4]; (global highp 4-component vector of float)

+0:166      textureGatherOffsets (global highp 4-component vector of float)

 0:166        direct index (temp highp sampler2D)

 0:166          'sArray' (uniform 4-element array of highp sampler2D)

 0:166          Constant:

@@ -1250,7 +1250,7 @@
 0:179          'sIndex' (uniform highp int)

 0:179          Constant:

 0:179            2 (const int)

-0:180      Function Call: textureGatherOffset(s21;vf2;vi2; (global highp 4-component vector of float)

+0:180      textureGatherOffset (global highp 4-component vector of float)

 0:180        direct index (temp highp sampler2D)

 0:180          'sArray' (uniform 4-element array of highp sampler2D)

 0:180          Constant:

@@ -1258,9 +1258,9 @@
 0:180        Constant:

 0:180          0.100000

 0:180          0.100000

-0:180        Convert float to int (temp 2-component vector of int)

+0:180        Convert float to int (temp highp 2-component vector of int)

 0:180          'inf' (in highp 2-component vector of float)

-0:181      Function Call: textureGatherOffsets(s21;vf2;vi2[4]; (global highp 4-component vector of float)

+0:181      textureGatherOffsets (global highp 4-component vector of float)

 0:181        direct index (temp highp sampler2D)

 0:181          'sArray' (uniform 4-element array of highp sampler2D)

 0:181          Constant:

@@ -1277,7 +1277,7 @@
 0:181          0 (const int)

 0:181          0 (const int)

 0:181          0 (const int)

-0:182      Function Call: textureGatherOffsets(s21;vf2;vi2[4]; (global highp 4-component vector of float)

+0:182      textureGatherOffsets (global highp 4-component vector of float)

 0:182        direct index (temp highp sampler2D)

 0:182          'sArray' (uniform 4-element array of highp sampler2D)

 0:182          Constant:

@@ -1292,49 +1292,49 @@
 0:222      Sequence

 0:222        move second child to first child (temp highp int)

 0:222          's1' (temp highp int)

-0:222          Function Call: textureSize(sB1; (global highp int)

+0:222          textureSize (global highp int)

 0:222            'bufSamp1' (uniform highp samplerBuffer)

 0:223      Sequence

 0:223        move second child to first child (temp highp int)

 0:223          's2' (temp highp int)

-0:223          Function Call: textureSize(isB1; (global highp int)

+0:223          textureSize (global highp int)

 0:223            'bufSamp2' (uniform highp isamplerBuffer)

 0:224      Sequence

 0:224        move second child to first child (temp highp int)

 0:224          's3' (temp highp int)

-0:224          Function Call: textureSize(usB1; (global highp int)

+0:224          textureSize (global highp int)

 0:224            'bufSamp3' (uniform highp usamplerBuffer)

 0:226      Sequence

 0:226        move second child to first child (temp highp int)

 0:226          's4' (temp highp int)

-0:226          Function Call: imageSize(IB1; (global highp int)

+0:226          imageQuerySize (global highp int)

 0:226            'bufSamp4' (writeonly uniform highp imageBuffer)

 0:227      Sequence

 0:227        move second child to first child (temp highp int)

 0:227          's5' (temp highp int)

-0:227          Function Call: imageSize(iIB1; (global highp int)

+0:227          imageQuerySize (global highp int)

 0:227            'bufSamp5' (writeonly uniform highp iimageBuffer)

 0:228      Sequence

 0:228        move second child to first child (temp highp int)

 0:228          's6' (temp highp int)

-0:228          Function Call: imageSize(uIB1; (global highp int)

+0:228          imageQuerySize (global highp int)

 0:228            'bufSamp6' (writeonly uniform highp uimageBuffer)

 0:230      Sequence

 0:230        move second child to first child (temp highp 4-component vector of float)

 0:230          'f1' (temp highp 4-component vector of float)

-0:230          Function Call: texelFetch(sB1;i1; (global highp 4-component vector of float)

+0:230          textureFetch (global highp 4-component vector of float)

 0:230            'bufSamp1' (uniform highp samplerBuffer)

 0:230            's1' (temp highp int)

 0:231      Sequence

 0:231        move second child to first child (temp highp 4-component vector of int)

 0:231          'f2' (temp highp 4-component vector of int)

-0:231          Function Call: texelFetch(isB1;i1; (global highp 4-component vector of int)

+0:231          textureFetch (global highp 4-component vector of int)

 0:231            'bufSamp2' (uniform highp isamplerBuffer)

 0:231            's2' (temp highp int)

 0:232      Sequence

 0:232        move second child to first child (temp highp 4-component vector of uint)

 0:232          'f3' (temp highp 4-component vector of uint)

-0:232          Function Call: texelFetch(usB1;i1; (global highp 4-component vector of uint)

+0:232          textureFetch (global highp 4-component vector of uint)

 0:232            'bufSamp3' (uniform highp usamplerBuffer)

 0:232            's3' (temp highp int)

 0:275  Function Definition: CAT( (global void)

@@ -1343,35 +1343,35 @@
 0:277      Sequence

 0:277        move second child to first child (temp highp 3-component vector of int)

 0:277          's4' (temp highp 3-component vector of int)

-0:277          Function Call: textureSize(sAC1;i1; (global highp 3-component vector of int)

+0:277          textureSize (global highp 3-component vector of int)

 0:277            'CA4' (uniform highp samplerCubeArray)

 0:277            Constant:

 0:277              1 (const int)

 0:278      Sequence

 0:278        move second child to first child (temp highp 3-component vector of int)

 0:278          's5' (temp highp 3-component vector of int)

-0:278          Function Call: textureSize(sASC1;i1; (global highp 3-component vector of int)

+0:278          textureSize (global highp 3-component vector of int)

 0:278            'CA5' (uniform highp samplerCubeArrayShadow)

 0:278            Constant:

 0:278              1 (const int)

 0:279      Sequence

 0:279        move second child to first child (temp highp 3-component vector of int)

 0:279          's6' (temp highp 3-component vector of int)

-0:279          Function Call: textureSize(isAC1;i1; (global highp 3-component vector of int)

+0:279          textureSize (global highp 3-component vector of int)

 0:279            'CA6' (uniform highp isamplerCubeArray)

 0:279            Constant:

 0:279              1 (const int)

 0:280      Sequence

 0:280        move second child to first child (temp highp 3-component vector of int)

 0:280          's7' (temp highp 3-component vector of int)

-0:280          Function Call: textureSize(usAC1;i1; (global highp 3-component vector of int)

+0:280          textureSize (global highp 3-component vector of int)

 0:280            'CA7' (uniform highp usamplerCubeArray)

 0:280            Constant:

 0:280              1 (const int)

 0:282      Sequence

 0:282        move second child to first child (temp highp 4-component vector of float)

 0:282          't4' (temp highp 4-component vector of float)

-0:282          Function Call: texture(sAC1;vf4; (global highp 4-component vector of float)

+0:282          texture (global highp 4-component vector of float)

 0:282            'CA4' (uniform highp samplerCubeArray)

 0:282            Constant:

 0:282              0.500000

@@ -1381,7 +1381,7 @@
 0:283      Sequence

 0:283        move second child to first child (temp highp float)

 0:283          't5' (temp highp float)

-0:283          Function Call: texture(sASC1;vf4;f1; (global highp float)

+0:283          texture (global highp float)

 0:283            'CA5' (uniform highp samplerCubeArrayShadow)

 0:283            Constant:

 0:283              0.500000

@@ -1393,7 +1393,7 @@
 0:284      Sequence

 0:284        move second child to first child (temp highp 4-component vector of int)

 0:284          't6' (temp highp 4-component vector of int)

-0:284          Function Call: texture(isAC1;vf4; (global highp 4-component vector of int)

+0:284          texture (global highp 4-component vector of int)

 0:284            'CA6' (uniform highp isamplerCubeArray)

 0:284            Constant:

 0:284              0.500000

@@ -1403,7 +1403,7 @@
 0:285      Sequence

 0:285        move second child to first child (temp highp 4-component vector of uint)

 0:285          't7' (temp highp 4-component vector of uint)

-0:285          Function Call: texture(usAC1;vf4; (global highp 4-component vector of uint)

+0:285          texture (global highp 4-component vector of uint)

 0:285            'CA7' (uniform highp usamplerCubeArray)

 0:285            Constant:

 0:285              0.500000

@@ -1413,7 +1413,7 @@
 0:287      Sequence

 0:287        move second child to first child (temp highp 4-component vector of float)

 0:287          'L4' (temp highp 4-component vector of float)

-0:287          Function Call: textureLod(sAC1;vf4;f1; (global highp 4-component vector of float)

+0:287          textureLod (global highp 4-component vector of float)

 0:287            'CA4' (uniform highp samplerCubeArray)

 0:287            Constant:

 0:287              0.500000

@@ -1425,7 +1425,7 @@
 0:288      Sequence

 0:288        move second child to first child (temp highp 4-component vector of int)

 0:288          'L6' (temp highp 4-component vector of int)

-0:288          Function Call: textureLod(isAC1;vf4;f1; (global highp 4-component vector of int)

+0:288          textureLod (global highp 4-component vector of int)

 0:288            'CA6' (uniform highp isamplerCubeArray)

 0:288            Constant:

 0:288              0.500000

@@ -1437,7 +1437,7 @@
 0:289      Sequence

 0:289        move second child to first child (temp highp 4-component vector of uint)

 0:289          'L7' (temp highp 4-component vector of uint)

-0:289          Function Call: textureLod(usAC1;vf4;f1; (global highp 4-component vector of uint)

+0:289          textureLod (global highp 4-component vector of uint)

 0:289            'CA7' (uniform highp usamplerCubeArray)

 0:289            Constant:

 0:289              0.500000

@@ -1449,7 +1449,7 @@
 0:291      Sequence

 0:291        move second child to first child (temp highp 4-component vector of float)

 0:291          'g4' (temp highp 4-component vector of float)

-0:291          Function Call: textureGrad(sAC1;vf4;vf3;vf3; (global highp 4-component vector of float)

+0:291          textureGrad (global highp 4-component vector of float)

 0:291            'CA4' (uniform highp samplerCubeArray)

 0:291            Constant:

 0:291              0.500000

@@ -1467,7 +1467,7 @@
 0:292      Sequence

 0:292        move second child to first child (temp highp 4-component vector of int)

 0:292          'g6' (temp highp 4-component vector of int)

-0:292          Function Call: textureGrad(isAC1;vf4;vf3;vf3; (global highp 4-component vector of int)

+0:292          textureGrad (global highp 4-component vector of int)

 0:292            'CA6' (uniform highp isamplerCubeArray)

 0:292            Constant:

 0:292              0.500000

@@ -1485,7 +1485,7 @@
 0:293      Sequence

 0:293        move second child to first child (temp highp 4-component vector of uint)

 0:293          'g7' (temp highp 4-component vector of uint)

-0:293          Function Call: textureGrad(usAC1;vf4;vf3;vf3; (global highp 4-component vector of uint)

+0:293          textureGrad (global highp 4-component vector of uint)

 0:293            'CA7' (uniform highp usamplerCubeArray)

 0:293            Constant:

 0:293              0.500000

@@ -1503,7 +1503,7 @@
 0:295      Sequence

 0:295        move second child to first child (temp highp 4-component vector of float)

 0:295          'gath4' (temp highp 4-component vector of float)

-0:295          Function Call: textureGather(sAC1;vf4; (global highp 4-component vector of float)

+0:295          textureGather (global highp 4-component vector of float)

 0:295            'CA4' (uniform highp samplerCubeArray)

 0:295            Constant:

 0:295              0.500000

@@ -1513,7 +1513,7 @@
 0:296      Sequence

 0:296        move second child to first child (temp highp 4-component vector of float)

 0:296          'gathC4' (temp highp 4-component vector of float)

-0:296          Function Call: textureGather(sAC1;vf4;i1; (global highp 4-component vector of float)

+0:296          textureGather (global highp 4-component vector of float)

 0:296            'CA4' (uniform highp samplerCubeArray)

 0:296            Constant:

 0:296              0.500000

@@ -1525,7 +1525,7 @@
 0:297      Sequence

 0:297        move second child to first child (temp highp 4-component vector of int)

 0:297          'gath6' (temp highp 4-component vector of int)

-0:297          Function Call: textureGather(isAC1;vf4; (global highp 4-component vector of int)

+0:297          textureGather (global highp 4-component vector of int)

 0:297            'CA6' (uniform highp isamplerCubeArray)

 0:297            Constant:

 0:297              0.500000

@@ -1535,7 +1535,7 @@
 0:298      Sequence

 0:298        move second child to first child (temp highp 4-component vector of int)

 0:298          'gathC6' (temp highp 4-component vector of int)

-0:298          Function Call: textureGather(isAC1;vf4;i1; (global highp 4-component vector of int)

+0:298          textureGather (global highp 4-component vector of int)

 0:298            'CA6' (uniform highp isamplerCubeArray)

 0:298            Constant:

 0:298              0.500000

@@ -1547,7 +1547,7 @@
 0:299      Sequence

 0:299        move second child to first child (temp highp 4-component vector of uint)

 0:299          'gath7' (temp highp 4-component vector of uint)

-0:299          Function Call: textureGather(usAC1;vf4; (global highp 4-component vector of uint)

+0:299          textureGather (global highp 4-component vector of uint)

 0:299            'CA7' (uniform highp usamplerCubeArray)

 0:299            Constant:

 0:299              0.500000

@@ -1557,7 +1557,7 @@
 0:300      Sequence

 0:300        move second child to first child (temp highp 4-component vector of uint)

 0:300          'gathC7' (temp highp 4-component vector of uint)

-0:300          Function Call: textureGather(usAC1;vf4;i1; (global highp 4-component vector of uint)

+0:300          textureGather (global highp 4-component vector of uint)

 0:300            'CA7' (uniform highp usamplerCubeArray)

 0:300            Constant:

 0:300              0.500000

@@ -1569,7 +1569,7 @@
 0:302      Sequence

 0:302        move second child to first child (temp highp 4-component vector of float)

 0:302          'gath5' (temp highp 4-component vector of float)

-0:302          Function Call: textureGather(sASC1;vf4;f1; (global highp 4-component vector of float)

+0:302          textureGather (global highp 4-component vector of float)

 0:302            'CA5' (uniform highp samplerCubeArrayShadow)

 0:302            Constant:

 0:302              0.500000

@@ -1581,17 +1581,17 @@
 0:304      Sequence

 0:304        move second child to first child (temp highp 3-component vector of int)

 0:304          's1' (temp highp 3-component vector of int)

-0:304          Function Call: imageSize(IAC1; (global highp 3-component vector of int)

+0:304          imageQuerySize (global highp 3-component vector of int)

 0:304            'CA1' (writeonly uniform highp imageCubeArray)

 0:305      Sequence

 0:305        move second child to first child (temp highp 3-component vector of int)

 0:305          's2' (temp highp 3-component vector of int)

-0:305          Function Call: imageSize(iIAC1; (global highp 3-component vector of int)

+0:305          imageQuerySize (global highp 3-component vector of int)

 0:305            'CA2' (writeonly uniform highp iimageCubeArray)

 0:306      Sequence

 0:306        move second child to first child (temp highp 3-component vector of int)

 0:306          's3' (temp highp 3-component vector of int)

-0:306          Function Call: imageSize(uIAC1; (global highp 3-component vector of int)

+0:306          imageQuerySize (global highp 3-component vector of int)

 0:306            'CA3' (writeonly uniform highp uimageCubeArray)

 0:331  Function Definition: MSA( (global void)

 0:331    Function Parameters: 

@@ -1599,7 +1599,7 @@
 0:333      Sequence

 0:333        move second child to first child (temp highp 4-component vector of float)

 0:333          'tf' (temp highp 4-component vector of float)

-0:333          Function Call: texelFetch(sA2M1;vi3;i1; (global highp 4-component vector of float)

+0:333          textureFetch (global highp 4-component vector of float)

 0:333            'samp2DMSA' (uniform highp sampler2DMSArray)

 0:333            Constant:

 0:333              5 (const int)

@@ -1610,7 +1610,7 @@
 0:334      Sequence

 0:334        move second child to first child (temp highp 4-component vector of int)

 0:334          'tfi' (temp highp 4-component vector of int)

-0:334          Function Call: texelFetch(isA2M1;vi3;i1; (global highp 4-component vector of int)

+0:334          textureFetch (global highp 4-component vector of int)

 0:334            'samp2DMSAi' (uniform highp isampler2DMSArray)

 0:334            Constant:

 0:334              5 (const int)

@@ -1621,7 +1621,7 @@
 0:335      Sequence

 0:335        move second child to first child (temp highp 4-component vector of uint)

 0:335          'tfu' (temp highp 4-component vector of uint)

-0:335          Function Call: texelFetch(usA2M1;vi3;i1; (global highp 4-component vector of uint)

+0:335          textureFetch (global highp 4-component vector of uint)

 0:335            'samp2DMSAu' (uniform highp usampler2DMSArray)

 0:335            Constant:

 0:335              5 (const int)

@@ -1632,88 +1632,88 @@
 0:337      Sequence

 0:337        move second child to first child (temp highp 3-component vector of int)

 0:337          'tfs' (temp highp 3-component vector of int)

-0:337          Function Call: textureSize(sA2M1; (global highp 3-component vector of int)

+0:337          textureSize (global highp 3-component vector of int)

 0:337            'samp2DMSA' (uniform highp sampler2DMSArray)

 0:338      Sequence

 0:338        move second child to first child (temp highp 3-component vector of int)

 0:338          'tfsi' (temp highp 3-component vector of int)

-0:338          Function Call: textureSize(isA2M1; (global highp 3-component vector of int)

+0:338          textureSize (global highp 3-component vector of int)

 0:338            'samp2DMSAi' (uniform highp isampler2DMSArray)

 0:340      Sequence

 0:340        move second child to first child (temp highp 3-component vector of int)

 0:340          'tfsu' (temp highp 3-component vector of int)

-0:340          Function Call: textureSize(usA2M1; (global highp 3-component vector of int)

+0:340          textureSize (global highp 3-component vector of int)

 0:340            'samp2DMSAu' (uniform highp usampler2DMSArray)

 0:352  Function Definition: goodImageAtom( (global void)

 0:352    Function Parameters: 

 0:?     Sequence

-0:358      Function Call: imageAtomicAdd(iI21;vi2;i1; (global highp int)

+0:358      imageAtomicAdd (global highp int)

 0:358        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:358        'P' (uniform highp 2-component vector of int)

 0:358        'dati' (temp highp int)

-0:359      Function Call: imageAtomicAdd(uI21;vi2;u1; (global highp uint)

+0:359      imageAtomicAdd (global highp uint)

 0:359        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:359        'P' (uniform highp 2-component vector of int)

 0:359        'datu' (temp highp uint)

-0:360      Function Call: imageAtomicMin(iI21;vi2;i1; (global highp int)

+0:360      imageAtomicMin (global highp int)

 0:360        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:360        'P' (uniform highp 2-component vector of int)

 0:360        'dati' (temp highp int)

-0:361      Function Call: imageAtomicMin(uI21;vi2;u1; (global highp uint)

+0:361      imageAtomicMin (global highp uint)

 0:361        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:361        'P' (uniform highp 2-component vector of int)

 0:361        'datu' (temp highp uint)

-0:362      Function Call: imageAtomicMax(iI21;vi2;i1; (global highp int)

+0:362      imageAtomicMax (global highp int)

 0:362        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:362        'P' (uniform highp 2-component vector of int)

 0:362        'dati' (temp highp int)

-0:363      Function Call: imageAtomicMax(uI21;vi2;u1; (global highp uint)

+0:363      imageAtomicMax (global highp uint)

 0:363        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:363        'P' (uniform highp 2-component vector of int)

 0:363        'datu' (temp highp uint)

-0:364      Function Call: imageAtomicAnd(iI21;vi2;i1; (global highp int)

+0:364      imageAtomicAnd (global highp int)

 0:364        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:364        'P' (uniform highp 2-component vector of int)

 0:364        'dati' (temp highp int)

-0:365      Function Call: imageAtomicAnd(uI21;vi2;u1; (global highp uint)

+0:365      imageAtomicAnd (global highp uint)

 0:365        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:365        'P' (uniform highp 2-component vector of int)

 0:365        'datu' (temp highp uint)

-0:366      Function Call: imageAtomicOr(iI21;vi2;i1; (global highp int)

+0:366      imageAtomicOr (global highp int)

 0:366        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:366        'P' (uniform highp 2-component vector of int)

 0:366        'dati' (temp highp int)

-0:367      Function Call: imageAtomicOr(uI21;vi2;u1; (global highp uint)

+0:367      imageAtomicOr (global highp uint)

 0:367        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:367        'P' (uniform highp 2-component vector of int)

 0:367        'datu' (temp highp uint)

-0:368      Function Call: imageAtomicXor(iI21;vi2;i1; (global highp int)

+0:368      imageAtomicXor (global highp int)

 0:368        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:368        'P' (uniform highp 2-component vector of int)

 0:368        'dati' (temp highp int)

-0:369      Function Call: imageAtomicXor(uI21;vi2;u1; (global highp uint)

+0:369      imageAtomicXor (global highp uint)

 0:369        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:369        'P' (uniform highp 2-component vector of int)

 0:369        'datu' (temp highp uint)

-0:370      Function Call: imageAtomicExchange(iI21;vi2;i1; (global highp int)

+0:370      imageAtomicExchange (global highp int)

 0:370        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:370        'P' (uniform highp 2-component vector of int)

 0:370        'dati' (temp highp int)

-0:371      Function Call: imageAtomicExchange(uI21;vi2;u1; (global highp uint)

+0:371      imageAtomicExchange (global highp uint)

 0:371        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:371        'P' (uniform highp 2-component vector of int)

 0:371        'datu' (temp highp uint)

-0:372      Function Call: imageAtomicExchange(I21;vi2;f1; (global highp float)

+0:372      imageAtomicExchange (global highp float)

 0:372        'im2Df' (layout(r32f ) uniform highp image2D)

 0:372        'P' (uniform highp 2-component vector of int)

 0:372        'datf' (temp highp float)

-0:373      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (global highp int)

+0:373      imageAtomicCompSwap (global highp int)

 0:373        'im2Di' (layout(r32i ) uniform highp iimage2D)

 0:373        'P' (uniform highp 2-component vector of int)

 0:373        Constant:

 0:373          3 (const int)

 0:373        'dati' (temp highp int)

-0:374      Function Call: imageAtomicCompSwap(uI21;vi2;u1;u1; (global highp uint)

+0:374      imageAtomicCompSwap (global highp uint)

 0:374        'im2Du' (layout(r32ui ) uniform highp uimage2D)

 0:374        'P' (uniform highp 2-component vector of int)

 0:374        Constant:

diff --git a/Test/baseResults/400.frag.out b/Test/baseResults/400.frag.out
index a4a880c..7f15728 100644
--- a/Test/baseResults/400.frag.out
+++ b/Test/baseResults/400.frag.out
@@ -33,7 +33,7 @@
 0:?     Sequence

 0:13      move second child to first child (temp 4-component vector of float)

 0:13        'v' (temp 4-component vector of float)

-0:13        Function Call: texture(s21;vf2; (global 4-component vector of float)

+0:13        texture (global 4-component vector of float)

 0:13          indirect index (temp sampler2D)

 0:13            'arrayedSampler' (uniform 5-element array of sampler2D)

 0:13            'i' (flat in int)

@@ -50,7 +50,7 @@
 0:18      Sequence

 0:18        move second child to first child (temp 4-component vector of uint)

 0:18          'uv4' (temp 4-component vector of uint)

-0:18          Function Call: textureGatherOffsets(usR21;vf2;vi2[4];i1; (global 4-component vector of uint)

+0:18          textureGatherOffsets (global 4-component vector of uint)

 0:18            'samp2dr' (uniform usampler2DRect)

 0:18            'c2D' (smooth in 2-component vector of float)

 0:18            'offsets' (temp 4-element array of 2-component vector of int)

@@ -58,7 +58,7 @@
 0:18              2 (const int)

 0:19      move second child to first child (temp 4-component vector of uint)

 0:19        'uv4' (temp 4-component vector of uint)

-0:19        Function Call: textureGatherOffsets(usR21;vf2;vi2[4];i1; (global 4-component vector of uint)

+0:19        textureGatherOffsets (global 4-component vector of uint)

 0:19          'samp2dr' (uniform usampler2DRect)

 0:19          'c2D' (smooth in 2-component vector of float)

 0:19          Constant:

@@ -75,7 +75,7 @@
 0:20      Sequence

 0:20        move second child to first child (temp 4-component vector of float)

 0:20          'v4' (temp 4-component vector of float)

-0:20          Function Call: textureGather(s21;vf2; (global 4-component vector of float)

+0:20          textureGather (global 4-component vector of float)

 0:20            direct index (temp sampler2D)

 0:20              'arrayedSampler' (uniform 5-element array of sampler2D)

 0:20              Constant:

@@ -84,7 +84,7 @@
 0:21      Sequence

 0:21        move second child to first child (temp 4-component vector of int)

 0:21          'iv4' (temp 4-component vector of int)

-0:21          Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global 4-component vector of int)

+0:21          textureGatherOffset (global 4-component vector of int)

 0:21            'isamp2DA' (uniform isampler2DArray)

 0:21            Constant:

 0:21              0.100000

@@ -97,7 +97,7 @@
 0:21              3 (const int)

 0:22      move second child to first child (temp 4-component vector of int)

 0:22        'iv4' (temp 4-component vector of int)

-0:22        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global 4-component vector of int)

+0:22        textureGatherOffset (global 4-component vector of int)

 0:22          'isamp2DA' (uniform isampler2DArray)

 0:22          Constant:

 0:22            0.100000

@@ -109,7 +109,7 @@
 0:22          'i' (flat in int)

 0:23      move second child to first child (temp 4-component vector of int)

 0:23        'iv4' (temp 4-component vector of int)

-0:23        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global 4-component vector of int)

+0:23        textureGatherOffset (global 4-component vector of int)

 0:23          'isamp2DA' (uniform isampler2DArray)

 0:23          Constant:

 0:23            0.100000

@@ -122,7 +122,7 @@
 0:23            4 (const int)

 0:24      move second child to first child (temp 4-component vector of int)

 0:24        'iv4' (temp 4-component vector of int)

-0:24        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global 4-component vector of int)

+0:24        textureGatherOffset (global 4-component vector of int)

 0:24          'isamp2DA' (uniform isampler2DArray)

 0:24          Constant:

 0:24            0.100000

@@ -135,7 +135,7 @@
 0:24            3 (const int)

 0:25      move second child to first child (temp 4-component vector of int)

 0:25        'iv4' (temp 4-component vector of int)

-0:25        Function Call: textureGatherOffset(isA21;vf3;vi2; (global 4-component vector of int)

+0:25        textureGatherOffset (global 4-component vector of int)

 0:25          'isamp2DA' (uniform isampler2DArray)

 0:25          Constant:

 0:25            0.100000

@@ -150,7 +150,7 @@
 0:47  Function Definition: foo23( (global void)

 0:47    Function Parameters: 

 0:?     Sequence

-0:51      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

+0:51      textureProjGradOffset (global float)

 0:51        'u2drs' (uniform sampler2DRectShadow)

 0:51        'outp' (out 4-component vector of float)

 0:51        Constant:

@@ -161,7 +161,7 @@
 0:51          0.000000

 0:51        Convert float to int (temp 2-component vector of int)

 0:51          'c2D' (smooth in 2-component vector of float)

-0:52      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

+0:52      textureProjGradOffset (global float)

 0:52        'u2drs' (uniform sampler2DRectShadow)

 0:52        'outp' (out 4-component vector of float)

 0:52        Constant:

@@ -173,7 +173,7 @@
 0:52        Constant:

 0:52          3 (const int)

 0:52          4 (const int)

-0:53      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

+0:53      textureProjGradOffset (global float)

 0:53        'u2drs' (uniform sampler2DRectShadow)

 0:53        'outp' (out 4-component vector of float)

 0:53        Constant:

@@ -185,7 +185,7 @@
 0:53        Constant:

 0:53          15 (const int)

 0:53          16 (const int)

-0:54      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

+0:54      textureProjGradOffset (global float)

 0:54        'u2drs' (uniform sampler2DRectShadow)

 0:54        'outp' (out 4-component vector of float)

 0:54        Constant:

@@ -336,7 +336,7 @@
 0:?     Sequence

 0:13      move second child to first child (temp 4-component vector of float)

 0:13        'v' (temp 4-component vector of float)

-0:13        Function Call: texture(s21;vf2; (global 4-component vector of float)

+0:13        texture (global 4-component vector of float)

 0:13          indirect index (temp sampler2D)

 0:13            'arrayedSampler' (uniform 5-element array of sampler2D)

 0:13            'i' (flat in int)

@@ -353,7 +353,7 @@
 0:18      Sequence

 0:18        move second child to first child (temp 4-component vector of uint)

 0:18          'uv4' (temp 4-component vector of uint)

-0:18          Function Call: textureGatherOffsets(usR21;vf2;vi2[4];i1; (global 4-component vector of uint)

+0:18          textureGatherOffsets (global 4-component vector of uint)

 0:18            'samp2dr' (uniform usampler2DRect)

 0:18            'c2D' (smooth in 2-component vector of float)

 0:18            'offsets' (temp 4-element array of 2-component vector of int)

@@ -361,7 +361,7 @@
 0:18              2 (const int)

 0:19      move second child to first child (temp 4-component vector of uint)

 0:19        'uv4' (temp 4-component vector of uint)

-0:19        Function Call: textureGatherOffsets(usR21;vf2;vi2[4];i1; (global 4-component vector of uint)

+0:19        textureGatherOffsets (global 4-component vector of uint)

 0:19          'samp2dr' (uniform usampler2DRect)

 0:19          'c2D' (smooth in 2-component vector of float)

 0:19          Constant:

@@ -378,7 +378,7 @@
 0:20      Sequence

 0:20        move second child to first child (temp 4-component vector of float)

 0:20          'v4' (temp 4-component vector of float)

-0:20          Function Call: textureGather(s21;vf2; (global 4-component vector of float)

+0:20          textureGather (global 4-component vector of float)

 0:20            direct index (temp sampler2D)

 0:20              'arrayedSampler' (uniform 5-element array of sampler2D)

 0:20              Constant:

@@ -387,7 +387,7 @@
 0:21      Sequence

 0:21        move second child to first child (temp 4-component vector of int)

 0:21          'iv4' (temp 4-component vector of int)

-0:21          Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global 4-component vector of int)

+0:21          textureGatherOffset (global 4-component vector of int)

 0:21            'isamp2DA' (uniform isampler2DArray)

 0:21            Constant:

 0:21              0.100000

@@ -400,7 +400,7 @@
 0:21              3 (const int)

 0:22      move second child to first child (temp 4-component vector of int)

 0:22        'iv4' (temp 4-component vector of int)

-0:22        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global 4-component vector of int)

+0:22        textureGatherOffset (global 4-component vector of int)

 0:22          'isamp2DA' (uniform isampler2DArray)

 0:22          Constant:

 0:22            0.100000

@@ -412,7 +412,7 @@
 0:22          'i' (flat in int)

 0:23      move second child to first child (temp 4-component vector of int)

 0:23        'iv4' (temp 4-component vector of int)

-0:23        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global 4-component vector of int)

+0:23        textureGatherOffset (global 4-component vector of int)

 0:23          'isamp2DA' (uniform isampler2DArray)

 0:23          Constant:

 0:23            0.100000

@@ -425,7 +425,7 @@
 0:23            4 (const int)

 0:24      move second child to first child (temp 4-component vector of int)

 0:24        'iv4' (temp 4-component vector of int)

-0:24        Function Call: textureGatherOffset(isA21;vf3;vi2;i1; (global 4-component vector of int)

+0:24        textureGatherOffset (global 4-component vector of int)

 0:24          'isamp2DA' (uniform isampler2DArray)

 0:24          Constant:

 0:24            0.100000

@@ -438,7 +438,7 @@
 0:24            3 (const int)

 0:25      move second child to first child (temp 4-component vector of int)

 0:25        'iv4' (temp 4-component vector of int)

-0:25        Function Call: textureGatherOffset(isA21;vf3;vi2; (global 4-component vector of int)

+0:25        textureGatherOffset (global 4-component vector of int)

 0:25          'isamp2DA' (uniform isampler2DArray)

 0:25          Constant:

 0:25            0.100000

@@ -453,7 +453,7 @@
 0:47  Function Definition: foo23( (global void)

 0:47    Function Parameters: 

 0:?     Sequence

-0:51      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

+0:51      textureProjGradOffset (global float)

 0:51        'u2drs' (uniform sampler2DRectShadow)

 0:51        'outp' (out 4-component vector of float)

 0:51        Constant:

@@ -464,7 +464,7 @@
 0:51          0.000000

 0:51        Convert float to int (temp 2-component vector of int)

 0:51          'c2D' (smooth in 2-component vector of float)

-0:52      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

+0:52      textureProjGradOffset (global float)

 0:52        'u2drs' (uniform sampler2DRectShadow)

 0:52        'outp' (out 4-component vector of float)

 0:52        Constant:

@@ -476,7 +476,7 @@
 0:52        Constant:

 0:52          3 (const int)

 0:52          4 (const int)

-0:53      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

+0:53      textureProjGradOffset (global float)

 0:53        'u2drs' (uniform sampler2DRectShadow)

 0:53        'outp' (out 4-component vector of float)

 0:53        Constant:

@@ -488,7 +488,7 @@
 0:53        Constant:

 0:53          15 (const int)

 0:53          16 (const int)

-0:54      Function Call: textureProjGradOffset(sSR21;vf4;vf2;vf2;vi2; (global float)

+0:54      textureProjGradOffset (global float)

 0:54        'u2drs' (uniform sampler2DRectShadow)

 0:54        'outp' (out 4-component vector of float)

 0:54        Constant:

diff --git a/Test/baseResults/420.geom.out b/Test/baseResults/420.geom.out
index 2503173..cd77ce9 100644
--- a/Test/baseResults/420.geom.out
+++ b/Test/baseResults/420.geom.out
@@ -52,7 +52,7 @@
 0:40      Sequence

 0:40        move second child to first child (temp 4-component vector of float)

 0:40          'v' (temp 4-component vector of float)

-0:40          Function Call: textureGatherOffset(s21;vf2;vi2; (global 4-component vector of float)

+0:40          textureGatherOffset (global 4-component vector of float)

 0:40            's2D' (uniform sampler2D)

 0:40            direct index (temp 2-component vector of float)

 0:40              'coord' (in 3-element array of 2-component vector of float)

@@ -179,7 +179,7 @@
 0:40      Sequence

 0:40        move second child to first child (temp 4-component vector of float)

 0:40          'v' (temp 4-component vector of float)

-0:40          Function Call: textureGatherOffset(s21;vf2;vi2; (global 4-component vector of float)

+0:40          textureGatherOffset (global 4-component vector of float)

 0:40            's2D' (uniform sampler2D)

 0:40            direct index (temp 2-component vector of float)

 0:40              'coord' (in 3-element array of 2-component vector of float)

diff --git a/Test/baseResults/420.vert.out b/Test/baseResults/420.vert.out
index b31639f..13c61eb 100644
--- a/Test/baseResults/420.vert.out
+++ b/Test/baseResults/420.vert.out
@@ -171,21 +171,21 @@
 0:111            'anon@0' (layout(binding=7 column_major shared ) uniform block{layout(column_major shared ) uniform int aoeu})

 0:111            Constant:

 0:111              0 (const uint)

-0:112      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (global int)

+0:112      imageAtomicCompSwap (global int)

 0:112        'iimg2D' (layout(r32i ) uniform iimage2D)

 0:112        Construct ivec2 (temp 2-component vector of int)

 0:112          'i' (temp int)

 0:112          'i' (temp int)

 0:112        'i' (temp int)

 0:112        'i' (temp int)

-0:113      Function Call: imageAtomicAdd(uI21;vi2;u1; (global uint)

+0:113      imageAtomicAdd (global uint)

 0:113        'uimg2D' (layout(r32ui ) uniform uimage2D)

 0:113        Construct ivec2 (temp 2-component vector of int)

 0:113          'i' (temp int)

 0:113          'i' (temp int)

 0:113        Convert int to uint (temp uint)

 0:113          'i' (temp int)

-0:114      Function Call: imageAtomicMin(iI21;vi2;i1; (global int)

+0:114      imageAtomicMin (global int)

 0:114        'iimg2Drgba' (layout(rgba32i ) uniform iimage2D)

 0:114        Construct ivec2 (temp 2-component vector of int)

 0:114          'i' (temp int)

@@ -196,7 +196,7 @@
 0:116      Sequence

 0:116        move second child to first child (temp 4-component vector of int)

 0:116          'pos' (temp 4-component vector of int)

-0:116          Function Call: imageLoad(iI21;vi2; (global 4-component vector of int)

+0:116          imageLoad (global 4-component vector of int)

 0:116            'iimg2D' (layout(r32i ) uniform iimage2D)

 0:116            Construct ivec2 (temp 2-component vector of int)

 0:116              'i' (temp int)

@@ -204,13 +204,13 @@
 0:117      Sequence

 0:117        move second child to first child (temp 4-component vector of float)

 0:117          'col' (temp 4-component vector of float)

-0:117          Function Call: imageLoad(I2M1;vi2;i1; (global 4-component vector of float)

+0:117          imageLoad (global 4-component vector of float)

 0:117            'img2DMS' (uniform image2DMS)

 0:117            Construct ivec2 (temp 2-component vector of int)

 0:117              'i' (temp int)

 0:117              'i' (temp int)

 0:117            'i' (temp int)

-0:118      Function Call: imageStore(I2M1;vi2;i1;vf4; (global void)

+0:118      imageStore (global void)

 0:118        'img2DMSWO' (writeonly uniform image2DMS)

 0:118        Construct ivec2 (temp 2-component vector of int)

 0:118          'i' (temp int)

@@ -221,7 +221,7 @@
 0:118          0.000000

 0:118          0.000000

 0:118          0.000000

-0:119      Function Call: imageLoad(I2M1;vi2;i1; (global 4-component vector of float)

+0:119      imageLoad (global 4-component vector of float)

 0:119        'img2DMSWO' (writeonly uniform image2DMS)

 0:119        Construct ivec2 (temp 2-component vector of int)

 0:119          'i' (temp int)

@@ -416,21 +416,21 @@
 0:111            'anon@0' (layout(binding=7 column_major shared ) uniform block{layout(column_major shared ) uniform int aoeu})

 0:111            Constant:

 0:111              0 (const uint)

-0:112      Function Call: imageAtomicCompSwap(iI21;vi2;i1;i1; (global int)

+0:112      imageAtomicCompSwap (global int)

 0:112        'iimg2D' (layout(r32i ) uniform iimage2D)

 0:112        Construct ivec2 (temp 2-component vector of int)

 0:112          'i' (temp int)

 0:112          'i' (temp int)

 0:112        'i' (temp int)

 0:112        'i' (temp int)

-0:113      Function Call: imageAtomicAdd(uI21;vi2;u1; (global uint)

+0:113      imageAtomicAdd (global uint)

 0:113        'uimg2D' (layout(r32ui ) uniform uimage2D)

 0:113        Construct ivec2 (temp 2-component vector of int)

 0:113          'i' (temp int)

 0:113          'i' (temp int)

 0:113        Convert int to uint (temp uint)

 0:113          'i' (temp int)

-0:114      Function Call: imageAtomicMin(iI21;vi2;i1; (global int)

+0:114      imageAtomicMin (global int)

 0:114        'iimg2Drgba' (layout(rgba32i ) uniform iimage2D)

 0:114        Construct ivec2 (temp 2-component vector of int)

 0:114          'i' (temp int)

@@ -441,7 +441,7 @@
 0:116      Sequence

 0:116        move second child to first child (temp 4-component vector of int)

 0:116          'pos' (temp 4-component vector of int)

-0:116          Function Call: imageLoad(iI21;vi2; (global 4-component vector of int)

+0:116          imageLoad (global 4-component vector of int)

 0:116            'iimg2D' (layout(r32i ) uniform iimage2D)

 0:116            Construct ivec2 (temp 2-component vector of int)

 0:116              'i' (temp int)

@@ -449,13 +449,13 @@
 0:117      Sequence

 0:117        move second child to first child (temp 4-component vector of float)

 0:117          'col' (temp 4-component vector of float)

-0:117          Function Call: imageLoad(I2M1;vi2;i1; (global 4-component vector of float)

+0:117          imageLoad (global 4-component vector of float)

 0:117            'img2DMS' (uniform image2DMS)

 0:117            Construct ivec2 (temp 2-component vector of int)

 0:117              'i' (temp int)

 0:117              'i' (temp int)

 0:117            'i' (temp int)

-0:118      Function Call: imageStore(I2M1;vi2;i1;vf4; (global void)

+0:118      imageStore (global void)

 0:118        'img2DMSWO' (writeonly uniform image2DMS)

 0:118        Construct ivec2 (temp 2-component vector of int)

 0:118          'i' (temp int)

@@ -466,7 +466,7 @@
 0:118          0.000000

 0:118          0.000000

 0:118          0.000000

-0:119      Function Call: imageLoad(I2M1;vi2;i1; (global 4-component vector of float)

+0:119      imageLoad (global 4-component vector of float)

 0:119        'img2DMSWO' (writeonly uniform image2DMS)

 0:119        Construct ivec2 (temp 2-component vector of int)

 0:119          'i' (temp int)

diff --git a/Test/baseResults/430.vert.out b/Test/baseResults/430.vert.out
index 3f21e1d..02cd512 100644
--- a/Test/baseResults/430.vert.out
+++ b/Test/baseResults/430.vert.out
@@ -105,19 +105,19 @@
 0:168      Sequence

 0:168        move second child to first child (temp int)

 0:168          's' (temp int)

-0:168          Function Call: textureSamples(s2M1; (global int)

+0:168          textureSamples (global int)

 0:168            's2dms' (uniform sampler2DMS)

 0:169      add second child into first child (temp int)

 0:169        's' (temp int)

-0:169        Function Call: textureSamples(usA2M1; (global int)

+0:169        textureSamples (global int)

 0:169          'us2dmsa' (uniform usampler2DMSArray)

 0:170      add second child into first child (temp int)

 0:170        's' (temp int)

-0:170        Function Call: imageSamples(iI2M1; (global int)

+0:170        imageQuerySamples (global int)

 0:170          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)

 0:171      add second child into first child (temp int)

 0:171        's' (temp int)

-0:171        Function Call: imageSamples(IA2M1; (global int)

+0:171        imageQuerySamples (global int)

 0:171          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)

 0:176  Function Definition: fooq2( (global void)

 0:176    Function Parameters: 

@@ -125,19 +125,19 @@
 0:178      Sequence

 0:178        move second child to first child (temp int)

 0:178          's' (temp int)

-0:178          Function Call: textureSamples(s2M1; (global int)

+0:178          textureSamples (global int)

 0:178            's2dms' (uniform sampler2DMS)

 0:179      add second child into first child (temp int)

 0:179        's' (temp int)

-0:179        Function Call: textureSamples(usA2M1; (global int)

+0:179        textureSamples (global int)

 0:179          'us2dmsa' (uniform usampler2DMSArray)

 0:180      add second child into first child (temp int)

 0:180        's' (temp int)

-0:180        Function Call: imageSamples(iI2M1; (global int)

+0:180        imageQuerySamples (global int)

 0:180          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)

 0:181      add second child into first child (temp int)

 0:181        's' (temp int)

-0:181        Function Call: imageSamples(IA2M1; (global int)

+0:181        imageQuerySamples (global int)

 0:181          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)

 0:?   Linker Objects

 0:?     'v4' (layout(location=3 ) temp 4-component vector of float)

@@ -237,19 +237,19 @@
 0:168      Sequence

 0:168        move second child to first child (temp int)

 0:168          's' (temp int)

-0:168          Function Call: textureSamples(s2M1; (global int)

+0:168          textureSamples (global int)

 0:168            's2dms' (uniform sampler2DMS)

 0:169      add second child into first child (temp int)

 0:169        's' (temp int)

-0:169        Function Call: textureSamples(usA2M1; (global int)

+0:169        textureSamples (global int)

 0:169          'us2dmsa' (uniform usampler2DMSArray)

 0:170      add second child into first child (temp int)

 0:170        's' (temp int)

-0:170        Function Call: imageSamples(iI2M1; (global int)

+0:170        imageQuerySamples (global int)

 0:170          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)

 0:171      add second child into first child (temp int)

 0:171        's' (temp int)

-0:171        Function Call: imageSamples(IA2M1; (global int)

+0:171        imageQuerySamples (global int)

 0:171          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)

 0:176  Function Definition: fooq2( (global void)

 0:176    Function Parameters: 

@@ -257,19 +257,19 @@
 0:178      Sequence

 0:178        move second child to first child (temp int)

 0:178          's' (temp int)

-0:178          Function Call: textureSamples(s2M1; (global int)

+0:178          textureSamples (global int)

 0:178            's2dms' (uniform sampler2DMS)

 0:179      add second child into first child (temp int)

 0:179        's' (temp int)

-0:179        Function Call: textureSamples(usA2M1; (global int)

+0:179        textureSamples (global int)

 0:179          'us2dmsa' (uniform usampler2DMSArray)

 0:180      add second child into first child (temp int)

 0:180        's' (temp int)

-0:180        Function Call: imageSamples(iI2M1; (global int)

+0:180        imageQuerySamples (global int)

 0:180          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)

 0:181      add second child into first child (temp int)

 0:181        's' (temp int)

-0:181        Function Call: imageSamples(IA2M1; (global int)

+0:181        imageQuerySamples (global int)

 0:181          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)

 0:?   Linker Objects

 0:?     'v4' (layout(location=3 ) temp 4-component vector of float)

diff --git a/Test/baseResults/450.frag.out b/Test/baseResults/450.frag.out
index 7fcfa75..09a4163 100644
--- a/Test/baseResults/450.frag.out
+++ b/Test/baseResults/450.frag.out
@@ -105,24 +105,24 @@
 0:44      Sequence

 0:44        move second child to first child (temp int)

 0:44          's' (temp int)

-0:44          Function Call: textureSamples(s2M1; (global int)

+0:44          textureSamples (global int)

 0:44            's2dms' (uniform sampler2DMS)

 0:45      add second child into first child (temp int)

 0:45        's' (temp int)

-0:45        Function Call: textureSamples(usA2M1; (global int)

+0:45        textureSamples (global int)

 0:45          'us2dmsa' (uniform usampler2DMSArray)

 0:46      add second child into first child (temp int)

 0:46        's' (temp int)

-0:46        Function Call: imageSamples(iI2M1; (global int)

+0:46        imageQuerySamples (global int)

 0:46          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)

 0:47      add second child into first child (temp int)

 0:47        's' (temp int)

-0:47        Function Call: imageSamples(IA2M1; (global int)

+0:47        imageQuerySamples (global int)

 0:47          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)

 0:48      Sequence

 0:48        move second child to first child (temp float)

 0:48          'f' (temp float)

-0:48          Function Call: imageAtomicExchange(IA2M1;vi3;i1;f1; (global float)

+0:48          imageAtomicExchange (global float)

 0:48            'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)

 0:48            Convert float to int (temp 3-component vector of int)

 0:48              'in3' (smooth in 3-component vector of float)

@@ -249,24 +249,24 @@
 0:44      Sequence

 0:44        move second child to first child (temp int)

 0:44          's' (temp int)

-0:44          Function Call: textureSamples(s2M1; (global int)

+0:44          textureSamples (global int)

 0:44            's2dms' (uniform sampler2DMS)

 0:45      add second child into first child (temp int)

 0:45        's' (temp int)

-0:45        Function Call: textureSamples(usA2M1; (global int)

+0:45        textureSamples (global int)

 0:45          'us2dmsa' (uniform usampler2DMSArray)

 0:46      add second child into first child (temp int)

 0:46        's' (temp int)

-0:46        Function Call: imageSamples(iI2M1; (global int)

+0:46        imageQuerySamples (global int)

 0:46          'ii2dms' (layout(rgba32i ) uniform iimage2DMS)

 0:47      add second child into first child (temp int)

 0:47        's' (temp int)

-0:47        Function Call: imageSamples(IA2M1; (global int)

+0:47        imageQuerySamples (global int)

 0:47          'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)

 0:48      Sequence

 0:48        move second child to first child (temp float)

 0:48          'f' (temp float)

-0:48          Function Call: imageAtomicExchange(IA2M1;vi3;i1;f1; (global float)

+0:48          imageAtomicExchange (global float)

 0:48            'i2dmsa' (layout(rgba32f ) uniform image2DMSArray)

 0:48            Convert float to int (temp 3-component vector of int)

 0:48              'in3' (smooth in 3-component vector of float)

diff --git a/Test/baseResults/aggOps.frag.out b/Test/baseResults/aggOps.frag.out
index 85916b6..9f26d3b 100644
--- a/Test/baseResults/aggOps.frag.out
+++ b/Test/baseResults/aggOps.frag.out
@@ -67,13 +67,13 @@
 0:30        true case

 0:31        move second child to first child (temp 4-component vector of float)

 0:31          'v' (temp 4-component vector of float)

-0:31          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:31          texture (global 4-component vector of float)

 0:31            'sampler' (uniform sampler2D)

 0:31            'coord' (smooth in 2-component vector of float)

 0:30        false case

 0:33        move second child to first child (temp 4-component vector of float)

 0:33          'v' (temp 4-component vector of float)

-0:33          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:33          texture (global 4-component vector of float)

 0:33            'sampler' (uniform sampler2D)

 0:33            vector-scale (temp 2-component vector of float)

 0:33              Constant:

@@ -216,13 +216,13 @@
 0:30        true case

 0:31        move second child to first child (temp 4-component vector of float)

 0:31          'v' (temp 4-component vector of float)

-0:31          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:31          texture (global 4-component vector of float)

 0:31            'sampler' (uniform sampler2D)

 0:31            'coord' (smooth in 2-component vector of float)

 0:30        false case

 0:33        move second child to first child (temp 4-component vector of float)

 0:33          'v' (temp 4-component vector of float)

-0:33          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:33          texture (global 4-component vector of float)

 0:33            'sampler' (uniform sampler2D)

 0:33            vector-scale (temp 2-component vector of float)

 0:33              Constant:

diff --git a/Test/baseResults/conditionalDiscard.frag.out b/Test/baseResults/conditionalDiscard.frag.out
index 08fe7e3..13b385f 100644
--- a/Test/baseResults/conditionalDiscard.frag.out
+++ b/Test/baseResults/conditionalDiscard.frag.out
@@ -7,7 +7,7 @@
 0:8      Sequence

 0:8        move second child to first child (temp 4-component vector of float)

 0:8          'v' (temp 4-component vector of float)

-0:8          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:8          texture (global 4-component vector of float)

 0:8            'tex' (uniform sampler2D)

 0:8            'coord' (smooth in 2-component vector of float)

 0:10      Test condition and select (temp void)

@@ -40,7 +40,7 @@
 0:8      Sequence

 0:8        move second child to first child (temp 4-component vector of float)

 0:8          'v' (temp 4-component vector of float)

-0:8          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:8          texture (global 4-component vector of float)

 0:8            'tex' (uniform sampler2D)

 0:8            'coord' (smooth in 2-component vector of float)

 0:10      Test condition and select (temp void)

diff --git a/Test/baseResults/deepRvalue.frag.out b/Test/baseResults/deepRvalue.frag.out
index 0363c86..91e7816 100644
--- a/Test/baseResults/deepRvalue.frag.out
+++ b/Test/baseResults/deepRvalue.frag.out
@@ -81,7 +81,7 @@
 0:28        move second child to first child (temp float)

 0:28          'i' (temp float)

 0:28          direct index (temp float)

-0:28            Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:28            texture (global 4-component vector of float)

 0:28              'sampler' (uniform sampler2D)

 0:28              Constant:

 0:28                0.500000

@@ -225,7 +225,7 @@
 0:28        move second child to first child (temp float)

 0:28          'i' (temp float)

 0:28          direct index (temp float)

-0:28            Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:28            texture (global 4-component vector of float)

 0:28              'sampler' (uniform sampler2D)

 0:28              Constant:

 0:28                0.500000

diff --git a/Test/baseResults/localAggregates.frag.out b/Test/baseResults/localAggregates.frag.out
index 538087a..ad47744 100644
--- a/Test/baseResults/localAggregates.frag.out
+++ b/Test/baseResults/localAggregates.frag.out
@@ -192,7 +192,7 @@
 0:71              indirect index (temp float)

 0:71                'a' (temp 16-element array of float)

 0:71                'x' (temp int)

-0:71          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:71          texture (global 4-component vector of float)

 0:71            'sampler' (uniform sampler2D)

 0:71            'coord' (smooth in 2-component vector of float)

 0:?   Linker Objects

@@ -399,7 +399,7 @@
 0:71              indirect index (temp float)

 0:71                'a' (temp 16-element array of float)

 0:71                'x' (temp int)

-0:71          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:71          texture (global 4-component vector of float)

 0:71            'sampler' (uniform sampler2D)

 0:71            'coord' (smooth in 2-component vector of float)

 0:?   Linker Objects

diff --git a/Test/baseResults/newTexture.frag.out b/Test/baseResults/newTexture.frag.out
index 625dd80..6d43566 100644
--- a/Test/baseResults/newTexture.frag.out
+++ b/Test/baseResults/newTexture.frag.out
@@ -9,17 +9,17 @@
 0:38      Sequence

 0:38        move second child to first child (temp 4-component vector of float)

 0:38          'v' (temp 4-component vector of float)

-0:38          Function Call: texture(s21;vf2; (global 4-component vector of float)

+0:38          texture (global 4-component vector of float)

 0:38            's2D' (uniform sampler2D)

 0:38            'c2D' (smooth in 2-component vector of float)

 0:39      add second child into first child (temp 4-component vector of float)

 0:39        'v' (temp 4-component vector of float)

-0:39        Function Call: textureProj(s31;vf4; (global 4-component vector of float)

+0:39        textureProj (global 4-component vector of float)

 0:39          's3D' (uniform sampler3D)

 0:39          'c4D' (smooth in 4-component vector of float)

 0:40      add second child into first child (temp 4-component vector of float)

 0:40        'v' (temp 4-component vector of float)

-0:40        Function Call: textureLod(sA21;vf3;f1; (global 4-component vector of float)

+0:40        textureLod (global 4-component vector of float)

 0:40          's2DArray' (uniform sampler2DArray)

 0:40          'c3D' (smooth in 3-component vector of float)

 0:40          Constant:

@@ -29,7 +29,7 @@
 0:41          'v' (temp 4-component vector of float)

 0:41          Constant:

 0:41            1 (const int)

-0:41        Function Call: textureOffset(sS21;vf3;vi2;f1; (global float)

+0:41        textureOffset (global float)

 0:41          's2DShadow' (uniform sampler2DShadow)

 0:41          'c3D' (smooth in 3-component vector of float)

 0:41          Constant:

@@ -38,13 +38,13 @@
 0:41          'c1D' (smooth in float)

 0:42      add second child into first child (temp 4-component vector of float)

 0:42        'v' (temp 4-component vector of float)

-0:42        Function Call: texelFetch(s31;vi3;i1; (global 4-component vector of float)

+0:42        textureFetch (global 4-component vector of float)

 0:42          's3D' (uniform sampler3D)

 0:42          'ic3D' (flat in 3-component vector of int)

 0:42          'ic1D' (flat in int)

 0:43      add second child into first child (temp 4-component vector of float)

 0:43        'v' (temp 4-component vector of float)

-0:43        Function Call: texelFetchOffset(s21;vi2;i1;vi2; (global 4-component vector of float)

+0:43        textureFetchOffset (global 4-component vector of float)

 0:43          's2D' (uniform sampler2D)

 0:43          'ic2D' (flat in 2-component vector of int)

 0:43          Constant:

@@ -57,7 +57,7 @@
 0:44          'v' (temp 4-component vector of float)

 0:44          Constant:

 0:44            1 (const int)

-0:44        Function Call: textureLodOffset(sS21;vf3;f1;vi2; (global float)

+0:44        textureLodOffset (global float)

 0:44          's2DShadow' (uniform sampler2DShadow)

 0:44          'c3D' (smooth in 3-component vector of float)

 0:44          'c1D' (smooth in float)

@@ -66,7 +66,7 @@
 0:44            3 (const int)

 0:45      add second child into first child (temp 4-component vector of float)

 0:45        'v' (temp 4-component vector of float)

-0:45        Function Call: textureProjLodOffset(s21;vf3;f1;vi2; (global 4-component vector of float)

+0:45        textureProjLodOffset (global 4-component vector of float)

 0:45          's2D' (uniform sampler2D)

 0:45          'c3D' (smooth in 3-component vector of float)

 0:45          'c1D' (smooth in float)

@@ -75,7 +75,7 @@
 0:45            3 (const int)

 0:46      add second child into first child (temp 4-component vector of float)

 0:46        'v' (temp 4-component vector of float)

-0:46        Function Call: textureGrad(sC1;vf3;vf3;vf3; (global 4-component vector of float)

+0:46        textureGrad (global 4-component vector of float)

 0:46          'sCube' (uniform samplerCube)

 0:46          'c3D' (smooth in 3-component vector of float)

 0:46          'c3D' (smooth in 3-component vector of float)

@@ -85,7 +85,7 @@
 0:47          'v' (temp 4-component vector of float)

 0:47          Constant:

 0:47            0 (const int)

-0:47        Function Call: textureGradOffset(sAS21;vf4;vf2;vf2;vi2; (global float)

+0:47        textureGradOffset (global float)

 0:47          's2DArrayShadow' (uniform sampler2DArrayShadow)

 0:47          'c4D' (smooth in 4-component vector of float)

 0:47          'c2D' (smooth in 2-component vector of float)

@@ -95,14 +95,14 @@
 0:47            3 (const int)

 0:48      add second child into first child (temp 4-component vector of float)

 0:48        'v' (temp 4-component vector of float)

-0:48        Function Call: textureProjGrad(s31;vf4;vf3;vf3; (global 4-component vector of float)

+0:48        textureProjGrad (global 4-component vector of float)

 0:48          's3D' (uniform sampler3D)

 0:48          'c4D' (smooth in 4-component vector of float)

 0:48          'c3D' (smooth in 3-component vector of float)

 0:48          'c3D' (smooth in 3-component vector of float)

 0:49      add second child into first child (temp 4-component vector of float)

 0:49        'v' (temp 4-component vector of float)

-0:49        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (global 4-component vector of float)

+0:49        textureProjGradOffset (global 4-component vector of float)

 0:49          's2D' (uniform sampler2D)

 0:49          'c3D' (smooth in 3-component vector of float)

 0:49          'c2D' (smooth in 2-component vector of float)

@@ -113,7 +113,7 @@
 0:51      Sequence

 0:51        move second child to first child (temp 4-component vector of int)

 0:51          'iv' (temp 4-component vector of int)

-0:51          Function Call: texture(is21;vf2; (global 4-component vector of int)

+0:51          texture (global 4-component vector of int)

 0:51            'is2D' (uniform isampler2D)

 0:51            'c2D' (smooth in 2-component vector of float)

 0:52      add second child into first child (temp 4-component vector of float)

@@ -122,7 +122,7 @@
 0:52          'iv' (temp 4-component vector of int)

 0:53      move second child to first child (temp 4-component vector of int)

 0:53        'iv' (temp 4-component vector of int)

-0:53        Function Call: textureProjOffset(is21;vf4;vi2; (global 4-component vector of int)

+0:53        textureProjOffset (global 4-component vector of int)

 0:53          'is2D' (uniform isampler2D)

 0:53          'c4D' (smooth in 4-component vector of float)

 0:53          Constant:

@@ -134,7 +134,7 @@
 0:54          'iv' (temp 4-component vector of int)

 0:55      move second child to first child (temp 4-component vector of int)

 0:55        'iv' (temp 4-component vector of int)

-0:55        Function Call: textureProjLod(is21;vf3;f1; (global 4-component vector of int)

+0:55        textureProjLod (global 4-component vector of int)

 0:55          'is2D' (uniform isampler2D)

 0:55          'c3D' (smooth in 3-component vector of float)

 0:55          'c1D' (smooth in float)

@@ -144,7 +144,7 @@
 0:56          'iv' (temp 4-component vector of int)

 0:57      move second child to first child (temp 4-component vector of int)

 0:57        'iv' (temp 4-component vector of int)

-0:57        Function Call: textureProjGrad(is21;vf3;vf2;vf2; (global 4-component vector of int)

+0:57        textureProjGrad (global 4-component vector of int)

 0:57          'is2D' (uniform isampler2D)

 0:57          'c3D' (smooth in 3-component vector of float)

 0:57          'c2D' (smooth in 2-component vector of float)

@@ -155,7 +155,7 @@
 0:58          'iv' (temp 4-component vector of int)

 0:59      move second child to first child (temp 4-component vector of int)

 0:59        'iv' (temp 4-component vector of int)

-0:59        Function Call: texture(is31;vf3;f1; (global 4-component vector of int)

+0:59        texture (global 4-component vector of int)

 0:59          'is3D' (uniform isampler3D)

 0:59          'c3D' (smooth in 3-component vector of float)

 0:59          Constant:

@@ -166,7 +166,7 @@
 0:60          'iv' (temp 4-component vector of int)

 0:61      move second child to first child (temp 4-component vector of int)

 0:61        'iv' (temp 4-component vector of int)

-0:61        Function Call: textureLod(isC1;vf3;f1; (global 4-component vector of int)

+0:61        textureLod (global 4-component vector of int)

 0:61          'isCube' (uniform isamplerCube)

 0:61          'c3D' (smooth in 3-component vector of float)

 0:61          'c1D' (smooth in float)

@@ -176,7 +176,7 @@
 0:62          'iv' (temp 4-component vector of int)

 0:63      move second child to first child (temp 4-component vector of int)

 0:63        'iv' (temp 4-component vector of int)

-0:63        Function Call: texelFetch(isA21;vi3;i1; (global 4-component vector of int)

+0:63        textureFetch (global 4-component vector of int)

 0:63          'is2DArray' (uniform isampler2DArray)

 0:63          'ic3D' (flat in 3-component vector of int)

 0:63          'ic1D' (flat in int)

@@ -186,7 +186,7 @@
 0:64          'iv' (temp 4-component vector of int)

 0:66      add second child into first child (temp 4-component vector of int)

 0:66        'iv' (temp 4-component vector of int)

-0:66        Function Call: texelFetch(is2M1;vi2;i1; (global 4-component vector of int)

+0:66        textureFetch (global 4-component vector of int)

 0:66          'is2Dms' (uniform isampler2DMS)

 0:66          'ic2D' (flat in 2-component vector of int)

 0:66          'ic1D' (flat in int)

@@ -196,18 +196,18 @@
 0:67          'iv' (temp 4-component vector of int)

 0:68      add second child into first child (temp 4-component vector of float)

 0:68        'v' (temp 4-component vector of float)

-0:68        Function Call: texelFetch(sB1;i1; (global 4-component vector of float)

+0:68        textureFetch (global 4-component vector of float)

 0:68          'sb' (uniform samplerBuffer)

 0:68          'ic1D' (flat in int)

 0:69      add second child into first child (temp 4-component vector of float)

 0:69        'v' (temp 4-component vector of float)

-0:69        Function Call: texelFetch(sR21;vi2; (global 4-component vector of float)

+0:69        textureFetch (global 4-component vector of float)

 0:69          'sr' (uniform sampler2DRect)

 0:69          'ic2D' (flat in 2-component vector of int)

 0:71      Sequence

 0:71        move second child to first child (temp 2-component vector of int)

 0:71          'iv2' (temp 2-component vector of int)

-0:71          Function Call: textureSize(sSC1;i1; (global 2-component vector of int)

+0:71          textureSize (global 2-component vector of int)

 0:71            'sCubeShadow' (uniform samplerCubeShadow)

 0:71            Constant:

 0:71              2 (const int)

@@ -263,17 +263,17 @@
 0:38      Sequence

 0:38        move second child to first child (temp 4-component vector of float)

 0:38          'v' (temp 4-component vector of float)

-0:38          Function Call: texture(s21;vf2; (global 4-component vector of float)

+0:38          texture (global 4-component vector of float)

 0:38            's2D' (uniform sampler2D)

 0:38            'c2D' (smooth in 2-component vector of float)

 0:39      add second child into first child (temp 4-component vector of float)

 0:39        'v' (temp 4-component vector of float)

-0:39        Function Call: textureProj(s31;vf4; (global 4-component vector of float)

+0:39        textureProj (global 4-component vector of float)

 0:39          's3D' (uniform sampler3D)

 0:39          'c4D' (smooth in 4-component vector of float)

 0:40      add second child into first child (temp 4-component vector of float)

 0:40        'v' (temp 4-component vector of float)

-0:40        Function Call: textureLod(sA21;vf3;f1; (global 4-component vector of float)

+0:40        textureLod (global 4-component vector of float)

 0:40          's2DArray' (uniform sampler2DArray)

 0:40          'c3D' (smooth in 3-component vector of float)

 0:40          Constant:

@@ -283,7 +283,7 @@
 0:41          'v' (temp 4-component vector of float)

 0:41          Constant:

 0:41            1 (const int)

-0:41        Function Call: textureOffset(sS21;vf3;vi2;f1; (global float)

+0:41        textureOffset (global float)

 0:41          's2DShadow' (uniform sampler2DShadow)

 0:41          'c3D' (smooth in 3-component vector of float)

 0:41          Constant:

@@ -292,13 +292,13 @@
 0:41          'c1D' (smooth in float)

 0:42      add second child into first child (temp 4-component vector of float)

 0:42        'v' (temp 4-component vector of float)

-0:42        Function Call: texelFetch(s31;vi3;i1; (global 4-component vector of float)

+0:42        textureFetch (global 4-component vector of float)

 0:42          's3D' (uniform sampler3D)

 0:42          'ic3D' (flat in 3-component vector of int)

 0:42          'ic1D' (flat in int)

 0:43      add second child into first child (temp 4-component vector of float)

 0:43        'v' (temp 4-component vector of float)

-0:43        Function Call: texelFetchOffset(s21;vi2;i1;vi2; (global 4-component vector of float)

+0:43        textureFetchOffset (global 4-component vector of float)

 0:43          's2D' (uniform sampler2D)

 0:43          'ic2D' (flat in 2-component vector of int)

 0:43          Constant:

@@ -311,7 +311,7 @@
 0:44          'v' (temp 4-component vector of float)

 0:44          Constant:

 0:44            1 (const int)

-0:44        Function Call: textureLodOffset(sS21;vf3;f1;vi2; (global float)

+0:44        textureLodOffset (global float)

 0:44          's2DShadow' (uniform sampler2DShadow)

 0:44          'c3D' (smooth in 3-component vector of float)

 0:44          'c1D' (smooth in float)

@@ -320,7 +320,7 @@
 0:44            3 (const int)

 0:45      add second child into first child (temp 4-component vector of float)

 0:45        'v' (temp 4-component vector of float)

-0:45        Function Call: textureProjLodOffset(s21;vf3;f1;vi2; (global 4-component vector of float)

+0:45        textureProjLodOffset (global 4-component vector of float)

 0:45          's2D' (uniform sampler2D)

 0:45          'c3D' (smooth in 3-component vector of float)

 0:45          'c1D' (smooth in float)

@@ -329,7 +329,7 @@
 0:45            3 (const int)

 0:46      add second child into first child (temp 4-component vector of float)

 0:46        'v' (temp 4-component vector of float)

-0:46        Function Call: textureGrad(sC1;vf3;vf3;vf3; (global 4-component vector of float)

+0:46        textureGrad (global 4-component vector of float)

 0:46          'sCube' (uniform samplerCube)

 0:46          'c3D' (smooth in 3-component vector of float)

 0:46          'c3D' (smooth in 3-component vector of float)

@@ -339,7 +339,7 @@
 0:47          'v' (temp 4-component vector of float)

 0:47          Constant:

 0:47            0 (const int)

-0:47        Function Call: textureGradOffset(sAS21;vf4;vf2;vf2;vi2; (global float)

+0:47        textureGradOffset (global float)

 0:47          's2DArrayShadow' (uniform sampler2DArrayShadow)

 0:47          'c4D' (smooth in 4-component vector of float)

 0:47          'c2D' (smooth in 2-component vector of float)

@@ -349,14 +349,14 @@
 0:47            3 (const int)

 0:48      add second child into first child (temp 4-component vector of float)

 0:48        'v' (temp 4-component vector of float)

-0:48        Function Call: textureProjGrad(s31;vf4;vf3;vf3; (global 4-component vector of float)

+0:48        textureProjGrad (global 4-component vector of float)

 0:48          's3D' (uniform sampler3D)

 0:48          'c4D' (smooth in 4-component vector of float)

 0:48          'c3D' (smooth in 3-component vector of float)

 0:48          'c3D' (smooth in 3-component vector of float)

 0:49      add second child into first child (temp 4-component vector of float)

 0:49        'v' (temp 4-component vector of float)

-0:49        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (global 4-component vector of float)

+0:49        textureProjGradOffset (global 4-component vector of float)

 0:49          's2D' (uniform sampler2D)

 0:49          'c3D' (smooth in 3-component vector of float)

 0:49          'c2D' (smooth in 2-component vector of float)

@@ -367,7 +367,7 @@
 0:51      Sequence

 0:51        move second child to first child (temp 4-component vector of int)

 0:51          'iv' (temp 4-component vector of int)

-0:51          Function Call: texture(is21;vf2; (global 4-component vector of int)

+0:51          texture (global 4-component vector of int)

 0:51            'is2D' (uniform isampler2D)

 0:51            'c2D' (smooth in 2-component vector of float)

 0:52      add second child into first child (temp 4-component vector of float)

@@ -376,7 +376,7 @@
 0:52          'iv' (temp 4-component vector of int)

 0:53      move second child to first child (temp 4-component vector of int)

 0:53        'iv' (temp 4-component vector of int)

-0:53        Function Call: textureProjOffset(is21;vf4;vi2; (global 4-component vector of int)

+0:53        textureProjOffset (global 4-component vector of int)

 0:53          'is2D' (uniform isampler2D)

 0:53          'c4D' (smooth in 4-component vector of float)

 0:53          Constant:

@@ -388,7 +388,7 @@
 0:54          'iv' (temp 4-component vector of int)

 0:55      move second child to first child (temp 4-component vector of int)

 0:55        'iv' (temp 4-component vector of int)

-0:55        Function Call: textureProjLod(is21;vf3;f1; (global 4-component vector of int)

+0:55        textureProjLod (global 4-component vector of int)

 0:55          'is2D' (uniform isampler2D)

 0:55          'c3D' (smooth in 3-component vector of float)

 0:55          'c1D' (smooth in float)

@@ -398,7 +398,7 @@
 0:56          'iv' (temp 4-component vector of int)

 0:57      move second child to first child (temp 4-component vector of int)

 0:57        'iv' (temp 4-component vector of int)

-0:57        Function Call: textureProjGrad(is21;vf3;vf2;vf2; (global 4-component vector of int)

+0:57        textureProjGrad (global 4-component vector of int)

 0:57          'is2D' (uniform isampler2D)

 0:57          'c3D' (smooth in 3-component vector of float)

 0:57          'c2D' (smooth in 2-component vector of float)

@@ -409,7 +409,7 @@
 0:58          'iv' (temp 4-component vector of int)

 0:59      move second child to first child (temp 4-component vector of int)

 0:59        'iv' (temp 4-component vector of int)

-0:59        Function Call: texture(is31;vf3;f1; (global 4-component vector of int)

+0:59        texture (global 4-component vector of int)

 0:59          'is3D' (uniform isampler3D)

 0:59          'c3D' (smooth in 3-component vector of float)

 0:59          Constant:

@@ -420,7 +420,7 @@
 0:60          'iv' (temp 4-component vector of int)

 0:61      move second child to first child (temp 4-component vector of int)

 0:61        'iv' (temp 4-component vector of int)

-0:61        Function Call: textureLod(isC1;vf3;f1; (global 4-component vector of int)

+0:61        textureLod (global 4-component vector of int)

 0:61          'isCube' (uniform isamplerCube)

 0:61          'c3D' (smooth in 3-component vector of float)

 0:61          'c1D' (smooth in float)

@@ -430,7 +430,7 @@
 0:62          'iv' (temp 4-component vector of int)

 0:63      move second child to first child (temp 4-component vector of int)

 0:63        'iv' (temp 4-component vector of int)

-0:63        Function Call: texelFetch(isA21;vi3;i1; (global 4-component vector of int)

+0:63        textureFetch (global 4-component vector of int)

 0:63          'is2DArray' (uniform isampler2DArray)

 0:63          'ic3D' (flat in 3-component vector of int)

 0:63          'ic1D' (flat in int)

@@ -440,7 +440,7 @@
 0:64          'iv' (temp 4-component vector of int)

 0:66      add second child into first child (temp 4-component vector of int)

 0:66        'iv' (temp 4-component vector of int)

-0:66        Function Call: texelFetch(is2M1;vi2;i1; (global 4-component vector of int)

+0:66        textureFetch (global 4-component vector of int)

 0:66          'is2Dms' (uniform isampler2DMS)

 0:66          'ic2D' (flat in 2-component vector of int)

 0:66          'ic1D' (flat in int)

@@ -450,18 +450,18 @@
 0:67          'iv' (temp 4-component vector of int)

 0:68      add second child into first child (temp 4-component vector of float)

 0:68        'v' (temp 4-component vector of float)

-0:68        Function Call: texelFetch(sB1;i1; (global 4-component vector of float)

+0:68        textureFetch (global 4-component vector of float)

 0:68          'sb' (uniform samplerBuffer)

 0:68          'ic1D' (flat in int)

 0:69      add second child into first child (temp 4-component vector of float)

 0:69        'v' (temp 4-component vector of float)

-0:69        Function Call: texelFetch(sR21;vi2; (global 4-component vector of float)

+0:69        textureFetch (global 4-component vector of float)

 0:69          'sr' (uniform sampler2DRect)

 0:69          'ic2D' (flat in 2-component vector of int)

 0:71      Sequence

 0:71        move second child to first child (temp 2-component vector of int)

 0:71          'iv2' (temp 2-component vector of int)

-0:71          Function Call: textureSize(sSC1;i1; (global 2-component vector of int)

+0:71          textureSize (global 2-component vector of int)

 0:71            'sCubeShadow' (uniform samplerCubeShadow)

 0:71            Constant:

 0:71              2 (const int)

diff --git a/Test/baseResults/pointCoord.frag.out b/Test/baseResults/pointCoord.frag.out
index 157eaa6..575b1aa 100644
--- a/Test/baseResults/pointCoord.frag.out
+++ b/Test/baseResults/pointCoord.frag.out
@@ -14,7 +14,7 @@
 0:9        true case

 0:10        move second child to first child (temp highp 4-component vector of float)

 0:10          'color' (temp highp 4-component vector of float)

-0:10          Function Call: texture2D(s21;vf2; (global lowp 4-component vector of float)

+0:10          texture (global lowp 4-component vector of float)

 0:10            'sampler' (uniform lowp sampler2D)

 0:10            'gl_PointCoord' (gl_PointCoord mediump 2-component vector of float PointCoord)

 0:9        false case

@@ -50,7 +50,7 @@
 0:9        true case

 0:10        move second child to first child (temp highp 4-component vector of float)

 0:10          'color' (temp highp 4-component vector of float)

-0:10          Function Call: texture2D(s21;vf2; (global lowp 4-component vector of float)

+0:10          texture (global lowp 4-component vector of float)

 0:10            'sampler' (uniform lowp sampler2D)

 0:10            'gl_PointCoord' (gl_PointCoord mediump 2-component vector of float PointCoord)

 0:9        false case

diff --git a/Test/baseResults/precision.frag.out b/Test/baseResults/precision.frag.out
index 7071c92..6733dee 100644
--- a/Test/baseResults/precision.frag.out
+++ b/Test/baseResults/precision.frag.out
@@ -99,17 +99,17 @@
 0:65                  'level1_high' (temp highp int)

 0:65            Constant:

 0:65              0 (const int)

-0:67      Function Call: texture2D(s21;vf2; (global lowp 4-component vector of float)

+0:67      texture (global lowp 4-component vector of float)

 0:67        'samplerLow' (uniform lowp sampler2D)

 0:67        Constant:

 0:67          0.100000

 0:67          0.200000

-0:68      Function Call: texture2D(s21;vf2; (global mediump 4-component vector of float)

+0:68      texture (global mediump 4-component vector of float)

 0:68        'samplerMed' (uniform mediump sampler2D)

 0:68        Constant:

 0:68          0.100000

 0:68          0.200000

-0:69      Function Call: texture2D(s21;vf2; (global highp 4-component vector of float)

+0:69      texture (global highp 4-component vector of float)

 0:69        'samplerHigh' (uniform highp sampler2D)

 0:69        Constant:

 0:69          0.100000

@@ -218,17 +218,17 @@
 0:65                  'level1_high' (temp highp int)

 0:65            Constant:

 0:65              0 (const int)

-0:67      Function Call: texture2D(s21;vf2; (global lowp 4-component vector of float)

+0:67      texture (global lowp 4-component vector of float)

 0:67        'samplerLow' (uniform lowp sampler2D)

 0:67        Constant:

 0:67          0.100000

 0:67          0.200000

-0:68      Function Call: texture2D(s21;vf2; (global mediump 4-component vector of float)

+0:68      texture (global mediump 4-component vector of float)

 0:68        'samplerMed' (uniform mediump sampler2D)

 0:68        Constant:

 0:68          0.100000

 0:68          0.200000

-0:69      Function Call: texture2D(s21;vf2; (global highp 4-component vector of float)

+0:69      texture (global highp 4-component vector of float)

 0:69        'samplerHigh' (uniform highp sampler2D)

 0:69        Constant:

 0:69          0.100000

diff --git a/Test/baseResults/precision.vert.out b/Test/baseResults/precision.vert.out
index 2c7e2cb..2b6373e 100644
--- a/Test/baseResults/precision.vert.out
+++ b/Test/baseResults/precision.vert.out
@@ -13,21 +13,21 @@
 0:20      Sequence

 0:20        move second child to first child (temp highp 4-component vector of float)

 0:20          't' (temp highp 4-component vector of float)

-0:20          Function Call: texture(s21;vf2; (global highp 4-component vector of float)

+0:20          texture (global highp 4-component vector of float)

 0:20            's2D' (uniform lowp sampler2D)

 0:20            Constant:

 0:20              0.100000

 0:20              0.200000

 0:21      add second child into first child (temp highp 4-component vector of float)

 0:21        't' (temp highp 4-component vector of float)

-0:21        Function Call: texture(s21;vf2; (global highp 4-component vector of float)

+0:21        texture (global highp 4-component vector of float)

 0:21          's2Dhigh' (uniform highp sampler2D)

 0:21          Constant:

 0:21            0.100000

 0:21            0.200000

 0:22      add second child into first child (temp highp 4-component vector of float)

 0:22        't' (temp highp 4-component vector of float)

-0:22        Function Call: texture(sAS21;vf4; (global highp float)

+0:22        texture (global highp float)

 0:22          's2dAS' (uniform mediump sampler2DArrayShadow)

 0:22          Constant:

 0:22            0.500000

@@ -61,21 +61,21 @@
 0:20      Sequence

 0:20        move second child to first child (temp highp 4-component vector of float)

 0:20          't' (temp highp 4-component vector of float)

-0:20          Function Call: texture(s21;vf2; (global highp 4-component vector of float)

+0:20          texture (global highp 4-component vector of float)

 0:20            's2D' (uniform lowp sampler2D)

 0:20            Constant:

 0:20              0.100000

 0:20              0.200000

 0:21      add second child into first child (temp highp 4-component vector of float)

 0:21        't' (temp highp 4-component vector of float)

-0:21        Function Call: texture(s21;vf2; (global highp 4-component vector of float)

+0:21        texture (global highp 4-component vector of float)

 0:21          's2Dhigh' (uniform highp sampler2D)

 0:21          Constant:

 0:21            0.100000

 0:21            0.200000

 0:22      add second child into first child (temp highp 4-component vector of float)

 0:22        't' (temp highp 4-component vector of float)

-0:22        Function Call: texture(sAS21;vf4; (global highp float)

+0:22        texture (global highp float)

 0:22          's2dAS' (uniform mediump sampler2DArrayShadow)

 0:22          Constant:

 0:22            0.500000

diff --git a/Test/baseResults/spv.atomic.comp.out b/Test/baseResults/spv.atomic.comp.out
index 4396dff..d8650e7 100755
--- a/Test/baseResults/spv.atomic.comp.out
+++ b/Test/baseResults/spv.atomic.comp.out
@@ -8,7 +8,7 @@
 TBD functionality: Is atomic_uint an opaque handle in the uniform storage class, or an addresses in the atomic storage class?

 // Module Version 99

 // Generated by (magic number): 51a00bb

-// Id's are bound by 77

+// Id's are bound by 75

 

                               Source ESSL 310

                               Capability Shader

@@ -19,23 +19,23 @@
                               Name 11  "func(au1;"

                               Name 10  "c"

                               Name 13  "atoms("

-                              Name 23  "counter"

-                              Name 24  "param"

-                              Name 27  "val"

-                              Name 31  "countArr"

-                              Name 41  "origi"

-                              Name 43  "atomi"

-                              Name 47  "origu"

-                              Name 49  "atomu"

-                              Name 51  "value"

-                              Name 74  "arrX"

-                              Name 75  "arrY"

-                              Name 76  "arrZ"

-                              Decorate 23(counter) Binding 0

-                              Decorate 31(countArr) Binding 0

-                              Decorate 74(arrX) NoStaticUse

-                              Decorate 75(arrY) NoStaticUse

-                              Decorate 76(arrZ) NoStaticUse

+                              Name 22  "counter"

+                              Name 23  "param"

+                              Name 26  "val"

+                              Name 30  "countArr"

+                              Name 39  "origi"

+                              Name 41  "atomi"

+                              Name 45  "origu"

+                              Name 47  "atomu"

+                              Name 49  "value"

+                              Name 72  "arrX"

+                              Name 73  "arrY"

+                              Name 74  "arrZ"

+                              Decorate 22(counter) Binding 0

+                              Decorate 30(countArr) Binding 0

+                              Decorate 72(arrX) NoStaticUse

+                              Decorate 73(arrY) NoStaticUse

+                              Decorate 74(arrZ) NoStaticUse

                2:             TypeVoid

                3:             TypeFunction 2

                7:             TypeInt 32 0

@@ -43,45 +43,44 @@
                9:             TypeFunction 7(int) 8(ptr)

               16:      7(int) Constant 1

               17:      7(int) Constant 0

-              21:      7(int) Constant 256

-              22:             TypePointer UniformConstant 7(int)

-     23(counter):     22(ptr) Variable UniformConstant

-              28:      7(int) Constant 4

-              29:             TypeArray 7(int) 28

-              30:             TypePointer UniformConstant 29

-    31(countArr):     30(ptr) Variable UniformConstant

-              32:             TypeInt 32 1

-              33:     32(int) Constant 2

-              40:             TypePointer Function 32(int)

-              42:             TypePointer WorkgroupLocal 32(int)

-       43(atomi):     42(ptr) Variable WorkgroupLocal

-              45:     32(int) Constant 3

-              48:             TypePointer WorkgroupLocal 7(int)

-       49(atomu):     48(ptr) Variable WorkgroupLocal

-       51(value):     22(ptr) Variable UniformConstant

-              55:      7(int) Constant 7

-              63:     32(int) Constant 7

-              69:      7(int) Constant 10

-              72:             TypeArray 32(int) 16

-              73:             TypePointer PrivateGlobal 72

-        74(arrX):     73(ptr) Variable PrivateGlobal

-        75(arrY):     73(ptr) Variable PrivateGlobal

-        76(arrZ):     73(ptr) Variable PrivateGlobal

+              20:      7(int) Constant 256

+              21:             TypePointer UniformConstant 7(int)

+     22(counter):     21(ptr) Variable UniformConstant

+              27:      7(int) Constant 4

+              28:             TypeArray 7(int) 27

+              29:             TypePointer UniformConstant 28

+    30(countArr):     29(ptr) Variable UniformConstant

+              31:             TypeInt 32 1

+              32:     31(int) Constant 2

+              38:             TypePointer Function 31(int)

+              40:             TypePointer WorkgroupLocal 31(int)

+       41(atomi):     40(ptr) Variable WorkgroupLocal

+              43:     31(int) Constant 3

+              46:             TypePointer WorkgroupLocal 7(int)

+       47(atomu):     46(ptr) Variable WorkgroupLocal

+       49(value):     21(ptr) Variable UniformConstant

+              53:      7(int) Constant 7

+              61:     31(int) Constant 7

+              67:      7(int) Constant 10

+              70:             TypeArray 31(int) 16

+              71:             TypePointer PrivateGlobal 70

+        72(arrX):     71(ptr) Variable PrivateGlobal

+        73(arrY):     71(ptr) Variable PrivateGlobal

+        74(arrZ):     71(ptr) Variable PrivateGlobal

          4(main):           2 Function None 3

                5:             Label

-       24(param):      8(ptr) Variable Function

-         27(val):      8(ptr) Variable Function

-                              MemoryBarrier 16 21

-              25:      7(int) Load 23(counter)

-                              Store 24(param) 25

-              26:      7(int) FunctionCall 11(func(au1;) 24(param)

-              34:     22(ptr) AccessChain 31(countArr) 33

-              35:      7(int) Load 34

-              36:      7(int) AtomicLoad 35 16 17

-              37:      7(int) Load 34

-                              Store 27(val) 37

-              38:      7(int) Load 23(counter)

-              39:      7(int) AtomicIDecrement 38 16 17

+       23(param):      8(ptr) Variable Function

+         26(val):      8(ptr) Variable Function

+                              MemoryBarrier 16 20

+              24:      7(int) Load 22(counter)

+                              Store 23(param) 24

+              25:      7(int) FunctionCall 11(func(au1;) 23(param)

+              33:     21(ptr) AccessChain 30(countArr) 32

+              34:      7(int) Load 33

+              35:      7(int) AtomicLoad 34 16 17

+                              Store 26(val) 35

+              36:      7(int) Load 22(counter)

+              37:      7(int) AtomicIDecrement 36 16 17

                               Branch 6

                6:             Label

                               Return

@@ -91,40 +90,39 @@
               12:             Label

               15:      7(int) Load 10(c)

               18:      7(int) AtomicIIncrement 15 16 17

-              19:      7(int) Load 10(c)

-                              ReturnValue 19

+                              ReturnValue 18

                               FunctionEnd

       13(atoms():           2 Function None 3

               14:             Label

-       41(origi):     40(ptr) Variable Function

-       47(origu):      8(ptr) Variable Function

-              44:     32(int) Load 43(atomi)

-              46:     32(int) AtomicIAdd 44 16 17 45

-                              Store 41(origi) 46

-              50:      7(int) Load 49(atomu)

-              52:      7(int) Load 51(value)

-              53:      7(int) AtomicAnd 50 16 17 52

-                              Store 47(origu) 53

-              54:      7(int) Load 49(atomu)

-              56:      7(int) AtomicOr 54 16 17 55

-                              Store 47(origu) 56

-              57:      7(int) Load 49(atomu)

-              58:      7(int) AtomicXor 57 16 17 55

-                              Store 47(origu) 58

-              59:      7(int) Load 49(atomu)

-              60:      7(int) Load 51(value)

-              61:      7(int) AtomicSMin 59 16 17 60

-                              Store 47(origu) 61

-              62:     32(int) Load 43(atomi)

-              64:     32(int) AtomicSMax 62 16 17 63

-                              Store 41(origi) 64

-              65:     32(int) Load 43(atomi)

-              66:     32(int) Load 41(origi)

-              67:     32(int) AtomicExchange 65 16 17 66

-                              Store 41(origi) 67

-              68:      7(int) Load 49(atomu)

-              70:      7(int) Load 51(value)

-              71:      7(int) AtomicCompareExchange 68 16 17 69 70

-                              Store 47(origu) 71

+       39(origi):     38(ptr) Variable Function

+       45(origu):      8(ptr) Variable Function

+              42:     31(int) Load 41(atomi)

+              44:     31(int) AtomicIAdd 42 16 17 43

+                              Store 39(origi) 44

+              48:      7(int) Load 47(atomu)

+              50:      7(int) Load 49(value)

+              51:      7(int) AtomicAnd 48 16 17 50

+                              Store 45(origu) 51

+              52:      7(int) Load 47(atomu)

+              54:      7(int) AtomicOr 52 16 17 53

+                              Store 45(origu) 54

+              55:      7(int) Load 47(atomu)

+              56:      7(int) AtomicXor 55 16 17 53

+                              Store 45(origu) 56

+              57:      7(int) Load 47(atomu)

+              58:      7(int) Load 49(value)

+              59:      7(int) AtomicSMin 57 16 17 58

+                              Store 45(origu) 59

+              60:     31(int) Load 41(atomi)

+              62:     31(int) AtomicSMax 60 16 17 61

+                              Store 39(origi) 62

+              63:     31(int) Load 41(atomi)

+              64:     31(int) Load 39(origi)

+              65:     31(int) AtomicExchange 63 16 17 64

+                              Store 39(origi) 65

+              66:      7(int) Load 47(atomu)

+              68:      7(int) Load 49(value)

+              69:      7(int) AtomicCompareExchange 66 16 17 67 68

+                              Store 45(origu) 69

                               Return

                               FunctionEnd

diff --git a/Test/baseResults/spv.test.vert.out b/Test/baseResults/spv.test.vert.out
index 465b63f..69f945f 100644
--- a/Test/baseResults/spv.test.vert.out
+++ b/Test/baseResults/spv.test.vert.out
@@ -5,4 +5,54 @@
 Linked vertex stage:

 

 

-Missing functionality: ftransform()

+// Module Version 99

+// Generated by (magic number): 51a00bb

+// Id's are bound by 28

+

+                              Source GLSL 130

+                              Capability Shader

+               1:             ExtInstImport  "GLSL.std.450"

+                              MemoryModel Logical GLSL450

+                              EntryPoint Vertex 4  "main"

+                              Name 4  "main"

+                              Name 10  "uv"

+                              Name 12  "uv_in"

+                              Name 16  "gl_Position"

+                              Name 19  "transform"

+                              Name 22  "position"

+                              Name 27  "gl_VertexID"

+                              Decorate 10(uv) Smooth

+                              Decorate 16(gl_Position) BuiltIn Position

+                              Decorate 27(gl_VertexID) BuiltIn VertexId

+                              Decorate 27(gl_VertexID) NoStaticUse

+               2:             TypeVoid

+               3:             TypeFunction 2

+               7:             TypeFloat 32

+               8:             TypeVector 7(float) 2

+               9:             TypePointer Output 8(fvec2)

+          10(uv):      9(ptr) Variable Output

+              11:             TypePointer Input 8(fvec2)

+       12(uv_in):     11(ptr) Variable Input

+              14:             TypeVector 7(float) 4

+              15:             TypePointer Output 14(fvec4)

+ 16(gl_Position):     15(ptr) Variable Output

+              17:             TypeMatrix 14(fvec4) 4

+              18:             TypePointer UniformConstant 17

+   19(transform):     18(ptr) Variable UniformConstant

+              21:             TypePointer Input 14(fvec4)

+    22(position):     21(ptr) Variable Input

+              25:             TypeInt 32 1

+              26:             TypePointer Input 25(int)

+ 27(gl_VertexID):     26(ptr) Variable Input

+         4(main):           2 Function None 3

+               5:             Label

+              13:    8(fvec2) Load 12(uv_in)

+                              Store 10(uv) 13

+              20:          17 Load 19(transform)

+              23:   14(fvec4) Load 22(position)

+              24:   14(fvec4) MatrixTimesVector 20 23

+                              Store 16(gl_Position) 24

+                              Branch 6

+               6:             Label

+                              Return

+                              FunctionEnd

diff --git a/Test/baseResults/structAssignment.frag.out b/Test/baseResults/structAssignment.frag.out
index 5371c93..8a6b585 100644
--- a/Test/baseResults/structAssignment.frag.out
+++ b/Test/baseResults/structAssignment.frag.out
@@ -39,7 +39,7 @@
 0:38                2 (const int)

 0:38            Constant:

 0:38              1 (const int)

-0:38          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:38          texture (global 4-component vector of float)

 0:38            'sampler' (uniform sampler2D)

 0:38            'coord' (smooth in 2-component vector of float)

 0:?   Linker Objects

@@ -91,7 +91,7 @@
 0:38                2 (const int)

 0:38            Constant:

 0:38              1 (const int)

-0:38          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:38          texture (global 4-component vector of float)

 0:38            'sampler' (uniform sampler2D)

 0:38            'coord' (smooth in 2-component vector of float)

 0:?   Linker Objects

diff --git a/Test/baseResults/structDeref.frag.out b/Test/baseResults/structDeref.frag.out
index 11109be..ae52e25 100644
--- a/Test/baseResults/structDeref.frag.out
+++ b/Test/baseResults/structDeref.frag.out
@@ -158,7 +158,7 @@
 0:70                  2 (const int)

 0:70              Constant:

 0:70                1 (const int)

-0:70          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:70          texture (global 4-component vector of float)

 0:70            'sampler' (uniform sampler2D)

 0:70            'coord' (smooth in 2-component vector of float)

 0:?   Linker Objects

@@ -331,7 +331,7 @@
 0:70                  2 (const int)

 0:70              Constant:

 0:70                1 (const int)

-0:70          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:70          texture (global 4-component vector of float)

 0:70            'sampler' (uniform sampler2D)

 0:70            'coord' (smooth in 2-component vector of float)

 0:?   Linker Objects

diff --git a/Test/baseResults/structure.frag.out b/Test/baseResults/structure.frag.out
index b37932d..d061653 100644
--- a/Test/baseResults/structure.frag.out
+++ b/Test/baseResults/structure.frag.out
@@ -71,7 +71,7 @@
 0:29        'gl_FragColor' (fragColor 4-component vector of float FragColor)

 0:29        vector-scale (temp 4-component vector of float)

 0:29          'scale' (temp float)

-0:29          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:29          texture (global 4-component vector of float)

 0:29            'sampler' (uniform sampler2D)

 0:29            'coord' (smooth in 2-component vector of float)

 0:?   Linker Objects

@@ -154,7 +154,7 @@
 0:29        'gl_FragColor' (fragColor 4-component vector of float FragColor)

 0:29        vector-scale (temp 4-component vector of float)

 0:29          'scale' (temp float)

-0:29          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:29          texture (global 4-component vector of float)

 0:29            'sampler' (uniform sampler2D)

 0:29            'coord' (smooth in 2-component vector of float)

 0:?   Linker Objects

diff --git a/Test/baseResults/test.frag.out b/Test/baseResults/test.frag.out
index da62bea..f98d0dc 100644
--- a/Test/baseResults/test.frag.out
+++ b/Test/baseResults/test.frag.out
@@ -13,7 +13,7 @@
 0:17        move second child to first child (temp 4-component vector of float)

 0:17          'v' (temp 4-component vector of float)

 0:17          vector swizzle (temp 4-component vector of float)

-0:17            Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:17            texture (global 4-component vector of float)

 0:17              'texSampler2D' (uniform sampler2D)

 0:17              divide (temp 2-component vector of float)

 0:17                add (temp 2-component vector of float)

@@ -33,7 +33,7 @@
 0:19        move second child to first child (temp 4-component vector of float)

 0:19          'w' (temp 4-component vector of float)

 0:19          add (temp 4-component vector of float)

-0:19            Function Call: texture3D(s31;vf3; (global 4-component vector of float)

+0:19            texture (global 4-component vector of float)

 0:19              'texSampler3D' (uniform sampler3D)

 0:19              'coords' (smooth in 3-component vector of float)

 0:19            'v' (temp 4-component vector of float)

@@ -72,7 +72,7 @@
 0:17        move second child to first child (temp 4-component vector of float)

 0:17          'v' (temp 4-component vector of float)

 0:17          vector swizzle (temp 4-component vector of float)

-0:17            Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:17            texture (global 4-component vector of float)

 0:17              'texSampler2D' (uniform sampler2D)

 0:17              divide (temp 2-component vector of float)

 0:17                add (temp 2-component vector of float)

@@ -92,7 +92,7 @@
 0:19        move second child to first child (temp 4-component vector of float)

 0:19          'w' (temp 4-component vector of float)

 0:19          add (temp 4-component vector of float)

-0:19            Function Call: texture3D(s31;vf3; (global 4-component vector of float)

+0:19            texture (global 4-component vector of float)

 0:19              'texSampler3D' (uniform sampler3D)

 0:19              'coords' (smooth in 3-component vector of float)

 0:19            'v' (temp 4-component vector of float)

diff --git a/Test/baseResults/texture.frag.out b/Test/baseResults/texture.frag.out
index 6e40f36..d0062e9 100644
--- a/Test/baseResults/texture.frag.out
+++ b/Test/baseResults/texture.frag.out
@@ -57,133 +57,133 @@
 0:26            0.000000

 0:28      add second child into first child (temp 4-component vector of float)

 0:28        'color' (temp 4-component vector of float)

-0:28        Function Call: texture1D(s11;f1; (global 4-component vector of float)

+0:28        texture (global 4-component vector of float)

 0:28          'texSampler1D' (uniform sampler1D)

 0:28          'coords1D' (temp float)

 0:29      add second child into first child (temp 4-component vector of float)

 0:29        'color' (temp 4-component vector of float)

-0:29        Function Call: texture1D(s11;f1;f1; (global 4-component vector of float)

+0:29        texture (global 4-component vector of float)

 0:29          'texSampler1D' (uniform sampler1D)

 0:29          'coords1D' (temp float)

 0:29          'bias' (temp float)

 0:30      add second child into first child (temp 4-component vector of float)

 0:30        'color' (temp 4-component vector of float)

-0:30        Function Call: texture1DProj(s11;vf2; (global 4-component vector of float)

+0:30        textureProj (global 4-component vector of float)

 0:30          'texSampler1D' (uniform sampler1D)

 0:30          'coords2D' (smooth in 2-component vector of float)

 0:31      add second child into first child (temp 4-component vector of float)

 0:31        'color' (temp 4-component vector of float)

-0:31        Function Call: texture1DProj(s11;vf4; (global 4-component vector of float)

+0:31        textureProj (global 4-component vector of float)

 0:31          'texSampler1D' (uniform sampler1D)

 0:31          'coords4D' (temp 4-component vector of float)

 0:32      add second child into first child (temp 4-component vector of float)

 0:32        'color' (temp 4-component vector of float)

-0:32        Function Call: texture1DProj(s11;vf2;f1; (global 4-component vector of float)

+0:32        textureProj (global 4-component vector of float)

 0:32          'texSampler1D' (uniform sampler1D)

 0:32          'coords2D' (smooth in 2-component vector of float)

 0:32          'bias' (temp float)

 0:33      add second child into first child (temp 4-component vector of float)

 0:33        'color' (temp 4-component vector of float)

-0:33        Function Call: texture1DProj(s11;vf4;f1; (global 4-component vector of float)

+0:33        textureProj (global 4-component vector of float)

 0:33          'texSampler1D' (uniform sampler1D)

 0:33          'coords4D' (temp 4-component vector of float)

 0:33          'bias' (temp float)

 0:35      add second child into first child (temp 4-component vector of float)

 0:35        'color' (temp 4-component vector of float)

-0:35        Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:35        texture (global 4-component vector of float)

 0:35          'texSampler2D' (uniform sampler2D)

 0:35          'coords2D' (smooth in 2-component vector of float)

 0:36      add second child into first child (temp 4-component vector of float)

 0:36        'color' (temp 4-component vector of float)

-0:36        Function Call: texture2D(s21;vf2;f1; (global 4-component vector of float)

+0:36        texture (global 4-component vector of float)

 0:36          'texSampler2D' (uniform sampler2D)

 0:36          'coords2D' (smooth in 2-component vector of float)

 0:36          'bias' (temp float)

 0:37      add second child into first child (temp 4-component vector of float)

 0:37        'color' (temp 4-component vector of float)

-0:37        Function Call: texture2DProj(s21;vf3; (global 4-component vector of float)

+0:37        textureProj (global 4-component vector of float)

 0:37          'texSampler2D' (uniform sampler2D)

 0:37          'coords3D' (temp 3-component vector of float)

 0:38      add second child into first child (temp 4-component vector of float)

 0:38        'color' (temp 4-component vector of float)

-0:38        Function Call: texture2DProj(s21;vf4;f1; (global 4-component vector of float)

+0:38        textureProj (global 4-component vector of float)

 0:38          'texSampler2D' (uniform sampler2D)

 0:38          'coords4D' (temp 4-component vector of float)

 0:38          'bias' (temp float)

 0:40      add second child into first child (temp 4-component vector of float)

 0:40        'color' (temp 4-component vector of float)

-0:40        Function Call: texture3D(s31;vf3; (global 4-component vector of float)

+0:40        texture (global 4-component vector of float)

 0:40          'texSampler3D' (uniform sampler3D)

 0:40          'coords3D' (temp 3-component vector of float)

 0:41      add second child into first child (temp 4-component vector of float)

 0:41        'color' (temp 4-component vector of float)

-0:41        Function Call: texture3D(s31;vf3;f1; (global 4-component vector of float)

+0:41        texture (global 4-component vector of float)

 0:41          'texSampler3D' (uniform sampler3D)

 0:41          'coords3D' (temp 3-component vector of float)

 0:41          'bias' (temp float)

 0:42      add second child into first child (temp 4-component vector of float)

 0:42        'color' (temp 4-component vector of float)

-0:42        Function Call: texture3DProj(s31;vf4; (global 4-component vector of float)

+0:42        textureProj (global 4-component vector of float)

 0:42          'texSampler3D' (uniform sampler3D)

 0:42          'coords4D' (temp 4-component vector of float)

 0:43      add second child into first child (temp 4-component vector of float)

 0:43        'color' (temp 4-component vector of float)

-0:43        Function Call: texture3DProj(s31;vf4;f1; (global 4-component vector of float)

+0:43        textureProj (global 4-component vector of float)

 0:43          'texSampler3D' (uniform sampler3D)

 0:43          'coords4D' (temp 4-component vector of float)

 0:43          'bias' (temp float)

 0:45      add second child into first child (temp 4-component vector of float)

 0:45        'color' (temp 4-component vector of float)

-0:45        Function Call: textureCube(sC1;vf3; (global 4-component vector of float)

+0:45        texture (global 4-component vector of float)

 0:45          'texSamplerCube' (uniform samplerCube)

 0:45          'coords3D' (temp 3-component vector of float)

 0:46      add second child into first child (temp 4-component vector of float)

 0:46        'color' (temp 4-component vector of float)

-0:46        Function Call: textureCube(sC1;vf3;f1; (global 4-component vector of float)

+0:46        texture (global 4-component vector of float)

 0:46          'texSamplerCube' (uniform samplerCube)

 0:46          'coords3D' (temp 3-component vector of float)

 0:46          'bias' (temp float)

 0:48      add second child into first child (temp 4-component vector of float)

 0:48        'color' (temp 4-component vector of float)

-0:48        Function Call: shadow1D(sS11;vf3; (global 4-component vector of float)

+0:48        texture (global 4-component vector of float)

 0:48          'shadowSampler1D' (uniform sampler1DShadow)

 0:48          'coords3D' (temp 3-component vector of float)

 0:49      add second child into first child (temp 4-component vector of float)

 0:49        'color' (temp 4-component vector of float)

-0:49        Function Call: shadow1D(sS11;vf3;f1; (global 4-component vector of float)

+0:49        texture (global 4-component vector of float)

 0:49          'shadowSampler1D' (uniform sampler1DShadow)

 0:49          'coords3D' (temp 3-component vector of float)

 0:49          'bias' (temp float)

 0:50      add second child into first child (temp 4-component vector of float)

 0:50        'color' (temp 4-component vector of float)

-0:50        Function Call: shadow2D(sS21;vf3; (global 4-component vector of float)

+0:50        texture (global 4-component vector of float)

 0:50          'shadowSampler2D' (uniform sampler2DShadow)

 0:50          'coords3D' (temp 3-component vector of float)

 0:51      add second child into first child (temp 4-component vector of float)

 0:51        'color' (temp 4-component vector of float)

-0:51        Function Call: shadow2D(sS21;vf3;f1; (global 4-component vector of float)

+0:51        texture (global 4-component vector of float)

 0:51          'shadowSampler2D' (uniform sampler2DShadow)

 0:51          'coords3D' (temp 3-component vector of float)

 0:51          'bias' (temp float)

 0:52      add second child into first child (temp 4-component vector of float)

 0:52        'color' (temp 4-component vector of float)

-0:52        Function Call: shadow1DProj(sS11;vf4; (global 4-component vector of float)

+0:52        textureProj (global 4-component vector of float)

 0:52          'shadowSampler1D' (uniform sampler1DShadow)

 0:52          'coords4D' (temp 4-component vector of float)

 0:53      add second child into first child (temp 4-component vector of float)

 0:53        'color' (temp 4-component vector of float)

-0:53        Function Call: shadow1DProj(sS11;vf4;f1; (global 4-component vector of float)

+0:53        textureProj (global 4-component vector of float)

 0:53          'shadowSampler1D' (uniform sampler1DShadow)

 0:53          'coords4D' (temp 4-component vector of float)

 0:53          'bias' (temp float)

 0:54      add second child into first child (temp 4-component vector of float)

 0:54        'color' (temp 4-component vector of float)

-0:54        Function Call: shadow2DProj(sS21;vf4; (global 4-component vector of float)

+0:54        textureProj (global 4-component vector of float)

 0:54          'shadowSampler2D' (uniform sampler2DShadow)

 0:54          'coords4D' (temp 4-component vector of float)

 0:55      add second child into first child (temp 4-component vector of float)

 0:55        'color' (temp 4-component vector of float)

-0:55        Function Call: shadow2DProj(sS21;vf4;f1; (global 4-component vector of float)

+0:55        textureProj (global 4-component vector of float)

 0:55          'shadowSampler2D' (uniform sampler2DShadow)

 0:55          'coords4D' (temp 4-component vector of float)

 0:55          'bias' (temp float)

@@ -200,7 +200,7 @@
 0:58            1 (const int)

 0:60      add second child into first child (temp 4-component vector of float)

 0:60        'color' (temp 4-component vector of float)

-0:60        Function Call: texelFetch(s21;vi2;i1; (global 4-component vector of float)

+0:60        textureFetch (global 4-component vector of float)

 0:60          'texSampler2D' (uniform sampler2D)

 0:60          'iCoords2D' (temp 2-component vector of int)

 0:60          'iLod' (temp int)

@@ -216,14 +216,14 @@
 0:63            'coords2D' (smooth in 2-component vector of float)

 0:66      add second child into first child (temp 4-component vector of float)

 0:66        'color' (temp 4-component vector of float)

-0:66        Function Call: textureGrad(s21;vf2;vf2;vf2; (global 4-component vector of float)

+0:66        textureGrad (global 4-component vector of float)

 0:66          'texSampler2D' (uniform sampler2D)

 0:66          'coords2D' (smooth in 2-component vector of float)

 0:66          'gradX' (temp 2-component vector of float)

 0:66          'gradY' (temp 2-component vector of float)

 0:67      add second child into first child (temp 4-component vector of float)

 0:67        'color' (temp 4-component vector of float)

-0:67        Function Call: textureProjGrad(s21;vf3;vf2;vf2; (global 4-component vector of float)

+0:67        textureProjGrad (global 4-component vector of float)

 0:67          'texSampler2D' (uniform sampler2D)

 0:67          Construct vec3 (temp 3-component vector of float)

 0:67            'coords2D' (smooth in 2-component vector of float)

@@ -232,7 +232,7 @@
 0:67          'gradY' (temp 2-component vector of float)

 0:68      add second child into first child (temp 4-component vector of float)

 0:68        'color' (temp 4-component vector of float)

-0:68        Function Call: textureGradOffset(s21;vf2;vf2;vf2;vi2; (global 4-component vector of float)

+0:68        textureGradOffset (global 4-component vector of float)

 0:68          'texSampler2D' (uniform sampler2D)

 0:68          'coords2D' (smooth in 2-component vector of float)

 0:68          'gradX' (temp 2-component vector of float)

@@ -242,7 +242,7 @@
 0:68            -7 (const int)

 0:69      add second child into first child (temp 4-component vector of float)

 0:69        'color' (temp 4-component vector of float)

-0:69        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (global 4-component vector of float)

+0:69        textureProjGradOffset (global 4-component vector of float)

 0:69          'texSampler2D' (uniform sampler2D)

 0:69          'coords3D' (temp 3-component vector of float)

 0:69          'gradX' (temp 2-component vector of float)

@@ -252,7 +252,7 @@
 0:69            -7 (const int)

 0:70      add second child into first child (temp 4-component vector of float)

 0:70        'color' (temp 4-component vector of float)

-0:70        Function Call: textureGrad(sS21;vf3;vf2;vf2; (global float)

+0:70        textureGrad (global float)

 0:70          'shadowSampler2D' (uniform sampler2DShadow)

 0:70          Construct vec3 (temp 3-component vector of float)

 0:70            'coords2D' (smooth in 2-component vector of float)

@@ -339,133 +339,133 @@
 0:26            0.000000

 0:28      add second child into first child (temp 4-component vector of float)

 0:28        'color' (temp 4-component vector of float)

-0:28        Function Call: texture1D(s11;f1; (global 4-component vector of float)

+0:28        texture (global 4-component vector of float)

 0:28          'texSampler1D' (uniform sampler1D)

 0:28          'coords1D' (temp float)

 0:29      add second child into first child (temp 4-component vector of float)

 0:29        'color' (temp 4-component vector of float)

-0:29        Function Call: texture1D(s11;f1;f1; (global 4-component vector of float)

+0:29        texture (global 4-component vector of float)

 0:29          'texSampler1D' (uniform sampler1D)

 0:29          'coords1D' (temp float)

 0:29          'bias' (temp float)

 0:30      add second child into first child (temp 4-component vector of float)

 0:30        'color' (temp 4-component vector of float)

-0:30        Function Call: texture1DProj(s11;vf2; (global 4-component vector of float)

+0:30        textureProj (global 4-component vector of float)

 0:30          'texSampler1D' (uniform sampler1D)

 0:30          'coords2D' (smooth in 2-component vector of float)

 0:31      add second child into first child (temp 4-component vector of float)

 0:31        'color' (temp 4-component vector of float)

-0:31        Function Call: texture1DProj(s11;vf4; (global 4-component vector of float)

+0:31        textureProj (global 4-component vector of float)

 0:31          'texSampler1D' (uniform sampler1D)

 0:31          'coords4D' (temp 4-component vector of float)

 0:32      add second child into first child (temp 4-component vector of float)

 0:32        'color' (temp 4-component vector of float)

-0:32        Function Call: texture1DProj(s11;vf2;f1; (global 4-component vector of float)

+0:32        textureProj (global 4-component vector of float)

 0:32          'texSampler1D' (uniform sampler1D)

 0:32          'coords2D' (smooth in 2-component vector of float)

 0:32          'bias' (temp float)

 0:33      add second child into first child (temp 4-component vector of float)

 0:33        'color' (temp 4-component vector of float)

-0:33        Function Call: texture1DProj(s11;vf4;f1; (global 4-component vector of float)

+0:33        textureProj (global 4-component vector of float)

 0:33          'texSampler1D' (uniform sampler1D)

 0:33          'coords4D' (temp 4-component vector of float)

 0:33          'bias' (temp float)

 0:35      add second child into first child (temp 4-component vector of float)

 0:35        'color' (temp 4-component vector of float)

-0:35        Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:35        texture (global 4-component vector of float)

 0:35          'texSampler2D' (uniform sampler2D)

 0:35          'coords2D' (smooth in 2-component vector of float)

 0:36      add second child into first child (temp 4-component vector of float)

 0:36        'color' (temp 4-component vector of float)

-0:36        Function Call: texture2D(s21;vf2;f1; (global 4-component vector of float)

+0:36        texture (global 4-component vector of float)

 0:36          'texSampler2D' (uniform sampler2D)

 0:36          'coords2D' (smooth in 2-component vector of float)

 0:36          'bias' (temp float)

 0:37      add second child into first child (temp 4-component vector of float)

 0:37        'color' (temp 4-component vector of float)

-0:37        Function Call: texture2DProj(s21;vf3; (global 4-component vector of float)

+0:37        textureProj (global 4-component vector of float)

 0:37          'texSampler2D' (uniform sampler2D)

 0:37          'coords3D' (temp 3-component vector of float)

 0:38      add second child into first child (temp 4-component vector of float)

 0:38        'color' (temp 4-component vector of float)

-0:38        Function Call: texture2DProj(s21;vf4;f1; (global 4-component vector of float)

+0:38        textureProj (global 4-component vector of float)

 0:38          'texSampler2D' (uniform sampler2D)

 0:38          'coords4D' (temp 4-component vector of float)

 0:38          'bias' (temp float)

 0:40      add second child into first child (temp 4-component vector of float)

 0:40        'color' (temp 4-component vector of float)

-0:40        Function Call: texture3D(s31;vf3; (global 4-component vector of float)

+0:40        texture (global 4-component vector of float)

 0:40          'texSampler3D' (uniform sampler3D)

 0:40          'coords3D' (temp 3-component vector of float)

 0:41      add second child into first child (temp 4-component vector of float)

 0:41        'color' (temp 4-component vector of float)

-0:41        Function Call: texture3D(s31;vf3;f1; (global 4-component vector of float)

+0:41        texture (global 4-component vector of float)

 0:41          'texSampler3D' (uniform sampler3D)

 0:41          'coords3D' (temp 3-component vector of float)

 0:41          'bias' (temp float)

 0:42      add second child into first child (temp 4-component vector of float)

 0:42        'color' (temp 4-component vector of float)

-0:42        Function Call: texture3DProj(s31;vf4; (global 4-component vector of float)

+0:42        textureProj (global 4-component vector of float)

 0:42          'texSampler3D' (uniform sampler3D)

 0:42          'coords4D' (temp 4-component vector of float)

 0:43      add second child into first child (temp 4-component vector of float)

 0:43        'color' (temp 4-component vector of float)

-0:43        Function Call: texture3DProj(s31;vf4;f1; (global 4-component vector of float)

+0:43        textureProj (global 4-component vector of float)

 0:43          'texSampler3D' (uniform sampler3D)

 0:43          'coords4D' (temp 4-component vector of float)

 0:43          'bias' (temp float)

 0:45      add second child into first child (temp 4-component vector of float)

 0:45        'color' (temp 4-component vector of float)

-0:45        Function Call: textureCube(sC1;vf3; (global 4-component vector of float)

+0:45        texture (global 4-component vector of float)

 0:45          'texSamplerCube' (uniform samplerCube)

 0:45          'coords3D' (temp 3-component vector of float)

 0:46      add second child into first child (temp 4-component vector of float)

 0:46        'color' (temp 4-component vector of float)

-0:46        Function Call: textureCube(sC1;vf3;f1; (global 4-component vector of float)

+0:46        texture (global 4-component vector of float)

 0:46          'texSamplerCube' (uniform samplerCube)

 0:46          'coords3D' (temp 3-component vector of float)

 0:46          'bias' (temp float)

 0:48      add second child into first child (temp 4-component vector of float)

 0:48        'color' (temp 4-component vector of float)

-0:48        Function Call: shadow1D(sS11;vf3; (global 4-component vector of float)

+0:48        texture (global 4-component vector of float)

 0:48          'shadowSampler1D' (uniform sampler1DShadow)

 0:48          'coords3D' (temp 3-component vector of float)

 0:49      add second child into first child (temp 4-component vector of float)

 0:49        'color' (temp 4-component vector of float)

-0:49        Function Call: shadow1D(sS11;vf3;f1; (global 4-component vector of float)

+0:49        texture (global 4-component vector of float)

 0:49          'shadowSampler1D' (uniform sampler1DShadow)

 0:49          'coords3D' (temp 3-component vector of float)

 0:49          'bias' (temp float)

 0:50      add second child into first child (temp 4-component vector of float)

 0:50        'color' (temp 4-component vector of float)

-0:50        Function Call: shadow2D(sS21;vf3; (global 4-component vector of float)

+0:50        texture (global 4-component vector of float)

 0:50          'shadowSampler2D' (uniform sampler2DShadow)

 0:50          'coords3D' (temp 3-component vector of float)

 0:51      add second child into first child (temp 4-component vector of float)

 0:51        'color' (temp 4-component vector of float)

-0:51        Function Call: shadow2D(sS21;vf3;f1; (global 4-component vector of float)

+0:51        texture (global 4-component vector of float)

 0:51          'shadowSampler2D' (uniform sampler2DShadow)

 0:51          'coords3D' (temp 3-component vector of float)

 0:51          'bias' (temp float)

 0:52      add second child into first child (temp 4-component vector of float)

 0:52        'color' (temp 4-component vector of float)

-0:52        Function Call: shadow1DProj(sS11;vf4; (global 4-component vector of float)

+0:52        textureProj (global 4-component vector of float)

 0:52          'shadowSampler1D' (uniform sampler1DShadow)

 0:52          'coords4D' (temp 4-component vector of float)

 0:53      add second child into first child (temp 4-component vector of float)

 0:53        'color' (temp 4-component vector of float)

-0:53        Function Call: shadow1DProj(sS11;vf4;f1; (global 4-component vector of float)

+0:53        textureProj (global 4-component vector of float)

 0:53          'shadowSampler1D' (uniform sampler1DShadow)

 0:53          'coords4D' (temp 4-component vector of float)

 0:53          'bias' (temp float)

 0:54      add second child into first child (temp 4-component vector of float)

 0:54        'color' (temp 4-component vector of float)

-0:54        Function Call: shadow2DProj(sS21;vf4; (global 4-component vector of float)

+0:54        textureProj (global 4-component vector of float)

 0:54          'shadowSampler2D' (uniform sampler2DShadow)

 0:54          'coords4D' (temp 4-component vector of float)

 0:55      add second child into first child (temp 4-component vector of float)

 0:55        'color' (temp 4-component vector of float)

-0:55        Function Call: shadow2DProj(sS21;vf4;f1; (global 4-component vector of float)

+0:55        textureProj (global 4-component vector of float)

 0:55          'shadowSampler2D' (uniform sampler2DShadow)

 0:55          'coords4D' (temp 4-component vector of float)

 0:55          'bias' (temp float)

@@ -482,7 +482,7 @@
 0:58            1 (const int)

 0:60      add second child into first child (temp 4-component vector of float)

 0:60        'color' (temp 4-component vector of float)

-0:60        Function Call: texelFetch(s21;vi2;i1; (global 4-component vector of float)

+0:60        textureFetch (global 4-component vector of float)

 0:60          'texSampler2D' (uniform sampler2D)

 0:60          'iCoords2D' (temp 2-component vector of int)

 0:60          'iLod' (temp int)

@@ -498,14 +498,14 @@
 0:63            'coords2D' (smooth in 2-component vector of float)

 0:66      add second child into first child (temp 4-component vector of float)

 0:66        'color' (temp 4-component vector of float)

-0:66        Function Call: textureGrad(s21;vf2;vf2;vf2; (global 4-component vector of float)

+0:66        textureGrad (global 4-component vector of float)

 0:66          'texSampler2D' (uniform sampler2D)

 0:66          'coords2D' (smooth in 2-component vector of float)

 0:66          'gradX' (temp 2-component vector of float)

 0:66          'gradY' (temp 2-component vector of float)

 0:67      add second child into first child (temp 4-component vector of float)

 0:67        'color' (temp 4-component vector of float)

-0:67        Function Call: textureProjGrad(s21;vf3;vf2;vf2; (global 4-component vector of float)

+0:67        textureProjGrad (global 4-component vector of float)

 0:67          'texSampler2D' (uniform sampler2D)

 0:67          Construct vec3 (temp 3-component vector of float)

 0:67            'coords2D' (smooth in 2-component vector of float)

@@ -514,7 +514,7 @@
 0:67          'gradY' (temp 2-component vector of float)

 0:68      add second child into first child (temp 4-component vector of float)

 0:68        'color' (temp 4-component vector of float)

-0:68        Function Call: textureGradOffset(s21;vf2;vf2;vf2;vi2; (global 4-component vector of float)

+0:68        textureGradOffset (global 4-component vector of float)

 0:68          'texSampler2D' (uniform sampler2D)

 0:68          'coords2D' (smooth in 2-component vector of float)

 0:68          'gradX' (temp 2-component vector of float)

@@ -524,7 +524,7 @@
 0:68            -7 (const int)

 0:69      add second child into first child (temp 4-component vector of float)

 0:69        'color' (temp 4-component vector of float)

-0:69        Function Call: textureProjGradOffset(s21;vf3;vf2;vf2;vi2; (global 4-component vector of float)

+0:69        textureProjGradOffset (global 4-component vector of float)

 0:69          'texSampler2D' (uniform sampler2D)

 0:69          'coords3D' (temp 3-component vector of float)

 0:69          'gradX' (temp 2-component vector of float)

@@ -534,7 +534,7 @@
 0:69            -7 (const int)

 0:70      add second child into first child (temp 4-component vector of float)

 0:70        'color' (temp 4-component vector of float)

-0:70        Function Call: textureGrad(sS21;vf3;vf2;vf2; (global float)

+0:70        textureGrad (global float)

 0:70          'shadowSampler2D' (uniform sampler2DShadow)

 0:70          Construct vec3 (temp 3-component vector of float)

 0:70            'coords2D' (smooth in 2-component vector of float)

diff --git a/Test/baseResults/uint.frag.out b/Test/baseResults/uint.frag.out
index 359a257..4f4d589 100644
--- a/Test/baseResults/uint.frag.out
+++ b/Test/baseResults/uint.frag.out
@@ -113,7 +113,7 @@
 0:55        true case

 0:56        move second child to first child (temp mediump 4-component vector of uint)

 0:56          'c' (out mediump 4-component vector of uint)

-0:56          Function Call: texture(us21;vf2; (global mediump 4-component vector of uint)

+0:56          texture (global mediump 4-component vector of uint)

 0:56            'usampler' (uniform lowp usampler2D)

 0:56            'tc' (smooth in highp 2-component vector of float)

 0:57      Test condition and select (temp void)

@@ -124,7 +124,7 @@
 0:57        true case

 0:58        move second child to first child (temp mediump 4-component vector of uint)

 0:58          'c' (out mediump 4-component vector of uint)

-0:58          Function Call: texture(us21;vf2; (global mediump 4-component vector of uint)

+0:58          texture (global mediump 4-component vector of uint)

 0:58            'usampler' (uniform lowp usampler2D)

 0:58            add (temp highp 2-component vector of float)

 0:58              'tc' (smooth in highp 2-component vector of float)

@@ -139,7 +139,7 @@
 0:59        true case

 0:60        move second child to first child (temp mediump 4-component vector of uint)

 0:60          'c' (out mediump 4-component vector of uint)

-0:60          Function Call: texture(us21;vf2; (global mediump 4-component vector of uint)

+0:60          texture (global mediump 4-component vector of uint)

 0:60            'usampler' (uniform lowp usampler2D)

 0:60            subtract (temp highp 2-component vector of float)

 0:60              'tc' (smooth in highp 2-component vector of float)

@@ -412,7 +412,7 @@
 0:55        true case

 0:56        move second child to first child (temp mediump 4-component vector of uint)

 0:56          'c' (out mediump 4-component vector of uint)

-0:56          Function Call: texture(us21;vf2; (global mediump 4-component vector of uint)

+0:56          texture (global mediump 4-component vector of uint)

 0:56            'usampler' (uniform lowp usampler2D)

 0:56            'tc' (smooth in highp 2-component vector of float)

 0:57      Test condition and select (temp void)

@@ -423,7 +423,7 @@
 0:57        true case

 0:58        move second child to first child (temp mediump 4-component vector of uint)

 0:58          'c' (out mediump 4-component vector of uint)

-0:58          Function Call: texture(us21;vf2; (global mediump 4-component vector of uint)

+0:58          texture (global mediump 4-component vector of uint)

 0:58            'usampler' (uniform lowp usampler2D)

 0:58            add (temp highp 2-component vector of float)

 0:58              'tc' (smooth in highp 2-component vector of float)

@@ -438,7 +438,7 @@
 0:59        true case

 0:60        move second child to first child (temp mediump 4-component vector of uint)

 0:60          'c' (out mediump 4-component vector of uint)

-0:60          Function Call: texture(us21;vf2; (global mediump 4-component vector of uint)

+0:60          texture (global mediump 4-component vector of uint)

 0:60            'usampler' (uniform lowp usampler2D)

 0:60            subtract (temp highp 2-component vector of float)

 0:60              'tc' (smooth in highp 2-component vector of float)

diff --git a/Test/baseResults/variableArrayIndex.frag.out b/Test/baseResults/variableArrayIndex.frag.out
index cf7cc2b..2624985 100644
--- a/Test/baseResults/variableArrayIndex.frag.out
+++ b/Test/baseResults/variableArrayIndex.frag.out
@@ -74,7 +74,7 @@
 0:43        'gl_FragColor' (fragColor 4-component vector of float FragColor)

 0:43        vector-scale (temp 4-component vector of float)

 0:43          'scale' (temp float)

-0:43          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:43          texture (global 4-component vector of float)

 0:43            'sampler' (uniform sampler2D)

 0:43            'coord' (smooth in 2-component vector of float)

 0:45      Sequence

@@ -187,7 +187,7 @@
 0:43        'gl_FragColor' (fragColor 4-component vector of float FragColor)

 0:43        vector-scale (temp 4-component vector of float)

 0:43          'scale' (temp float)

-0:43          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:43          texture (global 4-component vector of float)

 0:43            'sampler' (uniform sampler2D)

 0:43            'coord' (smooth in 2-component vector of float)

 0:45      Sequence

diff --git a/Test/baseResults/varyingArray.frag.out b/Test/baseResults/varyingArray.frag.out
index f537e26..70ac8ea 100644
--- a/Test/baseResults/varyingArray.frag.out
+++ b/Test/baseResults/varyingArray.frag.out
@@ -12,7 +12,7 @@
 0:12      Sequence

 0:12        move second child to first child (temp 4-component vector of float)

 0:12          'texColor' (temp 4-component vector of float)

-0:12          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:12          texture (global 4-component vector of float)

 0:12            'texSampler2D' (uniform sampler2D)

 0:12            Construct vec2 (temp 2-component vector of float)

 0:12              add (temp 4-component vector of float)

@@ -71,7 +71,7 @@
 0:12      Sequence

 0:12        move second child to first child (temp 4-component vector of float)

 0:12          'texColor' (temp 4-component vector of float)

-0:12          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:12          texture (global 4-component vector of float)

 0:12            'texSampler2D' (uniform sampler2D)

 0:12            Construct vec2 (temp 2-component vector of float)

 0:12              add (temp 4-component vector of float)

diff --git a/Test/baseResults/varyingArrayIndirect.frag.out b/Test/baseResults/varyingArrayIndirect.frag.out
index 52a48a6..51fa713 100644
--- a/Test/baseResults/varyingArrayIndirect.frag.out
+++ b/Test/baseResults/varyingArrayIndirect.frag.out
@@ -12,7 +12,7 @@
 0:14      Sequence

 0:14        move second child to first child (temp 4-component vector of float)

 0:14          'texColor' (temp 4-component vector of float)

-0:14          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:14          texture (global 4-component vector of float)

 0:14            'texSampler2D' (uniform sampler2D)

 0:14            Construct vec2 (temp 2-component vector of float)

 0:14              add (temp 4-component vector of float)

@@ -74,7 +74,7 @@
 0:14      Sequence

 0:14        move second child to first child (temp 4-component vector of float)

 0:14          'texColor' (temp 4-component vector of float)

-0:14          Function Call: texture2D(s21;vf2; (global 4-component vector of float)

+0:14          texture (global 4-component vector of float)

 0:14            'texSampler2D' (uniform sampler2D)

 0:14            Construct vec2 (temp 2-component vector of float)

 0:14              add (temp 4-component vector of float)

diff --git a/Test/spv.test.vert b/Test/spv.test.vert
index bbc6f15..213c0ac 100644
--- a/Test/spv.test.vert
+++ b/Test/spv.test.vert
@@ -10,5 +10,5 @@
 void main()

 {

     uv = uv_in;

-    gl_Position = position + ftransform();

+    gl_Position = transform * position;

 }

diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h
index 684890e..ba32216 100644
--- a/glslang/Include/revision.h
+++ b/glslang/Include/revision.h
@@ -2,5 +2,5 @@
 // For the version, it uses the latest git tag followed by the number of commits.
 // For the date, it uses the current date (when then script is run).
 
-#define GLSLANG_REVISION "2.4.727"
+#define GLSLANG_REVISION "3.0.729"
 #define GLSLANG_DATE "19-Aug-2015"
diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp
index 9dbefb2..31fdae0 100644
--- a/glslang/MachineIndependent/Initialize.cpp
+++ b/glslang/MachineIndependent/Initialize.cpp
@@ -59,7 +59,8 @@
 const bool ForwardCompatibility = false;
 
 // change this back to false if depending on textual spellings of texturing calls when consuming the AST
-bool PureOperatorBuiltins = false;
+// Using PureOperatorBuiltins=false is deprecated.
+bool PureOperatorBuiltins = true;
 
 inline bool IncludeLegacy(int version, EProfile profile)
 {