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

Includes the following:
	5d45ead HLSL: Turn on tests for groupshared.
	b50fd17 HLSL: Support SV_Coverage and SV_DispatchThreadId; catch SV_GroupIndex.
	4a34679 Build: Fix unsigned/signed warning.
	1fabc0f Merge pull request #548 from baldurk/vs2010-compile-fixes
	bf8a6ef Merge pull request #551 from steve-lunarg/rwbuffers-fmt
	c658497 Merge pull request #539 from schwa423/linux_global_lock
	1b6daa0 Merge pull request #550 from amdrexu/bugfix
	062b239 Merge pull request #549 from steve-lunarg/multidim-array
	425af5f Use a recursive mutex.
	cce8d48 HLSL: phase 3c: add option to use Unknown storage format
	8b0227c HLSL: phase 3b: Texture methods remember and return vector size.
	4f2da27 HLSL: phase 3a: Add sub-vec4 rwtexture formats (qualifier.layoutFormat)
	17ff343 SPV: Add missing extension declarations for certain AMD extensions.
	f042e40 Merge pull request #542 from steve-lunarg/rwbuffers
	e4ad1bb Merge pull request #538 from steve-lunarg/iomap-binding-range-err
	7b211a3 HLSL: allow multi-dimensional arrays
	486d9e4 Update HexFloat tests to use non-enum class enum values
	021dbb4 Change negatable_left_shift and negatable_right_shift to inline funcs
	cabba60 Change {} constructor brackets to ()
	7cac9e7 Change "using x = y;" to "typedef y x;" statements
	a227d27 Explicitly implement default constructors
	1a65fc2 Add std::isnan and std::isinf wrappers for VS2010 that doesn't have them
	033d3ef Change enum class to plain enum
	31d5d48 Change constructor to use ()s instead of {}s
	ff160f1 Add #include <cstdint> for std::uint32_t usage
	75c3bf6 Add strtoull wrapper for VS2010, pointing to MS implementation
	54a28de Give all complex lambdas an explicit return type
	b3da8a9 HLSL: phase 2e: introduce lower level addBinaryNode/UnaryNode fns
	07830e8 HLSL: phase 2d: minor cleanup, & allow operator[] on non-rw textures
	0de16da HLSL: phase 2c: use lValueErrorCheck in HLSL FE
	9070796 HLSL: phase 2b: add l-value operator[] for RWTexture/RWBuffer
	6b43d27 HLSL: phase 2a: add r-value operator[] for RWTexture/RWBuffer
	e3aa654 Merge pull request #546 from yavn/OpImageQueryLod-with-SampledImage
	7208a97 SPV: Use SampledImage with OpImageQueryLod
	87a83d6 Use pthread_mutex for global lock on Linux.
	9ae3474 Check for out-of-range bindings during IO mapping.

Test: checkbuild.py for Linux, Windows; ran unit tests on Windows
Change-Id: I226a48cb970e037e5906150618c1d08ea3a5701b
diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp
index 9c8b8b9..49bb0a1 100755
--- a/SPIRV/GlslangToSpv.cpp
+++ b/SPIRV/GlslangToSpv.cpp
@@ -114,6 +114,7 @@
     void dumpSpv(std::vector<unsigned int>& out);
 
 protected:
+    spv::Decoration TranslateInterpolationDecoration(const glslang::TQualifier& qualifier);
     spv::Decoration TranslateAuxiliaryStorageDecoration(const glslang::TQualifier& qualifier);
     spv::BuiltIn TranslateBuiltInDecoration(glslang::TBuiltInVariable, bool memberDeclaration);
     spv::ImageFormat TranslateImageFormat(const glslang::TType& type);
@@ -381,7 +382,7 @@
 // Translate glslang type to SPIR-V interpolation decorations.
 // Returns spv::DecorationMax when no decoration
 // should be applied.
-spv::Decoration TranslateInterpolationDecoration(const glslang::TQualifier& qualifier)
+spv::Decoration TGlslangToSpvTraverser::TranslateInterpolationDecoration(const glslang::TQualifier& qualifier)
 {
     if (qualifier.smooth)
         // Smooth decoration doesn't exist in SPIR-V 1.0
@@ -391,8 +392,10 @@
     else if (qualifier.flat)
         return spv::DecorationFlat;
 #ifdef AMD_EXTENSIONS
-    else if (qualifier.explicitInterp)
+    else if (qualifier.explicitInterp) {
+        builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter);
         return spv::DecorationExplicitInterpAMD;
+    }
 #endif
     else
         return spv::DecorationMax;
@@ -572,13 +575,33 @@
         return spv::BuiltInSubgroupLtMaskKHR;
 
 #ifdef AMD_EXTENSIONS
-    case glslang::EbvBaryCoordNoPersp:          return spv::BuiltInBaryCoordNoPerspAMD;
-    case glslang::EbvBaryCoordNoPerspCentroid:  return spv::BuiltInBaryCoordNoPerspCentroidAMD;
-    case glslang::EbvBaryCoordNoPerspSample:    return spv::BuiltInBaryCoordNoPerspSampleAMD;
-    case glslang::EbvBaryCoordSmooth:           return spv::BuiltInBaryCoordSmoothAMD;
-    case glslang::EbvBaryCoordSmoothCentroid:   return spv::BuiltInBaryCoordSmoothCentroidAMD;
-    case glslang::EbvBaryCoordSmoothSample:     return spv::BuiltInBaryCoordSmoothSampleAMD;
-    case glslang::EbvBaryCoordPullModel:        return spv::BuiltInBaryCoordPullModelAMD;
+    case glslang::EbvBaryCoordNoPersp:
+        builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter);
+        return spv::BuiltInBaryCoordNoPerspAMD;
+
+    case glslang::EbvBaryCoordNoPerspCentroid:
+        builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter);
+        return spv::BuiltInBaryCoordNoPerspCentroidAMD;
+
+    case glslang::EbvBaryCoordNoPerspSample:
+        builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter);
+        return spv::BuiltInBaryCoordNoPerspSampleAMD;
+
+    case glslang::EbvBaryCoordSmooth:
+        builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter);
+        return spv::BuiltInBaryCoordSmoothAMD;
+
+    case glslang::EbvBaryCoordSmoothCentroid:
+        builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter);
+        return spv::BuiltInBaryCoordSmoothCentroidAMD;
+
+    case glslang::EbvBaryCoordSmoothSample:
+        builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter);
+        return spv::BuiltInBaryCoordSmoothSampleAMD;
+
+    case glslang::EbvBaryCoordPullModel:
+        builder.addExtension(spv::E_SPV_AMD_shader_explicit_vertex_parameter);
+        return spv::BuiltInBaryCoordPullModelAMD;
 #endif
     default:                               return spv::BuiltInMax;
     }
@@ -2745,9 +2768,10 @@
 
     // Check for queries
     if (cracked.query) {
-        // a sampled image needs to have the image extracted first
-        if (builder.isSampledImage(params.sampler))
+        // OpImageQueryLod works on a sampled image, for other queries the image has to be extracted first
+        if (node->getOp() != glslang::EOpTextureQueryLod && builder.isSampledImage(params.sampler))
             params.sampler = builder.createUnaryOp(spv::OpImage, builder.getImageType(params.sampler), params.sampler);
+
         switch (node->getOp()) {
         case glslang::EOpImageQuerySize:
         case glslang::EOpTextureQuerySize:
@@ -4109,6 +4133,10 @@
         builder.addCapability(spv::CapabilitySubgroupBallotKHR);
     } else {
         builder.addCapability(spv::CapabilityGroups);
+        if (op == glslang::EOpMinInvocationsNonUniform ||
+            op == glslang::EOpMaxInvocationsNonUniform ||
+            op == glslang::EOpAddInvocationsNonUniform)
+            builder.addExtension(spv::E_SPV_AMD_shader_ballot);
 
         spvGroupOperands.push_back(builder.makeUintConstant(spv::ScopeSubgroup));
 #ifdef AMD_EXTENSIONS
diff --git a/SPIRV/SPVRemapper.h b/SPIRV/SPVRemapper.h
index 43ec1ae..b3c686a 100755
--- a/SPIRV/SPVRemapper.h
+++ b/SPIRV/SPVRemapper.h
@@ -75,6 +75,7 @@
 
 #if !defined (use_cpp11)
 #include <cstdio>
+#include <cstdint>
 
 namespace spv {
 class spirvbin_t : public spirvbin_base_t
diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp
index c19f368..4703edc 100644
--- a/SPIRV/SpvBuilder.cpp
+++ b/SPIRV/SpvBuilder.cpp
@@ -797,7 +797,7 @@
 
     spvutils::HexFloat<spvutils::FloatProxy<float>> fVal(f16);
     spvutils::HexFloat<spvutils::FloatProxy<spvutils::Float16>> f16Val(0);
-    fVal.castTo(f16Val, spvutils::round_direction::kToZero);
+    fVal.castTo(f16Val, spvutils::kRoundToZero);
 
     unsigned value = f16Val.value().getAsFloat().get_value();
 
diff --git a/SPIRV/hex_float.h b/SPIRV/hex_float.h
index ac7e002..31b9f9e 100644
--- a/SPIRV/hex_float.h
+++ b/SPIRV/hex_float.h
@@ -23,6 +23,19 @@
 #include <limits>
 #include <sstream>
 
+#if defined(_MSC_VER) && _MSC_VER < 1700
+namespace std {
+bool isnan(double f)
+{
+  return ::_isnan(f) != 0;
+}
+bool isinf(double f)
+{
+  return ::_finite(f) == 0;
+}
+}
+#endif
+
 #include "bitutils.h"
 
 namespace spvutils {
@@ -30,7 +43,7 @@
 class Float16 {
  public:
   Float16(uint16_t v) : val(v) {}
-  Float16() = default;
+  Float16() {}
   static bool isNan(const Float16& val) {
     return ((val.val & 0x7C00) == 0x7C00) && ((val.val & 0x3FF) != 0);
   }
@@ -56,12 +69,12 @@
 // a value is Nan.
 template <typename T>
 struct FloatProxyTraits {
-  using uint_type = void;
+  typedef void uint_type;
 };
 
 template <>
 struct FloatProxyTraits<float> {
-  using uint_type = uint32_t;
+  typedef uint32_t uint_type;
   static bool isNan(float f) { return std::isnan(f); }
   // Returns true if the given value is any kind of infinity.
   static bool isInfinity(float f) { return std::isinf(f); }
@@ -73,7 +86,7 @@
 
 template <>
 struct FloatProxyTraits<double> {
-  using uint_type = uint64_t;
+  typedef uint64_t uint_type;
   static bool isNan(double f) { return std::isnan(f); }
   // Returns true if the given value is any kind of infinity.
   static bool isInfinity(double f) { return std::isinf(f); }
@@ -85,7 +98,7 @@
 
 template <>
 struct FloatProxyTraits<Float16> {
-  using uint_type = uint16_t;
+  typedef uint16_t uint_type;
   static bool isNan(Float16 f) { return Float16::isNan(f); }
   // Returns true if the given value is any kind of infinity.
   static bool isInfinity(Float16 f) { return Float16::isInfinity(f); }
@@ -101,11 +114,11 @@
 template <typename T>
 class FloatProxy {
  public:
-  using uint_type = typename FloatProxyTraits<T>::uint_type;
+  typedef typename FloatProxyTraits<T>::uint_type uint_type;
 
   // Since this is to act similar to the normal floats,
   // do not initialize the data by default.
-  FloatProxy() = default;
+  FloatProxy() {}
 
   // Intentionally non-explicit. This is a proxy type so
   // implicit conversions allow us to use it more transparently.
@@ -164,13 +177,13 @@
 template <typename T>
 struct HexFloatTraits {
   // Integer type that can store this hex-float.
-  using uint_type = void;
+  typedef void uint_type;
   // Signed integer type that can store this hex-float.
-  using int_type = void;
+  typedef void int_type;
   // The numerical type that this HexFloat represents.
-  using underlying_type = void;
+  typedef void underlying_type;
   // The type needed to construct the underlying type.
-  using native_type = void;
+  typedef void native_type;
   // The number of bits that are actually relevant in the uint_type.
   // This allows us to deal with, for example, 24-bit values in a 32-bit
   // integer.
@@ -188,10 +201,10 @@
 // 1 sign bit, 8 exponent bits, 23 fractional bits.
 template <>
 struct HexFloatTraits<FloatProxy<float>> {
-  using uint_type = uint32_t;
-  using int_type = int32_t;
-  using underlying_type = FloatProxy<float>;
-  using native_type = float;
+  typedef uint32_t uint_type;
+  typedef int32_t int_type;
+  typedef FloatProxy<float> underlying_type;
+  typedef float native_type;
   static const uint_type num_used_bits = 32;
   static const uint_type num_exponent_bits = 8;
   static const uint_type num_fraction_bits = 23;
@@ -202,10 +215,10 @@
 // 1 sign bit, 11 exponent bits, 52 fractional bits.
 template <>
 struct HexFloatTraits<FloatProxy<double>> {
-  using uint_type = uint64_t;
-  using int_type = int64_t;
-  using underlying_type = FloatProxy<double>;
-  using native_type = double;
+  typedef uint64_t uint_type;
+  typedef int64_t int_type;
+  typedef FloatProxy<double> underlying_type;
+  typedef double native_type;
   static const uint_type num_used_bits = 64;
   static const uint_type num_exponent_bits = 11;
   static const uint_type num_fraction_bits = 52;
@@ -216,22 +229,21 @@
 // 1 sign bit, 5 exponent bits, 10 fractional bits.
 template <>
 struct HexFloatTraits<FloatProxy<Float16>> {
-  using uint_type = uint16_t;
-  using int_type = int16_t;
-  using underlying_type = uint16_t;
-  using native_type = uint16_t;
+  typedef uint16_t uint_type;
+  typedef int16_t int_type;
+  typedef uint16_t underlying_type;
+  typedef uint16_t native_type;
   static const uint_type num_used_bits = 16;
   static const uint_type num_exponent_bits = 5;
   static const uint_type num_fraction_bits = 10;
   static const uint_type exponent_bias = 15;
 };
 
-enum class round_direction {
-  kToZero,
-  kToNearestEven,
-  kToPositiveInfinity,
-  kToNegativeInfinity,
-  max = kToNegativeInfinity
+enum round_direction {
+  kRoundToZero,
+  kRoundToNearestEven,
+  kRoundToPositiveInfinity,
+  kRoundToNegativeInfinity
 };
 
 // Template class that houses a floating pointer number.
@@ -240,10 +252,10 @@
 template <typename T, typename Traits = HexFloatTraits<T>>
 class HexFloat {
  public:
-  using uint_type = typename Traits::uint_type;
-  using int_type = typename Traits::int_type;
-  using underlying_type = typename Traits::underlying_type;
-  using native_type = typename Traits::native_type;
+  typedef typename Traits::uint_type uint_type;
+  typedef typename Traits::int_type int_type;
+  typedef typename Traits::underlying_type underlying_type;
+  typedef typename Traits::native_type native_type;
 
   explicit HexFloat(T f) : value_(f) {}
 
@@ -444,33 +456,23 @@
   // constant_number < 0? 0: constant_number
   // These convert the negative left-shifts into right shifts.
 
-  template <int_type N, typename enable = void>
-  struct negatable_left_shift {
-    static uint_type val(uint_type val) {
-      return static_cast<uint_type>(val >> -N);
-    }
-  };
+  template <typename int_type>
+  uint_type negatable_left_shift(int_type N, uint_type val)
+  {
+    if(N >= 0)
+      return val << N;
 
-  template <int_type N>
-  struct negatable_left_shift<N, typename std::enable_if<N >= 0>::type> {
-    static uint_type val(uint_type val) {
-      return static_cast<uint_type>(val << N);
-    }
-  };
+    return val >> -N;
+  }
 
-  template <int_type N, typename enable = void>
-  struct negatable_right_shift {
-    static uint_type val(uint_type val) {
-      return static_cast<uint_type>(val << -N);
-    }
-  };
+  template <typename int_type>
+  uint_type negatable_right_shift(int_type N, uint_type val)
+  {
+    if(N >= 0)
+      return val >> N;
 
-  template <int_type N>
-  struct negatable_right_shift<N, typename std::enable_if<N >= 0>::type> {
-    static uint_type val(uint_type val) {
-      return static_cast<uint_type>(val >> N);
-    }
-  };
+    return val << -N;
+  }
 
   // Returns the significand, rounded to fit in a significand in
   // other_T. This is shifted so that the most significant
@@ -479,7 +481,7 @@
   template <typename other_T>
   typename other_T::uint_type getRoundedNormalizedSignificand(
       round_direction dir, bool* carry_bit) {
-    using other_uint_type = typename other_T::uint_type;
+    typedef typename other_T::uint_type other_uint_type;
     static const int_type num_throwaway_bits =
         static_cast<int_type>(num_fraction_bits) -
         static_cast<int_type>(other_T::num_fraction_bits);
@@ -487,11 +489,11 @@
     static const uint_type last_significant_bit =
         (num_throwaway_bits < 0)
             ? 0
-            : negatable_left_shift<num_throwaway_bits>::val(1u);
+            : negatable_left_shift(num_throwaway_bits, 1u);
     static const uint_type first_rounded_bit =
         (num_throwaway_bits < 1)
             ? 0
-            : negatable_left_shift<num_throwaway_bits - 1>::val(1u);
+            : negatable_left_shift(num_throwaway_bits - 1, 1u);
 
     static const uint_type throwaway_mask_bits =
         num_throwaway_bits > 0 ? num_throwaway_bits : 0;
@@ -513,22 +515,22 @@
     // do.
     if ((significand & throwaway_mask) == 0) {
       return static_cast<other_uint_type>(
-          negatable_right_shift<num_throwaway_bits>::val(significand));
+          negatable_right_shift(num_throwaway_bits, significand));
     }
 
     bool round_away_from_zero = false;
     // We actually have to narrow the significand here, so we have to follow the
     // rounding rules.
     switch (dir) {
-      case round_direction::kToZero:
+      case kRoundToZero:
         break;
-      case round_direction::kToPositiveInfinity:
+      case kRoundToPositiveInfinity:
         round_away_from_zero = !isNegative();
         break;
-      case round_direction::kToNegativeInfinity:
+      case kRoundToNegativeInfinity:
         round_away_from_zero = isNegative();
         break;
-      case round_direction::kToNearestEven:
+      case kRoundToNearestEven:
         // Have to round down, round bit is 0
         if ((first_rounded_bit & significand) == 0) {
           break;
@@ -550,11 +552,11 @@
 
     if (round_away_from_zero) {
       return static_cast<other_uint_type>(
-          negatable_right_shift<num_throwaway_bits>::val(incrementSignificand(
+          negatable_right_shift(num_throwaway_bits, incrementSignificand(
               significand, last_significant_bit, carry_bit)));
     } else {
       return static_cast<other_uint_type>(
-          negatable_right_shift<num_throwaway_bits>::val(significand));
+          negatable_right_shift(num_throwaway_bits, significand));
     }
   }
 
@@ -608,9 +610,9 @@
     if (is_nan) {
       typename other_T::uint_type shifted_significand;
       shifted_significand = static_cast<typename other_T::uint_type>(
-          negatable_left_shift<
+          negatable_left_shift(
               static_cast<int_type>(other_T::num_fraction_bits) -
-              static_cast<int_type>(num_fraction_bits)>::val(significand));
+              static_cast<int_type>(num_fraction_bits), significand));
 
       // We are some sort of Nan. We try to keep the bit-pattern of the Nan
       // as close as possible. If we had to shift off bits so we are 0, then we
@@ -623,9 +625,9 @@
     }
 
     bool round_underflow_up =
-        isNegative() ? round_dir == round_direction::kToNegativeInfinity
-                     : round_dir == round_direction::kToPositiveInfinity;
-    using other_int_type = typename other_T::int_type;
+        isNegative() ? round_dir == kRoundToNegativeInfinity
+                     : round_dir == kRoundToPositiveInfinity;
+    typedef typename other_T::int_type other_int_type;
     // setFromSignUnbiasedExponentAndNormalizedSignificand will
     // zero out any underflowing value (but retain the sign).
     other.setFromSignUnbiasedExponentAndNormalizedSignificand(
@@ -664,9 +666,9 @@
 // Outputs the given HexFloat to the stream.
 template <typename T, typename Traits>
 std::ostream& operator<<(std::ostream& os, const HexFloat<T, Traits>& value) {
-  using HF = HexFloat<T, Traits>;
-  using uint_type = typename HF::uint_type;
-  using int_type = typename HF::int_type;
+  typedef HexFloat<T, Traits> HF;
+  typedef typename HF::uint_type uint_type;
+  typedef typename HF::int_type int_type;
 
   static_assert(HF::num_used_bits != 0,
                 "num_used_bits must be non-zero for a valid float");
@@ -745,7 +747,7 @@
     if (next_char == '-' || next_char == '+') {
       // Fail the parse.  Emulate standard behaviour by setting the value to
       // the zero value, and set the fail bit on the stream.
-      value = HexFloat<T, Traits>(typename HexFloat<T, Traits>::uint_type{0});
+      value = HexFloat<T, Traits>(typename HexFloat<T, Traits>::uint_type(0));
       is.setstate(std::ios_base::failbit);
       return true;
     }
@@ -777,7 +779,7 @@
   value.set_value(val);
   // In the failure case, map -0.0 to 0.0.
   if (is.fail() && value.getUnsignedBits() == 0u) {
-    value = HexFloat<T, Traits>(typename HexFloat<T, Traits>::uint_type{0});
+    value = HexFloat<T, Traits>(typename HexFloat<T, Traits>::uint_type(0));
   }
   if (val.isInfinity()) {
     // Fail the parse.  Emulate standard behaviour by setting the value to
@@ -812,7 +814,7 @@
 
   // Then convert to 16-bit float, saturating at infinities, and
   // rounding toward zero.
-  float_val.castTo(value, round_direction::kToZero);
+  float_val.castTo(value, kRoundToZero);
 
   // Overflow on 16-bit behaves the same as for 32- and 64-bit: set the
   // fail bit and set the lowest or highest value.
diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp
index 5d30ac2..0ac72d3 100644
--- a/StandAlone/StandAlone.cpp
+++ b/StandAlone/StandAlone.cpp
@@ -82,6 +82,7 @@
     EOptionCascadingErrors    = (1 << 18),
     EOptionAutoMapBindings    = (1 << 19),
     EOptionFlattenUniformArrays = (1 << 20),
+    EOptionNoStorageFormat    = (1 << 21),
 };
 
 //
@@ -290,6 +291,9 @@
                                lowerword == "flatten-uniform-array"  ||
                                lowerword == "fua") {
                         Options |= EOptionFlattenUniformArrays;
+                    } else if (lowerword == "no-storage-format" || // synonyms
+                               lowerword == "nsf") {
+                        Options |= EOptionNoStorageFormat;
                     } else {
                         usage();
                     }
@@ -542,6 +546,7 @@
         shader->setShiftTextureBinding(baseTextureBinding[compUnit.stage]);
         shader->setShiftUboBinding(baseUboBinding[compUnit.stage]);
         shader->setFlattenUniformArrays((Options & EOptionFlattenUniformArrays) != 0);
+        shader->setNoStorageFormat((Options & EOptionNoStorageFormat) != 0);
 
         if (Options & EOptionAutoMapBindings)
             shader->setAutoMapBindings(true);
@@ -584,6 +589,12 @@
     if (! (Options & EOptionOutputPreprocessed) && ! program.link(messages))
         LinkFailed = true;
 
+    // Map IO
+    if (Options & EOptionSpv) {
+        if (!program.mapIO())
+            LinkFailed = true;
+    }
+    
     // Report
     if (! (Options & EOptionSuppressInfolog) &&
         ! (Options & EOptionMemoryLeakMode)) {
@@ -591,10 +602,6 @@
         PutsIfNonEmpty(program.getInfoDebugLog());
     }
 
-    // Map IO
-    if (Options & EOptionSpv)
-        program.mapIO();
-    
     // Reflect
     if (Options & EOptionDumpReflection) {
         program.buildReflection();
@@ -666,11 +673,11 @@
     // they are all getting linked together.)
     glslang::TWorkItem* workItem;
     while (Worklist.remove(workItem)) {
-        ShaderCompUnit compUnit = {
+        ShaderCompUnit compUnit(
             FindLanguage(workItem->name),
             workItem->name,
             ReadFileData(workItem->name.c_str())
-        };
+        );
 
         if (! compUnit.text) {
             usage();
@@ -943,6 +950,9 @@
            "\n"
            "  --flatten-uniform-arrays                flatten uniform texture & sampler arrays to scalars\n"
            "  --fua                                   synonym for --flatten-uniform-arrays\n"
+           "\n"
+           "  --no-storage-format                     use Unknown image format\n"
+           "  --nsf                                   synonym for --no-storage-format\n"
            );
 
     exit(EFailUsage);
diff --git a/Test/baseResults/hlsl.array.flatten.frag.out b/Test/baseResults/hlsl.array.flatten.frag.out
index 185c2cc..cbfb0ef 100644
--- a/Test/baseResults/hlsl.array.flatten.frag.out
+++ b/Test/baseResults/hlsl.array.flatten.frag.out
@@ -6,7 +6,7 @@
 0:17    Function Parameters: 
 0:?     Sequence
 0:18      Branch: Return with expression
-0:18        texture (global 4-component vector of float)
+0:18        texture (temp 4-component vector of float)
 0:18          Construct combined texture-sampler (temp sampler1D)
 0:?             'g_tex[1]' (uniform texture1D)
 0:?             'g_samp[1]' (uniform sampler)
@@ -18,7 +18,7 @@
 0:22      'l_samp' (in 3-element array of sampler)
 0:?     Sequence
 0:23      Branch: Return with expression
-0:23        texture (global 4-component vector of float)
+0:23        texture (temp 4-component vector of float)
 0:23          Construct combined texture-sampler (temp sampler1D)
 0:23            direct index (temp texture1D)
 0:23              'l_tex' (in 3-element array of texture1D)
@@ -165,7 +165,7 @@
 0:17    Function Parameters: 
 0:?     Sequence
 0:18      Branch: Return with expression
-0:18        texture (global 4-component vector of float)
+0:18        texture (temp 4-component vector of float)
 0:18          Construct combined texture-sampler (temp sampler1D)
 0:?             'g_tex[1]' (uniform texture1D)
 0:?             'g_samp[1]' (uniform sampler)
@@ -177,7 +177,7 @@
 0:22      'l_samp' (in 3-element array of sampler)
 0:?     Sequence
 0:23      Branch: Return with expression
-0:23        texture (global 4-component vector of float)
+0:23        texture (temp 4-component vector of float)
 0:23          Construct combined texture-sampler (temp sampler1D)
 0:23            direct index (temp texture1D)
 0:23              'l_tex' (in 3-element array of texture1D)
diff --git a/Test/baseResults/hlsl.array.multidim.frag.out b/Test/baseResults/hlsl.array.multidim.frag.out
new file mode 100644
index 0000000..a2df1a8
--- /dev/null
+++ b/Test/baseResults/hlsl.array.multidim.frag.out
@@ -0,0 +1,210 @@
+hlsl.array.multidim.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:10  Function Definition: main( (temp structure{temp 4-component vector of float Color})
+0:10    Function Parameters: 
+0:?     Sequence
+0:14      move second child to first child (temp 4-component vector of float)
+0:14        direct index (temp 4-component vector of float)
+0:14          direct index (temp 3-element array of 4-component vector of float)
+0:14            'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float)
+0:14            Constant:
+0:14              1 (const int)
+0:14          Constant:
+0:14            2 (const int)
+0:14        Construct vec4 (temp 4-component vector of float)
+0:14          direct index (layout(offset=0 ) temp float)
+0:14            direct index (layout(offset=0 ) temp 3-element array of float)
+0:14              direct index (layout(offset=0 ) temp 4-element array of 3-element array of float)
+0:14                float_array: direct index for structure (layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float)
+0:14                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array})
+0:14                  Constant:
+0:14                    0 (const uint)
+0:14                Constant:
+0:14                  2 (const int)
+0:14              Constant:
+0:14                3 (const int)
+0:14            Constant:
+0:14              1 (const int)
+0:15      move second child to first child (temp 3-element array of 4-component vector of float)
+0:15        direct index (temp 3-element array of 4-component vector of float)
+0:15          'float4_array_2' (temp 5-element array of 3-element array of 4-component vector of float)
+0:15          Constant:
+0:15            1 (const int)
+0:15        direct index (temp 3-element array of 4-component vector of float)
+0:15          'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float)
+0:15          Constant:
+0:15            0 (const int)
+0:18      move second child to first child (temp 4-component vector of float)
+0:18        Color: direct index for structure (temp 4-component vector of float)
+0:18          'psout' (temp structure{temp 4-component vector of float Color})
+0:18          Constant:
+0:18            0 (const int)
+0:18        direct index (temp 4-component vector of float)
+0:18          direct index (temp 3-element array of 4-component vector of float)
+0:18            'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float)
+0:18            Constant:
+0:18              1 (const int)
+0:18          Constant:
+0:18            2 (const int)
+0:19      Sequence
+0:19        Sequence
+0:19          move second child to first child (temp 4-component vector of float)
+0:?             'Color' (layout(location=0 ) out 4-component vector of float)
+0:19            Color: direct index for structure (temp 4-component vector of float)
+0:19              'psout' (temp structure{temp 4-component vector of float Color})
+0:19              Constant:
+0:19                0 (const int)
+0:19        Branch: Return
+0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array})
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:10  Function Definition: main( (temp structure{temp 4-component vector of float Color})
+0:10    Function Parameters: 
+0:?     Sequence
+0:14      move second child to first child (temp 4-component vector of float)
+0:14        direct index (temp 4-component vector of float)
+0:14          direct index (temp 3-element array of 4-component vector of float)
+0:14            'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float)
+0:14            Constant:
+0:14              1 (const int)
+0:14          Constant:
+0:14            2 (const int)
+0:14        Construct vec4 (temp 4-component vector of float)
+0:14          direct index (layout(offset=0 ) temp float)
+0:14            direct index (layout(offset=0 ) temp 3-element array of float)
+0:14              direct index (layout(offset=0 ) temp 4-element array of 3-element array of float)
+0:14                float_array: direct index for structure (layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float)
+0:14                  'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array})
+0:14                  Constant:
+0:14                    0 (const uint)
+0:14                Constant:
+0:14                  2 (const int)
+0:14              Constant:
+0:14                3 (const int)
+0:14            Constant:
+0:14              1 (const int)
+0:15      move second child to first child (temp 3-element array of 4-component vector of float)
+0:15        direct index (temp 3-element array of 4-component vector of float)
+0:15          'float4_array_2' (temp 5-element array of 3-element array of 4-component vector of float)
+0:15          Constant:
+0:15            1 (const int)
+0:15        direct index (temp 3-element array of 4-component vector of float)
+0:15          'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float)
+0:15          Constant:
+0:15            0 (const int)
+0:18      move second child to first child (temp 4-component vector of float)
+0:18        Color: direct index for structure (temp 4-component vector of float)
+0:18          'psout' (temp structure{temp 4-component vector of float Color})
+0:18          Constant:
+0:18            0 (const int)
+0:18        direct index (temp 4-component vector of float)
+0:18          direct index (temp 3-element array of 4-component vector of float)
+0:18            'float4_array_1' (temp 2-element array of 3-element array of 4-component vector of float)
+0:18            Constant:
+0:18              1 (const int)
+0:18          Constant:
+0:18            2 (const int)
+0:19      Sequence
+0:19        Sequence
+0:19          move second child to first child (temp 4-component vector of float)
+0:?             'Color' (layout(location=0 ) out 4-component vector of float)
+0:19            Color: direct index for structure (temp 4-component vector of float)
+0:19              'psout' (temp structure{temp 4-component vector of float Color})
+0:19              Constant:
+0:19                0 (const int)
+0:19        Branch: Return
+0:?   Linker Objects
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform 5-element array of 4-element array of 3-element array of float float_array})
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 52
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 48
+                              ExecutionMode 4 OriginUpperLeft
+                              Name 4  "main"
+                              Name 14  "float4_array_1"
+                              Name 23  "$Global"
+                              MemberName 23($Global) 0  "float_array"
+                              Name 25  ""
+                              Name 36  "float4_array_2"
+                              Name 41  "PS_OUTPUT"
+                              MemberName 41(PS_OUTPUT) 0  "Color"
+                              Name 43  "psout"
+                              Name 48  "Color"
+                              Decorate 18 ArrayStride 16
+                              Decorate 20 ArrayStride 48
+                              Decorate 22 ArrayStride 192
+                              MemberDecorate 23($Global) 0 Offset 0
+                              Decorate 23($Global) Block
+                              Decorate 25 DescriptorSet 0
+                              Decorate 48(Color) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypeVector 6(float) 4
+               8:             TypeInt 32 0
+               9:      8(int) Constant 3
+              10:             TypeArray 7(fvec4) 9
+              11:      8(int) Constant 2
+              12:             TypeArray 10 11
+              13:             TypePointer Function 12
+              15:             TypeInt 32 1
+              16:     15(int) Constant 1
+              17:     15(int) Constant 2
+              18:             TypeArray 6(float) 9
+              19:      8(int) Constant 4
+              20:             TypeArray 18 19
+              21:      8(int) Constant 5
+              22:             TypeArray 20 21
+     23($Global):             TypeStruct 22
+              24:             TypePointer Uniform 23($Global)
+              25:     24(ptr) Variable Uniform
+              26:     15(int) Constant 0
+              27:     15(int) Constant 3
+              28:             TypePointer Uniform 6(float)
+              32:             TypePointer Function 7(fvec4)
+              34:             TypeArray 10 21
+              35:             TypePointer Function 34
+              37:             TypePointer Function 10
+   41(PS_OUTPUT):             TypeStruct 7(fvec4)
+              42:             TypePointer Function 41(PS_OUTPUT)
+              47:             TypePointer Output 7(fvec4)
+       48(Color):     47(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+14(float4_array_1):     13(ptr) Variable Function
+36(float4_array_2):     35(ptr) Variable Function
+       43(psout):     42(ptr) Variable Function
+              29:     28(ptr) AccessChain 25 26 17 27 16
+              30:    6(float) Load 29
+              31:    7(fvec4) CompositeConstruct 30 30 30 30
+              33:     32(ptr) AccessChain 14(float4_array_1) 16 17
+                              Store 33 31
+              38:     37(ptr) AccessChain 14(float4_array_1) 26
+              39:          10 Load 38
+              40:     37(ptr) AccessChain 36(float4_array_2) 16
+                              Store 40 39
+              44:     32(ptr) AccessChain 14(float4_array_1) 16 17
+              45:    7(fvec4) Load 44
+              46:     32(ptr) AccessChain 43(psout) 26
+                              Store 46 45
+              49:     32(ptr) AccessChain 43(psout) 26
+              50:    7(fvec4) Load 49
+                              Store 48(Color) 50
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.basic.comp.out b/Test/baseResults/hlsl.basic.comp.out
new file mode 100755
index 0000000..c6dc3e5
--- /dev/null
+++ b/Test/baseResults/hlsl.basic.comp.out
@@ -0,0 +1,58 @@
+hlsl.basic.comp
+Shader version: 450
+local_size = (1, 1, 1)
+0:? Sequence
+0:4  Function Definition: main(i1; (temp void)
+0:4    Function Parameters: 
+0:4      'dti' (in int LocalInvocationID)
+0:?     Sequence
+0:5      'dti' (in int LocalInvocationID)
+0:?   Linker Objects
+0:?     'a' (shared 100-element array of 4-component vector of float)
+0:?     'dti' (in int LocalInvocationID)
+
+
+Linked compute stage:
+
+
+Shader version: 450
+local_size = (1, 1, 1)
+0:? Sequence
+0:4  Function Definition: main(i1; (temp void)
+0:4    Function Parameters: 
+0:4      'dti' (in int LocalInvocationID)
+0:?     Sequence
+0:5      'dti' (in int LocalInvocationID)
+0:?   Linker Objects
+0:?     'a' (shared 100-element array of 4-component vector of float)
+0:?     'dti' (in int LocalInvocationID)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 16
+
+                              Capability Shader
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint GLCompute 4  "main" 8
+                              ExecutionMode 4 LocalSize 1 1 1
+                              Name 4  "main"
+                              Name 8  "dti"
+                              Name 15  "a"
+                              Decorate 8(dti) BuiltIn LocalInvocationId
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Input 6(int)
+          8(dti):      7(ptr) Variable Input
+               9:             TypeFloat 32
+              10:             TypeVector 9(float) 4
+              11:             TypeInt 32 0
+              12:     11(int) Constant 100
+              13:             TypeArray 10(fvec4) 12
+              14:             TypePointer Workgroup 13
+           15(a):     14(ptr) Variable Workgroup
+         4(main):           2 Function None 3
+               5:             Label
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
index 9d061d2..ff18441 100644
--- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out
+++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out
@@ -345,7 +345,7 @@
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 150
+// Id's are bound by 141
 
                               Capability Shader
                               Capability Sampled1D
@@ -353,51 +353,51 @@
                               Capability ImageQuery
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 141 145
+                              EntryPoint Fragment 4  "main" 132 136
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 8  "txval10"
                               Name 11  "g_tTex1df4a"
                               Name 15  "g_sSamp"
-                              Name 26  "txval11"
-                              Name 29  "g_tTex1di4a"
-                              Name 38  "txval12"
-                              Name 42  "g_tTex1du4a"
-                              Name 51  "txval20"
-                              Name 54  "g_tTex2df4a"
-                              Name 63  "txval21"
-                              Name 66  "g_tTex2di4a"
-                              Name 76  "txval22"
-                              Name 79  "g_tTex2du4a"
-                              Name 90  "txval40"
-                              Name 93  "g_tTexcdf4a"
-                              Name 103  "txval41"
-                              Name 106  "g_tTexcdi4a"
-                              Name 115  "txval42"
-                              Name 118  "g_tTexcdu4a"
-                              Name 131  "PS_OUTPUT"
-                              MemberName 131(PS_OUTPUT) 0  "Color"
-                              MemberName 131(PS_OUTPUT) 1  "Depth"
-                              Name 133  "psout"
-                              Name 141  "Color"
-                              Name 145  "Depth"
-                              Name 149  "g_tTex1df4"
+                              Name 25  "txval11"
+                              Name 28  "g_tTex1di4a"
+                              Name 36  "txval12"
+                              Name 40  "g_tTex1du4a"
+                              Name 48  "txval20"
+                              Name 51  "g_tTex2df4a"
+                              Name 59  "txval21"
+                              Name 62  "g_tTex2di4a"
+                              Name 71  "txval22"
+                              Name 74  "g_tTex2du4a"
+                              Name 84  "txval40"
+                              Name 87  "g_tTexcdf4a"
+                              Name 96  "txval41"
+                              Name 99  "g_tTexcdi4a"
+                              Name 107  "txval42"
+                              Name 110  "g_tTexcdu4a"
+                              Name 122  "PS_OUTPUT"
+                              MemberName 122(PS_OUTPUT) 0  "Color"
+                              MemberName 122(PS_OUTPUT) 1  "Depth"
+                              Name 124  "psout"
+                              Name 132  "Color"
+                              Name 136  "Depth"
+                              Name 140  "g_tTex1df4"
                               Decorate 11(g_tTex1df4a) DescriptorSet 0
                               Decorate 11(g_tTex1df4a) Binding 1
                               Decorate 15(g_sSamp) DescriptorSet 0
                               Decorate 15(g_sSamp) Binding 0
-                              Decorate 29(g_tTex1di4a) DescriptorSet 0
-                              Decorate 42(g_tTex1du4a) DescriptorSet 0
-                              Decorate 54(g_tTex2df4a) DescriptorSet 0
-                              Decorate 66(g_tTex2di4a) DescriptorSet 0
-                              Decorate 79(g_tTex2du4a) DescriptorSet 0
-                              Decorate 93(g_tTexcdf4a) DescriptorSet 0
-                              Decorate 106(g_tTexcdi4a) DescriptorSet 0
-                              Decorate 118(g_tTexcdu4a) DescriptorSet 0
-                              Decorate 141(Color) Location 0
-                              Decorate 145(Depth) BuiltIn FragDepth
-                              Decorate 149(g_tTex1df4) DescriptorSet 0
-                              Decorate 149(g_tTex1df4) Binding 0
+                              Decorate 28(g_tTex1di4a) DescriptorSet 0
+                              Decorate 40(g_tTex1du4a) DescriptorSet 0
+                              Decorate 51(g_tTex2df4a) DescriptorSet 0
+                              Decorate 62(g_tTex2di4a) DescriptorSet 0
+                              Decorate 74(g_tTex2du4a) DescriptorSet 0
+                              Decorate 87(g_tTexcdf4a) DescriptorSet 0
+                              Decorate 99(g_tTexcdi4a) DescriptorSet 0
+                              Decorate 110(g_tTexcdu4a) DescriptorSet 0
+                              Decorate 132(Color) Location 0
+                              Decorate 136(Depth) BuiltIn FragDepth
+                              Decorate 140(g_tTex1df4) DescriptorSet 0
+                              Decorate 140(g_tTex1df4) Binding 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -410,153 +410,144 @@
      15(g_sSamp):     14(ptr) Variable UniformConstant
               17:             TypeSampledImage 9
               19:    6(float) Constant 1036831949
-              21:             TypeVector 6(float) 2
-              23:             TypeInt 32 1
-              24:     23(int) Constant 0
-              27:             TypeImage 23(int) 1D array sampled format:Unknown
-              28:             TypePointer UniformConstant 27
- 29(g_tTex1di4a):     28(ptr) Variable UniformConstant
-              32:             TypeSampledImage 27
-              34:    6(float) Constant 1045220557
-              39:             TypeInt 32 0
-              40:             TypeImage 39(int) 1D array sampled format:Unknown
-              41:             TypePointer UniformConstant 40
- 42(g_tTex1du4a):     41(ptr) Variable UniformConstant
-              45:             TypeSampledImage 40
-              47:    6(float) Constant 1050253722
-              52:             TypeImage 6(float) 2D array sampled format:Unknown
-              53:             TypePointer UniformConstant 52
- 54(g_tTex2df4a):     53(ptr) Variable UniformConstant
-              57:             TypeSampledImage 52
-              59:   21(fvec2) ConstantComposite 19 34
-              64:             TypeImage 23(int) 2D array sampled format:Unknown
-              65:             TypePointer UniformConstant 64
- 66(g_tTex2di4a):     65(ptr) Variable UniformConstant
-              69:             TypeSampledImage 64
-              71:    6(float) Constant 1053609165
-              72:   21(fvec2) ConstantComposite 47 71
-              77:             TypeImage 39(int) 2D array sampled format:Unknown
-              78:             TypePointer UniformConstant 77
- 79(g_tTex2du4a):     78(ptr) Variable UniformConstant
-              82:             TypeSampledImage 77
-              84:    6(float) Constant 1056964608
-              85:    6(float) Constant 1058642330
-              86:   21(fvec2) ConstantComposite 84 85
-              91:             TypeImage 6(float) Cube array sampled format:Unknown
-              92:             TypePointer UniformConstant 91
- 93(g_tTexcdf4a):     92(ptr) Variable UniformConstant
-              96:             TypeSampledImage 91
-              98:             TypeVector 6(float) 3
-              99:   98(fvec3) ConstantComposite 19 34 47
-             104:             TypeImage 23(int) Cube array sampled format:Unknown
-             105:             TypePointer UniformConstant 104
-106(g_tTexcdi4a):    105(ptr) Variable UniformConstant
-             109:             TypeSampledImage 104
-             111:   98(fvec3) ConstantComposite 71 84 85
-             116:             TypeImage 39(int) Cube array sampled format:Unknown
-             117:             TypePointer UniformConstant 116
-118(g_tTexcdu4a):    117(ptr) Variable UniformConstant
-             121:             TypeSampledImage 116
-             123:    6(float) Constant 1060320051
-             124:    6(float) Constant 1061997773
-             125:    6(float) Constant 1063675494
-             126:   98(fvec3) ConstantComposite 123 124 125
-             130:             TypeVector 6(float) 4
-  131(PS_OUTPUT):             TypeStruct 130(fvec4) 6(float)
-             132:             TypePointer Function 131(PS_OUTPUT)
-             134:    6(float) Constant 1065353216
-             135:  130(fvec4) ConstantComposite 134 134 134 134
-             136:             TypePointer Function 130(fvec4)
-             138:     23(int) Constant 1
-             140:             TypePointer Output 130(fvec4)
-      141(Color):    140(ptr) Variable Output
-             144:             TypePointer Output 6(float)
-      145(Depth):    144(ptr) Variable Output
- 149(g_tTex1df4):     10(ptr) Variable UniformConstant
+              20:             TypeVector 6(float) 2
+              22:             TypeInt 32 1
+              23:     22(int) Constant 0
+              26:             TypeImage 22(int) 1D array sampled format:Unknown
+              27:             TypePointer UniformConstant 26
+ 28(g_tTex1di4a):     27(ptr) Variable UniformConstant
+              31:             TypeSampledImage 26
+              33:    6(float) Constant 1045220557
+              37:             TypeInt 32 0
+              38:             TypeImage 37(int) 1D array sampled format:Unknown
+              39:             TypePointer UniformConstant 38
+ 40(g_tTex1du4a):     39(ptr) Variable UniformConstant
+              43:             TypeSampledImage 38
+              45:    6(float) Constant 1050253722
+              49:             TypeImage 6(float) 2D array sampled format:Unknown
+              50:             TypePointer UniformConstant 49
+ 51(g_tTex2df4a):     50(ptr) Variable UniformConstant
+              54:             TypeSampledImage 49
+              56:   20(fvec2) ConstantComposite 19 33
+              60:             TypeImage 22(int) 2D array sampled format:Unknown
+              61:             TypePointer UniformConstant 60
+ 62(g_tTex2di4a):     61(ptr) Variable UniformConstant
+              65:             TypeSampledImage 60
+              67:    6(float) Constant 1053609165
+              68:   20(fvec2) ConstantComposite 45 67
+              72:             TypeImage 37(int) 2D array sampled format:Unknown
+              73:             TypePointer UniformConstant 72
+ 74(g_tTex2du4a):     73(ptr) Variable UniformConstant
+              77:             TypeSampledImage 72
+              79:    6(float) Constant 1056964608
+              80:    6(float) Constant 1058642330
+              81:   20(fvec2) ConstantComposite 79 80
+              85:             TypeImage 6(float) Cube array sampled format:Unknown
+              86:             TypePointer UniformConstant 85
+ 87(g_tTexcdf4a):     86(ptr) Variable UniformConstant
+              90:             TypeSampledImage 85
+              92:             TypeVector 6(float) 3
+              93:   92(fvec3) ConstantComposite 19 33 45
+              97:             TypeImage 22(int) Cube array sampled format:Unknown
+              98:             TypePointer UniformConstant 97
+ 99(g_tTexcdi4a):     98(ptr) Variable UniformConstant
+             102:             TypeSampledImage 97
+             104:   92(fvec3) ConstantComposite 67 79 80
+             108:             TypeImage 37(int) Cube array sampled format:Unknown
+             109:             TypePointer UniformConstant 108
+110(g_tTexcdu4a):    109(ptr) Variable UniformConstant
+             113:             TypeSampledImage 108
+             115:    6(float) Constant 1060320051
+             116:    6(float) Constant 1061997773
+             117:    6(float) Constant 1063675494
+             118:   92(fvec3) ConstantComposite 115 116 117
+             121:             TypeVector 6(float) 4
+  122(PS_OUTPUT):             TypeStruct 121(fvec4) 6(float)
+             123:             TypePointer Function 122(PS_OUTPUT)
+             125:    6(float) Constant 1065353216
+             126:  121(fvec4) ConstantComposite 125 125 125 125
+             127:             TypePointer Function 121(fvec4)
+             129:     22(int) Constant 1
+             131:             TypePointer Output 121(fvec4)
+      132(Color):    131(ptr) Variable Output
+             135:             TypePointer Output 6(float)
+      136(Depth):    135(ptr) Variable Output
+ 140(g_tTex1df4):     10(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
       8(txval10):      7(ptr) Variable Function
-     26(txval11):      7(ptr) Variable Function
-     38(txval12):      7(ptr) Variable Function
-     51(txval20):      7(ptr) Variable Function
-     63(txval21):      7(ptr) Variable Function
-     76(txval22):      7(ptr) Variable Function
-     90(txval40):      7(ptr) Variable Function
-    103(txval41):      7(ptr) Variable Function
-    115(txval42):      7(ptr) Variable Function
-      133(psout):    132(ptr) Variable Function
+     25(txval11):      7(ptr) Variable Function
+     36(txval12):      7(ptr) Variable Function
+     48(txval20):      7(ptr) Variable Function
+     59(txval21):      7(ptr) Variable Function
+     71(txval22):      7(ptr) Variable Function
+     84(txval40):      7(ptr) Variable Function
+     96(txval41):      7(ptr) Variable Function
+    107(txval42):      7(ptr) Variable Function
+      124(psout):    123(ptr) Variable Function
               12:           9 Load 11(g_tTex1df4a)
               16:          13 Load 15(g_sSamp)
               18:          17 SampledImage 12 16
-              20:           9 Image 18
-              22:   21(fvec2) ImageQueryLod 20 19
-              25:    6(float) CompositeExtract 22 0
-                              Store 8(txval10) 25
-              30:          27 Load 29(g_tTex1di4a)
-              31:          13 Load 15(g_sSamp)
-              33:          32 SampledImage 30 31
-              35:          27 Image 33
-              36:   21(fvec2) ImageQueryLod 35 34
-              37:    6(float) CompositeExtract 36 0
-                              Store 26(txval11) 37
-              43:          40 Load 42(g_tTex1du4a)
-              44:          13 Load 15(g_sSamp)
-              46:          45 SampledImage 43 44
-              48:          40 Image 46
-              49:   21(fvec2) ImageQueryLod 48 47
-              50:    6(float) CompositeExtract 49 0
-                              Store 38(txval12) 50
-              55:          52 Load 54(g_tTex2df4a)
-              56:          13 Load 15(g_sSamp)
-              58:          57 SampledImage 55 56
-              60:          52 Image 58
-              61:   21(fvec2) ImageQueryLod 60 59
-              62:    6(float) CompositeExtract 61 0
-                              Store 51(txval20) 62
-              67:          64 Load 66(g_tTex2di4a)
-              68:          13 Load 15(g_sSamp)
-              70:          69 SampledImage 67 68
-              73:          64 Image 70
-              74:   21(fvec2) ImageQueryLod 73 72
-              75:    6(float) CompositeExtract 74 0
-                              Store 63(txval21) 75
-              80:          77 Load 79(g_tTex2du4a)
-              81:          13 Load 15(g_sSamp)
-              83:          82 SampledImage 80 81
-              87:          77 Image 83
-              88:   21(fvec2) ImageQueryLod 87 86
-              89:    6(float) CompositeExtract 88 0
-                              Store 76(txval22) 89
-              94:          91 Load 93(g_tTexcdf4a)
-              95:          13 Load 15(g_sSamp)
-              97:          96 SampledImage 94 95
-             100:          91 Image 97
-             101:   21(fvec2) ImageQueryLod 100 99
-             102:    6(float) CompositeExtract 101 0
-                              Store 90(txval40) 102
-             107:         104 Load 106(g_tTexcdi4a)
-             108:          13 Load 15(g_sSamp)
-             110:         109 SampledImage 107 108
-             112:         104 Image 110
-             113:   21(fvec2) ImageQueryLod 112 111
-             114:    6(float) CompositeExtract 113 0
-                              Store 103(txval41) 114
-             119:         116 Load 118(g_tTexcdu4a)
-             120:          13 Load 15(g_sSamp)
-             122:         121 SampledImage 119 120
-             127:         116 Image 122
-             128:   21(fvec2) ImageQueryLod 127 126
-             129:    6(float) CompositeExtract 128 0
-                              Store 115(txval42) 129
-             137:    136(ptr) AccessChain 133(psout) 24
-                              Store 137 135
-             139:      7(ptr) AccessChain 133(psout) 138
-                              Store 139 134
-             142:    136(ptr) AccessChain 133(psout) 24
-             143:  130(fvec4) Load 142
-                              Store 141(Color) 143
-             146:      7(ptr) AccessChain 133(psout) 138
-             147:    6(float) Load 146
-                              Store 145(Depth) 147
+              21:   20(fvec2) ImageQueryLod 18 19
+              24:    6(float) CompositeExtract 21 0
+                              Store 8(txval10) 24
+              29:          26 Load 28(g_tTex1di4a)
+              30:          13 Load 15(g_sSamp)
+              32:          31 SampledImage 29 30
+              34:   20(fvec2) ImageQueryLod 32 33
+              35:    6(float) CompositeExtract 34 0
+                              Store 25(txval11) 35
+              41:          38 Load 40(g_tTex1du4a)
+              42:          13 Load 15(g_sSamp)
+              44:          43 SampledImage 41 42
+              46:   20(fvec2) ImageQueryLod 44 45
+              47:    6(float) CompositeExtract 46 0
+                              Store 36(txval12) 47
+              52:          49 Load 51(g_tTex2df4a)
+              53:          13 Load 15(g_sSamp)
+              55:          54 SampledImage 52 53
+              57:   20(fvec2) ImageQueryLod 55 56
+              58:    6(float) CompositeExtract 57 0
+                              Store 48(txval20) 58
+              63:          60 Load 62(g_tTex2di4a)
+              64:          13 Load 15(g_sSamp)
+              66:          65 SampledImage 63 64
+              69:   20(fvec2) ImageQueryLod 66 68
+              70:    6(float) CompositeExtract 69 0
+                              Store 59(txval21) 70
+              75:          72 Load 74(g_tTex2du4a)
+              76:          13 Load 15(g_sSamp)
+              78:          77 SampledImage 75 76
+              82:   20(fvec2) ImageQueryLod 78 81
+              83:    6(float) CompositeExtract 82 0
+                              Store 71(txval22) 83
+              88:          85 Load 87(g_tTexcdf4a)
+              89:          13 Load 15(g_sSamp)
+              91:          90 SampledImage 88 89
+              94:   20(fvec2) ImageQueryLod 91 93
+              95:    6(float) CompositeExtract 94 0
+                              Store 84(txval40) 95
+             100:          97 Load 99(g_tTexcdi4a)
+             101:          13 Load 15(g_sSamp)
+             103:         102 SampledImage 100 101
+             105:   20(fvec2) ImageQueryLod 103 104
+             106:    6(float) CompositeExtract 105 0
+                              Store 96(txval41) 106
+             111:         108 Load 110(g_tTexcdu4a)
+             112:          13 Load 15(g_sSamp)
+             114:         113 SampledImage 111 112
+             119:   20(fvec2) ImageQueryLod 114 118
+             120:    6(float) CompositeExtract 119 0
+                              Store 107(txval42) 120
+             128:    127(ptr) AccessChain 124(psout) 23
+                              Store 128 126
+             130:      7(ptr) AccessChain 124(psout) 129
+                              Store 130 125
+             133:    127(ptr) AccessChain 124(psout) 23
+             134:  121(fvec4) Load 133
+                              Store 132(Color) 134
+             137:      7(ptr) AccessChain 124(psout) 129
+             138:    6(float) Load 137
+                              Store 136(Depth) 138
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.inoutquals.frag.out b/Test/baseResults/hlsl.inoutquals.frag.out
index 83fe24b..b2716a4 100644
--- a/Test/baseResults/hlsl.inoutquals.frag.out
+++ b/Test/baseResults/hlsl.inoutquals.frag.out
@@ -18,9 +18,10 @@
 0:11        'x' (in float)
 0:11        Constant:
 0:11          -1.000000
-0:15  Function Definition: main(vf4; (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:15  Function Definition: main(vf4;i1; (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:15    Function Parameters: 
 0:15      'inpos' (noperspective in 4-component vector of float FragCoord)
+0:15      'sampleMask' (out int SampleMaskIn)
 0:?     Sequence
 0:18      Sequence
 0:18        move second child to first child (temp float)
@@ -74,6 +75,7 @@
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
 0:?     'inpos' (noperspective in 4-component vector of float FragCoord)
+0:?     'sampleMask' (out int SampleMaskIn)
 
 
 Linked fragment stage:
@@ -98,9 +100,10 @@
 0:11        'x' (in float)
 0:11        Constant:
 0:11          -1.000000
-0:15  Function Definition: main(vf4; (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:15  Function Definition: main(vf4;i1; (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:15    Function Parameters: 
 0:15      'inpos' (noperspective in 4-component vector of float FragCoord)
+0:15      'sampleMask' (out int SampleMaskIn)
 0:?     Sequence
 0:18      Sequence
 0:18        move second child to first child (temp float)
@@ -154,15 +157,17 @@
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
 0:?     'inpos' (noperspective in 4-component vector of float FragCoord)
+0:?     'sampleMask' (out int SampleMaskIn)
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 61
+// Id's are bound by 63
 
                               Capability Shader
+                              Capability SampleRateShading
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "main" 45 53 57
+                              EntryPoint Fragment 4  "main" 45 53 57 62
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "main"
                               Name 12  "MyFunc(f1;f1;f1;"
@@ -182,10 +187,12 @@
                               Name 45  "inpos"
                               Name 53  "Color"
                               Name 57  "Depth"
+                              Name 62  "sampleMask"
                               Decorate 45(inpos) NoPerspective
                               Decorate 45(inpos) BuiltIn FragCoord
                               Decorate 53(Color) Location 0
                               Decorate 57(Depth) BuiltIn FragDepth
+                              Decorate 62(sampleMask) BuiltIn SampleMask
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -211,6 +218,8 @@
        53(Color):     52(ptr) Variable Output
               56:             TypePointer Output 6(float)
        57(Depth):     56(ptr) Variable Output
+              61:             TypePointer Output 34(int)
+  62(sampleMask):     61(ptr) Variable Output
          4(main):           2 Function None 3
                5:             Label
            17(x):      7(ptr) Variable Function
diff --git a/Test/baseResults/hlsl.intrinsics.comp.out b/Test/baseResults/hlsl.intrinsics.comp.out
index f733975..cd366fc 100644
--- a/Test/baseResults/hlsl.intrinsics.comp.out
+++ b/Test/baseResults/hlsl.intrinsics.comp.out
@@ -13,64 +13,64 @@
 0:21      all (global bool)
 0:21        'inF0' (in float)
 0:24      AtomicAdd (global void)
-0:24        'gs_ua' (global uint)
-0:24        'gs_ub' (global uint)
+0:24        'gs_ua' (shared uint)
+0:24        'gs_ub' (shared uint)
 0:25      move second child to first child (temp uint)
 0:25        'out_u1' (temp uint)
 0:25        AtomicAdd (temp uint)
-0:25          'gs_ua' (global uint)
-0:25          'gs_ub' (global uint)
+0:25          'gs_ua' (shared uint)
+0:25          'gs_ub' (shared uint)
 0:26      AtomicAnd (global void)
-0:26        'gs_ua' (global uint)
-0:26        'gs_ub' (global uint)
+0:26        'gs_ua' (shared uint)
+0:26        'gs_ub' (shared uint)
 0:27      move second child to first child (temp uint)
 0:27        'out_u1' (temp uint)
 0:27        AtomicAnd (temp uint)
-0:27          'gs_ua' (global uint)
-0:27          'gs_ub' (global uint)
+0:27          'gs_ua' (shared uint)
+0:27          'gs_ub' (shared uint)
 0:28      move second child to first child (temp uint)
 0:28        'out_u1' (temp uint)
 0:28        AtomicCompSwap (temp uint)
-0:28          'gs_ua' (global uint)
-0:28          'gs_ub' (global uint)
-0:28          'gs_uc' (global uint)
+0:28          'gs_ua' (shared uint)
+0:28          'gs_ub' (shared uint)
+0:28          'gs_uc' (shared uint)
 0:29      move second child to first child (temp uint)
 0:29        'out_u1' (temp uint)
 0:29        AtomicExchange (temp uint)
-0:29          'gs_ua' (global uint)
-0:29          'gs_ub' (global uint)
+0:29          'gs_ua' (shared uint)
+0:29          'gs_ub' (shared uint)
 0:30      AtomicMax (global void)
-0:30        'gs_ua' (global uint)
-0:30        'gs_ub' (global uint)
+0:30        'gs_ua' (shared uint)
+0:30        'gs_ub' (shared uint)
 0:31      move second child to first child (temp uint)
 0:31        'out_u1' (temp uint)
 0:31        AtomicMax (temp uint)
-0:31          'gs_ua' (global uint)
-0:31          'gs_ub' (global uint)
+0:31          'gs_ua' (shared uint)
+0:31          'gs_ub' (shared uint)
 0:32      AtomicMin (global void)
-0:32        'gs_ua' (global uint)
-0:32        'gs_ub' (global uint)
+0:32        'gs_ua' (shared uint)
+0:32        'gs_ub' (shared uint)
 0:33      move second child to first child (temp uint)
 0:33        'out_u1' (temp uint)
 0:33        AtomicMin (temp uint)
-0:33          'gs_ua' (global uint)
-0:33          'gs_ub' (global uint)
+0:33          'gs_ua' (shared uint)
+0:33          'gs_ub' (shared uint)
 0:34      AtomicOr (global void)
-0:34        'gs_ua' (global uint)
-0:34        'gs_ub' (global uint)
+0:34        'gs_ua' (shared uint)
+0:34        'gs_ub' (shared uint)
 0:35      move second child to first child (temp uint)
 0:35        'out_u1' (temp uint)
 0:35        AtomicOr (temp uint)
-0:35          'gs_ua' (global uint)
-0:35          'gs_ub' (global uint)
+0:35          'gs_ua' (shared uint)
+0:35          'gs_ub' (shared uint)
 0:36      AtomicXor (global void)
-0:36        'gs_ua' (global uint)
-0:36        'gs_ub' (global uint)
+0:36        'gs_ua' (shared uint)
+0:36        'gs_ub' (shared uint)
 0:37      move second child to first child (temp uint)
 0:37        'out_u1' (temp uint)
 0:37        AtomicXor (temp uint)
-0:37          'gs_ua' (global uint)
-0:37          'gs_ub' (global uint)
+0:37          'gs_ua' (shared uint)
+0:37          'gs_ub' (shared uint)
 0:41      Branch: Return with expression
 0:41        Constant:
 0:41          0.000000
@@ -94,64 +94,64 @@
 0:55      all (global bool)
 0:55        'inF0' (in 2-component vector of float)
 0:58      AtomicAdd (global void)
-0:58        'gs_ua2' (global 2-component vector of uint)
-0:58        'gs_ub2' (global 2-component vector of uint)
+0:58        'gs_ua2' (shared 2-component vector of uint)
+0:58        'gs_ub2' (shared 2-component vector of uint)
 0:59      move second child to first child (temp 2-component vector of uint)
 0:59        'out_u2' (temp 2-component vector of uint)
 0:59        AtomicAdd (temp 2-component vector of uint)
-0:59          'gs_ua2' (global 2-component vector of uint)
-0:59          'gs_ub2' (global 2-component vector of uint)
+0:59          'gs_ua2' (shared 2-component vector of uint)
+0:59          'gs_ub2' (shared 2-component vector of uint)
 0:60      AtomicAnd (global void)
-0:60        'gs_ua2' (global 2-component vector of uint)
-0:60        'gs_ub2' (global 2-component vector of uint)
+0:60        'gs_ua2' (shared 2-component vector of uint)
+0:60        'gs_ub2' (shared 2-component vector of uint)
 0:61      move second child to first child (temp 2-component vector of uint)
 0:61        'out_u2' (temp 2-component vector of uint)
 0:61        AtomicAnd (temp 2-component vector of uint)
-0:61          'gs_ua2' (global 2-component vector of uint)
-0:61          'gs_ub2' (global 2-component vector of uint)
+0:61          'gs_ua2' (shared 2-component vector of uint)
+0:61          'gs_ub2' (shared 2-component vector of uint)
 0:62      move second child to first child (temp 2-component vector of uint)
 0:62        'out_u2' (temp 2-component vector of uint)
 0:62        AtomicCompSwap (temp 2-component vector of uint)
-0:62          'gs_ua2' (global 2-component vector of uint)
-0:62          'gs_ub2' (global 2-component vector of uint)
-0:62          'gs_uc2' (global 2-component vector of uint)
+0:62          'gs_ua2' (shared 2-component vector of uint)
+0:62          'gs_ub2' (shared 2-component vector of uint)
+0:62          'gs_uc2' (shared 2-component vector of uint)
 0:63      move second child to first child (temp 2-component vector of uint)
 0:63        'out_u2' (temp 2-component vector of uint)
 0:63        AtomicExchange (temp 2-component vector of uint)
-0:63          'gs_ua2' (global 2-component vector of uint)
-0:63          'gs_ub2' (global 2-component vector of uint)
+0:63          'gs_ua2' (shared 2-component vector of uint)
+0:63          'gs_ub2' (shared 2-component vector of uint)
 0:64      AtomicMax (global void)
-0:64        'gs_ua2' (global 2-component vector of uint)
-0:64        'gs_ub2' (global 2-component vector of uint)
+0:64        'gs_ua2' (shared 2-component vector of uint)
+0:64        'gs_ub2' (shared 2-component vector of uint)
 0:65      move second child to first child (temp 2-component vector of uint)
 0:65        'out_u2' (temp 2-component vector of uint)
 0:65        AtomicMax (temp 2-component vector of uint)
-0:65          'gs_ua2' (global 2-component vector of uint)
-0:65          'gs_ub2' (global 2-component vector of uint)
+0:65          'gs_ua2' (shared 2-component vector of uint)
+0:65          'gs_ub2' (shared 2-component vector of uint)
 0:66      AtomicMin (global void)
-0:66        'gs_ua2' (global 2-component vector of uint)
-0:66        'gs_ub2' (global 2-component vector of uint)
+0:66        'gs_ua2' (shared 2-component vector of uint)
+0:66        'gs_ub2' (shared 2-component vector of uint)
 0:67      move second child to first child (temp 2-component vector of uint)
 0:67        'out_u2' (temp 2-component vector of uint)
 0:67        AtomicMin (temp 2-component vector of uint)
-0:67          'gs_ua2' (global 2-component vector of uint)
-0:67          'gs_ub2' (global 2-component vector of uint)
+0:67          'gs_ua2' (shared 2-component vector of uint)
+0:67          'gs_ub2' (shared 2-component vector of uint)
 0:68      AtomicOr (global void)
-0:68        'gs_ua2' (global 2-component vector of uint)
-0:68        'gs_ub2' (global 2-component vector of uint)
+0:68        'gs_ua2' (shared 2-component vector of uint)
+0:68        'gs_ub2' (shared 2-component vector of uint)
 0:69      move second child to first child (temp 2-component vector of uint)
 0:69        'out_u2' (temp 2-component vector of uint)
 0:69        AtomicOr (temp 2-component vector of uint)
-0:69          'gs_ua2' (global 2-component vector of uint)
-0:69          'gs_ub2' (global 2-component vector of uint)
+0:69          'gs_ua2' (shared 2-component vector of uint)
+0:69          'gs_ub2' (shared 2-component vector of uint)
 0:70      AtomicXor (global void)
-0:70        'gs_ua2' (global 2-component vector of uint)
-0:70        'gs_ub2' (global 2-component vector of uint)
+0:70        'gs_ua2' (shared 2-component vector of uint)
+0:70        'gs_ub2' (shared 2-component vector of uint)
 0:71      move second child to first child (temp 2-component vector of uint)
 0:71        'out_u2' (temp 2-component vector of uint)
 0:71        AtomicXor (temp 2-component vector of uint)
-0:71          'gs_ua2' (global 2-component vector of uint)
-0:71          'gs_ub2' (global 2-component vector of uint)
+0:71          'gs_ua2' (shared 2-component vector of uint)
+0:71          'gs_ub2' (shared 2-component vector of uint)
 0:74      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
@@ -167,64 +167,64 @@
 0:82      all (global bool)
 0:82        'inF0' (in 3-component vector of float)
 0:85      AtomicAdd (global void)
-0:85        'gs_ua3' (global 3-component vector of uint)
-0:85        'gs_ub3' (global 3-component vector of uint)
+0:85        'gs_ua3' (shared 3-component vector of uint)
+0:85        'gs_ub3' (shared 3-component vector of uint)
 0:86      move second child to first child (temp 3-component vector of uint)
 0:86        'out_u3' (temp 3-component vector of uint)
 0:86        AtomicAdd (temp 3-component vector of uint)
-0:86          'gs_ua3' (global 3-component vector of uint)
-0:86          'gs_ub3' (global 3-component vector of uint)
+0:86          'gs_ua3' (shared 3-component vector of uint)
+0:86          'gs_ub3' (shared 3-component vector of uint)
 0:87      AtomicAnd (global void)
-0:87        'gs_ua3' (global 3-component vector of uint)
-0:87        'gs_ub3' (global 3-component vector of uint)
+0:87        'gs_ua3' (shared 3-component vector of uint)
+0:87        'gs_ub3' (shared 3-component vector of uint)
 0:88      move second child to first child (temp 3-component vector of uint)
 0:88        'out_u3' (temp 3-component vector of uint)
 0:88        AtomicAnd (temp 3-component vector of uint)
-0:88          'gs_ua3' (global 3-component vector of uint)
-0:88          'gs_ub3' (global 3-component vector of uint)
+0:88          'gs_ua3' (shared 3-component vector of uint)
+0:88          'gs_ub3' (shared 3-component vector of uint)
 0:89      move second child to first child (temp 3-component vector of uint)
 0:89        'out_u3' (temp 3-component vector of uint)
 0:89        AtomicCompSwap (temp 3-component vector of uint)
-0:89          'gs_ua3' (global 3-component vector of uint)
-0:89          'gs_ub3' (global 3-component vector of uint)
-0:89          'gs_uc3' (global 3-component vector of uint)
+0:89          'gs_ua3' (shared 3-component vector of uint)
+0:89          'gs_ub3' (shared 3-component vector of uint)
+0:89          'gs_uc3' (shared 3-component vector of uint)
 0:90      move second child to first child (temp 3-component vector of uint)
 0:90        'out_u3' (temp 3-component vector of uint)
 0:90        AtomicExchange (temp 3-component vector of uint)
-0:90          'gs_ua3' (global 3-component vector of uint)
-0:90          'gs_ub3' (global 3-component vector of uint)
+0:90          'gs_ua3' (shared 3-component vector of uint)
+0:90          'gs_ub3' (shared 3-component vector of uint)
 0:91      AtomicMax (global void)
-0:91        'gs_ua3' (global 3-component vector of uint)
-0:91        'gs_ub3' (global 3-component vector of uint)
+0:91        'gs_ua3' (shared 3-component vector of uint)
+0:91        'gs_ub3' (shared 3-component vector of uint)
 0:92      move second child to first child (temp 3-component vector of uint)
 0:92        'out_u3' (temp 3-component vector of uint)
 0:92        AtomicMax (temp 3-component vector of uint)
-0:92          'gs_ua3' (global 3-component vector of uint)
-0:92          'gs_ub3' (global 3-component vector of uint)
+0:92          'gs_ua3' (shared 3-component vector of uint)
+0:92          'gs_ub3' (shared 3-component vector of uint)
 0:93      AtomicMin (global void)
-0:93        'gs_ua3' (global 3-component vector of uint)
-0:93        'gs_ub3' (global 3-component vector of uint)
+0:93        'gs_ua3' (shared 3-component vector of uint)
+0:93        'gs_ub3' (shared 3-component vector of uint)
 0:94      move second child to first child (temp 3-component vector of uint)
 0:94        'out_u3' (temp 3-component vector of uint)
 0:94        AtomicMin (temp 3-component vector of uint)
-0:94          'gs_ua3' (global 3-component vector of uint)
-0:94          'gs_ub3' (global 3-component vector of uint)
+0:94          'gs_ua3' (shared 3-component vector of uint)
+0:94          'gs_ub3' (shared 3-component vector of uint)
 0:95      AtomicOr (global void)
-0:95        'gs_ua3' (global 3-component vector of uint)
-0:95        'gs_ub3' (global 3-component vector of uint)
+0:95        'gs_ua3' (shared 3-component vector of uint)
+0:95        'gs_ub3' (shared 3-component vector of uint)
 0:96      move second child to first child (temp 3-component vector of uint)
 0:96        'out_u3' (temp 3-component vector of uint)
 0:96        AtomicOr (temp 3-component vector of uint)
-0:96          'gs_ua3' (global 3-component vector of uint)
-0:96          'gs_ub3' (global 3-component vector of uint)
+0:96          'gs_ua3' (shared 3-component vector of uint)
+0:96          'gs_ub3' (shared 3-component vector of uint)
 0:97      AtomicXor (global void)
-0:97        'gs_ua3' (global 3-component vector of uint)
-0:97        'gs_ub3' (global 3-component vector of uint)
+0:97        'gs_ua3' (shared 3-component vector of uint)
+0:97        'gs_ub3' (shared 3-component vector of uint)
 0:98      move second child to first child (temp 3-component vector of uint)
 0:98        'out_u3' (temp 3-component vector of uint)
 0:98        AtomicXor (temp 3-component vector of uint)
-0:98          'gs_ua3' (global 3-component vector of uint)
-0:98          'gs_ub3' (global 3-component vector of uint)
+0:98          'gs_ua3' (shared 3-component vector of uint)
+0:98          'gs_ub3' (shared 3-component vector of uint)
 0:101      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
@@ -241,64 +241,64 @@
 0:109      all (global bool)
 0:109        'inF0' (layout(location=0 ) in 4-component vector of float)
 0:112      AtomicAdd (global void)
-0:112        'gs_ua4' (global 4-component vector of uint)
-0:112        'gs_ub4' (global 4-component vector of uint)
+0:112        'gs_ua4' (shared 4-component vector of uint)
+0:112        'gs_ub4' (shared 4-component vector of uint)
 0:113      move second child to first child (temp 4-component vector of uint)
 0:113        'out_u4' (temp 4-component vector of uint)
 0:113        AtomicAdd (temp 4-component vector of uint)
-0:113          'gs_ua4' (global 4-component vector of uint)
-0:113          'gs_ub4' (global 4-component vector of uint)
+0:113          'gs_ua4' (shared 4-component vector of uint)
+0:113          'gs_ub4' (shared 4-component vector of uint)
 0:114      AtomicAnd (global void)
-0:114        'gs_ua4' (global 4-component vector of uint)
-0:114        'gs_ub4' (global 4-component vector of uint)
+0:114        'gs_ua4' (shared 4-component vector of uint)
+0:114        'gs_ub4' (shared 4-component vector of uint)
 0:115      move second child to first child (temp 4-component vector of uint)
 0:115        'out_u4' (temp 4-component vector of uint)
 0:115        AtomicAnd (temp 4-component vector of uint)
-0:115          'gs_ua4' (global 4-component vector of uint)
-0:115          'gs_ub4' (global 4-component vector of uint)
+0:115          'gs_ua4' (shared 4-component vector of uint)
+0:115          'gs_ub4' (shared 4-component vector of uint)
 0:116      move second child to first child (temp 4-component vector of uint)
 0:116        'out_u4' (temp 4-component vector of uint)
 0:116        AtomicCompSwap (temp 4-component vector of uint)
-0:116          'gs_ua4' (global 4-component vector of uint)
-0:116          'gs_ub4' (global 4-component vector of uint)
-0:116          'gs_uc4' (global 4-component vector of uint)
+0:116          'gs_ua4' (shared 4-component vector of uint)
+0:116          'gs_ub4' (shared 4-component vector of uint)
+0:116          'gs_uc4' (shared 4-component vector of uint)
 0:117      move second child to first child (temp 4-component vector of uint)
 0:117        'out_u4' (temp 4-component vector of uint)
 0:117        AtomicExchange (temp 4-component vector of uint)
-0:117          'gs_ua4' (global 4-component vector of uint)
-0:117          'gs_ub4' (global 4-component vector of uint)
+0:117          'gs_ua4' (shared 4-component vector of uint)
+0:117          'gs_ub4' (shared 4-component vector of uint)
 0:118      AtomicMax (global void)
-0:118        'gs_ua4' (global 4-component vector of uint)
-0:118        'gs_ub4' (global 4-component vector of uint)
+0:118        'gs_ua4' (shared 4-component vector of uint)
+0:118        'gs_ub4' (shared 4-component vector of uint)
 0:119      move second child to first child (temp 4-component vector of uint)
 0:119        'out_u4' (temp 4-component vector of uint)
 0:119        AtomicMax (temp 4-component vector of uint)
-0:119          'gs_ua4' (global 4-component vector of uint)
-0:119          'gs_ub4' (global 4-component vector of uint)
+0:119          'gs_ua4' (shared 4-component vector of uint)
+0:119          'gs_ub4' (shared 4-component vector of uint)
 0:120      AtomicMin (global void)
-0:120        'gs_ua4' (global 4-component vector of uint)
-0:120        'gs_ub4' (global 4-component vector of uint)
+0:120        'gs_ua4' (shared 4-component vector of uint)
+0:120        'gs_ub4' (shared 4-component vector of uint)
 0:121      move second child to first child (temp 4-component vector of uint)
 0:121        'out_u4' (temp 4-component vector of uint)
 0:121        AtomicMin (temp 4-component vector of uint)
-0:121          'gs_ua4' (global 4-component vector of uint)
-0:121          'gs_ub4' (global 4-component vector of uint)
+0:121          'gs_ua4' (shared 4-component vector of uint)
+0:121          'gs_ub4' (shared 4-component vector of uint)
 0:122      AtomicOr (global void)
-0:122        'gs_ua4' (global 4-component vector of uint)
-0:122        'gs_ub4' (global 4-component vector of uint)
+0:122        'gs_ua4' (shared 4-component vector of uint)
+0:122        'gs_ub4' (shared 4-component vector of uint)
 0:123      move second child to first child (temp 4-component vector of uint)
 0:123        'out_u4' (temp 4-component vector of uint)
 0:123        AtomicOr (temp 4-component vector of uint)
-0:123          'gs_ua4' (global 4-component vector of uint)
-0:123          'gs_ub4' (global 4-component vector of uint)
+0:123          'gs_ua4' (shared 4-component vector of uint)
+0:123          'gs_ub4' (shared 4-component vector of uint)
 0:124      AtomicXor (global void)
-0:124        'gs_ua4' (global 4-component vector of uint)
-0:124        'gs_ub4' (global 4-component vector of uint)
+0:124        'gs_ua4' (shared 4-component vector of uint)
+0:124        'gs_ub4' (shared 4-component vector of uint)
 0:125      move second child to first child (temp 4-component vector of uint)
 0:125        'out_u4' (temp 4-component vector of uint)
 0:125        AtomicXor (temp 4-component vector of uint)
-0:125          'gs_ua4' (global 4-component vector of uint)
-0:125          'gs_ub4' (global 4-component vector of uint)
+0:125          'gs_ua4' (shared 4-component vector of uint)
+0:125          'gs_ub4' (shared 4-component vector of uint)
 0:128      Sequence
 0:128        move second child to first child (temp 4-component vector of float)
 0:?           '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
@@ -309,18 +309,18 @@
 0:?             4.000000
 0:128        Branch: Return
 0:?   Linker Objects
-0:?     'gs_ua' (global uint)
-0:?     'gs_ub' (global uint)
-0:?     'gs_uc' (global uint)
-0:?     'gs_ua2' (global 2-component vector of uint)
-0:?     'gs_ub2' (global 2-component vector of uint)
-0:?     'gs_uc2' (global 2-component vector of uint)
-0:?     'gs_ua3' (global 3-component vector of uint)
-0:?     'gs_ub3' (global 3-component vector of uint)
-0:?     'gs_uc3' (global 3-component vector of uint)
-0:?     'gs_ua4' (global 4-component vector of uint)
-0:?     'gs_ub4' (global 4-component vector of uint)
-0:?     'gs_uc4' (global 4-component vector of uint)
+0:?     'gs_ua' (shared uint)
+0:?     'gs_ub' (shared uint)
+0:?     'gs_uc' (shared uint)
+0:?     'gs_ua2' (shared 2-component vector of uint)
+0:?     'gs_ub2' (shared 2-component vector of uint)
+0:?     'gs_uc2' (shared 2-component vector of uint)
+0:?     'gs_ua3' (shared 3-component vector of uint)
+0:?     'gs_ub3' (shared 3-component vector of uint)
+0:?     'gs_uc3' (shared 3-component vector of uint)
+0:?     'gs_ua4' (shared 4-component vector of uint)
+0:?     'gs_ub4' (shared 4-component vector of uint)
+0:?     'gs_uc4' (shared 4-component vector of uint)
 0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
 0:?     'inF0' (layout(location=0 ) in 4-component vector of float)
 0:?     'inF1' (layout(location=1 ) in 4-component vector of float)
@@ -346,64 +346,64 @@
 0:21      all (global bool)
 0:21        'inF0' (in float)
 0:24      AtomicAdd (global void)
-0:24        'gs_ua' (global uint)
-0:24        'gs_ub' (global uint)
+0:24        'gs_ua' (shared uint)
+0:24        'gs_ub' (shared uint)
 0:25      move second child to first child (temp uint)
 0:25        'out_u1' (temp uint)
 0:25        AtomicAdd (temp uint)
-0:25          'gs_ua' (global uint)
-0:25          'gs_ub' (global uint)
+0:25          'gs_ua' (shared uint)
+0:25          'gs_ub' (shared uint)
 0:26      AtomicAnd (global void)
-0:26        'gs_ua' (global uint)
-0:26        'gs_ub' (global uint)
+0:26        'gs_ua' (shared uint)
+0:26        'gs_ub' (shared uint)
 0:27      move second child to first child (temp uint)
 0:27        'out_u1' (temp uint)
 0:27        AtomicAnd (temp uint)
-0:27          'gs_ua' (global uint)
-0:27          'gs_ub' (global uint)
+0:27          'gs_ua' (shared uint)
+0:27          'gs_ub' (shared uint)
 0:28      move second child to first child (temp uint)
 0:28        'out_u1' (temp uint)
 0:28        AtomicCompSwap (temp uint)
-0:28          'gs_ua' (global uint)
-0:28          'gs_ub' (global uint)
-0:28          'gs_uc' (global uint)
+0:28          'gs_ua' (shared uint)
+0:28          'gs_ub' (shared uint)
+0:28          'gs_uc' (shared uint)
 0:29      move second child to first child (temp uint)
 0:29        'out_u1' (temp uint)
 0:29        AtomicExchange (temp uint)
-0:29          'gs_ua' (global uint)
-0:29          'gs_ub' (global uint)
+0:29          'gs_ua' (shared uint)
+0:29          'gs_ub' (shared uint)
 0:30      AtomicMax (global void)
-0:30        'gs_ua' (global uint)
-0:30        'gs_ub' (global uint)
+0:30        'gs_ua' (shared uint)
+0:30        'gs_ub' (shared uint)
 0:31      move second child to first child (temp uint)
 0:31        'out_u1' (temp uint)
 0:31        AtomicMax (temp uint)
-0:31          'gs_ua' (global uint)
-0:31          'gs_ub' (global uint)
+0:31          'gs_ua' (shared uint)
+0:31          'gs_ub' (shared uint)
 0:32      AtomicMin (global void)
-0:32        'gs_ua' (global uint)
-0:32        'gs_ub' (global uint)
+0:32        'gs_ua' (shared uint)
+0:32        'gs_ub' (shared uint)
 0:33      move second child to first child (temp uint)
 0:33        'out_u1' (temp uint)
 0:33        AtomicMin (temp uint)
-0:33          'gs_ua' (global uint)
-0:33          'gs_ub' (global uint)
+0:33          'gs_ua' (shared uint)
+0:33          'gs_ub' (shared uint)
 0:34      AtomicOr (global void)
-0:34        'gs_ua' (global uint)
-0:34        'gs_ub' (global uint)
+0:34        'gs_ua' (shared uint)
+0:34        'gs_ub' (shared uint)
 0:35      move second child to first child (temp uint)
 0:35        'out_u1' (temp uint)
 0:35        AtomicOr (temp uint)
-0:35          'gs_ua' (global uint)
-0:35          'gs_ub' (global uint)
+0:35          'gs_ua' (shared uint)
+0:35          'gs_ub' (shared uint)
 0:36      AtomicXor (global void)
-0:36        'gs_ua' (global uint)
-0:36        'gs_ub' (global uint)
+0:36        'gs_ua' (shared uint)
+0:36        'gs_ub' (shared uint)
 0:37      move second child to first child (temp uint)
 0:37        'out_u1' (temp uint)
 0:37        AtomicXor (temp uint)
-0:37          'gs_ua' (global uint)
-0:37          'gs_ub' (global uint)
+0:37          'gs_ua' (shared uint)
+0:37          'gs_ub' (shared uint)
 0:41      Branch: Return with expression
 0:41        Constant:
 0:41          0.000000
@@ -427,64 +427,64 @@
 0:55      all (global bool)
 0:55        'inF0' (in 2-component vector of float)
 0:58      AtomicAdd (global void)
-0:58        'gs_ua2' (global 2-component vector of uint)
-0:58        'gs_ub2' (global 2-component vector of uint)
+0:58        'gs_ua2' (shared 2-component vector of uint)
+0:58        'gs_ub2' (shared 2-component vector of uint)
 0:59      move second child to first child (temp 2-component vector of uint)
 0:59        'out_u2' (temp 2-component vector of uint)
 0:59        AtomicAdd (temp 2-component vector of uint)
-0:59          'gs_ua2' (global 2-component vector of uint)
-0:59          'gs_ub2' (global 2-component vector of uint)
+0:59          'gs_ua2' (shared 2-component vector of uint)
+0:59          'gs_ub2' (shared 2-component vector of uint)
 0:60      AtomicAnd (global void)
-0:60        'gs_ua2' (global 2-component vector of uint)
-0:60        'gs_ub2' (global 2-component vector of uint)
+0:60        'gs_ua2' (shared 2-component vector of uint)
+0:60        'gs_ub2' (shared 2-component vector of uint)
 0:61      move second child to first child (temp 2-component vector of uint)
 0:61        'out_u2' (temp 2-component vector of uint)
 0:61        AtomicAnd (temp 2-component vector of uint)
-0:61          'gs_ua2' (global 2-component vector of uint)
-0:61          'gs_ub2' (global 2-component vector of uint)
+0:61          'gs_ua2' (shared 2-component vector of uint)
+0:61          'gs_ub2' (shared 2-component vector of uint)
 0:62      move second child to first child (temp 2-component vector of uint)
 0:62        'out_u2' (temp 2-component vector of uint)
 0:62        AtomicCompSwap (temp 2-component vector of uint)
-0:62          'gs_ua2' (global 2-component vector of uint)
-0:62          'gs_ub2' (global 2-component vector of uint)
-0:62          'gs_uc2' (global 2-component vector of uint)
+0:62          'gs_ua2' (shared 2-component vector of uint)
+0:62          'gs_ub2' (shared 2-component vector of uint)
+0:62          'gs_uc2' (shared 2-component vector of uint)
 0:63      move second child to first child (temp 2-component vector of uint)
 0:63        'out_u2' (temp 2-component vector of uint)
 0:63        AtomicExchange (temp 2-component vector of uint)
-0:63          'gs_ua2' (global 2-component vector of uint)
-0:63          'gs_ub2' (global 2-component vector of uint)
+0:63          'gs_ua2' (shared 2-component vector of uint)
+0:63          'gs_ub2' (shared 2-component vector of uint)
 0:64      AtomicMax (global void)
-0:64        'gs_ua2' (global 2-component vector of uint)
-0:64        'gs_ub2' (global 2-component vector of uint)
+0:64        'gs_ua2' (shared 2-component vector of uint)
+0:64        'gs_ub2' (shared 2-component vector of uint)
 0:65      move second child to first child (temp 2-component vector of uint)
 0:65        'out_u2' (temp 2-component vector of uint)
 0:65        AtomicMax (temp 2-component vector of uint)
-0:65          'gs_ua2' (global 2-component vector of uint)
-0:65          'gs_ub2' (global 2-component vector of uint)
+0:65          'gs_ua2' (shared 2-component vector of uint)
+0:65          'gs_ub2' (shared 2-component vector of uint)
 0:66      AtomicMin (global void)
-0:66        'gs_ua2' (global 2-component vector of uint)
-0:66        'gs_ub2' (global 2-component vector of uint)
+0:66        'gs_ua2' (shared 2-component vector of uint)
+0:66        'gs_ub2' (shared 2-component vector of uint)
 0:67      move second child to first child (temp 2-component vector of uint)
 0:67        'out_u2' (temp 2-component vector of uint)
 0:67        AtomicMin (temp 2-component vector of uint)
-0:67          'gs_ua2' (global 2-component vector of uint)
-0:67          'gs_ub2' (global 2-component vector of uint)
+0:67          'gs_ua2' (shared 2-component vector of uint)
+0:67          'gs_ub2' (shared 2-component vector of uint)
 0:68      AtomicOr (global void)
-0:68        'gs_ua2' (global 2-component vector of uint)
-0:68        'gs_ub2' (global 2-component vector of uint)
+0:68        'gs_ua2' (shared 2-component vector of uint)
+0:68        'gs_ub2' (shared 2-component vector of uint)
 0:69      move second child to first child (temp 2-component vector of uint)
 0:69        'out_u2' (temp 2-component vector of uint)
 0:69        AtomicOr (temp 2-component vector of uint)
-0:69          'gs_ua2' (global 2-component vector of uint)
-0:69          'gs_ub2' (global 2-component vector of uint)
+0:69          'gs_ua2' (shared 2-component vector of uint)
+0:69          'gs_ub2' (shared 2-component vector of uint)
 0:70      AtomicXor (global void)
-0:70        'gs_ua2' (global 2-component vector of uint)
-0:70        'gs_ub2' (global 2-component vector of uint)
+0:70        'gs_ua2' (shared 2-component vector of uint)
+0:70        'gs_ub2' (shared 2-component vector of uint)
 0:71      move second child to first child (temp 2-component vector of uint)
 0:71        'out_u2' (temp 2-component vector of uint)
 0:71        AtomicXor (temp 2-component vector of uint)
-0:71          'gs_ua2' (global 2-component vector of uint)
-0:71          'gs_ub2' (global 2-component vector of uint)
+0:71          'gs_ua2' (shared 2-component vector of uint)
+0:71          'gs_ub2' (shared 2-component vector of uint)
 0:74      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
@@ -500,64 +500,64 @@
 0:82      all (global bool)
 0:82        'inF0' (in 3-component vector of float)
 0:85      AtomicAdd (global void)
-0:85        'gs_ua3' (global 3-component vector of uint)
-0:85        'gs_ub3' (global 3-component vector of uint)
+0:85        'gs_ua3' (shared 3-component vector of uint)
+0:85        'gs_ub3' (shared 3-component vector of uint)
 0:86      move second child to first child (temp 3-component vector of uint)
 0:86        'out_u3' (temp 3-component vector of uint)
 0:86        AtomicAdd (temp 3-component vector of uint)
-0:86          'gs_ua3' (global 3-component vector of uint)
-0:86          'gs_ub3' (global 3-component vector of uint)
+0:86          'gs_ua3' (shared 3-component vector of uint)
+0:86          'gs_ub3' (shared 3-component vector of uint)
 0:87      AtomicAnd (global void)
-0:87        'gs_ua3' (global 3-component vector of uint)
-0:87        'gs_ub3' (global 3-component vector of uint)
+0:87        'gs_ua3' (shared 3-component vector of uint)
+0:87        'gs_ub3' (shared 3-component vector of uint)
 0:88      move second child to first child (temp 3-component vector of uint)
 0:88        'out_u3' (temp 3-component vector of uint)
 0:88        AtomicAnd (temp 3-component vector of uint)
-0:88          'gs_ua3' (global 3-component vector of uint)
-0:88          'gs_ub3' (global 3-component vector of uint)
+0:88          'gs_ua3' (shared 3-component vector of uint)
+0:88          'gs_ub3' (shared 3-component vector of uint)
 0:89      move second child to first child (temp 3-component vector of uint)
 0:89        'out_u3' (temp 3-component vector of uint)
 0:89        AtomicCompSwap (temp 3-component vector of uint)
-0:89          'gs_ua3' (global 3-component vector of uint)
-0:89          'gs_ub3' (global 3-component vector of uint)
-0:89          'gs_uc3' (global 3-component vector of uint)
+0:89          'gs_ua3' (shared 3-component vector of uint)
+0:89          'gs_ub3' (shared 3-component vector of uint)
+0:89          'gs_uc3' (shared 3-component vector of uint)
 0:90      move second child to first child (temp 3-component vector of uint)
 0:90        'out_u3' (temp 3-component vector of uint)
 0:90        AtomicExchange (temp 3-component vector of uint)
-0:90          'gs_ua3' (global 3-component vector of uint)
-0:90          'gs_ub3' (global 3-component vector of uint)
+0:90          'gs_ua3' (shared 3-component vector of uint)
+0:90          'gs_ub3' (shared 3-component vector of uint)
 0:91      AtomicMax (global void)
-0:91        'gs_ua3' (global 3-component vector of uint)
-0:91        'gs_ub3' (global 3-component vector of uint)
+0:91        'gs_ua3' (shared 3-component vector of uint)
+0:91        'gs_ub3' (shared 3-component vector of uint)
 0:92      move second child to first child (temp 3-component vector of uint)
 0:92        'out_u3' (temp 3-component vector of uint)
 0:92        AtomicMax (temp 3-component vector of uint)
-0:92          'gs_ua3' (global 3-component vector of uint)
-0:92          'gs_ub3' (global 3-component vector of uint)
+0:92          'gs_ua3' (shared 3-component vector of uint)
+0:92          'gs_ub3' (shared 3-component vector of uint)
 0:93      AtomicMin (global void)
-0:93        'gs_ua3' (global 3-component vector of uint)
-0:93        'gs_ub3' (global 3-component vector of uint)
+0:93        'gs_ua3' (shared 3-component vector of uint)
+0:93        'gs_ub3' (shared 3-component vector of uint)
 0:94      move second child to first child (temp 3-component vector of uint)
 0:94        'out_u3' (temp 3-component vector of uint)
 0:94        AtomicMin (temp 3-component vector of uint)
-0:94          'gs_ua3' (global 3-component vector of uint)
-0:94          'gs_ub3' (global 3-component vector of uint)
+0:94          'gs_ua3' (shared 3-component vector of uint)
+0:94          'gs_ub3' (shared 3-component vector of uint)
 0:95      AtomicOr (global void)
-0:95        'gs_ua3' (global 3-component vector of uint)
-0:95        'gs_ub3' (global 3-component vector of uint)
+0:95        'gs_ua3' (shared 3-component vector of uint)
+0:95        'gs_ub3' (shared 3-component vector of uint)
 0:96      move second child to first child (temp 3-component vector of uint)
 0:96        'out_u3' (temp 3-component vector of uint)
 0:96        AtomicOr (temp 3-component vector of uint)
-0:96          'gs_ua3' (global 3-component vector of uint)
-0:96          'gs_ub3' (global 3-component vector of uint)
+0:96          'gs_ua3' (shared 3-component vector of uint)
+0:96          'gs_ub3' (shared 3-component vector of uint)
 0:97      AtomicXor (global void)
-0:97        'gs_ua3' (global 3-component vector of uint)
-0:97        'gs_ub3' (global 3-component vector of uint)
+0:97        'gs_ua3' (shared 3-component vector of uint)
+0:97        'gs_ub3' (shared 3-component vector of uint)
 0:98      move second child to first child (temp 3-component vector of uint)
 0:98        'out_u3' (temp 3-component vector of uint)
 0:98        AtomicXor (temp 3-component vector of uint)
-0:98          'gs_ua3' (global 3-component vector of uint)
-0:98          'gs_ub3' (global 3-component vector of uint)
+0:98          'gs_ua3' (shared 3-component vector of uint)
+0:98          'gs_ub3' (shared 3-component vector of uint)
 0:101      Branch: Return with expression
 0:?         Constant:
 0:?           1.000000
@@ -574,64 +574,64 @@
 0:109      all (global bool)
 0:109        'inF0' (layout(location=0 ) in 4-component vector of float)
 0:112      AtomicAdd (global void)
-0:112        'gs_ua4' (global 4-component vector of uint)
-0:112        'gs_ub4' (global 4-component vector of uint)
+0:112        'gs_ua4' (shared 4-component vector of uint)
+0:112        'gs_ub4' (shared 4-component vector of uint)
 0:113      move second child to first child (temp 4-component vector of uint)
 0:113        'out_u4' (temp 4-component vector of uint)
 0:113        AtomicAdd (temp 4-component vector of uint)
-0:113          'gs_ua4' (global 4-component vector of uint)
-0:113          'gs_ub4' (global 4-component vector of uint)
+0:113          'gs_ua4' (shared 4-component vector of uint)
+0:113          'gs_ub4' (shared 4-component vector of uint)
 0:114      AtomicAnd (global void)
-0:114        'gs_ua4' (global 4-component vector of uint)
-0:114        'gs_ub4' (global 4-component vector of uint)
+0:114        'gs_ua4' (shared 4-component vector of uint)
+0:114        'gs_ub4' (shared 4-component vector of uint)
 0:115      move second child to first child (temp 4-component vector of uint)
 0:115        'out_u4' (temp 4-component vector of uint)
 0:115        AtomicAnd (temp 4-component vector of uint)
-0:115          'gs_ua4' (global 4-component vector of uint)
-0:115          'gs_ub4' (global 4-component vector of uint)
+0:115          'gs_ua4' (shared 4-component vector of uint)
+0:115          'gs_ub4' (shared 4-component vector of uint)
 0:116      move second child to first child (temp 4-component vector of uint)
 0:116        'out_u4' (temp 4-component vector of uint)
 0:116        AtomicCompSwap (temp 4-component vector of uint)
-0:116          'gs_ua4' (global 4-component vector of uint)
-0:116          'gs_ub4' (global 4-component vector of uint)
-0:116          'gs_uc4' (global 4-component vector of uint)
+0:116          'gs_ua4' (shared 4-component vector of uint)
+0:116          'gs_ub4' (shared 4-component vector of uint)
+0:116          'gs_uc4' (shared 4-component vector of uint)
 0:117      move second child to first child (temp 4-component vector of uint)
 0:117        'out_u4' (temp 4-component vector of uint)
 0:117        AtomicExchange (temp 4-component vector of uint)
-0:117          'gs_ua4' (global 4-component vector of uint)
-0:117          'gs_ub4' (global 4-component vector of uint)
+0:117          'gs_ua4' (shared 4-component vector of uint)
+0:117          'gs_ub4' (shared 4-component vector of uint)
 0:118      AtomicMax (global void)
-0:118        'gs_ua4' (global 4-component vector of uint)
-0:118        'gs_ub4' (global 4-component vector of uint)
+0:118        'gs_ua4' (shared 4-component vector of uint)
+0:118        'gs_ub4' (shared 4-component vector of uint)
 0:119      move second child to first child (temp 4-component vector of uint)
 0:119        'out_u4' (temp 4-component vector of uint)
 0:119        AtomicMax (temp 4-component vector of uint)
-0:119          'gs_ua4' (global 4-component vector of uint)
-0:119          'gs_ub4' (global 4-component vector of uint)
+0:119          'gs_ua4' (shared 4-component vector of uint)
+0:119          'gs_ub4' (shared 4-component vector of uint)
 0:120      AtomicMin (global void)
-0:120        'gs_ua4' (global 4-component vector of uint)
-0:120        'gs_ub4' (global 4-component vector of uint)
+0:120        'gs_ua4' (shared 4-component vector of uint)
+0:120        'gs_ub4' (shared 4-component vector of uint)
 0:121      move second child to first child (temp 4-component vector of uint)
 0:121        'out_u4' (temp 4-component vector of uint)
 0:121        AtomicMin (temp 4-component vector of uint)
-0:121          'gs_ua4' (global 4-component vector of uint)
-0:121          'gs_ub4' (global 4-component vector of uint)
+0:121          'gs_ua4' (shared 4-component vector of uint)
+0:121          'gs_ub4' (shared 4-component vector of uint)
 0:122      AtomicOr (global void)
-0:122        'gs_ua4' (global 4-component vector of uint)
-0:122        'gs_ub4' (global 4-component vector of uint)
+0:122        'gs_ua4' (shared 4-component vector of uint)
+0:122        'gs_ub4' (shared 4-component vector of uint)
 0:123      move second child to first child (temp 4-component vector of uint)
 0:123        'out_u4' (temp 4-component vector of uint)
 0:123        AtomicOr (temp 4-component vector of uint)
-0:123          'gs_ua4' (global 4-component vector of uint)
-0:123          'gs_ub4' (global 4-component vector of uint)
+0:123          'gs_ua4' (shared 4-component vector of uint)
+0:123          'gs_ub4' (shared 4-component vector of uint)
 0:124      AtomicXor (global void)
-0:124        'gs_ua4' (global 4-component vector of uint)
-0:124        'gs_ub4' (global 4-component vector of uint)
+0:124        'gs_ua4' (shared 4-component vector of uint)
+0:124        'gs_ub4' (shared 4-component vector of uint)
 0:125      move second child to first child (temp 4-component vector of uint)
 0:125        'out_u4' (temp 4-component vector of uint)
 0:125        AtomicXor (temp 4-component vector of uint)
-0:125          'gs_ua4' (global 4-component vector of uint)
-0:125          'gs_ub4' (global 4-component vector of uint)
+0:125          'gs_ua4' (shared 4-component vector of uint)
+0:125          'gs_ub4' (shared 4-component vector of uint)
 0:128      Sequence
 0:128        move second child to first child (temp 4-component vector of float)
 0:?           '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
@@ -642,18 +642,18 @@
 0:?             4.000000
 0:128        Branch: Return
 0:?   Linker Objects
-0:?     'gs_ua' (global uint)
-0:?     'gs_ub' (global uint)
-0:?     'gs_uc' (global uint)
-0:?     'gs_ua2' (global 2-component vector of uint)
-0:?     'gs_ub2' (global 2-component vector of uint)
-0:?     'gs_uc2' (global 2-component vector of uint)
-0:?     'gs_ua3' (global 3-component vector of uint)
-0:?     'gs_ub3' (global 3-component vector of uint)
-0:?     'gs_uc3' (global 3-component vector of uint)
-0:?     'gs_ua4' (global 4-component vector of uint)
-0:?     'gs_ub4' (global 4-component vector of uint)
-0:?     'gs_uc4' (global 4-component vector of uint)
+0:?     'gs_ua' (shared uint)
+0:?     'gs_ub' (shared uint)
+0:?     'gs_uc' (shared uint)
+0:?     'gs_ua2' (shared 2-component vector of uint)
+0:?     'gs_ub2' (shared 2-component vector of uint)
+0:?     'gs_uc2' (shared 2-component vector of uint)
+0:?     'gs_ua3' (shared 3-component vector of uint)
+0:?     'gs_ub3' (shared 3-component vector of uint)
+0:?     'gs_uc3' (shared 3-component vector of uint)
+0:?     'gs_ua4' (shared 4-component vector of uint)
+0:?     'gs_ub4' (shared 4-component vector of uint)
+0:?     'gs_uc4' (shared 4-component vector of uint)
 0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
 0:?     'inF0' (layout(location=0 ) in 4-component vector of float)
 0:?     'inF1' (layout(location=1 ) in 4-component vector of float)
@@ -740,35 +740,35 @@
               39:             TypePointer Function 38(ivec3)
               40:             TypeFunction 36(fvec3) 37(ptr) 37(ptr) 37(ptr) 39(ptr) 39(ptr)
               49:             TypeBool
-              51:             TypePointer Private 8(int)
-       52(gs_ua):     51(ptr) Variable Private
-       53(gs_ub):     51(ptr) Variable Private
+              51:             TypePointer Workgroup 8(int)
+       52(gs_ua):     51(ptr) Variable Workgroup
+       53(gs_ub):     51(ptr) Variable Workgroup
               55:      8(int) Constant 1
               56:      8(int) Constant 0
-       66(gs_uc):     51(ptr) Variable Private
+       66(gs_uc):     51(ptr) Variable Workgroup
               87:    6(float) Constant 0
-              94:             TypePointer Private 26(ivec2)
-      95(gs_ua2):     94(ptr) Variable Private
-      96(gs_ub2):     94(ptr) Variable Private
-     107(gs_uc2):     94(ptr) Variable Private
+              94:             TypePointer Workgroup 26(ivec2)
+      95(gs_ua2):     94(ptr) Variable Workgroup
+      96(gs_ub2):     94(ptr) Variable Workgroup
+     107(gs_uc2):     94(ptr) Variable Workgroup
              128:    6(float) Constant 1065353216
              129:    6(float) Constant 1073741824
              130:   24(fvec2) ConstantComposite 128 129
-             135:             TypePointer Private 38(ivec3)
-     136(gs_ua3):    135(ptr) Variable Private
-     137(gs_ub3):    135(ptr) Variable Private
-     148(gs_uc3):    135(ptr) Variable Private
+             135:             TypePointer Workgroup 38(ivec3)
+     136(gs_ua3):    135(ptr) Variable Workgroup
+     137(gs_ub3):    135(ptr) Variable Workgroup
+     148(gs_uc3):    135(ptr) Variable Workgroup
              169:    6(float) Constant 1077936128
              170:   36(fvec3) ConstantComposite 128 129 169
              173:             TypeVector 6(float) 4
              174:             TypePointer Input 173(fvec4)
        175(inF0):    174(ptr) Variable Input
              178:             TypeVector 8(int) 4
-             179:             TypePointer Private 178(ivec4)
-     180(gs_ua4):    179(ptr) Variable Private
-     181(gs_ub4):    179(ptr) Variable Private
+             179:             TypePointer Workgroup 178(ivec4)
+     180(gs_ua4):    179(ptr) Variable Workgroup
+     181(gs_ub4):    179(ptr) Variable Workgroup
              184:             TypePointer Function 178(ivec4)
-     193(gs_uc4):    179(ptr) Variable Private
+     193(gs_uc4):    179(ptr) Variable Workgroup
              214:             TypePointer Output 173(fvec4)
 215(@entryPointOutput):    214(ptr) Variable Output
              216:    6(float) Constant 1082130432
diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out
index 4009d8d..d5a0f99 100644
--- a/Test/baseResults/hlsl.intrinsics.frag.out
+++ b/Test/baseResults/hlsl.intrinsics.frag.out
@@ -2782,18 +2782,18 @@
 0:492                0 (const int)
 0:492        Branch: Return
 0:?   Linker Objects
-0:?     'gs_ua' (global uint)
-0:?     'gs_ub' (global uint)
-0:?     'gs_uc' (global uint)
-0:?     'gs_ua2' (global 2-component vector of uint)
-0:?     'gs_ub2' (global 2-component vector of uint)
-0:?     'gs_uc2' (global 2-component vector of uint)
-0:?     'gs_ua3' (global 3-component vector of uint)
-0:?     'gs_ub3' (global 3-component vector of uint)
-0:?     'gs_uc3' (global 3-component vector of uint)
-0:?     'gs_ua4' (global 4-component vector of uint)
-0:?     'gs_ub4' (global 4-component vector of uint)
-0:?     'gs_uc4' (global 4-component vector of uint)
+0:?     'gs_ua' (shared uint)
+0:?     'gs_ub' (shared uint)
+0:?     'gs_uc' (shared uint)
+0:?     'gs_ua2' (shared 2-component vector of uint)
+0:?     'gs_ub2' (shared 2-component vector of uint)
+0:?     'gs_uc2' (shared 2-component vector of uint)
+0:?     'gs_ua3' (shared 3-component vector of uint)
+0:?     'gs_ub3' (shared 3-component vector of uint)
+0:?     'gs_uc3' (shared 3-component vector of uint)
+0:?     'gs_ua4' (shared 4-component vector of uint)
+0:?     'gs_ub4' (shared 4-component vector of uint)
+0:?     'gs_uc4' (shared 4-component vector of uint)
 0:?     'color' (layout(location=0 ) out 4-component vector of float)
 
 
@@ -5583,18 +5583,18 @@
 0:492                0 (const int)
 0:492        Branch: Return
 0:?   Linker Objects
-0:?     'gs_ua' (global uint)
-0:?     'gs_ub' (global uint)
-0:?     'gs_uc' (global uint)
-0:?     'gs_ua2' (global 2-component vector of uint)
-0:?     'gs_ub2' (global 2-component vector of uint)
-0:?     'gs_uc2' (global 2-component vector of uint)
-0:?     'gs_ua3' (global 3-component vector of uint)
-0:?     'gs_ub3' (global 3-component vector of uint)
-0:?     'gs_uc3' (global 3-component vector of uint)
-0:?     'gs_ua4' (global 4-component vector of uint)
-0:?     'gs_ub4' (global 4-component vector of uint)
-0:?     'gs_uc4' (global 4-component vector of uint)
+0:?     'gs_ua' (shared uint)
+0:?     'gs_ub' (shared uint)
+0:?     'gs_uc' (shared uint)
+0:?     'gs_ua2' (shared 2-component vector of uint)
+0:?     'gs_ub2' (shared 2-component vector of uint)
+0:?     'gs_uc2' (shared 2-component vector of uint)
+0:?     'gs_ua3' (shared 3-component vector of uint)
+0:?     'gs_ub3' (shared 3-component vector of uint)
+0:?     'gs_uc3' (shared 3-component vector of uint)
+0:?     'gs_ua4' (shared 4-component vector of uint)
+0:?     'gs_ub4' (shared 4-component vector of uint)
+0:?     'gs_uc4' (shared 4-component vector of uint)
 0:?     'color' (layout(location=0 ) out 4-component vector of float)
 
 // Module Version 10000
@@ -6250,22 +6250,22 @@
             1802:   48(fvec4) ConstantComposite 284 284 284 284
             1804:             TypePointer Output 48(fvec4)
      1805(color):   1804(ptr) Variable Output
-            1809:             TypePointer Private 8(int)
-     1810(gs_ua):   1809(ptr) Variable Private
-     1811(gs_ub):   1809(ptr) Variable Private
-     1812(gs_uc):   1809(ptr) Variable Private
-            1813:             TypePointer Private 26(ivec2)
-    1814(gs_ua2):   1813(ptr) Variable Private
-    1815(gs_ub2):   1813(ptr) Variable Private
-    1816(gs_uc2):   1813(ptr) Variable Private
-            1817:             TypePointer Private 38(ivec3)
-    1818(gs_ua3):   1817(ptr) Variable Private
-    1819(gs_ub3):   1817(ptr) Variable Private
-    1820(gs_uc3):   1817(ptr) Variable Private
-            1821:             TypePointer Private 50(ivec4)
-    1822(gs_ua4):   1821(ptr) Variable Private
-    1823(gs_ub4):   1821(ptr) Variable Private
-    1824(gs_uc4):   1821(ptr) Variable Private
+            1809:             TypePointer Workgroup 8(int)
+     1810(gs_ua):   1809(ptr) Variable Workgroup
+     1811(gs_ub):   1809(ptr) Variable Workgroup
+     1812(gs_uc):   1809(ptr) Variable Workgroup
+            1813:             TypePointer Workgroup 26(ivec2)
+    1814(gs_ua2):   1813(ptr) Variable Workgroup
+    1815(gs_ub2):   1813(ptr) Variable Workgroup
+    1816(gs_uc2):   1813(ptr) Variable Workgroup
+            1817:             TypePointer Workgroup 38(ivec3)
+    1818(gs_ua3):   1817(ptr) Variable Workgroup
+    1819(gs_ub3):   1817(ptr) Variable Workgroup
+    1820(gs_uc3):   1817(ptr) Variable Workgroup
+            1821:             TypePointer Workgroup 50(ivec4)
+    1822(gs_ua4):   1821(ptr) Variable Workgroup
+    1823(gs_ub4):   1821(ptr) Variable Workgroup
+    1824(gs_uc4):   1821(ptr) Variable Workgroup
          4(main):           2 Function None 3
                5:             Label
  1800(ps_output):   1799(ptr) Variable Function
diff --git a/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
index 77f4fe8..9c1b4ad 100644
--- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out
@@ -5,7 +5,7 @@
 0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
-0:32      textureFetch (global 4-component vector of float)
+0:32      textureFetch (temp 4-component vector of float)
 0:32        'g_tTex2dmsf4' (uniform texture2DMS)
 0:32        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:32          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -13,7 +13,7 @@
 0:32            1 (const uint)
 0:32        Constant:
 0:32          3 (const int)
-0:33      textureFetch (global 4-component vector of int)
+0:33      textureFetch (temp 4-component vector of int)
 0:33        'g_tTex2dmsi4' (uniform itexture2DMS)
 0:33        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:33          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -21,7 +21,7 @@
 0:33            1 (const uint)
 0:33        Constant:
 0:33          3 (const int)
-0:34      textureFetch (global 4-component vector of uint)
+0:34      textureFetch (temp 4-component vector of uint)
 0:34        'g_tTex2dmsu4' (uniform utexture2DMS)
 0:34        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:34          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -29,7 +29,7 @@
 0:34            1 (const uint)
 0:34        Constant:
 0:34          3 (const int)
-0:37      textureFetchOffset (global 4-component vector of float)
+0:37      textureFetchOffset (temp 4-component vector of float)
 0:37        'g_tTex2dmsf4' (uniform texture2DMS)
 0:37        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:37          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -41,7 +41,7 @@
 0:37          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:37          Constant:
 0:37            5 (const uint)
-0:38      textureFetchOffset (global 4-component vector of int)
+0:38      textureFetchOffset (temp 4-component vector of int)
 0:38        'g_tTex2dmsi4' (uniform itexture2DMS)
 0:38        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:38          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -53,7 +53,7 @@
 0:38          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:38          Constant:
 0:38            5 (const uint)
-0:39      textureFetchOffset (global 4-component vector of uint)
+0:39      textureFetchOffset (temp 4-component vector of uint)
 0:39        'g_tTex2dmsu4' (uniform utexture2DMS)
 0:39        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:39          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -65,7 +65,7 @@
 0:39          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:39          Constant:
 0:39            5 (const uint)
-0:42      textureFetch (global 4-component vector of float)
+0:42      textureFetch (temp 4-component vector of float)
 0:42        'g_tTex2dmsf4a' (uniform texture2DMSArray)
 0:42        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:42          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -73,7 +73,7 @@
 0:42            2 (const uint)
 0:42        Constant:
 0:42          3 (const int)
-0:43      textureFetch (global 4-component vector of int)
+0:43      textureFetch (temp 4-component vector of int)
 0:43        'g_tTex2dmsi4a' (uniform itexture2DMSArray)
 0:43        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:43          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -81,7 +81,7 @@
 0:43            2 (const uint)
 0:43        Constant:
 0:43          3 (const int)
-0:44      textureFetch (global 4-component vector of uint)
+0:44      textureFetch (temp 4-component vector of uint)
 0:44        'g_tTex2dmsu4a' (uniform utexture2DMSArray)
 0:44        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:44          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -89,7 +89,7 @@
 0:44            2 (const uint)
 0:44        Constant:
 0:44          3 (const int)
-0:47      textureFetchOffset (global 4-component vector of float)
+0:47      textureFetchOffset (temp 4-component vector of float)
 0:47        'g_tTex2dmsf4a' (uniform texture2DMSArray)
 0:47        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:47          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -101,7 +101,7 @@
 0:47          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:47          Constant:
 0:47            5 (const uint)
-0:48      textureFetchOffset (global 4-component vector of int)
+0:48      textureFetchOffset (temp 4-component vector of int)
 0:48        'g_tTex2dmsi4a' (uniform itexture2DMSArray)
 0:48        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:48          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -113,7 +113,7 @@
 0:48          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:48          Constant:
 0:48            5 (const uint)
-0:49      textureFetchOffset (global 4-component vector of uint)
+0:49      textureFetchOffset (temp 4-component vector of uint)
 0:49        'g_tTex2dmsu4a' (uniform utexture2DMSArray)
 0:49        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:49          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -179,7 +179,7 @@
 0:28  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:28    Function Parameters: 
 0:?     Sequence
-0:32      textureFetch (global 4-component vector of float)
+0:32      textureFetch (temp 4-component vector of float)
 0:32        'g_tTex2dmsf4' (uniform texture2DMS)
 0:32        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:32          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -187,7 +187,7 @@
 0:32            1 (const uint)
 0:32        Constant:
 0:32          3 (const int)
-0:33      textureFetch (global 4-component vector of int)
+0:33      textureFetch (temp 4-component vector of int)
 0:33        'g_tTex2dmsi4' (uniform itexture2DMS)
 0:33        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:33          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -195,7 +195,7 @@
 0:33            1 (const uint)
 0:33        Constant:
 0:33          3 (const int)
-0:34      textureFetch (global 4-component vector of uint)
+0:34      textureFetch (temp 4-component vector of uint)
 0:34        'g_tTex2dmsu4' (uniform utexture2DMS)
 0:34        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:34          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -203,7 +203,7 @@
 0:34            1 (const uint)
 0:34        Constant:
 0:34          3 (const int)
-0:37      textureFetchOffset (global 4-component vector of float)
+0:37      textureFetchOffset (temp 4-component vector of float)
 0:37        'g_tTex2dmsf4' (uniform texture2DMS)
 0:37        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:37          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -215,7 +215,7 @@
 0:37          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:37          Constant:
 0:37            5 (const uint)
-0:38      textureFetchOffset (global 4-component vector of int)
+0:38      textureFetchOffset (temp 4-component vector of int)
 0:38        'g_tTex2dmsi4' (uniform itexture2DMS)
 0:38        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:38          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -227,7 +227,7 @@
 0:38          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:38          Constant:
 0:38            5 (const uint)
-0:39      textureFetchOffset (global 4-component vector of uint)
+0:39      textureFetchOffset (temp 4-component vector of uint)
 0:39        'g_tTex2dmsu4' (uniform utexture2DMS)
 0:39        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:39          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -239,7 +239,7 @@
 0:39          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:39          Constant:
 0:39            5 (const uint)
-0:42      textureFetch (global 4-component vector of float)
+0:42      textureFetch (temp 4-component vector of float)
 0:42        'g_tTex2dmsf4a' (uniform texture2DMSArray)
 0:42        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:42          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -247,7 +247,7 @@
 0:42            2 (const uint)
 0:42        Constant:
 0:42          3 (const int)
-0:43      textureFetch (global 4-component vector of int)
+0:43      textureFetch (temp 4-component vector of int)
 0:43        'g_tTex2dmsi4a' (uniform itexture2DMSArray)
 0:43        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:43          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -255,7 +255,7 @@
 0:43            2 (const uint)
 0:43        Constant:
 0:43          3 (const int)
-0:44      textureFetch (global 4-component vector of uint)
+0:44      textureFetch (temp 4-component vector of uint)
 0:44        'g_tTex2dmsu4a' (uniform utexture2DMSArray)
 0:44        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:44          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -263,7 +263,7 @@
 0:44            2 (const uint)
 0:44        Constant:
 0:44          3 (const int)
-0:47      textureFetchOffset (global 4-component vector of float)
+0:47      textureFetchOffset (temp 4-component vector of float)
 0:47        'g_tTex2dmsf4a' (uniform texture2DMSArray)
 0:47        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:47          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -275,7 +275,7 @@
 0:47          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:47          Constant:
 0:47            5 (const uint)
-0:48      textureFetchOffset (global 4-component vector of int)
+0:48      textureFetchOffset (temp 4-component vector of int)
 0:48        'g_tTex2dmsi4a' (uniform itexture2DMSArray)
 0:48        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:48          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -287,7 +287,7 @@
 0:48          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:48          Constant:
 0:48            5 (const uint)
-0:49      textureFetchOffset (global 4-component vector of uint)
+0:49      textureFetchOffset (temp 4-component vector of uint)
 0:49        'g_tTex2dmsu4a' (uniform utexture2DMSArray)
 0:49        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:49          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
diff --git a/Test/baseResults/hlsl.load.array.dx10.frag.out b/Test/baseResults/hlsl.load.array.dx10.frag.out
index 57e479a..ed2951f 100644
--- a/Test/baseResults/hlsl.load.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.array.dx10.frag.out
@@ -5,7 +5,7 @@
 0:48  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:48    Function Parameters: 
 0:?     Sequence
-0:52      textureFetch (global 4-component vector of float)
+0:52      textureFetch (temp 4-component vector of float)
 0:52        'g_tTex1df4a' (uniform texture1DArray)
 0:52        vector swizzle (temp 2-component vector of int)
 0:52          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -24,7 +24,7 @@
 0:52              2 (const uint)
 0:52          Constant:
 0:52            2 (const int)
-0:53      textureFetch (global 4-component vector of int)
+0:53      textureFetch (temp 4-component vector of int)
 0:53        'g_tTex1di4a' (uniform itexture1DArray)
 0:53        vector swizzle (temp 2-component vector of int)
 0:53          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -43,7 +43,7 @@
 0:53              2 (const uint)
 0:53          Constant:
 0:53            2 (const int)
-0:54      textureFetch (global 4-component vector of uint)
+0:54      textureFetch (temp 4-component vector of uint)
 0:54        'g_tTex1du4a' (uniform utexture1DArray)
 0:54        vector swizzle (temp 2-component vector of int)
 0:54          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -62,7 +62,7 @@
 0:54              2 (const uint)
 0:54          Constant:
 0:54            2 (const int)
-0:57      textureFetch (global 4-component vector of float)
+0:57      textureFetch (temp 4-component vector of float)
 0:57        'g_tTex2df4a' (uniform texture2DArray)
 0:57        vector swizzle (temp 3-component vector of int)
 0:57          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -83,7 +83,7 @@
 0:57              3 (const uint)
 0:57          Constant:
 0:57            3 (const int)
-0:58      textureFetch (global 4-component vector of int)
+0:58      textureFetch (temp 4-component vector of int)
 0:58        'g_tTex2di4a' (uniform itexture2DArray)
 0:58        vector swizzle (temp 3-component vector of int)
 0:58          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -104,7 +104,7 @@
 0:58              3 (const uint)
 0:58          Constant:
 0:58            3 (const int)
-0:59      textureFetch (global 4-component vector of uint)
+0:59      textureFetch (temp 4-component vector of uint)
 0:59        'g_tTex2du4a' (uniform utexture2DArray)
 0:59        vector swizzle (temp 3-component vector of int)
 0:59          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -194,7 +194,7 @@
 0:48  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:48    Function Parameters: 
 0:?     Sequence
-0:52      textureFetch (global 4-component vector of float)
+0:52      textureFetch (temp 4-component vector of float)
 0:52        'g_tTex1df4a' (uniform texture1DArray)
 0:52        vector swizzle (temp 2-component vector of int)
 0:52          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -213,7 +213,7 @@
 0:52              2 (const uint)
 0:52          Constant:
 0:52            2 (const int)
-0:53      textureFetch (global 4-component vector of int)
+0:53      textureFetch (temp 4-component vector of int)
 0:53        'g_tTex1di4a' (uniform itexture1DArray)
 0:53        vector swizzle (temp 2-component vector of int)
 0:53          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -232,7 +232,7 @@
 0:53              2 (const uint)
 0:53          Constant:
 0:53            2 (const int)
-0:54      textureFetch (global 4-component vector of uint)
+0:54      textureFetch (temp 4-component vector of uint)
 0:54        'g_tTex1du4a' (uniform utexture1DArray)
 0:54        vector swizzle (temp 2-component vector of int)
 0:54          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -251,7 +251,7 @@
 0:54              2 (const uint)
 0:54          Constant:
 0:54            2 (const int)
-0:57      textureFetch (global 4-component vector of float)
+0:57      textureFetch (temp 4-component vector of float)
 0:57        'g_tTex2df4a' (uniform texture2DArray)
 0:57        vector swizzle (temp 3-component vector of int)
 0:57          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -272,7 +272,7 @@
 0:57              3 (const uint)
 0:57          Constant:
 0:57            3 (const int)
-0:58      textureFetch (global 4-component vector of int)
+0:58      textureFetch (temp 4-component vector of int)
 0:58        'g_tTex2di4a' (uniform itexture2DArray)
 0:58        vector swizzle (temp 3-component vector of int)
 0:58          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -293,7 +293,7 @@
 0:58              3 (const uint)
 0:58          Constant:
 0:58            3 (const int)
-0:59      textureFetch (global 4-component vector of uint)
+0:59      textureFetch (temp 4-component vector of uint)
 0:59        'g_tTex2du4a' (uniform utexture2DArray)
 0:59        vector swizzle (temp 3-component vector of int)
 0:59          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
diff --git a/Test/baseResults/hlsl.load.basic.dx10.frag.out b/Test/baseResults/hlsl.load.basic.dx10.frag.out
index 90f7e49..3a4b3fc 100644
--- a/Test/baseResults/hlsl.load.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.basic.dx10.frag.out
@@ -5,7 +5,7 @@
 0:48  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:48    Function Parameters: 
 0:?     Sequence
-0:52      textureFetch (global 4-component vector of float)
+0:52      textureFetch (temp 4-component vector of float)
 0:52        'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:52        vector swizzle (temp int)
 0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -22,7 +22,7 @@
 0:52              1 (const uint)
 0:52          Constant:
 0:52            1 (const int)
-0:53      textureFetch (global 4-component vector of int)
+0:53      textureFetch (temp 4-component vector of int)
 0:53        'g_tTex1di4' (uniform itexture1D)
 0:53        vector swizzle (temp int)
 0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -39,7 +39,7 @@
 0:53              1 (const uint)
 0:53          Constant:
 0:53            1 (const int)
-0:54      textureFetch (global 4-component vector of uint)
+0:54      textureFetch (temp 4-component vector of uint)
 0:54        'g_tTex1du4' (uniform utexture1D)
 0:54        vector swizzle (temp int)
 0:54          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -56,7 +56,7 @@
 0:54              1 (const uint)
 0:54          Constant:
 0:54            1 (const int)
-0:57      textureFetch (global 4-component vector of float)
+0:57      textureFetch (temp 4-component vector of float)
 0:57        'g_tTex2df4' (uniform texture2D)
 0:57        vector swizzle (temp 2-component vector of int)
 0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -75,7 +75,7 @@
 0:57              2 (const uint)
 0:57          Constant:
 0:57            2 (const int)
-0:58      textureFetch (global 4-component vector of int)
+0:58      textureFetch (temp 4-component vector of int)
 0:58        'g_tTex2di4' (uniform itexture2D)
 0:58        vector swizzle (temp 2-component vector of int)
 0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -94,7 +94,7 @@
 0:58              2 (const uint)
 0:58          Constant:
 0:58            2 (const int)
-0:59      textureFetch (global 4-component vector of uint)
+0:59      textureFetch (temp 4-component vector of uint)
 0:59        'g_tTex2du4' (uniform utexture2D)
 0:59        vector swizzle (temp 2-component vector of int)
 0:59          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -113,7 +113,7 @@
 0:59              2 (const uint)
 0:59          Constant:
 0:59            2 (const int)
-0:62      textureFetch (global 4-component vector of float)
+0:62      textureFetch (temp 4-component vector of float)
 0:62        'g_tTex3df4' (uniform texture3D)
 0:62        vector swizzle (temp 3-component vector of int)
 0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -134,7 +134,7 @@
 0:62              3 (const uint)
 0:62          Constant:
 0:62            3 (const int)
-0:63      textureFetch (global 4-component vector of int)
+0:63      textureFetch (temp 4-component vector of int)
 0:63        'g_tTex3di4' (uniform itexture3D)
 0:63        vector swizzle (temp 3-component vector of int)
 0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -155,7 +155,7 @@
 0:63              3 (const uint)
 0:63          Constant:
 0:63            3 (const int)
-0:64      textureFetch (global 4-component vector of uint)
+0:64      textureFetch (temp 4-component vector of uint)
 0:64        'g_tTex3du4' (uniform utexture3D)
 0:64        vector swizzle (temp 3-component vector of int)
 0:64          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -245,7 +245,7 @@
 0:48  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:48    Function Parameters: 
 0:?     Sequence
-0:52      textureFetch (global 4-component vector of float)
+0:52      textureFetch (temp 4-component vector of float)
 0:52        'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:52        vector swizzle (temp int)
 0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -262,7 +262,7 @@
 0:52              1 (const uint)
 0:52          Constant:
 0:52            1 (const int)
-0:53      textureFetch (global 4-component vector of int)
+0:53      textureFetch (temp 4-component vector of int)
 0:53        'g_tTex1di4' (uniform itexture1D)
 0:53        vector swizzle (temp int)
 0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -279,7 +279,7 @@
 0:53              1 (const uint)
 0:53          Constant:
 0:53            1 (const int)
-0:54      textureFetch (global 4-component vector of uint)
+0:54      textureFetch (temp 4-component vector of uint)
 0:54        'g_tTex1du4' (uniform utexture1D)
 0:54        vector swizzle (temp int)
 0:54          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -296,7 +296,7 @@
 0:54              1 (const uint)
 0:54          Constant:
 0:54            1 (const int)
-0:57      textureFetch (global 4-component vector of float)
+0:57      textureFetch (temp 4-component vector of float)
 0:57        'g_tTex2df4' (uniform texture2D)
 0:57        vector swizzle (temp 2-component vector of int)
 0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -315,7 +315,7 @@
 0:57              2 (const uint)
 0:57          Constant:
 0:57            2 (const int)
-0:58      textureFetch (global 4-component vector of int)
+0:58      textureFetch (temp 4-component vector of int)
 0:58        'g_tTex2di4' (uniform itexture2D)
 0:58        vector swizzle (temp 2-component vector of int)
 0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -334,7 +334,7 @@
 0:58              2 (const uint)
 0:58          Constant:
 0:58            2 (const int)
-0:59      textureFetch (global 4-component vector of uint)
+0:59      textureFetch (temp 4-component vector of uint)
 0:59        'g_tTex2du4' (uniform utexture2D)
 0:59        vector swizzle (temp 2-component vector of int)
 0:59          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -353,7 +353,7 @@
 0:59              2 (const uint)
 0:59          Constant:
 0:59            2 (const int)
-0:62      textureFetch (global 4-component vector of float)
+0:62      textureFetch (temp 4-component vector of float)
 0:62        'g_tTex3df4' (uniform texture3D)
 0:62        vector swizzle (temp 3-component vector of int)
 0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -374,7 +374,7 @@
 0:62              3 (const uint)
 0:62          Constant:
 0:62            3 (const int)
-0:63      textureFetch (global 4-component vector of int)
+0:63      textureFetch (temp 4-component vector of int)
 0:63        'g_tTex3di4' (uniform itexture3D)
 0:63        vector swizzle (temp 3-component vector of int)
 0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -395,7 +395,7 @@
 0:63              3 (const uint)
 0:63          Constant:
 0:63            3 (const int)
-0:64      textureFetch (global 4-component vector of uint)
+0:64      textureFetch (temp 4-component vector of uint)
 0:64        'g_tTex3du4' (uniform utexture3D)
 0:64        vector swizzle (temp 3-component vector of int)
 0:64          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
diff --git a/Test/baseResults/hlsl.load.basic.dx10.vert.out b/Test/baseResults/hlsl.load.basic.dx10.vert.out
index 4649f29..9495c60 100644
--- a/Test/baseResults/hlsl.load.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.load.basic.dx10.vert.out
@@ -4,7 +4,7 @@
 0:47  Function Definition: main( (temp structure{temp 4-component vector of float Pos})
 0:47    Function Parameters: 
 0:?     Sequence
-0:51      textureFetch (global 4-component vector of float)
+0:51      textureFetch (temp 4-component vector of float)
 0:51        'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:51        vector swizzle (temp int)
 0:51          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -21,7 +21,7 @@
 0:51              1 (const uint)
 0:51          Constant:
 0:51            1 (const int)
-0:52      textureFetch (global 4-component vector of int)
+0:52      textureFetch (temp 4-component vector of int)
 0:52        'g_tTex1di4' (uniform itexture1D)
 0:52        vector swizzle (temp int)
 0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -38,7 +38,7 @@
 0:52              1 (const uint)
 0:52          Constant:
 0:52            1 (const int)
-0:53      textureFetch (global 4-component vector of uint)
+0:53      textureFetch (temp 4-component vector of uint)
 0:53        'g_tTex1du4' (uniform utexture1D)
 0:53        vector swizzle (temp int)
 0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -55,7 +55,7 @@
 0:53              1 (const uint)
 0:53          Constant:
 0:53            1 (const int)
-0:56      textureFetch (global 4-component vector of float)
+0:56      textureFetch (temp 4-component vector of float)
 0:56        'g_tTex2df4' (uniform texture2D)
 0:56        vector swizzle (temp 2-component vector of int)
 0:56          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -74,7 +74,7 @@
 0:56              2 (const uint)
 0:56          Constant:
 0:56            2 (const int)
-0:57      textureFetch (global 4-component vector of int)
+0:57      textureFetch (temp 4-component vector of int)
 0:57        'g_tTex2di4' (uniform itexture2D)
 0:57        vector swizzle (temp 2-component vector of int)
 0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -93,7 +93,7 @@
 0:57              2 (const uint)
 0:57          Constant:
 0:57            2 (const int)
-0:58      textureFetch (global 4-component vector of uint)
+0:58      textureFetch (temp 4-component vector of uint)
 0:58        'g_tTex2du4' (uniform utexture2D)
 0:58        vector swizzle (temp 2-component vector of int)
 0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -112,7 +112,7 @@
 0:58              2 (const uint)
 0:58          Constant:
 0:58            2 (const int)
-0:61      textureFetch (global 4-component vector of float)
+0:61      textureFetch (temp 4-component vector of float)
 0:61        'g_tTex3df4' (uniform texture3D)
 0:61        vector swizzle (temp 3-component vector of int)
 0:61          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -133,7 +133,7 @@
 0:61              3 (const uint)
 0:61          Constant:
 0:61            3 (const int)
-0:62      textureFetch (global 4-component vector of int)
+0:62      textureFetch (temp 4-component vector of int)
 0:62        'g_tTex3di4' (uniform itexture3D)
 0:62        vector swizzle (temp 3-component vector of int)
 0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -154,7 +154,7 @@
 0:62              3 (const uint)
 0:62          Constant:
 0:62            3 (const int)
-0:63      textureFetch (global 4-component vector of uint)
+0:63      textureFetch (temp 4-component vector of uint)
 0:63        'g_tTex3du4' (uniform utexture3D)
 0:63        vector swizzle (temp 3-component vector of int)
 0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -229,7 +229,7 @@
 0:47  Function Definition: main( (temp structure{temp 4-component vector of float Pos})
 0:47    Function Parameters: 
 0:?     Sequence
-0:51      textureFetch (global 4-component vector of float)
+0:51      textureFetch (temp 4-component vector of float)
 0:51        'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:51        vector swizzle (temp int)
 0:51          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -246,7 +246,7 @@
 0:51              1 (const uint)
 0:51          Constant:
 0:51            1 (const int)
-0:52      textureFetch (global 4-component vector of int)
+0:52      textureFetch (temp 4-component vector of int)
 0:52        'g_tTex1di4' (uniform itexture1D)
 0:52        vector swizzle (temp int)
 0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -263,7 +263,7 @@
 0:52              1 (const uint)
 0:52          Constant:
 0:52            1 (const int)
-0:53      textureFetch (global 4-component vector of uint)
+0:53      textureFetch (temp 4-component vector of uint)
 0:53        'g_tTex1du4' (uniform utexture1D)
 0:53        vector swizzle (temp int)
 0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -280,7 +280,7 @@
 0:53              1 (const uint)
 0:53          Constant:
 0:53            1 (const int)
-0:56      textureFetch (global 4-component vector of float)
+0:56      textureFetch (temp 4-component vector of float)
 0:56        'g_tTex2df4' (uniform texture2D)
 0:56        vector swizzle (temp 2-component vector of int)
 0:56          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -299,7 +299,7 @@
 0:56              2 (const uint)
 0:56          Constant:
 0:56            2 (const int)
-0:57      textureFetch (global 4-component vector of int)
+0:57      textureFetch (temp 4-component vector of int)
 0:57        'g_tTex2di4' (uniform itexture2D)
 0:57        vector swizzle (temp 2-component vector of int)
 0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -318,7 +318,7 @@
 0:57              2 (const uint)
 0:57          Constant:
 0:57            2 (const int)
-0:58      textureFetch (global 4-component vector of uint)
+0:58      textureFetch (temp 4-component vector of uint)
 0:58        'g_tTex2du4' (uniform utexture2D)
 0:58        vector swizzle (temp 2-component vector of int)
 0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -337,7 +337,7 @@
 0:58              2 (const uint)
 0:58          Constant:
 0:58            2 (const int)
-0:61      textureFetch (global 4-component vector of float)
+0:61      textureFetch (temp 4-component vector of float)
 0:61        'g_tTex3df4' (uniform texture3D)
 0:61        vector swizzle (temp 3-component vector of int)
 0:61          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -358,7 +358,7 @@
 0:61              3 (const uint)
 0:61          Constant:
 0:61            3 (const int)
-0:62      textureFetch (global 4-component vector of int)
+0:62      textureFetch (temp 4-component vector of int)
 0:62        'g_tTex3di4' (uniform itexture3D)
 0:62        vector swizzle (temp 3-component vector of int)
 0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -379,7 +379,7 @@
 0:62              3 (const uint)
 0:62          Constant:
 0:62            3 (const int)
-0:63      textureFetch (global 4-component vector of uint)
+0:63      textureFetch (temp 4-component vector of uint)
 0:63        'g_tTex3du4' (uniform utexture3D)
 0:63        vector swizzle (temp 3-component vector of int)
 0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
diff --git a/Test/baseResults/hlsl.load.buffer.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.dx10.frag.out
index ded9382..560d8f5 100644
--- a/Test/baseResults/hlsl.load.buffer.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.buffer.dx10.frag.out
@@ -8,8 +8,8 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of float)
 0:28          'r00' (temp 4-component vector of float)
-0:28          textureFetch (global 4-component vector of float)
-0:28            'g_tTexbf4' (uniform samplerBuffer)
+0:28          textureFetch (temp 4-component vector of float)
+0:28            'g_tTexbf4' (layout(rgba32f ) uniform samplerBuffer)
 0:28            c1: direct index for structure (layout(offset=0 ) uniform int)
 0:28              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:28              Constant:
@@ -17,8 +17,8 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of int)
 0:29          'r01' (temp 4-component vector of int)
-0:29          textureFetch (global 4-component vector of int)
-0:29            'g_tTexbi4' (uniform isamplerBuffer)
+0:29          textureFetch (temp 4-component vector of int)
+0:29            'g_tTexbi4' (layout(rgba32i ) uniform isamplerBuffer)
 0:29            c1: direct index for structure (layout(offset=0 ) uniform int)
 0:29              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:29              Constant:
@@ -26,8 +26,8 @@
 0:30      Sequence
 0:30        move second child to first child (temp 4-component vector of uint)
 0:30          'r02' (temp 4-component vector of uint)
-0:30          textureFetch (global 4-component vector of uint)
-0:30            'g_tTexbu4' (uniform usamplerBuffer)
+0:30          textureFetch (temp 4-component vector of uint)
+0:30            'g_tTexbu4' (layout(rgba32ui ) uniform usamplerBuffer)
 0:30            c1: direct index for structure (layout(offset=0 ) uniform int)
 0:30              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:30              Constant:
@@ -65,10 +65,10 @@
 0:37                1 (const int)
 0:37        Branch: Return
 0:?   Linker Objects
-0:?     'g_tTexbf4_test' (layout(binding=0 ) uniform samplerBuffer)
-0:?     'g_tTexbf4' (uniform samplerBuffer)
-0:?     'g_tTexbi4' (uniform isamplerBuffer)
-0:?     'g_tTexbu4' (uniform usamplerBuffer)
+0:?     'g_tTexbf4_test' (layout(binding=0 rgba32f ) uniform samplerBuffer)
+0:?     'g_tTexbf4' (layout(rgba32f ) uniform samplerBuffer)
+0:?     'g_tTexbi4' (layout(rgba32i ) uniform isamplerBuffer)
+0:?     'g_tTexbu4' (layout(rgba32ui ) uniform usamplerBuffer)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
 0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -86,8 +86,8 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of float)
 0:28          'r00' (temp 4-component vector of float)
-0:28          textureFetch (global 4-component vector of float)
-0:28            'g_tTexbf4' (uniform samplerBuffer)
+0:28          textureFetch (temp 4-component vector of float)
+0:28            'g_tTexbf4' (layout(rgba32f ) uniform samplerBuffer)
 0:28            c1: direct index for structure (layout(offset=0 ) uniform int)
 0:28              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:28              Constant:
@@ -95,8 +95,8 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of int)
 0:29          'r01' (temp 4-component vector of int)
-0:29          textureFetch (global 4-component vector of int)
-0:29            'g_tTexbi4' (uniform isamplerBuffer)
+0:29          textureFetch (temp 4-component vector of int)
+0:29            'g_tTexbi4' (layout(rgba32i ) uniform isamplerBuffer)
 0:29            c1: direct index for structure (layout(offset=0 ) uniform int)
 0:29              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:29              Constant:
@@ -104,8 +104,8 @@
 0:30      Sequence
 0:30        move second child to first child (temp 4-component vector of uint)
 0:30          'r02' (temp 4-component vector of uint)
-0:30          textureFetch (global 4-component vector of uint)
-0:30            'g_tTexbu4' (uniform usamplerBuffer)
+0:30          textureFetch (temp 4-component vector of uint)
+0:30            'g_tTexbu4' (layout(rgba32ui ) uniform usamplerBuffer)
 0:30            c1: direct index for structure (layout(offset=0 ) uniform int)
 0:30              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:30              Constant:
@@ -143,10 +143,10 @@
 0:37                1 (const int)
 0:37        Branch: Return
 0:?   Linker Objects
-0:?     'g_tTexbf4_test' (layout(binding=0 ) uniform samplerBuffer)
-0:?     'g_tTexbf4' (uniform samplerBuffer)
-0:?     'g_tTexbi4' (uniform isamplerBuffer)
-0:?     'g_tTexbu4' (uniform usamplerBuffer)
+0:?     'g_tTexbf4_test' (layout(binding=0 rgba32f ) uniform samplerBuffer)
+0:?     'g_tTexbf4' (layout(rgba32f ) uniform samplerBuffer)
+0:?     'g_tTexbi4' (layout(rgba32i ) uniform isamplerBuffer)
+0:?     'g_tTexbu4' (layout(rgba32ui ) uniform usamplerBuffer)
 0:?     'Color' (layout(location=0 ) out 4-component vector of float)
 0:?     'Depth' (out float FragDepth)
 0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -207,7 +207,7 @@
                6:             TypeFloat 32
                7:             TypeVector 6(float) 4
                8:             TypePointer Function 7(fvec4)
-              10:             TypeImage 6(float) Buffer sampled format:Unknown
+              10:             TypeImage 6(float) Buffer sampled format:Rgba32f
               11:             TypeSampledImage 10
               12:             TypePointer UniformConstant 11
    13(g_tTexbf4):     12(ptr) Variable UniformConstant
@@ -221,14 +221,14 @@
               22:     15(int) Constant 0
               23:             TypePointer Uniform 15(int)
               28:             TypePointer Function 18(ivec4)
-              30:             TypeImage 15(int) Buffer sampled format:Unknown
+              30:             TypeImage 15(int) Buffer sampled format:Rgba32i
               31:             TypeSampledImage 30
               32:             TypePointer UniformConstant 31
    33(g_tTexbi4):     32(ptr) Variable UniformConstant
               39:             TypeInt 32 0
               40:             TypeVector 39(int) 4
               41:             TypePointer Function 40(ivec4)
-              43:             TypeImage 39(int) Buffer sampled format:Unknown
+              43:             TypeImage 39(int) Buffer sampled format:Rgba32ui
               44:             TypeSampledImage 43
               45:             TypePointer UniformConstant 44
    46(g_tTexbu4):     45(ptr) Variable UniformConstant
diff --git a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out
new file mode 100644
index 0000000..6d64b94
--- /dev/null
+++ b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out
@@ -0,0 +1,290 @@
+hlsl.load.buffer.float.dx10.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:24    Function Parameters: 
+0:?     Sequence
+0:28      Sequence
+0:28        move second child to first child (temp float)
+0:28          'r00' (temp float)
+0:28          Construct float (temp float)
+0:?             textureFetch (temp 4-component vector of float)
+0:28              'g_tTexbfs' (layout(r32f ) uniform samplerBuffer)
+0:28              c1: direct index for structure (layout(offset=0 ) uniform int)
+0:28                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:28                Constant:
+0:28                  0 (const uint)
+0:29      Sequence
+0:29        move second child to first child (temp int)
+0:29          'r01' (temp int)
+0:29          Construct int (temp int)
+0:?             textureFetch (temp 4-component vector of int)
+0:29              'g_tTexbis' (layout(r32i ) uniform isamplerBuffer)
+0:29              c1: direct index for structure (layout(offset=0 ) uniform int)
+0:29                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:29                Constant:
+0:29                  0 (const uint)
+0:30      Sequence
+0:30        move second child to first child (temp uint)
+0:30          'r02' (temp uint)
+0:30          Construct uint (temp uint)
+0:?             textureFetch (temp 4-component vector of uint)
+0:30              'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer)
+0:30              c1: direct index for structure (layout(offset=0 ) uniform int)
+0:30                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:30                Constant:
+0:30                  0 (const uint)
+0:34      move second child to first child (temp 4-component vector of float)
+0:34        Color: direct index for structure (temp 4-component vector of float)
+0:34          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:34          Constant:
+0:34            0 (const int)
+0:34        Constant:
+0:34          1.000000
+0:34          1.000000
+0:34          1.000000
+0:34          1.000000
+0:35      move second child to first child (temp float)
+0:35        Depth: direct index for structure (temp float)
+0:35          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:35          Constant:
+0:35            1 (const int)
+0:35        Constant:
+0:35          1.000000
+0:37      Sequence
+0:37        Sequence
+0:37          move second child to first child (temp 4-component vector of float)
+0:?             'Color' (layout(location=0 ) out 4-component vector of float)
+0:37            Color: direct index for structure (temp 4-component vector of float)
+0:37              'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:37              Constant:
+0:37                0 (const int)
+0:37          move second child to first child (temp float)
+0:?             'Depth' (out float FragDepth)
+0:37            Depth: direct index for structure (temp float)
+0:37              'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:37              Constant:
+0:37                1 (const int)
+0:37        Branch: Return
+0:?   Linker Objects
+0:?     'g_tTexbfs_test' (layout(binding=0 r32f ) uniform samplerBuffer)
+0:?     'g_tTexbfs' (layout(r32f ) uniform samplerBuffer)
+0:?     'g_tTexbis' (layout(r32i ) uniform isamplerBuffer)
+0:?     'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer)
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:24  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:24    Function Parameters: 
+0:?     Sequence
+0:28      Sequence
+0:28        move second child to first child (temp float)
+0:28          'r00' (temp float)
+0:28          Construct float (temp float)
+0:?             textureFetch (temp 4-component vector of float)
+0:28              'g_tTexbfs' (layout(r32f ) uniform samplerBuffer)
+0:28              c1: direct index for structure (layout(offset=0 ) uniform int)
+0:28                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:28                Constant:
+0:28                  0 (const uint)
+0:29      Sequence
+0:29        move second child to first child (temp int)
+0:29          'r01' (temp int)
+0:29          Construct int (temp int)
+0:?             textureFetch (temp 4-component vector of int)
+0:29              'g_tTexbis' (layout(r32i ) uniform isamplerBuffer)
+0:29              c1: direct index for structure (layout(offset=0 ) uniform int)
+0:29                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:29                Constant:
+0:29                  0 (const uint)
+0:30      Sequence
+0:30        move second child to first child (temp uint)
+0:30          'r02' (temp uint)
+0:30          Construct uint (temp uint)
+0:?             textureFetch (temp 4-component vector of uint)
+0:30              'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer)
+0:30              c1: direct index for structure (layout(offset=0 ) uniform int)
+0:30                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:30                Constant:
+0:30                  0 (const uint)
+0:34      move second child to first child (temp 4-component vector of float)
+0:34        Color: direct index for structure (temp 4-component vector of float)
+0:34          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:34          Constant:
+0:34            0 (const int)
+0:34        Constant:
+0:34          1.000000
+0:34          1.000000
+0:34          1.000000
+0:34          1.000000
+0:35      move second child to first child (temp float)
+0:35        Depth: direct index for structure (temp float)
+0:35          'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:35          Constant:
+0:35            1 (const int)
+0:35        Constant:
+0:35          1.000000
+0:37      Sequence
+0:37        Sequence
+0:37          move second child to first child (temp 4-component vector of float)
+0:?             'Color' (layout(location=0 ) out 4-component vector of float)
+0:37            Color: direct index for structure (temp 4-component vector of float)
+0:37              'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:37              Constant:
+0:37                0 (const int)
+0:37          move second child to first child (temp float)
+0:?             'Depth' (out float FragDepth)
+0:37            Depth: direct index for structure (temp float)
+0:37              'psout' (temp structure{temp 4-component vector of float Color, temp float Depth})
+0:37              Constant:
+0:37                1 (const int)
+0:37        Branch: Return
+0:?   Linker Objects
+0:?     'g_tTexbfs_test' (layout(binding=0 r32f ) uniform samplerBuffer)
+0:?     'g_tTexbfs' (layout(r32f ) uniform samplerBuffer)
+0:?     'g_tTexbis' (layout(r32i ) uniform isamplerBuffer)
+0:?     'g_tTexbus' (layout(r32ui ) uniform usamplerBuffer)
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+0:?     'Depth' (out float FragDepth)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 74
+
+                              Capability Shader
+                              Capability SampledBuffer
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 65 69
+                              ExecutionMode 4 OriginUpperLeft
+                              Name 4  "main"
+                              Name 8  "r00"
+                              Name 12  "g_tTexbfs"
+                              Name 18  "$Global"
+                              MemberName 18($Global) 0  "c1"
+                              MemberName 18($Global) 1  "c2"
+                              MemberName 18($Global) 2  "c3"
+                              MemberName 18($Global) 3  "c4"
+                              MemberName 18($Global) 4  "o1"
+                              MemberName 18($Global) 5  "o2"
+                              MemberName 18($Global) 6  "o3"
+                              MemberName 18($Global) 7  "o4"
+                              Name 20  ""
+                              Name 30  "r01"
+                              Name 34  "g_tTexbis"
+                              Name 43  "r02"
+                              Name 47  "g_tTexbus"
+                              Name 55  "PS_OUTPUT"
+                              MemberName 55(PS_OUTPUT) 0  "Color"
+                              MemberName 55(PS_OUTPUT) 1  "Depth"
+                              Name 57  "psout"
+                              Name 65  "Color"
+                              Name 69  "Depth"
+                              Name 73  "g_tTexbfs_test"
+                              Decorate 12(g_tTexbfs) DescriptorSet 0
+                              MemberDecorate 18($Global) 0 Offset 0
+                              MemberDecorate 18($Global) 1 Offset 8
+                              MemberDecorate 18($Global) 2 Offset 16
+                              MemberDecorate 18($Global) 3 Offset 32
+                              MemberDecorate 18($Global) 4 Offset 48
+                              MemberDecorate 18($Global) 5 Offset 56
+                              MemberDecorate 18($Global) 6 Offset 64
+                              MemberDecorate 18($Global) 7 Offset 80
+                              Decorate 18($Global) Block
+                              Decorate 20 DescriptorSet 0
+                              Decorate 34(g_tTexbis) DescriptorSet 0
+                              Decorate 47(g_tTexbus) DescriptorSet 0
+                              Decorate 65(Color) Location 0
+                              Decorate 69(Depth) BuiltIn FragDepth
+                              Decorate 73(g_tTexbfs_test) DescriptorSet 0
+                              Decorate 73(g_tTexbfs_test) Binding 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypePointer Function 6(float)
+               9:             TypeImage 6(float) Buffer sampled format:R32f
+              10:             TypeSampledImage 9
+              11:             TypePointer UniformConstant 10
+   12(g_tTexbfs):     11(ptr) Variable UniformConstant
+              14:             TypeInt 32 1
+              15:             TypeVector 14(int) 2
+              16:             TypeVector 14(int) 3
+              17:             TypeVector 14(int) 4
+     18($Global):             TypeStruct 14(int) 15(ivec2) 16(ivec3) 17(ivec4) 14(int) 15(ivec2) 16(ivec3) 17(ivec4)
+              19:             TypePointer Uniform 18($Global)
+              20:     19(ptr) Variable Uniform
+              21:     14(int) Constant 0
+              22:             TypePointer Uniform 14(int)
+              26:             TypeVector 6(float) 4
+              29:             TypePointer Function 14(int)
+              31:             TypeImage 14(int) Buffer sampled format:R32i
+              32:             TypeSampledImage 31
+              33:             TypePointer UniformConstant 32
+   34(g_tTexbis):     33(ptr) Variable UniformConstant
+              41:             TypeInt 32 0
+              42:             TypePointer Function 41(int)
+              44:             TypeImage 41(int) Buffer sampled format:R32ui
+              45:             TypeSampledImage 44
+              46:             TypePointer UniformConstant 45
+   47(g_tTexbus):     46(ptr) Variable UniformConstant
+              52:             TypeVector 41(int) 4
+   55(PS_OUTPUT):             TypeStruct 26(fvec4) 6(float)
+              56:             TypePointer Function 55(PS_OUTPUT)
+              58:    6(float) Constant 1065353216
+              59:   26(fvec4) ConstantComposite 58 58 58 58
+              60:             TypePointer Function 26(fvec4)
+              62:     14(int) Constant 1
+              64:             TypePointer Output 26(fvec4)
+       65(Color):     64(ptr) Variable Output
+              68:             TypePointer Output 6(float)
+       69(Depth):     68(ptr) Variable Output
+73(g_tTexbfs_test):     11(ptr) Variable UniformConstant
+         4(main):           2 Function None 3
+               5:             Label
+          8(r00):      7(ptr) Variable Function
+         30(r01):     29(ptr) Variable Function
+         43(r02):     42(ptr) Variable Function
+       57(psout):     56(ptr) Variable Function
+              13:          10 Load 12(g_tTexbfs)
+              23:     22(ptr) AccessChain 20 21
+              24:     14(int) Load 23
+              25:           9 Image 13
+              27:   26(fvec4) ImageFetch 25 24
+              28:    6(float) CompositeExtract 27 0
+                              Store 8(r00) 28
+              35:          32 Load 34(g_tTexbis)
+              36:     22(ptr) AccessChain 20 21
+              37:     14(int) Load 36
+              38:          31 Image 35
+              39:   17(ivec4) ImageFetch 38 37
+              40:     14(int) CompositeExtract 39 0
+                              Store 30(r01) 40
+              48:          45 Load 47(g_tTexbus)
+              49:     22(ptr) AccessChain 20 21
+              50:     14(int) Load 49
+              51:          44 Image 48
+              53:   52(ivec4) ImageFetch 51 50
+              54:     41(int) CompositeExtract 53 0
+                              Store 43(r02) 54
+              61:     60(ptr) AccessChain 57(psout) 21
+                              Store 61 59
+              63:      7(ptr) AccessChain 57(psout) 62
+                              Store 63 58
+              66:     60(ptr) AccessChain 57(psout) 21
+              67:   26(fvec4) Load 66
+                              Store 65(Color) 67
+              70:      7(ptr) AccessChain 57(psout) 62
+              71:    6(float) Load 70
+                              Store 69(Depth) 71
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out
index 6eaa6f7..069e05d 100644
--- a/Test/baseResults/hlsl.load.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out
@@ -5,7 +5,7 @@
 0:48  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:48    Function Parameters: 
 0:?     Sequence
-0:52      textureFetchOffset (global 4-component vector of float)
+0:52      textureFetchOffset (temp 4-component vector of float)
 0:52        'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:52        vector swizzle (temp int)
 0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -26,7 +26,7 @@
 0:52          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:52          Constant:
 0:52            4 (const uint)
-0:53      textureFetchOffset (global 4-component vector of int)
+0:53      textureFetchOffset (temp 4-component vector of int)
 0:53        'g_tTex1di4' (uniform itexture1D)
 0:53        vector swizzle (temp int)
 0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -47,7 +47,7 @@
 0:53          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:53          Constant:
 0:53            4 (const uint)
-0:54      textureFetchOffset (global 4-component vector of uint)
+0:54      textureFetchOffset (temp 4-component vector of uint)
 0:54        'g_tTex1du4' (uniform utexture1D)
 0:54        vector swizzle (temp int)
 0:54          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -68,7 +68,7 @@
 0:54          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:54          Constant:
 0:54            4 (const uint)
-0:57      textureFetchOffset (global 4-component vector of float)
+0:57      textureFetchOffset (temp 4-component vector of float)
 0:57        'g_tTex2df4' (uniform texture2D)
 0:57        vector swizzle (temp 2-component vector of int)
 0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -91,7 +91,7 @@
 0:57          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:57          Constant:
 0:57            5 (const uint)
-0:58      textureFetchOffset (global 4-component vector of int)
+0:58      textureFetchOffset (temp 4-component vector of int)
 0:58        'g_tTex2di4' (uniform itexture2D)
 0:58        vector swizzle (temp 2-component vector of int)
 0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -114,7 +114,7 @@
 0:58          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:58          Constant:
 0:58            5 (const uint)
-0:59      textureFetchOffset (global 4-component vector of uint)
+0:59      textureFetchOffset (temp 4-component vector of uint)
 0:59        'g_tTex2du4' (uniform utexture2D)
 0:59        vector swizzle (temp 2-component vector of int)
 0:59          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -137,7 +137,7 @@
 0:59          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:59          Constant:
 0:59            5 (const uint)
-0:62      textureFetchOffset (global 4-component vector of float)
+0:62      textureFetchOffset (temp 4-component vector of float)
 0:62        'g_tTex3df4' (uniform texture3D)
 0:62        vector swizzle (temp 3-component vector of int)
 0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -162,7 +162,7 @@
 0:62          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:62          Constant:
 0:62            6 (const uint)
-0:63      textureFetchOffset (global 4-component vector of int)
+0:63      textureFetchOffset (temp 4-component vector of int)
 0:63        'g_tTex3di4' (uniform itexture3D)
 0:63        vector swizzle (temp 3-component vector of int)
 0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -187,7 +187,7 @@
 0:63          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:63          Constant:
 0:63            6 (const uint)
-0:64      textureFetchOffset (global 4-component vector of uint)
+0:64      textureFetchOffset (temp 4-component vector of uint)
 0:64        'g_tTex3du4' (uniform utexture3D)
 0:64        vector swizzle (temp 3-component vector of int)
 0:64          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -281,7 +281,7 @@
 0:48  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:48    Function Parameters: 
 0:?     Sequence
-0:52      textureFetchOffset (global 4-component vector of float)
+0:52      textureFetchOffset (temp 4-component vector of float)
 0:52        'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:52        vector swizzle (temp int)
 0:52          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -302,7 +302,7 @@
 0:52          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:52          Constant:
 0:52            4 (const uint)
-0:53      textureFetchOffset (global 4-component vector of int)
+0:53      textureFetchOffset (temp 4-component vector of int)
 0:53        'g_tTex1di4' (uniform itexture1D)
 0:53        vector swizzle (temp int)
 0:53          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -323,7 +323,7 @@
 0:53          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:53          Constant:
 0:53            4 (const uint)
-0:54      textureFetchOffset (global 4-component vector of uint)
+0:54      textureFetchOffset (temp 4-component vector of uint)
 0:54        'g_tTex1du4' (uniform utexture1D)
 0:54        vector swizzle (temp int)
 0:54          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
@@ -344,7 +344,7 @@
 0:54          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:54          Constant:
 0:54            4 (const uint)
-0:57      textureFetchOffset (global 4-component vector of float)
+0:57      textureFetchOffset (temp 4-component vector of float)
 0:57        'g_tTex2df4' (uniform texture2D)
 0:57        vector swizzle (temp 2-component vector of int)
 0:57          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -367,7 +367,7 @@
 0:57          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:57          Constant:
 0:57            5 (const uint)
-0:58      textureFetchOffset (global 4-component vector of int)
+0:58      textureFetchOffset (temp 4-component vector of int)
 0:58        'g_tTex2di4' (uniform itexture2D)
 0:58        vector swizzle (temp 2-component vector of int)
 0:58          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -390,7 +390,7 @@
 0:58          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:58          Constant:
 0:58            5 (const uint)
-0:59      textureFetchOffset (global 4-component vector of uint)
+0:59      textureFetchOffset (temp 4-component vector of uint)
 0:59        'g_tTex2du4' (uniform utexture2D)
 0:59        vector swizzle (temp 2-component vector of int)
 0:59          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -413,7 +413,7 @@
 0:59          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:59          Constant:
 0:59            5 (const uint)
-0:62      textureFetchOffset (global 4-component vector of float)
+0:62      textureFetchOffset (temp 4-component vector of float)
 0:62        'g_tTex3df4' (uniform texture3D)
 0:62        vector swizzle (temp 3-component vector of int)
 0:62          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -438,7 +438,7 @@
 0:62          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:62          Constant:
 0:62            6 (const uint)
-0:63      textureFetchOffset (global 4-component vector of int)
+0:63      textureFetchOffset (temp 4-component vector of int)
 0:63        'g_tTex3di4' (uniform itexture3D)
 0:63        vector swizzle (temp 3-component vector of int)
 0:63          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -463,7 +463,7 @@
 0:63          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:63          Constant:
 0:63            6 (const uint)
-0:64      textureFetchOffset (global 4-component vector of uint)
+0:64      textureFetchOffset (temp 4-component vector of uint)
 0:64        'g_tTex3du4' (uniform utexture3D)
 0:64        vector swizzle (temp 3-component vector of int)
 0:64          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
index 776cd83..ed89ee8 100644
--- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out
@@ -5,7 +5,7 @@
 0:48  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:48    Function Parameters: 
 0:?     Sequence
-0:52      textureFetchOffset (global 4-component vector of float)
+0:52      textureFetchOffset (temp 4-component vector of float)
 0:52        'g_tTex1df4a' (uniform texture1DArray)
 0:52        vector swizzle (temp 2-component vector of int)
 0:52          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -28,7 +28,7 @@
 0:52          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:52          Constant:
 0:52            4 (const uint)
-0:53      textureFetchOffset (global 4-component vector of int)
+0:53      textureFetchOffset (temp 4-component vector of int)
 0:53        'g_tTex1di4a' (uniform itexture1DArray)
 0:53        vector swizzle (temp 2-component vector of int)
 0:53          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -51,7 +51,7 @@
 0:53          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:53          Constant:
 0:53            4 (const uint)
-0:54      textureFetchOffset (global 4-component vector of uint)
+0:54      textureFetchOffset (temp 4-component vector of uint)
 0:54        'g_tTex1du4a' (uniform utexture1DArray)
 0:54        vector swizzle (temp 2-component vector of int)
 0:54          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -74,7 +74,7 @@
 0:54          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:54          Constant:
 0:54            4 (const uint)
-0:57      textureFetchOffset (global 4-component vector of float)
+0:57      textureFetchOffset (temp 4-component vector of float)
 0:57        'g_tTex2df4a' (uniform texture2DArray)
 0:57        vector swizzle (temp 3-component vector of int)
 0:57          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -99,7 +99,7 @@
 0:57          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:57          Constant:
 0:57            5 (const uint)
-0:58      textureFetchOffset (global 4-component vector of int)
+0:58      textureFetchOffset (temp 4-component vector of int)
 0:58        'g_tTex2di4a' (uniform itexture2DArray)
 0:58        vector swizzle (temp 3-component vector of int)
 0:58          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -124,7 +124,7 @@
 0:58          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:58          Constant:
 0:58            5 (const uint)
-0:59      textureFetchOffset (global 4-component vector of uint)
+0:59      textureFetchOffset (temp 4-component vector of uint)
 0:59        'g_tTex2du4a' (uniform utexture2DArray)
 0:59        vector swizzle (temp 3-component vector of int)
 0:59          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -218,7 +218,7 @@
 0:48  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:48    Function Parameters: 
 0:?     Sequence
-0:52      textureFetchOffset (global 4-component vector of float)
+0:52      textureFetchOffset (temp 4-component vector of float)
 0:52        'g_tTex1df4a' (uniform texture1DArray)
 0:52        vector swizzle (temp 2-component vector of int)
 0:52          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -241,7 +241,7 @@
 0:52          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:52          Constant:
 0:52            4 (const uint)
-0:53      textureFetchOffset (global 4-component vector of int)
+0:53      textureFetchOffset (temp 4-component vector of int)
 0:53        'g_tTex1di4a' (uniform itexture1DArray)
 0:53        vector swizzle (temp 2-component vector of int)
 0:53          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -264,7 +264,7 @@
 0:53          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:53          Constant:
 0:53            4 (const uint)
-0:54      textureFetchOffset (global 4-component vector of uint)
+0:54      textureFetchOffset (temp 4-component vector of uint)
 0:54        'g_tTex1du4a' (uniform utexture1DArray)
 0:54        vector swizzle (temp 2-component vector of int)
 0:54          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
@@ -287,7 +287,7 @@
 0:54          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:54          Constant:
 0:54            4 (const uint)
-0:57      textureFetchOffset (global 4-component vector of float)
+0:57      textureFetchOffset (temp 4-component vector of float)
 0:57        'g_tTex2df4a' (uniform texture2DArray)
 0:57        vector swizzle (temp 3-component vector of int)
 0:57          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -312,7 +312,7 @@
 0:57          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:57          Constant:
 0:57            5 (const uint)
-0:58      textureFetchOffset (global 4-component vector of int)
+0:58      textureFetchOffset (temp 4-component vector of int)
 0:58        'g_tTex2di4a' (uniform itexture2DArray)
 0:58        vector swizzle (temp 3-component vector of int)
 0:58          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
@@ -337,7 +337,7 @@
 0:58          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:58          Constant:
 0:58            5 (const uint)
-0:59      textureFetchOffset (global 4-component vector of uint)
+0:59      textureFetchOffset (temp 4-component vector of uint)
 0:59        'g_tTex2du4a' (uniform utexture2DArray)
 0:59        vector swizzle (temp 3-component vector of int)
 0:59          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
diff --git a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out
index 78b4804..7b26372 100644
--- a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out
@@ -5,19 +5,19 @@
 0:22  Function Definition: main( (temp structure{temp 4-component vector of float Color})
 0:22    Function Parameters: 
 0:?     Sequence
-0:25      imageLoad (global 4-component vector of float)
+0:25      imageLoad (temp 4-component vector of float)
 0:25        'g_tBuffF' (layout(rgba32f ) uniform imageBuffer)
 0:25        c1: direct index for structure (layout(offset=0 ) uniform int)
 0:25          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:25          Constant:
 0:25            0 (const uint)
-0:26      imageLoad (global 4-component vector of uint)
+0:26      imageLoad (temp 4-component vector of uint)
 0:26        'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer)
 0:26        c1: direct index for structure (layout(offset=0 ) uniform int)
 0:26          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:26          Constant:
 0:26            0 (const uint)
-0:27      imageLoad (global 4-component vector of int)
+0:27      imageLoad (temp 4-component vector of int)
 0:27        'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer)
 0:27        c1: direct index for structure (layout(offset=0 ) uniform int)
 0:27          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -59,19 +59,19 @@
 0:22  Function Definition: main( (temp structure{temp 4-component vector of float Color})
 0:22    Function Parameters: 
 0:?     Sequence
-0:25      imageLoad (global 4-component vector of float)
+0:25      imageLoad (temp 4-component vector of float)
 0:25        'g_tBuffF' (layout(rgba32f ) uniform imageBuffer)
 0:25        c1: direct index for structure (layout(offset=0 ) uniform int)
 0:25          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:25          Constant:
 0:25            0 (const uint)
-0:26      imageLoad (global 4-component vector of uint)
+0:26      imageLoad (temp 4-component vector of uint)
 0:26        'g_tBuffU' (layout(rgba32ui ) uniform uimageBuffer)
 0:26        c1: direct index for structure (layout(offset=0 ) uniform int)
 0:26          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:26          Constant:
 0:26            0 (const uint)
-0:27      imageLoad (global 4-component vector of int)
+0:27      imageLoad (temp 4-component vector of int)
 0:27        'g_tBuffI' (layout(rgba32i ) uniform iimageBuffer)
 0:27        c1: direct index for structure (layout(offset=0 ) uniform int)
 0:27          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
diff --git a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out
index 353f769..8ac94d0 100644
--- a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out
@@ -5,37 +5,37 @@
 0:40  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:40    Function Parameters: 
 0:?     Sequence
-0:44      imageLoad (global 4-component vector of float)
+0:44      imageLoad (temp 4-component vector of float)
 0:44        'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray)
 0:44        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:44          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:44          Constant:
 0:44            1 (const uint)
-0:45      imageLoad (global 4-component vector of int)
+0:45      imageLoad (temp 4-component vector of int)
 0:45        'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray)
 0:45        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:45          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:45          Constant:
 0:45            1 (const uint)
-0:46      imageLoad (global 4-component vector of uint)
+0:46      imageLoad (temp 4-component vector of uint)
 0:46        'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray)
 0:46        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:46          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:46          Constant:
 0:46            1 (const uint)
-0:49      imageLoad (global 4-component vector of float)
+0:49      imageLoad (temp 4-component vector of float)
 0:49        'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray)
 0:49        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:49          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:49          Constant:
 0:49            2 (const uint)
-0:50      imageLoad (global 4-component vector of int)
+0:50      imageLoad (temp 4-component vector of int)
 0:50        'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray)
 0:50        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:50          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:50          Constant:
 0:50            2 (const uint)
-0:51      imageLoad (global 4-component vector of uint)
+0:51      imageLoad (temp 4-component vector of uint)
 0:51        'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray)
 0:51        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:51          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -104,37 +104,37 @@
 0:40  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:40    Function Parameters: 
 0:?     Sequence
-0:44      imageLoad (global 4-component vector of float)
+0:44      imageLoad (temp 4-component vector of float)
 0:44        'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray)
 0:44        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:44          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:44          Constant:
 0:44            1 (const uint)
-0:45      imageLoad (global 4-component vector of int)
+0:45      imageLoad (temp 4-component vector of int)
 0:45        'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray)
 0:45        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:45          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:45          Constant:
 0:45            1 (const uint)
-0:46      imageLoad (global 4-component vector of uint)
+0:46      imageLoad (temp 4-component vector of uint)
 0:46        'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray)
 0:46        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:46          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:46          Constant:
 0:46            1 (const uint)
-0:49      imageLoad (global 4-component vector of float)
+0:49      imageLoad (temp 4-component vector of float)
 0:49        'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray)
 0:49        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:49          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:49          Constant:
 0:49            2 (const uint)
-0:50      imageLoad (global 4-component vector of int)
+0:50      imageLoad (temp 4-component vector of int)
 0:50        'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray)
 0:50        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:50          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:50          Constant:
 0:50            2 (const uint)
-0:51      imageLoad (global 4-component vector of uint)
+0:51      imageLoad (temp 4-component vector of uint)
 0:51        'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray)
 0:51        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:51          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
diff --git a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out
index 60c5400..ca59015 100644
--- a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out
+++ b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out
@@ -5,55 +5,55 @@
 0:40  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:40    Function Parameters: 
 0:?     Sequence
-0:44      imageLoad (global 4-component vector of float)
+0:44      imageLoad (temp 4-component vector of float)
 0:44        'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
 0:44        c1: direct index for structure (layout(offset=0 ) uniform int)
 0:44          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:44          Constant:
 0:44            0 (const uint)
-0:45      imageLoad (global 4-component vector of int)
+0:45      imageLoad (temp 4-component vector of int)
 0:45        'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
 0:45        c1: direct index for structure (layout(offset=0 ) uniform int)
 0:45          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:45          Constant:
 0:45            0 (const uint)
-0:46      imageLoad (global 4-component vector of uint)
+0:46      imageLoad (temp 4-component vector of uint)
 0:46        'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
 0:46        c1: direct index for structure (layout(offset=0 ) uniform int)
 0:46          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:46          Constant:
 0:46            0 (const uint)
-0:49      imageLoad (global 4-component vector of float)
+0:49      imageLoad (temp 4-component vector of float)
 0:49        'g_tTex2df4' (layout(rgba32f ) uniform image2D)
 0:49        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:49          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:49          Constant:
 0:49            1 (const uint)
-0:50      imageLoad (global 4-component vector of int)
+0:50      imageLoad (temp 4-component vector of int)
 0:50        'g_tTex2di4' (layout(rgba32i ) uniform iimage2D)
 0:50        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:50          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:50          Constant:
 0:50            1 (const uint)
-0:51      imageLoad (global 4-component vector of uint)
+0:51      imageLoad (temp 4-component vector of uint)
 0:51        'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D)
 0:51        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:51          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:51          Constant:
 0:51            1 (const uint)
-0:54      imageLoad (global 4-component vector of float)
+0:54      imageLoad (temp 4-component vector of float)
 0:54        'g_tTex3df4' (layout(rgba32f ) uniform image3D)
 0:54        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:54          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:54          Constant:
 0:54            2 (const uint)
-0:55      imageLoad (global 4-component vector of int)
+0:55      imageLoad (temp 4-component vector of int)
 0:55        'g_tTex3di4' (layout(rgba32i ) uniform iimage3D)
 0:55        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:55          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:55          Constant:
 0:55            2 (const uint)
-0:56      imageLoad (global 4-component vector of uint)
+0:56      imageLoad (temp 4-component vector of uint)
 0:56        'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D)
 0:56        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:56          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
@@ -122,55 +122,55 @@
 0:40  Function Definition: main( (temp structure{temp 4-component vector of float Color, temp float Depth})
 0:40    Function Parameters: 
 0:?     Sequence
-0:44      imageLoad (global 4-component vector of float)
+0:44      imageLoad (temp 4-component vector of float)
 0:44        'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
 0:44        c1: direct index for structure (layout(offset=0 ) uniform int)
 0:44          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:44          Constant:
 0:44            0 (const uint)
-0:45      imageLoad (global 4-component vector of int)
+0:45      imageLoad (temp 4-component vector of int)
 0:45        'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
 0:45        c1: direct index for structure (layout(offset=0 ) uniform int)
 0:45          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:45          Constant:
 0:45            0 (const uint)
-0:46      imageLoad (global 4-component vector of uint)
+0:46      imageLoad (temp 4-component vector of uint)
 0:46        'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
 0:46        c1: direct index for structure (layout(offset=0 ) uniform int)
 0:46          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:46          Constant:
 0:46            0 (const uint)
-0:49      imageLoad (global 4-component vector of float)
+0:49      imageLoad (temp 4-component vector of float)
 0:49        'g_tTex2df4' (layout(rgba32f ) uniform image2D)
 0:49        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:49          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:49          Constant:
 0:49            1 (const uint)
-0:50      imageLoad (global 4-component vector of int)
+0:50      imageLoad (temp 4-component vector of int)
 0:50        'g_tTex2di4' (layout(rgba32i ) uniform iimage2D)
 0:50        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:50          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:50          Constant:
 0:50            1 (const uint)
-0:51      imageLoad (global 4-component vector of uint)
+0:51      imageLoad (temp 4-component vector of uint)
 0:51        'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D)
 0:51        c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
 0:51          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:51          Constant:
 0:51            1 (const uint)
-0:54      imageLoad (global 4-component vector of float)
+0:54      imageLoad (temp 4-component vector of float)
 0:54        'g_tTex3df4' (layout(rgba32f ) uniform image3D)
 0:54        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:54          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:54          Constant:
 0:54            2 (const uint)
-0:55      imageLoad (global 4-component vector of int)
+0:55      imageLoad (temp 4-component vector of int)
 0:55        'g_tTex3di4' (layout(rgba32i ) uniform iimage3D)
 0:55        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:55          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
 0:55          Constant:
 0:55            2 (const uint)
-0:56      imageLoad (global 4-component vector of uint)
+0:56      imageLoad (temp 4-component vector of uint)
 0:56        'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D)
 0:56        c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
 0:56          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
diff --git a/Test/baseResults/hlsl.multiEntry.vert.out b/Test/baseResults/hlsl.multiEntry.vert.out
index cec7898..8f8c42a 100755
--- a/Test/baseResults/hlsl.multiEntry.vert.out
+++ b/Test/baseResults/hlsl.multiEntry.vert.out
@@ -6,8 +6,8 @@
 0:4      'Index' (in uint)
 0:?     Sequence
 0:5      Branch: Return with expression
-0:5        textureFetch (global 4-component vector of float)
-0:5          'Position' (uniform samplerBuffer)
+0:5        textureFetch (temp 4-component vector of float)
+0:5          'Position' (layout(rgba32f ) uniform samplerBuffer)
 0:5          Convert uint to int (temp int)
 0:5            'Index' (in uint)
 0:9  Function Definition: RealEntrypoint(u1; (temp 4-component vector of float Position)
@@ -21,7 +21,7 @@
 0:10            'Index' (in uint VertexIndex)
 0:10        Branch: Return
 0:?   Linker Objects
-0:?     'Position' (uniform samplerBuffer)
+0:?     'Position' (layout(rgba32f ) uniform samplerBuffer)
 0:?     '@entryPointOutput' (out 4-component vector of float Position)
 0:?     'Index' (in uint VertexIndex)
 
@@ -36,8 +36,8 @@
 0:4      'Index' (in uint)
 0:?     Sequence
 0:5      Branch: Return with expression
-0:5        textureFetch (global 4-component vector of float)
-0:5          'Position' (uniform samplerBuffer)
+0:5        textureFetch (temp 4-component vector of float)
+0:5          'Position' (layout(rgba32f ) uniform samplerBuffer)
 0:5          Convert uint to int (temp int)
 0:5            'Index' (in uint)
 0:9  Function Definition: RealEntrypoint(u1; (temp 4-component vector of float Position)
@@ -51,7 +51,7 @@
 0:10            'Index' (in uint VertexIndex)
 0:10        Branch: Return
 0:?   Linker Objects
-0:?     'Position' (uniform samplerBuffer)
+0:?     'Position' (layout(rgba32f ) uniform samplerBuffer)
 0:?     '@entryPointOutput' (out 4-component vector of float Position)
 0:?     'Index' (in uint VertexIndex)
 
@@ -81,7 +81,7 @@
                8:             TypeFloat 32
                9:             TypeVector 8(float) 4
               10:             TypeFunction 9(fvec4) 7(ptr)
-              14:             TypeImage 8(float) Buffer sampled format:Unknown
+              14:             TypeImage 8(float) Buffer sampled format:Rgba32f
               15:             TypeSampledImage 14
               16:             TypePointer UniformConstant 15
     17(Position):     16(ptr) Variable UniformConstant
diff --git a/Test/baseResults/hlsl.rw.bracket.frag.out b/Test/baseResults/hlsl.rw.bracket.frag.out
new file mode 100644
index 0000000..c6e3c89
--- /dev/null
+++ b/Test/baseResults/hlsl.rw.bracket.frag.out
@@ -0,0 +1,2651 @@
+hlsl.rw.bracket.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:42  Function Definition: Fn1(vi4; (temp 4-component vector of int)
+0:42    Function Parameters: 
+0:42      'x' (in 4-component vector of int)
+0:?     Sequence
+0:42      Branch: Return with expression
+0:42        'x' (in 4-component vector of int)
+0:43  Function Definition: Fn1(vu4; (temp 4-component vector of uint)
+0:43    Function Parameters: 
+0:43      'x' (in 4-component vector of uint)
+0:?     Sequence
+0:43      Branch: Return with expression
+0:43        'x' (in 4-component vector of uint)
+0:44  Function Definition: Fn1(vf4; (temp 4-component vector of float)
+0:44    Function Parameters: 
+0:44      'x' (in 4-component vector of float)
+0:?     Sequence
+0:44      Branch: Return with expression
+0:44        'x' (in 4-component vector of float)
+0:46  Function Definition: Fn2(vi4; (temp void)
+0:46    Function Parameters: 
+0:46      'x' (out 4-component vector of int)
+0:?     Sequence
+0:46      move second child to first child (temp 4-component vector of int)
+0:46        'x' (out 4-component vector of int)
+0:46        Constant:
+0:46          0 (const int)
+0:46          0 (const int)
+0:46          0 (const int)
+0:46          0 (const int)
+0:47  Function Definition: Fn2(vu4; (temp void)
+0:47    Function Parameters: 
+0:47      'x' (out 4-component vector of uint)
+0:?     Sequence
+0:47      move second child to first child (temp 4-component vector of uint)
+0:47        'x' (out 4-component vector of uint)
+0:47        Constant:
+0:47          0 (const uint)
+0:47          0 (const uint)
+0:47          0 (const uint)
+0:47          0 (const uint)
+0:48  Function Definition: Fn2(vf4; (temp void)
+0:48    Function Parameters: 
+0:48      'x' (out 4-component vector of float)
+0:?     Sequence
+0:48      move second child to first child (temp 4-component vector of float)
+0:48        'x' (out 4-component vector of float)
+0:48        Constant:
+0:48          0.000000
+0:48          0.000000
+0:48          0.000000
+0:48          0.000000
+0:50  Function Definition: SomeValue( (temp 4-component vector of float)
+0:50    Function Parameters: 
+0:?     Sequence
+0:50      Branch: Return with expression
+0:50        Convert int to float (temp 4-component vector of float)
+0:50          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:50            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:50            Constant:
+0:50              3 (const uint)
+0:53  Function Definition: main( (temp structure{temp 4-component vector of float Color})
+0:53    Function Parameters: 
+0:?     Sequence
+0:57      imageLoad (temp 4-component vector of float)
+0:57        'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:57        c1: direct index for structure (layout(offset=0 ) uniform int)
+0:57          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:57          Constant:
+0:57            0 (const uint)
+0:59      Sequence
+0:59        move second child to first child (temp 4-component vector of float)
+0:59          'r00' (temp 4-component vector of float)
+0:59          imageLoad (temp 4-component vector of float)
+0:59            'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:59            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:59              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:59              Constant:
+0:59                0 (const uint)
+0:60      Sequence
+0:60        move second child to first child (temp 4-component vector of int)
+0:60          'r01' (temp 4-component vector of int)
+0:60          imageLoad (temp 4-component vector of int)
+0:60            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:60            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:60              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:60              Constant:
+0:60                0 (const uint)
+0:61      Sequence
+0:61        move second child to first child (temp 4-component vector of uint)
+0:61          'r02' (temp 4-component vector of uint)
+0:61          imageLoad (temp 4-component vector of uint)
+0:61            'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:61            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:61              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:61              Constant:
+0:61                0 (const uint)
+0:64      Sequence
+0:64        move second child to first child (temp 4-component vector of float)
+0:64          'r10' (temp 4-component vector of float)
+0:64          imageLoad (temp 4-component vector of float)
+0:64            'g_tTex2df4' (layout(rgba32f ) uniform image2D)
+0:64            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:64              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:64              Constant:
+0:64                1 (const uint)
+0:65      Sequence
+0:65        move second child to first child (temp 4-component vector of int)
+0:65          'r11' (temp 4-component vector of int)
+0:65          imageLoad (temp 4-component vector of int)
+0:65            'g_tTex2di4' (layout(rgba32i ) uniform iimage2D)
+0:65            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:65              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:65              Constant:
+0:65                1 (const uint)
+0:66      Sequence
+0:66        move second child to first child (temp 4-component vector of uint)
+0:66          'r12' (temp 4-component vector of uint)
+0:66          imageLoad (temp 4-component vector of uint)
+0:66            'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D)
+0:66            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:66              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:66              Constant:
+0:66                1 (const uint)
+0:69      Sequence
+0:69        move second child to first child (temp 4-component vector of float)
+0:69          'r20' (temp 4-component vector of float)
+0:69          imageLoad (temp 4-component vector of float)
+0:69            'g_tTex3df4' (layout(rgba32f ) uniform image3D)
+0:69            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:69              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:69              Constant:
+0:69                2 (const uint)
+0:70      Sequence
+0:70        move second child to first child (temp 4-component vector of int)
+0:70          'r21' (temp 4-component vector of int)
+0:70          imageLoad (temp 4-component vector of int)
+0:70            'g_tTex3di4' (layout(rgba32i ) uniform iimage3D)
+0:70            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:70              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:70              Constant:
+0:70                2 (const uint)
+0:71      Sequence
+0:71        move second child to first child (temp 4-component vector of uint)
+0:71          'r22' (temp 4-component vector of uint)
+0:71          imageLoad (temp 4-component vector of uint)
+0:71            'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D)
+0:71            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:71              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:71              Constant:
+0:71                2 (const uint)
+0:73      Sequence
+0:73        move second child to first child (temp 4-component vector of float)
+0:73          'lf4' (temp 4-component vector of float)
+0:73          uf4: direct index for structure (layout(offset=96 ) uniform 4-component vector of float)
+0:73            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:73            Constant:
+0:73              8 (const uint)
+0:77      Sequence
+0:77        move second child to first child (temp 4-component vector of float)
+0:77          'storeTemp' (temp 4-component vector of float)
+0:77          Function Call: SomeValue( (temp 4-component vector of float)
+0:77        imageStore (temp void)
+0:77          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:77          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:77            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:77            Constant:
+0:77              0 (const uint)
+0:77          'storeTemp' (temp 4-component vector of float)
+0:77        'storeTemp' (temp 4-component vector of float)
+0:78      Sequence
+0:78        imageStore (temp void)
+0:78          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:78          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:78            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:78            Constant:
+0:78              0 (const uint)
+0:78          'lf4' (temp 4-component vector of float)
+0:78        'lf4' (temp 4-component vector of float)
+0:79      Sequence
+0:79        move second child to first child (temp 4-component vector of int)
+0:79          'storeTemp' (temp 4-component vector of int)
+0:?           Constant:
+0:?             2 (const int)
+0:?             2 (const int)
+0:?             3 (const int)
+0:?             4 (const int)
+0:79        imageStore (temp void)
+0:79          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:79          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:79            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:79            Constant:
+0:79              0 (const uint)
+0:79          'storeTemp' (temp 4-component vector of int)
+0:79        'storeTemp' (temp 4-component vector of int)
+0:80      Sequence
+0:80        move second child to first child (temp 4-component vector of uint)
+0:80          'storeTemp' (temp 4-component vector of uint)
+0:?           Constant:
+0:?             3 (const uint)
+0:?             2 (const uint)
+0:?             3 (const uint)
+0:?             4 (const uint)
+0:80        imageStore (temp void)
+0:80          'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:80          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:80            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:80            Constant:
+0:80              0 (const uint)
+0:80          'storeTemp' (temp 4-component vector of uint)
+0:80        'storeTemp' (temp 4-component vector of uint)
+0:83      Sequence
+0:83        move second child to first child (temp 4-component vector of float)
+0:83          'val1' (temp 4-component vector of float)
+0:83          Sequence
+0:83            move second child to first child (temp int)
+0:83              'coordTemp' (temp int)
+0:83              c1: direct index for structure (layout(offset=0 ) uniform int)
+0:83                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:83                Constant:
+0:83                  0 (const uint)
+0:83            move second child to first child (temp 4-component vector of float)
+0:83              'storeTemp' (temp 4-component vector of float)
+0:83              imageLoad (temp 4-component vector of float)
+0:83                'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:83                'coordTemp' (temp int)
+0:83            vector scale second child into first child (temp 4-component vector of float)
+0:83              'storeTemp' (temp 4-component vector of float)
+0:83              Constant:
+0:83                2.000000
+0:83            imageStore (temp void)
+0:83              'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:83              'coordTemp' (temp int)
+0:83              'storeTemp' (temp 4-component vector of float)
+0:83            'storeTemp' (temp 4-component vector of float)
+0:84      Sequence
+0:84        move second child to first child (temp int)
+0:84          'coordTemp' (temp int)
+0:84          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:84            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:84            Constant:
+0:84              0 (const uint)
+0:84        move second child to first child (temp 4-component vector of float)
+0:84          'storeTemp' (temp 4-component vector of float)
+0:84          imageLoad (temp 4-component vector of float)
+0:84            'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:84            'coordTemp' (temp int)
+0:84        subtract second child into first child (temp 4-component vector of float)
+0:84          'storeTemp' (temp 4-component vector of float)
+0:84          Constant:
+0:84            3.000000
+0:84        imageStore (temp void)
+0:84          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:84          'coordTemp' (temp int)
+0:84          'storeTemp' (temp 4-component vector of float)
+0:84        'storeTemp' (temp 4-component vector of float)
+0:85      Sequence
+0:85        move second child to first child (temp int)
+0:85          'coordTemp' (temp int)
+0:85          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:85            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:85            Constant:
+0:85              0 (const uint)
+0:85        move second child to first child (temp 4-component vector of float)
+0:85          'storeTemp' (temp 4-component vector of float)
+0:85          imageLoad (temp 4-component vector of float)
+0:85            'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:85            'coordTemp' (temp int)
+0:85        add second child into first child (temp 4-component vector of float)
+0:85          'storeTemp' (temp 4-component vector of float)
+0:85          Constant:
+0:85            4.000000
+0:85        imageStore (temp void)
+0:85          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:85          'coordTemp' (temp int)
+0:85          'storeTemp' (temp 4-component vector of float)
+0:85        'storeTemp' (temp 4-component vector of float)
+0:87      Sequence
+0:87        move second child to first child (temp int)
+0:87          'coordTemp' (temp int)
+0:87          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:87            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:87            Constant:
+0:87              0 (const uint)
+0:87        move second child to first child (temp 4-component vector of int)
+0:87          'storeTemp' (temp 4-component vector of int)
+0:87          imageLoad (temp 4-component vector of int)
+0:87            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:87            'coordTemp' (temp int)
+0:87        divide second child into first child (temp 4-component vector of int)
+0:87          'storeTemp' (temp 4-component vector of int)
+0:87          Constant:
+0:87            2 (const int)
+0:87        imageStore (temp void)
+0:87          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:87          'coordTemp' (temp int)
+0:87          'storeTemp' (temp 4-component vector of int)
+0:87        'storeTemp' (temp 4-component vector of int)
+0:88      Sequence
+0:88        move second child to first child (temp int)
+0:88          'coordTemp' (temp int)
+0:88          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:88            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:88            Constant:
+0:88              0 (const uint)
+0:88        move second child to first child (temp 4-component vector of int)
+0:88          'storeTemp' (temp 4-component vector of int)
+0:88          imageLoad (temp 4-component vector of int)
+0:88            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:88            'coordTemp' (temp int)
+0:88        mod second child into first child (temp 4-component vector of int)
+0:88          'storeTemp' (temp 4-component vector of int)
+0:88          Constant:
+0:88            2 (const int)
+0:88        imageStore (temp void)
+0:88          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:88          'coordTemp' (temp int)
+0:88          'storeTemp' (temp 4-component vector of int)
+0:88        'storeTemp' (temp 4-component vector of int)
+0:89      Sequence
+0:89        move second child to first child (temp int)
+0:89          'coordTemp' (temp int)
+0:89          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:89            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:89            Constant:
+0:89              0 (const uint)
+0:89        move second child to first child (temp 4-component vector of int)
+0:89          'storeTemp' (temp 4-component vector of int)
+0:89          imageLoad (temp 4-component vector of int)
+0:89            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:89            'coordTemp' (temp int)
+0:89        and second child into first child (temp 4-component vector of int)
+0:89          'storeTemp' (temp 4-component vector of int)
+0:89          Constant:
+0:89            65535 (const int)
+0:89        imageStore (temp void)
+0:89          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:89          'coordTemp' (temp int)
+0:89          'storeTemp' (temp 4-component vector of int)
+0:89        'storeTemp' (temp 4-component vector of int)
+0:90      Sequence
+0:90        move second child to first child (temp int)
+0:90          'coordTemp' (temp int)
+0:90          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:90            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:90            Constant:
+0:90              0 (const uint)
+0:90        move second child to first child (temp 4-component vector of int)
+0:90          'storeTemp' (temp 4-component vector of int)
+0:90          imageLoad (temp 4-component vector of int)
+0:90            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:90            'coordTemp' (temp int)
+0:90        or second child into first child (temp 4-component vector of int)
+0:90          'storeTemp' (temp 4-component vector of int)
+0:90          Constant:
+0:90            61680 (const int)
+0:90        imageStore (temp void)
+0:90          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:90          'coordTemp' (temp int)
+0:90          'storeTemp' (temp 4-component vector of int)
+0:90        'storeTemp' (temp 4-component vector of int)
+0:91      Sequence
+0:91        move second child to first child (temp int)
+0:91          'coordTemp' (temp int)
+0:91          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:91            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:91            Constant:
+0:91              0 (const uint)
+0:91        move second child to first child (temp 4-component vector of int)
+0:91          'storeTemp' (temp 4-component vector of int)
+0:91          imageLoad (temp 4-component vector of int)
+0:91            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:91            'coordTemp' (temp int)
+0:91        left shift second child into first child (temp 4-component vector of int)
+0:91          'storeTemp' (temp 4-component vector of int)
+0:91          Constant:
+0:91            2 (const int)
+0:91        imageStore (temp void)
+0:91          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:91          'coordTemp' (temp int)
+0:91          'storeTemp' (temp 4-component vector of int)
+0:91        'storeTemp' (temp 4-component vector of int)
+0:92      Sequence
+0:92        move second child to first child (temp int)
+0:92          'coordTemp' (temp int)
+0:92          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:92            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:92            Constant:
+0:92              0 (const uint)
+0:92        move second child to first child (temp 4-component vector of int)
+0:92          'storeTemp' (temp 4-component vector of int)
+0:92          imageLoad (temp 4-component vector of int)
+0:92            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:92            'coordTemp' (temp int)
+0:92        right shift second child into first child (temp 4-component vector of int)
+0:92          'storeTemp' (temp 4-component vector of int)
+0:92          Constant:
+0:92            2 (const int)
+0:92        imageStore (temp void)
+0:92          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:92          'coordTemp' (temp int)
+0:92          'storeTemp' (temp 4-component vector of int)
+0:92        'storeTemp' (temp 4-component vector of int)
+0:95      Sequence
+0:95        move second child to first child (temp 4-component vector of float)
+0:95          'storeTemp' (temp 4-component vector of float)
+0:95          Function Call: SomeValue( (temp 4-component vector of float)
+0:95        imageStore (temp void)
+0:95          'g_tTex2df4' (layout(rgba32f ) uniform image2D)
+0:95          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:95            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:95            Constant:
+0:95              1 (const uint)
+0:95          'storeTemp' (temp 4-component vector of float)
+0:95        'storeTemp' (temp 4-component vector of float)
+0:96      Sequence
+0:96        imageStore (temp void)
+0:96          'g_tTex2df4' (layout(rgba32f ) uniform image2D)
+0:96          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:96            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:96            Constant:
+0:96              1 (const uint)
+0:96          'lf4' (temp 4-component vector of float)
+0:96        'lf4' (temp 4-component vector of float)
+0:97      Sequence
+0:97        move second child to first child (temp 4-component vector of int)
+0:97          'storeTemp' (temp 4-component vector of int)
+0:?           Constant:
+0:?             5 (const int)
+0:?             2 (const int)
+0:?             3 (const int)
+0:?             4 (const int)
+0:97        imageStore (temp void)
+0:97          'g_tTex2di4' (layout(rgba32i ) uniform iimage2D)
+0:97          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:97            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:97            Constant:
+0:97              1 (const uint)
+0:97          'storeTemp' (temp 4-component vector of int)
+0:97        'storeTemp' (temp 4-component vector of int)
+0:98      Sequence
+0:98        move second child to first child (temp 4-component vector of uint)
+0:98          'storeTemp' (temp 4-component vector of uint)
+0:?           Constant:
+0:?             6 (const uint)
+0:?             2 (const uint)
+0:?             3 (const uint)
+0:?             4 (const uint)
+0:98        imageStore (temp void)
+0:98          'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D)
+0:98          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:98            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:98            Constant:
+0:98              1 (const uint)
+0:98          'storeTemp' (temp 4-component vector of uint)
+0:98        'storeTemp' (temp 4-component vector of uint)
+0:101      Sequence
+0:101        move second child to first child (temp 4-component vector of float)
+0:101          'storeTemp' (temp 4-component vector of float)
+0:101          Function Call: SomeValue( (temp 4-component vector of float)
+0:101        imageStore (temp void)
+0:101          'g_tTex3df4' (layout(rgba32f ) uniform image3D)
+0:101          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:101            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:101            Constant:
+0:101              2 (const uint)
+0:101          'storeTemp' (temp 4-component vector of float)
+0:101        'storeTemp' (temp 4-component vector of float)
+0:102      Sequence
+0:102        imageStore (temp void)
+0:102          'g_tTex3df4' (layout(rgba32f ) uniform image3D)
+0:102          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:102            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:102            Constant:
+0:102              2 (const uint)
+0:102          'lf4' (temp 4-component vector of float)
+0:102        'lf4' (temp 4-component vector of float)
+0:103      Sequence
+0:103        move second child to first child (temp 4-component vector of int)
+0:103          'storeTemp' (temp 4-component vector of int)
+0:?           Constant:
+0:?             8 (const int)
+0:?             6 (const int)
+0:?             7 (const int)
+0:?             8 (const int)
+0:103        imageStore (temp void)
+0:103          'g_tTex3di4' (layout(rgba32i ) uniform iimage3D)
+0:103          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:103            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:103            Constant:
+0:103              2 (const uint)
+0:103          'storeTemp' (temp 4-component vector of int)
+0:103        'storeTemp' (temp 4-component vector of int)
+0:104      Sequence
+0:104        move second child to first child (temp 4-component vector of uint)
+0:104          'storeTemp' (temp 4-component vector of uint)
+0:?           Constant:
+0:?             9 (const uint)
+0:?             2 (const uint)
+0:?             3 (const uint)
+0:?             4 (const uint)
+0:104        imageStore (temp void)
+0:104          'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D)
+0:104          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:104            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:104            Constant:
+0:104              2 (const uint)
+0:104          'storeTemp' (temp 4-component vector of uint)
+0:104        'storeTemp' (temp 4-component vector of uint)
+0:107      Function Call: Fn1(vf4; (temp 4-component vector of float)
+0:107        imageLoad (temp 4-component vector of float)
+0:107          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:107          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:107            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:107            Constant:
+0:107              0 (const uint)
+0:108      Function Call: Fn1(vi4; (temp 4-component vector of int)
+0:108        imageLoad (temp 4-component vector of int)
+0:108          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:108          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:108            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:108            Constant:
+0:108              0 (const uint)
+0:109      Function Call: Fn1(vu4; (temp 4-component vector of uint)
+0:109        imageLoad (temp 4-component vector of uint)
+0:109          'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:109          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:109            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:109            Constant:
+0:109              0 (const uint)
+0:111      Comma (temp void)
+0:111        Function Call: Fn2(vf4; (temp void)
+0:111          'tempArg' (temp 4-component vector of float)
+0:111        Sequence
+0:111          imageStore (temp void)
+0:111            'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:111            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:111              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:111              Constant:
+0:111                0 (const uint)
+0:111            'tempArg' (temp 4-component vector of float)
+0:111          'tempArg' (temp 4-component vector of float)
+0:112      Comma (temp void)
+0:112        Function Call: Fn2(vi4; (temp void)
+0:112          'tempArg' (temp 4-component vector of int)
+0:112        Sequence
+0:112          imageStore (temp void)
+0:112            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:112            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:112              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:112              Constant:
+0:112                0 (const uint)
+0:112            'tempArg' (temp 4-component vector of int)
+0:112          'tempArg' (temp 4-component vector of int)
+0:113      Comma (temp void)
+0:113        Function Call: Fn2(vu4; (temp void)
+0:113          'tempArg' (temp 4-component vector of uint)
+0:113        Sequence
+0:113          imageStore (temp void)
+0:113            'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:113            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:113              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:113              Constant:
+0:113                0 (const uint)
+0:113            'tempArg' (temp 4-component vector of uint)
+0:113          'tempArg' (temp 4-component vector of uint)
+0:117      Sequence
+0:117        move second child to first child (temp int)
+0:117          'coordTemp' (temp int)
+0:117          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:117            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:117            Constant:
+0:117              0 (const uint)
+0:117        move second child to first child (temp 4-component vector of float)
+0:117          'storeTemp' (temp 4-component vector of float)
+0:117          imageLoad (temp 4-component vector of float)
+0:117            'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:117            'coordTemp' (temp int)
+0:117        Pre-Increment (temp 4-component vector of float)
+0:117          'storeTemp' (temp 4-component vector of float)
+0:117        imageStore (temp void)
+0:117          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:117          'coordTemp' (temp int)
+0:117          'storeTemp' (temp 4-component vector of float)
+0:117        'storeTemp' (temp 4-component vector of float)
+0:118      Sequence
+0:118        move second child to first child (temp int)
+0:118          'coordTemp' (temp int)
+0:118          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:118            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:118            Constant:
+0:118              0 (const uint)
+0:118        move second child to first child (temp 4-component vector of int)
+0:118          'storeTemp' (temp 4-component vector of int)
+0:118          imageLoad (temp 4-component vector of int)
+0:118            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:118            'coordTemp' (temp int)
+0:118        Pre-Increment (temp 4-component vector of int)
+0:118          'storeTemp' (temp 4-component vector of int)
+0:118        imageStore (temp void)
+0:118          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:118          'coordTemp' (temp int)
+0:118          'storeTemp' (temp 4-component vector of int)
+0:118        'storeTemp' (temp 4-component vector of int)
+0:119      Sequence
+0:119        move second child to first child (temp int)
+0:119          'coordTemp' (temp int)
+0:119          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:119            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:119            Constant:
+0:119              0 (const uint)
+0:119        move second child to first child (temp 4-component vector of uint)
+0:119          'storeTemp' (temp 4-component vector of uint)
+0:119          imageLoad (temp 4-component vector of uint)
+0:119            'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:119            'coordTemp' (temp int)
+0:119        Pre-Increment (temp 4-component vector of uint)
+0:119          'storeTemp' (temp 4-component vector of uint)
+0:119        imageStore (temp void)
+0:119          'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:119          'coordTemp' (temp int)
+0:119          'storeTemp' (temp 4-component vector of uint)
+0:119        'storeTemp' (temp 4-component vector of uint)
+0:121      Sequence
+0:121        move second child to first child (temp int)
+0:121          'coordTemp' (temp int)
+0:121          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:121            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:121            Constant:
+0:121              0 (const uint)
+0:121        move second child to first child (temp 4-component vector of float)
+0:121          'storeTemp' (temp 4-component vector of float)
+0:121          imageLoad (temp 4-component vector of float)
+0:121            'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:121            'coordTemp' (temp int)
+0:121        Pre-Decrement (temp 4-component vector of float)
+0:121          'storeTemp' (temp 4-component vector of float)
+0:121        imageStore (temp void)
+0:121          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:121          'coordTemp' (temp int)
+0:121          'storeTemp' (temp 4-component vector of float)
+0:121        'storeTemp' (temp 4-component vector of float)
+0:122      Sequence
+0:122        move second child to first child (temp int)
+0:122          'coordTemp' (temp int)
+0:122          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:122            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:122            Constant:
+0:122              0 (const uint)
+0:122        move second child to first child (temp 4-component vector of int)
+0:122          'storeTemp' (temp 4-component vector of int)
+0:122          imageLoad (temp 4-component vector of int)
+0:122            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:122            'coordTemp' (temp int)
+0:122        Pre-Decrement (temp 4-component vector of int)
+0:122          'storeTemp' (temp 4-component vector of int)
+0:122        imageStore (temp void)
+0:122          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:122          'coordTemp' (temp int)
+0:122          'storeTemp' (temp 4-component vector of int)
+0:122        'storeTemp' (temp 4-component vector of int)
+0:123      Sequence
+0:123        move second child to first child (temp int)
+0:123          'coordTemp' (temp int)
+0:123          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:123            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:123            Constant:
+0:123              0 (const uint)
+0:123        move second child to first child (temp 4-component vector of uint)
+0:123          'storeTemp' (temp 4-component vector of uint)
+0:123          imageLoad (temp 4-component vector of uint)
+0:123            'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:123            'coordTemp' (temp int)
+0:123        Pre-Decrement (temp 4-component vector of uint)
+0:123          'storeTemp' (temp 4-component vector of uint)
+0:123        imageStore (temp void)
+0:123          'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:123          'coordTemp' (temp int)
+0:123          'storeTemp' (temp 4-component vector of uint)
+0:123        'storeTemp' (temp 4-component vector of uint)
+0:126      Sequence
+0:126        move second child to first child (temp int)
+0:126          'coordTemp' (temp int)
+0:126          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:126            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:126            Constant:
+0:126              0 (const uint)
+0:126        move second child to first child (temp 4-component vector of float)
+0:126          'storeTempPre' (temp 4-component vector of float)
+0:126          imageLoad (temp 4-component vector of float)
+0:126            'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:126            'coordTemp' (temp int)
+0:126        move second child to first child (temp 4-component vector of float)
+0:126          'storeTempPost' (temp 4-component vector of float)
+0:126          'storeTempPre' (temp 4-component vector of float)
+0:126        Post-Increment (temp 4-component vector of float)
+0:126          'storeTempPost' (temp 4-component vector of float)
+0:126        imageStore (temp void)
+0:126          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:126          'coordTemp' (temp int)
+0:126          'storeTempPost' (temp 4-component vector of float)
+0:126        'storeTempPre' (temp 4-component vector of float)
+0:127      Sequence
+0:127        move second child to first child (temp int)
+0:127          'coordTemp' (temp int)
+0:127          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:127            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:127            Constant:
+0:127              0 (const uint)
+0:127        move second child to first child (temp 4-component vector of uint)
+0:127          'storeTempPre' (temp 4-component vector of uint)
+0:127          imageLoad (temp 4-component vector of uint)
+0:127            'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:127            'coordTemp' (temp int)
+0:127        move second child to first child (temp 4-component vector of uint)
+0:127          'storeTempPost' (temp 4-component vector of uint)
+0:127          'storeTempPre' (temp 4-component vector of uint)
+0:127        Post-Decrement (temp 4-component vector of uint)
+0:127          'storeTempPost' (temp 4-component vector of uint)
+0:127        imageStore (temp void)
+0:127          'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:127          'coordTemp' (temp int)
+0:127          'storeTempPost' (temp 4-component vector of uint)
+0:127        'storeTempPre' (temp 4-component vector of uint)
+0:128      Sequence
+0:128        move second child to first child (temp int)
+0:128          'coordTemp' (temp int)
+0:128          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:128            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:128            Constant:
+0:128              0 (const uint)
+0:128        move second child to first child (temp 4-component vector of int)
+0:128          'storeTempPre' (temp 4-component vector of int)
+0:128          imageLoad (temp 4-component vector of int)
+0:128            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:128            'coordTemp' (temp int)
+0:128        move second child to first child (temp 4-component vector of int)
+0:128          'storeTempPost' (temp 4-component vector of int)
+0:128          'storeTempPre' (temp 4-component vector of int)
+0:128        Post-Increment (temp 4-component vector of int)
+0:128          'storeTempPost' (temp 4-component vector of int)
+0:128        imageStore (temp void)
+0:128          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:128          'coordTemp' (temp int)
+0:128          'storeTempPost' (temp 4-component vector of int)
+0:128        'storeTempPre' (temp 4-component vector of int)
+0:130      Sequence
+0:130        move second child to first child (temp int)
+0:130          'coordTemp' (temp int)
+0:130          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:130            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:130            Constant:
+0:130              0 (const uint)
+0:130        move second child to first child (temp 4-component vector of float)
+0:130          'storeTempPre' (temp 4-component vector of float)
+0:130          imageLoad (temp 4-component vector of float)
+0:130            'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:130            'coordTemp' (temp int)
+0:130        move second child to first child (temp 4-component vector of float)
+0:130          'storeTempPost' (temp 4-component vector of float)
+0:130          'storeTempPre' (temp 4-component vector of float)
+0:130        Post-Decrement (temp 4-component vector of float)
+0:130          'storeTempPost' (temp 4-component vector of float)
+0:130        imageStore (temp void)
+0:130          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:130          'coordTemp' (temp int)
+0:130          'storeTempPost' (temp 4-component vector of float)
+0:130        'storeTempPre' (temp 4-component vector of float)
+0:131      Sequence
+0:131        move second child to first child (temp int)
+0:131          'coordTemp' (temp int)
+0:131          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:131            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:131            Constant:
+0:131              0 (const uint)
+0:131        move second child to first child (temp 4-component vector of int)
+0:131          'storeTempPre' (temp 4-component vector of int)
+0:131          imageLoad (temp 4-component vector of int)
+0:131            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:131            'coordTemp' (temp int)
+0:131        move second child to first child (temp 4-component vector of int)
+0:131          'storeTempPost' (temp 4-component vector of int)
+0:131          'storeTempPre' (temp 4-component vector of int)
+0:131        Post-Increment (temp 4-component vector of int)
+0:131          'storeTempPost' (temp 4-component vector of int)
+0:131        imageStore (temp void)
+0:131          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:131          'coordTemp' (temp int)
+0:131          'storeTempPost' (temp 4-component vector of int)
+0:131        'storeTempPre' (temp 4-component vector of int)
+0:132      Sequence
+0:132        move second child to first child (temp int)
+0:132          'coordTemp' (temp int)
+0:132          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:132            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:132            Constant:
+0:132              0 (const uint)
+0:132        move second child to first child (temp 4-component vector of uint)
+0:132          'storeTempPre' (temp 4-component vector of uint)
+0:132          imageLoad (temp 4-component vector of uint)
+0:132            'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:132            'coordTemp' (temp int)
+0:132        move second child to first child (temp 4-component vector of uint)
+0:132          'storeTempPost' (temp 4-component vector of uint)
+0:132          'storeTempPre' (temp 4-component vector of uint)
+0:132        Post-Decrement (temp 4-component vector of uint)
+0:132          'storeTempPost' (temp 4-component vector of uint)
+0:132        imageStore (temp void)
+0:132          'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:132          'coordTemp' (temp int)
+0:132          'storeTempPost' (temp 4-component vector of uint)
+0:132        'storeTempPre' (temp 4-component vector of uint)
+0:135      Sequence
+0:135        move second child to first child (temp 4-component vector of float)
+0:135          'storeTemp' (temp 4-component vector of float)
+0:?           imageLoad (temp 4-component vector of float)
+0:135            'g_tTex2df4' (layout(rgba32f ) uniform image2D)
+0:?             Constant:
+0:?               2 (const int)
+0:?               3 (const int)
+0:135        imageStore (temp void)
+0:135          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:135          Constant:
+0:135            1 (const int)
+0:135          'storeTemp' (temp 4-component vector of float)
+0:135        'storeTemp' (temp 4-component vector of float)
+0:137      move second child to first child (temp 4-component vector of float)
+0:137        Color: direct index for structure (temp 4-component vector of float)
+0:137          'psout' (temp structure{temp 4-component vector of float Color})
+0:137          Constant:
+0:137            0 (const int)
+0:137        Constant:
+0:137          1.000000
+0:137          1.000000
+0:137          1.000000
+0:137          1.000000
+0:139      Sequence
+0:139        Sequence
+0:139          move second child to first child (temp 4-component vector of float)
+0:?             'Color' (layout(location=0 ) out 4-component vector of float)
+0:139            Color: direct index for structure (temp 4-component vector of float)
+0:139              'psout' (temp structure{temp 4-component vector of float Color})
+0:139              Constant:
+0:139                0 (const int)
+0:139        Branch: Return
+0:?   Linker Objects
+0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:?     'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:?     'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:?     'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:?     'g_tTex2df4' (layout(rgba32f ) uniform image2D)
+0:?     'g_tTex2di4' (layout(rgba32i ) uniform iimage2D)
+0:?     'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D)
+0:?     'g_tTex3df4' (layout(rgba32f ) uniform image3D)
+0:?     'g_tTex3di4' (layout(rgba32i ) uniform iimage3D)
+0:?     'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D)
+0:?     'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray)
+0:?     'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray)
+0:?     'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray)
+0:?     'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray)
+0:?     'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray)
+0:?     'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:42  Function Definition: Fn1(vi4; (temp 4-component vector of int)
+0:42    Function Parameters: 
+0:42      'x' (in 4-component vector of int)
+0:?     Sequence
+0:42      Branch: Return with expression
+0:42        'x' (in 4-component vector of int)
+0:43  Function Definition: Fn1(vu4; (temp 4-component vector of uint)
+0:43    Function Parameters: 
+0:43      'x' (in 4-component vector of uint)
+0:?     Sequence
+0:43      Branch: Return with expression
+0:43        'x' (in 4-component vector of uint)
+0:44  Function Definition: Fn1(vf4; (temp 4-component vector of float)
+0:44    Function Parameters: 
+0:44      'x' (in 4-component vector of float)
+0:?     Sequence
+0:44      Branch: Return with expression
+0:44        'x' (in 4-component vector of float)
+0:46  Function Definition: Fn2(vi4; (temp void)
+0:46    Function Parameters: 
+0:46      'x' (out 4-component vector of int)
+0:?     Sequence
+0:46      move second child to first child (temp 4-component vector of int)
+0:46        'x' (out 4-component vector of int)
+0:46        Constant:
+0:46          0 (const int)
+0:46          0 (const int)
+0:46          0 (const int)
+0:46          0 (const int)
+0:47  Function Definition: Fn2(vu4; (temp void)
+0:47    Function Parameters: 
+0:47      'x' (out 4-component vector of uint)
+0:?     Sequence
+0:47      move second child to first child (temp 4-component vector of uint)
+0:47        'x' (out 4-component vector of uint)
+0:47        Constant:
+0:47          0 (const uint)
+0:47          0 (const uint)
+0:47          0 (const uint)
+0:47          0 (const uint)
+0:48  Function Definition: Fn2(vf4; (temp void)
+0:48    Function Parameters: 
+0:48      'x' (out 4-component vector of float)
+0:?     Sequence
+0:48      move second child to first child (temp 4-component vector of float)
+0:48        'x' (out 4-component vector of float)
+0:48        Constant:
+0:48          0.000000
+0:48          0.000000
+0:48          0.000000
+0:48          0.000000
+0:50  Function Definition: SomeValue( (temp 4-component vector of float)
+0:50    Function Parameters: 
+0:?     Sequence
+0:50      Branch: Return with expression
+0:50        Convert int to float (temp 4-component vector of float)
+0:50          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:50            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:50            Constant:
+0:50              3 (const uint)
+0:53  Function Definition: main( (temp structure{temp 4-component vector of float Color})
+0:53    Function Parameters: 
+0:?     Sequence
+0:57      imageLoad (temp 4-component vector of float)
+0:57        'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:57        c1: direct index for structure (layout(offset=0 ) uniform int)
+0:57          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:57          Constant:
+0:57            0 (const uint)
+0:59      Sequence
+0:59        move second child to first child (temp 4-component vector of float)
+0:59          'r00' (temp 4-component vector of float)
+0:59          imageLoad (temp 4-component vector of float)
+0:59            'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:59            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:59              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:59              Constant:
+0:59                0 (const uint)
+0:60      Sequence
+0:60        move second child to first child (temp 4-component vector of int)
+0:60          'r01' (temp 4-component vector of int)
+0:60          imageLoad (temp 4-component vector of int)
+0:60            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:60            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:60              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:60              Constant:
+0:60                0 (const uint)
+0:61      Sequence
+0:61        move second child to first child (temp 4-component vector of uint)
+0:61          'r02' (temp 4-component vector of uint)
+0:61          imageLoad (temp 4-component vector of uint)
+0:61            'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:61            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:61              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:61              Constant:
+0:61                0 (const uint)
+0:64      Sequence
+0:64        move second child to first child (temp 4-component vector of float)
+0:64          'r10' (temp 4-component vector of float)
+0:64          imageLoad (temp 4-component vector of float)
+0:64            'g_tTex2df4' (layout(rgba32f ) uniform image2D)
+0:64            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:64              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:64              Constant:
+0:64                1 (const uint)
+0:65      Sequence
+0:65        move second child to first child (temp 4-component vector of int)
+0:65          'r11' (temp 4-component vector of int)
+0:65          imageLoad (temp 4-component vector of int)
+0:65            'g_tTex2di4' (layout(rgba32i ) uniform iimage2D)
+0:65            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:65              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:65              Constant:
+0:65                1 (const uint)
+0:66      Sequence
+0:66        move second child to first child (temp 4-component vector of uint)
+0:66          'r12' (temp 4-component vector of uint)
+0:66          imageLoad (temp 4-component vector of uint)
+0:66            'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D)
+0:66            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:66              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:66              Constant:
+0:66                1 (const uint)
+0:69      Sequence
+0:69        move second child to first child (temp 4-component vector of float)
+0:69          'r20' (temp 4-component vector of float)
+0:69          imageLoad (temp 4-component vector of float)
+0:69            'g_tTex3df4' (layout(rgba32f ) uniform image3D)
+0:69            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:69              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:69              Constant:
+0:69                2 (const uint)
+0:70      Sequence
+0:70        move second child to first child (temp 4-component vector of int)
+0:70          'r21' (temp 4-component vector of int)
+0:70          imageLoad (temp 4-component vector of int)
+0:70            'g_tTex3di4' (layout(rgba32i ) uniform iimage3D)
+0:70            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:70              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:70              Constant:
+0:70                2 (const uint)
+0:71      Sequence
+0:71        move second child to first child (temp 4-component vector of uint)
+0:71          'r22' (temp 4-component vector of uint)
+0:71          imageLoad (temp 4-component vector of uint)
+0:71            'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D)
+0:71            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:71              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:71              Constant:
+0:71                2 (const uint)
+0:73      Sequence
+0:73        move second child to first child (temp 4-component vector of float)
+0:73          'lf4' (temp 4-component vector of float)
+0:73          uf4: direct index for structure (layout(offset=96 ) uniform 4-component vector of float)
+0:73            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:73            Constant:
+0:73              8 (const uint)
+0:77      Sequence
+0:77        move second child to first child (temp 4-component vector of float)
+0:77          'storeTemp' (temp 4-component vector of float)
+0:77          Function Call: SomeValue( (temp 4-component vector of float)
+0:77        imageStore (temp void)
+0:77          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:77          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:77            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:77            Constant:
+0:77              0 (const uint)
+0:77          'storeTemp' (temp 4-component vector of float)
+0:77        'storeTemp' (temp 4-component vector of float)
+0:78      Sequence
+0:78        imageStore (temp void)
+0:78          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:78          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:78            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:78            Constant:
+0:78              0 (const uint)
+0:78          'lf4' (temp 4-component vector of float)
+0:78        'lf4' (temp 4-component vector of float)
+0:79      Sequence
+0:79        move second child to first child (temp 4-component vector of int)
+0:79          'storeTemp' (temp 4-component vector of int)
+0:?           Constant:
+0:?             2 (const int)
+0:?             2 (const int)
+0:?             3 (const int)
+0:?             4 (const int)
+0:79        imageStore (temp void)
+0:79          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:79          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:79            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:79            Constant:
+0:79              0 (const uint)
+0:79          'storeTemp' (temp 4-component vector of int)
+0:79        'storeTemp' (temp 4-component vector of int)
+0:80      Sequence
+0:80        move second child to first child (temp 4-component vector of uint)
+0:80          'storeTemp' (temp 4-component vector of uint)
+0:?           Constant:
+0:?             3 (const uint)
+0:?             2 (const uint)
+0:?             3 (const uint)
+0:?             4 (const uint)
+0:80        imageStore (temp void)
+0:80          'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:80          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:80            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:80            Constant:
+0:80              0 (const uint)
+0:80          'storeTemp' (temp 4-component vector of uint)
+0:80        'storeTemp' (temp 4-component vector of uint)
+0:83      Sequence
+0:83        move second child to first child (temp 4-component vector of float)
+0:83          'val1' (temp 4-component vector of float)
+0:83          Sequence
+0:83            move second child to first child (temp int)
+0:83              'coordTemp' (temp int)
+0:83              c1: direct index for structure (layout(offset=0 ) uniform int)
+0:83                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:83                Constant:
+0:83                  0 (const uint)
+0:83            move second child to first child (temp 4-component vector of float)
+0:83              'storeTemp' (temp 4-component vector of float)
+0:83              imageLoad (temp 4-component vector of float)
+0:83                'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:83                'coordTemp' (temp int)
+0:83            vector scale second child into first child (temp 4-component vector of float)
+0:83              'storeTemp' (temp 4-component vector of float)
+0:83              Constant:
+0:83                2.000000
+0:83            imageStore (temp void)
+0:83              'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:83              'coordTemp' (temp int)
+0:83              'storeTemp' (temp 4-component vector of float)
+0:83            'storeTemp' (temp 4-component vector of float)
+0:84      Sequence
+0:84        move second child to first child (temp int)
+0:84          'coordTemp' (temp int)
+0:84          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:84            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:84            Constant:
+0:84              0 (const uint)
+0:84        move second child to first child (temp 4-component vector of float)
+0:84          'storeTemp' (temp 4-component vector of float)
+0:84          imageLoad (temp 4-component vector of float)
+0:84            'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:84            'coordTemp' (temp int)
+0:84        subtract second child into first child (temp 4-component vector of float)
+0:84          'storeTemp' (temp 4-component vector of float)
+0:84          Constant:
+0:84            3.000000
+0:84        imageStore (temp void)
+0:84          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:84          'coordTemp' (temp int)
+0:84          'storeTemp' (temp 4-component vector of float)
+0:84        'storeTemp' (temp 4-component vector of float)
+0:85      Sequence
+0:85        move second child to first child (temp int)
+0:85          'coordTemp' (temp int)
+0:85          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:85            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:85            Constant:
+0:85              0 (const uint)
+0:85        move second child to first child (temp 4-component vector of float)
+0:85          'storeTemp' (temp 4-component vector of float)
+0:85          imageLoad (temp 4-component vector of float)
+0:85            'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:85            'coordTemp' (temp int)
+0:85        add second child into first child (temp 4-component vector of float)
+0:85          'storeTemp' (temp 4-component vector of float)
+0:85          Constant:
+0:85            4.000000
+0:85        imageStore (temp void)
+0:85          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:85          'coordTemp' (temp int)
+0:85          'storeTemp' (temp 4-component vector of float)
+0:85        'storeTemp' (temp 4-component vector of float)
+0:87      Sequence
+0:87        move second child to first child (temp int)
+0:87          'coordTemp' (temp int)
+0:87          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:87            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:87            Constant:
+0:87              0 (const uint)
+0:87        move second child to first child (temp 4-component vector of int)
+0:87          'storeTemp' (temp 4-component vector of int)
+0:87          imageLoad (temp 4-component vector of int)
+0:87            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:87            'coordTemp' (temp int)
+0:87        divide second child into first child (temp 4-component vector of int)
+0:87          'storeTemp' (temp 4-component vector of int)
+0:87          Constant:
+0:87            2 (const int)
+0:87        imageStore (temp void)
+0:87          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:87          'coordTemp' (temp int)
+0:87          'storeTemp' (temp 4-component vector of int)
+0:87        'storeTemp' (temp 4-component vector of int)
+0:88      Sequence
+0:88        move second child to first child (temp int)
+0:88          'coordTemp' (temp int)
+0:88          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:88            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:88            Constant:
+0:88              0 (const uint)
+0:88        move second child to first child (temp 4-component vector of int)
+0:88          'storeTemp' (temp 4-component vector of int)
+0:88          imageLoad (temp 4-component vector of int)
+0:88            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:88            'coordTemp' (temp int)
+0:88        mod second child into first child (temp 4-component vector of int)
+0:88          'storeTemp' (temp 4-component vector of int)
+0:88          Constant:
+0:88            2 (const int)
+0:88        imageStore (temp void)
+0:88          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:88          'coordTemp' (temp int)
+0:88          'storeTemp' (temp 4-component vector of int)
+0:88        'storeTemp' (temp 4-component vector of int)
+0:89      Sequence
+0:89        move second child to first child (temp int)
+0:89          'coordTemp' (temp int)
+0:89          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:89            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:89            Constant:
+0:89              0 (const uint)
+0:89        move second child to first child (temp 4-component vector of int)
+0:89          'storeTemp' (temp 4-component vector of int)
+0:89          imageLoad (temp 4-component vector of int)
+0:89            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:89            'coordTemp' (temp int)
+0:89        and second child into first child (temp 4-component vector of int)
+0:89          'storeTemp' (temp 4-component vector of int)
+0:89          Constant:
+0:89            65535 (const int)
+0:89        imageStore (temp void)
+0:89          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:89          'coordTemp' (temp int)
+0:89          'storeTemp' (temp 4-component vector of int)
+0:89        'storeTemp' (temp 4-component vector of int)
+0:90      Sequence
+0:90        move second child to first child (temp int)
+0:90          'coordTemp' (temp int)
+0:90          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:90            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:90            Constant:
+0:90              0 (const uint)
+0:90        move second child to first child (temp 4-component vector of int)
+0:90          'storeTemp' (temp 4-component vector of int)
+0:90          imageLoad (temp 4-component vector of int)
+0:90            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:90            'coordTemp' (temp int)
+0:90        or second child into first child (temp 4-component vector of int)
+0:90          'storeTemp' (temp 4-component vector of int)
+0:90          Constant:
+0:90            61680 (const int)
+0:90        imageStore (temp void)
+0:90          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:90          'coordTemp' (temp int)
+0:90          'storeTemp' (temp 4-component vector of int)
+0:90        'storeTemp' (temp 4-component vector of int)
+0:91      Sequence
+0:91        move second child to first child (temp int)
+0:91          'coordTemp' (temp int)
+0:91          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:91            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:91            Constant:
+0:91              0 (const uint)
+0:91        move second child to first child (temp 4-component vector of int)
+0:91          'storeTemp' (temp 4-component vector of int)
+0:91          imageLoad (temp 4-component vector of int)
+0:91            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:91            'coordTemp' (temp int)
+0:91        left shift second child into first child (temp 4-component vector of int)
+0:91          'storeTemp' (temp 4-component vector of int)
+0:91          Constant:
+0:91            2 (const int)
+0:91        imageStore (temp void)
+0:91          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:91          'coordTemp' (temp int)
+0:91          'storeTemp' (temp 4-component vector of int)
+0:91        'storeTemp' (temp 4-component vector of int)
+0:92      Sequence
+0:92        move second child to first child (temp int)
+0:92          'coordTemp' (temp int)
+0:92          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:92            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:92            Constant:
+0:92              0 (const uint)
+0:92        move second child to first child (temp 4-component vector of int)
+0:92          'storeTemp' (temp 4-component vector of int)
+0:92          imageLoad (temp 4-component vector of int)
+0:92            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:92            'coordTemp' (temp int)
+0:92        right shift second child into first child (temp 4-component vector of int)
+0:92          'storeTemp' (temp 4-component vector of int)
+0:92          Constant:
+0:92            2 (const int)
+0:92        imageStore (temp void)
+0:92          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:92          'coordTemp' (temp int)
+0:92          'storeTemp' (temp 4-component vector of int)
+0:92        'storeTemp' (temp 4-component vector of int)
+0:95      Sequence
+0:95        move second child to first child (temp 4-component vector of float)
+0:95          'storeTemp' (temp 4-component vector of float)
+0:95          Function Call: SomeValue( (temp 4-component vector of float)
+0:95        imageStore (temp void)
+0:95          'g_tTex2df4' (layout(rgba32f ) uniform image2D)
+0:95          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:95            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:95            Constant:
+0:95              1 (const uint)
+0:95          'storeTemp' (temp 4-component vector of float)
+0:95        'storeTemp' (temp 4-component vector of float)
+0:96      Sequence
+0:96        imageStore (temp void)
+0:96          'g_tTex2df4' (layout(rgba32f ) uniform image2D)
+0:96          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:96            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:96            Constant:
+0:96              1 (const uint)
+0:96          'lf4' (temp 4-component vector of float)
+0:96        'lf4' (temp 4-component vector of float)
+0:97      Sequence
+0:97        move second child to first child (temp 4-component vector of int)
+0:97          'storeTemp' (temp 4-component vector of int)
+0:?           Constant:
+0:?             5 (const int)
+0:?             2 (const int)
+0:?             3 (const int)
+0:?             4 (const int)
+0:97        imageStore (temp void)
+0:97          'g_tTex2di4' (layout(rgba32i ) uniform iimage2D)
+0:97          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:97            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:97            Constant:
+0:97              1 (const uint)
+0:97          'storeTemp' (temp 4-component vector of int)
+0:97        'storeTemp' (temp 4-component vector of int)
+0:98      Sequence
+0:98        move second child to first child (temp 4-component vector of uint)
+0:98          'storeTemp' (temp 4-component vector of uint)
+0:?           Constant:
+0:?             6 (const uint)
+0:?             2 (const uint)
+0:?             3 (const uint)
+0:?             4 (const uint)
+0:98        imageStore (temp void)
+0:98          'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D)
+0:98          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:98            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:98            Constant:
+0:98              1 (const uint)
+0:98          'storeTemp' (temp 4-component vector of uint)
+0:98        'storeTemp' (temp 4-component vector of uint)
+0:101      Sequence
+0:101        move second child to first child (temp 4-component vector of float)
+0:101          'storeTemp' (temp 4-component vector of float)
+0:101          Function Call: SomeValue( (temp 4-component vector of float)
+0:101        imageStore (temp void)
+0:101          'g_tTex3df4' (layout(rgba32f ) uniform image3D)
+0:101          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:101            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:101            Constant:
+0:101              2 (const uint)
+0:101          'storeTemp' (temp 4-component vector of float)
+0:101        'storeTemp' (temp 4-component vector of float)
+0:102      Sequence
+0:102        imageStore (temp void)
+0:102          'g_tTex3df4' (layout(rgba32f ) uniform image3D)
+0:102          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:102            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:102            Constant:
+0:102              2 (const uint)
+0:102          'lf4' (temp 4-component vector of float)
+0:102        'lf4' (temp 4-component vector of float)
+0:103      Sequence
+0:103        move second child to first child (temp 4-component vector of int)
+0:103          'storeTemp' (temp 4-component vector of int)
+0:?           Constant:
+0:?             8 (const int)
+0:?             6 (const int)
+0:?             7 (const int)
+0:?             8 (const int)
+0:103        imageStore (temp void)
+0:103          'g_tTex3di4' (layout(rgba32i ) uniform iimage3D)
+0:103          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:103            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:103            Constant:
+0:103              2 (const uint)
+0:103          'storeTemp' (temp 4-component vector of int)
+0:103        'storeTemp' (temp 4-component vector of int)
+0:104      Sequence
+0:104        move second child to first child (temp 4-component vector of uint)
+0:104          'storeTemp' (temp 4-component vector of uint)
+0:?           Constant:
+0:?             9 (const uint)
+0:?             2 (const uint)
+0:?             3 (const uint)
+0:?             4 (const uint)
+0:104        imageStore (temp void)
+0:104          'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D)
+0:104          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:104            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:104            Constant:
+0:104              2 (const uint)
+0:104          'storeTemp' (temp 4-component vector of uint)
+0:104        'storeTemp' (temp 4-component vector of uint)
+0:107      Function Call: Fn1(vf4; (temp 4-component vector of float)
+0:107        imageLoad (temp 4-component vector of float)
+0:107          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:107          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:107            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:107            Constant:
+0:107              0 (const uint)
+0:108      Function Call: Fn1(vi4; (temp 4-component vector of int)
+0:108        imageLoad (temp 4-component vector of int)
+0:108          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:108          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:108            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:108            Constant:
+0:108              0 (const uint)
+0:109      Function Call: Fn1(vu4; (temp 4-component vector of uint)
+0:109        imageLoad (temp 4-component vector of uint)
+0:109          'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:109          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:109            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:109            Constant:
+0:109              0 (const uint)
+0:111      Comma (temp void)
+0:111        Function Call: Fn2(vf4; (temp void)
+0:111          'tempArg' (temp 4-component vector of float)
+0:111        Sequence
+0:111          imageStore (temp void)
+0:111            'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:111            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:111              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:111              Constant:
+0:111                0 (const uint)
+0:111            'tempArg' (temp 4-component vector of float)
+0:111          'tempArg' (temp 4-component vector of float)
+0:112      Comma (temp void)
+0:112        Function Call: Fn2(vi4; (temp void)
+0:112          'tempArg' (temp 4-component vector of int)
+0:112        Sequence
+0:112          imageStore (temp void)
+0:112            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:112            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:112              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:112              Constant:
+0:112                0 (const uint)
+0:112            'tempArg' (temp 4-component vector of int)
+0:112          'tempArg' (temp 4-component vector of int)
+0:113      Comma (temp void)
+0:113        Function Call: Fn2(vu4; (temp void)
+0:113          'tempArg' (temp 4-component vector of uint)
+0:113        Sequence
+0:113          imageStore (temp void)
+0:113            'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:113            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:113              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:113              Constant:
+0:113                0 (const uint)
+0:113            'tempArg' (temp 4-component vector of uint)
+0:113          'tempArg' (temp 4-component vector of uint)
+0:117      Sequence
+0:117        move second child to first child (temp int)
+0:117          'coordTemp' (temp int)
+0:117          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:117            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:117            Constant:
+0:117              0 (const uint)
+0:117        move second child to first child (temp 4-component vector of float)
+0:117          'storeTemp' (temp 4-component vector of float)
+0:117          imageLoad (temp 4-component vector of float)
+0:117            'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:117            'coordTemp' (temp int)
+0:117        Pre-Increment (temp 4-component vector of float)
+0:117          'storeTemp' (temp 4-component vector of float)
+0:117        imageStore (temp void)
+0:117          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:117          'coordTemp' (temp int)
+0:117          'storeTemp' (temp 4-component vector of float)
+0:117        'storeTemp' (temp 4-component vector of float)
+0:118      Sequence
+0:118        move second child to first child (temp int)
+0:118          'coordTemp' (temp int)
+0:118          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:118            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:118            Constant:
+0:118              0 (const uint)
+0:118        move second child to first child (temp 4-component vector of int)
+0:118          'storeTemp' (temp 4-component vector of int)
+0:118          imageLoad (temp 4-component vector of int)
+0:118            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:118            'coordTemp' (temp int)
+0:118        Pre-Increment (temp 4-component vector of int)
+0:118          'storeTemp' (temp 4-component vector of int)
+0:118        imageStore (temp void)
+0:118          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:118          'coordTemp' (temp int)
+0:118          'storeTemp' (temp 4-component vector of int)
+0:118        'storeTemp' (temp 4-component vector of int)
+0:119      Sequence
+0:119        move second child to first child (temp int)
+0:119          'coordTemp' (temp int)
+0:119          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:119            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:119            Constant:
+0:119              0 (const uint)
+0:119        move second child to first child (temp 4-component vector of uint)
+0:119          'storeTemp' (temp 4-component vector of uint)
+0:119          imageLoad (temp 4-component vector of uint)
+0:119            'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:119            'coordTemp' (temp int)
+0:119        Pre-Increment (temp 4-component vector of uint)
+0:119          'storeTemp' (temp 4-component vector of uint)
+0:119        imageStore (temp void)
+0:119          'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:119          'coordTemp' (temp int)
+0:119          'storeTemp' (temp 4-component vector of uint)
+0:119        'storeTemp' (temp 4-component vector of uint)
+0:121      Sequence
+0:121        move second child to first child (temp int)
+0:121          'coordTemp' (temp int)
+0:121          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:121            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:121            Constant:
+0:121              0 (const uint)
+0:121        move second child to first child (temp 4-component vector of float)
+0:121          'storeTemp' (temp 4-component vector of float)
+0:121          imageLoad (temp 4-component vector of float)
+0:121            'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:121            'coordTemp' (temp int)
+0:121        Pre-Decrement (temp 4-component vector of float)
+0:121          'storeTemp' (temp 4-component vector of float)
+0:121        imageStore (temp void)
+0:121          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:121          'coordTemp' (temp int)
+0:121          'storeTemp' (temp 4-component vector of float)
+0:121        'storeTemp' (temp 4-component vector of float)
+0:122      Sequence
+0:122        move second child to first child (temp int)
+0:122          'coordTemp' (temp int)
+0:122          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:122            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:122            Constant:
+0:122              0 (const uint)
+0:122        move second child to first child (temp 4-component vector of int)
+0:122          'storeTemp' (temp 4-component vector of int)
+0:122          imageLoad (temp 4-component vector of int)
+0:122            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:122            'coordTemp' (temp int)
+0:122        Pre-Decrement (temp 4-component vector of int)
+0:122          'storeTemp' (temp 4-component vector of int)
+0:122        imageStore (temp void)
+0:122          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:122          'coordTemp' (temp int)
+0:122          'storeTemp' (temp 4-component vector of int)
+0:122        'storeTemp' (temp 4-component vector of int)
+0:123      Sequence
+0:123        move second child to first child (temp int)
+0:123          'coordTemp' (temp int)
+0:123          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:123            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:123            Constant:
+0:123              0 (const uint)
+0:123        move second child to first child (temp 4-component vector of uint)
+0:123          'storeTemp' (temp 4-component vector of uint)
+0:123          imageLoad (temp 4-component vector of uint)
+0:123            'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:123            'coordTemp' (temp int)
+0:123        Pre-Decrement (temp 4-component vector of uint)
+0:123          'storeTemp' (temp 4-component vector of uint)
+0:123        imageStore (temp void)
+0:123          'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:123          'coordTemp' (temp int)
+0:123          'storeTemp' (temp 4-component vector of uint)
+0:123        'storeTemp' (temp 4-component vector of uint)
+0:126      Sequence
+0:126        move second child to first child (temp int)
+0:126          'coordTemp' (temp int)
+0:126          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:126            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:126            Constant:
+0:126              0 (const uint)
+0:126        move second child to first child (temp 4-component vector of float)
+0:126          'storeTempPre' (temp 4-component vector of float)
+0:126          imageLoad (temp 4-component vector of float)
+0:126            'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:126            'coordTemp' (temp int)
+0:126        move second child to first child (temp 4-component vector of float)
+0:126          'storeTempPost' (temp 4-component vector of float)
+0:126          'storeTempPre' (temp 4-component vector of float)
+0:126        Post-Increment (temp 4-component vector of float)
+0:126          'storeTempPost' (temp 4-component vector of float)
+0:126        imageStore (temp void)
+0:126          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:126          'coordTemp' (temp int)
+0:126          'storeTempPost' (temp 4-component vector of float)
+0:126        'storeTempPre' (temp 4-component vector of float)
+0:127      Sequence
+0:127        move second child to first child (temp int)
+0:127          'coordTemp' (temp int)
+0:127          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:127            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:127            Constant:
+0:127              0 (const uint)
+0:127        move second child to first child (temp 4-component vector of uint)
+0:127          'storeTempPre' (temp 4-component vector of uint)
+0:127          imageLoad (temp 4-component vector of uint)
+0:127            'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:127            'coordTemp' (temp int)
+0:127        move second child to first child (temp 4-component vector of uint)
+0:127          'storeTempPost' (temp 4-component vector of uint)
+0:127          'storeTempPre' (temp 4-component vector of uint)
+0:127        Post-Decrement (temp 4-component vector of uint)
+0:127          'storeTempPost' (temp 4-component vector of uint)
+0:127        imageStore (temp void)
+0:127          'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:127          'coordTemp' (temp int)
+0:127          'storeTempPost' (temp 4-component vector of uint)
+0:127        'storeTempPre' (temp 4-component vector of uint)
+0:128      Sequence
+0:128        move second child to first child (temp int)
+0:128          'coordTemp' (temp int)
+0:128          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:128            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:128            Constant:
+0:128              0 (const uint)
+0:128        move second child to first child (temp 4-component vector of int)
+0:128          'storeTempPre' (temp 4-component vector of int)
+0:128          imageLoad (temp 4-component vector of int)
+0:128            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:128            'coordTemp' (temp int)
+0:128        move second child to first child (temp 4-component vector of int)
+0:128          'storeTempPost' (temp 4-component vector of int)
+0:128          'storeTempPre' (temp 4-component vector of int)
+0:128        Post-Increment (temp 4-component vector of int)
+0:128          'storeTempPost' (temp 4-component vector of int)
+0:128        imageStore (temp void)
+0:128          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:128          'coordTemp' (temp int)
+0:128          'storeTempPost' (temp 4-component vector of int)
+0:128        'storeTempPre' (temp 4-component vector of int)
+0:130      Sequence
+0:130        move second child to first child (temp int)
+0:130          'coordTemp' (temp int)
+0:130          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:130            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:130            Constant:
+0:130              0 (const uint)
+0:130        move second child to first child (temp 4-component vector of float)
+0:130          'storeTempPre' (temp 4-component vector of float)
+0:130          imageLoad (temp 4-component vector of float)
+0:130            'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:130            'coordTemp' (temp int)
+0:130        move second child to first child (temp 4-component vector of float)
+0:130          'storeTempPost' (temp 4-component vector of float)
+0:130          'storeTempPre' (temp 4-component vector of float)
+0:130        Post-Decrement (temp 4-component vector of float)
+0:130          'storeTempPost' (temp 4-component vector of float)
+0:130        imageStore (temp void)
+0:130          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:130          'coordTemp' (temp int)
+0:130          'storeTempPost' (temp 4-component vector of float)
+0:130        'storeTempPre' (temp 4-component vector of float)
+0:131      Sequence
+0:131        move second child to first child (temp int)
+0:131          'coordTemp' (temp int)
+0:131          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:131            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:131            Constant:
+0:131              0 (const uint)
+0:131        move second child to first child (temp 4-component vector of int)
+0:131          'storeTempPre' (temp 4-component vector of int)
+0:131          imageLoad (temp 4-component vector of int)
+0:131            'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:131            'coordTemp' (temp int)
+0:131        move second child to first child (temp 4-component vector of int)
+0:131          'storeTempPost' (temp 4-component vector of int)
+0:131          'storeTempPre' (temp 4-component vector of int)
+0:131        Post-Increment (temp 4-component vector of int)
+0:131          'storeTempPost' (temp 4-component vector of int)
+0:131        imageStore (temp void)
+0:131          'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:131          'coordTemp' (temp int)
+0:131          'storeTempPost' (temp 4-component vector of int)
+0:131        'storeTempPre' (temp 4-component vector of int)
+0:132      Sequence
+0:132        move second child to first child (temp int)
+0:132          'coordTemp' (temp int)
+0:132          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:132            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:132            Constant:
+0:132              0 (const uint)
+0:132        move second child to first child (temp 4-component vector of uint)
+0:132          'storeTempPre' (temp 4-component vector of uint)
+0:132          imageLoad (temp 4-component vector of uint)
+0:132            'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:132            'coordTemp' (temp int)
+0:132        move second child to first child (temp 4-component vector of uint)
+0:132          'storeTempPost' (temp 4-component vector of uint)
+0:132          'storeTempPre' (temp 4-component vector of uint)
+0:132        Post-Decrement (temp 4-component vector of uint)
+0:132          'storeTempPost' (temp 4-component vector of uint)
+0:132        imageStore (temp void)
+0:132          'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:132          'coordTemp' (temp int)
+0:132          'storeTempPost' (temp 4-component vector of uint)
+0:132        'storeTempPre' (temp 4-component vector of uint)
+0:135      Sequence
+0:135        move second child to first child (temp 4-component vector of float)
+0:135          'storeTemp' (temp 4-component vector of float)
+0:?           imageLoad (temp 4-component vector of float)
+0:135            'g_tTex2df4' (layout(rgba32f ) uniform image2D)
+0:?             Constant:
+0:?               2 (const int)
+0:?               3 (const int)
+0:135        imageStore (temp void)
+0:135          'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:135          Constant:
+0:135            1 (const int)
+0:135          'storeTemp' (temp 4-component vector of float)
+0:135        'storeTemp' (temp 4-component vector of float)
+0:137      move second child to first child (temp 4-component vector of float)
+0:137        Color: direct index for structure (temp 4-component vector of float)
+0:137          'psout' (temp structure{temp 4-component vector of float Color})
+0:137          Constant:
+0:137            0 (const int)
+0:137        Constant:
+0:137          1.000000
+0:137          1.000000
+0:137          1.000000
+0:137          1.000000
+0:139      Sequence
+0:139        Sequence
+0:139          move second child to first child (temp 4-component vector of float)
+0:?             'Color' (layout(location=0 ) out 4-component vector of float)
+0:139            Color: direct index for structure (temp 4-component vector of float)
+0:139              'psout' (temp structure{temp 4-component vector of float Color})
+0:139              Constant:
+0:139                0 (const int)
+0:139        Branch: Return
+0:?   Linker Objects
+0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:?     'g_tTex1df4' (layout(binding=0 rgba32f ) uniform image1D)
+0:?     'g_tTex1di4' (layout(rgba32i ) uniform iimage1D)
+0:?     'g_tTex1du4' (layout(rgba32ui ) uniform uimage1D)
+0:?     'g_tTex2df4' (layout(rgba32f ) uniform image2D)
+0:?     'g_tTex2di4' (layout(rgba32i ) uniform iimage2D)
+0:?     'g_tTex2du4' (layout(rgba32ui ) uniform uimage2D)
+0:?     'g_tTex3df4' (layout(rgba32f ) uniform image3D)
+0:?     'g_tTex3di4' (layout(rgba32i ) uniform iimage3D)
+0:?     'g_tTex3du4' (layout(rgba32ui ) uniform uimage3D)
+0:?     'g_tTex1df4a' (layout(rgba32f ) uniform image1DArray)
+0:?     'g_tTex1di4a' (layout(rgba32i ) uniform iimage1DArray)
+0:?     'g_tTex1du4a' (layout(rgba32ui ) uniform uimage1DArray)
+0:?     'g_tTex2df4a' (layout(rgba32f ) uniform image2DArray)
+0:?     'g_tTex2di4a' (layout(rgba32i ) uniform iimage2DArray)
+0:?     'g_tTex2du4a' (layout(rgba32ui ) uniform uimage2DArray)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 4-component vector of float uf4, layout(offset=112 ) uniform 4-component vector of int ui4, layout(offset=128 ) uniform 4-component vector of uint uu4})
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 602
+
+                              Capability Shader
+                              Capability Sampled1D
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 577
+                              ExecutionMode 4 OriginUpperLeft
+                              Name 4  "main"
+                              Name 11  "Fn1(vi4;"
+                              Name 10  "x"
+                              Name 18  "Fn1(vu4;"
+                              Name 17  "x"
+                              Name 25  "Fn1(vf4;"
+                              Name 24  "x"
+                              Name 29  "Fn2(vi4;"
+                              Name 28  "x"
+                              Name 33  "Fn2(vu4;"
+                              Name 32  "x"
+                              Name 37  "Fn2(vf4;"
+                              Name 36  "x"
+                              Name 40  "SomeValue("
+                              Name 59  "$Global"
+                              MemberName 59($Global) 0  "c1"
+                              MemberName 59($Global) 1  "c2"
+                              MemberName 59($Global) 2  "c3"
+                              MemberName 59($Global) 3  "c4"
+                              MemberName 59($Global) 4  "o1"
+                              MemberName 59($Global) 5  "o2"
+                              MemberName 59($Global) 6  "o3"
+                              MemberName 59($Global) 7  "o4"
+                              MemberName 59($Global) 8  "uf4"
+                              MemberName 59($Global) 9  "ui4"
+                              MemberName 59($Global) 10  "uu4"
+                              Name 61  ""
+                              Name 71  "g_tTex1df4"
+                              Name 77  "r00"
+                              Name 82  "r01"
+                              Name 85  "g_tTex1di4"
+                              Name 90  "r02"
+                              Name 93  "g_tTex1du4"
+                              Name 98  "r10"
+                              Name 101  "g_tTex2df4"
+                              Name 108  "r11"
+                              Name 111  "g_tTex2di4"
+                              Name 116  "r12"
+                              Name 119  "g_tTex2du4"
+                              Name 124  "r20"
+                              Name 127  "g_tTex3df4"
+                              Name 134  "r21"
+                              Name 137  "g_tTex3di4"
+                              Name 142  "r22"
+                              Name 145  "g_tTex3du4"
+                              Name 150  "lf4"
+                              Name 155  "storeTemp"
+                              Name 165  "storeTemp"
+                              Name 172  "storeTemp"
+                              Name 181  "val1"
+                              Name 183  "coordTemp"
+                              Name 186  "storeTemp"
+                              Name 197  "coordTemp"
+                              Name 200  "storeTemp"
+                              Name 211  "coordTemp"
+                              Name 214  "storeTemp"
+                              Name 225  "coordTemp"
+                              Name 228  "storeTemp"
+                              Name 238  "coordTemp"
+                              Name 241  "storeTemp"
+                              Name 251  "coordTemp"
+                              Name 254  "storeTemp"
+                              Name 265  "coordTemp"
+                              Name 268  "storeTemp"
+                              Name 279  "coordTemp"
+                              Name 282  "storeTemp"
+                              Name 292  "coordTemp"
+                              Name 295  "storeTemp"
+                              Name 305  "storeTemp"
+                              Name 315  "storeTemp"
+                              Name 322  "storeTemp"
+                              Name 329  "storeTemp"
+                              Name 339  "storeTemp"
+                              Name 347  "storeTemp"
+                              Name 358  "param"
+                              Name 364  "param"
+                              Name 370  "param"
+                              Name 372  "tempArg"
+                              Name 373  "param"
+                              Name 380  "tempArg"
+                              Name 381  "param"
+                              Name 388  "tempArg"
+                              Name 389  "param"
+                              Name 396  "coordTemp"
+                              Name 399  "storeTemp"
+                              Name 410  "coordTemp"
+                              Name 413  "storeTemp"
+                              Name 423  "coordTemp"
+                              Name 426  "storeTemp"
+                              Name 436  "coordTemp"
+                              Name 439  "storeTemp"
+                              Name 449  "coordTemp"
+                              Name 452  "storeTemp"
+                              Name 462  "coordTemp"
+                              Name 465  "storeTemp"
+                              Name 475  "coordTemp"
+                              Name 478  "storeTempPre"
+                              Name 482  "storeTempPost"
+                              Name 490  "coordTemp"
+                              Name 493  "storeTempPre"
+                              Name 497  "storeTempPost"
+                              Name 505  "coordTemp"
+                              Name 508  "storeTempPre"
+                              Name 512  "storeTempPost"
+                              Name 520  "coordTemp"
+                              Name 523  "storeTempPre"
+                              Name 527  "storeTempPost"
+                              Name 535  "coordTemp"
+                              Name 538  "storeTempPre"
+                              Name 542  "storeTempPost"
+                              Name 550  "coordTemp"
+                              Name 553  "storeTempPre"
+                              Name 557  "storeTempPost"
+                              Name 565  "storeTemp"
+                              Name 571  "PS_OUTPUT"
+                              MemberName 571(PS_OUTPUT) 0  "Color"
+                              Name 573  "psout"
+                              Name 577  "Color"
+                              Name 583  "g_sSamp"
+                              Name 586  "g_tTex1df4a"
+                              Name 589  "g_tTex1di4a"
+                              Name 592  "g_tTex1du4a"
+                              Name 595  "g_tTex2df4a"
+                              Name 598  "g_tTex2di4a"
+                              Name 601  "g_tTex2du4a"
+                              MemberDecorate 59($Global) 0 Offset 0
+                              MemberDecorate 59($Global) 1 Offset 8
+                              MemberDecorate 59($Global) 2 Offset 16
+                              MemberDecorate 59($Global) 3 Offset 32
+                              MemberDecorate 59($Global) 4 Offset 48
+                              MemberDecorate 59($Global) 5 Offset 56
+                              MemberDecorate 59($Global) 6 Offset 64
+                              MemberDecorate 59($Global) 7 Offset 80
+                              MemberDecorate 59($Global) 8 Offset 96
+                              MemberDecorate 59($Global) 9 Offset 112
+                              MemberDecorate 59($Global) 10 Offset 128
+                              Decorate 59($Global) Block
+                              Decorate 61 DescriptorSet 0
+                              Decorate 71(g_tTex1df4) DescriptorSet 0
+                              Decorate 71(g_tTex1df4) Binding 0
+                              Decorate 85(g_tTex1di4) DescriptorSet 0
+                              Decorate 93(g_tTex1du4) DescriptorSet 0
+                              Decorate 101(g_tTex2df4) DescriptorSet 0
+                              Decorate 111(g_tTex2di4) DescriptorSet 0
+                              Decorate 119(g_tTex2du4) DescriptorSet 0
+                              Decorate 127(g_tTex3df4) DescriptorSet 0
+                              Decorate 137(g_tTex3di4) DescriptorSet 0
+                              Decorate 145(g_tTex3du4) DescriptorSet 0
+                              Decorate 577(Color) Location 0
+                              Decorate 583(g_sSamp) DescriptorSet 0
+                              Decorate 583(g_sSamp) Binding 0
+                              Decorate 586(g_tTex1df4a) DescriptorSet 0
+                              Decorate 589(g_tTex1di4a) DescriptorSet 0
+                              Decorate 592(g_tTex1du4a) DescriptorSet 0
+                              Decorate 595(g_tTex2df4a) DescriptorSet 0
+                              Decorate 598(g_tTex2di4a) DescriptorSet 0
+                              Decorate 601(g_tTex2du4a) DescriptorSet 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypeVector 6(int) 4
+               8:             TypePointer Function 7(ivec4)
+               9:             TypeFunction 7(ivec4) 8(ptr)
+              13:             TypeInt 32 0
+              14:             TypeVector 13(int) 4
+              15:             TypePointer Function 14(ivec4)
+              16:             TypeFunction 14(ivec4) 15(ptr)
+              20:             TypeFloat 32
+              21:             TypeVector 20(float) 4
+              22:             TypePointer Function 21(fvec4)
+              23:             TypeFunction 21(fvec4) 22(ptr)
+              27:             TypeFunction 2 8(ptr)
+              31:             TypeFunction 2 15(ptr)
+              35:             TypeFunction 2 22(ptr)
+              39:             TypeFunction 21(fvec4)
+              51:      6(int) Constant 0
+              52:    7(ivec4) ConstantComposite 51 51 51 51
+              53:     13(int) Constant 0
+              54:   14(ivec4) ConstantComposite 53 53 53 53
+              55:   20(float) Constant 0
+              56:   21(fvec4) ConstantComposite 55 55 55 55
+              57:             TypeVector 6(int) 2
+              58:             TypeVector 6(int) 3
+     59($Global):             TypeStruct 6(int) 57(ivec2) 58(ivec3) 7(ivec4) 6(int) 57(ivec2) 58(ivec3) 7(ivec4) 21(fvec4) 7(ivec4) 14(ivec4)
+              60:             TypePointer Uniform 59($Global)
+              61:     60(ptr) Variable Uniform
+              62:      6(int) Constant 3
+              63:             TypePointer Uniform 7(ivec4)
+              69:             TypeImage 20(float) 1D nonsampled format:Rgba32f
+              70:             TypePointer UniformConstant 69
+  71(g_tTex1df4):     70(ptr) Variable UniformConstant
+              73:             TypePointer Uniform 6(int)
+              83:             TypeImage 6(int) 1D nonsampled format:Rgba32i
+              84:             TypePointer UniformConstant 83
+  85(g_tTex1di4):     84(ptr) Variable UniformConstant
+              91:             TypeImage 13(int) 1D nonsampled format:Rgba32ui
+              92:             TypePointer UniformConstant 91
+  93(g_tTex1du4):     92(ptr) Variable UniformConstant
+              99:             TypeImage 20(float) 2D nonsampled format:Rgba32f
+             100:             TypePointer UniformConstant 99
+ 101(g_tTex2df4):    100(ptr) Variable UniformConstant
+             103:      6(int) Constant 1
+             104:             TypePointer Uniform 57(ivec2)
+             109:             TypeImage 6(int) 2D nonsampled format:Rgba32i
+             110:             TypePointer UniformConstant 109
+ 111(g_tTex2di4):    110(ptr) Variable UniformConstant
+             117:             TypeImage 13(int) 2D nonsampled format:Rgba32ui
+             118:             TypePointer UniformConstant 117
+ 119(g_tTex2du4):    118(ptr) Variable UniformConstant
+             125:             TypeImage 20(float) 3D nonsampled format:Rgba32f
+             126:             TypePointer UniformConstant 125
+ 127(g_tTex3df4):    126(ptr) Variable UniformConstant
+             129:      6(int) Constant 2
+             130:             TypePointer Uniform 58(ivec3)
+             135:             TypeImage 6(int) 3D nonsampled format:Rgba32i
+             136:             TypePointer UniformConstant 135
+ 137(g_tTex3di4):    136(ptr) Variable UniformConstant
+             143:             TypeImage 13(int) 3D nonsampled format:Rgba32ui
+             144:             TypePointer UniformConstant 143
+ 145(g_tTex3du4):    144(ptr) Variable UniformConstant
+             151:      6(int) Constant 8
+             152:             TypePointer Uniform 21(fvec4)
+             166:      6(int) Constant 4
+             167:    7(ivec4) ConstantComposite 129 129 62 166
+             173:     13(int) Constant 3
+             174:     13(int) Constant 2
+             175:     13(int) Constant 4
+             176:   14(ivec4) ConstantComposite 173 174 173 175
+             182:             TypePointer Function 6(int)
+             190:   20(float) Constant 1073741824
+             204:   20(float) Constant 1077936128
+             218:   20(float) Constant 1082130432
+             258:      6(int) Constant 65535
+             272:      6(int) Constant 61680
+             316:      6(int) Constant 5
+             317:    7(ivec4) ConstantComposite 316 129 62 166
+             323:     13(int) Constant 6
+             324:   14(ivec4) ConstantComposite 323 174 173 175
+             340:      6(int) Constant 6
+             341:      6(int) Constant 7
+             342:    7(ivec4) ConstantComposite 151 340 341 151
+             348:     13(int) Constant 9
+             349:   14(ivec4) ConstantComposite 348 174 173 175
+             404:   20(float) Constant 1065353216
+             567:   57(ivec2) ConstantComposite 129 62
+  571(PS_OUTPUT):             TypeStruct 21(fvec4)
+             572:             TypePointer Function 571(PS_OUTPUT)
+             574:   21(fvec4) ConstantComposite 404 404 404 404
+             576:             TypePointer Output 21(fvec4)
+      577(Color):    576(ptr) Variable Output
+             581:             TypeSampler
+             582:             TypePointer UniformConstant 581
+    583(g_sSamp):    582(ptr) Variable UniformConstant
+             584:             TypeImage 20(float) 1D array nonsampled format:Rgba32f
+             585:             TypePointer UniformConstant 584
+586(g_tTex1df4a):    585(ptr) Variable UniformConstant
+             587:             TypeImage 6(int) 1D array nonsampled format:Rgba32i
+             588:             TypePointer UniformConstant 587
+589(g_tTex1di4a):    588(ptr) Variable UniformConstant
+             590:             TypeImage 13(int) 1D array nonsampled format:Rgba32ui
+             591:             TypePointer UniformConstant 590
+592(g_tTex1du4a):    591(ptr) Variable UniformConstant
+             593:             TypeImage 20(float) 2D array nonsampled format:Rgba32f
+             594:             TypePointer UniformConstant 593
+595(g_tTex2df4a):    594(ptr) Variable UniformConstant
+             596:             TypeImage 6(int) 2D array nonsampled format:Rgba32i
+             597:             TypePointer UniformConstant 596
+598(g_tTex2di4a):    597(ptr) Variable UniformConstant
+             599:             TypeImage 13(int) 2D array nonsampled format:Rgba32ui
+             600:             TypePointer UniformConstant 599
+601(g_tTex2du4a):    600(ptr) Variable UniformConstant
+         4(main):           2 Function None 3
+               5:             Label
+         77(r00):     22(ptr) Variable Function
+         82(r01):      8(ptr) Variable Function
+         90(r02):     15(ptr) Variable Function
+         98(r10):     22(ptr) Variable Function
+        108(r11):      8(ptr) Variable Function
+        116(r12):     15(ptr) Variable Function
+        124(r20):     22(ptr) Variable Function
+        134(r21):      8(ptr) Variable Function
+        142(r22):     15(ptr) Variable Function
+        150(lf4):     22(ptr) Variable Function
+  155(storeTemp):     22(ptr) Variable Function
+  165(storeTemp):      8(ptr) Variable Function
+  172(storeTemp):     15(ptr) Variable Function
+       181(val1):     22(ptr) Variable Function
+  183(coordTemp):    182(ptr) Variable Function
+  186(storeTemp):     22(ptr) Variable Function
+  197(coordTemp):    182(ptr) Variable Function
+  200(storeTemp):     22(ptr) Variable Function
+  211(coordTemp):    182(ptr) Variable Function
+  214(storeTemp):     22(ptr) Variable Function
+  225(coordTemp):    182(ptr) Variable Function
+  228(storeTemp):      8(ptr) Variable Function
+  238(coordTemp):    182(ptr) Variable Function
+  241(storeTemp):      8(ptr) Variable Function
+  251(coordTemp):    182(ptr) Variable Function
+  254(storeTemp):      8(ptr) Variable Function
+  265(coordTemp):    182(ptr) Variable Function
+  268(storeTemp):      8(ptr) Variable Function
+  279(coordTemp):    182(ptr) Variable Function
+  282(storeTemp):      8(ptr) Variable Function
+  292(coordTemp):    182(ptr) Variable Function
+  295(storeTemp):      8(ptr) Variable Function
+  305(storeTemp):     22(ptr) Variable Function
+  315(storeTemp):      8(ptr) Variable Function
+  322(storeTemp):     15(ptr) Variable Function
+  329(storeTemp):     22(ptr) Variable Function
+  339(storeTemp):      8(ptr) Variable Function
+  347(storeTemp):     15(ptr) Variable Function
+      358(param):     22(ptr) Variable Function
+      364(param):      8(ptr) Variable Function
+      370(param):     15(ptr) Variable Function
+    372(tempArg):     22(ptr) Variable Function
+      373(param):     22(ptr) Variable Function
+    380(tempArg):      8(ptr) Variable Function
+      381(param):      8(ptr) Variable Function
+    388(tempArg):     15(ptr) Variable Function
+      389(param):     15(ptr) Variable Function
+  396(coordTemp):    182(ptr) Variable Function
+  399(storeTemp):     22(ptr) Variable Function
+  410(coordTemp):    182(ptr) Variable Function
+  413(storeTemp):      8(ptr) Variable Function
+  423(coordTemp):    182(ptr) Variable Function
+  426(storeTemp):     15(ptr) Variable Function
+  436(coordTemp):    182(ptr) Variable Function
+  439(storeTemp):     22(ptr) Variable Function
+  449(coordTemp):    182(ptr) Variable Function
+  452(storeTemp):      8(ptr) Variable Function
+  462(coordTemp):    182(ptr) Variable Function
+  465(storeTemp):     15(ptr) Variable Function
+  475(coordTemp):    182(ptr) Variable Function
+478(storeTempPre):     22(ptr) Variable Function
+482(storeTempPost):     22(ptr) Variable Function
+  490(coordTemp):    182(ptr) Variable Function
+493(storeTempPre):     15(ptr) Variable Function
+497(storeTempPost):     15(ptr) Variable Function
+  505(coordTemp):    182(ptr) Variable Function
+508(storeTempPre):      8(ptr) Variable Function
+512(storeTempPost):      8(ptr) Variable Function
+  520(coordTemp):    182(ptr) Variable Function
+523(storeTempPre):     22(ptr) Variable Function
+527(storeTempPost):     22(ptr) Variable Function
+  535(coordTemp):    182(ptr) Variable Function
+538(storeTempPre):      8(ptr) Variable Function
+542(storeTempPost):      8(ptr) Variable Function
+  550(coordTemp):    182(ptr) Variable Function
+553(storeTempPre):     15(ptr) Variable Function
+557(storeTempPost):     15(ptr) Variable Function
+  565(storeTemp):     22(ptr) Variable Function
+      573(psout):    572(ptr) Variable Function
+              72:          69 Load 71(g_tTex1df4)
+              74:     73(ptr) AccessChain 61 51
+              75:      6(int) Load 74
+              76:   21(fvec4) ImageRead 72 75
+              78:          69 Load 71(g_tTex1df4)
+              79:     73(ptr) AccessChain 61 51
+              80:      6(int) Load 79
+              81:   21(fvec4) ImageRead 78 80
+                              Store 77(r00) 81
+              86:          83 Load 85(g_tTex1di4)
+              87:     73(ptr) AccessChain 61 51
+              88:      6(int) Load 87
+              89:    7(ivec4) ImageRead 86 88
+                              Store 82(r01) 89
+              94:          91 Load 93(g_tTex1du4)
+              95:     73(ptr) AccessChain 61 51
+              96:      6(int) Load 95
+              97:   14(ivec4) ImageRead 94 96
+                              Store 90(r02) 97
+             102:          99 Load 101(g_tTex2df4)
+             105:    104(ptr) AccessChain 61 103
+             106:   57(ivec2) Load 105
+             107:   21(fvec4) ImageRead 102 106
+                              Store 98(r10) 107
+             112:         109 Load 111(g_tTex2di4)
+             113:    104(ptr) AccessChain 61 103
+             114:   57(ivec2) Load 113
+             115:    7(ivec4) ImageRead 112 114
+                              Store 108(r11) 115
+             120:         117 Load 119(g_tTex2du4)
+             121:    104(ptr) AccessChain 61 103
+             122:   57(ivec2) Load 121
+             123:   14(ivec4) ImageRead 120 122
+                              Store 116(r12) 123
+             128:         125 Load 127(g_tTex3df4)
+             131:    130(ptr) AccessChain 61 129
+             132:   58(ivec3) Load 131
+             133:   21(fvec4) ImageRead 128 132
+                              Store 124(r20) 133
+             138:         135 Load 137(g_tTex3di4)
+             139:    130(ptr) AccessChain 61 129
+             140:   58(ivec3) Load 139
+             141:    7(ivec4) ImageRead 138 140
+                              Store 134(r21) 141
+             146:         143 Load 145(g_tTex3du4)
+             147:    130(ptr) AccessChain 61 129
+             148:   58(ivec3) Load 147
+             149:   14(ivec4) ImageRead 146 148
+                              Store 142(r22) 149
+             153:    152(ptr) AccessChain 61 151
+             154:   21(fvec4) Load 153
+                              Store 150(lf4) 154
+             156:   21(fvec4) FunctionCall 40(SomeValue()
+                              Store 155(storeTemp) 156
+             157:          69 Load 71(g_tTex1df4)
+             158:     73(ptr) AccessChain 61 51
+             159:      6(int) Load 158
+             160:   21(fvec4) Load 155(storeTemp)
+                              ImageWrite 157 159 160
+             161:          69 Load 71(g_tTex1df4)
+             162:     73(ptr) AccessChain 61 51
+             163:      6(int) Load 162
+             164:   21(fvec4) Load 150(lf4)
+                              ImageWrite 161 163 164
+                              Store 165(storeTemp) 167
+             168:          83 Load 85(g_tTex1di4)
+             169:     73(ptr) AccessChain 61 51
+             170:      6(int) Load 169
+             171:    7(ivec4) Load 165(storeTemp)
+                              ImageWrite 168 170 171
+                              Store 172(storeTemp) 176
+             177:          91 Load 93(g_tTex1du4)
+             178:     73(ptr) AccessChain 61 51
+             179:      6(int) Load 178
+             180:   14(ivec4) Load 172(storeTemp)
+                              ImageWrite 177 179 180
+             184:     73(ptr) AccessChain 61 51
+             185:      6(int) Load 184
+                              Store 183(coordTemp) 185
+             187:          69 Load 71(g_tTex1df4)
+             188:      6(int) Load 183(coordTemp)
+             189:   21(fvec4) ImageRead 187 188
+                              Store 186(storeTemp) 189
+             191:   21(fvec4) Load 186(storeTemp)
+             192:   21(fvec4) VectorTimesScalar 191 190
+                              Store 186(storeTemp) 192
+             193:          69 Load 71(g_tTex1df4)
+             194:      6(int) Load 183(coordTemp)
+             195:   21(fvec4) Load 186(storeTemp)
+                              ImageWrite 193 194 195
+             196:   21(fvec4) Load 186(storeTemp)
+                              Store 181(val1) 196
+             198:     73(ptr) AccessChain 61 51
+             199:      6(int) Load 198
+                              Store 197(coordTemp) 199
+             201:          69 Load 71(g_tTex1df4)
+             202:      6(int) Load 197(coordTemp)
+             203:   21(fvec4) ImageRead 201 202
+                              Store 200(storeTemp) 203
+             205:   21(fvec4) Load 200(storeTemp)
+             206:   21(fvec4) CompositeConstruct 204 204 204 204
+             207:   21(fvec4) FSub 205 206
+                              Store 200(storeTemp) 207
+             208:          69 Load 71(g_tTex1df4)
+             209:      6(int) Load 197(coordTemp)
+             210:   21(fvec4) Load 200(storeTemp)
+                              ImageWrite 208 209 210
+             212:     73(ptr) AccessChain 61 51
+             213:      6(int) Load 212
+                              Store 211(coordTemp) 213
+             215:          69 Load 71(g_tTex1df4)
+             216:      6(int) Load 211(coordTemp)
+             217:   21(fvec4) ImageRead 215 216
+                              Store 214(storeTemp) 217
+             219:   21(fvec4) Load 214(storeTemp)
+             220:   21(fvec4) CompositeConstruct 218 218 218 218
+             221:   21(fvec4) FAdd 219 220
+                              Store 214(storeTemp) 221
+             222:          69 Load 71(g_tTex1df4)
+             223:      6(int) Load 211(coordTemp)
+             224:   21(fvec4) Load 214(storeTemp)
+                              ImageWrite 222 223 224
+             226:     73(ptr) AccessChain 61 51
+             227:      6(int) Load 226
+                              Store 225(coordTemp) 227
+             229:          83 Load 85(g_tTex1di4)
+             230:      6(int) Load 225(coordTemp)
+             231:    7(ivec4) ImageRead 229 230
+                              Store 228(storeTemp) 231
+             232:    7(ivec4) Load 228(storeTemp)
+             233:    7(ivec4) CompositeConstruct 129 129 129 129
+             234:    7(ivec4) SDiv 232 233
+                              Store 228(storeTemp) 234
+             235:          83 Load 85(g_tTex1di4)
+             236:      6(int) Load 225(coordTemp)
+             237:    7(ivec4) Load 228(storeTemp)
+                              ImageWrite 235 236 237
+             239:     73(ptr) AccessChain 61 51
+             240:      6(int) Load 239
+                              Store 238(coordTemp) 240
+             242:          83 Load 85(g_tTex1di4)
+             243:      6(int) Load 238(coordTemp)
+             244:    7(ivec4) ImageRead 242 243
+                              Store 241(storeTemp) 244
+             245:    7(ivec4) Load 241(storeTemp)
+             246:    7(ivec4) CompositeConstruct 129 129 129 129
+             247:    7(ivec4) SMod 245 246
+                              Store 241(storeTemp) 247
+             248:          83 Load 85(g_tTex1di4)
+             249:      6(int) Load 238(coordTemp)
+             250:    7(ivec4) Load 241(storeTemp)
+                              ImageWrite 248 249 250
+             252:     73(ptr) AccessChain 61 51
+             253:      6(int) Load 252
+                              Store 251(coordTemp) 253
+             255:          83 Load 85(g_tTex1di4)
+             256:      6(int) Load 251(coordTemp)
+             257:    7(ivec4) ImageRead 255 256
+                              Store 254(storeTemp) 257
+             259:    7(ivec4) Load 254(storeTemp)
+             260:    7(ivec4) CompositeConstruct 258 258 258 258
+             261:    7(ivec4) BitwiseAnd 259 260
+                              Store 254(storeTemp) 261
+             262:          83 Load 85(g_tTex1di4)
+             263:      6(int) Load 251(coordTemp)
+             264:    7(ivec4) Load 254(storeTemp)
+                              ImageWrite 262 263 264
+             266:     73(ptr) AccessChain 61 51
+             267:      6(int) Load 266
+                              Store 265(coordTemp) 267
+             269:          83 Load 85(g_tTex1di4)
+             270:      6(int) Load 265(coordTemp)
+             271:    7(ivec4) ImageRead 269 270
+                              Store 268(storeTemp) 271
+             273:    7(ivec4) Load 268(storeTemp)
+             274:    7(ivec4) CompositeConstruct 272 272 272 272
+             275:    7(ivec4) BitwiseOr 273 274
+                              Store 268(storeTemp) 275
+             276:          83 Load 85(g_tTex1di4)
+             277:      6(int) Load 265(coordTemp)
+             278:    7(ivec4) Load 268(storeTemp)
+                              ImageWrite 276 277 278
+             280:     73(ptr) AccessChain 61 51
+             281:      6(int) Load 280
+                              Store 279(coordTemp) 281
+             283:          83 Load 85(g_tTex1di4)
+             284:      6(int) Load 279(coordTemp)
+             285:    7(ivec4) ImageRead 283 284
+                              Store 282(storeTemp) 285
+             286:    7(ivec4) Load 282(storeTemp)
+             287:    7(ivec4) CompositeConstruct 129 129 129 129
+             288:    7(ivec4) ShiftLeftLogical 286 287
+                              Store 282(storeTemp) 288
+             289:          83 Load 85(g_tTex1di4)
+             290:      6(int) Load 279(coordTemp)
+             291:    7(ivec4) Load 282(storeTemp)
+                              ImageWrite 289 290 291
+             293:     73(ptr) AccessChain 61 51
+             294:      6(int) Load 293
+                              Store 292(coordTemp) 294
+             296:          83 Load 85(g_tTex1di4)
+             297:      6(int) Load 292(coordTemp)
+             298:    7(ivec4) ImageRead 296 297
+                              Store 295(storeTemp) 298
+             299:    7(ivec4) Load 295(storeTemp)
+             300:    7(ivec4) CompositeConstruct 129 129 129 129
+             301:    7(ivec4) ShiftRightArithmetic 299 300
+                              Store 295(storeTemp) 301
+             302:          83 Load 85(g_tTex1di4)
+             303:      6(int) Load 292(coordTemp)
+             304:    7(ivec4) Load 295(storeTemp)
+                              ImageWrite 302 303 304
+             306:   21(fvec4) FunctionCall 40(SomeValue()
+                              Store 305(storeTemp) 306
+             307:          99 Load 101(g_tTex2df4)
+             308:    104(ptr) AccessChain 61 103
+             309:   57(ivec2) Load 308
+             310:   21(fvec4) Load 305(storeTemp)
+                              ImageWrite 307 309 310
+             311:          99 Load 101(g_tTex2df4)
+             312:    104(ptr) AccessChain 61 103
+             313:   57(ivec2) Load 312
+             314:   21(fvec4) Load 150(lf4)
+                              ImageWrite 311 313 314
+                              Store 315(storeTemp) 317
+             318:         109 Load 111(g_tTex2di4)
+             319:    104(ptr) AccessChain 61 103
+             320:   57(ivec2) Load 319
+             321:    7(ivec4) Load 315(storeTemp)
+                              ImageWrite 318 320 321
+                              Store 322(storeTemp) 324
+             325:         117 Load 119(g_tTex2du4)
+             326:    104(ptr) AccessChain 61 103
+             327:   57(ivec2) Load 326
+             328:   14(ivec4) Load 322(storeTemp)
+                              ImageWrite 325 327 328
+             330:   21(fvec4) FunctionCall 40(SomeValue()
+                              Store 329(storeTemp) 330
+             331:         125 Load 127(g_tTex3df4)
+             332:    130(ptr) AccessChain 61 129
+             333:   58(ivec3) Load 332
+             334:   21(fvec4) Load 329(storeTemp)
+                              ImageWrite 331 333 334
+             335:         125 Load 127(g_tTex3df4)
+             336:    130(ptr) AccessChain 61 129
+             337:   58(ivec3) Load 336
+             338:   21(fvec4) Load 150(lf4)
+                              ImageWrite 335 337 338
+                              Store 339(storeTemp) 342
+             343:         135 Load 137(g_tTex3di4)
+             344:    130(ptr) AccessChain 61 129
+             345:   58(ivec3) Load 344
+             346:    7(ivec4) Load 339(storeTemp)
+                              ImageWrite 343 345 346
+                              Store 347(storeTemp) 349
+             350:         143 Load 145(g_tTex3du4)
+             351:    130(ptr) AccessChain 61 129
+             352:   58(ivec3) Load 351
+             353:   14(ivec4) Load 347(storeTemp)
+                              ImageWrite 350 352 353
+             354:          69 Load 71(g_tTex1df4)
+             355:     73(ptr) AccessChain 61 51
+             356:      6(int) Load 355
+             357:   21(fvec4) ImageRead 354 356
+                              Store 358(param) 357
+             359:   21(fvec4) FunctionCall 25(Fn1(vf4;) 358(param)
+             360:          83 Load 85(g_tTex1di4)
+             361:     73(ptr) AccessChain 61 51
+             362:      6(int) Load 361
+             363:    7(ivec4) ImageRead 360 362
+                              Store 364(param) 363
+             365:    7(ivec4) FunctionCall 11(Fn1(vi4;) 364(param)
+             366:          91 Load 93(g_tTex1du4)
+             367:     73(ptr) AccessChain 61 51
+             368:      6(int) Load 367
+             369:   14(ivec4) ImageRead 366 368
+                              Store 370(param) 369
+             371:   14(ivec4) FunctionCall 18(Fn1(vu4;) 370(param)
+             374:           2 FunctionCall 37(Fn2(vf4;) 373(param)
+             375:   21(fvec4) Load 373(param)
+                              Store 372(tempArg) 375
+             376:          69 Load 71(g_tTex1df4)
+             377:     73(ptr) AccessChain 61 51
+             378:      6(int) Load 377
+             379:   21(fvec4) Load 372(tempArg)
+                              ImageWrite 376 378 379
+             382:           2 FunctionCall 29(Fn2(vi4;) 381(param)
+             383:    7(ivec4) Load 381(param)
+                              Store 380(tempArg) 383
+             384:          83 Load 85(g_tTex1di4)
+             385:     73(ptr) AccessChain 61 51
+             386:      6(int) Load 385
+             387:    7(ivec4) Load 380(tempArg)
+                              ImageWrite 384 386 387
+             390:           2 FunctionCall 33(Fn2(vu4;) 389(param)
+             391:   14(ivec4) Load 389(param)
+                              Store 388(tempArg) 391
+             392:          91 Load 93(g_tTex1du4)
+             393:     73(ptr) AccessChain 61 51
+             394:      6(int) Load 393
+             395:   14(ivec4) Load 388(tempArg)
+                              ImageWrite 392 394 395
+             397:     73(ptr) AccessChain 61 51
+             398:      6(int) Load 397
+                              Store 396(coordTemp) 398
+             400:          69 Load 71(g_tTex1df4)
+             401:      6(int) Load 396(coordTemp)
+             402:   21(fvec4) ImageRead 400 401
+                              Store 399(storeTemp) 402
+             403:   21(fvec4) Load 399(storeTemp)
+             405:   21(fvec4) CompositeConstruct 404 404 404 404
+             406:   21(fvec4) FAdd 403 405
+                              Store 399(storeTemp) 406
+             407:          69 Load 71(g_tTex1df4)
+             408:      6(int) Load 396(coordTemp)
+             409:   21(fvec4) Load 399(storeTemp)
+                              ImageWrite 407 408 409
+             411:     73(ptr) AccessChain 61 51
+             412:      6(int) Load 411
+                              Store 410(coordTemp) 412
+             414:          83 Load 85(g_tTex1di4)
+             415:      6(int) Load 410(coordTemp)
+             416:    7(ivec4) ImageRead 414 415
+                              Store 413(storeTemp) 416
+             417:    7(ivec4) Load 413(storeTemp)
+             418:    7(ivec4) CompositeConstruct 103 103 103 103
+             419:    7(ivec4) IAdd 417 418
+                              Store 413(storeTemp) 419
+             420:          83 Load 85(g_tTex1di4)
+             421:      6(int) Load 410(coordTemp)
+             422:    7(ivec4) Load 413(storeTemp)
+                              ImageWrite 420 421 422
+             424:     73(ptr) AccessChain 61 51
+             425:      6(int) Load 424
+                              Store 423(coordTemp) 425
+             427:          91 Load 93(g_tTex1du4)
+             428:      6(int) Load 423(coordTemp)
+             429:   14(ivec4) ImageRead 427 428
+                              Store 426(storeTemp) 429
+             430:   14(ivec4) Load 426(storeTemp)
+             431:    7(ivec4) CompositeConstruct 103 103 103 103
+             432:   14(ivec4) IAdd 430 431
+                              Store 426(storeTemp) 432
+             433:          91 Load 93(g_tTex1du4)
+             434:      6(int) Load 423(coordTemp)
+             435:   14(ivec4) Load 426(storeTemp)
+                              ImageWrite 433 434 435
+             437:     73(ptr) AccessChain 61 51
+             438:      6(int) Load 437
+                              Store 436(coordTemp) 438
+             440:          69 Load 71(g_tTex1df4)
+             441:      6(int) Load 436(coordTemp)
+             442:   21(fvec4) ImageRead 440 441
+                              Store 439(storeTemp) 442
+             443:   21(fvec4) Load 439(storeTemp)
+             444:   21(fvec4) CompositeConstruct 404 404 404 404
+             445:   21(fvec4) FSub 443 444
+                              Store 439(storeTemp) 445
+             446:          69 Load 71(g_tTex1df4)
+             447:      6(int) Load 436(coordTemp)
+             448:   21(fvec4) Load 439(storeTemp)
+                              ImageWrite 446 447 448
+             450:     73(ptr) AccessChain 61 51
+             451:      6(int) Load 450
+                              Store 449(coordTemp) 451
+             453:          83 Load 85(g_tTex1di4)
+             454:      6(int) Load 449(coordTemp)
+             455:    7(ivec4) ImageRead 453 454
+                              Store 452(storeTemp) 455
+             456:    7(ivec4) Load 452(storeTemp)
+             457:    7(ivec4) CompositeConstruct 103 103 103 103
+             458:    7(ivec4) ISub 456 457
+                              Store 452(storeTemp) 458
+             459:          83 Load 85(g_tTex1di4)
+             460:      6(int) Load 449(coordTemp)
+             461:    7(ivec4) Load 452(storeTemp)
+                              ImageWrite 459 460 461
+             463:     73(ptr) AccessChain 61 51
+             464:      6(int) Load 463
+                              Store 462(coordTemp) 464
+             466:          91 Load 93(g_tTex1du4)
+             467:      6(int) Load 462(coordTemp)
+             468:   14(ivec4) ImageRead 466 467
+                              Store 465(storeTemp) 468
+             469:   14(ivec4) Load 465(storeTemp)
+             470:    7(ivec4) CompositeConstruct 103 103 103 103
+             471:   14(ivec4) ISub 469 470
+                              Store 465(storeTemp) 471
+             472:          91 Load 93(g_tTex1du4)
+             473:      6(int) Load 462(coordTemp)
+             474:   14(ivec4) Load 465(storeTemp)
+                              ImageWrite 472 473 474
+             476:     73(ptr) AccessChain 61 51
+             477:      6(int) Load 476
+                              Store 475(coordTemp) 477
+             479:          69 Load 71(g_tTex1df4)
+             480:      6(int) Load 475(coordTemp)
+             481:   21(fvec4) ImageRead 479 480
+                              Store 478(storeTempPre) 481
+             483:   21(fvec4) Load 478(storeTempPre)
+                              Store 482(storeTempPost) 483
+             484:   21(fvec4) Load 482(storeTempPost)
+             485:   21(fvec4) CompositeConstruct 404 404 404 404
+             486:   21(fvec4) FAdd 484 485
+                              Store 482(storeTempPost) 486
+             487:          69 Load 71(g_tTex1df4)
+             488:      6(int) Load 475(coordTemp)
+             489:   21(fvec4) Load 482(storeTempPost)
+                              ImageWrite 487 488 489
+             491:     73(ptr) AccessChain 61 51
+             492:      6(int) Load 491
+                              Store 490(coordTemp) 492
+             494:          91 Load 93(g_tTex1du4)
+             495:      6(int) Load 490(coordTemp)
+             496:   14(ivec4) ImageRead 494 495
+                              Store 493(storeTempPre) 496
+             498:   14(ivec4) Load 493(storeTempPre)
+                              Store 497(storeTempPost) 498
+             499:   14(ivec4) Load 497(storeTempPost)
+             500:    7(ivec4) CompositeConstruct 103 103 103 103
+             501:   14(ivec4) ISub 499 500
+                              Store 497(storeTempPost) 501
+             502:          91 Load 93(g_tTex1du4)
+             503:      6(int) Load 490(coordTemp)
+             504:   14(ivec4) Load 497(storeTempPost)
+                              ImageWrite 502 503 504
+             506:     73(ptr) AccessChain 61 51
+             507:      6(int) Load 506
+                              Store 505(coordTemp) 507
+             509:          83 Load 85(g_tTex1di4)
+             510:      6(int) Load 505(coordTemp)
+             511:    7(ivec4) ImageRead 509 510
+                              Store 508(storeTempPre) 511
+             513:    7(ivec4) Load 508(storeTempPre)
+                              Store 512(storeTempPost) 513
+             514:    7(ivec4) Load 512(storeTempPost)
+             515:    7(ivec4) CompositeConstruct 103 103 103 103
+             516:    7(ivec4) IAdd 514 515
+                              Store 512(storeTempPost) 516
+             517:          83 Load 85(g_tTex1di4)
+             518:      6(int) Load 505(coordTemp)
+             519:    7(ivec4) Load 512(storeTempPost)
+                              ImageWrite 517 518 519
+             521:     73(ptr) AccessChain 61 51
+             522:      6(int) Load 521
+                              Store 520(coordTemp) 522
+             524:          69 Load 71(g_tTex1df4)
+             525:      6(int) Load 520(coordTemp)
+             526:   21(fvec4) ImageRead 524 525
+                              Store 523(storeTempPre) 526
+             528:   21(fvec4) Load 523(storeTempPre)
+                              Store 527(storeTempPost) 528
+             529:   21(fvec4) Load 527(storeTempPost)
+             530:   21(fvec4) CompositeConstruct 404 404 404 404
+             531:   21(fvec4) FSub 529 530
+                              Store 527(storeTempPost) 531
+             532:          69 Load 71(g_tTex1df4)
+             533:      6(int) Load 520(coordTemp)
+             534:   21(fvec4) Load 527(storeTempPost)
+                              ImageWrite 532 533 534
+             536:     73(ptr) AccessChain 61 51
+             537:      6(int) Load 536
+                              Store 535(coordTemp) 537
+             539:          83 Load 85(g_tTex1di4)
+             540:      6(int) Load 535(coordTemp)
+             541:    7(ivec4) ImageRead 539 540
+                              Store 538(storeTempPre) 541
+             543:    7(ivec4) Load 538(storeTempPre)
+                              Store 542(storeTempPost) 543
+             544:    7(ivec4) Load 542(storeTempPost)
+             545:    7(ivec4) CompositeConstruct 103 103 103 103
+             546:    7(ivec4) IAdd 544 545
+                              Store 542(storeTempPost) 546
+             547:          83 Load 85(g_tTex1di4)
+             548:      6(int) Load 535(coordTemp)
+             549:    7(ivec4) Load 542(storeTempPost)
+                              ImageWrite 547 548 549
+             551:     73(ptr) AccessChain 61 51
+             552:      6(int) Load 551
+                              Store 550(coordTemp) 552
+             554:          91 Load 93(g_tTex1du4)
+             555:      6(int) Load 550(coordTemp)
+             556:   14(ivec4) ImageRead 554 555
+                              Store 553(storeTempPre) 556
+             558:   14(ivec4) Load 553(storeTempPre)
+                              Store 557(storeTempPost) 558
+             559:   14(ivec4) Load 557(storeTempPost)
+             560:    7(ivec4) CompositeConstruct 103 103 103 103
+             561:   14(ivec4) ISub 559 560
+                              Store 557(storeTempPost) 561
+             562:          91 Load 93(g_tTex1du4)
+             563:      6(int) Load 550(coordTemp)
+             564:   14(ivec4) Load 557(storeTempPost)
+                              ImageWrite 562 563 564
+             566:          99 Load 101(g_tTex2df4)
+             568:   21(fvec4) ImageRead 566 567
+                              Store 565(storeTemp) 568
+             569:          69 Load 71(g_tTex1df4)
+             570:   21(fvec4) Load 565(storeTemp)
+                              ImageWrite 569 103 570
+             575:     22(ptr) AccessChain 573(psout) 51
+                              Store 575 574
+             578:     22(ptr) AccessChain 573(psout) 51
+             579:   21(fvec4) Load 578
+                              Store 577(Color) 579
+                              Return
+                              FunctionEnd
+    11(Fn1(vi4;):    7(ivec4) Function None 9
+           10(x):      8(ptr) FunctionParameter
+              12:             Label
+              42:    7(ivec4) Load 10(x)
+                              ReturnValue 42
+                              FunctionEnd
+    18(Fn1(vu4;):   14(ivec4) Function None 16
+           17(x):     15(ptr) FunctionParameter
+              19:             Label
+              45:   14(ivec4) Load 17(x)
+                              ReturnValue 45
+                              FunctionEnd
+    25(Fn1(vf4;):   21(fvec4) Function None 23
+           24(x):     22(ptr) FunctionParameter
+              26:             Label
+              48:   21(fvec4) Load 24(x)
+                              ReturnValue 48
+                              FunctionEnd
+    29(Fn2(vi4;):           2 Function None 27
+           28(x):      8(ptr) FunctionParameter
+              30:             Label
+                              Store 28(x) 52
+                              Return
+                              FunctionEnd
+    33(Fn2(vu4;):           2 Function None 31
+           32(x):     15(ptr) FunctionParameter
+              34:             Label
+                              Store 32(x) 54
+                              Return
+                              FunctionEnd
+    37(Fn2(vf4;):           2 Function None 35
+           36(x):     22(ptr) FunctionParameter
+              38:             Label
+                              Store 36(x) 56
+                              Return
+                              FunctionEnd
+  40(SomeValue():   21(fvec4) Function None 39
+              41:             Label
+              64:     63(ptr) AccessChain 61 62
+              65:    7(ivec4) Load 64
+              66:   21(fvec4) ConvertSToF 65
+                              ReturnValue 66
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
new file mode 100644
index 0000000..904c2da
--- /dev/null
+++ b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out
@@ -0,0 +1,2560 @@
+hlsl.rw.scalar.bracket.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:42  Function Definition: Fn1(i1; (temp int)
+0:42    Function Parameters: 
+0:42      'x' (in int)
+0:?     Sequence
+0:42      Branch: Return with expression
+0:42        'x' (in int)
+0:43  Function Definition: Fn1(u1; (temp uint)
+0:43    Function Parameters: 
+0:43      'x' (in uint)
+0:?     Sequence
+0:43      Branch: Return with expression
+0:43        'x' (in uint)
+0:44  Function Definition: Fn1(f1; (temp float)
+0:44    Function Parameters: 
+0:44      'x' (in float)
+0:?     Sequence
+0:44      Branch: Return with expression
+0:44        'x' (in float)
+0:46  Function Definition: Fn2(i1; (temp void)
+0:46    Function Parameters: 
+0:46      'x' (out int)
+0:?     Sequence
+0:46      move second child to first child (temp int)
+0:46        'x' (out int)
+0:46        Constant:
+0:46          0 (const int)
+0:47  Function Definition: Fn2(u1; (temp void)
+0:47    Function Parameters: 
+0:47      'x' (out uint)
+0:?     Sequence
+0:47      move second child to first child (temp uint)
+0:47        'x' (out uint)
+0:47        Constant:
+0:47          0 (const uint)
+0:48  Function Definition: Fn2(f1; (temp void)
+0:48    Function Parameters: 
+0:48      'x' (out float)
+0:?     Sequence
+0:48      move second child to first child (temp float)
+0:48        'x' (out float)
+0:48        Constant:
+0:48          0.000000
+0:50  Function Definition: SomeValue( (temp float)
+0:50    Function Parameters: 
+0:?     Sequence
+0:50      Branch: Return with expression
+0:50        Convert int to float (temp float)
+0:50          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:50            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:50            Constant:
+0:50              0 (const uint)
+0:53  Function Definition: main( (temp structure{temp 4-component vector of float Color})
+0:53    Function Parameters: 
+0:?     Sequence
+0:57      imageLoad (temp float)
+0:57        'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:57        c1: direct index for structure (layout(offset=0 ) uniform int)
+0:57          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:57          Constant:
+0:57            0 (const uint)
+0:59      Sequence
+0:59        move second child to first child (temp float)
+0:59          'r00' (temp float)
+0:59          imageLoad (temp float)
+0:59            'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:59            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:59              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:59              Constant:
+0:59                0 (const uint)
+0:60      Sequence
+0:60        move second child to first child (temp int)
+0:60          'r01' (temp int)
+0:60          imageLoad (temp int)
+0:60            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:60            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:60              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:60              Constant:
+0:60                0 (const uint)
+0:61      Sequence
+0:61        move second child to first child (temp uint)
+0:61          'r02' (temp uint)
+0:61          imageLoad (temp uint)
+0:61            'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:61            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:61              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:61              Constant:
+0:61                0 (const uint)
+0:64      Sequence
+0:64        move second child to first child (temp float)
+0:64          'r10' (temp float)
+0:64          imageLoad (temp float)
+0:64            'g_tTex2df1' (layout(r32f ) uniform image2D)
+0:64            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:64              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:64              Constant:
+0:64                1 (const uint)
+0:65      Sequence
+0:65        move second child to first child (temp int)
+0:65          'r11' (temp int)
+0:65          imageLoad (temp int)
+0:65            'g_tTex2di1' (layout(r32i ) uniform iimage2D)
+0:65            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:65              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:65              Constant:
+0:65                1 (const uint)
+0:66      Sequence
+0:66        move second child to first child (temp uint)
+0:66          'r12' (temp uint)
+0:66          imageLoad (temp uint)
+0:66            'g_tTex2du1' (layout(r32ui ) uniform uimage2D)
+0:66            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:66              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:66              Constant:
+0:66                1 (const uint)
+0:69      Sequence
+0:69        move second child to first child (temp float)
+0:69          'r20' (temp float)
+0:69          imageLoad (temp float)
+0:69            'g_tTex3df1' (layout(r32f ) uniform image3D)
+0:69            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:69              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:69              Constant:
+0:69                2 (const uint)
+0:70      Sequence
+0:70        move second child to first child (temp int)
+0:70          'r21' (temp int)
+0:70          imageLoad (temp int)
+0:70            'g_tTex3di1' (layout(r32i ) uniform iimage3D)
+0:70            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:70              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:70              Constant:
+0:70                2 (const uint)
+0:71      Sequence
+0:71        move second child to first child (temp uint)
+0:71          'r22' (temp uint)
+0:71          imageLoad (temp uint)
+0:71            'g_tTex3du1' (layout(r32ui ) uniform uimage3D)
+0:71            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:71              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:71              Constant:
+0:71                2 (const uint)
+0:73      Sequence
+0:73        move second child to first child (temp float)
+0:73          'lf1' (temp float)
+0:73          uf1: direct index for structure (layout(offset=96 ) uniform float)
+0:73            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:73            Constant:
+0:73              8 (const uint)
+0:77      Sequence
+0:77        move second child to first child (temp float)
+0:77          'storeTemp' (temp float)
+0:77          Function Call: SomeValue( (temp float)
+0:77        imageStore (temp void)
+0:77          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:77          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:77            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:77            Constant:
+0:77              0 (const uint)
+0:77          'storeTemp' (temp float)
+0:77        'storeTemp' (temp float)
+0:78      Sequence
+0:78        imageStore (temp void)
+0:78          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:78          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:78            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:78            Constant:
+0:78              0 (const uint)
+0:78          'lf1' (temp float)
+0:78        'lf1' (temp float)
+0:79      Sequence
+0:79        move second child to first child (temp int)
+0:79          'storeTemp' (temp int)
+0:79          Constant:
+0:79            2 (const int)
+0:79        imageStore (temp void)
+0:79          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:79          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:79            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:79            Constant:
+0:79              0 (const uint)
+0:79          'storeTemp' (temp int)
+0:79        'storeTemp' (temp int)
+0:80      Sequence
+0:80        move second child to first child (temp uint)
+0:80          'storeTemp' (temp uint)
+0:80          Constant:
+0:80            3 (const uint)
+0:80        imageStore (temp void)
+0:80          'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:80          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:80            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:80            Constant:
+0:80              0 (const uint)
+0:80          'storeTemp' (temp uint)
+0:80        'storeTemp' (temp uint)
+0:83      Sequence
+0:83        move second child to first child (temp float)
+0:83          'val1' (temp float)
+0:83          Sequence
+0:83            move second child to first child (temp int)
+0:83              'coordTemp' (temp int)
+0:83              c1: direct index for structure (layout(offset=0 ) uniform int)
+0:83                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:83                Constant:
+0:83                  0 (const uint)
+0:83            move second child to first child (temp float)
+0:83              'storeTemp' (temp float)
+0:83              imageLoad (temp float)
+0:83                'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:83                'coordTemp' (temp int)
+0:83            multiply second child into first child (temp float)
+0:83              'storeTemp' (temp float)
+0:83              Constant:
+0:83                2.000000
+0:83            imageStore (temp void)
+0:83              'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:83              'coordTemp' (temp int)
+0:83              'storeTemp' (temp float)
+0:83            'storeTemp' (temp float)
+0:84      Sequence
+0:84        move second child to first child (temp int)
+0:84          'coordTemp' (temp int)
+0:84          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:84            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:84            Constant:
+0:84              0 (const uint)
+0:84        move second child to first child (temp float)
+0:84          'storeTemp' (temp float)
+0:84          imageLoad (temp float)
+0:84            'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:84            'coordTemp' (temp int)
+0:84        subtract second child into first child (temp float)
+0:84          'storeTemp' (temp float)
+0:84          Constant:
+0:84            3.000000
+0:84        imageStore (temp void)
+0:84          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:84          'coordTemp' (temp int)
+0:84          'storeTemp' (temp float)
+0:84        'storeTemp' (temp float)
+0:85      Sequence
+0:85        move second child to first child (temp int)
+0:85          'coordTemp' (temp int)
+0:85          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:85            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:85            Constant:
+0:85              0 (const uint)
+0:85        move second child to first child (temp float)
+0:85          'storeTemp' (temp float)
+0:85          imageLoad (temp float)
+0:85            'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:85            'coordTemp' (temp int)
+0:85        add second child into first child (temp float)
+0:85          'storeTemp' (temp float)
+0:85          Constant:
+0:85            4.000000
+0:85        imageStore (temp void)
+0:85          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:85          'coordTemp' (temp int)
+0:85          'storeTemp' (temp float)
+0:85        'storeTemp' (temp float)
+0:87      Sequence
+0:87        move second child to first child (temp int)
+0:87          'coordTemp' (temp int)
+0:87          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:87            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:87            Constant:
+0:87              0 (const uint)
+0:87        move second child to first child (temp int)
+0:87          'storeTemp' (temp int)
+0:87          imageLoad (temp int)
+0:87            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:87            'coordTemp' (temp int)
+0:87        divide second child into first child (temp int)
+0:87          'storeTemp' (temp int)
+0:87          Constant:
+0:87            2 (const int)
+0:87        imageStore (temp void)
+0:87          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:87          'coordTemp' (temp int)
+0:87          'storeTemp' (temp int)
+0:87        'storeTemp' (temp int)
+0:88      Sequence
+0:88        move second child to first child (temp int)
+0:88          'coordTemp' (temp int)
+0:88          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:88            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:88            Constant:
+0:88              0 (const uint)
+0:88        move second child to first child (temp int)
+0:88          'storeTemp' (temp int)
+0:88          imageLoad (temp int)
+0:88            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:88            'coordTemp' (temp int)
+0:88        mod second child into first child (temp int)
+0:88          'storeTemp' (temp int)
+0:88          Constant:
+0:88            2 (const int)
+0:88        imageStore (temp void)
+0:88          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:88          'coordTemp' (temp int)
+0:88          'storeTemp' (temp int)
+0:88        'storeTemp' (temp int)
+0:89      Sequence
+0:89        move second child to first child (temp int)
+0:89          'coordTemp' (temp int)
+0:89          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:89            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:89            Constant:
+0:89              0 (const uint)
+0:89        move second child to first child (temp int)
+0:89          'storeTemp' (temp int)
+0:89          imageLoad (temp int)
+0:89            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:89            'coordTemp' (temp int)
+0:89        and second child into first child (temp int)
+0:89          'storeTemp' (temp int)
+0:89          Constant:
+0:89            65535 (const int)
+0:89        imageStore (temp void)
+0:89          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:89          'coordTemp' (temp int)
+0:89          'storeTemp' (temp int)
+0:89        'storeTemp' (temp int)
+0:90      Sequence
+0:90        move second child to first child (temp int)
+0:90          'coordTemp' (temp int)
+0:90          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:90            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:90            Constant:
+0:90              0 (const uint)
+0:90        move second child to first child (temp int)
+0:90          'storeTemp' (temp int)
+0:90          imageLoad (temp int)
+0:90            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:90            'coordTemp' (temp int)
+0:90        or second child into first child (temp int)
+0:90          'storeTemp' (temp int)
+0:90          Constant:
+0:90            61680 (const int)
+0:90        imageStore (temp void)
+0:90          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:90          'coordTemp' (temp int)
+0:90          'storeTemp' (temp int)
+0:90        'storeTemp' (temp int)
+0:91      Sequence
+0:91        move second child to first child (temp int)
+0:91          'coordTemp' (temp int)
+0:91          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:91            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:91            Constant:
+0:91              0 (const uint)
+0:91        move second child to first child (temp int)
+0:91          'storeTemp' (temp int)
+0:91          imageLoad (temp int)
+0:91            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:91            'coordTemp' (temp int)
+0:91        left shift second child into first child (temp int)
+0:91          'storeTemp' (temp int)
+0:91          Constant:
+0:91            2 (const int)
+0:91        imageStore (temp void)
+0:91          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:91          'coordTemp' (temp int)
+0:91          'storeTemp' (temp int)
+0:91        'storeTemp' (temp int)
+0:92      Sequence
+0:92        move second child to first child (temp int)
+0:92          'coordTemp' (temp int)
+0:92          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:92            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:92            Constant:
+0:92              0 (const uint)
+0:92        move second child to first child (temp int)
+0:92          'storeTemp' (temp int)
+0:92          imageLoad (temp int)
+0:92            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:92            'coordTemp' (temp int)
+0:92        right shift second child into first child (temp int)
+0:92          'storeTemp' (temp int)
+0:92          Constant:
+0:92            2 (const int)
+0:92        imageStore (temp void)
+0:92          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:92          'coordTemp' (temp int)
+0:92          'storeTemp' (temp int)
+0:92        'storeTemp' (temp int)
+0:95      Sequence
+0:95        move second child to first child (temp float)
+0:95          'storeTemp' (temp float)
+0:95          Function Call: SomeValue( (temp float)
+0:95        imageStore (temp void)
+0:95          'g_tTex2df1' (layout(r32f ) uniform image2D)
+0:95          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:95            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:95            Constant:
+0:95              1 (const uint)
+0:95          'storeTemp' (temp float)
+0:95        'storeTemp' (temp float)
+0:96      Sequence
+0:96        imageStore (temp void)
+0:96          'g_tTex2df1' (layout(r32f ) uniform image2D)
+0:96          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:96            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:96            Constant:
+0:96              1 (const uint)
+0:96          'lf1' (temp float)
+0:96        'lf1' (temp float)
+0:97      Sequence
+0:97        move second child to first child (temp int)
+0:97          'storeTemp' (temp int)
+0:97          Constant:
+0:97            5 (const int)
+0:97        imageStore (temp void)
+0:97          'g_tTex2di1' (layout(r32i ) uniform iimage2D)
+0:97          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:97            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:97            Constant:
+0:97              1 (const uint)
+0:97          'storeTemp' (temp int)
+0:97        'storeTemp' (temp int)
+0:98      Sequence
+0:98        move second child to first child (temp uint)
+0:98          'storeTemp' (temp uint)
+0:98          Constant:
+0:98            6 (const uint)
+0:98        imageStore (temp void)
+0:98          'g_tTex2du1' (layout(r32ui ) uniform uimage2D)
+0:98          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:98            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:98            Constant:
+0:98              1 (const uint)
+0:98          'storeTemp' (temp uint)
+0:98        'storeTemp' (temp uint)
+0:101      Sequence
+0:101        move second child to first child (temp float)
+0:101          'storeTemp' (temp float)
+0:101          Function Call: SomeValue( (temp float)
+0:101        imageStore (temp void)
+0:101          'g_tTex3df1' (layout(r32f ) uniform image3D)
+0:101          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:101            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:101            Constant:
+0:101              2 (const uint)
+0:101          'storeTemp' (temp float)
+0:101        'storeTemp' (temp float)
+0:102      Sequence
+0:102        imageStore (temp void)
+0:102          'g_tTex3df1' (layout(r32f ) uniform image3D)
+0:102          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:102            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:102            Constant:
+0:102              2 (const uint)
+0:102          'lf1' (temp float)
+0:102        'lf1' (temp float)
+0:103      Sequence
+0:103        move second child to first child (temp int)
+0:103          'storeTemp' (temp int)
+0:103          Constant:
+0:103            8 (const int)
+0:103        imageStore (temp void)
+0:103          'g_tTex3di1' (layout(r32i ) uniform iimage3D)
+0:103          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:103            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:103            Constant:
+0:103              2 (const uint)
+0:103          'storeTemp' (temp int)
+0:103        'storeTemp' (temp int)
+0:104      Sequence
+0:104        move second child to first child (temp uint)
+0:104          'storeTemp' (temp uint)
+0:104          Constant:
+0:104            9 (const uint)
+0:104        imageStore (temp void)
+0:104          'g_tTex3du1' (layout(r32ui ) uniform uimage3D)
+0:104          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:104            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:104            Constant:
+0:104              2 (const uint)
+0:104          'storeTemp' (temp uint)
+0:104        'storeTemp' (temp uint)
+0:107      Function Call: Fn1(f1; (temp float)
+0:107        imageLoad (temp float)
+0:107          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:107          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:107            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:107            Constant:
+0:107              0 (const uint)
+0:108      Function Call: Fn1(i1; (temp int)
+0:108        imageLoad (temp int)
+0:108          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:108          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:108            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:108            Constant:
+0:108              0 (const uint)
+0:109      Function Call: Fn1(u1; (temp uint)
+0:109        imageLoad (temp uint)
+0:109          'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:109          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:109            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:109            Constant:
+0:109              0 (const uint)
+0:111      Comma (temp void)
+0:111        Function Call: Fn2(f1; (temp void)
+0:111          'tempArg' (temp float)
+0:111        Sequence
+0:111          imageStore (temp void)
+0:111            'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:111            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:111              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:111              Constant:
+0:111                0 (const uint)
+0:111            'tempArg' (temp float)
+0:111          'tempArg' (temp float)
+0:112      Comma (temp void)
+0:112        Function Call: Fn2(i1; (temp void)
+0:112          'tempArg' (temp int)
+0:112        Sequence
+0:112          imageStore (temp void)
+0:112            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:112            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:112              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:112              Constant:
+0:112                0 (const uint)
+0:112            'tempArg' (temp int)
+0:112          'tempArg' (temp int)
+0:113      Comma (temp void)
+0:113        Function Call: Fn2(u1; (temp void)
+0:113          'tempArg' (temp uint)
+0:113        Sequence
+0:113          imageStore (temp void)
+0:113            'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:113            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:113              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:113              Constant:
+0:113                0 (const uint)
+0:113            'tempArg' (temp uint)
+0:113          'tempArg' (temp uint)
+0:117      Sequence
+0:117        move second child to first child (temp int)
+0:117          'coordTemp' (temp int)
+0:117          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:117            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:117            Constant:
+0:117              0 (const uint)
+0:117        move second child to first child (temp float)
+0:117          'storeTemp' (temp float)
+0:117          imageLoad (temp float)
+0:117            'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:117            'coordTemp' (temp int)
+0:117        Pre-Increment (temp float)
+0:117          'storeTemp' (temp float)
+0:117        imageStore (temp void)
+0:117          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:117          'coordTemp' (temp int)
+0:117          'storeTemp' (temp float)
+0:117        'storeTemp' (temp float)
+0:118      Sequence
+0:118        move second child to first child (temp int)
+0:118          'coordTemp' (temp int)
+0:118          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:118            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:118            Constant:
+0:118              0 (const uint)
+0:118        move second child to first child (temp int)
+0:118          'storeTemp' (temp int)
+0:118          imageLoad (temp int)
+0:118            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:118            'coordTemp' (temp int)
+0:118        Pre-Increment (temp int)
+0:118          'storeTemp' (temp int)
+0:118        imageStore (temp void)
+0:118          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:118          'coordTemp' (temp int)
+0:118          'storeTemp' (temp int)
+0:118        'storeTemp' (temp int)
+0:119      Sequence
+0:119        move second child to first child (temp int)
+0:119          'coordTemp' (temp int)
+0:119          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:119            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:119            Constant:
+0:119              0 (const uint)
+0:119        move second child to first child (temp uint)
+0:119          'storeTemp' (temp uint)
+0:119          imageLoad (temp uint)
+0:119            'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:119            'coordTemp' (temp int)
+0:119        Pre-Increment (temp uint)
+0:119          'storeTemp' (temp uint)
+0:119        imageStore (temp void)
+0:119          'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:119          'coordTemp' (temp int)
+0:119          'storeTemp' (temp uint)
+0:119        'storeTemp' (temp uint)
+0:121      Sequence
+0:121        move second child to first child (temp int)
+0:121          'coordTemp' (temp int)
+0:121          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:121            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:121            Constant:
+0:121              0 (const uint)
+0:121        move second child to first child (temp float)
+0:121          'storeTemp' (temp float)
+0:121          imageLoad (temp float)
+0:121            'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:121            'coordTemp' (temp int)
+0:121        Pre-Decrement (temp float)
+0:121          'storeTemp' (temp float)
+0:121        imageStore (temp void)
+0:121          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:121          'coordTemp' (temp int)
+0:121          'storeTemp' (temp float)
+0:121        'storeTemp' (temp float)
+0:122      Sequence
+0:122        move second child to first child (temp int)
+0:122          'coordTemp' (temp int)
+0:122          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:122            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:122            Constant:
+0:122              0 (const uint)
+0:122        move second child to first child (temp int)
+0:122          'storeTemp' (temp int)
+0:122          imageLoad (temp int)
+0:122            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:122            'coordTemp' (temp int)
+0:122        Pre-Decrement (temp int)
+0:122          'storeTemp' (temp int)
+0:122        imageStore (temp void)
+0:122          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:122          'coordTemp' (temp int)
+0:122          'storeTemp' (temp int)
+0:122        'storeTemp' (temp int)
+0:123      Sequence
+0:123        move second child to first child (temp int)
+0:123          'coordTemp' (temp int)
+0:123          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:123            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:123            Constant:
+0:123              0 (const uint)
+0:123        move second child to first child (temp uint)
+0:123          'storeTemp' (temp uint)
+0:123          imageLoad (temp uint)
+0:123            'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:123            'coordTemp' (temp int)
+0:123        Pre-Decrement (temp uint)
+0:123          'storeTemp' (temp uint)
+0:123        imageStore (temp void)
+0:123          'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:123          'coordTemp' (temp int)
+0:123          'storeTemp' (temp uint)
+0:123        'storeTemp' (temp uint)
+0:126      Sequence
+0:126        move second child to first child (temp int)
+0:126          'coordTemp' (temp int)
+0:126          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:126            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:126            Constant:
+0:126              0 (const uint)
+0:126        move second child to first child (temp float)
+0:126          'storeTempPre' (temp float)
+0:126          imageLoad (temp float)
+0:126            'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:126            'coordTemp' (temp int)
+0:126        move second child to first child (temp float)
+0:126          'storeTempPost' (temp float)
+0:126          'storeTempPre' (temp float)
+0:126        Post-Increment (temp float)
+0:126          'storeTempPost' (temp float)
+0:126        imageStore (temp void)
+0:126          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:126          'coordTemp' (temp int)
+0:126          'storeTempPost' (temp float)
+0:126        'storeTempPre' (temp float)
+0:127      Sequence
+0:127        move second child to first child (temp int)
+0:127          'coordTemp' (temp int)
+0:127          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:127            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:127            Constant:
+0:127              0 (const uint)
+0:127        move second child to first child (temp uint)
+0:127          'storeTempPre' (temp uint)
+0:127          imageLoad (temp uint)
+0:127            'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:127            'coordTemp' (temp int)
+0:127        move second child to first child (temp uint)
+0:127          'storeTempPost' (temp uint)
+0:127          'storeTempPre' (temp uint)
+0:127        Post-Decrement (temp uint)
+0:127          'storeTempPost' (temp uint)
+0:127        imageStore (temp void)
+0:127          'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:127          'coordTemp' (temp int)
+0:127          'storeTempPost' (temp uint)
+0:127        'storeTempPre' (temp uint)
+0:128      Sequence
+0:128        move second child to first child (temp int)
+0:128          'coordTemp' (temp int)
+0:128          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:128            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:128            Constant:
+0:128              0 (const uint)
+0:128        move second child to first child (temp int)
+0:128          'storeTempPre' (temp int)
+0:128          imageLoad (temp int)
+0:128            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:128            'coordTemp' (temp int)
+0:128        move second child to first child (temp int)
+0:128          'storeTempPost' (temp int)
+0:128          'storeTempPre' (temp int)
+0:128        Post-Increment (temp int)
+0:128          'storeTempPost' (temp int)
+0:128        imageStore (temp void)
+0:128          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:128          'coordTemp' (temp int)
+0:128          'storeTempPost' (temp int)
+0:128        'storeTempPre' (temp int)
+0:130      Sequence
+0:130        move second child to first child (temp int)
+0:130          'coordTemp' (temp int)
+0:130          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:130            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:130            Constant:
+0:130              0 (const uint)
+0:130        move second child to first child (temp float)
+0:130          'storeTempPre' (temp float)
+0:130          imageLoad (temp float)
+0:130            'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:130            'coordTemp' (temp int)
+0:130        move second child to first child (temp float)
+0:130          'storeTempPost' (temp float)
+0:130          'storeTempPre' (temp float)
+0:130        Post-Decrement (temp float)
+0:130          'storeTempPost' (temp float)
+0:130        imageStore (temp void)
+0:130          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:130          'coordTemp' (temp int)
+0:130          'storeTempPost' (temp float)
+0:130        'storeTempPre' (temp float)
+0:131      Sequence
+0:131        move second child to first child (temp int)
+0:131          'coordTemp' (temp int)
+0:131          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:131            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:131            Constant:
+0:131              0 (const uint)
+0:131        move second child to first child (temp int)
+0:131          'storeTempPre' (temp int)
+0:131          imageLoad (temp int)
+0:131            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:131            'coordTemp' (temp int)
+0:131        move second child to first child (temp int)
+0:131          'storeTempPost' (temp int)
+0:131          'storeTempPre' (temp int)
+0:131        Post-Increment (temp int)
+0:131          'storeTempPost' (temp int)
+0:131        imageStore (temp void)
+0:131          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:131          'coordTemp' (temp int)
+0:131          'storeTempPost' (temp int)
+0:131        'storeTempPre' (temp int)
+0:132      Sequence
+0:132        move second child to first child (temp int)
+0:132          'coordTemp' (temp int)
+0:132          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:132            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:132            Constant:
+0:132              0 (const uint)
+0:132        move second child to first child (temp uint)
+0:132          'storeTempPre' (temp uint)
+0:132          imageLoad (temp uint)
+0:132            'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:132            'coordTemp' (temp int)
+0:132        move second child to first child (temp uint)
+0:132          'storeTempPost' (temp uint)
+0:132          'storeTempPre' (temp uint)
+0:132        Post-Decrement (temp uint)
+0:132          'storeTempPost' (temp uint)
+0:132        imageStore (temp void)
+0:132          'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:132          'coordTemp' (temp int)
+0:132          'storeTempPost' (temp uint)
+0:132        'storeTempPre' (temp uint)
+0:135      Sequence
+0:135        move second child to first child (temp float)
+0:135          'storeTemp' (temp float)
+0:?           imageLoad (temp float)
+0:135            'g_tTex2df1' (layout(r32f ) uniform image2D)
+0:?             Constant:
+0:?               2 (const int)
+0:?               3 (const int)
+0:135        imageStore (temp void)
+0:135          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:135          Constant:
+0:135            1 (const int)
+0:135          'storeTemp' (temp float)
+0:135        'storeTemp' (temp float)
+0:137      move second child to first child (temp 4-component vector of float)
+0:137        Color: direct index for structure (temp 4-component vector of float)
+0:137          'psout' (temp structure{temp 4-component vector of float Color})
+0:137          Constant:
+0:137            0 (const int)
+0:137        Constant:
+0:137          1.000000
+0:137          1.000000
+0:137          1.000000
+0:137          1.000000
+0:139      Sequence
+0:139        Sequence
+0:139          move second child to first child (temp 4-component vector of float)
+0:?             'Color' (layout(location=0 ) out 4-component vector of float)
+0:139            Color: direct index for structure (temp 4-component vector of float)
+0:139              'psout' (temp structure{temp 4-component vector of float Color})
+0:139              Constant:
+0:139                0 (const int)
+0:139        Branch: Return
+0:?   Linker Objects
+0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:?     'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:?     'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:?     'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:?     'g_tTex2df1' (layout(r32f ) uniform image2D)
+0:?     'g_tTex2di1' (layout(r32i ) uniform iimage2D)
+0:?     'g_tTex2du1' (layout(r32ui ) uniform uimage2D)
+0:?     'g_tTex3df1' (layout(r32f ) uniform image3D)
+0:?     'g_tTex3di1' (layout(r32i ) uniform iimage3D)
+0:?     'g_tTex3du1' (layout(r32ui ) uniform uimage3D)
+0:?     'g_tTex1df1a' (layout(r32f ) uniform image1DArray)
+0:?     'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray)
+0:?     'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray)
+0:?     'g_tTex2df1a' (layout(r32f ) uniform image2DArray)
+0:?     'g_tTex2di1a' (layout(r32i ) uniform iimage2DArray)
+0:?     'g_tTex2du1a' (layout(r32ui ) uniform uimage2DArray)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:42  Function Definition: Fn1(i1; (temp int)
+0:42    Function Parameters: 
+0:42      'x' (in int)
+0:?     Sequence
+0:42      Branch: Return with expression
+0:42        'x' (in int)
+0:43  Function Definition: Fn1(u1; (temp uint)
+0:43    Function Parameters: 
+0:43      'x' (in uint)
+0:?     Sequence
+0:43      Branch: Return with expression
+0:43        'x' (in uint)
+0:44  Function Definition: Fn1(f1; (temp float)
+0:44    Function Parameters: 
+0:44      'x' (in float)
+0:?     Sequence
+0:44      Branch: Return with expression
+0:44        'x' (in float)
+0:46  Function Definition: Fn2(i1; (temp void)
+0:46    Function Parameters: 
+0:46      'x' (out int)
+0:?     Sequence
+0:46      move second child to first child (temp int)
+0:46        'x' (out int)
+0:46        Constant:
+0:46          0 (const int)
+0:47  Function Definition: Fn2(u1; (temp void)
+0:47    Function Parameters: 
+0:47      'x' (out uint)
+0:?     Sequence
+0:47      move second child to first child (temp uint)
+0:47        'x' (out uint)
+0:47        Constant:
+0:47          0 (const uint)
+0:48  Function Definition: Fn2(f1; (temp void)
+0:48    Function Parameters: 
+0:48      'x' (out float)
+0:?     Sequence
+0:48      move second child to first child (temp float)
+0:48        'x' (out float)
+0:48        Constant:
+0:48          0.000000
+0:50  Function Definition: SomeValue( (temp float)
+0:50    Function Parameters: 
+0:?     Sequence
+0:50      Branch: Return with expression
+0:50        Convert int to float (temp float)
+0:50          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:50            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:50            Constant:
+0:50              0 (const uint)
+0:53  Function Definition: main( (temp structure{temp 4-component vector of float Color})
+0:53    Function Parameters: 
+0:?     Sequence
+0:57      imageLoad (temp float)
+0:57        'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:57        c1: direct index for structure (layout(offset=0 ) uniform int)
+0:57          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:57          Constant:
+0:57            0 (const uint)
+0:59      Sequence
+0:59        move second child to first child (temp float)
+0:59          'r00' (temp float)
+0:59          imageLoad (temp float)
+0:59            'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:59            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:59              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:59              Constant:
+0:59                0 (const uint)
+0:60      Sequence
+0:60        move second child to first child (temp int)
+0:60          'r01' (temp int)
+0:60          imageLoad (temp int)
+0:60            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:60            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:60              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:60              Constant:
+0:60                0 (const uint)
+0:61      Sequence
+0:61        move second child to first child (temp uint)
+0:61          'r02' (temp uint)
+0:61          imageLoad (temp uint)
+0:61            'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:61            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:61              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:61              Constant:
+0:61                0 (const uint)
+0:64      Sequence
+0:64        move second child to first child (temp float)
+0:64          'r10' (temp float)
+0:64          imageLoad (temp float)
+0:64            'g_tTex2df1' (layout(r32f ) uniform image2D)
+0:64            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:64              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:64              Constant:
+0:64                1 (const uint)
+0:65      Sequence
+0:65        move second child to first child (temp int)
+0:65          'r11' (temp int)
+0:65          imageLoad (temp int)
+0:65            'g_tTex2di1' (layout(r32i ) uniform iimage2D)
+0:65            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:65              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:65              Constant:
+0:65                1 (const uint)
+0:66      Sequence
+0:66        move second child to first child (temp uint)
+0:66          'r12' (temp uint)
+0:66          imageLoad (temp uint)
+0:66            'g_tTex2du1' (layout(r32ui ) uniform uimage2D)
+0:66            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:66              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:66              Constant:
+0:66                1 (const uint)
+0:69      Sequence
+0:69        move second child to first child (temp float)
+0:69          'r20' (temp float)
+0:69          imageLoad (temp float)
+0:69            'g_tTex3df1' (layout(r32f ) uniform image3D)
+0:69            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:69              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:69              Constant:
+0:69                2 (const uint)
+0:70      Sequence
+0:70        move second child to first child (temp int)
+0:70          'r21' (temp int)
+0:70          imageLoad (temp int)
+0:70            'g_tTex3di1' (layout(r32i ) uniform iimage3D)
+0:70            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:70              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:70              Constant:
+0:70                2 (const uint)
+0:71      Sequence
+0:71        move second child to first child (temp uint)
+0:71          'r22' (temp uint)
+0:71          imageLoad (temp uint)
+0:71            'g_tTex3du1' (layout(r32ui ) uniform uimage3D)
+0:71            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:71              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:71              Constant:
+0:71                2 (const uint)
+0:73      Sequence
+0:73        move second child to first child (temp float)
+0:73          'lf1' (temp float)
+0:73          uf1: direct index for structure (layout(offset=96 ) uniform float)
+0:73            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:73            Constant:
+0:73              8 (const uint)
+0:77      Sequence
+0:77        move second child to first child (temp float)
+0:77          'storeTemp' (temp float)
+0:77          Function Call: SomeValue( (temp float)
+0:77        imageStore (temp void)
+0:77          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:77          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:77            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:77            Constant:
+0:77              0 (const uint)
+0:77          'storeTemp' (temp float)
+0:77        'storeTemp' (temp float)
+0:78      Sequence
+0:78        imageStore (temp void)
+0:78          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:78          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:78            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:78            Constant:
+0:78              0 (const uint)
+0:78          'lf1' (temp float)
+0:78        'lf1' (temp float)
+0:79      Sequence
+0:79        move second child to first child (temp int)
+0:79          'storeTemp' (temp int)
+0:79          Constant:
+0:79            2 (const int)
+0:79        imageStore (temp void)
+0:79          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:79          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:79            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:79            Constant:
+0:79              0 (const uint)
+0:79          'storeTemp' (temp int)
+0:79        'storeTemp' (temp int)
+0:80      Sequence
+0:80        move second child to first child (temp uint)
+0:80          'storeTemp' (temp uint)
+0:80          Constant:
+0:80            3 (const uint)
+0:80        imageStore (temp void)
+0:80          'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:80          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:80            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:80            Constant:
+0:80              0 (const uint)
+0:80          'storeTemp' (temp uint)
+0:80        'storeTemp' (temp uint)
+0:83      Sequence
+0:83        move second child to first child (temp float)
+0:83          'val1' (temp float)
+0:83          Sequence
+0:83            move second child to first child (temp int)
+0:83              'coordTemp' (temp int)
+0:83              c1: direct index for structure (layout(offset=0 ) uniform int)
+0:83                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:83                Constant:
+0:83                  0 (const uint)
+0:83            move second child to first child (temp float)
+0:83              'storeTemp' (temp float)
+0:83              imageLoad (temp float)
+0:83                'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:83                'coordTemp' (temp int)
+0:83            multiply second child into first child (temp float)
+0:83              'storeTemp' (temp float)
+0:83              Constant:
+0:83                2.000000
+0:83            imageStore (temp void)
+0:83              'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:83              'coordTemp' (temp int)
+0:83              'storeTemp' (temp float)
+0:83            'storeTemp' (temp float)
+0:84      Sequence
+0:84        move second child to first child (temp int)
+0:84          'coordTemp' (temp int)
+0:84          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:84            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:84            Constant:
+0:84              0 (const uint)
+0:84        move second child to first child (temp float)
+0:84          'storeTemp' (temp float)
+0:84          imageLoad (temp float)
+0:84            'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:84            'coordTemp' (temp int)
+0:84        subtract second child into first child (temp float)
+0:84          'storeTemp' (temp float)
+0:84          Constant:
+0:84            3.000000
+0:84        imageStore (temp void)
+0:84          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:84          'coordTemp' (temp int)
+0:84          'storeTemp' (temp float)
+0:84        'storeTemp' (temp float)
+0:85      Sequence
+0:85        move second child to first child (temp int)
+0:85          'coordTemp' (temp int)
+0:85          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:85            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:85            Constant:
+0:85              0 (const uint)
+0:85        move second child to first child (temp float)
+0:85          'storeTemp' (temp float)
+0:85          imageLoad (temp float)
+0:85            'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:85            'coordTemp' (temp int)
+0:85        add second child into first child (temp float)
+0:85          'storeTemp' (temp float)
+0:85          Constant:
+0:85            4.000000
+0:85        imageStore (temp void)
+0:85          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:85          'coordTemp' (temp int)
+0:85          'storeTemp' (temp float)
+0:85        'storeTemp' (temp float)
+0:87      Sequence
+0:87        move second child to first child (temp int)
+0:87          'coordTemp' (temp int)
+0:87          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:87            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:87            Constant:
+0:87              0 (const uint)
+0:87        move second child to first child (temp int)
+0:87          'storeTemp' (temp int)
+0:87          imageLoad (temp int)
+0:87            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:87            'coordTemp' (temp int)
+0:87        divide second child into first child (temp int)
+0:87          'storeTemp' (temp int)
+0:87          Constant:
+0:87            2 (const int)
+0:87        imageStore (temp void)
+0:87          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:87          'coordTemp' (temp int)
+0:87          'storeTemp' (temp int)
+0:87        'storeTemp' (temp int)
+0:88      Sequence
+0:88        move second child to first child (temp int)
+0:88          'coordTemp' (temp int)
+0:88          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:88            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:88            Constant:
+0:88              0 (const uint)
+0:88        move second child to first child (temp int)
+0:88          'storeTemp' (temp int)
+0:88          imageLoad (temp int)
+0:88            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:88            'coordTemp' (temp int)
+0:88        mod second child into first child (temp int)
+0:88          'storeTemp' (temp int)
+0:88          Constant:
+0:88            2 (const int)
+0:88        imageStore (temp void)
+0:88          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:88          'coordTemp' (temp int)
+0:88          'storeTemp' (temp int)
+0:88        'storeTemp' (temp int)
+0:89      Sequence
+0:89        move second child to first child (temp int)
+0:89          'coordTemp' (temp int)
+0:89          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:89            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:89            Constant:
+0:89              0 (const uint)
+0:89        move second child to first child (temp int)
+0:89          'storeTemp' (temp int)
+0:89          imageLoad (temp int)
+0:89            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:89            'coordTemp' (temp int)
+0:89        and second child into first child (temp int)
+0:89          'storeTemp' (temp int)
+0:89          Constant:
+0:89            65535 (const int)
+0:89        imageStore (temp void)
+0:89          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:89          'coordTemp' (temp int)
+0:89          'storeTemp' (temp int)
+0:89        'storeTemp' (temp int)
+0:90      Sequence
+0:90        move second child to first child (temp int)
+0:90          'coordTemp' (temp int)
+0:90          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:90            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:90            Constant:
+0:90              0 (const uint)
+0:90        move second child to first child (temp int)
+0:90          'storeTemp' (temp int)
+0:90          imageLoad (temp int)
+0:90            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:90            'coordTemp' (temp int)
+0:90        or second child into first child (temp int)
+0:90          'storeTemp' (temp int)
+0:90          Constant:
+0:90            61680 (const int)
+0:90        imageStore (temp void)
+0:90          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:90          'coordTemp' (temp int)
+0:90          'storeTemp' (temp int)
+0:90        'storeTemp' (temp int)
+0:91      Sequence
+0:91        move second child to first child (temp int)
+0:91          'coordTemp' (temp int)
+0:91          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:91            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:91            Constant:
+0:91              0 (const uint)
+0:91        move second child to first child (temp int)
+0:91          'storeTemp' (temp int)
+0:91          imageLoad (temp int)
+0:91            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:91            'coordTemp' (temp int)
+0:91        left shift second child into first child (temp int)
+0:91          'storeTemp' (temp int)
+0:91          Constant:
+0:91            2 (const int)
+0:91        imageStore (temp void)
+0:91          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:91          'coordTemp' (temp int)
+0:91          'storeTemp' (temp int)
+0:91        'storeTemp' (temp int)
+0:92      Sequence
+0:92        move second child to first child (temp int)
+0:92          'coordTemp' (temp int)
+0:92          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:92            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:92            Constant:
+0:92              0 (const uint)
+0:92        move second child to first child (temp int)
+0:92          'storeTemp' (temp int)
+0:92          imageLoad (temp int)
+0:92            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:92            'coordTemp' (temp int)
+0:92        right shift second child into first child (temp int)
+0:92          'storeTemp' (temp int)
+0:92          Constant:
+0:92            2 (const int)
+0:92        imageStore (temp void)
+0:92          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:92          'coordTemp' (temp int)
+0:92          'storeTemp' (temp int)
+0:92        'storeTemp' (temp int)
+0:95      Sequence
+0:95        move second child to first child (temp float)
+0:95          'storeTemp' (temp float)
+0:95          Function Call: SomeValue( (temp float)
+0:95        imageStore (temp void)
+0:95          'g_tTex2df1' (layout(r32f ) uniform image2D)
+0:95          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:95            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:95            Constant:
+0:95              1 (const uint)
+0:95          'storeTemp' (temp float)
+0:95        'storeTemp' (temp float)
+0:96      Sequence
+0:96        imageStore (temp void)
+0:96          'g_tTex2df1' (layout(r32f ) uniform image2D)
+0:96          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:96            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:96            Constant:
+0:96              1 (const uint)
+0:96          'lf1' (temp float)
+0:96        'lf1' (temp float)
+0:97      Sequence
+0:97        move second child to first child (temp int)
+0:97          'storeTemp' (temp int)
+0:97          Constant:
+0:97            5 (const int)
+0:97        imageStore (temp void)
+0:97          'g_tTex2di1' (layout(r32i ) uniform iimage2D)
+0:97          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:97            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:97            Constant:
+0:97              1 (const uint)
+0:97          'storeTemp' (temp int)
+0:97        'storeTemp' (temp int)
+0:98      Sequence
+0:98        move second child to first child (temp uint)
+0:98          'storeTemp' (temp uint)
+0:98          Constant:
+0:98            6 (const uint)
+0:98        imageStore (temp void)
+0:98          'g_tTex2du1' (layout(r32ui ) uniform uimage2D)
+0:98          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:98            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:98            Constant:
+0:98              1 (const uint)
+0:98          'storeTemp' (temp uint)
+0:98        'storeTemp' (temp uint)
+0:101      Sequence
+0:101        move second child to first child (temp float)
+0:101          'storeTemp' (temp float)
+0:101          Function Call: SomeValue( (temp float)
+0:101        imageStore (temp void)
+0:101          'g_tTex3df1' (layout(r32f ) uniform image3D)
+0:101          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:101            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:101            Constant:
+0:101              2 (const uint)
+0:101          'storeTemp' (temp float)
+0:101        'storeTemp' (temp float)
+0:102      Sequence
+0:102        imageStore (temp void)
+0:102          'g_tTex3df1' (layout(r32f ) uniform image3D)
+0:102          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:102            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:102            Constant:
+0:102              2 (const uint)
+0:102          'lf1' (temp float)
+0:102        'lf1' (temp float)
+0:103      Sequence
+0:103        move second child to first child (temp int)
+0:103          'storeTemp' (temp int)
+0:103          Constant:
+0:103            8 (const int)
+0:103        imageStore (temp void)
+0:103          'g_tTex3di1' (layout(r32i ) uniform iimage3D)
+0:103          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:103            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:103            Constant:
+0:103              2 (const uint)
+0:103          'storeTemp' (temp int)
+0:103        'storeTemp' (temp int)
+0:104      Sequence
+0:104        move second child to first child (temp uint)
+0:104          'storeTemp' (temp uint)
+0:104          Constant:
+0:104            9 (const uint)
+0:104        imageStore (temp void)
+0:104          'g_tTex3du1' (layout(r32ui ) uniform uimage3D)
+0:104          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:104            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:104            Constant:
+0:104              2 (const uint)
+0:104          'storeTemp' (temp uint)
+0:104        'storeTemp' (temp uint)
+0:107      Function Call: Fn1(f1; (temp float)
+0:107        imageLoad (temp float)
+0:107          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:107          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:107            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:107            Constant:
+0:107              0 (const uint)
+0:108      Function Call: Fn1(i1; (temp int)
+0:108        imageLoad (temp int)
+0:108          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:108          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:108            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:108            Constant:
+0:108              0 (const uint)
+0:109      Function Call: Fn1(u1; (temp uint)
+0:109        imageLoad (temp uint)
+0:109          'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:109          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:109            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:109            Constant:
+0:109              0 (const uint)
+0:111      Comma (temp void)
+0:111        Function Call: Fn2(f1; (temp void)
+0:111          'tempArg' (temp float)
+0:111        Sequence
+0:111          imageStore (temp void)
+0:111            'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:111            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:111              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:111              Constant:
+0:111                0 (const uint)
+0:111            'tempArg' (temp float)
+0:111          'tempArg' (temp float)
+0:112      Comma (temp void)
+0:112        Function Call: Fn2(i1; (temp void)
+0:112          'tempArg' (temp int)
+0:112        Sequence
+0:112          imageStore (temp void)
+0:112            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:112            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:112              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:112              Constant:
+0:112                0 (const uint)
+0:112            'tempArg' (temp int)
+0:112          'tempArg' (temp int)
+0:113      Comma (temp void)
+0:113        Function Call: Fn2(u1; (temp void)
+0:113          'tempArg' (temp uint)
+0:113        Sequence
+0:113          imageStore (temp void)
+0:113            'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:113            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:113              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:113              Constant:
+0:113                0 (const uint)
+0:113            'tempArg' (temp uint)
+0:113          'tempArg' (temp uint)
+0:117      Sequence
+0:117        move second child to first child (temp int)
+0:117          'coordTemp' (temp int)
+0:117          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:117            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:117            Constant:
+0:117              0 (const uint)
+0:117        move second child to first child (temp float)
+0:117          'storeTemp' (temp float)
+0:117          imageLoad (temp float)
+0:117            'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:117            'coordTemp' (temp int)
+0:117        Pre-Increment (temp float)
+0:117          'storeTemp' (temp float)
+0:117        imageStore (temp void)
+0:117          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:117          'coordTemp' (temp int)
+0:117          'storeTemp' (temp float)
+0:117        'storeTemp' (temp float)
+0:118      Sequence
+0:118        move second child to first child (temp int)
+0:118          'coordTemp' (temp int)
+0:118          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:118            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:118            Constant:
+0:118              0 (const uint)
+0:118        move second child to first child (temp int)
+0:118          'storeTemp' (temp int)
+0:118          imageLoad (temp int)
+0:118            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:118            'coordTemp' (temp int)
+0:118        Pre-Increment (temp int)
+0:118          'storeTemp' (temp int)
+0:118        imageStore (temp void)
+0:118          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:118          'coordTemp' (temp int)
+0:118          'storeTemp' (temp int)
+0:118        'storeTemp' (temp int)
+0:119      Sequence
+0:119        move second child to first child (temp int)
+0:119          'coordTemp' (temp int)
+0:119          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:119            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:119            Constant:
+0:119              0 (const uint)
+0:119        move second child to first child (temp uint)
+0:119          'storeTemp' (temp uint)
+0:119          imageLoad (temp uint)
+0:119            'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:119            'coordTemp' (temp int)
+0:119        Pre-Increment (temp uint)
+0:119          'storeTemp' (temp uint)
+0:119        imageStore (temp void)
+0:119          'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:119          'coordTemp' (temp int)
+0:119          'storeTemp' (temp uint)
+0:119        'storeTemp' (temp uint)
+0:121      Sequence
+0:121        move second child to first child (temp int)
+0:121          'coordTemp' (temp int)
+0:121          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:121            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:121            Constant:
+0:121              0 (const uint)
+0:121        move second child to first child (temp float)
+0:121          'storeTemp' (temp float)
+0:121          imageLoad (temp float)
+0:121            'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:121            'coordTemp' (temp int)
+0:121        Pre-Decrement (temp float)
+0:121          'storeTemp' (temp float)
+0:121        imageStore (temp void)
+0:121          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:121          'coordTemp' (temp int)
+0:121          'storeTemp' (temp float)
+0:121        'storeTemp' (temp float)
+0:122      Sequence
+0:122        move second child to first child (temp int)
+0:122          'coordTemp' (temp int)
+0:122          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:122            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:122            Constant:
+0:122              0 (const uint)
+0:122        move second child to first child (temp int)
+0:122          'storeTemp' (temp int)
+0:122          imageLoad (temp int)
+0:122            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:122            'coordTemp' (temp int)
+0:122        Pre-Decrement (temp int)
+0:122          'storeTemp' (temp int)
+0:122        imageStore (temp void)
+0:122          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:122          'coordTemp' (temp int)
+0:122          'storeTemp' (temp int)
+0:122        'storeTemp' (temp int)
+0:123      Sequence
+0:123        move second child to first child (temp int)
+0:123          'coordTemp' (temp int)
+0:123          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:123            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:123            Constant:
+0:123              0 (const uint)
+0:123        move second child to first child (temp uint)
+0:123          'storeTemp' (temp uint)
+0:123          imageLoad (temp uint)
+0:123            'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:123            'coordTemp' (temp int)
+0:123        Pre-Decrement (temp uint)
+0:123          'storeTemp' (temp uint)
+0:123        imageStore (temp void)
+0:123          'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:123          'coordTemp' (temp int)
+0:123          'storeTemp' (temp uint)
+0:123        'storeTemp' (temp uint)
+0:126      Sequence
+0:126        move second child to first child (temp int)
+0:126          'coordTemp' (temp int)
+0:126          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:126            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:126            Constant:
+0:126              0 (const uint)
+0:126        move second child to first child (temp float)
+0:126          'storeTempPre' (temp float)
+0:126          imageLoad (temp float)
+0:126            'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:126            'coordTemp' (temp int)
+0:126        move second child to first child (temp float)
+0:126          'storeTempPost' (temp float)
+0:126          'storeTempPre' (temp float)
+0:126        Post-Increment (temp float)
+0:126          'storeTempPost' (temp float)
+0:126        imageStore (temp void)
+0:126          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:126          'coordTemp' (temp int)
+0:126          'storeTempPost' (temp float)
+0:126        'storeTempPre' (temp float)
+0:127      Sequence
+0:127        move second child to first child (temp int)
+0:127          'coordTemp' (temp int)
+0:127          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:127            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:127            Constant:
+0:127              0 (const uint)
+0:127        move second child to first child (temp uint)
+0:127          'storeTempPre' (temp uint)
+0:127          imageLoad (temp uint)
+0:127            'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:127            'coordTemp' (temp int)
+0:127        move second child to first child (temp uint)
+0:127          'storeTempPost' (temp uint)
+0:127          'storeTempPre' (temp uint)
+0:127        Post-Decrement (temp uint)
+0:127          'storeTempPost' (temp uint)
+0:127        imageStore (temp void)
+0:127          'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:127          'coordTemp' (temp int)
+0:127          'storeTempPost' (temp uint)
+0:127        'storeTempPre' (temp uint)
+0:128      Sequence
+0:128        move second child to first child (temp int)
+0:128          'coordTemp' (temp int)
+0:128          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:128            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:128            Constant:
+0:128              0 (const uint)
+0:128        move second child to first child (temp int)
+0:128          'storeTempPre' (temp int)
+0:128          imageLoad (temp int)
+0:128            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:128            'coordTemp' (temp int)
+0:128        move second child to first child (temp int)
+0:128          'storeTempPost' (temp int)
+0:128          'storeTempPre' (temp int)
+0:128        Post-Increment (temp int)
+0:128          'storeTempPost' (temp int)
+0:128        imageStore (temp void)
+0:128          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:128          'coordTemp' (temp int)
+0:128          'storeTempPost' (temp int)
+0:128        'storeTempPre' (temp int)
+0:130      Sequence
+0:130        move second child to first child (temp int)
+0:130          'coordTemp' (temp int)
+0:130          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:130            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:130            Constant:
+0:130              0 (const uint)
+0:130        move second child to first child (temp float)
+0:130          'storeTempPre' (temp float)
+0:130          imageLoad (temp float)
+0:130            'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:130            'coordTemp' (temp int)
+0:130        move second child to first child (temp float)
+0:130          'storeTempPost' (temp float)
+0:130          'storeTempPre' (temp float)
+0:130        Post-Decrement (temp float)
+0:130          'storeTempPost' (temp float)
+0:130        imageStore (temp void)
+0:130          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:130          'coordTemp' (temp int)
+0:130          'storeTempPost' (temp float)
+0:130        'storeTempPre' (temp float)
+0:131      Sequence
+0:131        move second child to first child (temp int)
+0:131          'coordTemp' (temp int)
+0:131          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:131            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:131            Constant:
+0:131              0 (const uint)
+0:131        move second child to first child (temp int)
+0:131          'storeTempPre' (temp int)
+0:131          imageLoad (temp int)
+0:131            'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:131            'coordTemp' (temp int)
+0:131        move second child to first child (temp int)
+0:131          'storeTempPost' (temp int)
+0:131          'storeTempPre' (temp int)
+0:131        Post-Increment (temp int)
+0:131          'storeTempPost' (temp int)
+0:131        imageStore (temp void)
+0:131          'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:131          'coordTemp' (temp int)
+0:131          'storeTempPost' (temp int)
+0:131        'storeTempPre' (temp int)
+0:132      Sequence
+0:132        move second child to first child (temp int)
+0:132          'coordTemp' (temp int)
+0:132          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:132            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:132            Constant:
+0:132              0 (const uint)
+0:132        move second child to first child (temp uint)
+0:132          'storeTempPre' (temp uint)
+0:132          imageLoad (temp uint)
+0:132            'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:132            'coordTemp' (temp int)
+0:132        move second child to first child (temp uint)
+0:132          'storeTempPost' (temp uint)
+0:132          'storeTempPre' (temp uint)
+0:132        Post-Decrement (temp uint)
+0:132          'storeTempPost' (temp uint)
+0:132        imageStore (temp void)
+0:132          'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:132          'coordTemp' (temp int)
+0:132          'storeTempPost' (temp uint)
+0:132        'storeTempPre' (temp uint)
+0:135      Sequence
+0:135        move second child to first child (temp float)
+0:135          'storeTemp' (temp float)
+0:?           imageLoad (temp float)
+0:135            'g_tTex2df1' (layout(r32f ) uniform image2D)
+0:?             Constant:
+0:?               2 (const int)
+0:?               3 (const int)
+0:135        imageStore (temp void)
+0:135          'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:135          Constant:
+0:135            1 (const int)
+0:135          'storeTemp' (temp float)
+0:135        'storeTemp' (temp float)
+0:137      move second child to first child (temp 4-component vector of float)
+0:137        Color: direct index for structure (temp 4-component vector of float)
+0:137          'psout' (temp structure{temp 4-component vector of float Color})
+0:137          Constant:
+0:137            0 (const int)
+0:137        Constant:
+0:137          1.000000
+0:137          1.000000
+0:137          1.000000
+0:137          1.000000
+0:139      Sequence
+0:139        Sequence
+0:139          move second child to first child (temp 4-component vector of float)
+0:?             'Color' (layout(location=0 ) out 4-component vector of float)
+0:139            Color: direct index for structure (temp 4-component vector of float)
+0:139              'psout' (temp structure{temp 4-component vector of float Color})
+0:139              Constant:
+0:139                0 (const int)
+0:139        Branch: Return
+0:?   Linker Objects
+0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:?     'g_tTex1df1' (layout(r32f ) uniform image1D)
+0:?     'g_tTex1di1' (layout(r32i ) uniform iimage1D)
+0:?     'g_tTex1du1' (layout(r32ui ) uniform uimage1D)
+0:?     'g_tTex2df1' (layout(r32f ) uniform image2D)
+0:?     'g_tTex2di1' (layout(r32i ) uniform iimage2D)
+0:?     'g_tTex2du1' (layout(r32ui ) uniform uimage2D)
+0:?     'g_tTex3df1' (layout(r32f ) uniform image3D)
+0:?     'g_tTex3di1' (layout(r32i ) uniform iimage3D)
+0:?     'g_tTex3du1' (layout(r32ui ) uniform uimage3D)
+0:?     'g_tTex1df1a' (layout(r32f ) uniform image1DArray)
+0:?     'g_tTex1di1a' (layout(r32i ) uniform iimage1DArray)
+0:?     'g_tTex1du1a' (layout(r32ui ) uniform uimage1DArray)
+0:?     'g_tTex2df1a' (layout(r32f ) uniform image2DArray)
+0:?     'g_tTex2di1a' (layout(r32i ) uniform iimage2DArray)
+0:?     'g_tTex2du1a' (layout(r32ui ) uniform uimage2DArray)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform float uf1, layout(offset=100 ) uniform int ui1, layout(offset=104 ) uniform uint uu1})
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 566
+
+                              Capability Shader
+                              Capability Sampled1D
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 541
+                              ExecutionMode 4 OriginUpperLeft
+                              Name 4  "main"
+                              Name 10  "Fn1(i1;"
+                              Name 9  "x"
+                              Name 16  "Fn1(u1;"
+                              Name 15  "x"
+                              Name 22  "Fn1(f1;"
+                              Name 21  "x"
+                              Name 26  "Fn2(i1;"
+                              Name 25  "x"
+                              Name 30  "Fn2(u1;"
+                              Name 29  "x"
+                              Name 34  "Fn2(f1;"
+                              Name 33  "x"
+                              Name 37  "SomeValue("
+                              Name 54  "$Global"
+                              MemberName 54($Global) 0  "c1"
+                              MemberName 54($Global) 1  "c2"
+                              MemberName 54($Global) 2  "c3"
+                              MemberName 54($Global) 3  "c4"
+                              MemberName 54($Global) 4  "o1"
+                              MemberName 54($Global) 5  "o2"
+                              MemberName 54($Global) 6  "o3"
+                              MemberName 54($Global) 7  "o4"
+                              MemberName 54($Global) 8  "uf1"
+                              MemberName 54($Global) 9  "ui1"
+                              MemberName 54($Global) 10  "uu1"
+                              Name 56  ""
+                              Name 65  "g_tTex1df1"
+                              Name 70  "r00"
+                              Name 75  "r01"
+                              Name 78  "g_tTex1di1"
+                              Name 83  "r02"
+                              Name 86  "g_tTex1du1"
+                              Name 91  "r10"
+                              Name 94  "g_tTex2df1"
+                              Name 101  "r11"
+                              Name 104  "g_tTex2di1"
+                              Name 109  "r12"
+                              Name 112  "g_tTex2du1"
+                              Name 117  "r20"
+                              Name 120  "g_tTex3df1"
+                              Name 127  "r21"
+                              Name 130  "g_tTex3di1"
+                              Name 135  "r22"
+                              Name 138  "g_tTex3du1"
+                              Name 143  "lf1"
+                              Name 148  "storeTemp"
+                              Name 158  "storeTemp"
+                              Name 163  "storeTemp"
+                              Name 169  "val1"
+                              Name 170  "coordTemp"
+                              Name 173  "storeTemp"
+                              Name 184  "coordTemp"
+                              Name 187  "storeTemp"
+                              Name 197  "coordTemp"
+                              Name 200  "storeTemp"
+                              Name 210  "coordTemp"
+                              Name 213  "storeTemp"
+                              Name 222  "coordTemp"
+                              Name 225  "storeTemp"
+                              Name 234  "coordTemp"
+                              Name 237  "storeTemp"
+                              Name 247  "coordTemp"
+                              Name 250  "storeTemp"
+                              Name 260  "coordTemp"
+                              Name 263  "storeTemp"
+                              Name 272  "coordTemp"
+                              Name 275  "storeTemp"
+                              Name 284  "storeTemp"
+                              Name 294  "storeTemp"
+                              Name 300  "storeTemp"
+                              Name 306  "storeTemp"
+                              Name 316  "storeTemp"
+                              Name 321  "storeTemp"
+                              Name 331  "param"
+                              Name 337  "param"
+                              Name 343  "param"
+                              Name 345  "tempArg"
+                              Name 346  "param"
+                              Name 353  "tempArg"
+                              Name 354  "param"
+                              Name 361  "tempArg"
+                              Name 362  "param"
+                              Name 369  "coordTemp"
+                              Name 372  "storeTemp"
+                              Name 382  "coordTemp"
+                              Name 385  "storeTemp"
+                              Name 394  "coordTemp"
+                              Name 397  "storeTemp"
+                              Name 406  "coordTemp"
+                              Name 409  "storeTemp"
+                              Name 418  "coordTemp"
+                              Name 421  "storeTemp"
+                              Name 430  "coordTemp"
+                              Name 433  "storeTemp"
+                              Name 442  "coordTemp"
+                              Name 445  "storeTempPre"
+                              Name 449  "storeTempPost"
+                              Name 456  "coordTemp"
+                              Name 459  "storeTempPre"
+                              Name 463  "storeTempPost"
+                              Name 470  "coordTemp"
+                              Name 473  "storeTempPre"
+                              Name 477  "storeTempPost"
+                              Name 484  "coordTemp"
+                              Name 487  "storeTempPre"
+                              Name 491  "storeTempPost"
+                              Name 498  "coordTemp"
+                              Name 501  "storeTempPre"
+                              Name 505  "storeTempPost"
+                              Name 512  "coordTemp"
+                              Name 515  "storeTempPre"
+                              Name 519  "storeTempPost"
+                              Name 526  "storeTemp"
+                              Name 534  "PS_OUTPUT"
+                              MemberName 534(PS_OUTPUT) 0  "Color"
+                              Name 536  "psout"
+                              Name 541  "Color"
+                              Name 547  "g_sSamp"
+                              Name 550  "g_tTex1df1a"
+                              Name 553  "g_tTex1di1a"
+                              Name 556  "g_tTex1du1a"
+                              Name 559  "g_tTex2df1a"
+                              Name 562  "g_tTex2di1a"
+                              Name 565  "g_tTex2du1a"
+                              MemberDecorate 54($Global) 0 Offset 0
+                              MemberDecorate 54($Global) 1 Offset 8
+                              MemberDecorate 54($Global) 2 Offset 16
+                              MemberDecorate 54($Global) 3 Offset 32
+                              MemberDecorate 54($Global) 4 Offset 48
+                              MemberDecorate 54($Global) 5 Offset 56
+                              MemberDecorate 54($Global) 6 Offset 64
+                              MemberDecorate 54($Global) 7 Offset 80
+                              MemberDecorate 54($Global) 8 Offset 96
+                              MemberDecorate 54($Global) 9 Offset 100
+                              MemberDecorate 54($Global) 10 Offset 104
+                              Decorate 54($Global) Block
+                              Decorate 56 DescriptorSet 0
+                              Decorate 65(g_tTex1df1) DescriptorSet 0
+                              Decorate 78(g_tTex1di1) DescriptorSet 0
+                              Decorate 86(g_tTex1du1) DescriptorSet 0
+                              Decorate 94(g_tTex2df1) DescriptorSet 0
+                              Decorate 104(g_tTex2di1) DescriptorSet 0
+                              Decorate 112(g_tTex2du1) DescriptorSet 0
+                              Decorate 120(g_tTex3df1) DescriptorSet 0
+                              Decorate 130(g_tTex3di1) DescriptorSet 0
+                              Decorate 138(g_tTex3du1) DescriptorSet 0
+                              Decorate 541(Color) Location 0
+                              Decorate 547(g_sSamp) DescriptorSet 0
+                              Decorate 547(g_sSamp) Binding 0
+                              Decorate 550(g_tTex1df1a) DescriptorSet 0
+                              Decorate 553(g_tTex1di1a) DescriptorSet 0
+                              Decorate 556(g_tTex1du1a) DescriptorSet 0
+                              Decorate 559(g_tTex2df1a) DescriptorSet 0
+                              Decorate 562(g_tTex2di1a) DescriptorSet 0
+                              Decorate 565(g_tTex2du1a) DescriptorSet 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypePointer Function 6(int)
+               8:             TypeFunction 6(int) 7(ptr)
+              12:             TypeInt 32 0
+              13:             TypePointer Function 12(int)
+              14:             TypeFunction 12(int) 13(ptr)
+              18:             TypeFloat 32
+              19:             TypePointer Function 18(float)
+              20:             TypeFunction 18(float) 19(ptr)
+              24:             TypeFunction 2 7(ptr)
+              28:             TypeFunction 2 13(ptr)
+              32:             TypeFunction 2 19(ptr)
+              36:             TypeFunction 18(float)
+              48:      6(int) Constant 0
+              49:     12(int) Constant 0
+              50:   18(float) Constant 0
+              51:             TypeVector 6(int) 2
+              52:             TypeVector 6(int) 3
+              53:             TypeVector 6(int) 4
+     54($Global):             TypeStruct 6(int) 51(ivec2) 52(ivec3) 53(ivec4) 6(int) 51(ivec2) 52(ivec3) 53(ivec4) 18(float) 6(int) 12(int)
+              55:             TypePointer Uniform 54($Global)
+              56:     55(ptr) Variable Uniform
+              57:             TypePointer Uniform 6(int)
+              63:             TypeImage 18(float) 1D nonsampled format:R32f
+              64:             TypePointer UniformConstant 63
+  65(g_tTex1df1):     64(ptr) Variable UniformConstant
+              76:             TypeImage 6(int) 1D nonsampled format:R32i
+              77:             TypePointer UniformConstant 76
+  78(g_tTex1di1):     77(ptr) Variable UniformConstant
+              84:             TypeImage 12(int) 1D nonsampled format:R32ui
+              85:             TypePointer UniformConstant 84
+  86(g_tTex1du1):     85(ptr) Variable UniformConstant
+              92:             TypeImage 18(float) 2D nonsampled format:R32f
+              93:             TypePointer UniformConstant 92
+  94(g_tTex2df1):     93(ptr) Variable UniformConstant
+              96:      6(int) Constant 1
+              97:             TypePointer Uniform 51(ivec2)
+             102:             TypeImage 6(int) 2D nonsampled format:R32i
+             103:             TypePointer UniformConstant 102
+ 104(g_tTex2di1):    103(ptr) Variable UniformConstant
+             110:             TypeImage 12(int) 2D nonsampled format:R32ui
+             111:             TypePointer UniformConstant 110
+ 112(g_tTex2du1):    111(ptr) Variable UniformConstant
+             118:             TypeImage 18(float) 3D nonsampled format:R32f
+             119:             TypePointer UniformConstant 118
+ 120(g_tTex3df1):    119(ptr) Variable UniformConstant
+             122:      6(int) Constant 2
+             123:             TypePointer Uniform 52(ivec3)
+             128:             TypeImage 6(int) 3D nonsampled format:R32i
+             129:             TypePointer UniformConstant 128
+ 130(g_tTex3di1):    129(ptr) Variable UniformConstant
+             136:             TypeImage 12(int) 3D nonsampled format:R32ui
+             137:             TypePointer UniformConstant 136
+ 138(g_tTex3du1):    137(ptr) Variable UniformConstant
+             144:      6(int) Constant 8
+             145:             TypePointer Uniform 18(float)
+             164:     12(int) Constant 3
+             177:   18(float) Constant 1073741824
+             191:   18(float) Constant 1077936128
+             204:   18(float) Constant 1082130432
+             241:      6(int) Constant 65535
+             254:      6(int) Constant 61680
+             295:      6(int) Constant 5
+             301:     12(int) Constant 6
+             322:     12(int) Constant 9
+             377:   18(float) Constant 1065353216
+             528:      6(int) Constant 3
+             529:   51(ivec2) ConstantComposite 122 528
+             533:             TypeVector 18(float) 4
+  534(PS_OUTPUT):             TypeStruct 533(fvec4)
+             535:             TypePointer Function 534(PS_OUTPUT)
+             537:  533(fvec4) ConstantComposite 377 377 377 377
+             538:             TypePointer Function 533(fvec4)
+             540:             TypePointer Output 533(fvec4)
+      541(Color):    540(ptr) Variable Output
+             545:             TypeSampler
+             546:             TypePointer UniformConstant 545
+    547(g_sSamp):    546(ptr) Variable UniformConstant
+             548:             TypeImage 18(float) 1D array nonsampled format:R32f
+             549:             TypePointer UniformConstant 548
+550(g_tTex1df1a):    549(ptr) Variable UniformConstant
+             551:             TypeImage 6(int) 1D array nonsampled format:R32i
+             552:             TypePointer UniformConstant 551
+553(g_tTex1di1a):    552(ptr) Variable UniformConstant
+             554:             TypeImage 12(int) 1D array nonsampled format:R32ui
+             555:             TypePointer UniformConstant 554
+556(g_tTex1du1a):    555(ptr) Variable UniformConstant
+             557:             TypeImage 18(float) 2D array nonsampled format:R32f
+             558:             TypePointer UniformConstant 557
+559(g_tTex2df1a):    558(ptr) Variable UniformConstant
+             560:             TypeImage 6(int) 2D array nonsampled format:R32i
+             561:             TypePointer UniformConstant 560
+562(g_tTex2di1a):    561(ptr) Variable UniformConstant
+             563:             TypeImage 12(int) 2D array nonsampled format:R32ui
+             564:             TypePointer UniformConstant 563
+565(g_tTex2du1a):    564(ptr) Variable UniformConstant
+         4(main):           2 Function None 3
+               5:             Label
+         70(r00):     19(ptr) Variable Function
+         75(r01):      7(ptr) Variable Function
+         83(r02):     13(ptr) Variable Function
+         91(r10):     19(ptr) Variable Function
+        101(r11):      7(ptr) Variable Function
+        109(r12):     13(ptr) Variable Function
+        117(r20):     19(ptr) Variable Function
+        127(r21):      7(ptr) Variable Function
+        135(r22):     13(ptr) Variable Function
+        143(lf1):     19(ptr) Variable Function
+  148(storeTemp):     19(ptr) Variable Function
+  158(storeTemp):      7(ptr) Variable Function
+  163(storeTemp):     13(ptr) Variable Function
+       169(val1):     19(ptr) Variable Function
+  170(coordTemp):      7(ptr) Variable Function
+  173(storeTemp):     19(ptr) Variable Function
+  184(coordTemp):      7(ptr) Variable Function
+  187(storeTemp):     19(ptr) Variable Function
+  197(coordTemp):      7(ptr) Variable Function
+  200(storeTemp):     19(ptr) Variable Function
+  210(coordTemp):      7(ptr) Variable Function
+  213(storeTemp):      7(ptr) Variable Function
+  222(coordTemp):      7(ptr) Variable Function
+  225(storeTemp):      7(ptr) Variable Function
+  234(coordTemp):      7(ptr) Variable Function
+  237(storeTemp):      7(ptr) Variable Function
+  247(coordTemp):      7(ptr) Variable Function
+  250(storeTemp):      7(ptr) Variable Function
+  260(coordTemp):      7(ptr) Variable Function
+  263(storeTemp):      7(ptr) Variable Function
+  272(coordTemp):      7(ptr) Variable Function
+  275(storeTemp):      7(ptr) Variable Function
+  284(storeTemp):     19(ptr) Variable Function
+  294(storeTemp):      7(ptr) Variable Function
+  300(storeTemp):     13(ptr) Variable Function
+  306(storeTemp):     19(ptr) Variable Function
+  316(storeTemp):      7(ptr) Variable Function
+  321(storeTemp):     13(ptr) Variable Function
+      331(param):     19(ptr) Variable Function
+      337(param):      7(ptr) Variable Function
+      343(param):     13(ptr) Variable Function
+    345(tempArg):     19(ptr) Variable Function
+      346(param):     19(ptr) Variable Function
+    353(tempArg):      7(ptr) Variable Function
+      354(param):      7(ptr) Variable Function
+    361(tempArg):     13(ptr) Variable Function
+      362(param):     13(ptr) Variable Function
+  369(coordTemp):      7(ptr) Variable Function
+  372(storeTemp):     19(ptr) Variable Function
+  382(coordTemp):      7(ptr) Variable Function
+  385(storeTemp):      7(ptr) Variable Function
+  394(coordTemp):      7(ptr) Variable Function
+  397(storeTemp):     13(ptr) Variable Function
+  406(coordTemp):      7(ptr) Variable Function
+  409(storeTemp):     19(ptr) Variable Function
+  418(coordTemp):      7(ptr) Variable Function
+  421(storeTemp):      7(ptr) Variable Function
+  430(coordTemp):      7(ptr) Variable Function
+  433(storeTemp):     13(ptr) Variable Function
+  442(coordTemp):      7(ptr) Variable Function
+445(storeTempPre):     19(ptr) Variable Function
+449(storeTempPost):     19(ptr) Variable Function
+  456(coordTemp):      7(ptr) Variable Function
+459(storeTempPre):     13(ptr) Variable Function
+463(storeTempPost):     13(ptr) Variable Function
+  470(coordTemp):      7(ptr) Variable Function
+473(storeTempPre):      7(ptr) Variable Function
+477(storeTempPost):      7(ptr) Variable Function
+  484(coordTemp):      7(ptr) Variable Function
+487(storeTempPre):     19(ptr) Variable Function
+491(storeTempPost):     19(ptr) Variable Function
+  498(coordTemp):      7(ptr) Variable Function
+501(storeTempPre):      7(ptr) Variable Function
+505(storeTempPost):      7(ptr) Variable Function
+  512(coordTemp):      7(ptr) Variable Function
+515(storeTempPre):     13(ptr) Variable Function
+519(storeTempPost):     13(ptr) Variable Function
+  526(storeTemp):     19(ptr) Variable Function
+      536(psout):    535(ptr) Variable Function
+              66:          63 Load 65(g_tTex1df1)
+              67:     57(ptr) AccessChain 56 48
+              68:      6(int) Load 67
+              69:   18(float) ImageRead 66 68
+              71:          63 Load 65(g_tTex1df1)
+              72:     57(ptr) AccessChain 56 48
+              73:      6(int) Load 72
+              74:   18(float) ImageRead 71 73
+                              Store 70(r00) 74
+              79:          76 Load 78(g_tTex1di1)
+              80:     57(ptr) AccessChain 56 48
+              81:      6(int) Load 80
+              82:      6(int) ImageRead 79 81
+                              Store 75(r01) 82
+              87:          84 Load 86(g_tTex1du1)
+              88:     57(ptr) AccessChain 56 48
+              89:      6(int) Load 88
+              90:     12(int) ImageRead 87 89
+                              Store 83(r02) 90
+              95:          92 Load 94(g_tTex2df1)
+              98:     97(ptr) AccessChain 56 96
+              99:   51(ivec2) Load 98
+             100:   18(float) ImageRead 95 99
+                              Store 91(r10) 100
+             105:         102 Load 104(g_tTex2di1)
+             106:     97(ptr) AccessChain 56 96
+             107:   51(ivec2) Load 106
+             108:      6(int) ImageRead 105 107
+                              Store 101(r11) 108
+             113:         110 Load 112(g_tTex2du1)
+             114:     97(ptr) AccessChain 56 96
+             115:   51(ivec2) Load 114
+             116:     12(int) ImageRead 113 115
+                              Store 109(r12) 116
+             121:         118 Load 120(g_tTex3df1)
+             124:    123(ptr) AccessChain 56 122
+             125:   52(ivec3) Load 124
+             126:   18(float) ImageRead 121 125
+                              Store 117(r20) 126
+             131:         128 Load 130(g_tTex3di1)
+             132:    123(ptr) AccessChain 56 122
+             133:   52(ivec3) Load 132
+             134:      6(int) ImageRead 131 133
+                              Store 127(r21) 134
+             139:         136 Load 138(g_tTex3du1)
+             140:    123(ptr) AccessChain 56 122
+             141:   52(ivec3) Load 140
+             142:     12(int) ImageRead 139 141
+                              Store 135(r22) 142
+             146:    145(ptr) AccessChain 56 144
+             147:   18(float) Load 146
+                              Store 143(lf1) 147
+             149:   18(float) FunctionCall 37(SomeValue()
+                              Store 148(storeTemp) 149
+             150:          63 Load 65(g_tTex1df1)
+             151:     57(ptr) AccessChain 56 48
+             152:      6(int) Load 151
+             153:   18(float) Load 148(storeTemp)
+                              ImageWrite 150 152 153
+             154:          63 Load 65(g_tTex1df1)
+             155:     57(ptr) AccessChain 56 48
+             156:      6(int) Load 155
+             157:   18(float) Load 143(lf1)
+                              ImageWrite 154 156 157
+                              Store 158(storeTemp) 122
+             159:          76 Load 78(g_tTex1di1)
+             160:     57(ptr) AccessChain 56 48
+             161:      6(int) Load 160
+             162:      6(int) Load 158(storeTemp)
+                              ImageWrite 159 161 162
+                              Store 163(storeTemp) 164
+             165:          84 Load 86(g_tTex1du1)
+             166:     57(ptr) AccessChain 56 48
+             167:      6(int) Load 166
+             168:     12(int) Load 163(storeTemp)
+                              ImageWrite 165 167 168
+             171:     57(ptr) AccessChain 56 48
+             172:      6(int) Load 171
+                              Store 170(coordTemp) 172
+             174:          63 Load 65(g_tTex1df1)
+             175:      6(int) Load 170(coordTemp)
+             176:   18(float) ImageRead 174 175
+                              Store 173(storeTemp) 176
+             178:   18(float) Load 173(storeTemp)
+             179:   18(float) FMul 178 177
+                              Store 173(storeTemp) 179
+             180:          63 Load 65(g_tTex1df1)
+             181:      6(int) Load 170(coordTemp)
+             182:   18(float) Load 173(storeTemp)
+                              ImageWrite 180 181 182
+             183:   18(float) Load 173(storeTemp)
+                              Store 169(val1) 183
+             185:     57(ptr) AccessChain 56 48
+             186:      6(int) Load 185
+                              Store 184(coordTemp) 186
+             188:          63 Load 65(g_tTex1df1)
+             189:      6(int) Load 184(coordTemp)
+             190:   18(float) ImageRead 188 189
+                              Store 187(storeTemp) 190
+             192:   18(float) Load 187(storeTemp)
+             193:   18(float) FSub 192 191
+                              Store 187(storeTemp) 193
+             194:          63 Load 65(g_tTex1df1)
+             195:      6(int) Load 184(coordTemp)
+             196:   18(float) Load 187(storeTemp)
+                              ImageWrite 194 195 196
+             198:     57(ptr) AccessChain 56 48
+             199:      6(int) Load 198
+                              Store 197(coordTemp) 199
+             201:          63 Load 65(g_tTex1df1)
+             202:      6(int) Load 197(coordTemp)
+             203:   18(float) ImageRead 201 202
+                              Store 200(storeTemp) 203
+             205:   18(float) Load 200(storeTemp)
+             206:   18(float) FAdd 205 204
+                              Store 200(storeTemp) 206
+             207:          63 Load 65(g_tTex1df1)
+             208:      6(int) Load 197(coordTemp)
+             209:   18(float) Load 200(storeTemp)
+                              ImageWrite 207 208 209
+             211:     57(ptr) AccessChain 56 48
+             212:      6(int) Load 211
+                              Store 210(coordTemp) 212
+             214:          76 Load 78(g_tTex1di1)
+             215:      6(int) Load 210(coordTemp)
+             216:      6(int) ImageRead 214 215
+                              Store 213(storeTemp) 216
+             217:      6(int) Load 213(storeTemp)
+             218:      6(int) SDiv 217 122
+                              Store 213(storeTemp) 218
+             219:          76 Load 78(g_tTex1di1)
+             220:      6(int) Load 210(coordTemp)
+             221:      6(int) Load 213(storeTemp)
+                              ImageWrite 219 220 221
+             223:     57(ptr) AccessChain 56 48
+             224:      6(int) Load 223
+                              Store 222(coordTemp) 224
+             226:          76 Load 78(g_tTex1di1)
+             227:      6(int) Load 222(coordTemp)
+             228:      6(int) ImageRead 226 227
+                              Store 225(storeTemp) 228
+             229:      6(int) Load 225(storeTemp)
+             230:      6(int) SMod 229 122
+                              Store 225(storeTemp) 230
+             231:          76 Load 78(g_tTex1di1)
+             232:      6(int) Load 222(coordTemp)
+             233:      6(int) Load 225(storeTemp)
+                              ImageWrite 231 232 233
+             235:     57(ptr) AccessChain 56 48
+             236:      6(int) Load 235
+                              Store 234(coordTemp) 236
+             238:          76 Load 78(g_tTex1di1)
+             239:      6(int) Load 234(coordTemp)
+             240:      6(int) ImageRead 238 239
+                              Store 237(storeTemp) 240
+             242:      6(int) Load 237(storeTemp)
+             243:      6(int) BitwiseAnd 242 241
+                              Store 237(storeTemp) 243
+             244:          76 Load 78(g_tTex1di1)
+             245:      6(int) Load 234(coordTemp)
+             246:      6(int) Load 237(storeTemp)
+                              ImageWrite 244 245 246
+             248:     57(ptr) AccessChain 56 48
+             249:      6(int) Load 248
+                              Store 247(coordTemp) 249
+             251:          76 Load 78(g_tTex1di1)
+             252:      6(int) Load 247(coordTemp)
+             253:      6(int) ImageRead 251 252
+                              Store 250(storeTemp) 253
+             255:      6(int) Load 250(storeTemp)
+             256:      6(int) BitwiseOr 255 254
+                              Store 250(storeTemp) 256
+             257:          76 Load 78(g_tTex1di1)
+             258:      6(int) Load 247(coordTemp)
+             259:      6(int) Load 250(storeTemp)
+                              ImageWrite 257 258 259
+             261:     57(ptr) AccessChain 56 48
+             262:      6(int) Load 261
+                              Store 260(coordTemp) 262
+             264:          76 Load 78(g_tTex1di1)
+             265:      6(int) Load 260(coordTemp)
+             266:      6(int) ImageRead 264 265
+                              Store 263(storeTemp) 266
+             267:      6(int) Load 263(storeTemp)
+             268:      6(int) ShiftLeftLogical 267 122
+                              Store 263(storeTemp) 268
+             269:          76 Load 78(g_tTex1di1)
+             270:      6(int) Load 260(coordTemp)
+             271:      6(int) Load 263(storeTemp)
+                              ImageWrite 269 270 271
+             273:     57(ptr) AccessChain 56 48
+             274:      6(int) Load 273
+                              Store 272(coordTemp) 274
+             276:          76 Load 78(g_tTex1di1)
+             277:      6(int) Load 272(coordTemp)
+             278:      6(int) ImageRead 276 277
+                              Store 275(storeTemp) 278
+             279:      6(int) Load 275(storeTemp)
+             280:      6(int) ShiftRightArithmetic 279 122
+                              Store 275(storeTemp) 280
+             281:          76 Load 78(g_tTex1di1)
+             282:      6(int) Load 272(coordTemp)
+             283:      6(int) Load 275(storeTemp)
+                              ImageWrite 281 282 283
+             285:   18(float) FunctionCall 37(SomeValue()
+                              Store 284(storeTemp) 285
+             286:          92 Load 94(g_tTex2df1)
+             287:     97(ptr) AccessChain 56 96
+             288:   51(ivec2) Load 287
+             289:   18(float) Load 284(storeTemp)
+                              ImageWrite 286 288 289
+             290:          92 Load 94(g_tTex2df1)
+             291:     97(ptr) AccessChain 56 96
+             292:   51(ivec2) Load 291
+             293:   18(float) Load 143(lf1)
+                              ImageWrite 290 292 293
+                              Store 294(storeTemp) 295
+             296:         102 Load 104(g_tTex2di1)
+             297:     97(ptr) AccessChain 56 96
+             298:   51(ivec2) Load 297
+             299:      6(int) Load 294(storeTemp)
+                              ImageWrite 296 298 299
+                              Store 300(storeTemp) 301
+             302:         110 Load 112(g_tTex2du1)
+             303:     97(ptr) AccessChain 56 96
+             304:   51(ivec2) Load 303
+             305:     12(int) Load 300(storeTemp)
+                              ImageWrite 302 304 305
+             307:   18(float) FunctionCall 37(SomeValue()
+                              Store 306(storeTemp) 307
+             308:         118 Load 120(g_tTex3df1)
+             309:    123(ptr) AccessChain 56 122
+             310:   52(ivec3) Load 309
+             311:   18(float) Load 306(storeTemp)
+                              ImageWrite 308 310 311
+             312:         118 Load 120(g_tTex3df1)
+             313:    123(ptr) AccessChain 56 122
+             314:   52(ivec3) Load 313
+             315:   18(float) Load 143(lf1)
+                              ImageWrite 312 314 315
+                              Store 316(storeTemp) 144
+             317:         128 Load 130(g_tTex3di1)
+             318:    123(ptr) AccessChain 56 122
+             319:   52(ivec3) Load 318
+             320:      6(int) Load 316(storeTemp)
+                              ImageWrite 317 319 320
+                              Store 321(storeTemp) 322
+             323:         136 Load 138(g_tTex3du1)
+             324:    123(ptr) AccessChain 56 122
+             325:   52(ivec3) Load 324
+             326:     12(int) Load 321(storeTemp)
+                              ImageWrite 323 325 326
+             327:          63 Load 65(g_tTex1df1)
+             328:     57(ptr) AccessChain 56 48
+             329:      6(int) Load 328
+             330:   18(float) ImageRead 327 329
+                              Store 331(param) 330
+             332:   18(float) FunctionCall 22(Fn1(f1;) 331(param)
+             333:          76 Load 78(g_tTex1di1)
+             334:     57(ptr) AccessChain 56 48
+             335:      6(int) Load 334
+             336:      6(int) ImageRead 333 335
+                              Store 337(param) 336
+             338:      6(int) FunctionCall 10(Fn1(i1;) 337(param)
+             339:          84 Load 86(g_tTex1du1)
+             340:     57(ptr) AccessChain 56 48
+             341:      6(int) Load 340
+             342:     12(int) ImageRead 339 341
+                              Store 343(param) 342
+             344:     12(int) FunctionCall 16(Fn1(u1;) 343(param)
+             347:           2 FunctionCall 34(Fn2(f1;) 346(param)
+             348:   18(float) Load 346(param)
+                              Store 345(tempArg) 348
+             349:          63 Load 65(g_tTex1df1)
+             350:     57(ptr) AccessChain 56 48
+             351:      6(int) Load 350
+             352:   18(float) Load 345(tempArg)
+                              ImageWrite 349 351 352
+             355:           2 FunctionCall 26(Fn2(i1;) 354(param)
+             356:      6(int) Load 354(param)
+                              Store 353(tempArg) 356
+             357:          76 Load 78(g_tTex1di1)
+             358:     57(ptr) AccessChain 56 48
+             359:      6(int) Load 358
+             360:      6(int) Load 353(tempArg)
+                              ImageWrite 357 359 360
+             363:           2 FunctionCall 30(Fn2(u1;) 362(param)
+             364:     12(int) Load 362(param)
+                              Store 361(tempArg) 364
+             365:          84 Load 86(g_tTex1du1)
+             366:     57(ptr) AccessChain 56 48
+             367:      6(int) Load 366
+             368:     12(int) Load 361(tempArg)
+                              ImageWrite 365 367 368
+             370:     57(ptr) AccessChain 56 48
+             371:      6(int) Load 370
+                              Store 369(coordTemp) 371
+             373:          63 Load 65(g_tTex1df1)
+             374:      6(int) Load 369(coordTemp)
+             375:   18(float) ImageRead 373 374
+                              Store 372(storeTemp) 375
+             376:   18(float) Load 372(storeTemp)
+             378:   18(float) FAdd 376 377
+                              Store 372(storeTemp) 378
+             379:          63 Load 65(g_tTex1df1)
+             380:      6(int) Load 369(coordTemp)
+             381:   18(float) Load 372(storeTemp)
+                              ImageWrite 379 380 381
+             383:     57(ptr) AccessChain 56 48
+             384:      6(int) Load 383
+                              Store 382(coordTemp) 384
+             386:          76 Load 78(g_tTex1di1)
+             387:      6(int) Load 382(coordTemp)
+             388:      6(int) ImageRead 386 387
+                              Store 385(storeTemp) 388
+             389:      6(int) Load 385(storeTemp)
+             390:      6(int) IAdd 389 96
+                              Store 385(storeTemp) 390
+             391:          76 Load 78(g_tTex1di1)
+             392:      6(int) Load 382(coordTemp)
+             393:      6(int) Load 385(storeTemp)
+                              ImageWrite 391 392 393
+             395:     57(ptr) AccessChain 56 48
+             396:      6(int) Load 395
+                              Store 394(coordTemp) 396
+             398:          84 Load 86(g_tTex1du1)
+             399:      6(int) Load 394(coordTemp)
+             400:     12(int) ImageRead 398 399
+                              Store 397(storeTemp) 400
+             401:     12(int) Load 397(storeTemp)
+             402:     12(int) IAdd 401 96
+                              Store 397(storeTemp) 402
+             403:          84 Load 86(g_tTex1du1)
+             404:      6(int) Load 394(coordTemp)
+             405:     12(int) Load 397(storeTemp)
+                              ImageWrite 403 404 405
+             407:     57(ptr) AccessChain 56 48
+             408:      6(int) Load 407
+                              Store 406(coordTemp) 408
+             410:          63 Load 65(g_tTex1df1)
+             411:      6(int) Load 406(coordTemp)
+             412:   18(float) ImageRead 410 411
+                              Store 409(storeTemp) 412
+             413:   18(float) Load 409(storeTemp)
+             414:   18(float) FSub 413 377
+                              Store 409(storeTemp) 414
+             415:          63 Load 65(g_tTex1df1)
+             416:      6(int) Load 406(coordTemp)
+             417:   18(float) Load 409(storeTemp)
+                              ImageWrite 415 416 417
+             419:     57(ptr) AccessChain 56 48
+             420:      6(int) Load 419
+                              Store 418(coordTemp) 420
+             422:          76 Load 78(g_tTex1di1)
+             423:      6(int) Load 418(coordTemp)
+             424:      6(int) ImageRead 422 423
+                              Store 421(storeTemp) 424
+             425:      6(int) Load 421(storeTemp)
+             426:      6(int) ISub 425 96
+                              Store 421(storeTemp) 426
+             427:          76 Load 78(g_tTex1di1)
+             428:      6(int) Load 418(coordTemp)
+             429:      6(int) Load 421(storeTemp)
+                              ImageWrite 427 428 429
+             431:     57(ptr) AccessChain 56 48
+             432:      6(int) Load 431
+                              Store 430(coordTemp) 432
+             434:          84 Load 86(g_tTex1du1)
+             435:      6(int) Load 430(coordTemp)
+             436:     12(int) ImageRead 434 435
+                              Store 433(storeTemp) 436
+             437:     12(int) Load 433(storeTemp)
+             438:     12(int) ISub 437 96
+                              Store 433(storeTemp) 438
+             439:          84 Load 86(g_tTex1du1)
+             440:      6(int) Load 430(coordTemp)
+             441:     12(int) Load 433(storeTemp)
+                              ImageWrite 439 440 441
+             443:     57(ptr) AccessChain 56 48
+             444:      6(int) Load 443
+                              Store 442(coordTemp) 444
+             446:          63 Load 65(g_tTex1df1)
+             447:      6(int) Load 442(coordTemp)
+             448:   18(float) ImageRead 446 447
+                              Store 445(storeTempPre) 448
+             450:   18(float) Load 445(storeTempPre)
+                              Store 449(storeTempPost) 450
+             451:   18(float) Load 449(storeTempPost)
+             452:   18(float) FAdd 451 377
+                              Store 449(storeTempPost) 452
+             453:          63 Load 65(g_tTex1df1)
+             454:      6(int) Load 442(coordTemp)
+             455:   18(float) Load 449(storeTempPost)
+                              ImageWrite 453 454 455
+             457:     57(ptr) AccessChain 56 48
+             458:      6(int) Load 457
+                              Store 456(coordTemp) 458
+             460:          84 Load 86(g_tTex1du1)
+             461:      6(int) Load 456(coordTemp)
+             462:     12(int) ImageRead 460 461
+                              Store 459(storeTempPre) 462
+             464:     12(int) Load 459(storeTempPre)
+                              Store 463(storeTempPost) 464
+             465:     12(int) Load 463(storeTempPost)
+             466:     12(int) ISub 465 96
+                              Store 463(storeTempPost) 466
+             467:          84 Load 86(g_tTex1du1)
+             468:      6(int) Load 456(coordTemp)
+             469:     12(int) Load 463(storeTempPost)
+                              ImageWrite 467 468 469
+             471:     57(ptr) AccessChain 56 48
+             472:      6(int) Load 471
+                              Store 470(coordTemp) 472
+             474:          76 Load 78(g_tTex1di1)
+             475:      6(int) Load 470(coordTemp)
+             476:      6(int) ImageRead 474 475
+                              Store 473(storeTempPre) 476
+             478:      6(int) Load 473(storeTempPre)
+                              Store 477(storeTempPost) 478
+             479:      6(int) Load 477(storeTempPost)
+             480:      6(int) IAdd 479 96
+                              Store 477(storeTempPost) 480
+             481:          76 Load 78(g_tTex1di1)
+             482:      6(int) Load 470(coordTemp)
+             483:      6(int) Load 477(storeTempPost)
+                              ImageWrite 481 482 483
+             485:     57(ptr) AccessChain 56 48
+             486:      6(int) Load 485
+                              Store 484(coordTemp) 486
+             488:          63 Load 65(g_tTex1df1)
+             489:      6(int) Load 484(coordTemp)
+             490:   18(float) ImageRead 488 489
+                              Store 487(storeTempPre) 490
+             492:   18(float) Load 487(storeTempPre)
+                              Store 491(storeTempPost) 492
+             493:   18(float) Load 491(storeTempPost)
+             494:   18(float) FSub 493 377
+                              Store 491(storeTempPost) 494
+             495:          63 Load 65(g_tTex1df1)
+             496:      6(int) Load 484(coordTemp)
+             497:   18(float) Load 491(storeTempPost)
+                              ImageWrite 495 496 497
+             499:     57(ptr) AccessChain 56 48
+             500:      6(int) Load 499
+                              Store 498(coordTemp) 500
+             502:          76 Load 78(g_tTex1di1)
+             503:      6(int) Load 498(coordTemp)
+             504:      6(int) ImageRead 502 503
+                              Store 501(storeTempPre) 504
+             506:      6(int) Load 501(storeTempPre)
+                              Store 505(storeTempPost) 506
+             507:      6(int) Load 505(storeTempPost)
+             508:      6(int) IAdd 507 96
+                              Store 505(storeTempPost) 508
+             509:          76 Load 78(g_tTex1di1)
+             510:      6(int) Load 498(coordTemp)
+             511:      6(int) Load 505(storeTempPost)
+                              ImageWrite 509 510 511
+             513:     57(ptr) AccessChain 56 48
+             514:      6(int) Load 513
+                              Store 512(coordTemp) 514
+             516:          84 Load 86(g_tTex1du1)
+             517:      6(int) Load 512(coordTemp)
+             518:     12(int) ImageRead 516 517
+                              Store 515(storeTempPre) 518
+             520:     12(int) Load 515(storeTempPre)
+                              Store 519(storeTempPost) 520
+             521:     12(int) Load 519(storeTempPost)
+             522:     12(int) ISub 521 96
+                              Store 519(storeTempPost) 522
+             523:          84 Load 86(g_tTex1du1)
+             524:      6(int) Load 512(coordTemp)
+             525:     12(int) Load 519(storeTempPost)
+                              ImageWrite 523 524 525
+             527:          92 Load 94(g_tTex2df1)
+             530:   18(float) ImageRead 527 529
+                              Store 526(storeTemp) 530
+             531:          63 Load 65(g_tTex1df1)
+             532:   18(float) Load 526(storeTemp)
+                              ImageWrite 531 96 532
+             539:    538(ptr) AccessChain 536(psout) 48
+                              Store 539 537
+             542:    538(ptr) AccessChain 536(psout) 48
+             543:  533(fvec4) Load 542
+                              Store 541(Color) 543
+                              Return
+                              FunctionEnd
+     10(Fn1(i1;):      6(int) Function None 8
+            9(x):      7(ptr) FunctionParameter
+              11:             Label
+              39:      6(int) Load 9(x)
+                              ReturnValue 39
+                              FunctionEnd
+     16(Fn1(u1;):     12(int) Function None 14
+           15(x):     13(ptr) FunctionParameter
+              17:             Label
+              42:     12(int) Load 15(x)
+                              ReturnValue 42
+                              FunctionEnd
+     22(Fn1(f1;):   18(float) Function None 20
+           21(x):     19(ptr) FunctionParameter
+              23:             Label
+              45:   18(float) Load 21(x)
+                              ReturnValue 45
+                              FunctionEnd
+     26(Fn2(i1;):           2 Function None 24
+           25(x):      7(ptr) FunctionParameter
+              27:             Label
+                              Store 25(x) 48
+                              Return
+                              FunctionEnd
+     30(Fn2(u1;):           2 Function None 28
+           29(x):     13(ptr) FunctionParameter
+              31:             Label
+                              Store 29(x) 49
+                              Return
+                              FunctionEnd
+     34(Fn2(f1;):           2 Function None 32
+           33(x):     19(ptr) FunctionParameter
+              35:             Label
+                              Store 33(x) 50
+                              Return
+                              FunctionEnd
+  37(SomeValue():   18(float) Function None 36
+              38:             Label
+              58:     57(ptr) AccessChain 56 48
+              59:      6(int) Load 58
+              60:   18(float) ConvertSToF 59
+                              ReturnValue 60
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
new file mode 100644
index 0000000..b8452c3
--- /dev/null
+++ b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out
@@ -0,0 +1,2613 @@
+hlsl.rw.vec2.bracket.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:42  Function Definition: Fn1(vi2; (temp 2-component vector of int)
+0:42    Function Parameters: 
+0:42      'x' (in 2-component vector of int)
+0:?     Sequence
+0:42      Branch: Return with expression
+0:42        'x' (in 2-component vector of int)
+0:43  Function Definition: Fn1(vu2; (temp 2-component vector of uint)
+0:43    Function Parameters: 
+0:43      'x' (in 2-component vector of uint)
+0:?     Sequence
+0:43      Branch: Return with expression
+0:43        'x' (in 2-component vector of uint)
+0:44  Function Definition: Fn1(vf2; (temp 2-component vector of float)
+0:44    Function Parameters: 
+0:44      'x' (in 2-component vector of float)
+0:?     Sequence
+0:44      Branch: Return with expression
+0:44        'x' (in 2-component vector of float)
+0:46  Function Definition: Fn2(vi2; (temp void)
+0:46    Function Parameters: 
+0:46      'x' (out 2-component vector of int)
+0:?     Sequence
+0:46      move second child to first child (temp 2-component vector of int)
+0:46        'x' (out 2-component vector of int)
+0:?         Constant:
+0:?           0 (const int)
+0:?           0 (const int)
+0:47  Function Definition: Fn2(vu2; (temp void)
+0:47    Function Parameters: 
+0:47      'x' (out 2-component vector of uint)
+0:?     Sequence
+0:47      move second child to first child (temp 2-component vector of uint)
+0:47        'x' (out 2-component vector of uint)
+0:?         Constant:
+0:?           0 (const uint)
+0:?           0 (const uint)
+0:48  Function Definition: Fn2(vf2; (temp void)
+0:48    Function Parameters: 
+0:48      'x' (out 2-component vector of float)
+0:?     Sequence
+0:48      move second child to first child (temp 2-component vector of float)
+0:48        'x' (out 2-component vector of float)
+0:?         Constant:
+0:?           0.000000
+0:?           0.000000
+0:50  Function Definition: SomeValue( (temp 2-component vector of float)
+0:50    Function Parameters: 
+0:?     Sequence
+0:50      Branch: Return with expression
+0:50        Convert int to float (temp 2-component vector of float)
+0:50          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:50            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:50            Constant:
+0:50              1 (const uint)
+0:53  Function Definition: main( (temp structure{temp 4-component vector of float Color})
+0:53    Function Parameters: 
+0:?     Sequence
+0:57      imageLoad (temp 2-component vector of float)
+0:57        'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:57        c1: direct index for structure (layout(offset=0 ) uniform int)
+0:57          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:57          Constant:
+0:57            0 (const uint)
+0:59      Sequence
+0:59        move second child to first child (temp 2-component vector of float)
+0:59          'r00' (temp 2-component vector of float)
+0:59          imageLoad (temp 2-component vector of float)
+0:59            'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:59            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:59              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:59              Constant:
+0:59                0 (const uint)
+0:60      Sequence
+0:60        move second child to first child (temp 2-component vector of int)
+0:60          'r01' (temp 2-component vector of int)
+0:60          imageLoad (temp 2-component vector of int)
+0:60            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:60            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:60              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:60              Constant:
+0:60                0 (const uint)
+0:61      Sequence
+0:61        move second child to first child (temp 2-component vector of uint)
+0:61          'r02' (temp 2-component vector of uint)
+0:61          imageLoad (temp 2-component vector of uint)
+0:61            'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:61            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:61              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:61              Constant:
+0:61                0 (const uint)
+0:64      Sequence
+0:64        move second child to first child (temp 2-component vector of float)
+0:64          'r10' (temp 2-component vector of float)
+0:64          imageLoad (temp 2-component vector of float)
+0:64            'g_tTex2df2' (layout(rg32f ) uniform image2D)
+0:64            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:64              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:64              Constant:
+0:64                1 (const uint)
+0:65      Sequence
+0:65        move second child to first child (temp 2-component vector of int)
+0:65          'r11' (temp 2-component vector of int)
+0:65          imageLoad (temp 2-component vector of int)
+0:65            'g_tTex2di2' (layout(rg32i ) uniform iimage2D)
+0:65            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:65              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:65              Constant:
+0:65                1 (const uint)
+0:66      Sequence
+0:66        move second child to first child (temp 2-component vector of uint)
+0:66          'r12' (temp 2-component vector of uint)
+0:66          imageLoad (temp 2-component vector of uint)
+0:66            'g_tTex2du2' (layout(rg32ui ) uniform uimage2D)
+0:66            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:66              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:66              Constant:
+0:66                1 (const uint)
+0:69      Sequence
+0:69        move second child to first child (temp 2-component vector of float)
+0:69          'r20' (temp 2-component vector of float)
+0:69          imageLoad (temp 2-component vector of float)
+0:69            'g_tTex3df2' (layout(rg32f ) uniform image3D)
+0:69            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:69              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:69              Constant:
+0:69                2 (const uint)
+0:70      Sequence
+0:70        move second child to first child (temp 2-component vector of int)
+0:70          'r21' (temp 2-component vector of int)
+0:70          imageLoad (temp 2-component vector of int)
+0:70            'g_tTex3di2' (layout(rg32i ) uniform iimage3D)
+0:70            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:70              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:70              Constant:
+0:70                2 (const uint)
+0:71      Sequence
+0:71        move second child to first child (temp 2-component vector of uint)
+0:71          'r22' (temp 2-component vector of uint)
+0:71          imageLoad (temp 2-component vector of uint)
+0:71            'g_tTex3du2' (layout(rg32ui ) uniform uimage3D)
+0:71            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:71              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:71              Constant:
+0:71                2 (const uint)
+0:73      Sequence
+0:73        move second child to first child (temp 2-component vector of float)
+0:73          'lf2' (temp 2-component vector of float)
+0:73          uf2: direct index for structure (layout(offset=96 ) uniform 2-component vector of float)
+0:73            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:73            Constant:
+0:73              8 (const uint)
+0:77      Sequence
+0:77        move second child to first child (temp 2-component vector of float)
+0:77          'storeTemp' (temp 2-component vector of float)
+0:77          Function Call: SomeValue( (temp 2-component vector of float)
+0:77        imageStore (temp void)
+0:77          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:77          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:77            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:77            Constant:
+0:77              0 (const uint)
+0:77          'storeTemp' (temp 2-component vector of float)
+0:77        'storeTemp' (temp 2-component vector of float)
+0:78      Sequence
+0:78        imageStore (temp void)
+0:78          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:78          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:78            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:78            Constant:
+0:78              0 (const uint)
+0:78          'lf2' (temp 2-component vector of float)
+0:78        'lf2' (temp 2-component vector of float)
+0:79      Sequence
+0:79        move second child to first child (temp 2-component vector of int)
+0:79          'storeTemp' (temp 2-component vector of int)
+0:?           Constant:
+0:?             2 (const int)
+0:?             2 (const int)
+0:79        imageStore (temp void)
+0:79          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:79          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:79            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:79            Constant:
+0:79              0 (const uint)
+0:79          'storeTemp' (temp 2-component vector of int)
+0:79        'storeTemp' (temp 2-component vector of int)
+0:80      Sequence
+0:80        move second child to first child (temp 2-component vector of uint)
+0:80          'storeTemp' (temp 2-component vector of uint)
+0:?           Constant:
+0:?             3 (const uint)
+0:?             2 (const uint)
+0:80        imageStore (temp void)
+0:80          'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:80          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:80            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:80            Constant:
+0:80              0 (const uint)
+0:80          'storeTemp' (temp 2-component vector of uint)
+0:80        'storeTemp' (temp 2-component vector of uint)
+0:83      Sequence
+0:83        move second child to first child (temp 2-component vector of float)
+0:83          'val1' (temp 2-component vector of float)
+0:83          Sequence
+0:83            move second child to first child (temp int)
+0:83              'coordTemp' (temp int)
+0:83              c1: direct index for structure (layout(offset=0 ) uniform int)
+0:83                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:83                Constant:
+0:83                  0 (const uint)
+0:83            move second child to first child (temp 2-component vector of float)
+0:83              'storeTemp' (temp 2-component vector of float)
+0:83              imageLoad (temp 2-component vector of float)
+0:83                'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:83                'coordTemp' (temp int)
+0:83            vector scale second child into first child (temp 2-component vector of float)
+0:83              'storeTemp' (temp 2-component vector of float)
+0:83              Constant:
+0:83                2.000000
+0:83            imageStore (temp void)
+0:83              'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:83              'coordTemp' (temp int)
+0:83              'storeTemp' (temp 2-component vector of float)
+0:83            'storeTemp' (temp 2-component vector of float)
+0:84      Sequence
+0:84        move second child to first child (temp int)
+0:84          'coordTemp' (temp int)
+0:84          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:84            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:84            Constant:
+0:84              0 (const uint)
+0:84        move second child to first child (temp 2-component vector of float)
+0:84          'storeTemp' (temp 2-component vector of float)
+0:84          imageLoad (temp 2-component vector of float)
+0:84            'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:84            'coordTemp' (temp int)
+0:84        subtract second child into first child (temp 2-component vector of float)
+0:84          'storeTemp' (temp 2-component vector of float)
+0:84          Constant:
+0:84            3.000000
+0:84        imageStore (temp void)
+0:84          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:84          'coordTemp' (temp int)
+0:84          'storeTemp' (temp 2-component vector of float)
+0:84        'storeTemp' (temp 2-component vector of float)
+0:85      Sequence
+0:85        move second child to first child (temp int)
+0:85          'coordTemp' (temp int)
+0:85          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:85            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:85            Constant:
+0:85              0 (const uint)
+0:85        move second child to first child (temp 2-component vector of float)
+0:85          'storeTemp' (temp 2-component vector of float)
+0:85          imageLoad (temp 2-component vector of float)
+0:85            'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:85            'coordTemp' (temp int)
+0:85        add second child into first child (temp 2-component vector of float)
+0:85          'storeTemp' (temp 2-component vector of float)
+0:85          Constant:
+0:85            4.000000
+0:85        imageStore (temp void)
+0:85          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:85          'coordTemp' (temp int)
+0:85          'storeTemp' (temp 2-component vector of float)
+0:85        'storeTemp' (temp 2-component vector of float)
+0:87      Sequence
+0:87        move second child to first child (temp int)
+0:87          'coordTemp' (temp int)
+0:87          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:87            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:87            Constant:
+0:87              0 (const uint)
+0:87        move second child to first child (temp 2-component vector of int)
+0:87          'storeTemp' (temp 2-component vector of int)
+0:87          imageLoad (temp 2-component vector of int)
+0:87            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:87            'coordTemp' (temp int)
+0:87        divide second child into first child (temp 2-component vector of int)
+0:87          'storeTemp' (temp 2-component vector of int)
+0:87          Constant:
+0:87            2 (const int)
+0:87        imageStore (temp void)
+0:87          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:87          'coordTemp' (temp int)
+0:87          'storeTemp' (temp 2-component vector of int)
+0:87        'storeTemp' (temp 2-component vector of int)
+0:88      Sequence
+0:88        move second child to first child (temp int)
+0:88          'coordTemp' (temp int)
+0:88          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:88            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:88            Constant:
+0:88              0 (const uint)
+0:88        move second child to first child (temp 2-component vector of int)
+0:88          'storeTemp' (temp 2-component vector of int)
+0:88          imageLoad (temp 2-component vector of int)
+0:88            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:88            'coordTemp' (temp int)
+0:88        mod second child into first child (temp 2-component vector of int)
+0:88          'storeTemp' (temp 2-component vector of int)
+0:88          Constant:
+0:88            2 (const int)
+0:88        imageStore (temp void)
+0:88          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:88          'coordTemp' (temp int)
+0:88          'storeTemp' (temp 2-component vector of int)
+0:88        'storeTemp' (temp 2-component vector of int)
+0:89      Sequence
+0:89        move second child to first child (temp int)
+0:89          'coordTemp' (temp int)
+0:89          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:89            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:89            Constant:
+0:89              0 (const uint)
+0:89        move second child to first child (temp 2-component vector of int)
+0:89          'storeTemp' (temp 2-component vector of int)
+0:89          imageLoad (temp 2-component vector of int)
+0:89            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:89            'coordTemp' (temp int)
+0:89        and second child into first child (temp 2-component vector of int)
+0:89          'storeTemp' (temp 2-component vector of int)
+0:89          Constant:
+0:89            65535 (const int)
+0:89        imageStore (temp void)
+0:89          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:89          'coordTemp' (temp int)
+0:89          'storeTemp' (temp 2-component vector of int)
+0:89        'storeTemp' (temp 2-component vector of int)
+0:90      Sequence
+0:90        move second child to first child (temp int)
+0:90          'coordTemp' (temp int)
+0:90          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:90            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:90            Constant:
+0:90              0 (const uint)
+0:90        move second child to first child (temp 2-component vector of int)
+0:90          'storeTemp' (temp 2-component vector of int)
+0:90          imageLoad (temp 2-component vector of int)
+0:90            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:90            'coordTemp' (temp int)
+0:90        or second child into first child (temp 2-component vector of int)
+0:90          'storeTemp' (temp 2-component vector of int)
+0:90          Constant:
+0:90            61680 (const int)
+0:90        imageStore (temp void)
+0:90          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:90          'coordTemp' (temp int)
+0:90          'storeTemp' (temp 2-component vector of int)
+0:90        'storeTemp' (temp 2-component vector of int)
+0:91      Sequence
+0:91        move second child to first child (temp int)
+0:91          'coordTemp' (temp int)
+0:91          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:91            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:91            Constant:
+0:91              0 (const uint)
+0:91        move second child to first child (temp 2-component vector of int)
+0:91          'storeTemp' (temp 2-component vector of int)
+0:91          imageLoad (temp 2-component vector of int)
+0:91            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:91            'coordTemp' (temp int)
+0:91        left shift second child into first child (temp 2-component vector of int)
+0:91          'storeTemp' (temp 2-component vector of int)
+0:91          Constant:
+0:91            2 (const int)
+0:91        imageStore (temp void)
+0:91          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:91          'coordTemp' (temp int)
+0:91          'storeTemp' (temp 2-component vector of int)
+0:91        'storeTemp' (temp 2-component vector of int)
+0:92      Sequence
+0:92        move second child to first child (temp int)
+0:92          'coordTemp' (temp int)
+0:92          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:92            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:92            Constant:
+0:92              0 (const uint)
+0:92        move second child to first child (temp 2-component vector of int)
+0:92          'storeTemp' (temp 2-component vector of int)
+0:92          imageLoad (temp 2-component vector of int)
+0:92            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:92            'coordTemp' (temp int)
+0:92        right shift second child into first child (temp 2-component vector of int)
+0:92          'storeTemp' (temp 2-component vector of int)
+0:92          Constant:
+0:92            2 (const int)
+0:92        imageStore (temp void)
+0:92          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:92          'coordTemp' (temp int)
+0:92          'storeTemp' (temp 2-component vector of int)
+0:92        'storeTemp' (temp 2-component vector of int)
+0:95      Sequence
+0:95        move second child to first child (temp 2-component vector of float)
+0:95          'storeTemp' (temp 2-component vector of float)
+0:95          Function Call: SomeValue( (temp 2-component vector of float)
+0:95        imageStore (temp void)
+0:95          'g_tTex2df2' (layout(rg32f ) uniform image2D)
+0:95          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:95            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:95            Constant:
+0:95              1 (const uint)
+0:95          'storeTemp' (temp 2-component vector of float)
+0:95        'storeTemp' (temp 2-component vector of float)
+0:96      Sequence
+0:96        imageStore (temp void)
+0:96          'g_tTex2df2' (layout(rg32f ) uniform image2D)
+0:96          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:96            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:96            Constant:
+0:96              1 (const uint)
+0:96          'lf2' (temp 2-component vector of float)
+0:96        'lf2' (temp 2-component vector of float)
+0:97      Sequence
+0:97        move second child to first child (temp 2-component vector of int)
+0:97          'storeTemp' (temp 2-component vector of int)
+0:?           Constant:
+0:?             5 (const int)
+0:?             2 (const int)
+0:97        imageStore (temp void)
+0:97          'g_tTex2di2' (layout(rg32i ) uniform iimage2D)
+0:97          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:97            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:97            Constant:
+0:97              1 (const uint)
+0:97          'storeTemp' (temp 2-component vector of int)
+0:97        'storeTemp' (temp 2-component vector of int)
+0:98      Sequence
+0:98        move second child to first child (temp 2-component vector of uint)
+0:98          'storeTemp' (temp 2-component vector of uint)
+0:?           Constant:
+0:?             6 (const uint)
+0:?             2 (const uint)
+0:98        imageStore (temp void)
+0:98          'g_tTex2du2' (layout(rg32ui ) uniform uimage2D)
+0:98          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:98            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:98            Constant:
+0:98              1 (const uint)
+0:98          'storeTemp' (temp 2-component vector of uint)
+0:98        'storeTemp' (temp 2-component vector of uint)
+0:101      Sequence
+0:101        move second child to first child (temp 2-component vector of float)
+0:101          'storeTemp' (temp 2-component vector of float)
+0:101          Function Call: SomeValue( (temp 2-component vector of float)
+0:101        imageStore (temp void)
+0:101          'g_tTex3df2' (layout(rg32f ) uniform image3D)
+0:101          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:101            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:101            Constant:
+0:101              2 (const uint)
+0:101          'storeTemp' (temp 2-component vector of float)
+0:101        'storeTemp' (temp 2-component vector of float)
+0:102      Sequence
+0:102        imageStore (temp void)
+0:102          'g_tTex3df2' (layout(rg32f ) uniform image3D)
+0:102          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:102            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:102            Constant:
+0:102              2 (const uint)
+0:102          'lf2' (temp 2-component vector of float)
+0:102        'lf2' (temp 2-component vector of float)
+0:103      Sequence
+0:103        move second child to first child (temp 2-component vector of int)
+0:103          'storeTemp' (temp 2-component vector of int)
+0:?           Constant:
+0:?             8 (const int)
+0:?             6 (const int)
+0:103        imageStore (temp void)
+0:103          'g_tTex3di2' (layout(rg32i ) uniform iimage3D)
+0:103          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:103            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:103            Constant:
+0:103              2 (const uint)
+0:103          'storeTemp' (temp 2-component vector of int)
+0:103        'storeTemp' (temp 2-component vector of int)
+0:104      Sequence
+0:104        move second child to first child (temp 2-component vector of uint)
+0:104          'storeTemp' (temp 2-component vector of uint)
+0:?           Constant:
+0:?             9 (const uint)
+0:?             2 (const uint)
+0:104        imageStore (temp void)
+0:104          'g_tTex3du2' (layout(rg32ui ) uniform uimage3D)
+0:104          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:104            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:104            Constant:
+0:104              2 (const uint)
+0:104          'storeTemp' (temp 2-component vector of uint)
+0:104        'storeTemp' (temp 2-component vector of uint)
+0:107      Function Call: Fn1(vf2; (temp 2-component vector of float)
+0:107        imageLoad (temp 2-component vector of float)
+0:107          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:107          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:107            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:107            Constant:
+0:107              0 (const uint)
+0:108      Function Call: Fn1(vi2; (temp 2-component vector of int)
+0:108        imageLoad (temp 2-component vector of int)
+0:108          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:108          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:108            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:108            Constant:
+0:108              0 (const uint)
+0:109      Function Call: Fn1(vu2; (temp 2-component vector of uint)
+0:109        imageLoad (temp 2-component vector of uint)
+0:109          'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:109          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:109            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:109            Constant:
+0:109              0 (const uint)
+0:111      Comma (temp void)
+0:111        Function Call: Fn2(vf2; (temp void)
+0:111          'tempArg' (temp 2-component vector of float)
+0:111        Sequence
+0:111          imageStore (temp void)
+0:111            'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:111            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:111              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:111              Constant:
+0:111                0 (const uint)
+0:111            'tempArg' (temp 2-component vector of float)
+0:111          'tempArg' (temp 2-component vector of float)
+0:112      Comma (temp void)
+0:112        Function Call: Fn2(vi2; (temp void)
+0:112          'tempArg' (temp 2-component vector of int)
+0:112        Sequence
+0:112          imageStore (temp void)
+0:112            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:112            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:112              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:112              Constant:
+0:112                0 (const uint)
+0:112            'tempArg' (temp 2-component vector of int)
+0:112          'tempArg' (temp 2-component vector of int)
+0:113      Comma (temp void)
+0:113        Function Call: Fn2(vu2; (temp void)
+0:113          'tempArg' (temp 2-component vector of uint)
+0:113        Sequence
+0:113          imageStore (temp void)
+0:113            'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:113            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:113              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:113              Constant:
+0:113                0 (const uint)
+0:113            'tempArg' (temp 2-component vector of uint)
+0:113          'tempArg' (temp 2-component vector of uint)
+0:117      Sequence
+0:117        move second child to first child (temp int)
+0:117          'coordTemp' (temp int)
+0:117          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:117            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:117            Constant:
+0:117              0 (const uint)
+0:117        move second child to first child (temp 2-component vector of float)
+0:117          'storeTemp' (temp 2-component vector of float)
+0:117          imageLoad (temp 2-component vector of float)
+0:117            'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:117            'coordTemp' (temp int)
+0:117        Pre-Increment (temp 2-component vector of float)
+0:117          'storeTemp' (temp 2-component vector of float)
+0:117        imageStore (temp void)
+0:117          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:117          'coordTemp' (temp int)
+0:117          'storeTemp' (temp 2-component vector of float)
+0:117        'storeTemp' (temp 2-component vector of float)
+0:118      Sequence
+0:118        move second child to first child (temp int)
+0:118          'coordTemp' (temp int)
+0:118          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:118            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:118            Constant:
+0:118              0 (const uint)
+0:118        move second child to first child (temp 2-component vector of int)
+0:118          'storeTemp' (temp 2-component vector of int)
+0:118          imageLoad (temp 2-component vector of int)
+0:118            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:118            'coordTemp' (temp int)
+0:118        Pre-Increment (temp 2-component vector of int)
+0:118          'storeTemp' (temp 2-component vector of int)
+0:118        imageStore (temp void)
+0:118          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:118          'coordTemp' (temp int)
+0:118          'storeTemp' (temp 2-component vector of int)
+0:118        'storeTemp' (temp 2-component vector of int)
+0:119      Sequence
+0:119        move second child to first child (temp int)
+0:119          'coordTemp' (temp int)
+0:119          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:119            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:119            Constant:
+0:119              0 (const uint)
+0:119        move second child to first child (temp 2-component vector of uint)
+0:119          'storeTemp' (temp 2-component vector of uint)
+0:119          imageLoad (temp 2-component vector of uint)
+0:119            'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:119            'coordTemp' (temp int)
+0:119        Pre-Increment (temp 2-component vector of uint)
+0:119          'storeTemp' (temp 2-component vector of uint)
+0:119        imageStore (temp void)
+0:119          'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:119          'coordTemp' (temp int)
+0:119          'storeTemp' (temp 2-component vector of uint)
+0:119        'storeTemp' (temp 2-component vector of uint)
+0:121      Sequence
+0:121        move second child to first child (temp int)
+0:121          'coordTemp' (temp int)
+0:121          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:121            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:121            Constant:
+0:121              0 (const uint)
+0:121        move second child to first child (temp 2-component vector of float)
+0:121          'storeTemp' (temp 2-component vector of float)
+0:121          imageLoad (temp 2-component vector of float)
+0:121            'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:121            'coordTemp' (temp int)
+0:121        Pre-Decrement (temp 2-component vector of float)
+0:121          'storeTemp' (temp 2-component vector of float)
+0:121        imageStore (temp void)
+0:121          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:121          'coordTemp' (temp int)
+0:121          'storeTemp' (temp 2-component vector of float)
+0:121        'storeTemp' (temp 2-component vector of float)
+0:122      Sequence
+0:122        move second child to first child (temp int)
+0:122          'coordTemp' (temp int)
+0:122          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:122            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:122            Constant:
+0:122              0 (const uint)
+0:122        move second child to first child (temp 2-component vector of int)
+0:122          'storeTemp' (temp 2-component vector of int)
+0:122          imageLoad (temp 2-component vector of int)
+0:122            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:122            'coordTemp' (temp int)
+0:122        Pre-Decrement (temp 2-component vector of int)
+0:122          'storeTemp' (temp 2-component vector of int)
+0:122        imageStore (temp void)
+0:122          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:122          'coordTemp' (temp int)
+0:122          'storeTemp' (temp 2-component vector of int)
+0:122        'storeTemp' (temp 2-component vector of int)
+0:123      Sequence
+0:123        move second child to first child (temp int)
+0:123          'coordTemp' (temp int)
+0:123          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:123            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:123            Constant:
+0:123              0 (const uint)
+0:123        move second child to first child (temp 2-component vector of uint)
+0:123          'storeTemp' (temp 2-component vector of uint)
+0:123          imageLoad (temp 2-component vector of uint)
+0:123            'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:123            'coordTemp' (temp int)
+0:123        Pre-Decrement (temp 2-component vector of uint)
+0:123          'storeTemp' (temp 2-component vector of uint)
+0:123        imageStore (temp void)
+0:123          'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:123          'coordTemp' (temp int)
+0:123          'storeTemp' (temp 2-component vector of uint)
+0:123        'storeTemp' (temp 2-component vector of uint)
+0:126      Sequence
+0:126        move second child to first child (temp int)
+0:126          'coordTemp' (temp int)
+0:126          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:126            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:126            Constant:
+0:126              0 (const uint)
+0:126        move second child to first child (temp 2-component vector of float)
+0:126          'storeTempPre' (temp 2-component vector of float)
+0:126          imageLoad (temp 2-component vector of float)
+0:126            'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:126            'coordTemp' (temp int)
+0:126        move second child to first child (temp 2-component vector of float)
+0:126          'storeTempPost' (temp 2-component vector of float)
+0:126          'storeTempPre' (temp 2-component vector of float)
+0:126        Post-Increment (temp 2-component vector of float)
+0:126          'storeTempPost' (temp 2-component vector of float)
+0:126        imageStore (temp void)
+0:126          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:126          'coordTemp' (temp int)
+0:126          'storeTempPost' (temp 2-component vector of float)
+0:126        'storeTempPre' (temp 2-component vector of float)
+0:127      Sequence
+0:127        move second child to first child (temp int)
+0:127          'coordTemp' (temp int)
+0:127          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:127            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:127            Constant:
+0:127              0 (const uint)
+0:127        move second child to first child (temp 2-component vector of uint)
+0:127          'storeTempPre' (temp 2-component vector of uint)
+0:127          imageLoad (temp 2-component vector of uint)
+0:127            'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:127            'coordTemp' (temp int)
+0:127        move second child to first child (temp 2-component vector of uint)
+0:127          'storeTempPost' (temp 2-component vector of uint)
+0:127          'storeTempPre' (temp 2-component vector of uint)
+0:127        Post-Decrement (temp 2-component vector of uint)
+0:127          'storeTempPost' (temp 2-component vector of uint)
+0:127        imageStore (temp void)
+0:127          'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:127          'coordTemp' (temp int)
+0:127          'storeTempPost' (temp 2-component vector of uint)
+0:127        'storeTempPre' (temp 2-component vector of uint)
+0:128      Sequence
+0:128        move second child to first child (temp int)
+0:128          'coordTemp' (temp int)
+0:128          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:128            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:128            Constant:
+0:128              0 (const uint)
+0:128        move second child to first child (temp 2-component vector of int)
+0:128          'storeTempPre' (temp 2-component vector of int)
+0:128          imageLoad (temp 2-component vector of int)
+0:128            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:128            'coordTemp' (temp int)
+0:128        move second child to first child (temp 2-component vector of int)
+0:128          'storeTempPost' (temp 2-component vector of int)
+0:128          'storeTempPre' (temp 2-component vector of int)
+0:128        Post-Increment (temp 2-component vector of int)
+0:128          'storeTempPost' (temp 2-component vector of int)
+0:128        imageStore (temp void)
+0:128          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:128          'coordTemp' (temp int)
+0:128          'storeTempPost' (temp 2-component vector of int)
+0:128        'storeTempPre' (temp 2-component vector of int)
+0:130      Sequence
+0:130        move second child to first child (temp int)
+0:130          'coordTemp' (temp int)
+0:130          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:130            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:130            Constant:
+0:130              0 (const uint)
+0:130        move second child to first child (temp 2-component vector of float)
+0:130          'storeTempPre' (temp 2-component vector of float)
+0:130          imageLoad (temp 2-component vector of float)
+0:130            'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:130            'coordTemp' (temp int)
+0:130        move second child to first child (temp 2-component vector of float)
+0:130          'storeTempPost' (temp 2-component vector of float)
+0:130          'storeTempPre' (temp 2-component vector of float)
+0:130        Post-Decrement (temp 2-component vector of float)
+0:130          'storeTempPost' (temp 2-component vector of float)
+0:130        imageStore (temp void)
+0:130          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:130          'coordTemp' (temp int)
+0:130          'storeTempPost' (temp 2-component vector of float)
+0:130        'storeTempPre' (temp 2-component vector of float)
+0:131      Sequence
+0:131        move second child to first child (temp int)
+0:131          'coordTemp' (temp int)
+0:131          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:131            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:131            Constant:
+0:131              0 (const uint)
+0:131        move second child to first child (temp 2-component vector of int)
+0:131          'storeTempPre' (temp 2-component vector of int)
+0:131          imageLoad (temp 2-component vector of int)
+0:131            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:131            'coordTemp' (temp int)
+0:131        move second child to first child (temp 2-component vector of int)
+0:131          'storeTempPost' (temp 2-component vector of int)
+0:131          'storeTempPre' (temp 2-component vector of int)
+0:131        Post-Increment (temp 2-component vector of int)
+0:131          'storeTempPost' (temp 2-component vector of int)
+0:131        imageStore (temp void)
+0:131          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:131          'coordTemp' (temp int)
+0:131          'storeTempPost' (temp 2-component vector of int)
+0:131        'storeTempPre' (temp 2-component vector of int)
+0:132      Sequence
+0:132        move second child to first child (temp int)
+0:132          'coordTemp' (temp int)
+0:132          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:132            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:132            Constant:
+0:132              0 (const uint)
+0:132        move second child to first child (temp 2-component vector of uint)
+0:132          'storeTempPre' (temp 2-component vector of uint)
+0:132          imageLoad (temp 2-component vector of uint)
+0:132            'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:132            'coordTemp' (temp int)
+0:132        move second child to first child (temp 2-component vector of uint)
+0:132          'storeTempPost' (temp 2-component vector of uint)
+0:132          'storeTempPre' (temp 2-component vector of uint)
+0:132        Post-Decrement (temp 2-component vector of uint)
+0:132          'storeTempPost' (temp 2-component vector of uint)
+0:132        imageStore (temp void)
+0:132          'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:132          'coordTemp' (temp int)
+0:132          'storeTempPost' (temp 2-component vector of uint)
+0:132        'storeTempPre' (temp 2-component vector of uint)
+0:135      Sequence
+0:135        move second child to first child (temp 2-component vector of float)
+0:135          'storeTemp' (temp 2-component vector of float)
+0:?           imageLoad (temp 2-component vector of float)
+0:135            'g_tTex2df2' (layout(rg32f ) uniform image2D)
+0:?             Constant:
+0:?               2 (const int)
+0:?               3 (const int)
+0:135        imageStore (temp void)
+0:135          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:135          Constant:
+0:135            1 (const int)
+0:135          'storeTemp' (temp 2-component vector of float)
+0:135        'storeTemp' (temp 2-component vector of float)
+0:137      move second child to first child (temp 4-component vector of float)
+0:137        Color: direct index for structure (temp 4-component vector of float)
+0:137          'psout' (temp structure{temp 4-component vector of float Color})
+0:137          Constant:
+0:137            0 (const int)
+0:137        Constant:
+0:137          1.000000
+0:137          1.000000
+0:137          1.000000
+0:137          1.000000
+0:139      Sequence
+0:139        Sequence
+0:139          move second child to first child (temp 4-component vector of float)
+0:?             'Color' (layout(location=0 ) out 4-component vector of float)
+0:139            Color: direct index for structure (temp 4-component vector of float)
+0:139              'psout' (temp structure{temp 4-component vector of float Color})
+0:139              Constant:
+0:139                0 (const int)
+0:139        Branch: Return
+0:?   Linker Objects
+0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:?     'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:?     'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:?     'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:?     'g_tTex2df2' (layout(rg32f ) uniform image2D)
+0:?     'g_tTex2di2' (layout(rg32i ) uniform iimage2D)
+0:?     'g_tTex2du2' (layout(rg32ui ) uniform uimage2D)
+0:?     'g_tTex3df2' (layout(rg32f ) uniform image3D)
+0:?     'g_tTex3di2' (layout(rg32i ) uniform iimage3D)
+0:?     'g_tTex3du2' (layout(rg32ui ) uniform uimage3D)
+0:?     'g_tTex1df2a' (layout(rg32f ) uniform image1DArray)
+0:?     'g_tTex1di2a' (layout(rg32i ) uniform iimage1DArray)
+0:?     'g_tTex1du2a' (layout(rg32ui ) uniform uimage1DArray)
+0:?     'g_tTex2df2a' (layout(rg32f ) uniform image2DArray)
+0:?     'g_tTex2di2a' (layout(rg32i ) uniform iimage2DArray)
+0:?     'g_tTex2du2a' (layout(rg32ui ) uniform uimage2DArray)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:42  Function Definition: Fn1(vi2; (temp 2-component vector of int)
+0:42    Function Parameters: 
+0:42      'x' (in 2-component vector of int)
+0:?     Sequence
+0:42      Branch: Return with expression
+0:42        'x' (in 2-component vector of int)
+0:43  Function Definition: Fn1(vu2; (temp 2-component vector of uint)
+0:43    Function Parameters: 
+0:43      'x' (in 2-component vector of uint)
+0:?     Sequence
+0:43      Branch: Return with expression
+0:43        'x' (in 2-component vector of uint)
+0:44  Function Definition: Fn1(vf2; (temp 2-component vector of float)
+0:44    Function Parameters: 
+0:44      'x' (in 2-component vector of float)
+0:?     Sequence
+0:44      Branch: Return with expression
+0:44        'x' (in 2-component vector of float)
+0:46  Function Definition: Fn2(vi2; (temp void)
+0:46    Function Parameters: 
+0:46      'x' (out 2-component vector of int)
+0:?     Sequence
+0:46      move second child to first child (temp 2-component vector of int)
+0:46        'x' (out 2-component vector of int)
+0:?         Constant:
+0:?           0 (const int)
+0:?           0 (const int)
+0:47  Function Definition: Fn2(vu2; (temp void)
+0:47    Function Parameters: 
+0:47      'x' (out 2-component vector of uint)
+0:?     Sequence
+0:47      move second child to first child (temp 2-component vector of uint)
+0:47        'x' (out 2-component vector of uint)
+0:?         Constant:
+0:?           0 (const uint)
+0:?           0 (const uint)
+0:48  Function Definition: Fn2(vf2; (temp void)
+0:48    Function Parameters: 
+0:48      'x' (out 2-component vector of float)
+0:?     Sequence
+0:48      move second child to first child (temp 2-component vector of float)
+0:48        'x' (out 2-component vector of float)
+0:?         Constant:
+0:?           0.000000
+0:?           0.000000
+0:50  Function Definition: SomeValue( (temp 2-component vector of float)
+0:50    Function Parameters: 
+0:?     Sequence
+0:50      Branch: Return with expression
+0:50        Convert int to float (temp 2-component vector of float)
+0:50          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:50            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:50            Constant:
+0:50              1 (const uint)
+0:53  Function Definition: main( (temp structure{temp 4-component vector of float Color})
+0:53    Function Parameters: 
+0:?     Sequence
+0:57      imageLoad (temp 2-component vector of float)
+0:57        'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:57        c1: direct index for structure (layout(offset=0 ) uniform int)
+0:57          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:57          Constant:
+0:57            0 (const uint)
+0:59      Sequence
+0:59        move second child to first child (temp 2-component vector of float)
+0:59          'r00' (temp 2-component vector of float)
+0:59          imageLoad (temp 2-component vector of float)
+0:59            'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:59            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:59              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:59              Constant:
+0:59                0 (const uint)
+0:60      Sequence
+0:60        move second child to first child (temp 2-component vector of int)
+0:60          'r01' (temp 2-component vector of int)
+0:60          imageLoad (temp 2-component vector of int)
+0:60            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:60            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:60              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:60              Constant:
+0:60                0 (const uint)
+0:61      Sequence
+0:61        move second child to first child (temp 2-component vector of uint)
+0:61          'r02' (temp 2-component vector of uint)
+0:61          imageLoad (temp 2-component vector of uint)
+0:61            'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:61            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:61              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:61              Constant:
+0:61                0 (const uint)
+0:64      Sequence
+0:64        move second child to first child (temp 2-component vector of float)
+0:64          'r10' (temp 2-component vector of float)
+0:64          imageLoad (temp 2-component vector of float)
+0:64            'g_tTex2df2' (layout(rg32f ) uniform image2D)
+0:64            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:64              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:64              Constant:
+0:64                1 (const uint)
+0:65      Sequence
+0:65        move second child to first child (temp 2-component vector of int)
+0:65          'r11' (temp 2-component vector of int)
+0:65          imageLoad (temp 2-component vector of int)
+0:65            'g_tTex2di2' (layout(rg32i ) uniform iimage2D)
+0:65            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:65              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:65              Constant:
+0:65                1 (const uint)
+0:66      Sequence
+0:66        move second child to first child (temp 2-component vector of uint)
+0:66          'r12' (temp 2-component vector of uint)
+0:66          imageLoad (temp 2-component vector of uint)
+0:66            'g_tTex2du2' (layout(rg32ui ) uniform uimage2D)
+0:66            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:66              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:66              Constant:
+0:66                1 (const uint)
+0:69      Sequence
+0:69        move second child to first child (temp 2-component vector of float)
+0:69          'r20' (temp 2-component vector of float)
+0:69          imageLoad (temp 2-component vector of float)
+0:69            'g_tTex3df2' (layout(rg32f ) uniform image3D)
+0:69            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:69              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:69              Constant:
+0:69                2 (const uint)
+0:70      Sequence
+0:70        move second child to first child (temp 2-component vector of int)
+0:70          'r21' (temp 2-component vector of int)
+0:70          imageLoad (temp 2-component vector of int)
+0:70            'g_tTex3di2' (layout(rg32i ) uniform iimage3D)
+0:70            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:70              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:70              Constant:
+0:70                2 (const uint)
+0:71      Sequence
+0:71        move second child to first child (temp 2-component vector of uint)
+0:71          'r22' (temp 2-component vector of uint)
+0:71          imageLoad (temp 2-component vector of uint)
+0:71            'g_tTex3du2' (layout(rg32ui ) uniform uimage3D)
+0:71            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:71              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:71              Constant:
+0:71                2 (const uint)
+0:73      Sequence
+0:73        move second child to first child (temp 2-component vector of float)
+0:73          'lf2' (temp 2-component vector of float)
+0:73          uf2: direct index for structure (layout(offset=96 ) uniform 2-component vector of float)
+0:73            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:73            Constant:
+0:73              8 (const uint)
+0:77      Sequence
+0:77        move second child to first child (temp 2-component vector of float)
+0:77          'storeTemp' (temp 2-component vector of float)
+0:77          Function Call: SomeValue( (temp 2-component vector of float)
+0:77        imageStore (temp void)
+0:77          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:77          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:77            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:77            Constant:
+0:77              0 (const uint)
+0:77          'storeTemp' (temp 2-component vector of float)
+0:77        'storeTemp' (temp 2-component vector of float)
+0:78      Sequence
+0:78        imageStore (temp void)
+0:78          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:78          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:78            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:78            Constant:
+0:78              0 (const uint)
+0:78          'lf2' (temp 2-component vector of float)
+0:78        'lf2' (temp 2-component vector of float)
+0:79      Sequence
+0:79        move second child to first child (temp 2-component vector of int)
+0:79          'storeTemp' (temp 2-component vector of int)
+0:?           Constant:
+0:?             2 (const int)
+0:?             2 (const int)
+0:79        imageStore (temp void)
+0:79          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:79          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:79            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:79            Constant:
+0:79              0 (const uint)
+0:79          'storeTemp' (temp 2-component vector of int)
+0:79        'storeTemp' (temp 2-component vector of int)
+0:80      Sequence
+0:80        move second child to first child (temp 2-component vector of uint)
+0:80          'storeTemp' (temp 2-component vector of uint)
+0:?           Constant:
+0:?             3 (const uint)
+0:?             2 (const uint)
+0:80        imageStore (temp void)
+0:80          'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:80          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:80            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:80            Constant:
+0:80              0 (const uint)
+0:80          'storeTemp' (temp 2-component vector of uint)
+0:80        'storeTemp' (temp 2-component vector of uint)
+0:83      Sequence
+0:83        move second child to first child (temp 2-component vector of float)
+0:83          'val1' (temp 2-component vector of float)
+0:83          Sequence
+0:83            move second child to first child (temp int)
+0:83              'coordTemp' (temp int)
+0:83              c1: direct index for structure (layout(offset=0 ) uniform int)
+0:83                'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:83                Constant:
+0:83                  0 (const uint)
+0:83            move second child to first child (temp 2-component vector of float)
+0:83              'storeTemp' (temp 2-component vector of float)
+0:83              imageLoad (temp 2-component vector of float)
+0:83                'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:83                'coordTemp' (temp int)
+0:83            vector scale second child into first child (temp 2-component vector of float)
+0:83              'storeTemp' (temp 2-component vector of float)
+0:83              Constant:
+0:83                2.000000
+0:83            imageStore (temp void)
+0:83              'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:83              'coordTemp' (temp int)
+0:83              'storeTemp' (temp 2-component vector of float)
+0:83            'storeTemp' (temp 2-component vector of float)
+0:84      Sequence
+0:84        move second child to first child (temp int)
+0:84          'coordTemp' (temp int)
+0:84          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:84            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:84            Constant:
+0:84              0 (const uint)
+0:84        move second child to first child (temp 2-component vector of float)
+0:84          'storeTemp' (temp 2-component vector of float)
+0:84          imageLoad (temp 2-component vector of float)
+0:84            'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:84            'coordTemp' (temp int)
+0:84        subtract second child into first child (temp 2-component vector of float)
+0:84          'storeTemp' (temp 2-component vector of float)
+0:84          Constant:
+0:84            3.000000
+0:84        imageStore (temp void)
+0:84          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:84          'coordTemp' (temp int)
+0:84          'storeTemp' (temp 2-component vector of float)
+0:84        'storeTemp' (temp 2-component vector of float)
+0:85      Sequence
+0:85        move second child to first child (temp int)
+0:85          'coordTemp' (temp int)
+0:85          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:85            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:85            Constant:
+0:85              0 (const uint)
+0:85        move second child to first child (temp 2-component vector of float)
+0:85          'storeTemp' (temp 2-component vector of float)
+0:85          imageLoad (temp 2-component vector of float)
+0:85            'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:85            'coordTemp' (temp int)
+0:85        add second child into first child (temp 2-component vector of float)
+0:85          'storeTemp' (temp 2-component vector of float)
+0:85          Constant:
+0:85            4.000000
+0:85        imageStore (temp void)
+0:85          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:85          'coordTemp' (temp int)
+0:85          'storeTemp' (temp 2-component vector of float)
+0:85        'storeTemp' (temp 2-component vector of float)
+0:87      Sequence
+0:87        move second child to first child (temp int)
+0:87          'coordTemp' (temp int)
+0:87          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:87            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:87            Constant:
+0:87              0 (const uint)
+0:87        move second child to first child (temp 2-component vector of int)
+0:87          'storeTemp' (temp 2-component vector of int)
+0:87          imageLoad (temp 2-component vector of int)
+0:87            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:87            'coordTemp' (temp int)
+0:87        divide second child into first child (temp 2-component vector of int)
+0:87          'storeTemp' (temp 2-component vector of int)
+0:87          Constant:
+0:87            2 (const int)
+0:87        imageStore (temp void)
+0:87          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:87          'coordTemp' (temp int)
+0:87          'storeTemp' (temp 2-component vector of int)
+0:87        'storeTemp' (temp 2-component vector of int)
+0:88      Sequence
+0:88        move second child to first child (temp int)
+0:88          'coordTemp' (temp int)
+0:88          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:88            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:88            Constant:
+0:88              0 (const uint)
+0:88        move second child to first child (temp 2-component vector of int)
+0:88          'storeTemp' (temp 2-component vector of int)
+0:88          imageLoad (temp 2-component vector of int)
+0:88            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:88            'coordTemp' (temp int)
+0:88        mod second child into first child (temp 2-component vector of int)
+0:88          'storeTemp' (temp 2-component vector of int)
+0:88          Constant:
+0:88            2 (const int)
+0:88        imageStore (temp void)
+0:88          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:88          'coordTemp' (temp int)
+0:88          'storeTemp' (temp 2-component vector of int)
+0:88        'storeTemp' (temp 2-component vector of int)
+0:89      Sequence
+0:89        move second child to first child (temp int)
+0:89          'coordTemp' (temp int)
+0:89          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:89            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:89            Constant:
+0:89              0 (const uint)
+0:89        move second child to first child (temp 2-component vector of int)
+0:89          'storeTemp' (temp 2-component vector of int)
+0:89          imageLoad (temp 2-component vector of int)
+0:89            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:89            'coordTemp' (temp int)
+0:89        and second child into first child (temp 2-component vector of int)
+0:89          'storeTemp' (temp 2-component vector of int)
+0:89          Constant:
+0:89            65535 (const int)
+0:89        imageStore (temp void)
+0:89          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:89          'coordTemp' (temp int)
+0:89          'storeTemp' (temp 2-component vector of int)
+0:89        'storeTemp' (temp 2-component vector of int)
+0:90      Sequence
+0:90        move second child to first child (temp int)
+0:90          'coordTemp' (temp int)
+0:90          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:90            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:90            Constant:
+0:90              0 (const uint)
+0:90        move second child to first child (temp 2-component vector of int)
+0:90          'storeTemp' (temp 2-component vector of int)
+0:90          imageLoad (temp 2-component vector of int)
+0:90            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:90            'coordTemp' (temp int)
+0:90        or second child into first child (temp 2-component vector of int)
+0:90          'storeTemp' (temp 2-component vector of int)
+0:90          Constant:
+0:90            61680 (const int)
+0:90        imageStore (temp void)
+0:90          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:90          'coordTemp' (temp int)
+0:90          'storeTemp' (temp 2-component vector of int)
+0:90        'storeTemp' (temp 2-component vector of int)
+0:91      Sequence
+0:91        move second child to first child (temp int)
+0:91          'coordTemp' (temp int)
+0:91          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:91            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:91            Constant:
+0:91              0 (const uint)
+0:91        move second child to first child (temp 2-component vector of int)
+0:91          'storeTemp' (temp 2-component vector of int)
+0:91          imageLoad (temp 2-component vector of int)
+0:91            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:91            'coordTemp' (temp int)
+0:91        left shift second child into first child (temp 2-component vector of int)
+0:91          'storeTemp' (temp 2-component vector of int)
+0:91          Constant:
+0:91            2 (const int)
+0:91        imageStore (temp void)
+0:91          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:91          'coordTemp' (temp int)
+0:91          'storeTemp' (temp 2-component vector of int)
+0:91        'storeTemp' (temp 2-component vector of int)
+0:92      Sequence
+0:92        move second child to first child (temp int)
+0:92          'coordTemp' (temp int)
+0:92          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:92            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:92            Constant:
+0:92              0 (const uint)
+0:92        move second child to first child (temp 2-component vector of int)
+0:92          'storeTemp' (temp 2-component vector of int)
+0:92          imageLoad (temp 2-component vector of int)
+0:92            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:92            'coordTemp' (temp int)
+0:92        right shift second child into first child (temp 2-component vector of int)
+0:92          'storeTemp' (temp 2-component vector of int)
+0:92          Constant:
+0:92            2 (const int)
+0:92        imageStore (temp void)
+0:92          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:92          'coordTemp' (temp int)
+0:92          'storeTemp' (temp 2-component vector of int)
+0:92        'storeTemp' (temp 2-component vector of int)
+0:95      Sequence
+0:95        move second child to first child (temp 2-component vector of float)
+0:95          'storeTemp' (temp 2-component vector of float)
+0:95          Function Call: SomeValue( (temp 2-component vector of float)
+0:95        imageStore (temp void)
+0:95          'g_tTex2df2' (layout(rg32f ) uniform image2D)
+0:95          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:95            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:95            Constant:
+0:95              1 (const uint)
+0:95          'storeTemp' (temp 2-component vector of float)
+0:95        'storeTemp' (temp 2-component vector of float)
+0:96      Sequence
+0:96        imageStore (temp void)
+0:96          'g_tTex2df2' (layout(rg32f ) uniform image2D)
+0:96          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:96            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:96            Constant:
+0:96              1 (const uint)
+0:96          'lf2' (temp 2-component vector of float)
+0:96        'lf2' (temp 2-component vector of float)
+0:97      Sequence
+0:97        move second child to first child (temp 2-component vector of int)
+0:97          'storeTemp' (temp 2-component vector of int)
+0:?           Constant:
+0:?             5 (const int)
+0:?             2 (const int)
+0:97        imageStore (temp void)
+0:97          'g_tTex2di2' (layout(rg32i ) uniform iimage2D)
+0:97          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:97            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:97            Constant:
+0:97              1 (const uint)
+0:97          'storeTemp' (temp 2-component vector of int)
+0:97        'storeTemp' (temp 2-component vector of int)
+0:98      Sequence
+0:98        move second child to first child (temp 2-component vector of uint)
+0:98          'storeTemp' (temp 2-component vector of uint)
+0:?           Constant:
+0:?             6 (const uint)
+0:?             2 (const uint)
+0:98        imageStore (temp void)
+0:98          'g_tTex2du2' (layout(rg32ui ) uniform uimage2D)
+0:98          c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:98            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:98            Constant:
+0:98              1 (const uint)
+0:98          'storeTemp' (temp 2-component vector of uint)
+0:98        'storeTemp' (temp 2-component vector of uint)
+0:101      Sequence
+0:101        move second child to first child (temp 2-component vector of float)
+0:101          'storeTemp' (temp 2-component vector of float)
+0:101          Function Call: SomeValue( (temp 2-component vector of float)
+0:101        imageStore (temp void)
+0:101          'g_tTex3df2' (layout(rg32f ) uniform image3D)
+0:101          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:101            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:101            Constant:
+0:101              2 (const uint)
+0:101          'storeTemp' (temp 2-component vector of float)
+0:101        'storeTemp' (temp 2-component vector of float)
+0:102      Sequence
+0:102        imageStore (temp void)
+0:102          'g_tTex3df2' (layout(rg32f ) uniform image3D)
+0:102          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:102            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:102            Constant:
+0:102              2 (const uint)
+0:102          'lf2' (temp 2-component vector of float)
+0:102        'lf2' (temp 2-component vector of float)
+0:103      Sequence
+0:103        move second child to first child (temp 2-component vector of int)
+0:103          'storeTemp' (temp 2-component vector of int)
+0:?           Constant:
+0:?             8 (const int)
+0:?             6 (const int)
+0:103        imageStore (temp void)
+0:103          'g_tTex3di2' (layout(rg32i ) uniform iimage3D)
+0:103          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:103            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:103            Constant:
+0:103              2 (const uint)
+0:103          'storeTemp' (temp 2-component vector of int)
+0:103        'storeTemp' (temp 2-component vector of int)
+0:104      Sequence
+0:104        move second child to first child (temp 2-component vector of uint)
+0:104          'storeTemp' (temp 2-component vector of uint)
+0:?           Constant:
+0:?             9 (const uint)
+0:?             2 (const uint)
+0:104        imageStore (temp void)
+0:104          'g_tTex3du2' (layout(rg32ui ) uniform uimage3D)
+0:104          c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:104            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:104            Constant:
+0:104              2 (const uint)
+0:104          'storeTemp' (temp 2-component vector of uint)
+0:104        'storeTemp' (temp 2-component vector of uint)
+0:107      Function Call: Fn1(vf2; (temp 2-component vector of float)
+0:107        imageLoad (temp 2-component vector of float)
+0:107          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:107          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:107            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:107            Constant:
+0:107              0 (const uint)
+0:108      Function Call: Fn1(vi2; (temp 2-component vector of int)
+0:108        imageLoad (temp 2-component vector of int)
+0:108          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:108          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:108            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:108            Constant:
+0:108              0 (const uint)
+0:109      Function Call: Fn1(vu2; (temp 2-component vector of uint)
+0:109        imageLoad (temp 2-component vector of uint)
+0:109          'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:109          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:109            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:109            Constant:
+0:109              0 (const uint)
+0:111      Comma (temp void)
+0:111        Function Call: Fn2(vf2; (temp void)
+0:111          'tempArg' (temp 2-component vector of float)
+0:111        Sequence
+0:111          imageStore (temp void)
+0:111            'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:111            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:111              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:111              Constant:
+0:111                0 (const uint)
+0:111            'tempArg' (temp 2-component vector of float)
+0:111          'tempArg' (temp 2-component vector of float)
+0:112      Comma (temp void)
+0:112        Function Call: Fn2(vi2; (temp void)
+0:112          'tempArg' (temp 2-component vector of int)
+0:112        Sequence
+0:112          imageStore (temp void)
+0:112            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:112            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:112              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:112              Constant:
+0:112                0 (const uint)
+0:112            'tempArg' (temp 2-component vector of int)
+0:112          'tempArg' (temp 2-component vector of int)
+0:113      Comma (temp void)
+0:113        Function Call: Fn2(vu2; (temp void)
+0:113          'tempArg' (temp 2-component vector of uint)
+0:113        Sequence
+0:113          imageStore (temp void)
+0:113            'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:113            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:113              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:113              Constant:
+0:113                0 (const uint)
+0:113            'tempArg' (temp 2-component vector of uint)
+0:113          'tempArg' (temp 2-component vector of uint)
+0:117      Sequence
+0:117        move second child to first child (temp int)
+0:117          'coordTemp' (temp int)
+0:117          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:117            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:117            Constant:
+0:117              0 (const uint)
+0:117        move second child to first child (temp 2-component vector of float)
+0:117          'storeTemp' (temp 2-component vector of float)
+0:117          imageLoad (temp 2-component vector of float)
+0:117            'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:117            'coordTemp' (temp int)
+0:117        Pre-Increment (temp 2-component vector of float)
+0:117          'storeTemp' (temp 2-component vector of float)
+0:117        imageStore (temp void)
+0:117          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:117          'coordTemp' (temp int)
+0:117          'storeTemp' (temp 2-component vector of float)
+0:117        'storeTemp' (temp 2-component vector of float)
+0:118      Sequence
+0:118        move second child to first child (temp int)
+0:118          'coordTemp' (temp int)
+0:118          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:118            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:118            Constant:
+0:118              0 (const uint)
+0:118        move second child to first child (temp 2-component vector of int)
+0:118          'storeTemp' (temp 2-component vector of int)
+0:118          imageLoad (temp 2-component vector of int)
+0:118            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:118            'coordTemp' (temp int)
+0:118        Pre-Increment (temp 2-component vector of int)
+0:118          'storeTemp' (temp 2-component vector of int)
+0:118        imageStore (temp void)
+0:118          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:118          'coordTemp' (temp int)
+0:118          'storeTemp' (temp 2-component vector of int)
+0:118        'storeTemp' (temp 2-component vector of int)
+0:119      Sequence
+0:119        move second child to first child (temp int)
+0:119          'coordTemp' (temp int)
+0:119          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:119            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:119            Constant:
+0:119              0 (const uint)
+0:119        move second child to first child (temp 2-component vector of uint)
+0:119          'storeTemp' (temp 2-component vector of uint)
+0:119          imageLoad (temp 2-component vector of uint)
+0:119            'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:119            'coordTemp' (temp int)
+0:119        Pre-Increment (temp 2-component vector of uint)
+0:119          'storeTemp' (temp 2-component vector of uint)
+0:119        imageStore (temp void)
+0:119          'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:119          'coordTemp' (temp int)
+0:119          'storeTemp' (temp 2-component vector of uint)
+0:119        'storeTemp' (temp 2-component vector of uint)
+0:121      Sequence
+0:121        move second child to first child (temp int)
+0:121          'coordTemp' (temp int)
+0:121          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:121            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:121            Constant:
+0:121              0 (const uint)
+0:121        move second child to first child (temp 2-component vector of float)
+0:121          'storeTemp' (temp 2-component vector of float)
+0:121          imageLoad (temp 2-component vector of float)
+0:121            'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:121            'coordTemp' (temp int)
+0:121        Pre-Decrement (temp 2-component vector of float)
+0:121          'storeTemp' (temp 2-component vector of float)
+0:121        imageStore (temp void)
+0:121          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:121          'coordTemp' (temp int)
+0:121          'storeTemp' (temp 2-component vector of float)
+0:121        'storeTemp' (temp 2-component vector of float)
+0:122      Sequence
+0:122        move second child to first child (temp int)
+0:122          'coordTemp' (temp int)
+0:122          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:122            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:122            Constant:
+0:122              0 (const uint)
+0:122        move second child to first child (temp 2-component vector of int)
+0:122          'storeTemp' (temp 2-component vector of int)
+0:122          imageLoad (temp 2-component vector of int)
+0:122            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:122            'coordTemp' (temp int)
+0:122        Pre-Decrement (temp 2-component vector of int)
+0:122          'storeTemp' (temp 2-component vector of int)
+0:122        imageStore (temp void)
+0:122          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:122          'coordTemp' (temp int)
+0:122          'storeTemp' (temp 2-component vector of int)
+0:122        'storeTemp' (temp 2-component vector of int)
+0:123      Sequence
+0:123        move second child to first child (temp int)
+0:123          'coordTemp' (temp int)
+0:123          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:123            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:123            Constant:
+0:123              0 (const uint)
+0:123        move second child to first child (temp 2-component vector of uint)
+0:123          'storeTemp' (temp 2-component vector of uint)
+0:123          imageLoad (temp 2-component vector of uint)
+0:123            'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:123            'coordTemp' (temp int)
+0:123        Pre-Decrement (temp 2-component vector of uint)
+0:123          'storeTemp' (temp 2-component vector of uint)
+0:123        imageStore (temp void)
+0:123          'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:123          'coordTemp' (temp int)
+0:123          'storeTemp' (temp 2-component vector of uint)
+0:123        'storeTemp' (temp 2-component vector of uint)
+0:126      Sequence
+0:126        move second child to first child (temp int)
+0:126          'coordTemp' (temp int)
+0:126          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:126            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:126            Constant:
+0:126              0 (const uint)
+0:126        move second child to first child (temp 2-component vector of float)
+0:126          'storeTempPre' (temp 2-component vector of float)
+0:126          imageLoad (temp 2-component vector of float)
+0:126            'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:126            'coordTemp' (temp int)
+0:126        move second child to first child (temp 2-component vector of float)
+0:126          'storeTempPost' (temp 2-component vector of float)
+0:126          'storeTempPre' (temp 2-component vector of float)
+0:126        Post-Increment (temp 2-component vector of float)
+0:126          'storeTempPost' (temp 2-component vector of float)
+0:126        imageStore (temp void)
+0:126          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:126          'coordTemp' (temp int)
+0:126          'storeTempPost' (temp 2-component vector of float)
+0:126        'storeTempPre' (temp 2-component vector of float)
+0:127      Sequence
+0:127        move second child to first child (temp int)
+0:127          'coordTemp' (temp int)
+0:127          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:127            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:127            Constant:
+0:127              0 (const uint)
+0:127        move second child to first child (temp 2-component vector of uint)
+0:127          'storeTempPre' (temp 2-component vector of uint)
+0:127          imageLoad (temp 2-component vector of uint)
+0:127            'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:127            'coordTemp' (temp int)
+0:127        move second child to first child (temp 2-component vector of uint)
+0:127          'storeTempPost' (temp 2-component vector of uint)
+0:127          'storeTempPre' (temp 2-component vector of uint)
+0:127        Post-Decrement (temp 2-component vector of uint)
+0:127          'storeTempPost' (temp 2-component vector of uint)
+0:127        imageStore (temp void)
+0:127          'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:127          'coordTemp' (temp int)
+0:127          'storeTempPost' (temp 2-component vector of uint)
+0:127        'storeTempPre' (temp 2-component vector of uint)
+0:128      Sequence
+0:128        move second child to first child (temp int)
+0:128          'coordTemp' (temp int)
+0:128          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:128            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:128            Constant:
+0:128              0 (const uint)
+0:128        move second child to first child (temp 2-component vector of int)
+0:128          'storeTempPre' (temp 2-component vector of int)
+0:128          imageLoad (temp 2-component vector of int)
+0:128            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:128            'coordTemp' (temp int)
+0:128        move second child to first child (temp 2-component vector of int)
+0:128          'storeTempPost' (temp 2-component vector of int)
+0:128          'storeTempPre' (temp 2-component vector of int)
+0:128        Post-Increment (temp 2-component vector of int)
+0:128          'storeTempPost' (temp 2-component vector of int)
+0:128        imageStore (temp void)
+0:128          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:128          'coordTemp' (temp int)
+0:128          'storeTempPost' (temp 2-component vector of int)
+0:128        'storeTempPre' (temp 2-component vector of int)
+0:130      Sequence
+0:130        move second child to first child (temp int)
+0:130          'coordTemp' (temp int)
+0:130          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:130            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:130            Constant:
+0:130              0 (const uint)
+0:130        move second child to first child (temp 2-component vector of float)
+0:130          'storeTempPre' (temp 2-component vector of float)
+0:130          imageLoad (temp 2-component vector of float)
+0:130            'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:130            'coordTemp' (temp int)
+0:130        move second child to first child (temp 2-component vector of float)
+0:130          'storeTempPost' (temp 2-component vector of float)
+0:130          'storeTempPre' (temp 2-component vector of float)
+0:130        Post-Decrement (temp 2-component vector of float)
+0:130          'storeTempPost' (temp 2-component vector of float)
+0:130        imageStore (temp void)
+0:130          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:130          'coordTemp' (temp int)
+0:130          'storeTempPost' (temp 2-component vector of float)
+0:130        'storeTempPre' (temp 2-component vector of float)
+0:131      Sequence
+0:131        move second child to first child (temp int)
+0:131          'coordTemp' (temp int)
+0:131          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:131            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:131            Constant:
+0:131              0 (const uint)
+0:131        move second child to first child (temp 2-component vector of int)
+0:131          'storeTempPre' (temp 2-component vector of int)
+0:131          imageLoad (temp 2-component vector of int)
+0:131            'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:131            'coordTemp' (temp int)
+0:131        move second child to first child (temp 2-component vector of int)
+0:131          'storeTempPost' (temp 2-component vector of int)
+0:131          'storeTempPre' (temp 2-component vector of int)
+0:131        Post-Increment (temp 2-component vector of int)
+0:131          'storeTempPost' (temp 2-component vector of int)
+0:131        imageStore (temp void)
+0:131          'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:131          'coordTemp' (temp int)
+0:131          'storeTempPost' (temp 2-component vector of int)
+0:131        'storeTempPre' (temp 2-component vector of int)
+0:132      Sequence
+0:132        move second child to first child (temp int)
+0:132          'coordTemp' (temp int)
+0:132          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:132            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:132            Constant:
+0:132              0 (const uint)
+0:132        move second child to first child (temp 2-component vector of uint)
+0:132          'storeTempPre' (temp 2-component vector of uint)
+0:132          imageLoad (temp 2-component vector of uint)
+0:132            'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:132            'coordTemp' (temp int)
+0:132        move second child to first child (temp 2-component vector of uint)
+0:132          'storeTempPost' (temp 2-component vector of uint)
+0:132          'storeTempPre' (temp 2-component vector of uint)
+0:132        Post-Decrement (temp 2-component vector of uint)
+0:132          'storeTempPost' (temp 2-component vector of uint)
+0:132        imageStore (temp void)
+0:132          'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:132          'coordTemp' (temp int)
+0:132          'storeTempPost' (temp 2-component vector of uint)
+0:132        'storeTempPre' (temp 2-component vector of uint)
+0:135      Sequence
+0:135        move second child to first child (temp 2-component vector of float)
+0:135          'storeTemp' (temp 2-component vector of float)
+0:?           imageLoad (temp 2-component vector of float)
+0:135            'g_tTex2df2' (layout(rg32f ) uniform image2D)
+0:?             Constant:
+0:?               2 (const int)
+0:?               3 (const int)
+0:135        imageStore (temp void)
+0:135          'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:135          Constant:
+0:135            1 (const int)
+0:135          'storeTemp' (temp 2-component vector of float)
+0:135        'storeTemp' (temp 2-component vector of float)
+0:137      move second child to first child (temp 4-component vector of float)
+0:137        Color: direct index for structure (temp 4-component vector of float)
+0:137          'psout' (temp structure{temp 4-component vector of float Color})
+0:137          Constant:
+0:137            0 (const int)
+0:137        Constant:
+0:137          1.000000
+0:137          1.000000
+0:137          1.000000
+0:137          1.000000
+0:139      Sequence
+0:139        Sequence
+0:139          move second child to first child (temp 4-component vector of float)
+0:?             'Color' (layout(location=0 ) out 4-component vector of float)
+0:139            Color: direct index for structure (temp 4-component vector of float)
+0:139              'psout' (temp structure{temp 4-component vector of float Color})
+0:139              Constant:
+0:139                0 (const int)
+0:139        Branch: Return
+0:?   Linker Objects
+0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:?     'g_tTex1df2' (layout(rg32f ) uniform image1D)
+0:?     'g_tTex1di2' (layout(rg32i ) uniform iimage1D)
+0:?     'g_tTex1du2' (layout(rg32ui ) uniform uimage1D)
+0:?     'g_tTex2df2' (layout(rg32f ) uniform image2D)
+0:?     'g_tTex2di2' (layout(rg32i ) uniform iimage2D)
+0:?     'g_tTex2du2' (layout(rg32ui ) uniform uimage2D)
+0:?     'g_tTex3df2' (layout(rg32f ) uniform image3D)
+0:?     'g_tTex3di2' (layout(rg32i ) uniform iimage3D)
+0:?     'g_tTex3du2' (layout(rg32ui ) uniform uimage3D)
+0:?     'g_tTex1df2a' (layout(rg32f ) uniform image1DArray)
+0:?     'g_tTex1di2a' (layout(rg32i ) uniform iimage1DArray)
+0:?     'g_tTex1du2a' (layout(rg32ui ) uniform uimage1DArray)
+0:?     'g_tTex2df2a' (layout(rg32f ) uniform image2DArray)
+0:?     'g_tTex2di2a' (layout(rg32i ) uniform iimage2DArray)
+0:?     'g_tTex2du2a' (layout(rg32ui ) uniform uimage2DArray)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4, layout(offset=96 ) uniform 2-component vector of float uf2, layout(offset=104 ) uniform 2-component vector of int ui2, layout(offset=112 ) uniform 2-component vector of uint uu2})
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 600
+
+                              Capability Shader
+                              Capability Sampled1D
+                              Capability StorageImageExtendedFormats
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 575
+                              ExecutionMode 4 OriginUpperLeft
+                              Name 4  "main"
+                              Name 11  "Fn1(vi2;"
+                              Name 10  "x"
+                              Name 18  "Fn1(vu2;"
+                              Name 17  "x"
+                              Name 25  "Fn1(vf2;"
+                              Name 24  "x"
+                              Name 29  "Fn2(vi2;"
+                              Name 28  "x"
+                              Name 33  "Fn2(vu2;"
+                              Name 32  "x"
+                              Name 37  "Fn2(vf2;"
+                              Name 36  "x"
+                              Name 40  "SomeValue("
+                              Name 59  "$Global"
+                              MemberName 59($Global) 0  "c1"
+                              MemberName 59($Global) 1  "c2"
+                              MemberName 59($Global) 2  "c3"
+                              MemberName 59($Global) 3  "c4"
+                              MemberName 59($Global) 4  "o1"
+                              MemberName 59($Global) 5  "o2"
+                              MemberName 59($Global) 6  "o3"
+                              MemberName 59($Global) 7  "o4"
+                              MemberName 59($Global) 8  "uf2"
+                              MemberName 59($Global) 9  "ui2"
+                              MemberName 59($Global) 10  "uu2"
+                              Name 61  ""
+                              Name 71  "g_tTex1df2"
+                              Name 77  "r00"
+                              Name 82  "r01"
+                              Name 85  "g_tTex1di2"
+                              Name 90  "r02"
+                              Name 93  "g_tTex1du2"
+                              Name 98  "r10"
+                              Name 101  "g_tTex2df2"
+                              Name 106  "r11"
+                              Name 109  "g_tTex2di2"
+                              Name 114  "r12"
+                              Name 117  "g_tTex2du2"
+                              Name 122  "r20"
+                              Name 125  "g_tTex3df2"
+                              Name 132  "r21"
+                              Name 135  "g_tTex3di2"
+                              Name 140  "r22"
+                              Name 143  "g_tTex3du2"
+                              Name 148  "lf2"
+                              Name 153  "storeTemp"
+                              Name 163  "storeTemp"
+                              Name 169  "storeTemp"
+                              Name 177  "val1"
+                              Name 179  "coordTemp"
+                              Name 182  "storeTemp"
+                              Name 193  "coordTemp"
+                              Name 196  "storeTemp"
+                              Name 207  "coordTemp"
+                              Name 210  "storeTemp"
+                              Name 221  "coordTemp"
+                              Name 224  "storeTemp"
+                              Name 234  "coordTemp"
+                              Name 237  "storeTemp"
+                              Name 247  "coordTemp"
+                              Name 250  "storeTemp"
+                              Name 261  "coordTemp"
+                              Name 264  "storeTemp"
+                              Name 275  "coordTemp"
+                              Name 278  "storeTemp"
+                              Name 288  "coordTemp"
+                              Name 291  "storeTemp"
+                              Name 301  "storeTemp"
+                              Name 311  "storeTemp"
+                              Name 318  "storeTemp"
+                              Name 325  "storeTemp"
+                              Name 335  "storeTemp"
+                              Name 342  "storeTemp"
+                              Name 353  "param"
+                              Name 359  "param"
+                              Name 365  "param"
+                              Name 367  "tempArg"
+                              Name 368  "param"
+                              Name 375  "tempArg"
+                              Name 376  "param"
+                              Name 383  "tempArg"
+                              Name 384  "param"
+                              Name 391  "coordTemp"
+                              Name 394  "storeTemp"
+                              Name 405  "coordTemp"
+                              Name 408  "storeTemp"
+                              Name 418  "coordTemp"
+                              Name 421  "storeTemp"
+                              Name 431  "coordTemp"
+                              Name 434  "storeTemp"
+                              Name 444  "coordTemp"
+                              Name 447  "storeTemp"
+                              Name 457  "coordTemp"
+                              Name 460  "storeTemp"
+                              Name 470  "coordTemp"
+                              Name 473  "storeTempPre"
+                              Name 477  "storeTempPost"
+                              Name 485  "coordTemp"
+                              Name 488  "storeTempPre"
+                              Name 492  "storeTempPost"
+                              Name 500  "coordTemp"
+                              Name 503  "storeTempPre"
+                              Name 507  "storeTempPost"
+                              Name 515  "coordTemp"
+                              Name 518  "storeTempPre"
+                              Name 522  "storeTempPost"
+                              Name 530  "coordTemp"
+                              Name 533  "storeTempPre"
+                              Name 537  "storeTempPost"
+                              Name 545  "coordTemp"
+                              Name 548  "storeTempPre"
+                              Name 552  "storeTempPost"
+                              Name 560  "storeTemp"
+                              Name 568  "PS_OUTPUT"
+                              MemberName 568(PS_OUTPUT) 0  "Color"
+                              Name 570  "psout"
+                              Name 575  "Color"
+                              Name 581  "g_sSamp"
+                              Name 584  "g_tTex1df2a"
+                              Name 587  "g_tTex1di2a"
+                              Name 590  "g_tTex1du2a"
+                              Name 593  "g_tTex2df2a"
+                              Name 596  "g_tTex2di2a"
+                              Name 599  "g_tTex2du2a"
+                              MemberDecorate 59($Global) 0 Offset 0
+                              MemberDecorate 59($Global) 1 Offset 8
+                              MemberDecorate 59($Global) 2 Offset 16
+                              MemberDecorate 59($Global) 3 Offset 32
+                              MemberDecorate 59($Global) 4 Offset 48
+                              MemberDecorate 59($Global) 5 Offset 56
+                              MemberDecorate 59($Global) 6 Offset 64
+                              MemberDecorate 59($Global) 7 Offset 80
+                              MemberDecorate 59($Global) 8 Offset 96
+                              MemberDecorate 59($Global) 9 Offset 104
+                              MemberDecorate 59($Global) 10 Offset 112
+                              Decorate 59($Global) Block
+                              Decorate 61 DescriptorSet 0
+                              Decorate 71(g_tTex1df2) DescriptorSet 0
+                              Decorate 85(g_tTex1di2) DescriptorSet 0
+                              Decorate 93(g_tTex1du2) DescriptorSet 0
+                              Decorate 101(g_tTex2df2) DescriptorSet 0
+                              Decorate 109(g_tTex2di2) DescriptorSet 0
+                              Decorate 117(g_tTex2du2) DescriptorSet 0
+                              Decorate 125(g_tTex3df2) DescriptorSet 0
+                              Decorate 135(g_tTex3di2) DescriptorSet 0
+                              Decorate 143(g_tTex3du2) DescriptorSet 0
+                              Decorate 575(Color) Location 0
+                              Decorate 581(g_sSamp) DescriptorSet 0
+                              Decorate 581(g_sSamp) Binding 0
+                              Decorate 584(g_tTex1df2a) DescriptorSet 0
+                              Decorate 587(g_tTex1di2a) DescriptorSet 0
+                              Decorate 590(g_tTex1du2a) DescriptorSet 0
+                              Decorate 593(g_tTex2df2a) DescriptorSet 0
+                              Decorate 596(g_tTex2di2a) DescriptorSet 0
+                              Decorate 599(g_tTex2du2a) DescriptorSet 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypeVector 6(int) 2
+               8:             TypePointer Function 7(ivec2)
+               9:             TypeFunction 7(ivec2) 8(ptr)
+              13:             TypeInt 32 0
+              14:             TypeVector 13(int) 2
+              15:             TypePointer Function 14(ivec2)
+              16:             TypeFunction 14(ivec2) 15(ptr)
+              20:             TypeFloat 32
+              21:             TypeVector 20(float) 2
+              22:             TypePointer Function 21(fvec2)
+              23:             TypeFunction 21(fvec2) 22(ptr)
+              27:             TypeFunction 2 8(ptr)
+              31:             TypeFunction 2 15(ptr)
+              35:             TypeFunction 2 22(ptr)
+              39:             TypeFunction 21(fvec2)
+              51:      6(int) Constant 0
+              52:    7(ivec2) ConstantComposite 51 51
+              53:     13(int) Constant 0
+              54:   14(ivec2) ConstantComposite 53 53
+              55:   20(float) Constant 0
+              56:   21(fvec2) ConstantComposite 55 55
+              57:             TypeVector 6(int) 3
+              58:             TypeVector 6(int) 4
+     59($Global):             TypeStruct 6(int) 7(ivec2) 57(ivec3) 58(ivec4) 6(int) 7(ivec2) 57(ivec3) 58(ivec4) 21(fvec2) 7(ivec2) 14(ivec2)
+              60:             TypePointer Uniform 59($Global)
+              61:     60(ptr) Variable Uniform
+              62:      6(int) Constant 1
+              63:             TypePointer Uniform 7(ivec2)
+              69:             TypeImage 20(float) 1D nonsampled format:Rg32f
+              70:             TypePointer UniformConstant 69
+  71(g_tTex1df2):     70(ptr) Variable UniformConstant
+              73:             TypePointer Uniform 6(int)
+              83:             TypeImage 6(int) 1D nonsampled format:Rg32i
+              84:             TypePointer UniformConstant 83
+  85(g_tTex1di2):     84(ptr) Variable UniformConstant
+              91:             TypeImage 13(int) 1D nonsampled format:Rg32ui
+              92:             TypePointer UniformConstant 91
+  93(g_tTex1du2):     92(ptr) Variable UniformConstant
+              99:             TypeImage 20(float) 2D nonsampled format:Rg32f
+             100:             TypePointer UniformConstant 99
+ 101(g_tTex2df2):    100(ptr) Variable UniformConstant
+             107:             TypeImage 6(int) 2D nonsampled format:Rg32i
+             108:             TypePointer UniformConstant 107
+ 109(g_tTex2di2):    108(ptr) Variable UniformConstant
+             115:             TypeImage 13(int) 2D nonsampled format:Rg32ui
+             116:             TypePointer UniformConstant 115
+ 117(g_tTex2du2):    116(ptr) Variable UniformConstant
+             123:             TypeImage 20(float) 3D nonsampled format:Rg32f
+             124:             TypePointer UniformConstant 123
+ 125(g_tTex3df2):    124(ptr) Variable UniformConstant
+             127:      6(int) Constant 2
+             128:             TypePointer Uniform 57(ivec3)
+             133:             TypeImage 6(int) 3D nonsampled format:Rg32i
+             134:             TypePointer UniformConstant 133
+ 135(g_tTex3di2):    134(ptr) Variable UniformConstant
+             141:             TypeImage 13(int) 3D nonsampled format:Rg32ui
+             142:             TypePointer UniformConstant 141
+ 143(g_tTex3du2):    142(ptr) Variable UniformConstant
+             149:      6(int) Constant 8
+             150:             TypePointer Uniform 21(fvec2)
+             164:    7(ivec2) ConstantComposite 127 127
+             170:     13(int) Constant 3
+             171:     13(int) Constant 2
+             172:   14(ivec2) ConstantComposite 170 171
+             178:             TypePointer Function 6(int)
+             186:   20(float) Constant 1073741824
+             200:   20(float) Constant 1077936128
+             214:   20(float) Constant 1082130432
+             254:      6(int) Constant 65535
+             268:      6(int) Constant 61680
+             312:      6(int) Constant 5
+             313:    7(ivec2) ConstantComposite 312 127
+             319:     13(int) Constant 6
+             320:   14(ivec2) ConstantComposite 319 171
+             336:      6(int) Constant 6
+             337:    7(ivec2) ConstantComposite 149 336
+             343:     13(int) Constant 9
+             344:   14(ivec2) ConstantComposite 343 171
+             399:   20(float) Constant 1065353216
+             562:      6(int) Constant 3
+             563:    7(ivec2) ConstantComposite 127 562
+             567:             TypeVector 20(float) 4
+  568(PS_OUTPUT):             TypeStruct 567(fvec4)
+             569:             TypePointer Function 568(PS_OUTPUT)
+             571:  567(fvec4) ConstantComposite 399 399 399 399
+             572:             TypePointer Function 567(fvec4)
+             574:             TypePointer Output 567(fvec4)
+      575(Color):    574(ptr) Variable Output
+             579:             TypeSampler
+             580:             TypePointer UniformConstant 579
+    581(g_sSamp):    580(ptr) Variable UniformConstant
+             582:             TypeImage 20(float) 1D array nonsampled format:Rg32f
+             583:             TypePointer UniformConstant 582
+584(g_tTex1df2a):    583(ptr) Variable UniformConstant
+             585:             TypeImage 6(int) 1D array nonsampled format:Rg32i
+             586:             TypePointer UniformConstant 585
+587(g_tTex1di2a):    586(ptr) Variable UniformConstant
+             588:             TypeImage 13(int) 1D array nonsampled format:Rg32ui
+             589:             TypePointer UniformConstant 588
+590(g_tTex1du2a):    589(ptr) Variable UniformConstant
+             591:             TypeImage 20(float) 2D array nonsampled format:Rg32f
+             592:             TypePointer UniformConstant 591
+593(g_tTex2df2a):    592(ptr) Variable UniformConstant
+             594:             TypeImage 6(int) 2D array nonsampled format:Rg32i
+             595:             TypePointer UniformConstant 594
+596(g_tTex2di2a):    595(ptr) Variable UniformConstant
+             597:             TypeImage 13(int) 2D array nonsampled format:Rg32ui
+             598:             TypePointer UniformConstant 597
+599(g_tTex2du2a):    598(ptr) Variable UniformConstant
+         4(main):           2 Function None 3
+               5:             Label
+         77(r00):     22(ptr) Variable Function
+         82(r01):      8(ptr) Variable Function
+         90(r02):     15(ptr) Variable Function
+         98(r10):     22(ptr) Variable Function
+        106(r11):      8(ptr) Variable Function
+        114(r12):     15(ptr) Variable Function
+        122(r20):     22(ptr) Variable Function
+        132(r21):      8(ptr) Variable Function
+        140(r22):     15(ptr) Variable Function
+        148(lf2):     22(ptr) Variable Function
+  153(storeTemp):     22(ptr) Variable Function
+  163(storeTemp):      8(ptr) Variable Function
+  169(storeTemp):     15(ptr) Variable Function
+       177(val1):     22(ptr) Variable Function
+  179(coordTemp):    178(ptr) Variable Function
+  182(storeTemp):     22(ptr) Variable Function
+  193(coordTemp):    178(ptr) Variable Function
+  196(storeTemp):     22(ptr) Variable Function
+  207(coordTemp):    178(ptr) Variable Function
+  210(storeTemp):     22(ptr) Variable Function
+  221(coordTemp):    178(ptr) Variable Function
+  224(storeTemp):      8(ptr) Variable Function
+  234(coordTemp):    178(ptr) Variable Function
+  237(storeTemp):      8(ptr) Variable Function
+  247(coordTemp):    178(ptr) Variable Function
+  250(storeTemp):      8(ptr) Variable Function
+  261(coordTemp):    178(ptr) Variable Function
+  264(storeTemp):      8(ptr) Variable Function
+  275(coordTemp):    178(ptr) Variable Function
+  278(storeTemp):      8(ptr) Variable Function
+  288(coordTemp):    178(ptr) Variable Function
+  291(storeTemp):      8(ptr) Variable Function
+  301(storeTemp):     22(ptr) Variable Function
+  311(storeTemp):      8(ptr) Variable Function
+  318(storeTemp):     15(ptr) Variable Function
+  325(storeTemp):     22(ptr) Variable Function
+  335(storeTemp):      8(ptr) Variable Function
+  342(storeTemp):     15(ptr) Variable Function
+      353(param):     22(ptr) Variable Function
+      359(param):      8(ptr) Variable Function
+      365(param):     15(ptr) Variable Function
+    367(tempArg):     22(ptr) Variable Function
+      368(param):     22(ptr) Variable Function
+    375(tempArg):      8(ptr) Variable Function
+      376(param):      8(ptr) Variable Function
+    383(tempArg):     15(ptr) Variable Function
+      384(param):     15(ptr) Variable Function
+  391(coordTemp):    178(ptr) Variable Function
+  394(storeTemp):     22(ptr) Variable Function
+  405(coordTemp):    178(ptr) Variable Function
+  408(storeTemp):      8(ptr) Variable Function
+  418(coordTemp):    178(ptr) Variable Function
+  421(storeTemp):     15(ptr) Variable Function
+  431(coordTemp):    178(ptr) Variable Function
+  434(storeTemp):     22(ptr) Variable Function
+  444(coordTemp):    178(ptr) Variable Function
+  447(storeTemp):      8(ptr) Variable Function
+  457(coordTemp):    178(ptr) Variable Function
+  460(storeTemp):     15(ptr) Variable Function
+  470(coordTemp):    178(ptr) Variable Function
+473(storeTempPre):     22(ptr) Variable Function
+477(storeTempPost):     22(ptr) Variable Function
+  485(coordTemp):    178(ptr) Variable Function
+488(storeTempPre):     15(ptr) Variable Function
+492(storeTempPost):     15(ptr) Variable Function
+  500(coordTemp):    178(ptr) Variable Function
+503(storeTempPre):      8(ptr) Variable Function
+507(storeTempPost):      8(ptr) Variable Function
+  515(coordTemp):    178(ptr) Variable Function
+518(storeTempPre):     22(ptr) Variable Function
+522(storeTempPost):     22(ptr) Variable Function
+  530(coordTemp):    178(ptr) Variable Function
+533(storeTempPre):      8(ptr) Variable Function
+537(storeTempPost):      8(ptr) Variable Function
+  545(coordTemp):    178(ptr) Variable Function
+548(storeTempPre):     15(ptr) Variable Function
+552(storeTempPost):     15(ptr) Variable Function
+  560(storeTemp):     22(ptr) Variable Function
+      570(psout):    569(ptr) Variable Function
+              72:          69 Load 71(g_tTex1df2)
+              74:     73(ptr) AccessChain 61 51
+              75:      6(int) Load 74
+              76:   21(fvec2) ImageRead 72 75
+              78:          69 Load 71(g_tTex1df2)
+              79:     73(ptr) AccessChain 61 51
+              80:      6(int) Load 79
+              81:   21(fvec2) ImageRead 78 80
+                              Store 77(r00) 81
+              86:          83 Load 85(g_tTex1di2)
+              87:     73(ptr) AccessChain 61 51
+              88:      6(int) Load 87
+              89:    7(ivec2) ImageRead 86 88
+                              Store 82(r01) 89
+              94:          91 Load 93(g_tTex1du2)
+              95:     73(ptr) AccessChain 61 51
+              96:      6(int) Load 95
+              97:   14(ivec2) ImageRead 94 96
+                              Store 90(r02) 97
+             102:          99 Load 101(g_tTex2df2)
+             103:     63(ptr) AccessChain 61 62
+             104:    7(ivec2) Load 103
+             105:   21(fvec2) ImageRead 102 104
+                              Store 98(r10) 105
+             110:         107 Load 109(g_tTex2di2)
+             111:     63(ptr) AccessChain 61 62
+             112:    7(ivec2) Load 111
+             113:    7(ivec2) ImageRead 110 112
+                              Store 106(r11) 113
+             118:         115 Load 117(g_tTex2du2)
+             119:     63(ptr) AccessChain 61 62
+             120:    7(ivec2) Load 119
+             121:   14(ivec2) ImageRead 118 120
+                              Store 114(r12) 121
+             126:         123 Load 125(g_tTex3df2)
+             129:    128(ptr) AccessChain 61 127
+             130:   57(ivec3) Load 129
+             131:   21(fvec2) ImageRead 126 130
+                              Store 122(r20) 131
+             136:         133 Load 135(g_tTex3di2)
+             137:    128(ptr) AccessChain 61 127
+             138:   57(ivec3) Load 137
+             139:    7(ivec2) ImageRead 136 138
+                              Store 132(r21) 139
+             144:         141 Load 143(g_tTex3du2)
+             145:    128(ptr) AccessChain 61 127
+             146:   57(ivec3) Load 145
+             147:   14(ivec2) ImageRead 144 146
+                              Store 140(r22) 147
+             151:    150(ptr) AccessChain 61 149
+             152:   21(fvec2) Load 151
+                              Store 148(lf2) 152
+             154:   21(fvec2) FunctionCall 40(SomeValue()
+                              Store 153(storeTemp) 154
+             155:          69 Load 71(g_tTex1df2)
+             156:     73(ptr) AccessChain 61 51
+             157:      6(int) Load 156
+             158:   21(fvec2) Load 153(storeTemp)
+                              ImageWrite 155 157 158
+             159:          69 Load 71(g_tTex1df2)
+             160:     73(ptr) AccessChain 61 51
+             161:      6(int) Load 160
+             162:   21(fvec2) Load 148(lf2)
+                              ImageWrite 159 161 162
+                              Store 163(storeTemp) 164
+             165:          83 Load 85(g_tTex1di2)
+             166:     73(ptr) AccessChain 61 51
+             167:      6(int) Load 166
+             168:    7(ivec2) Load 163(storeTemp)
+                              ImageWrite 165 167 168
+                              Store 169(storeTemp) 172
+             173:          91 Load 93(g_tTex1du2)
+             174:     73(ptr) AccessChain 61 51
+             175:      6(int) Load 174
+             176:   14(ivec2) Load 169(storeTemp)
+                              ImageWrite 173 175 176
+             180:     73(ptr) AccessChain 61 51
+             181:      6(int) Load 180
+                              Store 179(coordTemp) 181
+             183:          69 Load 71(g_tTex1df2)
+             184:      6(int) Load 179(coordTemp)
+             185:   21(fvec2) ImageRead 183 184
+                              Store 182(storeTemp) 185
+             187:   21(fvec2) Load 182(storeTemp)
+             188:   21(fvec2) VectorTimesScalar 187 186
+                              Store 182(storeTemp) 188
+             189:          69 Load 71(g_tTex1df2)
+             190:      6(int) Load 179(coordTemp)
+             191:   21(fvec2) Load 182(storeTemp)
+                              ImageWrite 189 190 191
+             192:   21(fvec2) Load 182(storeTemp)
+                              Store 177(val1) 192
+             194:     73(ptr) AccessChain 61 51
+             195:      6(int) Load 194
+                              Store 193(coordTemp) 195
+             197:          69 Load 71(g_tTex1df2)
+             198:      6(int) Load 193(coordTemp)
+             199:   21(fvec2) ImageRead 197 198
+                              Store 196(storeTemp) 199
+             201:   21(fvec2) Load 196(storeTemp)
+             202:   21(fvec2) CompositeConstruct 200 200
+             203:   21(fvec2) FSub 201 202
+                              Store 196(storeTemp) 203
+             204:          69 Load 71(g_tTex1df2)
+             205:      6(int) Load 193(coordTemp)
+             206:   21(fvec2) Load 196(storeTemp)
+                              ImageWrite 204 205 206
+             208:     73(ptr) AccessChain 61 51
+             209:      6(int) Load 208
+                              Store 207(coordTemp) 209
+             211:          69 Load 71(g_tTex1df2)
+             212:      6(int) Load 207(coordTemp)
+             213:   21(fvec2) ImageRead 211 212
+                              Store 210(storeTemp) 213
+             215:   21(fvec2) Load 210(storeTemp)
+             216:   21(fvec2) CompositeConstruct 214 214
+             217:   21(fvec2) FAdd 215 216
+                              Store 210(storeTemp) 217
+             218:          69 Load 71(g_tTex1df2)
+             219:      6(int) Load 207(coordTemp)
+             220:   21(fvec2) Load 210(storeTemp)
+                              ImageWrite 218 219 220
+             222:     73(ptr) AccessChain 61 51
+             223:      6(int) Load 222
+                              Store 221(coordTemp) 223
+             225:          83 Load 85(g_tTex1di2)
+             226:      6(int) Load 221(coordTemp)
+             227:    7(ivec2) ImageRead 225 226
+                              Store 224(storeTemp) 227
+             228:    7(ivec2) Load 224(storeTemp)
+             229:    7(ivec2) CompositeConstruct 127 127
+             230:    7(ivec2) SDiv 228 229
+                              Store 224(storeTemp) 230
+             231:          83 Load 85(g_tTex1di2)
+             232:      6(int) Load 221(coordTemp)
+             233:    7(ivec2) Load 224(storeTemp)
+                              ImageWrite 231 232 233
+             235:     73(ptr) AccessChain 61 51
+             236:      6(int) Load 235
+                              Store 234(coordTemp) 236
+             238:          83 Load 85(g_tTex1di2)
+             239:      6(int) Load 234(coordTemp)
+             240:    7(ivec2) ImageRead 238 239
+                              Store 237(storeTemp) 240
+             241:    7(ivec2) Load 237(storeTemp)
+             242:    7(ivec2) CompositeConstruct 127 127
+             243:    7(ivec2) SMod 241 242
+                              Store 237(storeTemp) 243
+             244:          83 Load 85(g_tTex1di2)
+             245:      6(int) Load 234(coordTemp)
+             246:    7(ivec2) Load 237(storeTemp)
+                              ImageWrite 244 245 246
+             248:     73(ptr) AccessChain 61 51
+             249:      6(int) Load 248
+                              Store 247(coordTemp) 249
+             251:          83 Load 85(g_tTex1di2)
+             252:      6(int) Load 247(coordTemp)
+             253:    7(ivec2) ImageRead 251 252
+                              Store 250(storeTemp) 253
+             255:    7(ivec2) Load 250(storeTemp)
+             256:    7(ivec2) CompositeConstruct 254 254
+             257:    7(ivec2) BitwiseAnd 255 256
+                              Store 250(storeTemp) 257
+             258:          83 Load 85(g_tTex1di2)
+             259:      6(int) Load 247(coordTemp)
+             260:    7(ivec2) Load 250(storeTemp)
+                              ImageWrite 258 259 260
+             262:     73(ptr) AccessChain 61 51
+             263:      6(int) Load 262
+                              Store 261(coordTemp) 263
+             265:          83 Load 85(g_tTex1di2)
+             266:      6(int) Load 261(coordTemp)
+             267:    7(ivec2) ImageRead 265 266
+                              Store 264(storeTemp) 267
+             269:    7(ivec2) Load 264(storeTemp)
+             270:    7(ivec2) CompositeConstruct 268 268
+             271:    7(ivec2) BitwiseOr 269 270
+                              Store 264(storeTemp) 271
+             272:          83 Load 85(g_tTex1di2)
+             273:      6(int) Load 261(coordTemp)
+             274:    7(ivec2) Load 264(storeTemp)
+                              ImageWrite 272 273 274
+             276:     73(ptr) AccessChain 61 51
+             277:      6(int) Load 276
+                              Store 275(coordTemp) 277
+             279:          83 Load 85(g_tTex1di2)
+             280:      6(int) Load 275(coordTemp)
+             281:    7(ivec2) ImageRead 279 280
+                              Store 278(storeTemp) 281
+             282:    7(ivec2) Load 278(storeTemp)
+             283:    7(ivec2) CompositeConstruct 127 127
+             284:    7(ivec2) ShiftLeftLogical 282 283
+                              Store 278(storeTemp) 284
+             285:          83 Load 85(g_tTex1di2)
+             286:      6(int) Load 275(coordTemp)
+             287:    7(ivec2) Load 278(storeTemp)
+                              ImageWrite 285 286 287
+             289:     73(ptr) AccessChain 61 51
+             290:      6(int) Load 289
+                              Store 288(coordTemp) 290
+             292:          83 Load 85(g_tTex1di2)
+             293:      6(int) Load 288(coordTemp)
+             294:    7(ivec2) ImageRead 292 293
+                              Store 291(storeTemp) 294
+             295:    7(ivec2) Load 291(storeTemp)
+             296:    7(ivec2) CompositeConstruct 127 127
+             297:    7(ivec2) ShiftRightArithmetic 295 296
+                              Store 291(storeTemp) 297
+             298:          83 Load 85(g_tTex1di2)
+             299:      6(int) Load 288(coordTemp)
+             300:    7(ivec2) Load 291(storeTemp)
+                              ImageWrite 298 299 300
+             302:   21(fvec2) FunctionCall 40(SomeValue()
+                              Store 301(storeTemp) 302
+             303:          99 Load 101(g_tTex2df2)
+             304:     63(ptr) AccessChain 61 62
+             305:    7(ivec2) Load 304
+             306:   21(fvec2) Load 301(storeTemp)
+                              ImageWrite 303 305 306
+             307:          99 Load 101(g_tTex2df2)
+             308:     63(ptr) AccessChain 61 62
+             309:    7(ivec2) Load 308
+             310:   21(fvec2) Load 148(lf2)
+                              ImageWrite 307 309 310
+                              Store 311(storeTemp) 313
+             314:         107 Load 109(g_tTex2di2)
+             315:     63(ptr) AccessChain 61 62
+             316:    7(ivec2) Load 315
+             317:    7(ivec2) Load 311(storeTemp)
+                              ImageWrite 314 316 317
+                              Store 318(storeTemp) 320
+             321:         115 Load 117(g_tTex2du2)
+             322:     63(ptr) AccessChain 61 62
+             323:    7(ivec2) Load 322
+             324:   14(ivec2) Load 318(storeTemp)
+                              ImageWrite 321 323 324
+             326:   21(fvec2) FunctionCall 40(SomeValue()
+                              Store 325(storeTemp) 326
+             327:         123 Load 125(g_tTex3df2)
+             328:    128(ptr) AccessChain 61 127
+             329:   57(ivec3) Load 328
+             330:   21(fvec2) Load 325(storeTemp)
+                              ImageWrite 327 329 330
+             331:         123 Load 125(g_tTex3df2)
+             332:    128(ptr) AccessChain 61 127
+             333:   57(ivec3) Load 332
+             334:   21(fvec2) Load 148(lf2)
+                              ImageWrite 331 333 334
+                              Store 335(storeTemp) 337
+             338:         133 Load 135(g_tTex3di2)
+             339:    128(ptr) AccessChain 61 127
+             340:   57(ivec3) Load 339
+             341:    7(ivec2) Load 335(storeTemp)
+                              ImageWrite 338 340 341
+                              Store 342(storeTemp) 344
+             345:         141 Load 143(g_tTex3du2)
+             346:    128(ptr) AccessChain 61 127
+             347:   57(ivec3) Load 346
+             348:   14(ivec2) Load 342(storeTemp)
+                              ImageWrite 345 347 348
+             349:          69 Load 71(g_tTex1df2)
+             350:     73(ptr) AccessChain 61 51
+             351:      6(int) Load 350
+             352:   21(fvec2) ImageRead 349 351
+                              Store 353(param) 352
+             354:   21(fvec2) FunctionCall 25(Fn1(vf2;) 353(param)
+             355:          83 Load 85(g_tTex1di2)
+             356:     73(ptr) AccessChain 61 51
+             357:      6(int) Load 356
+             358:    7(ivec2) ImageRead 355 357
+                              Store 359(param) 358
+             360:    7(ivec2) FunctionCall 11(Fn1(vi2;) 359(param)
+             361:          91 Load 93(g_tTex1du2)
+             362:     73(ptr) AccessChain 61 51
+             363:      6(int) Load 362
+             364:   14(ivec2) ImageRead 361 363
+                              Store 365(param) 364
+             366:   14(ivec2) FunctionCall 18(Fn1(vu2;) 365(param)
+             369:           2 FunctionCall 37(Fn2(vf2;) 368(param)
+             370:   21(fvec2) Load 368(param)
+                              Store 367(tempArg) 370
+             371:          69 Load 71(g_tTex1df2)
+             372:     73(ptr) AccessChain 61 51
+             373:      6(int) Load 372
+             374:   21(fvec2) Load 367(tempArg)
+                              ImageWrite 371 373 374
+             377:           2 FunctionCall 29(Fn2(vi2;) 376(param)
+             378:    7(ivec2) Load 376(param)
+                              Store 375(tempArg) 378
+             379:          83 Load 85(g_tTex1di2)
+             380:     73(ptr) AccessChain 61 51
+             381:      6(int) Load 380
+             382:    7(ivec2) Load 375(tempArg)
+                              ImageWrite 379 381 382
+             385:           2 FunctionCall 33(Fn2(vu2;) 384(param)
+             386:   14(ivec2) Load 384(param)
+                              Store 383(tempArg) 386
+             387:          91 Load 93(g_tTex1du2)
+             388:     73(ptr) AccessChain 61 51
+             389:      6(int) Load 388
+             390:   14(ivec2) Load 383(tempArg)
+                              ImageWrite 387 389 390
+             392:     73(ptr) AccessChain 61 51
+             393:      6(int) Load 392
+                              Store 391(coordTemp) 393
+             395:          69 Load 71(g_tTex1df2)
+             396:      6(int) Load 391(coordTemp)
+             397:   21(fvec2) ImageRead 395 396
+                              Store 394(storeTemp) 397
+             398:   21(fvec2) Load 394(storeTemp)
+             400:   21(fvec2) CompositeConstruct 399 399
+             401:   21(fvec2) FAdd 398 400
+                              Store 394(storeTemp) 401
+             402:          69 Load 71(g_tTex1df2)
+             403:      6(int) Load 391(coordTemp)
+             404:   21(fvec2) Load 394(storeTemp)
+                              ImageWrite 402 403 404
+             406:     73(ptr) AccessChain 61 51
+             407:      6(int) Load 406
+                              Store 405(coordTemp) 407
+             409:          83 Load 85(g_tTex1di2)
+             410:      6(int) Load 405(coordTemp)
+             411:    7(ivec2) ImageRead 409 410
+                              Store 408(storeTemp) 411
+             412:    7(ivec2) Load 408(storeTemp)
+             413:    7(ivec2) CompositeConstruct 62 62
+             414:    7(ivec2) IAdd 412 413
+                              Store 408(storeTemp) 414
+             415:          83 Load 85(g_tTex1di2)
+             416:      6(int) Load 405(coordTemp)
+             417:    7(ivec2) Load 408(storeTemp)
+                              ImageWrite 415 416 417
+             419:     73(ptr) AccessChain 61 51
+             420:      6(int) Load 419
+                              Store 418(coordTemp) 420
+             422:          91 Load 93(g_tTex1du2)
+             423:      6(int) Load 418(coordTemp)
+             424:   14(ivec2) ImageRead 422 423
+                              Store 421(storeTemp) 424
+             425:   14(ivec2) Load 421(storeTemp)
+             426:    7(ivec2) CompositeConstruct 62 62
+             427:   14(ivec2) IAdd 425 426
+                              Store 421(storeTemp) 427
+             428:          91 Load 93(g_tTex1du2)
+             429:      6(int) Load 418(coordTemp)
+             430:   14(ivec2) Load 421(storeTemp)
+                              ImageWrite 428 429 430
+             432:     73(ptr) AccessChain 61 51
+             433:      6(int) Load 432
+                              Store 431(coordTemp) 433
+             435:          69 Load 71(g_tTex1df2)
+             436:      6(int) Load 431(coordTemp)
+             437:   21(fvec2) ImageRead 435 436
+                              Store 434(storeTemp) 437
+             438:   21(fvec2) Load 434(storeTemp)
+             439:   21(fvec2) CompositeConstruct 399 399
+             440:   21(fvec2) FSub 438 439
+                              Store 434(storeTemp) 440
+             441:          69 Load 71(g_tTex1df2)
+             442:      6(int) Load 431(coordTemp)
+             443:   21(fvec2) Load 434(storeTemp)
+                              ImageWrite 441 442 443
+             445:     73(ptr) AccessChain 61 51
+             446:      6(int) Load 445
+                              Store 444(coordTemp) 446
+             448:          83 Load 85(g_tTex1di2)
+             449:      6(int) Load 444(coordTemp)
+             450:    7(ivec2) ImageRead 448 449
+                              Store 447(storeTemp) 450
+             451:    7(ivec2) Load 447(storeTemp)
+             452:    7(ivec2) CompositeConstruct 62 62
+             453:    7(ivec2) ISub 451 452
+                              Store 447(storeTemp) 453
+             454:          83 Load 85(g_tTex1di2)
+             455:      6(int) Load 444(coordTemp)
+             456:    7(ivec2) Load 447(storeTemp)
+                              ImageWrite 454 455 456
+             458:     73(ptr) AccessChain 61 51
+             459:      6(int) Load 458
+                              Store 457(coordTemp) 459
+             461:          91 Load 93(g_tTex1du2)
+             462:      6(int) Load 457(coordTemp)
+             463:   14(ivec2) ImageRead 461 462
+                              Store 460(storeTemp) 463
+             464:   14(ivec2) Load 460(storeTemp)
+             465:    7(ivec2) CompositeConstruct 62 62
+             466:   14(ivec2) ISub 464 465
+                              Store 460(storeTemp) 466
+             467:          91 Load 93(g_tTex1du2)
+             468:      6(int) Load 457(coordTemp)
+             469:   14(ivec2) Load 460(storeTemp)
+                              ImageWrite 467 468 469
+             471:     73(ptr) AccessChain 61 51
+             472:      6(int) Load 471
+                              Store 470(coordTemp) 472
+             474:          69 Load 71(g_tTex1df2)
+             475:      6(int) Load 470(coordTemp)
+             476:   21(fvec2) ImageRead 474 475
+                              Store 473(storeTempPre) 476
+             478:   21(fvec2) Load 473(storeTempPre)
+                              Store 477(storeTempPost) 478
+             479:   21(fvec2) Load 477(storeTempPost)
+             480:   21(fvec2) CompositeConstruct 399 399
+             481:   21(fvec2) FAdd 479 480
+                              Store 477(storeTempPost) 481
+             482:          69 Load 71(g_tTex1df2)
+             483:      6(int) Load 470(coordTemp)
+             484:   21(fvec2) Load 477(storeTempPost)
+                              ImageWrite 482 483 484
+             486:     73(ptr) AccessChain 61 51
+             487:      6(int) Load 486
+                              Store 485(coordTemp) 487
+             489:          91 Load 93(g_tTex1du2)
+             490:      6(int) Load 485(coordTemp)
+             491:   14(ivec2) ImageRead 489 490
+                              Store 488(storeTempPre) 491
+             493:   14(ivec2) Load 488(storeTempPre)
+                              Store 492(storeTempPost) 493
+             494:   14(ivec2) Load 492(storeTempPost)
+             495:    7(ivec2) CompositeConstruct 62 62
+             496:   14(ivec2) ISub 494 495
+                              Store 492(storeTempPost) 496
+             497:          91 Load 93(g_tTex1du2)
+             498:      6(int) Load 485(coordTemp)
+             499:   14(ivec2) Load 492(storeTempPost)
+                              ImageWrite 497 498 499
+             501:     73(ptr) AccessChain 61 51
+             502:      6(int) Load 501
+                              Store 500(coordTemp) 502
+             504:          83 Load 85(g_tTex1di2)
+             505:      6(int) Load 500(coordTemp)
+             506:    7(ivec2) ImageRead 504 505
+                              Store 503(storeTempPre) 506
+             508:    7(ivec2) Load 503(storeTempPre)
+                              Store 507(storeTempPost) 508
+             509:    7(ivec2) Load 507(storeTempPost)
+             510:    7(ivec2) CompositeConstruct 62 62
+             511:    7(ivec2) IAdd 509 510
+                              Store 507(storeTempPost) 511
+             512:          83 Load 85(g_tTex1di2)
+             513:      6(int) Load 500(coordTemp)
+             514:    7(ivec2) Load 507(storeTempPost)
+                              ImageWrite 512 513 514
+             516:     73(ptr) AccessChain 61 51
+             517:      6(int) Load 516
+                              Store 515(coordTemp) 517
+             519:          69 Load 71(g_tTex1df2)
+             520:      6(int) Load 515(coordTemp)
+             521:   21(fvec2) ImageRead 519 520
+                              Store 518(storeTempPre) 521
+             523:   21(fvec2) Load 518(storeTempPre)
+                              Store 522(storeTempPost) 523
+             524:   21(fvec2) Load 522(storeTempPost)
+             525:   21(fvec2) CompositeConstruct 399 399
+             526:   21(fvec2) FSub 524 525
+                              Store 522(storeTempPost) 526
+             527:          69 Load 71(g_tTex1df2)
+             528:      6(int) Load 515(coordTemp)
+             529:   21(fvec2) Load 522(storeTempPost)
+                              ImageWrite 527 528 529
+             531:     73(ptr) AccessChain 61 51
+             532:      6(int) Load 531
+                              Store 530(coordTemp) 532
+             534:          83 Load 85(g_tTex1di2)
+             535:      6(int) Load 530(coordTemp)
+             536:    7(ivec2) ImageRead 534 535
+                              Store 533(storeTempPre) 536
+             538:    7(ivec2) Load 533(storeTempPre)
+                              Store 537(storeTempPost) 538
+             539:    7(ivec2) Load 537(storeTempPost)
+             540:    7(ivec2) CompositeConstruct 62 62
+             541:    7(ivec2) IAdd 539 540
+                              Store 537(storeTempPost) 541
+             542:          83 Load 85(g_tTex1di2)
+             543:      6(int) Load 530(coordTemp)
+             544:    7(ivec2) Load 537(storeTempPost)
+                              ImageWrite 542 543 544
+             546:     73(ptr) AccessChain 61 51
+             547:      6(int) Load 546
+                              Store 545(coordTemp) 547
+             549:          91 Load 93(g_tTex1du2)
+             550:      6(int) Load 545(coordTemp)
+             551:   14(ivec2) ImageRead 549 550
+                              Store 548(storeTempPre) 551
+             553:   14(ivec2) Load 548(storeTempPre)
+                              Store 552(storeTempPost) 553
+             554:   14(ivec2) Load 552(storeTempPost)
+             555:    7(ivec2) CompositeConstruct 62 62
+             556:   14(ivec2) ISub 554 555
+                              Store 552(storeTempPost) 556
+             557:          91 Load 93(g_tTex1du2)
+             558:      6(int) Load 545(coordTemp)
+             559:   14(ivec2) Load 552(storeTempPost)
+                              ImageWrite 557 558 559
+             561:          99 Load 101(g_tTex2df2)
+             564:   21(fvec2) ImageRead 561 563
+                              Store 560(storeTemp) 564
+             565:          69 Load 71(g_tTex1df2)
+             566:   21(fvec2) Load 560(storeTemp)
+                              ImageWrite 565 62 566
+             573:    572(ptr) AccessChain 570(psout) 51
+                              Store 573 571
+             576:    572(ptr) AccessChain 570(psout) 51
+             577:  567(fvec4) Load 576
+                              Store 575(Color) 577
+                              Return
+                              FunctionEnd
+    11(Fn1(vi2;):    7(ivec2) Function None 9
+           10(x):      8(ptr) FunctionParameter
+              12:             Label
+              42:    7(ivec2) Load 10(x)
+                              ReturnValue 42
+                              FunctionEnd
+    18(Fn1(vu2;):   14(ivec2) Function None 16
+           17(x):     15(ptr) FunctionParameter
+              19:             Label
+              45:   14(ivec2) Load 17(x)
+                              ReturnValue 45
+                              FunctionEnd
+    25(Fn1(vf2;):   21(fvec2) Function None 23
+           24(x):     22(ptr) FunctionParameter
+              26:             Label
+              48:   21(fvec2) Load 24(x)
+                              ReturnValue 48
+                              FunctionEnd
+    29(Fn2(vi2;):           2 Function None 27
+           28(x):      8(ptr) FunctionParameter
+              30:             Label
+                              Store 28(x) 52
+                              Return
+                              FunctionEnd
+    33(Fn2(vu2;):           2 Function None 31
+           32(x):     15(ptr) FunctionParameter
+              34:             Label
+                              Store 32(x) 54
+                              Return
+                              FunctionEnd
+    37(Fn2(vf2;):           2 Function None 35
+           36(x):     22(ptr) FunctionParameter
+              38:             Label
+                              Store 36(x) 56
+                              Return
+                              FunctionEnd
+  40(SomeValue():   21(fvec2) Function None 39
+              41:             Label
+              64:     63(ptr) AccessChain 61 62
+              65:    7(ivec2) Load 64
+              66:   21(fvec2) ConvertSToF 65
+                              ReturnValue 66
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.sample.array.dx10.frag.out b/Test/baseResults/hlsl.sample.array.dx10.frag.out
index bb2962d..6c6f187 100644
--- a/Test/baseResults/hlsl.sample.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.array.dx10.frag.out
@@ -8,7 +8,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of float)
 0:27          'txval10' (temp 4-component vector of float)
-0:27          texture (global 4-component vector of float)
+0:27          texture (temp 4-component vector of float)
 0:27            Construct combined texture-sampler (temp sampler1DArray)
 0:27              'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -18,7 +18,7 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of int)
 0:28          'txval11' (temp 4-component vector of int)
-0:28          texture (global 4-component vector of int)
+0:28          texture (temp 4-component vector of int)
 0:28            Construct combined texture-sampler (temp isampler1DArray)
 0:28              'g_tTex1di4' (uniform itexture1DArray)
 0:28              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -28,7 +28,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of uint)
 0:29          'txval12' (temp 4-component vector of uint)
-0:29          texture (global 4-component vector of uint)
+0:29          texture (temp 4-component vector of uint)
 0:29            Construct combined texture-sampler (temp usampler1DArray)
 0:29              'g_tTex1du4' (uniform utexture1DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -38,7 +38,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval20' (temp 4-component vector of float)
-0:31          texture (global 4-component vector of float)
+0:31          texture (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler2DArray)
 0:31              'g_tTex2df4' (uniform texture2DArray)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -49,7 +49,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval21' (temp 4-component vector of int)
-0:32          texture (global 4-component vector of int)
+0:32          texture (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler2DArray)
 0:32              'g_tTex2di4' (uniform itexture2DArray)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -60,7 +60,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval22' (temp 4-component vector of uint)
-0:33          texture (global 4-component vector of uint)
+0:33          texture (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler2DArray)
 0:33              'g_tTex2du4' (uniform utexture2DArray)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -71,7 +71,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval40' (temp 4-component vector of float)
-0:35          texture (global 4-component vector of float)
+0:35          texture (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp samplerCubeArray)
 0:35              'g_tTexcdf4' (uniform textureCubeArray)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -83,7 +83,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval41' (temp 4-component vector of int)
-0:36          texture (global 4-component vector of int)
+0:36          texture (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isamplerCubeArray)
 0:36              'g_tTexcdi4' (uniform itextureCubeArray)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -95,7 +95,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval42' (temp 4-component vector of uint)
-0:37          texture (global 4-component vector of uint)
+0:37          texture (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usamplerCubeArray)
 0:37              'g_tTexcdu4' (uniform utextureCubeArray)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -164,7 +164,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of float)
 0:27          'txval10' (temp 4-component vector of float)
-0:27          texture (global 4-component vector of float)
+0:27          texture (temp 4-component vector of float)
 0:27            Construct combined texture-sampler (temp sampler1DArray)
 0:27              'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -174,7 +174,7 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of int)
 0:28          'txval11' (temp 4-component vector of int)
-0:28          texture (global 4-component vector of int)
+0:28          texture (temp 4-component vector of int)
 0:28            Construct combined texture-sampler (temp isampler1DArray)
 0:28              'g_tTex1di4' (uniform itexture1DArray)
 0:28              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -184,7 +184,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of uint)
 0:29          'txval12' (temp 4-component vector of uint)
-0:29          texture (global 4-component vector of uint)
+0:29          texture (temp 4-component vector of uint)
 0:29            Construct combined texture-sampler (temp usampler1DArray)
 0:29              'g_tTex1du4' (uniform utexture1DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -194,7 +194,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval20' (temp 4-component vector of float)
-0:31          texture (global 4-component vector of float)
+0:31          texture (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler2DArray)
 0:31              'g_tTex2df4' (uniform texture2DArray)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -205,7 +205,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval21' (temp 4-component vector of int)
-0:32          texture (global 4-component vector of int)
+0:32          texture (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler2DArray)
 0:32              'g_tTex2di4' (uniform itexture2DArray)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -216,7 +216,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval22' (temp 4-component vector of uint)
-0:33          texture (global 4-component vector of uint)
+0:33          texture (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler2DArray)
 0:33              'g_tTex2du4' (uniform utexture2DArray)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -227,7 +227,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval40' (temp 4-component vector of float)
-0:35          texture (global 4-component vector of float)
+0:35          texture (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp samplerCubeArray)
 0:35              'g_tTexcdf4' (uniform textureCubeArray)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -239,7 +239,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval41' (temp 4-component vector of int)
-0:36          texture (global 4-component vector of int)
+0:36          texture (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isamplerCubeArray)
 0:36              'g_tTexcdi4' (uniform itextureCubeArray)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -251,7 +251,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval42' (temp 4-component vector of uint)
-0:37          texture (global 4-component vector of uint)
+0:37          texture (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usamplerCubeArray)
 0:37              'g_tTexcdu4' (uniform utextureCubeArray)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.sample.basic.dx10.frag.out b/Test/baseResults/hlsl.sample.basic.dx10.frag.out
index b6cc8c6..de9a4f4 100644
--- a/Test/baseResults/hlsl.sample.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.basic.dx10.frag.out
@@ -94,7 +94,7 @@
 0:70      Sequence
 0:70        move second child to first child (temp 4-component vector of float)
 0:70          'txval10' (temp 4-component vector of float)
-0:70          texture (global 4-component vector of float)
+0:70          texture (temp 4-component vector of float)
 0:70            Construct combined texture-sampler (temp sampler1D)
 0:70              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:70              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -103,7 +103,7 @@
 0:71      Sequence
 0:71        move second child to first child (temp 4-component vector of int)
 0:71          'txval11' (temp 4-component vector of int)
-0:71          texture (global 4-component vector of int)
+0:71          texture (temp 4-component vector of int)
 0:71            Construct combined texture-sampler (temp isampler1D)
 0:71              'g_tTex1di4' (uniform itexture1D)
 0:71              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -112,7 +112,7 @@
 0:72      Sequence
 0:72        move second child to first child (temp 4-component vector of uint)
 0:72          'txval12' (temp 4-component vector of uint)
-0:72          texture (global 4-component vector of uint)
+0:72          texture (temp 4-component vector of uint)
 0:72            Construct combined texture-sampler (temp usampler1D)
 0:72              'g_tTex1du4' (uniform utexture1D)
 0:72              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -121,7 +121,7 @@
 0:74      Sequence
 0:74        move second child to first child (temp 4-component vector of float)
 0:74          'txval20' (temp 4-component vector of float)
-0:74          texture (global 4-component vector of float)
+0:74          texture (temp 4-component vector of float)
 0:74            Construct combined texture-sampler (temp sampler2D)
 0:74              'g_tTex2df4' (uniform texture2D)
 0:74              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -131,7 +131,7 @@
 0:75      Sequence
 0:75        move second child to first child (temp 4-component vector of int)
 0:75          'txval21' (temp 4-component vector of int)
-0:75          texture (global 4-component vector of int)
+0:75          texture (temp 4-component vector of int)
 0:75            Construct combined texture-sampler (temp isampler2D)
 0:75              'g_tTex2di4' (uniform itexture2D)
 0:75              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -141,7 +141,7 @@
 0:76      Sequence
 0:76        move second child to first child (temp 4-component vector of uint)
 0:76          'txval22' (temp 4-component vector of uint)
-0:76          texture (global 4-component vector of uint)
+0:76          texture (temp 4-component vector of uint)
 0:76            Construct combined texture-sampler (temp usampler2D)
 0:76              'g_tTex2du4' (uniform utexture2D)
 0:76              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -151,7 +151,7 @@
 0:78      Sequence
 0:78        move second child to first child (temp 4-component vector of float)
 0:78          'txval30' (temp 4-component vector of float)
-0:78          texture (global 4-component vector of float)
+0:78          texture (temp 4-component vector of float)
 0:78            Construct combined texture-sampler (temp sampler3D)
 0:78              'g_tTex3df4' (uniform texture3D)
 0:78              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -162,7 +162,7 @@
 0:79      Sequence
 0:79        move second child to first child (temp 4-component vector of int)
 0:79          'txval31' (temp 4-component vector of int)
-0:79          texture (global 4-component vector of int)
+0:79          texture (temp 4-component vector of int)
 0:79            Construct combined texture-sampler (temp isampler3D)
 0:79              'g_tTex3di4' (uniform itexture3D)
 0:79              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -173,7 +173,7 @@
 0:80      Sequence
 0:80        move second child to first child (temp 4-component vector of uint)
 0:80          'txval32' (temp 4-component vector of uint)
-0:80          texture (global 4-component vector of uint)
+0:80          texture (temp 4-component vector of uint)
 0:80            Construct combined texture-sampler (temp usampler3D)
 0:80              'g_tTex3du4' (uniform utexture3D)
 0:80              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -184,7 +184,7 @@
 0:82      Sequence
 0:82        move second child to first child (temp 4-component vector of float)
 0:82          'txval40' (temp 4-component vector of float)
-0:82          texture (global 4-component vector of float)
+0:82          texture (temp 4-component vector of float)
 0:82            Construct combined texture-sampler (temp samplerCube)
 0:82              'g_tTexcdf4' (uniform textureCube)
 0:82              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -195,7 +195,7 @@
 0:83      Sequence
 0:83        move second child to first child (temp 4-component vector of int)
 0:83          'txval41' (temp 4-component vector of int)
-0:83          texture (global 4-component vector of int)
+0:83          texture (temp 4-component vector of int)
 0:83            Construct combined texture-sampler (temp isamplerCube)
 0:83              'g_tTexcdi4' (uniform itextureCube)
 0:83              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -206,7 +206,7 @@
 0:84      Sequence
 0:84        move second child to first child (temp 4-component vector of uint)
 0:84          'txval42' (temp 4-component vector of uint)
-0:84          texture (global 4-component vector of uint)
+0:84          texture (temp 4-component vector of uint)
 0:84            Construct combined texture-sampler (temp usamplerCube)
 0:84              'g_tTexcdu4' (uniform utextureCube)
 0:84              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -363,7 +363,7 @@
 0:70      Sequence
 0:70        move second child to first child (temp 4-component vector of float)
 0:70          'txval10' (temp 4-component vector of float)
-0:70          texture (global 4-component vector of float)
+0:70          texture (temp 4-component vector of float)
 0:70            Construct combined texture-sampler (temp sampler1D)
 0:70              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:70              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -372,7 +372,7 @@
 0:71      Sequence
 0:71        move second child to first child (temp 4-component vector of int)
 0:71          'txval11' (temp 4-component vector of int)
-0:71          texture (global 4-component vector of int)
+0:71          texture (temp 4-component vector of int)
 0:71            Construct combined texture-sampler (temp isampler1D)
 0:71              'g_tTex1di4' (uniform itexture1D)
 0:71              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -381,7 +381,7 @@
 0:72      Sequence
 0:72        move second child to first child (temp 4-component vector of uint)
 0:72          'txval12' (temp 4-component vector of uint)
-0:72          texture (global 4-component vector of uint)
+0:72          texture (temp 4-component vector of uint)
 0:72            Construct combined texture-sampler (temp usampler1D)
 0:72              'g_tTex1du4' (uniform utexture1D)
 0:72              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -390,7 +390,7 @@
 0:74      Sequence
 0:74        move second child to first child (temp 4-component vector of float)
 0:74          'txval20' (temp 4-component vector of float)
-0:74          texture (global 4-component vector of float)
+0:74          texture (temp 4-component vector of float)
 0:74            Construct combined texture-sampler (temp sampler2D)
 0:74              'g_tTex2df4' (uniform texture2D)
 0:74              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -400,7 +400,7 @@
 0:75      Sequence
 0:75        move second child to first child (temp 4-component vector of int)
 0:75          'txval21' (temp 4-component vector of int)
-0:75          texture (global 4-component vector of int)
+0:75          texture (temp 4-component vector of int)
 0:75            Construct combined texture-sampler (temp isampler2D)
 0:75              'g_tTex2di4' (uniform itexture2D)
 0:75              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -410,7 +410,7 @@
 0:76      Sequence
 0:76        move second child to first child (temp 4-component vector of uint)
 0:76          'txval22' (temp 4-component vector of uint)
-0:76          texture (global 4-component vector of uint)
+0:76          texture (temp 4-component vector of uint)
 0:76            Construct combined texture-sampler (temp usampler2D)
 0:76              'g_tTex2du4' (uniform utexture2D)
 0:76              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -420,7 +420,7 @@
 0:78      Sequence
 0:78        move second child to first child (temp 4-component vector of float)
 0:78          'txval30' (temp 4-component vector of float)
-0:78          texture (global 4-component vector of float)
+0:78          texture (temp 4-component vector of float)
 0:78            Construct combined texture-sampler (temp sampler3D)
 0:78              'g_tTex3df4' (uniform texture3D)
 0:78              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -431,7 +431,7 @@
 0:79      Sequence
 0:79        move second child to first child (temp 4-component vector of int)
 0:79          'txval31' (temp 4-component vector of int)
-0:79          texture (global 4-component vector of int)
+0:79          texture (temp 4-component vector of int)
 0:79            Construct combined texture-sampler (temp isampler3D)
 0:79              'g_tTex3di4' (uniform itexture3D)
 0:79              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -442,7 +442,7 @@
 0:80      Sequence
 0:80        move second child to first child (temp 4-component vector of uint)
 0:80          'txval32' (temp 4-component vector of uint)
-0:80          texture (global 4-component vector of uint)
+0:80          texture (temp 4-component vector of uint)
 0:80            Construct combined texture-sampler (temp usampler3D)
 0:80              'g_tTex3du4' (uniform utexture3D)
 0:80              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -453,7 +453,7 @@
 0:82      Sequence
 0:82        move second child to first child (temp 4-component vector of float)
 0:82          'txval40' (temp 4-component vector of float)
-0:82          texture (global 4-component vector of float)
+0:82          texture (temp 4-component vector of float)
 0:82            Construct combined texture-sampler (temp samplerCube)
 0:82              'g_tTexcdf4' (uniform textureCube)
 0:82              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -464,7 +464,7 @@
 0:83      Sequence
 0:83        move second child to first child (temp 4-component vector of int)
 0:83          'txval41' (temp 4-component vector of int)
-0:83          texture (global 4-component vector of int)
+0:83          texture (temp 4-component vector of int)
 0:83            Construct combined texture-sampler (temp isamplerCube)
 0:83              'g_tTexcdi4' (uniform itextureCube)
 0:83              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -475,7 +475,7 @@
 0:84      Sequence
 0:84        move second child to first child (temp 4-component vector of uint)
 0:84          'txval42' (temp 4-component vector of uint)
-0:84          texture (global 4-component vector of uint)
+0:84          texture (temp 4-component vector of uint)
 0:84            Construct combined texture-sampler (temp usamplerCube)
 0:84              'g_tTexcdu4' (uniform utextureCube)
 0:84              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.sample.offset.dx10.frag.out b/Test/baseResults/hlsl.sample.offset.dx10.frag.out
index 9de5f49..67bf043 100644
--- a/Test/baseResults/hlsl.sample.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.offset.dx10.frag.out
@@ -8,7 +8,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval10' (temp 4-component vector of float)
-0:31          textureOffset (global 4-component vector of float)
+0:31          textureOffset (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler1D)
 0:31              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -19,7 +19,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval11' (temp 4-component vector of int)
-0:32          textureOffset (global 4-component vector of int)
+0:32          textureOffset (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler1D)
 0:32              'g_tTex1di4' (uniform itexture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -30,7 +30,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval12' (temp 4-component vector of uint)
-0:33          textureOffset (global 4-component vector of uint)
+0:33          textureOffset (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler1D)
 0:33              'g_tTex1du4' (uniform utexture1D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -41,7 +41,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval20' (temp 4-component vector of float)
-0:35          textureOffset (global 4-component vector of float)
+0:35          textureOffset (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp sampler2D)
 0:35              'g_tTex2df4' (uniform texture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -54,7 +54,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval21' (temp 4-component vector of int)
-0:36          textureOffset (global 4-component vector of int)
+0:36          textureOffset (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isampler2D)
 0:36              'g_tTex2di4' (uniform itexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -67,7 +67,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval22' (temp 4-component vector of uint)
-0:37          textureOffset (global 4-component vector of uint)
+0:37          textureOffset (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usampler2D)
 0:37              'g_tTex2du4' (uniform utexture2D)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -80,7 +80,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          'txval30' (temp 4-component vector of float)
-0:39          textureOffset (global 4-component vector of float)
+0:39          textureOffset (temp 4-component vector of float)
 0:39            Construct combined texture-sampler (temp sampler3D)
 0:39              'g_tTex3df4' (uniform texture3D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -95,7 +95,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          'txval31' (temp 4-component vector of int)
-0:40          textureOffset (global 4-component vector of int)
+0:40          textureOffset (temp 4-component vector of int)
 0:40            Construct combined texture-sampler (temp isampler3D)
 0:40              'g_tTex3di4' (uniform itexture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -110,7 +110,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          'txval32' (temp 4-component vector of uint)
-0:41          textureOffset (global 4-component vector of uint)
+0:41          textureOffset (temp 4-component vector of uint)
 0:41            Construct combined texture-sampler (temp usampler3D)
 0:41              'g_tTex3du4' (uniform utexture3D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -185,7 +185,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval10' (temp 4-component vector of float)
-0:31          textureOffset (global 4-component vector of float)
+0:31          textureOffset (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler1D)
 0:31              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -196,7 +196,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval11' (temp 4-component vector of int)
-0:32          textureOffset (global 4-component vector of int)
+0:32          textureOffset (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler1D)
 0:32              'g_tTex1di4' (uniform itexture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -207,7 +207,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval12' (temp 4-component vector of uint)
-0:33          textureOffset (global 4-component vector of uint)
+0:33          textureOffset (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler1D)
 0:33              'g_tTex1du4' (uniform utexture1D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -218,7 +218,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval20' (temp 4-component vector of float)
-0:35          textureOffset (global 4-component vector of float)
+0:35          textureOffset (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp sampler2D)
 0:35              'g_tTex2df4' (uniform texture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -231,7 +231,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval21' (temp 4-component vector of int)
-0:36          textureOffset (global 4-component vector of int)
+0:36          textureOffset (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isampler2D)
 0:36              'g_tTex2di4' (uniform itexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -244,7 +244,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval22' (temp 4-component vector of uint)
-0:37          textureOffset (global 4-component vector of uint)
+0:37          textureOffset (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usampler2D)
 0:37              'g_tTex2du4' (uniform utexture2D)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -257,7 +257,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          'txval30' (temp 4-component vector of float)
-0:39          textureOffset (global 4-component vector of float)
+0:39          textureOffset (temp 4-component vector of float)
 0:39            Construct combined texture-sampler (temp sampler3D)
 0:39              'g_tTex3df4' (uniform texture3D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -272,7 +272,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          'txval31' (temp 4-component vector of int)
-0:40          textureOffset (global 4-component vector of int)
+0:40          textureOffset (temp 4-component vector of int)
 0:40            Construct combined texture-sampler (temp isampler3D)
 0:40              'g_tTex3di4' (uniform itexture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -287,7 +287,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          'txval32' (temp 4-component vector of uint)
-0:41          textureOffset (global 4-component vector of uint)
+0:41          textureOffset (temp 4-component vector of uint)
 0:41            Construct combined texture-sampler (temp usampler3D)
 0:41              'g_tTex3du4' (uniform utexture3D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
index f4646d4..83a0e8b 100644
--- a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out
@@ -8,7 +8,7 @@
 0:23      Sequence
 0:23        move second child to first child (temp 4-component vector of float)
 0:23          'txval10' (temp 4-component vector of float)
-0:23          textureOffset (global 4-component vector of float)
+0:23          textureOffset (temp 4-component vector of float)
 0:23            Construct combined texture-sampler (temp sampler1DArray)
 0:23              'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
 0:23              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -20,7 +20,7 @@
 0:24      Sequence
 0:24        move second child to first child (temp 4-component vector of int)
 0:24          'txval11' (temp 4-component vector of int)
-0:24          textureOffset (global 4-component vector of int)
+0:24          textureOffset (temp 4-component vector of int)
 0:24            Construct combined texture-sampler (temp isampler1DArray)
 0:24              'g_tTex1di4' (uniform itexture1DArray)
 0:24              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -32,7 +32,7 @@
 0:25      Sequence
 0:25        move second child to first child (temp 4-component vector of uint)
 0:25          'txval12' (temp 4-component vector of uint)
-0:25          textureOffset (global 4-component vector of uint)
+0:25          textureOffset (temp 4-component vector of uint)
 0:25            Construct combined texture-sampler (temp usampler1DArray)
 0:25              'g_tTex1du4' (uniform utexture1DArray)
 0:25              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -44,7 +44,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of float)
 0:27          'txval20' (temp 4-component vector of float)
-0:27          textureOffset (global 4-component vector of float)
+0:27          textureOffset (temp 4-component vector of float)
 0:27            Construct combined texture-sampler (temp sampler2DArray)
 0:27              'g_tTex2df4' (uniform texture2DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -58,7 +58,7 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of int)
 0:28          'txval21' (temp 4-component vector of int)
-0:28          textureOffset (global 4-component vector of int)
+0:28          textureOffset (temp 4-component vector of int)
 0:28            Construct combined texture-sampler (temp isampler2DArray)
 0:28              'g_tTex2di4' (uniform itexture2DArray)
 0:28              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -72,7 +72,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of uint)
 0:29          'txval22' (temp 4-component vector of uint)
-0:29          textureOffset (global 4-component vector of uint)
+0:29          textureOffset (temp 4-component vector of uint)
 0:29            Construct combined texture-sampler (temp usampler2DArray)
 0:29              'g_tTex2du4' (uniform utexture2DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -140,7 +140,7 @@
 0:23      Sequence
 0:23        move second child to first child (temp 4-component vector of float)
 0:23          'txval10' (temp 4-component vector of float)
-0:23          textureOffset (global 4-component vector of float)
+0:23          textureOffset (temp 4-component vector of float)
 0:23            Construct combined texture-sampler (temp sampler1DArray)
 0:23              'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
 0:23              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -152,7 +152,7 @@
 0:24      Sequence
 0:24        move second child to first child (temp 4-component vector of int)
 0:24          'txval11' (temp 4-component vector of int)
-0:24          textureOffset (global 4-component vector of int)
+0:24          textureOffset (temp 4-component vector of int)
 0:24            Construct combined texture-sampler (temp isampler1DArray)
 0:24              'g_tTex1di4' (uniform itexture1DArray)
 0:24              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -164,7 +164,7 @@
 0:25      Sequence
 0:25        move second child to first child (temp 4-component vector of uint)
 0:25          'txval12' (temp 4-component vector of uint)
-0:25          textureOffset (global 4-component vector of uint)
+0:25          textureOffset (temp 4-component vector of uint)
 0:25            Construct combined texture-sampler (temp usampler1DArray)
 0:25              'g_tTex1du4' (uniform utexture1DArray)
 0:25              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -176,7 +176,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of float)
 0:27          'txval20' (temp 4-component vector of float)
-0:27          textureOffset (global 4-component vector of float)
+0:27          textureOffset (temp 4-component vector of float)
 0:27            Construct combined texture-sampler (temp sampler2DArray)
 0:27              'g_tTex2df4' (uniform texture2DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -190,7 +190,7 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of int)
 0:28          'txval21' (temp 4-component vector of int)
-0:28          textureOffset (global 4-component vector of int)
+0:28          textureOffset (temp 4-component vector of int)
 0:28            Construct combined texture-sampler (temp isampler2DArray)
 0:28              'g_tTex2di4' (uniform itexture2DArray)
 0:28              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -204,7 +204,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of uint)
 0:29          'txval22' (temp 4-component vector of uint)
-0:29          textureOffset (global 4-component vector of uint)
+0:29          textureOffset (temp 4-component vector of uint)
 0:29            Construct combined texture-sampler (temp usampler2DArray)
 0:29              'g_tTex2du4' (uniform utexture2DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out
new file mode 100644
index 0000000..5a97ed9
--- /dev/null
+++ b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out
@@ -0,0 +1,252 @@
+hlsl.sample.sub-vec4.dx10.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:14  Function Definition: main( (temp structure{temp 4-component vector of float Color})
+0:14    Function Parameters: 
+0:?     Sequence
+0:17      Sequence
+0:17        move second child to first child (temp float)
+0:17          'txval10' (temp float)
+0:17          Construct float (temp float)
+0:?             texture (temp 4-component vector of float)
+0:17              Construct combined texture-sampler (temp sampler1D)
+0:17                'g_tTex1df1' (uniform texture1D)
+0:17                'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:17              Constant:
+0:17                0.100000
+0:18      Sequence
+0:18        move second child to first child (temp 2-component vector of float)
+0:18          'txval11' (temp 2-component vector of float)
+0:18          Construct vec2 (temp 2-component vector of float)
+0:?             texture (temp 4-component vector of float)
+0:18              Construct combined texture-sampler (temp sampler1D)
+0:18                'g_tTex1df2' (uniform texture1D)
+0:18                'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:18              Constant:
+0:18                0.200000
+0:19      Sequence
+0:19        move second child to first child (temp 3-component vector of float)
+0:19          'txval12' (temp 3-component vector of float)
+0:19          Construct vec3 (temp 3-component vector of float)
+0:?             texture (temp 4-component vector of float)
+0:19              Construct combined texture-sampler (temp sampler1D)
+0:19                'g_tTex1df3' (uniform texture1D)
+0:19                'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:19              Constant:
+0:19                0.200000
+0:20      Sequence
+0:20        move second child to first child (temp 4-component vector of float)
+0:20          'txval13' (temp 4-component vector of float)
+0:20          texture (temp 4-component vector of float)
+0:20            Construct combined texture-sampler (temp sampler1D)
+0:20              'g_tTex1df4' (uniform texture1D)
+0:20              'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:20            Constant:
+0:20              0.200000
+0:22      move second child to first child (temp 4-component vector of float)
+0:22        Color: direct index for structure (temp 4-component vector of float)
+0:22          'psout' (temp structure{temp 4-component vector of float Color})
+0:22          Constant:
+0:22            0 (const int)
+0:22        Constant:
+0:22          1.000000
+0:22          1.000000
+0:22          1.000000
+0:22          1.000000
+0:23      Sequence
+0:23        Sequence
+0:23          move second child to first child (temp 4-component vector of float)
+0:?             'Color' (layout(location=0 ) out 4-component vector of float)
+0:23            Color: direct index for structure (temp 4-component vector of float)
+0:23              'psout' (temp structure{temp 4-component vector of float Color})
+0:23              Constant:
+0:23                0 (const int)
+0:23        Branch: Return
+0:?   Linker Objects
+0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:?     'g_tTex1df1' (uniform texture1D)
+0:?     'g_tTex1df2' (uniform texture1D)
+0:?     'g_tTex1df3' (uniform texture1D)
+0:?     'g_tTex1df4' (uniform texture1D)
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:14  Function Definition: main( (temp structure{temp 4-component vector of float Color})
+0:14    Function Parameters: 
+0:?     Sequence
+0:17      Sequence
+0:17        move second child to first child (temp float)
+0:17          'txval10' (temp float)
+0:17          Construct float (temp float)
+0:?             texture (temp 4-component vector of float)
+0:17              Construct combined texture-sampler (temp sampler1D)
+0:17                'g_tTex1df1' (uniform texture1D)
+0:17                'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:17              Constant:
+0:17                0.100000
+0:18      Sequence
+0:18        move second child to first child (temp 2-component vector of float)
+0:18          'txval11' (temp 2-component vector of float)
+0:18          Construct vec2 (temp 2-component vector of float)
+0:?             texture (temp 4-component vector of float)
+0:18              Construct combined texture-sampler (temp sampler1D)
+0:18                'g_tTex1df2' (uniform texture1D)
+0:18                'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:18              Constant:
+0:18                0.200000
+0:19      Sequence
+0:19        move second child to first child (temp 3-component vector of float)
+0:19          'txval12' (temp 3-component vector of float)
+0:19          Construct vec3 (temp 3-component vector of float)
+0:?             texture (temp 4-component vector of float)
+0:19              Construct combined texture-sampler (temp sampler1D)
+0:19                'g_tTex1df3' (uniform texture1D)
+0:19                'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:19              Constant:
+0:19                0.200000
+0:20      Sequence
+0:20        move second child to first child (temp 4-component vector of float)
+0:20          'txval13' (temp 4-component vector of float)
+0:20          texture (temp 4-component vector of float)
+0:20            Construct combined texture-sampler (temp sampler1D)
+0:20              'g_tTex1df4' (uniform texture1D)
+0:20              'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:20            Constant:
+0:20              0.200000
+0:22      move second child to first child (temp 4-component vector of float)
+0:22        Color: direct index for structure (temp 4-component vector of float)
+0:22          'psout' (temp structure{temp 4-component vector of float Color})
+0:22          Constant:
+0:22            0 (const int)
+0:22        Constant:
+0:22          1.000000
+0:22          1.000000
+0:22          1.000000
+0:22          1.000000
+0:23      Sequence
+0:23        Sequence
+0:23          move second child to first child (temp 4-component vector of float)
+0:?             'Color' (layout(location=0 ) out 4-component vector of float)
+0:23            Color: direct index for structure (temp 4-component vector of float)
+0:23              'psout' (temp structure{temp 4-component vector of float Color})
+0:23              Constant:
+0:23                0 (const int)
+0:23        Branch: Return
+0:?   Linker Objects
+0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:?     'g_tTex1df1' (uniform texture1D)
+0:?     'g_tTex1df2' (uniform texture1D)
+0:?     'g_tTex1df3' (uniform texture1D)
+0:?     'g_tTex1df4' (uniform texture1D)
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 67
+
+                              Capability Shader
+                              Capability Sampled1D
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 63
+                              ExecutionMode 4 OriginUpperLeft
+                              Name 4  "main"
+                              Name 8  "txval10"
+                              Name 11  "g_tTex1df1"
+                              Name 15  "g_sSamp"
+                              Name 25  "txval11"
+                              Name 26  "g_tTex1df2"
+                              Name 37  "txval12"
+                              Name 38  "g_tTex1df3"
+                              Name 48  "txval13"
+                              Name 49  "g_tTex1df4"
+                              Name 54  "PS_OUTPUT"
+                              MemberName 54(PS_OUTPUT) 0  "Color"
+                              Name 56  "psout"
+                              Name 63  "Color"
+                              Decorate 11(g_tTex1df1) DescriptorSet 0
+                              Decorate 15(g_sSamp) DescriptorSet 0
+                              Decorate 15(g_sSamp) Binding 0
+                              Decorate 26(g_tTex1df2) DescriptorSet 0
+                              Decorate 38(g_tTex1df3) DescriptorSet 0
+                              Decorate 49(g_tTex1df4) DescriptorSet 0
+                              Decorate 63(Color) Location 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeFloat 32
+               7:             TypePointer Function 6(float)
+               9:             TypeImage 6(float) 1D sampled format:Unknown
+              10:             TypePointer UniformConstant 9
+  11(g_tTex1df1):     10(ptr) Variable UniformConstant
+              13:             TypeSampler
+              14:             TypePointer UniformConstant 13
+     15(g_sSamp):     14(ptr) Variable UniformConstant
+              17:             TypeSampledImage 9
+              19:    6(float) Constant 1036831949
+              20:             TypeVector 6(float) 4
+              23:             TypeVector 6(float) 2
+              24:             TypePointer Function 23(fvec2)
+  26(g_tTex1df2):     10(ptr) Variable UniformConstant
+              30:    6(float) Constant 1045220557
+              35:             TypeVector 6(float) 3
+              36:             TypePointer Function 35(fvec3)
+  38(g_tTex1df3):     10(ptr) Variable UniformConstant
+              47:             TypePointer Function 20(fvec4)
+  49(g_tTex1df4):     10(ptr) Variable UniformConstant
+   54(PS_OUTPUT):             TypeStruct 20(fvec4)
+              55:             TypePointer Function 54(PS_OUTPUT)
+              57:             TypeInt 32 1
+              58:     57(int) Constant 0
+              59:    6(float) Constant 1065353216
+              60:   20(fvec4) ConstantComposite 59 59 59 59
+              62:             TypePointer Output 20(fvec4)
+       63(Color):     62(ptr) Variable Output
+         4(main):           2 Function None 3
+               5:             Label
+      8(txval10):      7(ptr) Variable Function
+     25(txval11):     24(ptr) Variable Function
+     37(txval12):     36(ptr) Variable Function
+     48(txval13):     47(ptr) Variable Function
+       56(psout):     55(ptr) Variable Function
+              12:           9 Load 11(g_tTex1df1)
+              16:          13 Load 15(g_sSamp)
+              18:          17 SampledImage 12 16
+              21:   20(fvec4) ImageSampleImplicitLod 18 19
+              22:    6(float) CompositeExtract 21 0
+                              Store 8(txval10) 22
+              27:           9 Load 26(g_tTex1df2)
+              28:          13 Load 15(g_sSamp)
+              29:          17 SampledImage 27 28
+              31:   20(fvec4) ImageSampleImplicitLod 29 30
+              32:    6(float) CompositeExtract 31 0
+              33:    6(float) CompositeExtract 31 1
+              34:   23(fvec2) CompositeConstruct 32 33
+                              Store 25(txval11) 34
+              39:           9 Load 38(g_tTex1df3)
+              40:          13 Load 15(g_sSamp)
+              41:          17 SampledImage 39 40
+              42:   20(fvec4) ImageSampleImplicitLod 41 30
+              43:    6(float) CompositeExtract 42 0
+              44:    6(float) CompositeExtract 42 1
+              45:    6(float) CompositeExtract 42 2
+              46:   35(fvec3) CompositeConstruct 43 44 45
+                              Store 37(txval12) 46
+              50:           9 Load 49(g_tTex1df4)
+              51:          13 Load 15(g_sSamp)
+              52:          17 SampledImage 50 51
+              53:   20(fvec4) ImageSampleImplicitLod 52 30
+                              Store 48(txval13) 53
+              61:     47(ptr) AccessChain 56(psout) 58
+                              Store 61 60
+              64:     47(ptr) AccessChain 56(psout) 58
+              65:   20(fvec4) Load 64
+                              Store 63(Color) 65
+                              Return
+                              FunctionEnd
diff --git a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
index 539855e..b2b38b6 100644
--- a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out
@@ -8,7 +8,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of float)
 0:27          'txval10' (temp 4-component vector of float)
-0:27          texture (global 4-component vector of float)
+0:27          texture (temp 4-component vector of float)
 0:27            Construct combined texture-sampler (temp sampler1DArray)
 0:27              'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -20,7 +20,7 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of int)
 0:28          'txval11' (temp 4-component vector of int)
-0:28          texture (global 4-component vector of int)
+0:28          texture (temp 4-component vector of int)
 0:28            Construct combined texture-sampler (temp isampler1DArray)
 0:28              'g_tTex1di4' (uniform itexture1DArray)
 0:28              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -32,7 +32,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of uint)
 0:29          'txval12' (temp 4-component vector of uint)
-0:29          texture (global 4-component vector of uint)
+0:29          texture (temp 4-component vector of uint)
 0:29            Construct combined texture-sampler (temp usampler1DArray)
 0:29              'g_tTex1du4' (uniform utexture1DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -44,7 +44,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval20' (temp 4-component vector of float)
-0:31          texture (global 4-component vector of float)
+0:31          texture (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler2DArray)
 0:31              'g_tTex2df4' (uniform texture2DArray)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -57,7 +57,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval21' (temp 4-component vector of int)
-0:32          texture (global 4-component vector of int)
+0:32          texture (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler2DArray)
 0:32              'g_tTex2di4' (uniform itexture2DArray)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -70,7 +70,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval22' (temp 4-component vector of uint)
-0:33          texture (global 4-component vector of uint)
+0:33          texture (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler2DArray)
 0:33              'g_tTex2du4' (uniform utexture2DArray)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -83,7 +83,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval40' (temp 4-component vector of float)
-0:35          texture (global 4-component vector of float)
+0:35          texture (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp samplerCubeArray)
 0:35              'g_tTexcdf4' (uniform textureCubeArray)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -97,7 +97,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval41' (temp 4-component vector of int)
-0:36          texture (global 4-component vector of int)
+0:36          texture (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isamplerCubeArray)
 0:36              'g_tTexcdi4' (uniform itextureCubeArray)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -111,7 +111,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval42' (temp 4-component vector of uint)
-0:37          texture (global 4-component vector of uint)
+0:37          texture (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usamplerCubeArray)
 0:37              'g_tTexcdu4' (uniform utextureCubeArray)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -182,7 +182,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of float)
 0:27          'txval10' (temp 4-component vector of float)
-0:27          texture (global 4-component vector of float)
+0:27          texture (temp 4-component vector of float)
 0:27            Construct combined texture-sampler (temp sampler1DArray)
 0:27              'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -194,7 +194,7 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of int)
 0:28          'txval11' (temp 4-component vector of int)
-0:28          texture (global 4-component vector of int)
+0:28          texture (temp 4-component vector of int)
 0:28            Construct combined texture-sampler (temp isampler1DArray)
 0:28              'g_tTex1di4' (uniform itexture1DArray)
 0:28              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -206,7 +206,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of uint)
 0:29          'txval12' (temp 4-component vector of uint)
-0:29          texture (global 4-component vector of uint)
+0:29          texture (temp 4-component vector of uint)
 0:29            Construct combined texture-sampler (temp usampler1DArray)
 0:29              'g_tTex1du4' (uniform utexture1DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -218,7 +218,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval20' (temp 4-component vector of float)
-0:31          texture (global 4-component vector of float)
+0:31          texture (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler2DArray)
 0:31              'g_tTex2df4' (uniform texture2DArray)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -231,7 +231,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval21' (temp 4-component vector of int)
-0:32          texture (global 4-component vector of int)
+0:32          texture (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler2DArray)
 0:32              'g_tTex2di4' (uniform itexture2DArray)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -244,7 +244,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval22' (temp 4-component vector of uint)
-0:33          texture (global 4-component vector of uint)
+0:33          texture (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler2DArray)
 0:33              'g_tTex2du4' (uniform utexture2DArray)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -257,7 +257,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval40' (temp 4-component vector of float)
-0:35          texture (global 4-component vector of float)
+0:35          texture (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp samplerCubeArray)
 0:35              'g_tTexcdf4' (uniform textureCubeArray)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -271,7 +271,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval41' (temp 4-component vector of int)
-0:36          texture (global 4-component vector of int)
+0:36          texture (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isamplerCubeArray)
 0:36              'g_tTexcdi4' (uniform itextureCubeArray)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -285,7 +285,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval42' (temp 4-component vector of uint)
-0:37          texture (global 4-component vector of uint)
+0:37          texture (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usamplerCubeArray)
 0:37              'g_tTexcdu4' (uniform utextureCubeArray)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
index 9fb8b1a..c794914 100644
--- a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out
@@ -8,7 +8,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval10' (temp 4-component vector of float)
-0:31          texture (global 4-component vector of float)
+0:31          texture (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler1D)
 0:31              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -19,7 +19,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval11' (temp 4-component vector of int)
-0:32          texture (global 4-component vector of int)
+0:32          texture (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler1D)
 0:32              'g_tTex1di4' (uniform itexture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -30,7 +30,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval12' (temp 4-component vector of uint)
-0:33          texture (global 4-component vector of uint)
+0:33          texture (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler1D)
 0:33              'g_tTex1du4' (uniform utexture1D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -41,7 +41,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval20' (temp 4-component vector of float)
-0:35          texture (global 4-component vector of float)
+0:35          texture (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp sampler2D)
 0:35              'g_tTex2df4' (uniform texture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -53,7 +53,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval21' (temp 4-component vector of int)
-0:36          texture (global 4-component vector of int)
+0:36          texture (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isampler2D)
 0:36              'g_tTex2di4' (uniform itexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -65,7 +65,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval22' (temp 4-component vector of uint)
-0:37          texture (global 4-component vector of uint)
+0:37          texture (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usampler2D)
 0:37              'g_tTex2du4' (uniform utexture2D)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -77,7 +77,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          'txval30' (temp 4-component vector of float)
-0:39          texture (global 4-component vector of float)
+0:39          texture (temp 4-component vector of float)
 0:39            Construct combined texture-sampler (temp sampler3D)
 0:39              'g_tTex3df4' (uniform texture3D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -90,7 +90,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          'txval31' (temp 4-component vector of int)
-0:40          texture (global 4-component vector of int)
+0:40          texture (temp 4-component vector of int)
 0:40            Construct combined texture-sampler (temp isampler3D)
 0:40              'g_tTex3di4' (uniform itexture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -103,7 +103,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          'txval32' (temp 4-component vector of uint)
-0:41          texture (global 4-component vector of uint)
+0:41          texture (temp 4-component vector of uint)
 0:41            Construct combined texture-sampler (temp usampler3D)
 0:41              'g_tTex3du4' (uniform utexture3D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -116,7 +116,7 @@
 0:43      Sequence
 0:43        move second child to first child (temp 4-component vector of float)
 0:43          'txval40' (temp 4-component vector of float)
-0:43          texture (global 4-component vector of float)
+0:43          texture (temp 4-component vector of float)
 0:43            Construct combined texture-sampler (temp samplerCube)
 0:43              'g_tTexcdf4' (uniform textureCube)
 0:43              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -129,7 +129,7 @@
 0:44      Sequence
 0:44        move second child to first child (temp 4-component vector of int)
 0:44          'txval41' (temp 4-component vector of int)
-0:44          texture (global 4-component vector of int)
+0:44          texture (temp 4-component vector of int)
 0:44            Construct combined texture-sampler (temp isamplerCube)
 0:44              'g_tTexcdi4' (uniform itextureCube)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -142,7 +142,7 @@
 0:45      Sequence
 0:45        move second child to first child (temp 4-component vector of uint)
 0:45          'txval42' (temp 4-component vector of uint)
-0:45          texture (global 4-component vector of uint)
+0:45          texture (temp 4-component vector of uint)
 0:45            Construct combined texture-sampler (temp usamplerCube)
 0:45              'g_tTexcdu4' (uniform utextureCube)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -215,7 +215,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval10' (temp 4-component vector of float)
-0:31          texture (global 4-component vector of float)
+0:31          texture (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler1D)
 0:31              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -226,7 +226,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval11' (temp 4-component vector of int)
-0:32          texture (global 4-component vector of int)
+0:32          texture (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler1D)
 0:32              'g_tTex1di4' (uniform itexture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -237,7 +237,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval12' (temp 4-component vector of uint)
-0:33          texture (global 4-component vector of uint)
+0:33          texture (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler1D)
 0:33              'g_tTex1du4' (uniform utexture1D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -248,7 +248,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval20' (temp 4-component vector of float)
-0:35          texture (global 4-component vector of float)
+0:35          texture (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp sampler2D)
 0:35              'g_tTex2df4' (uniform texture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -260,7 +260,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval21' (temp 4-component vector of int)
-0:36          texture (global 4-component vector of int)
+0:36          texture (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isampler2D)
 0:36              'g_tTex2di4' (uniform itexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -272,7 +272,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval22' (temp 4-component vector of uint)
-0:37          texture (global 4-component vector of uint)
+0:37          texture (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usampler2D)
 0:37              'g_tTex2du4' (uniform utexture2D)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -284,7 +284,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          'txval30' (temp 4-component vector of float)
-0:39          texture (global 4-component vector of float)
+0:39          texture (temp 4-component vector of float)
 0:39            Construct combined texture-sampler (temp sampler3D)
 0:39              'g_tTex3df4' (uniform texture3D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -297,7 +297,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          'txval31' (temp 4-component vector of int)
-0:40          texture (global 4-component vector of int)
+0:40          texture (temp 4-component vector of int)
 0:40            Construct combined texture-sampler (temp isampler3D)
 0:40              'g_tTex3di4' (uniform itexture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -310,7 +310,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          'txval32' (temp 4-component vector of uint)
-0:41          texture (global 4-component vector of uint)
+0:41          texture (temp 4-component vector of uint)
 0:41            Construct combined texture-sampler (temp usampler3D)
 0:41              'g_tTex3du4' (uniform utexture3D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -323,7 +323,7 @@
 0:43      Sequence
 0:43        move second child to first child (temp 4-component vector of float)
 0:43          'txval40' (temp 4-component vector of float)
-0:43          texture (global 4-component vector of float)
+0:43          texture (temp 4-component vector of float)
 0:43            Construct combined texture-sampler (temp samplerCube)
 0:43              'g_tTexcdf4' (uniform textureCube)
 0:43              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -336,7 +336,7 @@
 0:44      Sequence
 0:44        move second child to first child (temp 4-component vector of int)
 0:44          'txval41' (temp 4-component vector of int)
-0:44          texture (global 4-component vector of int)
+0:44          texture (temp 4-component vector of int)
 0:44            Construct combined texture-sampler (temp isamplerCube)
 0:44              'g_tTexcdi4' (uniform itextureCube)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -349,7 +349,7 @@
 0:45      Sequence
 0:45        move second child to first child (temp 4-component vector of uint)
 0:45          'txval42' (temp 4-component vector of uint)
-0:45          texture (global 4-component vector of uint)
+0:45          texture (temp 4-component vector of uint)
 0:45            Construct combined texture-sampler (temp usamplerCube)
 0:45              'g_tTexcdu4' (uniform utextureCube)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
index 643e003..900eb4b 100644
--- a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out
@@ -8,7 +8,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval10' (temp 4-component vector of float)
-0:31          textureOffset (global 4-component vector of float)
+0:31          textureOffset (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler1D)
 0:31              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -21,7 +21,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval11' (temp 4-component vector of int)
-0:32          textureOffset (global 4-component vector of int)
+0:32          textureOffset (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler1D)
 0:32              'g_tTex1di4' (uniform itexture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -34,7 +34,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval12' (temp 4-component vector of uint)
-0:33          textureOffset (global 4-component vector of uint)
+0:33          textureOffset (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler1D)
 0:33              'g_tTex1du4' (uniform utexture1D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -47,7 +47,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval20' (temp 4-component vector of float)
-0:35          textureOffset (global 4-component vector of float)
+0:35          textureOffset (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp sampler2D)
 0:35              'g_tTex2df4' (uniform texture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -62,7 +62,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval21' (temp 4-component vector of int)
-0:36          textureOffset (global 4-component vector of int)
+0:36          textureOffset (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isampler2D)
 0:36              'g_tTex2di4' (uniform itexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -77,7 +77,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval22' (temp 4-component vector of uint)
-0:37          textureOffset (global 4-component vector of uint)
+0:37          textureOffset (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usampler2D)
 0:37              'g_tTex2du4' (uniform utexture2D)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -92,7 +92,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          'txval30' (temp 4-component vector of float)
-0:39          textureOffset (global 4-component vector of float)
+0:39          textureOffset (temp 4-component vector of float)
 0:39            Construct combined texture-sampler (temp sampler3D)
 0:39              'g_tTex3df4' (uniform texture3D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -109,7 +109,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          'txval31' (temp 4-component vector of int)
-0:40          textureOffset (global 4-component vector of int)
+0:40          textureOffset (temp 4-component vector of int)
 0:40            Construct combined texture-sampler (temp isampler3D)
 0:40              'g_tTex3di4' (uniform itexture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -126,7 +126,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          'txval32' (temp 4-component vector of uint)
-0:41          textureOffset (global 4-component vector of uint)
+0:41          textureOffset (temp 4-component vector of uint)
 0:41            Construct combined texture-sampler (temp usampler3D)
 0:41              'g_tTex3du4' (uniform utexture3D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -203,7 +203,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval10' (temp 4-component vector of float)
-0:31          textureOffset (global 4-component vector of float)
+0:31          textureOffset (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler1D)
 0:31              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -216,7 +216,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval11' (temp 4-component vector of int)
-0:32          textureOffset (global 4-component vector of int)
+0:32          textureOffset (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler1D)
 0:32              'g_tTex1di4' (uniform itexture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -229,7 +229,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval12' (temp 4-component vector of uint)
-0:33          textureOffset (global 4-component vector of uint)
+0:33          textureOffset (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler1D)
 0:33              'g_tTex1du4' (uniform utexture1D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -242,7 +242,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval20' (temp 4-component vector of float)
-0:35          textureOffset (global 4-component vector of float)
+0:35          textureOffset (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp sampler2D)
 0:35              'g_tTex2df4' (uniform texture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -257,7 +257,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval21' (temp 4-component vector of int)
-0:36          textureOffset (global 4-component vector of int)
+0:36          textureOffset (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isampler2D)
 0:36              'g_tTex2di4' (uniform itexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -272,7 +272,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval22' (temp 4-component vector of uint)
-0:37          textureOffset (global 4-component vector of uint)
+0:37          textureOffset (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usampler2D)
 0:37              'g_tTex2du4' (uniform utexture2D)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -287,7 +287,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          'txval30' (temp 4-component vector of float)
-0:39          textureOffset (global 4-component vector of float)
+0:39          textureOffset (temp 4-component vector of float)
 0:39            Construct combined texture-sampler (temp sampler3D)
 0:39              'g_tTex3df4' (uniform texture3D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -304,7 +304,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          'txval31' (temp 4-component vector of int)
-0:40          textureOffset (global 4-component vector of int)
+0:40          textureOffset (temp 4-component vector of int)
 0:40            Construct combined texture-sampler (temp isampler3D)
 0:40              'g_tTex3di4' (uniform itexture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -321,7 +321,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          'txval32' (temp 4-component vector of uint)
-0:41          textureOffset (global 4-component vector of uint)
+0:41          textureOffset (temp 4-component vector of uint)
 0:41            Construct combined texture-sampler (temp usampler3D)
 0:41              'g_tTex3du4' (uniform utexture3D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
index 3ab84b9..bd21622 100644
--- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out
@@ -8,7 +8,7 @@
 0:23      Sequence
 0:23        move second child to first child (temp 4-component vector of float)
 0:23          'txval10' (temp 4-component vector of float)
-0:23          textureOffset (global 4-component vector of float)
+0:23          textureOffset (temp 4-component vector of float)
 0:23            Construct combined texture-sampler (temp sampler1DArray)
 0:23              'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
 0:23              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -22,7 +22,7 @@
 0:24      Sequence
 0:24        move second child to first child (temp 4-component vector of int)
 0:24          'txval11' (temp 4-component vector of int)
-0:24          textureOffset (global 4-component vector of int)
+0:24          textureOffset (temp 4-component vector of int)
 0:24            Construct combined texture-sampler (temp isampler1DArray)
 0:24              'g_tTex1di4' (uniform itexture1DArray)
 0:24              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -36,7 +36,7 @@
 0:25      Sequence
 0:25        move second child to first child (temp 4-component vector of uint)
 0:25          'txval12' (temp 4-component vector of uint)
-0:25          textureOffset (global 4-component vector of uint)
+0:25          textureOffset (temp 4-component vector of uint)
 0:25            Construct combined texture-sampler (temp usampler1DArray)
 0:25              'g_tTex1du4' (uniform utexture1DArray)
 0:25              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -50,7 +50,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of float)
 0:27          'txval20' (temp 4-component vector of float)
-0:27          textureOffset (global 4-component vector of float)
+0:27          textureOffset (temp 4-component vector of float)
 0:27            Construct combined texture-sampler (temp sampler2DArray)
 0:27              'g_tTex2df4' (uniform texture2DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -66,7 +66,7 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of int)
 0:28          'txval21' (temp 4-component vector of int)
-0:28          textureOffset (global 4-component vector of int)
+0:28          textureOffset (temp 4-component vector of int)
 0:28            Construct combined texture-sampler (temp isampler2DArray)
 0:28              'g_tTex2di4' (uniform itexture2DArray)
 0:28              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -82,7 +82,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of uint)
 0:29          'txval22' (temp 4-component vector of uint)
-0:29          textureOffset (global 4-component vector of uint)
+0:29          textureOffset (temp 4-component vector of uint)
 0:29            Construct combined texture-sampler (temp usampler2DArray)
 0:29              'g_tTex2du4' (uniform utexture2DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -152,7 +152,7 @@
 0:23      Sequence
 0:23        move second child to first child (temp 4-component vector of float)
 0:23          'txval10' (temp 4-component vector of float)
-0:23          textureOffset (global 4-component vector of float)
+0:23          textureOffset (temp 4-component vector of float)
 0:23            Construct combined texture-sampler (temp sampler1DArray)
 0:23              'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
 0:23              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -166,7 +166,7 @@
 0:24      Sequence
 0:24        move second child to first child (temp 4-component vector of int)
 0:24          'txval11' (temp 4-component vector of int)
-0:24          textureOffset (global 4-component vector of int)
+0:24          textureOffset (temp 4-component vector of int)
 0:24            Construct combined texture-sampler (temp isampler1DArray)
 0:24              'g_tTex1di4' (uniform itexture1DArray)
 0:24              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -180,7 +180,7 @@
 0:25      Sequence
 0:25        move second child to first child (temp 4-component vector of uint)
 0:25          'txval12' (temp 4-component vector of uint)
-0:25          textureOffset (global 4-component vector of uint)
+0:25          textureOffset (temp 4-component vector of uint)
 0:25            Construct combined texture-sampler (temp usampler1DArray)
 0:25              'g_tTex1du4' (uniform utexture1DArray)
 0:25              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -194,7 +194,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of float)
 0:27          'txval20' (temp 4-component vector of float)
-0:27          textureOffset (global 4-component vector of float)
+0:27          textureOffset (temp 4-component vector of float)
 0:27            Construct combined texture-sampler (temp sampler2DArray)
 0:27              'g_tTex2df4' (uniform texture2DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -210,7 +210,7 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of int)
 0:28          'txval21' (temp 4-component vector of int)
-0:28          textureOffset (global 4-component vector of int)
+0:28          textureOffset (temp 4-component vector of int)
 0:28            Construct combined texture-sampler (temp isampler2DArray)
 0:28              'g_tTex2di4' (uniform itexture2DArray)
 0:28              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -226,7 +226,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of uint)
 0:29          'txval22' (temp 4-component vector of uint)
-0:29          textureOffset (global 4-component vector of uint)
+0:29          textureOffset (temp 4-component vector of uint)
 0:29            Construct combined texture-sampler (temp usampler2DArray)
 0:29              'g_tTex2du4' (uniform utexture2DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
index 1513492..46a6bbc 100644
--- a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out
@@ -8,7 +8,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of float)
 0:27          'txval10' (temp 4-component vector of float)
-0:27          textureGrad (global 4-component vector of float)
+0:27          textureGrad (temp 4-component vector of float)
 0:27            Construct combined texture-sampler (temp sampler1DArray)
 0:27              'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -22,7 +22,7 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of int)
 0:28          'txval11' (temp 4-component vector of int)
-0:28          textureGrad (global 4-component vector of int)
+0:28          textureGrad (temp 4-component vector of int)
 0:28            Construct combined texture-sampler (temp isampler1DArray)
 0:28              'g_tTex1di4' (uniform itexture1DArray)
 0:28              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -36,7 +36,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of uint)
 0:29          'txval12' (temp 4-component vector of uint)
-0:29          textureGrad (global 4-component vector of uint)
+0:29          textureGrad (temp 4-component vector of uint)
 0:29            Construct combined texture-sampler (temp usampler1DArray)
 0:29              'g_tTex1du4' (uniform utexture1DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -50,7 +50,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval20' (temp 4-component vector of float)
-0:31          textureGrad (global 4-component vector of float)
+0:31          textureGrad (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler2DArray)
 0:31              'g_tTex2df4' (uniform texture2DArray)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -67,7 +67,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval21' (temp 4-component vector of int)
-0:32          textureGrad (global 4-component vector of int)
+0:32          textureGrad (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler2DArray)
 0:32              'g_tTex2di4' (uniform itexture2DArray)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -84,7 +84,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval22' (temp 4-component vector of uint)
-0:33          textureGrad (global 4-component vector of uint)
+0:33          textureGrad (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler2DArray)
 0:33              'g_tTex2du4' (uniform utexture2DArray)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -101,7 +101,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval40' (temp 4-component vector of float)
-0:35          textureGrad (global 4-component vector of float)
+0:35          textureGrad (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp samplerCubeArray)
 0:35              'g_tTexcdf4' (uniform textureCubeArray)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -121,7 +121,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval41' (temp 4-component vector of int)
-0:36          textureGrad (global 4-component vector of int)
+0:36          textureGrad (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isamplerCubeArray)
 0:36              'g_tTexcdi4' (uniform itextureCubeArray)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -141,7 +141,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval42' (temp 4-component vector of uint)
-0:37          textureGrad (global 4-component vector of uint)
+0:37          textureGrad (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usamplerCubeArray)
 0:37              'g_tTexcdu4' (uniform utextureCubeArray)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -218,7 +218,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of float)
 0:27          'txval10' (temp 4-component vector of float)
-0:27          textureGrad (global 4-component vector of float)
+0:27          textureGrad (temp 4-component vector of float)
 0:27            Construct combined texture-sampler (temp sampler1DArray)
 0:27              'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -232,7 +232,7 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of int)
 0:28          'txval11' (temp 4-component vector of int)
-0:28          textureGrad (global 4-component vector of int)
+0:28          textureGrad (temp 4-component vector of int)
 0:28            Construct combined texture-sampler (temp isampler1DArray)
 0:28              'g_tTex1di4' (uniform itexture1DArray)
 0:28              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -246,7 +246,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of uint)
 0:29          'txval12' (temp 4-component vector of uint)
-0:29          textureGrad (global 4-component vector of uint)
+0:29          textureGrad (temp 4-component vector of uint)
 0:29            Construct combined texture-sampler (temp usampler1DArray)
 0:29              'g_tTex1du4' (uniform utexture1DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -260,7 +260,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval20' (temp 4-component vector of float)
-0:31          textureGrad (global 4-component vector of float)
+0:31          textureGrad (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler2DArray)
 0:31              'g_tTex2df4' (uniform texture2DArray)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -277,7 +277,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval21' (temp 4-component vector of int)
-0:32          textureGrad (global 4-component vector of int)
+0:32          textureGrad (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler2DArray)
 0:32              'g_tTex2di4' (uniform itexture2DArray)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -294,7 +294,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval22' (temp 4-component vector of uint)
-0:33          textureGrad (global 4-component vector of uint)
+0:33          textureGrad (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler2DArray)
 0:33              'g_tTex2du4' (uniform utexture2DArray)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -311,7 +311,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval40' (temp 4-component vector of float)
-0:35          textureGrad (global 4-component vector of float)
+0:35          textureGrad (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp samplerCubeArray)
 0:35              'g_tTexcdf4' (uniform textureCubeArray)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -331,7 +331,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval41' (temp 4-component vector of int)
-0:36          textureGrad (global 4-component vector of int)
+0:36          textureGrad (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isamplerCubeArray)
 0:36              'g_tTexcdi4' (uniform itextureCubeArray)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -351,7 +351,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval42' (temp 4-component vector of uint)
-0:37          textureGrad (global 4-component vector of uint)
+0:37          textureGrad (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usamplerCubeArray)
 0:37              'g_tTexcdu4' (uniform utextureCubeArray)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
index 92c0c34..395efc2 100644
--- a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out
@@ -8,7 +8,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval10' (temp 4-component vector of float)
-0:31          textureGrad (global 4-component vector of float)
+0:31          textureGrad (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler1D)
 0:31              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -21,7 +21,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval11' (temp 4-component vector of int)
-0:32          textureGrad (global 4-component vector of int)
+0:32          textureGrad (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler1D)
 0:32              'g_tTex1di4' (uniform itexture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -34,7 +34,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval12' (temp 4-component vector of uint)
-0:33          textureGrad (global 4-component vector of uint)
+0:33          textureGrad (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler1D)
 0:33              'g_tTex1du4' (uniform utexture1D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -47,7 +47,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval20' (temp 4-component vector of float)
-0:35          textureGrad (global 4-component vector of float)
+0:35          textureGrad (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp sampler2D)
 0:35              'g_tTex2df4' (uniform texture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -63,7 +63,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval21' (temp 4-component vector of int)
-0:36          textureGrad (global 4-component vector of int)
+0:36          textureGrad (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isampler2D)
 0:36              'g_tTex2di4' (uniform itexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -79,7 +79,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval22' (temp 4-component vector of uint)
-0:37          textureGrad (global 4-component vector of uint)
+0:37          textureGrad (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usampler2D)
 0:37              'g_tTex2du4' (uniform utexture2D)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -95,7 +95,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          'txval30' (temp 4-component vector of float)
-0:39          textureGrad (global 4-component vector of float)
+0:39          textureGrad (temp 4-component vector of float)
 0:39            Construct combined texture-sampler (temp sampler3D)
 0:39              'g_tTex3df4' (uniform texture3D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -114,7 +114,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          'txval31' (temp 4-component vector of int)
-0:40          textureGrad (global 4-component vector of int)
+0:40          textureGrad (temp 4-component vector of int)
 0:40            Construct combined texture-sampler (temp isampler3D)
 0:40              'g_tTex3di4' (uniform itexture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -133,7 +133,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          'txval32' (temp 4-component vector of uint)
-0:41          textureGrad (global 4-component vector of uint)
+0:41          textureGrad (temp 4-component vector of uint)
 0:41            Construct combined texture-sampler (temp usampler3D)
 0:41              'g_tTex3du4' (uniform utexture3D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -152,7 +152,7 @@
 0:43      Sequence
 0:43        move second child to first child (temp 4-component vector of float)
 0:43          'txval40' (temp 4-component vector of float)
-0:43          textureGrad (global 4-component vector of float)
+0:43          textureGrad (temp 4-component vector of float)
 0:43            Construct combined texture-sampler (temp samplerCube)
 0:43              'g_tTexcdf4' (uniform textureCube)
 0:43              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -171,7 +171,7 @@
 0:44      Sequence
 0:44        move second child to first child (temp 4-component vector of int)
 0:44          'txval41' (temp 4-component vector of int)
-0:44          textureGrad (global 4-component vector of int)
+0:44          textureGrad (temp 4-component vector of int)
 0:44            Construct combined texture-sampler (temp isamplerCube)
 0:44              'g_tTexcdi4' (uniform itextureCube)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -190,7 +190,7 @@
 0:45      Sequence
 0:45        move second child to first child (temp 4-component vector of uint)
 0:45          'txval42' (temp 4-component vector of uint)
-0:45          textureGrad (global 4-component vector of uint)
+0:45          textureGrad (temp 4-component vector of uint)
 0:45            Construct combined texture-sampler (temp usamplerCube)
 0:45              'g_tTexcdu4' (uniform utextureCube)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -269,7 +269,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval10' (temp 4-component vector of float)
-0:31          textureGrad (global 4-component vector of float)
+0:31          textureGrad (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler1D)
 0:31              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -282,7 +282,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval11' (temp 4-component vector of int)
-0:32          textureGrad (global 4-component vector of int)
+0:32          textureGrad (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler1D)
 0:32              'g_tTex1di4' (uniform itexture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -295,7 +295,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval12' (temp 4-component vector of uint)
-0:33          textureGrad (global 4-component vector of uint)
+0:33          textureGrad (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler1D)
 0:33              'g_tTex1du4' (uniform utexture1D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -308,7 +308,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval20' (temp 4-component vector of float)
-0:35          textureGrad (global 4-component vector of float)
+0:35          textureGrad (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp sampler2D)
 0:35              'g_tTex2df4' (uniform texture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -324,7 +324,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval21' (temp 4-component vector of int)
-0:36          textureGrad (global 4-component vector of int)
+0:36          textureGrad (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isampler2D)
 0:36              'g_tTex2di4' (uniform itexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -340,7 +340,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval22' (temp 4-component vector of uint)
-0:37          textureGrad (global 4-component vector of uint)
+0:37          textureGrad (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usampler2D)
 0:37              'g_tTex2du4' (uniform utexture2D)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -356,7 +356,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          'txval30' (temp 4-component vector of float)
-0:39          textureGrad (global 4-component vector of float)
+0:39          textureGrad (temp 4-component vector of float)
 0:39            Construct combined texture-sampler (temp sampler3D)
 0:39              'g_tTex3df4' (uniform texture3D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -375,7 +375,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          'txval31' (temp 4-component vector of int)
-0:40          textureGrad (global 4-component vector of int)
+0:40          textureGrad (temp 4-component vector of int)
 0:40            Construct combined texture-sampler (temp isampler3D)
 0:40              'g_tTex3di4' (uniform itexture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -394,7 +394,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          'txval32' (temp 4-component vector of uint)
-0:41          textureGrad (global 4-component vector of uint)
+0:41          textureGrad (temp 4-component vector of uint)
 0:41            Construct combined texture-sampler (temp usampler3D)
 0:41              'g_tTex3du4' (uniform utexture3D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -413,7 +413,7 @@
 0:43      Sequence
 0:43        move second child to first child (temp 4-component vector of float)
 0:43          'txval40' (temp 4-component vector of float)
-0:43          textureGrad (global 4-component vector of float)
+0:43          textureGrad (temp 4-component vector of float)
 0:43            Construct combined texture-sampler (temp samplerCube)
 0:43              'g_tTexcdf4' (uniform textureCube)
 0:43              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -432,7 +432,7 @@
 0:44      Sequence
 0:44        move second child to first child (temp 4-component vector of int)
 0:44          'txval41' (temp 4-component vector of int)
-0:44          textureGrad (global 4-component vector of int)
+0:44          textureGrad (temp 4-component vector of int)
 0:44            Construct combined texture-sampler (temp isamplerCube)
 0:44              'g_tTexcdi4' (uniform itextureCube)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -451,7 +451,7 @@
 0:45      Sequence
 0:45        move second child to first child (temp 4-component vector of uint)
 0:45          'txval42' (temp 4-component vector of uint)
-0:45          textureGrad (global 4-component vector of uint)
+0:45          textureGrad (temp 4-component vector of uint)
 0:45            Construct combined texture-sampler (temp usamplerCube)
 0:45              'g_tTexcdu4' (uniform utextureCube)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
index e890934..2e79be3 100644
--- a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out
@@ -7,7 +7,7 @@
 0:30      Sequence
 0:30        move second child to first child (temp 4-component vector of float)
 0:30          'txval10' (temp 4-component vector of float)
-0:30          textureGrad (global 4-component vector of float)
+0:30          textureGrad (temp 4-component vector of float)
 0:30            Construct combined texture-sampler (temp sampler1D)
 0:30              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:30              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -20,7 +20,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of int)
 0:31          'txval11' (temp 4-component vector of int)
-0:31          textureGrad (global 4-component vector of int)
+0:31          textureGrad (temp 4-component vector of int)
 0:31            Construct combined texture-sampler (temp isampler1D)
 0:31              'g_tTex1di4' (uniform itexture1D)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -33,7 +33,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of uint)
 0:32          'txval12' (temp 4-component vector of uint)
-0:32          textureGrad (global 4-component vector of uint)
+0:32          textureGrad (temp 4-component vector of uint)
 0:32            Construct combined texture-sampler (temp usampler1D)
 0:32              'g_tTex1du4' (uniform utexture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -46,7 +46,7 @@
 0:34      Sequence
 0:34        move second child to first child (temp 4-component vector of float)
 0:34          'txval20' (temp 4-component vector of float)
-0:34          textureGrad (global 4-component vector of float)
+0:34          textureGrad (temp 4-component vector of float)
 0:34            Construct combined texture-sampler (temp sampler2D)
 0:34              'g_tTex2df4' (uniform texture2D)
 0:34              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -62,7 +62,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of int)
 0:35          'txval21' (temp 4-component vector of int)
-0:35          textureGrad (global 4-component vector of int)
+0:35          textureGrad (temp 4-component vector of int)
 0:35            Construct combined texture-sampler (temp isampler2D)
 0:35              'g_tTex2di4' (uniform itexture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -78,7 +78,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of uint)
 0:36          'txval22' (temp 4-component vector of uint)
-0:36          textureGrad (global 4-component vector of uint)
+0:36          textureGrad (temp 4-component vector of uint)
 0:36            Construct combined texture-sampler (temp usampler2D)
 0:36              'g_tTex2du4' (uniform utexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -94,7 +94,7 @@
 0:38      Sequence
 0:38        move second child to first child (temp 4-component vector of float)
 0:38          'txval30' (temp 4-component vector of float)
-0:38          textureGrad (global 4-component vector of float)
+0:38          textureGrad (temp 4-component vector of float)
 0:38            Construct combined texture-sampler (temp sampler3D)
 0:38              'g_tTex3df4' (uniform texture3D)
 0:38              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -113,7 +113,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of int)
 0:39          'txval31' (temp 4-component vector of int)
-0:39          textureGrad (global 4-component vector of int)
+0:39          textureGrad (temp 4-component vector of int)
 0:39            Construct combined texture-sampler (temp isampler3D)
 0:39              'g_tTex3di4' (uniform itexture3D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -132,7 +132,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of uint)
 0:40          'txval32' (temp 4-component vector of uint)
-0:40          textureGrad (global 4-component vector of uint)
+0:40          textureGrad (temp 4-component vector of uint)
 0:40            Construct combined texture-sampler (temp usampler3D)
 0:40              'g_tTex3du4' (uniform utexture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -151,7 +151,7 @@
 0:42      Sequence
 0:42        move second child to first child (temp 4-component vector of float)
 0:42          'txval40' (temp 4-component vector of float)
-0:42          textureGrad (global 4-component vector of float)
+0:42          textureGrad (temp 4-component vector of float)
 0:42            Construct combined texture-sampler (temp samplerCube)
 0:42              'g_tTexcdf4' (uniform textureCube)
 0:42              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -170,7 +170,7 @@
 0:43      Sequence
 0:43        move second child to first child (temp 4-component vector of int)
 0:43          'txval41' (temp 4-component vector of int)
-0:43          textureGrad (global 4-component vector of int)
+0:43          textureGrad (temp 4-component vector of int)
 0:43            Construct combined texture-sampler (temp isamplerCube)
 0:43              'g_tTexcdi4' (uniform itextureCube)
 0:43              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -189,7 +189,7 @@
 0:44      Sequence
 0:44        move second child to first child (temp 4-component vector of uint)
 0:44          'txval42' (temp 4-component vector of uint)
-0:44          textureGrad (global 4-component vector of uint)
+0:44          textureGrad (temp 4-component vector of uint)
 0:44            Construct combined texture-sampler (temp usamplerCube)
 0:44              'g_tTexcdu4' (uniform utextureCube)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -253,7 +253,7 @@
 0:30      Sequence
 0:30        move second child to first child (temp 4-component vector of float)
 0:30          'txval10' (temp 4-component vector of float)
-0:30          textureGrad (global 4-component vector of float)
+0:30          textureGrad (temp 4-component vector of float)
 0:30            Construct combined texture-sampler (temp sampler1D)
 0:30              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:30              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -266,7 +266,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of int)
 0:31          'txval11' (temp 4-component vector of int)
-0:31          textureGrad (global 4-component vector of int)
+0:31          textureGrad (temp 4-component vector of int)
 0:31            Construct combined texture-sampler (temp isampler1D)
 0:31              'g_tTex1di4' (uniform itexture1D)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -279,7 +279,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of uint)
 0:32          'txval12' (temp 4-component vector of uint)
-0:32          textureGrad (global 4-component vector of uint)
+0:32          textureGrad (temp 4-component vector of uint)
 0:32            Construct combined texture-sampler (temp usampler1D)
 0:32              'g_tTex1du4' (uniform utexture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -292,7 +292,7 @@
 0:34      Sequence
 0:34        move second child to first child (temp 4-component vector of float)
 0:34          'txval20' (temp 4-component vector of float)
-0:34          textureGrad (global 4-component vector of float)
+0:34          textureGrad (temp 4-component vector of float)
 0:34            Construct combined texture-sampler (temp sampler2D)
 0:34              'g_tTex2df4' (uniform texture2D)
 0:34              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -308,7 +308,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of int)
 0:35          'txval21' (temp 4-component vector of int)
-0:35          textureGrad (global 4-component vector of int)
+0:35          textureGrad (temp 4-component vector of int)
 0:35            Construct combined texture-sampler (temp isampler2D)
 0:35              'g_tTex2di4' (uniform itexture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -324,7 +324,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of uint)
 0:36          'txval22' (temp 4-component vector of uint)
-0:36          textureGrad (global 4-component vector of uint)
+0:36          textureGrad (temp 4-component vector of uint)
 0:36            Construct combined texture-sampler (temp usampler2D)
 0:36              'g_tTex2du4' (uniform utexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -340,7 +340,7 @@
 0:38      Sequence
 0:38        move second child to first child (temp 4-component vector of float)
 0:38          'txval30' (temp 4-component vector of float)
-0:38          textureGrad (global 4-component vector of float)
+0:38          textureGrad (temp 4-component vector of float)
 0:38            Construct combined texture-sampler (temp sampler3D)
 0:38              'g_tTex3df4' (uniform texture3D)
 0:38              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -359,7 +359,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of int)
 0:39          'txval31' (temp 4-component vector of int)
-0:39          textureGrad (global 4-component vector of int)
+0:39          textureGrad (temp 4-component vector of int)
 0:39            Construct combined texture-sampler (temp isampler3D)
 0:39              'g_tTex3di4' (uniform itexture3D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -378,7 +378,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of uint)
 0:40          'txval32' (temp 4-component vector of uint)
-0:40          textureGrad (global 4-component vector of uint)
+0:40          textureGrad (temp 4-component vector of uint)
 0:40            Construct combined texture-sampler (temp usampler3D)
 0:40              'g_tTex3du4' (uniform utexture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -397,7 +397,7 @@
 0:42      Sequence
 0:42        move second child to first child (temp 4-component vector of float)
 0:42          'txval40' (temp 4-component vector of float)
-0:42          textureGrad (global 4-component vector of float)
+0:42          textureGrad (temp 4-component vector of float)
 0:42            Construct combined texture-sampler (temp samplerCube)
 0:42              'g_tTexcdf4' (uniform textureCube)
 0:42              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -416,7 +416,7 @@
 0:43      Sequence
 0:43        move second child to first child (temp 4-component vector of int)
 0:43          'txval41' (temp 4-component vector of int)
-0:43          textureGrad (global 4-component vector of int)
+0:43          textureGrad (temp 4-component vector of int)
 0:43            Construct combined texture-sampler (temp isamplerCube)
 0:43              'g_tTexcdi4' (uniform itextureCube)
 0:43              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -435,7 +435,7 @@
 0:44      Sequence
 0:44        move second child to first child (temp 4-component vector of uint)
 0:44          'txval42' (temp 4-component vector of uint)
-0:44          textureGrad (global 4-component vector of uint)
+0:44          textureGrad (temp 4-component vector of uint)
 0:44            Construct combined texture-sampler (temp usamplerCube)
 0:44              'g_tTexcdu4' (uniform utextureCube)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
index 9145aa4..7ef5e07 100644
--- a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out
@@ -8,7 +8,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval10' (temp 4-component vector of float)
-0:31          textureGradOffset (global 4-component vector of float)
+0:31          textureGradOffset (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler1D)
 0:31              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -23,7 +23,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval11' (temp 4-component vector of int)
-0:32          textureGradOffset (global 4-component vector of int)
+0:32          textureGradOffset (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler1D)
 0:32              'g_tTex1di4' (uniform itexture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -38,7 +38,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval12' (temp 4-component vector of uint)
-0:33          textureGradOffset (global 4-component vector of uint)
+0:33          textureGradOffset (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler1D)
 0:33              'g_tTex1du4' (uniform utexture1D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -53,7 +53,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval20' (temp 4-component vector of float)
-0:35          textureGradOffset (global 4-component vector of float)
+0:35          textureGradOffset (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp sampler2D)
 0:35              'g_tTex2df4' (uniform texture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -72,7 +72,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval21' (temp 4-component vector of int)
-0:36          textureGradOffset (global 4-component vector of int)
+0:36          textureGradOffset (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isampler2D)
 0:36              'g_tTex2di4' (uniform itexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -91,7 +91,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval22' (temp 4-component vector of uint)
-0:37          textureGradOffset (global 4-component vector of uint)
+0:37          textureGradOffset (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usampler2D)
 0:37              'g_tTex2du4' (uniform utexture2D)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -110,7 +110,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          'txval30' (temp 4-component vector of float)
-0:39          textureGradOffset (global 4-component vector of float)
+0:39          textureGradOffset (temp 4-component vector of float)
 0:39            Construct combined texture-sampler (temp sampler3D)
 0:39              'g_tTex3df4' (uniform texture3D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -133,7 +133,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          'txval31' (temp 4-component vector of int)
-0:40          textureGradOffset (global 4-component vector of int)
+0:40          textureGradOffset (temp 4-component vector of int)
 0:40            Construct combined texture-sampler (temp isampler3D)
 0:40              'g_tTex3di4' (uniform itexture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -156,7 +156,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          'txval32' (temp 4-component vector of uint)
-0:41          textureGradOffset (global 4-component vector of uint)
+0:41          textureGradOffset (temp 4-component vector of uint)
 0:41            Construct combined texture-sampler (temp usampler3D)
 0:41              'g_tTex3du4' (uniform utexture3D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -239,7 +239,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval10' (temp 4-component vector of float)
-0:31          textureGradOffset (global 4-component vector of float)
+0:31          textureGradOffset (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler1D)
 0:31              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -254,7 +254,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval11' (temp 4-component vector of int)
-0:32          textureGradOffset (global 4-component vector of int)
+0:32          textureGradOffset (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler1D)
 0:32              'g_tTex1di4' (uniform itexture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -269,7 +269,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval12' (temp 4-component vector of uint)
-0:33          textureGradOffset (global 4-component vector of uint)
+0:33          textureGradOffset (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler1D)
 0:33              'g_tTex1du4' (uniform utexture1D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -284,7 +284,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval20' (temp 4-component vector of float)
-0:35          textureGradOffset (global 4-component vector of float)
+0:35          textureGradOffset (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp sampler2D)
 0:35              'g_tTex2df4' (uniform texture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -303,7 +303,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval21' (temp 4-component vector of int)
-0:36          textureGradOffset (global 4-component vector of int)
+0:36          textureGradOffset (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isampler2D)
 0:36              'g_tTex2di4' (uniform itexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -322,7 +322,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval22' (temp 4-component vector of uint)
-0:37          textureGradOffset (global 4-component vector of uint)
+0:37          textureGradOffset (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usampler2D)
 0:37              'g_tTex2du4' (uniform utexture2D)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -341,7 +341,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          'txval30' (temp 4-component vector of float)
-0:39          textureGradOffset (global 4-component vector of float)
+0:39          textureGradOffset (temp 4-component vector of float)
 0:39            Construct combined texture-sampler (temp sampler3D)
 0:39              'g_tTex3df4' (uniform texture3D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -364,7 +364,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          'txval31' (temp 4-component vector of int)
-0:40          textureGradOffset (global 4-component vector of int)
+0:40          textureGradOffset (temp 4-component vector of int)
 0:40            Construct combined texture-sampler (temp isampler3D)
 0:40              'g_tTex3di4' (uniform itexture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -387,7 +387,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          'txval32' (temp 4-component vector of uint)
-0:41          textureGradOffset (global 4-component vector of uint)
+0:41          textureGradOffset (temp 4-component vector of uint)
 0:41            Construct combined texture-sampler (temp usampler3D)
 0:41              'g_tTex3du4' (uniform utexture3D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
index e964ff9..2043f38 100644
--- a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out
@@ -8,7 +8,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of float)
 0:27          'txval10' (temp 4-component vector of float)
-0:27          textureGradOffset (global 4-component vector of float)
+0:27          textureGradOffset (temp 4-component vector of float)
 0:27            Construct combined texture-sampler (temp sampler1DArray)
 0:27              'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -24,7 +24,7 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of int)
 0:28          'txval11' (temp 4-component vector of int)
-0:28          textureGradOffset (global 4-component vector of int)
+0:28          textureGradOffset (temp 4-component vector of int)
 0:28            Construct combined texture-sampler (temp isampler1DArray)
 0:28              'g_tTex1di4' (uniform itexture1DArray)
 0:28              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -40,7 +40,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of uint)
 0:29          'txval12' (temp 4-component vector of uint)
-0:29          textureGradOffset (global 4-component vector of uint)
+0:29          textureGradOffset (temp 4-component vector of uint)
 0:29            Construct combined texture-sampler (temp usampler1DArray)
 0:29              'g_tTex1du4' (uniform utexture1DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -56,7 +56,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval20' (temp 4-component vector of float)
-0:31          textureGradOffset (global 4-component vector of float)
+0:31          textureGradOffset (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler2DArray)
 0:31              'g_tTex2df4' (uniform texture2DArray)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -76,7 +76,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval21' (temp 4-component vector of int)
-0:32          textureGradOffset (global 4-component vector of int)
+0:32          textureGradOffset (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler2DArray)
 0:32              'g_tTex2di4' (uniform itexture2DArray)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -96,7 +96,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval22' (temp 4-component vector of uint)
-0:33          textureGradOffset (global 4-component vector of uint)
+0:33          textureGradOffset (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler2DArray)
 0:33              'g_tTex2du4' (uniform utexture2DArray)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -173,7 +173,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of float)
 0:27          'txval10' (temp 4-component vector of float)
-0:27          textureGradOffset (global 4-component vector of float)
+0:27          textureGradOffset (temp 4-component vector of float)
 0:27            Construct combined texture-sampler (temp sampler1DArray)
 0:27              'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -189,7 +189,7 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of int)
 0:28          'txval11' (temp 4-component vector of int)
-0:28          textureGradOffset (global 4-component vector of int)
+0:28          textureGradOffset (temp 4-component vector of int)
 0:28            Construct combined texture-sampler (temp isampler1DArray)
 0:28              'g_tTex1di4' (uniform itexture1DArray)
 0:28              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -205,7 +205,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of uint)
 0:29          'txval12' (temp 4-component vector of uint)
-0:29          textureGradOffset (global 4-component vector of uint)
+0:29          textureGradOffset (temp 4-component vector of uint)
 0:29            Construct combined texture-sampler (temp usampler1DArray)
 0:29              'g_tTex1du4' (uniform utexture1DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -221,7 +221,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval20' (temp 4-component vector of float)
-0:31          textureGradOffset (global 4-component vector of float)
+0:31          textureGradOffset (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler2DArray)
 0:31              'g_tTex2df4' (uniform texture2DArray)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -241,7 +241,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval21' (temp 4-component vector of int)
-0:32          textureGradOffset (global 4-component vector of int)
+0:32          textureGradOffset (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler2DArray)
 0:32              'g_tTex2di4' (uniform itexture2DArray)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -261,7 +261,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval22' (temp 4-component vector of uint)
-0:33          textureGradOffset (global 4-component vector of uint)
+0:33          textureGradOffset (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler2DArray)
 0:33              'g_tTex2du4' (uniform utexture2DArray)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
index d031665..351e2ed 100644
--- a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out
@@ -8,7 +8,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of float)
 0:27          'txval10' (temp 4-component vector of float)
-0:27          textureLod (global 4-component vector of float)
+0:27          textureLod (temp 4-component vector of float)
 0:27            Construct combined texture-sampler (temp sampler1DArray)
 0:27              'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -20,7 +20,7 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of int)
 0:28          'txval11' (temp 4-component vector of int)
-0:28          textureLod (global 4-component vector of int)
+0:28          textureLod (temp 4-component vector of int)
 0:28            Construct combined texture-sampler (temp isampler1DArray)
 0:28              'g_tTex1di4a' (uniform itexture1DArray)
 0:28              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -32,7 +32,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of uint)
 0:29          'txval12' (temp 4-component vector of uint)
-0:29          textureLod (global 4-component vector of uint)
+0:29          textureLod (temp 4-component vector of uint)
 0:29            Construct combined texture-sampler (temp usampler1DArray)
 0:29              'g_tTex1du4a' (uniform utexture1DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -44,7 +44,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval20' (temp 4-component vector of float)
-0:31          textureLod (global 4-component vector of float)
+0:31          textureLod (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler2DArray)
 0:31              'g_tTex2df4a' (uniform texture2DArray)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -57,7 +57,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval21' (temp 4-component vector of int)
-0:32          textureLod (global 4-component vector of int)
+0:32          textureLod (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler2DArray)
 0:32              'g_tTex2di4a' (uniform itexture2DArray)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -70,7 +70,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval22' (temp 4-component vector of uint)
-0:33          textureLod (global 4-component vector of uint)
+0:33          textureLod (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler2DArray)
 0:33              'g_tTex2du4a' (uniform utexture2DArray)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -83,7 +83,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval40' (temp 4-component vector of float)
-0:35          textureLod (global 4-component vector of float)
+0:35          textureLod (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp samplerCubeArray)
 0:35              'g_tTexcdf4a' (uniform textureCubeArray)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -97,7 +97,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval41' (temp 4-component vector of int)
-0:36          textureLod (global 4-component vector of int)
+0:36          textureLod (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isamplerCubeArray)
 0:36              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -111,7 +111,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval42' (temp 4-component vector of uint)
-0:37          textureLod (global 4-component vector of uint)
+0:37          textureLod (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usamplerCubeArray)
 0:37              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -182,7 +182,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of float)
 0:27          'txval10' (temp 4-component vector of float)
-0:27          textureLod (global 4-component vector of float)
+0:27          textureLod (temp 4-component vector of float)
 0:27            Construct combined texture-sampler (temp sampler1DArray)
 0:27              'g_tTex1df4a' (layout(binding=1 ) uniform texture1DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -194,7 +194,7 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of int)
 0:28          'txval11' (temp 4-component vector of int)
-0:28          textureLod (global 4-component vector of int)
+0:28          textureLod (temp 4-component vector of int)
 0:28            Construct combined texture-sampler (temp isampler1DArray)
 0:28              'g_tTex1di4a' (uniform itexture1DArray)
 0:28              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -206,7 +206,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of uint)
 0:29          'txval12' (temp 4-component vector of uint)
-0:29          textureLod (global 4-component vector of uint)
+0:29          textureLod (temp 4-component vector of uint)
 0:29            Construct combined texture-sampler (temp usampler1DArray)
 0:29              'g_tTex1du4a' (uniform utexture1DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -218,7 +218,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval20' (temp 4-component vector of float)
-0:31          textureLod (global 4-component vector of float)
+0:31          textureLod (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler2DArray)
 0:31              'g_tTex2df4a' (uniform texture2DArray)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -231,7 +231,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval21' (temp 4-component vector of int)
-0:32          textureLod (global 4-component vector of int)
+0:32          textureLod (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler2DArray)
 0:32              'g_tTex2di4a' (uniform itexture2DArray)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -244,7 +244,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval22' (temp 4-component vector of uint)
-0:33          textureLod (global 4-component vector of uint)
+0:33          textureLod (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler2DArray)
 0:33              'g_tTex2du4a' (uniform utexture2DArray)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -257,7 +257,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval40' (temp 4-component vector of float)
-0:35          textureLod (global 4-component vector of float)
+0:35          textureLod (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp samplerCubeArray)
 0:35              'g_tTexcdf4a' (uniform textureCubeArray)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -271,7 +271,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval41' (temp 4-component vector of int)
-0:36          textureLod (global 4-component vector of int)
+0:36          textureLod (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isamplerCubeArray)
 0:36              'g_tTexcdi4a' (uniform itextureCubeArray)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -285,7 +285,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval42' (temp 4-component vector of uint)
-0:37          textureLod (global 4-component vector of uint)
+0:37          textureLod (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usamplerCubeArray)
 0:37              'g_tTexcdu4a' (uniform utextureCubeArray)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
index 4a93750..d37090f 100644
--- a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out
@@ -8,7 +8,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of float)
 0:32          'txval10' (temp 4-component vector of float)
-0:32          textureLod (global 4-component vector of float)
+0:32          textureLod (temp 4-component vector of float)
 0:32            Construct combined texture-sampler (temp sampler1D)
 0:32              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -19,7 +19,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of int)
 0:33          'txval11' (temp 4-component vector of int)
-0:33          textureLod (global 4-component vector of int)
+0:33          textureLod (temp 4-component vector of int)
 0:33            Construct combined texture-sampler (temp isampler1D)
 0:33              'g_tTex1di4' (uniform itexture1D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -30,7 +30,7 @@
 0:34      Sequence
 0:34        move second child to first child (temp 4-component vector of uint)
 0:34          'txval12' (temp 4-component vector of uint)
-0:34          textureLod (global 4-component vector of uint)
+0:34          textureLod (temp 4-component vector of uint)
 0:34            Construct combined texture-sampler (temp usampler1D)
 0:34              'g_tTex1du4' (uniform utexture1D)
 0:34              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -41,7 +41,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of float)
 0:36          'txval20' (temp 4-component vector of float)
-0:36          textureLod (global 4-component vector of float)
+0:36          textureLod (temp 4-component vector of float)
 0:36            Construct combined texture-sampler (temp sampler2D)
 0:36              'g_tTex2df4' (uniform texture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -53,7 +53,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of int)
 0:37          'txval21' (temp 4-component vector of int)
-0:37          textureLod (global 4-component vector of int)
+0:37          textureLod (temp 4-component vector of int)
 0:37            Construct combined texture-sampler (temp isampler2D)
 0:37              'g_tTex2di4' (uniform itexture2D)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -65,7 +65,7 @@
 0:38      Sequence
 0:38        move second child to first child (temp 4-component vector of uint)
 0:38          'txval22' (temp 4-component vector of uint)
-0:38          textureLod (global 4-component vector of uint)
+0:38          textureLod (temp 4-component vector of uint)
 0:38            Construct combined texture-sampler (temp usampler2D)
 0:38              'g_tTex2du4' (uniform utexture2D)
 0:38              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -77,7 +77,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of float)
 0:40          'txval30' (temp 4-component vector of float)
-0:40          textureLod (global 4-component vector of float)
+0:40          textureLod (temp 4-component vector of float)
 0:40            Construct combined texture-sampler (temp sampler3D)
 0:40              'g_tTex3df4' (uniform texture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -90,7 +90,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of int)
 0:41          'txval31' (temp 4-component vector of int)
-0:41          textureLod (global 4-component vector of int)
+0:41          textureLod (temp 4-component vector of int)
 0:41            Construct combined texture-sampler (temp isampler3D)
 0:41              'g_tTex3di4' (uniform itexture3D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -103,7 +103,7 @@
 0:42      Sequence
 0:42        move second child to first child (temp 4-component vector of uint)
 0:42          'txval32' (temp 4-component vector of uint)
-0:42          textureLod (global 4-component vector of uint)
+0:42          textureLod (temp 4-component vector of uint)
 0:42            Construct combined texture-sampler (temp usampler3D)
 0:42              'g_tTex3du4' (uniform utexture3D)
 0:42              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -116,7 +116,7 @@
 0:44      Sequence
 0:44        move second child to first child (temp 4-component vector of float)
 0:44          'txval40' (temp 4-component vector of float)
-0:44          textureLod (global 4-component vector of float)
+0:44          textureLod (temp 4-component vector of float)
 0:44            Construct combined texture-sampler (temp samplerCube)
 0:44              'g_tTexcdf4' (uniform textureCube)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -129,7 +129,7 @@
 0:45      Sequence
 0:45        move second child to first child (temp 4-component vector of int)
 0:45          'txval41' (temp 4-component vector of int)
-0:45          textureLod (global 4-component vector of int)
+0:45          textureLod (temp 4-component vector of int)
 0:45            Construct combined texture-sampler (temp isamplerCube)
 0:45              'g_tTexcdi4' (uniform itextureCube)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -142,7 +142,7 @@
 0:46      Sequence
 0:46        move second child to first child (temp 4-component vector of uint)
 0:46          'txval42' (temp 4-component vector of uint)
-0:46          textureLod (global 4-component vector of uint)
+0:46          textureLod (temp 4-component vector of uint)
 0:46            Construct combined texture-sampler (temp usamplerCube)
 0:46              'g_tTexcdu4' (uniform utextureCube)
 0:46              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -216,7 +216,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of float)
 0:32          'txval10' (temp 4-component vector of float)
-0:32          textureLod (global 4-component vector of float)
+0:32          textureLod (temp 4-component vector of float)
 0:32            Construct combined texture-sampler (temp sampler1D)
 0:32              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -227,7 +227,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of int)
 0:33          'txval11' (temp 4-component vector of int)
-0:33          textureLod (global 4-component vector of int)
+0:33          textureLod (temp 4-component vector of int)
 0:33            Construct combined texture-sampler (temp isampler1D)
 0:33              'g_tTex1di4' (uniform itexture1D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -238,7 +238,7 @@
 0:34      Sequence
 0:34        move second child to first child (temp 4-component vector of uint)
 0:34          'txval12' (temp 4-component vector of uint)
-0:34          textureLod (global 4-component vector of uint)
+0:34          textureLod (temp 4-component vector of uint)
 0:34            Construct combined texture-sampler (temp usampler1D)
 0:34              'g_tTex1du4' (uniform utexture1D)
 0:34              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -249,7 +249,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of float)
 0:36          'txval20' (temp 4-component vector of float)
-0:36          textureLod (global 4-component vector of float)
+0:36          textureLod (temp 4-component vector of float)
 0:36            Construct combined texture-sampler (temp sampler2D)
 0:36              'g_tTex2df4' (uniform texture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -261,7 +261,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of int)
 0:37          'txval21' (temp 4-component vector of int)
-0:37          textureLod (global 4-component vector of int)
+0:37          textureLod (temp 4-component vector of int)
 0:37            Construct combined texture-sampler (temp isampler2D)
 0:37              'g_tTex2di4' (uniform itexture2D)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -273,7 +273,7 @@
 0:38      Sequence
 0:38        move second child to first child (temp 4-component vector of uint)
 0:38          'txval22' (temp 4-component vector of uint)
-0:38          textureLod (global 4-component vector of uint)
+0:38          textureLod (temp 4-component vector of uint)
 0:38            Construct combined texture-sampler (temp usampler2D)
 0:38              'g_tTex2du4' (uniform utexture2D)
 0:38              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -285,7 +285,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of float)
 0:40          'txval30' (temp 4-component vector of float)
-0:40          textureLod (global 4-component vector of float)
+0:40          textureLod (temp 4-component vector of float)
 0:40            Construct combined texture-sampler (temp sampler3D)
 0:40              'g_tTex3df4' (uniform texture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -298,7 +298,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of int)
 0:41          'txval31' (temp 4-component vector of int)
-0:41          textureLod (global 4-component vector of int)
+0:41          textureLod (temp 4-component vector of int)
 0:41            Construct combined texture-sampler (temp isampler3D)
 0:41              'g_tTex3di4' (uniform itexture3D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -311,7 +311,7 @@
 0:42      Sequence
 0:42        move second child to first child (temp 4-component vector of uint)
 0:42          'txval32' (temp 4-component vector of uint)
-0:42          textureLod (global 4-component vector of uint)
+0:42          textureLod (temp 4-component vector of uint)
 0:42            Construct combined texture-sampler (temp usampler3D)
 0:42              'g_tTex3du4' (uniform utexture3D)
 0:42              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -324,7 +324,7 @@
 0:44      Sequence
 0:44        move second child to first child (temp 4-component vector of float)
 0:44          'txval40' (temp 4-component vector of float)
-0:44          textureLod (global 4-component vector of float)
+0:44          textureLod (temp 4-component vector of float)
 0:44            Construct combined texture-sampler (temp samplerCube)
 0:44              'g_tTexcdf4' (uniform textureCube)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -337,7 +337,7 @@
 0:45      Sequence
 0:45        move second child to first child (temp 4-component vector of int)
 0:45          'txval41' (temp 4-component vector of int)
-0:45          textureLod (global 4-component vector of int)
+0:45          textureLod (temp 4-component vector of int)
 0:45            Construct combined texture-sampler (temp isamplerCube)
 0:45              'g_tTexcdi4' (uniform itextureCube)
 0:45              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -350,7 +350,7 @@
 0:46      Sequence
 0:46        move second child to first child (temp 4-component vector of uint)
 0:46          'txval42' (temp 4-component vector of uint)
-0:46          textureLod (global 4-component vector of uint)
+0:46          textureLod (temp 4-component vector of uint)
 0:46            Construct combined texture-sampler (temp usamplerCube)
 0:46              'g_tTexcdu4' (uniform utextureCube)
 0:46              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
index c18fa89..0438299 100644
--- a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
+++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out
@@ -7,7 +7,7 @@
 0:30      Sequence
 0:30        move second child to first child (temp 4-component vector of float)
 0:30          'txval10' (temp 4-component vector of float)
-0:30          textureLod (global 4-component vector of float)
+0:30          textureLod (temp 4-component vector of float)
 0:30            Construct combined texture-sampler (temp sampler1D)
 0:30              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:30              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -18,7 +18,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of int)
 0:31          'txval11' (temp 4-component vector of int)
-0:31          textureLod (global 4-component vector of int)
+0:31          textureLod (temp 4-component vector of int)
 0:31            Construct combined texture-sampler (temp isampler1D)
 0:31              'g_tTex1di4' (uniform itexture1D)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -29,7 +29,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of uint)
 0:32          'txval12' (temp 4-component vector of uint)
-0:32          textureLod (global 4-component vector of uint)
+0:32          textureLod (temp 4-component vector of uint)
 0:32            Construct combined texture-sampler (temp usampler1D)
 0:32              'g_tTex1du4' (uniform utexture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -40,7 +40,7 @@
 0:34      Sequence
 0:34        move second child to first child (temp 4-component vector of float)
 0:34          'txval20' (temp 4-component vector of float)
-0:34          textureLod (global 4-component vector of float)
+0:34          textureLod (temp 4-component vector of float)
 0:34            Construct combined texture-sampler (temp sampler2D)
 0:34              'g_tTex2df4' (uniform texture2D)
 0:34              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -52,7 +52,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of int)
 0:35          'txval21' (temp 4-component vector of int)
-0:35          textureLod (global 4-component vector of int)
+0:35          textureLod (temp 4-component vector of int)
 0:35            Construct combined texture-sampler (temp isampler2D)
 0:35              'g_tTex2di4' (uniform itexture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -64,7 +64,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of uint)
 0:36          'txval22' (temp 4-component vector of uint)
-0:36          textureLod (global 4-component vector of uint)
+0:36          textureLod (temp 4-component vector of uint)
 0:36            Construct combined texture-sampler (temp usampler2D)
 0:36              'g_tTex2du4' (uniform utexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -76,7 +76,7 @@
 0:38      Sequence
 0:38        move second child to first child (temp 4-component vector of float)
 0:38          'txval30' (temp 4-component vector of float)
-0:38          textureLod (global 4-component vector of float)
+0:38          textureLod (temp 4-component vector of float)
 0:38            Construct combined texture-sampler (temp sampler3D)
 0:38              'g_tTex3df4' (uniform texture3D)
 0:38              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -89,7 +89,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of int)
 0:39          'txval31' (temp 4-component vector of int)
-0:39          textureLod (global 4-component vector of int)
+0:39          textureLod (temp 4-component vector of int)
 0:39            Construct combined texture-sampler (temp isampler3D)
 0:39              'g_tTex3di4' (uniform itexture3D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -102,7 +102,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of uint)
 0:40          'txval32' (temp 4-component vector of uint)
-0:40          textureLod (global 4-component vector of uint)
+0:40          textureLod (temp 4-component vector of uint)
 0:40            Construct combined texture-sampler (temp usampler3D)
 0:40              'g_tTex3du4' (uniform utexture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -115,7 +115,7 @@
 0:42      Sequence
 0:42        move second child to first child (temp 4-component vector of float)
 0:42          'txval40' (temp 4-component vector of float)
-0:42          textureLod (global 4-component vector of float)
+0:42          textureLod (temp 4-component vector of float)
 0:42            Construct combined texture-sampler (temp samplerCube)
 0:42              'g_tTexcdf4' (uniform textureCube)
 0:42              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -128,7 +128,7 @@
 0:43      Sequence
 0:43        move second child to first child (temp 4-component vector of int)
 0:43          'txval41' (temp 4-component vector of int)
-0:43          textureLod (global 4-component vector of int)
+0:43          textureLod (temp 4-component vector of int)
 0:43            Construct combined texture-sampler (temp isamplerCube)
 0:43              'g_tTexcdi4' (uniform itextureCube)
 0:43              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -141,7 +141,7 @@
 0:44      Sequence
 0:44        move second child to first child (temp 4-component vector of uint)
 0:44          'txval42' (temp 4-component vector of uint)
-0:44          textureLod (global 4-component vector of uint)
+0:44          textureLod (temp 4-component vector of uint)
 0:44            Construct combined texture-sampler (temp usamplerCube)
 0:44              'g_tTexcdu4' (uniform utextureCube)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -199,7 +199,7 @@
 0:30      Sequence
 0:30        move second child to first child (temp 4-component vector of float)
 0:30          'txval10' (temp 4-component vector of float)
-0:30          textureLod (global 4-component vector of float)
+0:30          textureLod (temp 4-component vector of float)
 0:30            Construct combined texture-sampler (temp sampler1D)
 0:30              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:30              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -210,7 +210,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of int)
 0:31          'txval11' (temp 4-component vector of int)
-0:31          textureLod (global 4-component vector of int)
+0:31          textureLod (temp 4-component vector of int)
 0:31            Construct combined texture-sampler (temp isampler1D)
 0:31              'g_tTex1di4' (uniform itexture1D)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -221,7 +221,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of uint)
 0:32          'txval12' (temp 4-component vector of uint)
-0:32          textureLod (global 4-component vector of uint)
+0:32          textureLod (temp 4-component vector of uint)
 0:32            Construct combined texture-sampler (temp usampler1D)
 0:32              'g_tTex1du4' (uniform utexture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -232,7 +232,7 @@
 0:34      Sequence
 0:34        move second child to first child (temp 4-component vector of float)
 0:34          'txval20' (temp 4-component vector of float)
-0:34          textureLod (global 4-component vector of float)
+0:34          textureLod (temp 4-component vector of float)
 0:34            Construct combined texture-sampler (temp sampler2D)
 0:34              'g_tTex2df4' (uniform texture2D)
 0:34              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -244,7 +244,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of int)
 0:35          'txval21' (temp 4-component vector of int)
-0:35          textureLod (global 4-component vector of int)
+0:35          textureLod (temp 4-component vector of int)
 0:35            Construct combined texture-sampler (temp isampler2D)
 0:35              'g_tTex2di4' (uniform itexture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -256,7 +256,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of uint)
 0:36          'txval22' (temp 4-component vector of uint)
-0:36          textureLod (global 4-component vector of uint)
+0:36          textureLod (temp 4-component vector of uint)
 0:36            Construct combined texture-sampler (temp usampler2D)
 0:36              'g_tTex2du4' (uniform utexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -268,7 +268,7 @@
 0:38      Sequence
 0:38        move second child to first child (temp 4-component vector of float)
 0:38          'txval30' (temp 4-component vector of float)
-0:38          textureLod (global 4-component vector of float)
+0:38          textureLod (temp 4-component vector of float)
 0:38            Construct combined texture-sampler (temp sampler3D)
 0:38              'g_tTex3df4' (uniform texture3D)
 0:38              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -281,7 +281,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of int)
 0:39          'txval31' (temp 4-component vector of int)
-0:39          textureLod (global 4-component vector of int)
+0:39          textureLod (temp 4-component vector of int)
 0:39            Construct combined texture-sampler (temp isampler3D)
 0:39              'g_tTex3di4' (uniform itexture3D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -294,7 +294,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of uint)
 0:40          'txval32' (temp 4-component vector of uint)
-0:40          textureLod (global 4-component vector of uint)
+0:40          textureLod (temp 4-component vector of uint)
 0:40            Construct combined texture-sampler (temp usampler3D)
 0:40              'g_tTex3du4' (uniform utexture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -307,7 +307,7 @@
 0:42      Sequence
 0:42        move second child to first child (temp 4-component vector of float)
 0:42          'txval40' (temp 4-component vector of float)
-0:42          textureLod (global 4-component vector of float)
+0:42          textureLod (temp 4-component vector of float)
 0:42            Construct combined texture-sampler (temp samplerCube)
 0:42              'g_tTexcdf4' (uniform textureCube)
 0:42              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -320,7 +320,7 @@
 0:43      Sequence
 0:43        move second child to first child (temp 4-component vector of int)
 0:43          'txval41' (temp 4-component vector of int)
-0:43          textureLod (global 4-component vector of int)
+0:43          textureLod (temp 4-component vector of int)
 0:43            Construct combined texture-sampler (temp isamplerCube)
 0:43              'g_tTexcdi4' (uniform itextureCube)
 0:43              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -333,7 +333,7 @@
 0:44      Sequence
 0:44        move second child to first child (temp 4-component vector of uint)
 0:44          'txval42' (temp 4-component vector of uint)
-0:44          textureLod (global 4-component vector of uint)
+0:44          textureLod (temp 4-component vector of uint)
 0:44            Construct combined texture-sampler (temp usamplerCube)
 0:44              'g_tTexcdu4' (uniform utextureCube)
 0:44              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
index 4d81649..0f0f968 100644
--- a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out
@@ -8,7 +8,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval10' (temp 4-component vector of float)
-0:31          textureLodOffset (global 4-component vector of float)
+0:31          textureLodOffset (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler1D)
 0:31              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -21,7 +21,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval11' (temp 4-component vector of int)
-0:32          textureLodOffset (global 4-component vector of int)
+0:32          textureLodOffset (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler1D)
 0:32              'g_tTex1di4' (uniform itexture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -34,7 +34,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval12' (temp 4-component vector of uint)
-0:33          textureLodOffset (global 4-component vector of uint)
+0:33          textureLodOffset (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler1D)
 0:33              'g_tTex1du4' (uniform utexture1D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -47,7 +47,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval20' (temp 4-component vector of float)
-0:35          textureLodOffset (global 4-component vector of float)
+0:35          textureLodOffset (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp sampler2D)
 0:35              'g_tTex2df4' (uniform texture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -62,7 +62,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval21' (temp 4-component vector of int)
-0:36          textureLodOffset (global 4-component vector of int)
+0:36          textureLodOffset (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isampler2D)
 0:36              'g_tTex2di4' (uniform itexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -77,7 +77,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval22' (temp 4-component vector of uint)
-0:37          textureLodOffset (global 4-component vector of uint)
+0:37          textureLodOffset (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usampler2D)
 0:37              'g_tTex2du4' (uniform utexture2D)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -92,7 +92,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          'txval30' (temp 4-component vector of float)
-0:39          textureLodOffset (global 4-component vector of float)
+0:39          textureLodOffset (temp 4-component vector of float)
 0:39            Construct combined texture-sampler (temp sampler3D)
 0:39              'g_tTex3df4' (uniform texture3D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -109,7 +109,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          'txval31' (temp 4-component vector of int)
-0:40          textureLodOffset (global 4-component vector of int)
+0:40          textureLodOffset (temp 4-component vector of int)
 0:40            Construct combined texture-sampler (temp isampler3D)
 0:40              'g_tTex3di4' (uniform itexture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -126,7 +126,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          'txval32' (temp 4-component vector of uint)
-0:41          textureLodOffset (global 4-component vector of uint)
+0:41          textureLodOffset (temp 4-component vector of uint)
 0:41            Construct combined texture-sampler (temp usampler3D)
 0:41              'g_tTex3du4' (uniform utexture3D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -203,7 +203,7 @@
 0:31      Sequence
 0:31        move second child to first child (temp 4-component vector of float)
 0:31          'txval10' (temp 4-component vector of float)
-0:31          textureLodOffset (global 4-component vector of float)
+0:31          textureLodOffset (temp 4-component vector of float)
 0:31            Construct combined texture-sampler (temp sampler1D)
 0:31              'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
 0:31              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -216,7 +216,7 @@
 0:32      Sequence
 0:32        move second child to first child (temp 4-component vector of int)
 0:32          'txval11' (temp 4-component vector of int)
-0:32          textureLodOffset (global 4-component vector of int)
+0:32          textureLodOffset (temp 4-component vector of int)
 0:32            Construct combined texture-sampler (temp isampler1D)
 0:32              'g_tTex1di4' (uniform itexture1D)
 0:32              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -229,7 +229,7 @@
 0:33      Sequence
 0:33        move second child to first child (temp 4-component vector of uint)
 0:33          'txval12' (temp 4-component vector of uint)
-0:33          textureLodOffset (global 4-component vector of uint)
+0:33          textureLodOffset (temp 4-component vector of uint)
 0:33            Construct combined texture-sampler (temp usampler1D)
 0:33              'g_tTex1du4' (uniform utexture1D)
 0:33              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -242,7 +242,7 @@
 0:35      Sequence
 0:35        move second child to first child (temp 4-component vector of float)
 0:35          'txval20' (temp 4-component vector of float)
-0:35          textureLodOffset (global 4-component vector of float)
+0:35          textureLodOffset (temp 4-component vector of float)
 0:35            Construct combined texture-sampler (temp sampler2D)
 0:35              'g_tTex2df4' (uniform texture2D)
 0:35              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -257,7 +257,7 @@
 0:36      Sequence
 0:36        move second child to first child (temp 4-component vector of int)
 0:36          'txval21' (temp 4-component vector of int)
-0:36          textureLodOffset (global 4-component vector of int)
+0:36          textureLodOffset (temp 4-component vector of int)
 0:36            Construct combined texture-sampler (temp isampler2D)
 0:36              'g_tTex2di4' (uniform itexture2D)
 0:36              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -272,7 +272,7 @@
 0:37      Sequence
 0:37        move second child to first child (temp 4-component vector of uint)
 0:37          'txval22' (temp 4-component vector of uint)
-0:37          textureLodOffset (global 4-component vector of uint)
+0:37          textureLodOffset (temp 4-component vector of uint)
 0:37            Construct combined texture-sampler (temp usampler2D)
 0:37              'g_tTex2du4' (uniform utexture2D)
 0:37              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -287,7 +287,7 @@
 0:39      Sequence
 0:39        move second child to first child (temp 4-component vector of float)
 0:39          'txval30' (temp 4-component vector of float)
-0:39          textureLodOffset (global 4-component vector of float)
+0:39          textureLodOffset (temp 4-component vector of float)
 0:39            Construct combined texture-sampler (temp sampler3D)
 0:39              'g_tTex3df4' (uniform texture3D)
 0:39              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -304,7 +304,7 @@
 0:40      Sequence
 0:40        move second child to first child (temp 4-component vector of int)
 0:40          'txval31' (temp 4-component vector of int)
-0:40          textureLodOffset (global 4-component vector of int)
+0:40          textureLodOffset (temp 4-component vector of int)
 0:40            Construct combined texture-sampler (temp isampler3D)
 0:40              'g_tTex3di4' (uniform itexture3D)
 0:40              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -321,7 +321,7 @@
 0:41      Sequence
 0:41        move second child to first child (temp 4-component vector of uint)
 0:41          'txval32' (temp 4-component vector of uint)
-0:41          textureLodOffset (global 4-component vector of uint)
+0:41          textureLodOffset (temp 4-component vector of uint)
 0:41            Construct combined texture-sampler (temp usampler3D)
 0:41              'g_tTex3du4' (uniform utexture3D)
 0:41              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
index ef3dcf1..8eb74cd 100644
--- a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
+++ b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out
@@ -8,7 +8,7 @@
 0:23      Sequence
 0:23        move second child to first child (temp 4-component vector of float)
 0:23          'txval10' (temp 4-component vector of float)
-0:23          textureLodOffset (global 4-component vector of float)
+0:23          textureLodOffset (temp 4-component vector of float)
 0:23            Construct combined texture-sampler (temp sampler1DArray)
 0:23              'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
 0:23              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -22,7 +22,7 @@
 0:24      Sequence
 0:24        move second child to first child (temp 4-component vector of int)
 0:24          'txval11' (temp 4-component vector of int)
-0:24          textureLodOffset (global 4-component vector of int)
+0:24          textureLodOffset (temp 4-component vector of int)
 0:24            Construct combined texture-sampler (temp isampler1DArray)
 0:24              'g_tTex1di4' (uniform itexture1DArray)
 0:24              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -36,7 +36,7 @@
 0:25      Sequence
 0:25        move second child to first child (temp 4-component vector of uint)
 0:25          'txval12' (temp 4-component vector of uint)
-0:25          textureLodOffset (global 4-component vector of uint)
+0:25          textureLodOffset (temp 4-component vector of uint)
 0:25            Construct combined texture-sampler (temp usampler1DArray)
 0:25              'g_tTex1du4' (uniform utexture1DArray)
 0:25              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -50,7 +50,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of float)
 0:27          'txval20' (temp 4-component vector of float)
-0:27          textureLodOffset (global 4-component vector of float)
+0:27          textureLodOffset (temp 4-component vector of float)
 0:27            Construct combined texture-sampler (temp sampler2DArray)
 0:27              'g_tTex2df4' (uniform texture2DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -66,7 +66,7 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of int)
 0:28          'txval21' (temp 4-component vector of int)
-0:28          textureLodOffset (global 4-component vector of int)
+0:28          textureLodOffset (temp 4-component vector of int)
 0:28            Construct combined texture-sampler (temp isampler2DArray)
 0:28              'g_tTex2di4' (uniform itexture2DArray)
 0:28              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -82,7 +82,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of uint)
 0:29          'txval22' (temp 4-component vector of uint)
-0:29          textureLodOffset (global 4-component vector of uint)
+0:29          textureLodOffset (temp 4-component vector of uint)
 0:29            Construct combined texture-sampler (temp usampler2DArray)
 0:29              'g_tTex2du4' (uniform utexture2DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -152,7 +152,7 @@
 0:23      Sequence
 0:23        move second child to first child (temp 4-component vector of float)
 0:23          'txval10' (temp 4-component vector of float)
-0:23          textureLodOffset (global 4-component vector of float)
+0:23          textureLodOffset (temp 4-component vector of float)
 0:23            Construct combined texture-sampler (temp sampler1DArray)
 0:23              'g_tTex1df4' (layout(binding=0 ) uniform texture1DArray)
 0:23              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -166,7 +166,7 @@
 0:24      Sequence
 0:24        move second child to first child (temp 4-component vector of int)
 0:24          'txval11' (temp 4-component vector of int)
-0:24          textureLodOffset (global 4-component vector of int)
+0:24          textureLodOffset (temp 4-component vector of int)
 0:24            Construct combined texture-sampler (temp isampler1DArray)
 0:24              'g_tTex1di4' (uniform itexture1DArray)
 0:24              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -180,7 +180,7 @@
 0:25      Sequence
 0:25        move second child to first child (temp 4-component vector of uint)
 0:25          'txval12' (temp 4-component vector of uint)
-0:25          textureLodOffset (global 4-component vector of uint)
+0:25          textureLodOffset (temp 4-component vector of uint)
 0:25            Construct combined texture-sampler (temp usampler1DArray)
 0:25              'g_tTex1du4' (uniform utexture1DArray)
 0:25              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -194,7 +194,7 @@
 0:27      Sequence
 0:27        move second child to first child (temp 4-component vector of float)
 0:27          'txval20' (temp 4-component vector of float)
-0:27          textureLodOffset (global 4-component vector of float)
+0:27          textureLodOffset (temp 4-component vector of float)
 0:27            Construct combined texture-sampler (temp sampler2DArray)
 0:27              'g_tTex2df4' (uniform texture2DArray)
 0:27              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -210,7 +210,7 @@
 0:28      Sequence
 0:28        move second child to first child (temp 4-component vector of int)
 0:28          'txval21' (temp 4-component vector of int)
-0:28          textureLodOffset (global 4-component vector of int)
+0:28          textureLodOffset (temp 4-component vector of int)
 0:28            Construct combined texture-sampler (temp isampler2DArray)
 0:28              'g_tTex2di4' (uniform itexture2DArray)
 0:28              'g_sSamp' (layout(binding=0 ) uniform sampler)
@@ -226,7 +226,7 @@
 0:29      Sequence
 0:29        move second child to first child (temp 4-component vector of uint)
 0:29          'txval22' (temp 4-component vector of uint)
-0:29          textureLodOffset (global 4-component vector of uint)
+0:29          textureLodOffset (temp 4-component vector of uint)
 0:29            Construct combined texture-sampler (temp usampler2DArray)
 0:29              'g_tTex2du4' (uniform utexture2DArray)
 0:29              'g_sSamp' (layout(binding=0 ) uniform sampler)
diff --git a/Test/baseResults/hlsl.struct.frag.out b/Test/baseResults/hlsl.struct.frag.out
index 04117d7..5fef959 100755
--- a/Test/baseResults/hlsl.struct.frag.out
+++ b/Test/baseResults/hlsl.struct.frag.out
@@ -16,10 +16,7 @@
 0:39        's3' (temp structure{temp 3-component vector of bool b3})
 0:40      move second child to first child (temp 4-component vector of float)
 0:40        i: direct index for structure (temp 4-component vector of float)
-0:40          s2: direct index for structure (layout(offset=48 ) uniform structure{temp 4-component vector of float i})
-0:40            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6})
-0:40            Constant:
-0:40              1 (const uint)
+0:40          's2' (global structure{temp 4-component vector of float i})
 0:40          Constant:
 0:40            0 (const int)
 0:?         'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float)
@@ -29,8 +26,9 @@
 0:42          'input' (layout(location=0 ) in 4-component vector of float)
 0:42        Branch: Return
 0:?   Linker Objects
+0:?     's2' (global structure{temp 4-component vector of float i})
 0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6})
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6})
 0:?     'input' (layout(location=0 ) in 4-component vector of float)
 0:?     'a' (layout(location=1 ) smooth in 4-component vector of float)
 0:?     'b' (layout(location=2 ) flat in bool)
@@ -58,10 +56,7 @@
 0:39        's3' (temp structure{temp 3-component vector of bool b3})
 0:40      move second child to first child (temp 4-component vector of float)
 0:40        i: direct index for structure (temp 4-component vector of float)
-0:40          s2: direct index for structure (layout(offset=48 ) uniform structure{temp 4-component vector of float i})
-0:40            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6})
-0:40            Constant:
-0:40              1 (const uint)
+0:40          's2' (global structure{temp 4-component vector of float i})
 0:40          Constant:
 0:40            0 (const int)
 0:?         'ff4' (layout(location=7 binding=0 offset=4 ) in 4-component vector of float)
@@ -71,8 +66,9 @@
 0:42          'input' (layout(location=0 ) in 4-component vector of float)
 0:42        Branch: Return
 0:?   Linker Objects
+0:?     's2' (global structure{temp 4-component vector of float i})
 0:?     '@entryPointOutput' (layout(location=0 ) out 4-component vector of float)
-0:?     'anon@0' (uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(offset=48 ) uniform structure{temp 4-component vector of float i} s2, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6})
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform structure{temp bool b, temp bool c, temp 4-component vector of float a, temp 4-component vector of float d} s1, layout(binding=5 offset=1620 ) uniform float ff5, layout(binding=8 offset=1636 ) uniform float ff6})
 0:?     'input' (layout(location=0 ) in 4-component vector of float)
 0:?     'a' (layout(location=1 ) smooth in 4-component vector of float)
 0:?     'b' (layout(location=2 ) flat in bool)
@@ -90,28 +86,28 @@
                               Capability Shader
                1:             ExtInstImport  "GLSL.std.450"
                               MemoryModel Logical GLSL450
-                              EntryPoint Fragment 4  "PixelShaderFunction" 29 34 35 38 40 42 45 46 47 48
+                              EntryPoint Fragment 4  "PixelShaderFunction" 25 30 31 38 40 42 45 46 47 48
                               ExecutionMode 4 OriginUpperLeft
                               Name 4  "PixelShaderFunction"
                               Name 8  "FS"
                               MemberName 8(FS) 0  "b3"
                               Name 10  "s3"
-                              Name 20  "myS"
-                              MemberName 20(myS) 0  "b"
-                              MemberName 20(myS) 1  "c"
-                              MemberName 20(myS) 2  "a"
-                              MemberName 20(myS) 3  "d"
-                              Name 21  ""
-                              MemberName 21 0  "i"
-                              Name 22  "$Global"
-                              MemberName 22($Global) 0  "s1"
-                              MemberName 22($Global) 1  "s2"
-                              MemberName 22($Global) 2  "ff5"
-                              MemberName 22($Global) 3  "ff6"
-                              Name 24  ""
-                              Name 29  "ff4"
-                              Name 34  "@entryPointOutput"
-                              Name 35  "input"
+                              Name 19  ""
+                              MemberName 19 0  "i"
+                              Name 21  "s2"
+                              Name 25  "ff4"
+                              Name 30  "@entryPointOutput"
+                              Name 31  "input"
+                              Name 34  "myS"
+                              MemberName 34(myS) 0  "b"
+                              MemberName 34(myS) 1  "c"
+                              MemberName 34(myS) 2  "a"
+                              MemberName 34(myS) 3  "d"
+                              Name 35  "$Global"
+                              MemberName 35($Global) 0  "s1"
+                              MemberName 35($Global) 1  "ff5"
+                              MemberName 35($Global) 2  "ff6"
+                              Name 37  ""
                               Name 38  "a"
                               Name 40  "b"
                               Name 42  "c"
@@ -119,22 +115,13 @@
                               Name 46  "ff1"
                               Name 47  "ff2"
                               Name 48  "ff3"
-                              MemberDecorate 20(myS) 0 Offset 0
-                              MemberDecorate 20(myS) 1 Offset 4
-                              MemberDecorate 20(myS) 2 Offset 16
-                              MemberDecorate 20(myS) 3 Offset 32
-                              MemberDecorate 21 0 Offset 0
-                              MemberDecorate 22($Global) 0 Offset 0
-                              MemberDecorate 22($Global) 1 Offset 48
-                              MemberDecorate 22($Global) 2 Offset 1620
-                              MemberDecorate 22($Global) 3 Offset 1636
-                              Decorate 22($Global) Block
-                              Decorate 24 DescriptorSet 0
-                              Decorate 29(ff4) Offset 4
-                              Decorate 29(ff4) Location 7
-                              Decorate 29(ff4) Binding 0
-                              Decorate 34(@entryPointOutput) Location 0
-                              Decorate 35(input) Location 0
+                              Decorate 25(ff4) Offset 4
+                              Decorate 25(ff4) Location 7
+                              Decorate 25(ff4) Binding 0
+                              Decorate 30(@entryPointOutput) Location 0
+                              Decorate 31(input) Location 0
+                              Decorate 35($Global) Block
+                              Decorate 37 DescriptorSet 0
                               Decorate 38(a) Location 1
                               Decorate 40(b) Flat
                               Decorate 40(b) Location 2
@@ -155,29 +142,29 @@
                7:             TypeVector 6(bool) 3
            8(FS):             TypeStruct 7(bvec3)
                9:             TypePointer Function 8(FS)
-              17:             TypeInt 32 0
-              18:             TypeFloat 32
-              19:             TypeVector 18(float) 4
-         20(myS):             TypeStruct 17(int) 17(int) 19(fvec4) 19(fvec4)
-              21:             TypeStruct 19(fvec4)
-     22($Global):             TypeStruct 20(myS) 21(struct) 18(float) 18(float)
-              23:             TypePointer Uniform 22($Global)
-              24:     23(ptr) Variable Uniform
-              25:             TypeInt 32 1
-              26:     25(int) Constant 1
-              27:     25(int) Constant 0
-              28:             TypePointer Input 19(fvec4)
-         29(ff4):     28(ptr) Variable Input
-              31:             TypePointer Uniform 19(fvec4)
-              33:             TypePointer Output 19(fvec4)
-34(@entryPointOutput):     33(ptr) Variable Output
-       35(input):     28(ptr) Variable Input
-           38(a):     28(ptr) Variable Input
+              17:             TypeFloat 32
+              18:             TypeVector 17(float) 4
+              19:             TypeStruct 18(fvec4)
+              20:             TypePointer Private 19(struct)
+          21(s2):     20(ptr) Variable Private
+              22:             TypeInt 32 1
+              23:     22(int) Constant 0
+              24:             TypePointer Input 18(fvec4)
+         25(ff4):     24(ptr) Variable Input
+              27:             TypePointer Private 18(fvec4)
+              29:             TypePointer Output 18(fvec4)
+30(@entryPointOutput):     29(ptr) Variable Output
+       31(input):     24(ptr) Variable Input
+         34(myS):             TypeStruct 6(bool) 6(bool) 18(fvec4) 18(fvec4)
+     35($Global):             TypeStruct 34(myS) 17(float) 17(float)
+              36:             TypePointer Uniform 35($Global)
+              37:     36(ptr) Variable Uniform
+           38(a):     24(ptr) Variable Input
               39:             TypePointer Input 6(bool)
            40(b):     39(ptr) Variable Input
-              41:             TypePointer Input 18(float)
+              41:             TypePointer Input 17(float)
            42(c):     41(ptr) Variable Input
-              43:             TypeVector 18(float) 2
+              43:             TypeVector 17(float) 2
               44:             TypePointer Input 43(fvec2)
            45(d):     44(ptr) Variable Input
          46(ff1):     39(ptr) Variable Input
@@ -192,10 +179,10 @@
               14:    7(bvec3) CompositeExtract 12 0
               15:    7(bvec3) LogicalEqual 13 14
               16:     6(bool) All 15
-              30:   19(fvec4) Load 29(ff4)
-              32:     31(ptr) AccessChain 24 26 27
-                              Store 32 30
-              36:   19(fvec4) Load 35(input)
-                              Store 34(@entryPointOutput) 36
+              26:   18(fvec4) Load 25(ff4)
+              28:     27(ptr) AccessChain 21(s2) 23
+                              Store 28 26
+              32:   18(fvec4) Load 31(input)
+                              Store 30(@entryPointOutput) 32
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/hlsl.tx.bracket.frag.out b/Test/baseResults/hlsl.tx.bracket.frag.out
new file mode 100644
index 0000000..0769cde
--- /dev/null
+++ b/Test/baseResults/hlsl.tx.bracket.frag.out
@@ -0,0 +1,702 @@
+hlsl.tx.bracket.frag
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:38  Function Definition: Fn1(vi4; (temp 4-component vector of int)
+0:38    Function Parameters: 
+0:38      'x' (in 4-component vector of int)
+0:?     Sequence
+0:38      Branch: Return with expression
+0:38        'x' (in 4-component vector of int)
+0:39  Function Definition: Fn1(vu4; (temp 4-component vector of uint)
+0:39    Function Parameters: 
+0:39      'x' (in 4-component vector of uint)
+0:?     Sequence
+0:39      Branch: Return with expression
+0:39        'x' (in 4-component vector of uint)
+0:40  Function Definition: Fn1(vf4; (temp 4-component vector of float)
+0:40    Function Parameters: 
+0:40      'x' (in 4-component vector of float)
+0:?     Sequence
+0:40      Branch: Return with expression
+0:40        'x' (in 4-component vector of float)
+0:42  Function Definition: SomeValue( (temp 4-component vector of float)
+0:42    Function Parameters: 
+0:?     Sequence
+0:42      Branch: Return with expression
+0:42        Convert int to float (temp 4-component vector of float)
+0:42          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:42            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:42            Constant:
+0:42              3 (const uint)
+0:45  Function Definition: main( (temp structure{temp 4-component vector of float Color})
+0:45    Function Parameters: 
+0:?     Sequence
+0:49      textureFetch (temp 4-component vector of float)
+0:49        'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
+0:49        c1: direct index for structure (layout(offset=0 ) uniform int)
+0:49          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:49          Constant:
+0:49            0 (const uint)
+0:49        Constant:
+0:49          0 (const int)
+0:51      Sequence
+0:51        move second child to first child (temp 4-component vector of float)
+0:51          'r00' (temp 4-component vector of float)
+0:51          textureFetch (temp 4-component vector of float)
+0:51            'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
+0:51            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:51              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:51              Constant:
+0:51                0 (const uint)
+0:51            Constant:
+0:51              0 (const int)
+0:52      Sequence
+0:52        move second child to first child (temp 4-component vector of int)
+0:52          'r01' (temp 4-component vector of int)
+0:52          textureFetch (temp 4-component vector of int)
+0:52            'g_tTex1di4' (uniform itexture1D)
+0:52            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:52              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52              Constant:
+0:52                0 (const uint)
+0:52            Constant:
+0:52              0 (const int)
+0:53      Sequence
+0:53        move second child to first child (temp 4-component vector of uint)
+0:53          'r02' (temp 4-component vector of uint)
+0:53          textureFetch (temp 4-component vector of uint)
+0:53            'g_tTex1du4' (uniform utexture1D)
+0:53            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:53              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53              Constant:
+0:53                0 (const uint)
+0:53            Constant:
+0:53              0 (const int)
+0:56      Sequence
+0:56        move second child to first child (temp 4-component vector of float)
+0:56          'r10' (temp 4-component vector of float)
+0:56          textureFetch (temp 4-component vector of float)
+0:56            'g_tTex2df4' (uniform texture2D)
+0:56            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:56              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:56              Constant:
+0:56                1 (const uint)
+0:56            Constant:
+0:56              0 (const int)
+0:57      Sequence
+0:57        move second child to first child (temp 4-component vector of int)
+0:57          'r11' (temp 4-component vector of int)
+0:57          textureFetch (temp 4-component vector of int)
+0:57            'g_tTex2di4' (uniform itexture2D)
+0:57            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:57              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57              Constant:
+0:57                1 (const uint)
+0:57            Constant:
+0:57              0 (const int)
+0:58      Sequence
+0:58        move second child to first child (temp 4-component vector of uint)
+0:58          'r12' (temp 4-component vector of uint)
+0:58          textureFetch (temp 4-component vector of uint)
+0:58            'g_tTex2du4' (uniform utexture2D)
+0:58            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:58              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58              Constant:
+0:58                1 (const uint)
+0:58            Constant:
+0:58              0 (const int)
+0:61      Sequence
+0:61        move second child to first child (temp 4-component vector of float)
+0:61          'r20' (temp 4-component vector of float)
+0:61          textureFetch (temp 4-component vector of float)
+0:61            'g_tTex3df4' (uniform texture3D)
+0:61            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:61              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:61              Constant:
+0:61                2 (const uint)
+0:61            Constant:
+0:61              0 (const int)
+0:62      Sequence
+0:62        move second child to first child (temp 4-component vector of int)
+0:62          'r21' (temp 4-component vector of int)
+0:62          textureFetch (temp 4-component vector of int)
+0:62            'g_tTex3di4' (uniform itexture3D)
+0:62            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:62              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62              Constant:
+0:62                2 (const uint)
+0:62            Constant:
+0:62              0 (const int)
+0:63      Sequence
+0:63        move second child to first child (temp 4-component vector of uint)
+0:63          'r22' (temp 4-component vector of uint)
+0:63          textureFetch (temp 4-component vector of uint)
+0:63            'g_tTex3du4' (uniform utexture3D)
+0:63            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:63              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63              Constant:
+0:63                2 (const uint)
+0:63            Constant:
+0:63              0 (const int)
+0:66      Function Call: Fn1(vf4; (temp 4-component vector of float)
+0:66        textureFetch (temp 4-component vector of float)
+0:66          'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
+0:66          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:66            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:66            Constant:
+0:66              0 (const uint)
+0:66          Constant:
+0:66            0 (const int)
+0:67      Function Call: Fn1(vi4; (temp 4-component vector of int)
+0:67        textureFetch (temp 4-component vector of int)
+0:67          'g_tTex1di4' (uniform itexture1D)
+0:67          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:67            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:67            Constant:
+0:67              0 (const uint)
+0:67          Constant:
+0:67            0 (const int)
+0:68      Function Call: Fn1(vu4; (temp 4-component vector of uint)
+0:68        textureFetch (temp 4-component vector of uint)
+0:68          'g_tTex1du4' (uniform utexture1D)
+0:68          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:68            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:68            Constant:
+0:68              0 (const uint)
+0:68          Constant:
+0:68            0 (const int)
+0:70      move second child to first child (temp 4-component vector of float)
+0:70        Color: direct index for structure (temp 4-component vector of float)
+0:70          'psout' (temp structure{temp 4-component vector of float Color})
+0:70          Constant:
+0:70            0 (const int)
+0:70        Constant:
+0:70          1.000000
+0:70          1.000000
+0:70          1.000000
+0:70          1.000000
+0:72      Sequence
+0:72        Sequence
+0:72          move second child to first child (temp 4-component vector of float)
+0:?             'Color' (layout(location=0 ) out 4-component vector of float)
+0:72            Color: direct index for structure (temp 4-component vector of float)
+0:72              'psout' (temp structure{temp 4-component vector of float Color})
+0:72              Constant:
+0:72                0 (const int)
+0:72        Branch: Return
+0:?   Linker Objects
+0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
+0:?     'g_tTex1di4' (uniform itexture1D)
+0:?     'g_tTex1du4' (uniform utexture1D)
+0:?     'g_tTex2df4' (uniform texture2D)
+0:?     'g_tTex2di4' (uniform itexture2D)
+0:?     'g_tTex2du4' (uniform utexture2D)
+0:?     'g_tTex3df4' (uniform texture3D)
+0:?     'g_tTex3di4' (uniform itexture3D)
+0:?     'g_tTex3du4' (uniform utexture3D)
+0:?     'g_tTex1df4a' (uniform texture1DArray)
+0:?     'g_tTex1di4a' (uniform itexture1DArray)
+0:?     'g_tTex1du4a' (uniform utexture1DArray)
+0:?     'g_tTex2df4a' (uniform texture2DArray)
+0:?     'g_tTex2di4a' (uniform itexture2DArray)
+0:?     'g_tTex2du4a' (uniform utexture2DArray)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+
+
+Linked fragment stage:
+
+
+Shader version: 450
+gl_FragCoord origin is upper left
+0:? Sequence
+0:38  Function Definition: Fn1(vi4; (temp 4-component vector of int)
+0:38    Function Parameters: 
+0:38      'x' (in 4-component vector of int)
+0:?     Sequence
+0:38      Branch: Return with expression
+0:38        'x' (in 4-component vector of int)
+0:39  Function Definition: Fn1(vu4; (temp 4-component vector of uint)
+0:39    Function Parameters: 
+0:39      'x' (in 4-component vector of uint)
+0:?     Sequence
+0:39      Branch: Return with expression
+0:39        'x' (in 4-component vector of uint)
+0:40  Function Definition: Fn1(vf4; (temp 4-component vector of float)
+0:40    Function Parameters: 
+0:40      'x' (in 4-component vector of float)
+0:?     Sequence
+0:40      Branch: Return with expression
+0:40        'x' (in 4-component vector of float)
+0:42  Function Definition: SomeValue( (temp 4-component vector of float)
+0:42    Function Parameters: 
+0:?     Sequence
+0:42      Branch: Return with expression
+0:42        Convert int to float (temp 4-component vector of float)
+0:42          c4: direct index for structure (layout(offset=32 ) uniform 4-component vector of int)
+0:42            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:42            Constant:
+0:42              3 (const uint)
+0:45  Function Definition: main( (temp structure{temp 4-component vector of float Color})
+0:45    Function Parameters: 
+0:?     Sequence
+0:49      textureFetch (temp 4-component vector of float)
+0:49        'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
+0:49        c1: direct index for structure (layout(offset=0 ) uniform int)
+0:49          'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:49          Constant:
+0:49            0 (const uint)
+0:49        Constant:
+0:49          0 (const int)
+0:51      Sequence
+0:51        move second child to first child (temp 4-component vector of float)
+0:51          'r00' (temp 4-component vector of float)
+0:51          textureFetch (temp 4-component vector of float)
+0:51            'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
+0:51            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:51              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:51              Constant:
+0:51                0 (const uint)
+0:51            Constant:
+0:51              0 (const int)
+0:52      Sequence
+0:52        move second child to first child (temp 4-component vector of int)
+0:52          'r01' (temp 4-component vector of int)
+0:52          textureFetch (temp 4-component vector of int)
+0:52            'g_tTex1di4' (uniform itexture1D)
+0:52            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:52              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:52              Constant:
+0:52                0 (const uint)
+0:52            Constant:
+0:52              0 (const int)
+0:53      Sequence
+0:53        move second child to first child (temp 4-component vector of uint)
+0:53          'r02' (temp 4-component vector of uint)
+0:53          textureFetch (temp 4-component vector of uint)
+0:53            'g_tTex1du4' (uniform utexture1D)
+0:53            c1: direct index for structure (layout(offset=0 ) uniform int)
+0:53              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:53              Constant:
+0:53                0 (const uint)
+0:53            Constant:
+0:53              0 (const int)
+0:56      Sequence
+0:56        move second child to first child (temp 4-component vector of float)
+0:56          'r10' (temp 4-component vector of float)
+0:56          textureFetch (temp 4-component vector of float)
+0:56            'g_tTex2df4' (uniform texture2D)
+0:56            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:56              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:56              Constant:
+0:56                1 (const uint)
+0:56            Constant:
+0:56              0 (const int)
+0:57      Sequence
+0:57        move second child to first child (temp 4-component vector of int)
+0:57          'r11' (temp 4-component vector of int)
+0:57          textureFetch (temp 4-component vector of int)
+0:57            'g_tTex2di4' (uniform itexture2D)
+0:57            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:57              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:57              Constant:
+0:57                1 (const uint)
+0:57            Constant:
+0:57              0 (const int)
+0:58      Sequence
+0:58        move second child to first child (temp 4-component vector of uint)
+0:58          'r12' (temp 4-component vector of uint)
+0:58          textureFetch (temp 4-component vector of uint)
+0:58            'g_tTex2du4' (uniform utexture2D)
+0:58            c2: direct index for structure (layout(offset=8 ) uniform 2-component vector of int)
+0:58              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:58              Constant:
+0:58                1 (const uint)
+0:58            Constant:
+0:58              0 (const int)
+0:61      Sequence
+0:61        move second child to first child (temp 4-component vector of float)
+0:61          'r20' (temp 4-component vector of float)
+0:61          textureFetch (temp 4-component vector of float)
+0:61            'g_tTex3df4' (uniform texture3D)
+0:61            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:61              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:61              Constant:
+0:61                2 (const uint)
+0:61            Constant:
+0:61              0 (const int)
+0:62      Sequence
+0:62        move second child to first child (temp 4-component vector of int)
+0:62          'r21' (temp 4-component vector of int)
+0:62          textureFetch (temp 4-component vector of int)
+0:62            'g_tTex3di4' (uniform itexture3D)
+0:62            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:62              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:62              Constant:
+0:62                2 (const uint)
+0:62            Constant:
+0:62              0 (const int)
+0:63      Sequence
+0:63        move second child to first child (temp 4-component vector of uint)
+0:63          'r22' (temp 4-component vector of uint)
+0:63          textureFetch (temp 4-component vector of uint)
+0:63            'g_tTex3du4' (uniform utexture3D)
+0:63            c3: direct index for structure (layout(offset=16 ) uniform 3-component vector of int)
+0:63              'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:63              Constant:
+0:63                2 (const uint)
+0:63            Constant:
+0:63              0 (const int)
+0:66      Function Call: Fn1(vf4; (temp 4-component vector of float)
+0:66        textureFetch (temp 4-component vector of float)
+0:66          'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
+0:66          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:66            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:66            Constant:
+0:66              0 (const uint)
+0:66          Constant:
+0:66            0 (const int)
+0:67      Function Call: Fn1(vi4; (temp 4-component vector of int)
+0:67        textureFetch (temp 4-component vector of int)
+0:67          'g_tTex1di4' (uniform itexture1D)
+0:67          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:67            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:67            Constant:
+0:67              0 (const uint)
+0:67          Constant:
+0:67            0 (const int)
+0:68      Function Call: Fn1(vu4; (temp 4-component vector of uint)
+0:68        textureFetch (temp 4-component vector of uint)
+0:68          'g_tTex1du4' (uniform utexture1D)
+0:68          c1: direct index for structure (layout(offset=0 ) uniform int)
+0:68            'anon@0' (layout(row_major std140 ) uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:68            Constant:
+0:68              0 (const uint)
+0:68          Constant:
+0:68            0 (const int)
+0:70      move second child to first child (temp 4-component vector of float)
+0:70        Color: direct index for structure (temp 4-component vector of float)
+0:70          'psout' (temp structure{temp 4-component vector of float Color})
+0:70          Constant:
+0:70            0 (const int)
+0:70        Constant:
+0:70          1.000000
+0:70          1.000000
+0:70          1.000000
+0:70          1.000000
+0:72      Sequence
+0:72        Sequence
+0:72          move second child to first child (temp 4-component vector of float)
+0:?             'Color' (layout(location=0 ) out 4-component vector of float)
+0:72            Color: direct index for structure (temp 4-component vector of float)
+0:72              'psout' (temp structure{temp 4-component vector of float Color})
+0:72              Constant:
+0:72                0 (const int)
+0:72        Branch: Return
+0:?   Linker Objects
+0:?     'g_sSamp' (layout(binding=0 ) uniform sampler)
+0:?     'g_tTex1df4' (layout(binding=0 ) uniform texture1D)
+0:?     'g_tTex1di4' (uniform itexture1D)
+0:?     'g_tTex1du4' (uniform utexture1D)
+0:?     'g_tTex2df4' (uniform texture2D)
+0:?     'g_tTex2di4' (uniform itexture2D)
+0:?     'g_tTex2du4' (uniform utexture2D)
+0:?     'g_tTex3df4' (uniform texture3D)
+0:?     'g_tTex3di4' (uniform itexture3D)
+0:?     'g_tTex3du4' (uniform utexture3D)
+0:?     'g_tTex1df4a' (uniform texture1DArray)
+0:?     'g_tTex1di4a' (uniform itexture1DArray)
+0:?     'g_tTex1du4a' (uniform utexture1DArray)
+0:?     'g_tTex2df4a' (uniform texture2DArray)
+0:?     'g_tTex2di4a' (uniform itexture2DArray)
+0:?     'g_tTex2du4a' (uniform utexture2DArray)
+0:?     'anon@0' (uniform block{layout(offset=0 ) uniform int c1, layout(offset=8 ) uniform 2-component vector of int c2, layout(offset=16 ) uniform 3-component vector of int c3, layout(offset=32 ) uniform 4-component vector of int c4, layout(offset=48 ) uniform int o1, layout(offset=56 ) uniform 2-component vector of int o2, layout(offset=64 ) uniform 3-component vector of int o3, layout(offset=80 ) uniform 4-component vector of int o4})
+0:?     'Color' (layout(location=0 ) out 4-component vector of float)
+
+// Module Version 10000
+// Generated by (magic number): 80001
+// Id's are bound by 183
+
+                              Capability Shader
+                              Capability Sampled1D
+               1:             ExtInstImport  "GLSL.std.450"
+                              MemoryModel Logical GLSL450
+                              EntryPoint Fragment 4  "main" 158
+                              ExecutionMode 4 OriginUpperLeft
+                              Name 4  "main"
+                              Name 11  "Fn1(vi4;"
+                              Name 10  "x"
+                              Name 18  "Fn1(vu4;"
+                              Name 17  "x"
+                              Name 25  "Fn1(vf4;"
+                              Name 24  "x"
+                              Name 28  "SomeValue("
+                              Name 41  "$Global"
+                              MemberName 41($Global) 0  "c1"
+                              MemberName 41($Global) 1  "c2"
+                              MemberName 41($Global) 2  "c3"
+                              MemberName 41($Global) 3  "c4"
+                              MemberName 41($Global) 4  "o1"
+                              MemberName 41($Global) 5  "o2"
+                              MemberName 41($Global) 6  "o3"
+                              MemberName 41($Global) 7  "o4"
+                              Name 43  ""
+                              Name 53  "g_tTex1df4"
+                              Name 60  "r00"
+                              Name 65  "r01"
+                              Name 68  "g_tTex1di4"
+                              Name 73  "r02"
+                              Name 76  "g_tTex1du4"
+                              Name 81  "r10"
+                              Name 84  "g_tTex2df4"
+                              Name 91  "r11"
+                              Name 94  "g_tTex2di4"
+                              Name 99  "r12"
+                              Name 102  "g_tTex2du4"
+                              Name 107  "r20"
+                              Name 110  "g_tTex3df4"
+                              Name 117  "r21"
+                              Name 120  "g_tTex3di4"
+                              Name 125  "r22"
+                              Name 128  "g_tTex3du4"
+                              Name 137  "param"
+                              Name 143  "param"
+                              Name 149  "param"
+                              Name 151  "PS_OUTPUT"
+                              MemberName 151(PS_OUTPUT) 0  "Color"
+                              Name 153  "psout"
+                              Name 158  "Color"
+                              Name 164  "g_sSamp"
+                              Name 167  "g_tTex1df4a"
+                              Name 170  "g_tTex1di4a"
+                              Name 173  "g_tTex1du4a"
+                              Name 176  "g_tTex2df4a"
+                              Name 179  "g_tTex2di4a"
+                              Name 182  "g_tTex2du4a"
+                              MemberDecorate 41($Global) 0 Offset 0
+                              MemberDecorate 41($Global) 1 Offset 8
+                              MemberDecorate 41($Global) 2 Offset 16
+                              MemberDecorate 41($Global) 3 Offset 32
+                              MemberDecorate 41($Global) 4 Offset 48
+                              MemberDecorate 41($Global) 5 Offset 56
+                              MemberDecorate 41($Global) 6 Offset 64
+                              MemberDecorate 41($Global) 7 Offset 80
+                              Decorate 41($Global) Block
+                              Decorate 43 DescriptorSet 0
+                              Decorate 53(g_tTex1df4) DescriptorSet 0
+                              Decorate 53(g_tTex1df4) Binding 0
+                              Decorate 68(g_tTex1di4) DescriptorSet 0
+                              Decorate 76(g_tTex1du4) DescriptorSet 0
+                              Decorate 84(g_tTex2df4) DescriptorSet 0
+                              Decorate 94(g_tTex2di4) DescriptorSet 0
+                              Decorate 102(g_tTex2du4) DescriptorSet 0
+                              Decorate 110(g_tTex3df4) DescriptorSet 0
+                              Decorate 120(g_tTex3di4) DescriptorSet 0
+                              Decorate 128(g_tTex3du4) DescriptorSet 0
+                              Decorate 158(Color) Location 0
+                              Decorate 164(g_sSamp) DescriptorSet 0
+                              Decorate 164(g_sSamp) Binding 0
+                              Decorate 167(g_tTex1df4a) DescriptorSet 0
+                              Decorate 170(g_tTex1di4a) DescriptorSet 0
+                              Decorate 173(g_tTex1du4a) DescriptorSet 0
+                              Decorate 176(g_tTex2df4a) DescriptorSet 0
+                              Decorate 179(g_tTex2di4a) DescriptorSet 0
+                              Decorate 182(g_tTex2du4a) DescriptorSet 0
+               2:             TypeVoid
+               3:             TypeFunction 2
+               6:             TypeInt 32 1
+               7:             TypeVector 6(int) 4
+               8:             TypePointer Function 7(ivec4)
+               9:             TypeFunction 7(ivec4) 8(ptr)
+              13:             TypeInt 32 0
+              14:             TypeVector 13(int) 4
+              15:             TypePointer Function 14(ivec4)
+              16:             TypeFunction 14(ivec4) 15(ptr)
+              20:             TypeFloat 32
+              21:             TypeVector 20(float) 4
+              22:             TypePointer Function 21(fvec4)
+              23:             TypeFunction 21(fvec4) 22(ptr)
+              27:             TypeFunction 21(fvec4)
+              39:             TypeVector 6(int) 2
+              40:             TypeVector 6(int) 3
+     41($Global):             TypeStruct 6(int) 39(ivec2) 40(ivec3) 7(ivec4) 6(int) 39(ivec2) 40(ivec3) 7(ivec4)
+              42:             TypePointer Uniform 41($Global)
+              43:     42(ptr) Variable Uniform
+              44:      6(int) Constant 3
+              45:             TypePointer Uniform 7(ivec4)
+              51:             TypeImage 20(float) 1D sampled format:Unknown
+              52:             TypePointer UniformConstant 51
+  53(g_tTex1df4):     52(ptr) Variable UniformConstant
+              55:      6(int) Constant 0
+              56:             TypePointer Uniform 6(int)
+              66:             TypeImage 6(int) 1D sampled format:Unknown
+              67:             TypePointer UniformConstant 66
+  68(g_tTex1di4):     67(ptr) Variable UniformConstant
+              74:             TypeImage 13(int) 1D sampled format:Unknown
+              75:             TypePointer UniformConstant 74
+  76(g_tTex1du4):     75(ptr) Variable UniformConstant
+              82:             TypeImage 20(float) 2D sampled format:Unknown
+              83:             TypePointer UniformConstant 82
+  84(g_tTex2df4):     83(ptr) Variable UniformConstant
+              86:      6(int) Constant 1
+              87:             TypePointer Uniform 39(ivec2)
+              92:             TypeImage 6(int) 2D sampled format:Unknown
+              93:             TypePointer UniformConstant 92
+  94(g_tTex2di4):     93(ptr) Variable UniformConstant
+             100:             TypeImage 13(int) 2D sampled format:Unknown
+             101:             TypePointer UniformConstant 100
+ 102(g_tTex2du4):    101(ptr) Variable UniformConstant
+             108:             TypeImage 20(float) 3D sampled format:Unknown
+             109:             TypePointer UniformConstant 108
+ 110(g_tTex3df4):    109(ptr) Variable UniformConstant
+             112:      6(int) Constant 2
+             113:             TypePointer Uniform 40(ivec3)
+             118:             TypeImage 6(int) 3D sampled format:Unknown
+             119:             TypePointer UniformConstant 118
+ 120(g_tTex3di4):    119(ptr) Variable UniformConstant
+             126:             TypeImage 13(int) 3D sampled format:Unknown
+             127:             TypePointer UniformConstant 126
+ 128(g_tTex3du4):    127(ptr) Variable UniformConstant
+  151(PS_OUTPUT):             TypeStruct 21(fvec4)
+             152:             TypePointer Function 151(PS_OUTPUT)
+             154:   20(float) Constant 1065353216
+             155:   21(fvec4) ConstantComposite 154 154 154 154
+             157:             TypePointer Output 21(fvec4)
+      158(Color):    157(ptr) Variable Output
+             162:             TypeSampler
+             163:             TypePointer UniformConstant 162
+    164(g_sSamp):    163(ptr) Variable UniformConstant
+             165:             TypeImage 20(float) 1D array sampled format:Unknown
+             166:             TypePointer UniformConstant 165
+167(g_tTex1df4a):    166(ptr) Variable UniformConstant
+             168:             TypeImage 6(int) 1D array sampled format:Unknown
+             169:             TypePointer UniformConstant 168
+170(g_tTex1di4a):    169(ptr) Variable UniformConstant
+             171:             TypeImage 13(int) 1D array sampled format:Unknown
+             172:             TypePointer UniformConstant 171
+173(g_tTex1du4a):    172(ptr) Variable UniformConstant
+             174:             TypeImage 20(float) 2D array sampled format:Unknown
+             175:             TypePointer UniformConstant 174
+176(g_tTex2df4a):    175(ptr) Variable UniformConstant
+             177:             TypeImage 6(int) 2D array sampled format:Unknown
+             178:             TypePointer UniformConstant 177
+179(g_tTex2di4a):    178(ptr) Variable UniformConstant
+             180:             TypeImage 13(int) 2D array sampled format:Unknown
+             181:             TypePointer UniformConstant 180
+182(g_tTex2du4a):    181(ptr) Variable UniformConstant
+         4(main):           2 Function None 3
+               5:             Label
+         60(r00):     22(ptr) Variable Function
+         65(r01):      8(ptr) Variable Function
+         73(r02):     15(ptr) Variable Function
+         81(r10):     22(ptr) Variable Function
+         91(r11):      8(ptr) Variable Function
+         99(r12):     15(ptr) Variable Function
+        107(r20):     22(ptr) Variable Function
+        117(r21):      8(ptr) Variable Function
+        125(r22):     15(ptr) Variable Function
+      137(param):     22(ptr) Variable Function
+      143(param):      8(ptr) Variable Function
+      149(param):     15(ptr) Variable Function
+      153(psout):    152(ptr) Variable Function
+              54:          51 Load 53(g_tTex1df4)
+              57:     56(ptr) AccessChain 43 55
+              58:      6(int) Load 57
+              59:   21(fvec4) ImageFetch 54 58 Lod 55
+              61:          51 Load 53(g_tTex1df4)
+              62:     56(ptr) AccessChain 43 55
+              63:      6(int) Load 62
+              64:   21(fvec4) ImageFetch 61 63 Lod 55
+                              Store 60(r00) 64
+              69:          66 Load 68(g_tTex1di4)
+              70:     56(ptr) AccessChain 43 55
+              71:      6(int) Load 70
+              72:    7(ivec4) ImageFetch 69 71 Lod 55
+                              Store 65(r01) 72
+              77:          74 Load 76(g_tTex1du4)
+              78:     56(ptr) AccessChain 43 55
+              79:      6(int) Load 78
+              80:   14(ivec4) ImageFetch 77 79 Lod 55
+                              Store 73(r02) 80
+              85:          82 Load 84(g_tTex2df4)
+              88:     87(ptr) AccessChain 43 86
+              89:   39(ivec2) Load 88
+              90:   21(fvec4) ImageFetch 85 89 Lod 55
+                              Store 81(r10) 90
+              95:          92 Load 94(g_tTex2di4)
+              96:     87(ptr) AccessChain 43 86
+              97:   39(ivec2) Load 96
+              98:    7(ivec4) ImageFetch 95 97 Lod 55
+                              Store 91(r11) 98
+             103:         100 Load 102(g_tTex2du4)
+             104:     87(ptr) AccessChain 43 86
+             105:   39(ivec2) Load 104
+             106:   14(ivec4) ImageFetch 103 105 Lod 55
+                              Store 99(r12) 106
+             111:         108 Load 110(g_tTex3df4)
+             114:    113(ptr) AccessChain 43 112
+             115:   40(ivec3) Load 114
+             116:   21(fvec4) ImageFetch 111 115 Lod 55
+                              Store 107(r20) 116
+             121:         118 Load 120(g_tTex3di4)
+             122:    113(ptr) AccessChain 43 112
+             123:   40(ivec3) Load 122
+             124:    7(ivec4) ImageFetch 121 123 Lod 55
+                              Store 117(r21) 124
+             129:         126 Load 128(g_tTex3du4)
+             130:    113(ptr) AccessChain 43 112
+             131:   40(ivec3) Load 130
+             132:   14(ivec4) ImageFetch 129 131 Lod 55
+                              Store 125(r22) 132
+             133:          51 Load 53(g_tTex1df4)
+             134:     56(ptr) AccessChain 43 55
+             135:      6(int) Load 134
+             136:   21(fvec4) ImageFetch 133 135 Lod 55
+                              Store 137(param) 136
+             138:   21(fvec4) FunctionCall 25(Fn1(vf4;) 137(param)
+             139:          66 Load 68(g_tTex1di4)
+             140:     56(ptr) AccessChain 43 55
+             141:      6(int) Load 140
+             142:    7(ivec4) ImageFetch 139 141 Lod 55
+                              Store 143(param) 142
+             144:    7(ivec4) FunctionCall 11(Fn1(vi4;) 143(param)
+             145:          74 Load 76(g_tTex1du4)
+             146:     56(ptr) AccessChain 43 55
+             147:      6(int) Load 146
+             148:   14(ivec4) ImageFetch 145 147 Lod 55
+                              Store 149(param) 148
+             150:   14(ivec4) FunctionCall 18(Fn1(vu4;) 149(param)
+             156:     22(ptr) AccessChain 153(psout) 55
+                              Store 156 155
+             159:     22(ptr) AccessChain 153(psout) 55
+             160:   21(fvec4) Load 159
+                              Store 158(Color) 160
+                              Return
+                              FunctionEnd
+    11(Fn1(vi4;):    7(ivec4) Function None 9
+           10(x):      8(ptr) FunctionParameter
+              12:             Label
+              30:    7(ivec4) Load 10(x)
+                              ReturnValue 30
+                              FunctionEnd
+    18(Fn1(vu4;):   14(ivec4) Function None 16
+           17(x):     15(ptr) FunctionParameter
+              19:             Label
+              33:   14(ivec4) Load 17(x)
+                              ReturnValue 33
+                              FunctionEnd
+    25(Fn1(vf4;):   21(fvec4) Function None 23
+           24(x):     22(ptr) FunctionParameter
+              26:             Label
+              36:   21(fvec4) Load 24(x)
+                              ReturnValue 36
+                              FunctionEnd
+  28(SomeValue():   21(fvec4) Function None 27
+              29:             Label
+              46:     45(ptr) AccessChain 43 44
+              47:    7(ivec4) Load 46
+              48:   21(fvec4) ConvertSToF 47
+                              ReturnValue 48
+                              FunctionEnd
diff --git a/Test/baseResults/spv.queryL.frag.out b/Test/baseResults/spv.queryL.frag.out
index 6d2b2b9..2236c66 100755
--- a/Test/baseResults/spv.queryL.frag.out
+++ b/Test/baseResults/spv.queryL.frag.out
@@ -7,7 +7,7 @@
 
 // Module Version 10000
 // Generated by (magic number): 80001
-// Id's are bound by 237
+// Id's are bound by 224
 
                               Capability Shader
                               Capability SampledRect
@@ -24,48 +24,48 @@
                               Name 9  "lod"
                               Name 13  "samp1D"
                               Name 16  "pf"
-                              Name 24  "isamp2D"
-                              Name 26  "pf2"
-                              Name 36  "usamp3D"
-                              Name 40  "pf3"
-                              Name 49  "sampCube"
-                              Name 59  "isamp1DA"
-                              Name 69  "usamp2DA"
-                              Name 79  "isampCubeA"
-                              Name 89  "samp1Ds"
-                              Name 99  "samp2Ds"
-                              Name 109  "sampCubes"
-                              Name 119  "samp1DAs"
-                              Name 129  "samp2DAs"
-                              Name 139  "sampCubeAs"
-                              Name 147  "levels"
-                              Name 154  "usamp2D"
-                              Name 163  "isamp3D"
-                              Name 172  "isampCube"
-                              Name 186  "samp2DA"
-                              Name 195  "usampCubeA"
-                              Name 232  "sampBuf"
-                              Name 236  "sampRect"
+                              Name 23  "isamp2D"
+                              Name 25  "pf2"
+                              Name 34  "usamp3D"
+                              Name 38  "pf3"
+                              Name 46  "sampCube"
+                              Name 55  "isamp1DA"
+                              Name 64  "usamp2DA"
+                              Name 73  "isampCubeA"
+                              Name 82  "samp1Ds"
+                              Name 91  "samp2Ds"
+                              Name 100  "sampCubes"
+                              Name 109  "samp1DAs"
+                              Name 118  "samp2DAs"
+                              Name 127  "sampCubeAs"
+                              Name 134  "levels"
+                              Name 141  "usamp2D"
+                              Name 150  "isamp3D"
+                              Name 159  "isampCube"
+                              Name 173  "samp2DA"
+                              Name 182  "usampCubeA"
+                              Name 219  "sampBuf"
+                              Name 223  "sampRect"
                               Decorate 13(samp1D) DescriptorSet 0
-                              Decorate 24(isamp2D) DescriptorSet 0
-                              Decorate 36(usamp3D) DescriptorSet 0
-                              Decorate 49(sampCube) DescriptorSet 0
-                              Decorate 59(isamp1DA) DescriptorSet 0
-                              Decorate 69(usamp2DA) DescriptorSet 0
-                              Decorate 79(isampCubeA) DescriptorSet 0
-                              Decorate 89(samp1Ds) DescriptorSet 0
-                              Decorate 99(samp2Ds) DescriptorSet 0
-                              Decorate 109(sampCubes) DescriptorSet 0
-                              Decorate 119(samp1DAs) DescriptorSet 0
-                              Decorate 129(samp2DAs) DescriptorSet 0
-                              Decorate 139(sampCubeAs) DescriptorSet 0
-                              Decorate 154(usamp2D) DescriptorSet 0
-                              Decorate 163(isamp3D) DescriptorSet 0
-                              Decorate 172(isampCube) DescriptorSet 0
-                              Decorate 186(samp2DA) DescriptorSet 0
-                              Decorate 195(usampCubeA) DescriptorSet 0
-                              Decorate 232(sampBuf) DescriptorSet 0
-                              Decorate 236(sampRect) DescriptorSet 0
+                              Decorate 23(isamp2D) DescriptorSet 0
+                              Decorate 34(usamp3D) DescriptorSet 0
+                              Decorate 46(sampCube) DescriptorSet 0
+                              Decorate 55(isamp1DA) DescriptorSet 0
+                              Decorate 64(usamp2DA) DescriptorSet 0
+                              Decorate 73(isampCubeA) DescriptorSet 0
+                              Decorate 82(samp1Ds) DescriptorSet 0
+                              Decorate 91(samp2Ds) DescriptorSet 0
+                              Decorate 100(sampCubes) DescriptorSet 0
+                              Decorate 109(samp1DAs) DescriptorSet 0
+                              Decorate 118(samp2DAs) DescriptorSet 0
+                              Decorate 127(sampCubeAs) DescriptorSet 0
+                              Decorate 141(usamp2D) DescriptorSet 0
+                              Decorate 150(isamp3D) DescriptorSet 0
+                              Decorate 159(isampCube) DescriptorSet 0
+                              Decorate 173(samp2DA) DescriptorSet 0
+                              Decorate 182(usampCubeA) DescriptorSet 0
+                              Decorate 219(sampBuf) DescriptorSet 0
+                              Decorate 223(sampRect) DescriptorSet 0
                2:             TypeVoid
                3:             TypeFunction 2
                6:             TypeFloat 32
@@ -76,256 +76,243 @@
               12:             TypePointer UniformConstant 11
       13(samp1D):     12(ptr) Variable UniformConstant
               15:             TypePointer Function 6(float)
-              20:             TypeInt 32 1
-              21:             TypeImage 20(int) 2D sampled format:Unknown
-              22:             TypeSampledImage 21
-              23:             TypePointer UniformConstant 22
-     24(isamp2D):     23(ptr) Variable UniformConstant
-              32:             TypeInt 32 0
-              33:             TypeImage 32(int) 3D sampled format:Unknown
-              34:             TypeSampledImage 33
-              35:             TypePointer UniformConstant 34
-     36(usamp3D):     35(ptr) Variable UniformConstant
-              38:             TypeVector 6(float) 3
-              39:             TypePointer Function 38(fvec3)
-              46:             TypeImage 6(float) Cube sampled format:Unknown
-              47:             TypeSampledImage 46
-              48:             TypePointer UniformConstant 47
-    49(sampCube):     48(ptr) Variable UniformConstant
-              56:             TypeImage 20(int) 1D array sampled format:Unknown
-              57:             TypeSampledImage 56
-              58:             TypePointer UniformConstant 57
-    59(isamp1DA):     58(ptr) Variable UniformConstant
-              66:             TypeImage 32(int) 2D array sampled format:Unknown
-              67:             TypeSampledImage 66
-              68:             TypePointer UniformConstant 67
-    69(usamp2DA):     68(ptr) Variable UniformConstant
-              76:             TypeImage 20(int) Cube array sampled format:Unknown
-              77:             TypeSampledImage 76
-              78:             TypePointer UniformConstant 77
-  79(isampCubeA):     78(ptr) Variable UniformConstant
-              86:             TypeImage 6(float) 1D depth sampled format:Unknown
-              87:             TypeSampledImage 86
-              88:             TypePointer UniformConstant 87
-     89(samp1Ds):     88(ptr) Variable UniformConstant
-              96:             TypeImage 6(float) 2D depth sampled format:Unknown
-              97:             TypeSampledImage 96
-              98:             TypePointer UniformConstant 97
-     99(samp2Ds):     98(ptr) Variable UniformConstant
-             106:             TypeImage 6(float) Cube depth sampled format:Unknown
+              19:             TypeInt 32 1
+              20:             TypeImage 19(int) 2D sampled format:Unknown
+              21:             TypeSampledImage 20
+              22:             TypePointer UniformConstant 21
+     23(isamp2D):     22(ptr) Variable UniformConstant
+              30:             TypeInt 32 0
+              31:             TypeImage 30(int) 3D sampled format:Unknown
+              32:             TypeSampledImage 31
+              33:             TypePointer UniformConstant 32
+     34(usamp3D):     33(ptr) Variable UniformConstant
+              36:             TypeVector 6(float) 3
+              37:             TypePointer Function 36(fvec3)
+              43:             TypeImage 6(float) Cube sampled format:Unknown
+              44:             TypeSampledImage 43
+              45:             TypePointer UniformConstant 44
+    46(sampCube):     45(ptr) Variable UniformConstant
+              52:             TypeImage 19(int) 1D array sampled format:Unknown
+              53:             TypeSampledImage 52
+              54:             TypePointer UniformConstant 53
+    55(isamp1DA):     54(ptr) Variable UniformConstant
+              61:             TypeImage 30(int) 2D array sampled format:Unknown
+              62:             TypeSampledImage 61
+              63:             TypePointer UniformConstant 62
+    64(usamp2DA):     63(ptr) Variable UniformConstant
+              70:             TypeImage 19(int) Cube array sampled format:Unknown
+              71:             TypeSampledImage 70
+              72:             TypePointer UniformConstant 71
+  73(isampCubeA):     72(ptr) Variable UniformConstant
+              79:             TypeImage 6(float) 1D depth sampled format:Unknown
+              80:             TypeSampledImage 79
+              81:             TypePointer UniformConstant 80
+     82(samp1Ds):     81(ptr) Variable UniformConstant
+              88:             TypeImage 6(float) 2D depth sampled format:Unknown
+              89:             TypeSampledImage 88
+              90:             TypePointer UniformConstant 89
+     91(samp2Ds):     90(ptr) Variable UniformConstant
+              97:             TypeImage 6(float) Cube depth sampled format:Unknown
+              98:             TypeSampledImage 97
+              99:             TypePointer UniformConstant 98
+  100(sampCubes):     99(ptr) Variable UniformConstant
+             106:             TypeImage 6(float) 1D depth array sampled format:Unknown
              107:             TypeSampledImage 106
              108:             TypePointer UniformConstant 107
-  109(sampCubes):    108(ptr) Variable UniformConstant
-             116:             TypeImage 6(float) 1D depth array sampled format:Unknown
-             117:             TypeSampledImage 116
-             118:             TypePointer UniformConstant 117
-   119(samp1DAs):    118(ptr) Variable UniformConstant
-             126:             TypeImage 6(float) 2D depth array sampled format:Unknown
-             127:             TypeSampledImage 126
-             128:             TypePointer UniformConstant 127
-   129(samp2DAs):    128(ptr) Variable UniformConstant
-             136:             TypeImage 6(float) Cube depth array sampled format:Unknown
-             137:             TypeSampledImage 136
-             138:             TypePointer UniformConstant 137
- 139(sampCubeAs):    138(ptr) Variable UniformConstant
-             146:             TypePointer Function 20(int)
-             151:             TypeImage 32(int) 2D sampled format:Unknown
-             152:             TypeSampledImage 151
-             153:             TypePointer UniformConstant 152
-    154(usamp2D):    153(ptr) Variable UniformConstant
-             160:             TypeImage 20(int) 3D sampled format:Unknown
-             161:             TypeSampledImage 160
-             162:             TypePointer UniformConstant 161
-    163(isamp3D):    162(ptr) Variable UniformConstant
-             169:             TypeImage 20(int) Cube sampled format:Unknown
-             170:             TypeSampledImage 169
-             171:             TypePointer UniformConstant 170
-  172(isampCube):    171(ptr) Variable UniformConstant
-             183:             TypeImage 6(float) 2D array sampled format:Unknown
-             184:             TypeSampledImage 183
-             185:             TypePointer UniformConstant 184
-    186(samp2DA):    185(ptr) Variable UniformConstant
-             192:             TypeImage 32(int) Cube array sampled format:Unknown
-             193:             TypeSampledImage 192
-             194:             TypePointer UniformConstant 193
- 195(usampCubeA):    194(ptr) Variable UniformConstant
-             229:             TypeImage 6(float) Buffer sampled format:Unknown
-             230:             TypeSampledImage 229
-             231:             TypePointer UniformConstant 230
-    232(sampBuf):    231(ptr) Variable UniformConstant
-             233:             TypeImage 6(float) Rect sampled format:Unknown
-             234:             TypeSampledImage 233
-             235:             TypePointer UniformConstant 234
-   236(sampRect):    235(ptr) Variable UniformConstant
+   109(samp1DAs):    108(ptr) Variable UniformConstant
+             115:             TypeImage 6(float) 2D depth array sampled format:Unknown
+             116:             TypeSampledImage 115
+             117:             TypePointer UniformConstant 116
+   118(samp2DAs):    117(ptr) Variable UniformConstant
+             124:             TypeImage 6(float) Cube depth array sampled format:Unknown
+             125:             TypeSampledImage 124
+             126:             TypePointer UniformConstant 125
+ 127(sampCubeAs):    126(ptr) Variable UniformConstant
+             133:             TypePointer Function 19(int)
+             138:             TypeImage 30(int) 2D sampled format:Unknown
+             139:             TypeSampledImage 138
+             140:             TypePointer UniformConstant 139
+    141(usamp2D):    140(ptr) Variable UniformConstant
+             147:             TypeImage 19(int) 3D sampled format:Unknown
+             148:             TypeSampledImage 147
+             149:             TypePointer UniformConstant 148
+    150(isamp3D):    149(ptr) Variable UniformConstant
+             156:             TypeImage 19(int) Cube sampled format:Unknown
+             157:             TypeSampledImage 156
+             158:             TypePointer UniformConstant 157
+  159(isampCube):    158(ptr) Variable UniformConstant
+             170:             TypeImage 6(float) 2D array sampled format:Unknown
+             171:             TypeSampledImage 170
+             172:             TypePointer UniformConstant 171
+    173(samp2DA):    172(ptr) Variable UniformConstant
+             179:             TypeImage 30(int) Cube array sampled format:Unknown
+             180:             TypeSampledImage 179
+             181:             TypePointer UniformConstant 180
+ 182(usampCubeA):    181(ptr) Variable UniformConstant
+             216:             TypeImage 6(float) Buffer sampled format:Unknown
+             217:             TypeSampledImage 216
+             218:             TypePointer UniformConstant 217
+    219(sampBuf):    218(ptr) Variable UniformConstant
+             220:             TypeImage 6(float) Rect sampled format:Unknown
+             221:             TypeSampledImage 220
+             222:             TypePointer UniformConstant 221
+   223(sampRect):    222(ptr) Variable UniformConstant
          4(main):           2 Function None 3
                5:             Label
           9(lod):      8(ptr) Variable Function
           16(pf):     15(ptr) Variable Function
-         26(pf2):      8(ptr) Variable Function
-         40(pf3):     39(ptr) Variable Function
-     147(levels):    146(ptr) Variable Function
+         25(pf2):      8(ptr) Variable Function
+         38(pf3):     37(ptr) Variable Function
+     134(levels):    133(ptr) Variable Function
               14:          11 Load 13(samp1D)
               17:    6(float) Load 16(pf)
-              18:          10 Image 14
-              19:    7(fvec2) ImageQueryLod 18 17
-                              Store 9(lod) 19
-              25:          22 Load 24(isamp2D)
-              27:    7(fvec2) Load 26(pf2)
-              28:          21 Image 25
-              29:    7(fvec2) ImageQueryLod 28 27
-              30:    7(fvec2) Load 9(lod)
-              31:    7(fvec2) FAdd 30 29
-                              Store 9(lod) 31
-              37:          34 Load 36(usamp3D)
-              41:   38(fvec3) Load 40(pf3)
-              42:          33 Image 37
-              43:    7(fvec2) ImageQueryLod 42 41
-              44:    7(fvec2) Load 9(lod)
-              45:    7(fvec2) FAdd 44 43
-                              Store 9(lod) 45
-              50:          47 Load 49(sampCube)
-              51:   38(fvec3) Load 40(pf3)
-              52:          46 Image 50
-              53:    7(fvec2) ImageQueryLod 52 51
-              54:    7(fvec2) Load 9(lod)
-              55:    7(fvec2) FAdd 54 53
-                              Store 9(lod) 55
-              60:          57 Load 59(isamp1DA)
-              61:    6(float) Load 16(pf)
-              62:          56 Image 60
-              63:    7(fvec2) ImageQueryLod 62 61
-              64:    7(fvec2) Load 9(lod)
-              65:    7(fvec2) FAdd 64 63
-                              Store 9(lod) 65
-              70:          67 Load 69(usamp2DA)
-              71:    7(fvec2) Load 26(pf2)
-              72:          66 Image 70
-              73:    7(fvec2) ImageQueryLod 72 71
-              74:    7(fvec2) Load 9(lod)
-              75:    7(fvec2) FAdd 74 73
-                              Store 9(lod) 75
-              80:          77 Load 79(isampCubeA)
-              81:   38(fvec3) Load 40(pf3)
-              82:          76 Image 80
-              83:    7(fvec2) ImageQueryLod 82 81
-              84:    7(fvec2) Load 9(lod)
-              85:    7(fvec2) FAdd 84 83
-                              Store 9(lod) 85
-              90:          87 Load 89(samp1Ds)
-              91:    6(float) Load 16(pf)
-              92:          86 Image 90
-              93:    7(fvec2) ImageQueryLod 92 91
-              94:    7(fvec2) Load 9(lod)
-              95:    7(fvec2) FAdd 94 93
-                              Store 9(lod) 95
-             100:          97 Load 99(samp2Ds)
-             101:    7(fvec2) Load 26(pf2)
-             102:          96 Image 100
-             103:    7(fvec2) ImageQueryLod 102 101
+              18:    7(fvec2) ImageQueryLod 14 17
+                              Store 9(lod) 18
+              24:          21 Load 23(isamp2D)
+              26:    7(fvec2) Load 25(pf2)
+              27:    7(fvec2) ImageQueryLod 24 26
+              28:    7(fvec2) Load 9(lod)
+              29:    7(fvec2) FAdd 28 27
+                              Store 9(lod) 29
+              35:          32 Load 34(usamp3D)
+              39:   36(fvec3) Load 38(pf3)
+              40:    7(fvec2) ImageQueryLod 35 39
+              41:    7(fvec2) Load 9(lod)
+              42:    7(fvec2) FAdd 41 40
+                              Store 9(lod) 42
+              47:          44 Load 46(sampCube)
+              48:   36(fvec3) Load 38(pf3)
+              49:    7(fvec2) ImageQueryLod 47 48
+              50:    7(fvec2) Load 9(lod)
+              51:    7(fvec2) FAdd 50 49
+                              Store 9(lod) 51
+              56:          53 Load 55(isamp1DA)
+              57:    6(float) Load 16(pf)
+              58:    7(fvec2) ImageQueryLod 56 57
+              59:    7(fvec2) Load 9(lod)
+              60:    7(fvec2) FAdd 59 58
+                              Store 9(lod) 60
+              65:          62 Load 64(usamp2DA)
+              66:    7(fvec2) Load 25(pf2)
+              67:    7(fvec2) ImageQueryLod 65 66
+              68:    7(fvec2) Load 9(lod)
+              69:    7(fvec2) FAdd 68 67
+                              Store 9(lod) 69
+              74:          71 Load 73(isampCubeA)
+              75:   36(fvec3) Load 38(pf3)
+              76:    7(fvec2) ImageQueryLod 74 75
+              77:    7(fvec2) Load 9(lod)
+              78:    7(fvec2) FAdd 77 76
+                              Store 9(lod) 78
+              83:          80 Load 82(samp1Ds)
+              84:    6(float) Load 16(pf)
+              85:    7(fvec2) ImageQueryLod 83 84
+              86:    7(fvec2) Load 9(lod)
+              87:    7(fvec2) FAdd 86 85
+                              Store 9(lod) 87
+              92:          89 Load 91(samp2Ds)
+              93:    7(fvec2) Load 25(pf2)
+              94:    7(fvec2) ImageQueryLod 92 93
+              95:    7(fvec2) Load 9(lod)
+              96:    7(fvec2) FAdd 95 94
+                              Store 9(lod) 96
+             101:          98 Load 100(sampCubes)
+             102:   36(fvec3) Load 38(pf3)
+             103:    7(fvec2) ImageQueryLod 101 102
              104:    7(fvec2) Load 9(lod)
              105:    7(fvec2) FAdd 104 103
                               Store 9(lod) 105
-             110:         107 Load 109(sampCubes)
-             111:   38(fvec3) Load 40(pf3)
-             112:         106 Image 110
-             113:    7(fvec2) ImageQueryLod 112 111
-             114:    7(fvec2) Load 9(lod)
-             115:    7(fvec2) FAdd 114 113
-                              Store 9(lod) 115
-             120:         117 Load 119(samp1DAs)
-             121:    6(float) Load 16(pf)
-             122:         116 Image 120
-             123:    7(fvec2) ImageQueryLod 122 121
-             124:    7(fvec2) Load 9(lod)
-             125:    7(fvec2) FAdd 124 123
-                              Store 9(lod) 125
-             130:         127 Load 129(samp2DAs)
-             131:    7(fvec2) Load 26(pf2)
-             132:         126 Image 130
-             133:    7(fvec2) ImageQueryLod 132 131
-             134:    7(fvec2) Load 9(lod)
-             135:    7(fvec2) FAdd 134 133
-                              Store 9(lod) 135
-             140:         137 Load 139(sampCubeAs)
-             141:   38(fvec3) Load 40(pf3)
-             142:         136 Image 140
-             143:    7(fvec2) ImageQueryLod 142 141
-             144:    7(fvec2) Load 9(lod)
-             145:    7(fvec2) FAdd 144 143
-                              Store 9(lod) 145
-             148:          11 Load 13(samp1D)
-             149:          10 Image 148
-             150:     20(int) ImageQueryLevels 149
-                              Store 147(levels) 150
-             155:         152 Load 154(usamp2D)
-             156:         151 Image 155
-             157:     20(int) ImageQueryLevels 156
-             158:     20(int) Load 147(levels)
-             159:     20(int) IAdd 158 157
-                              Store 147(levels) 159
-             164:         161 Load 163(isamp3D)
-             165:         160 Image 164
-             166:     20(int) ImageQueryLevels 165
-             167:     20(int) Load 147(levels)
-             168:     20(int) IAdd 167 166
-                              Store 147(levels) 168
-             173:         170 Load 172(isampCube)
-             174:         169 Image 173
-             175:     20(int) ImageQueryLevels 174
-             176:     20(int) Load 147(levels)
-             177:     20(int) IAdd 176 175
-                              Store 147(levels) 177
-             178:          57 Load 59(isamp1DA)
-             179:          56 Image 178
-             180:     20(int) ImageQueryLevels 179
-             181:     20(int) Load 147(levels)
-             182:     20(int) IAdd 181 180
-                              Store 147(levels) 182
-             187:         184 Load 186(samp2DA)
-             188:         183 Image 187
-             189:     20(int) ImageQueryLevels 188
-             190:     20(int) Load 147(levels)
-             191:     20(int) IAdd 190 189
-                              Store 147(levels) 191
-             196:         193 Load 195(usampCubeA)
-             197:         192 Image 196
-             198:     20(int) ImageQueryLevels 197
-             199:     20(int) Load 147(levels)
-             200:     20(int) IAdd 199 198
-                              Store 147(levels) 200
-             201:          87 Load 89(samp1Ds)
-             202:          86 Image 201
-             203:     20(int) ImageQueryLevels 202
-                              Store 147(levels) 203
-             204:          97 Load 99(samp2Ds)
-             205:          96 Image 204
-             206:     20(int) ImageQueryLevels 205
-             207:     20(int) Load 147(levels)
-             208:     20(int) IAdd 207 206
-                              Store 147(levels) 208
-             209:         107 Load 109(sampCubes)
-             210:         106 Image 209
-             211:     20(int) ImageQueryLevels 210
-             212:     20(int) Load 147(levels)
-             213:     20(int) IAdd 212 211
-                              Store 147(levels) 213
-             214:         117 Load 119(samp1DAs)
-             215:         116 Image 214
-             216:     20(int) ImageQueryLevels 215
-             217:     20(int) Load 147(levels)
-             218:     20(int) IAdd 217 216
-                              Store 147(levels) 218
-             219:         127 Load 129(samp2DAs)
-             220:         126 Image 219
-             221:     20(int) ImageQueryLevels 220
-             222:     20(int) Load 147(levels)
-             223:     20(int) IAdd 222 221
-                              Store 147(levels) 223
-             224:         137 Load 139(sampCubeAs)
-             225:         136 Image 224
-             226:     20(int) ImageQueryLevels 225
-             227:     20(int) Load 147(levels)
-             228:     20(int) IAdd 227 226
-                              Store 147(levels) 228
+             110:         107 Load 109(samp1DAs)
+             111:    6(float) Load 16(pf)
+             112:    7(fvec2) ImageQueryLod 110 111
+             113:    7(fvec2) Load 9(lod)
+             114:    7(fvec2) FAdd 113 112
+                              Store 9(lod) 114
+             119:         116 Load 118(samp2DAs)
+             120:    7(fvec2) Load 25(pf2)
+             121:    7(fvec2) ImageQueryLod 119 120
+             122:    7(fvec2) Load 9(lod)
+             123:    7(fvec2) FAdd 122 121
+                              Store 9(lod) 123
+             128:         125 Load 127(sampCubeAs)
+             129:   36(fvec3) Load 38(pf3)
+             130:    7(fvec2) ImageQueryLod 128 129
+             131:    7(fvec2) Load 9(lod)
+             132:    7(fvec2) FAdd 131 130
+                              Store 9(lod) 132
+             135:          11 Load 13(samp1D)
+             136:          10 Image 135
+             137:     19(int) ImageQueryLevels 136
+                              Store 134(levels) 137
+             142:         139 Load 141(usamp2D)
+             143:         138 Image 142
+             144:     19(int) ImageQueryLevels 143
+             145:     19(int) Load 134(levels)
+             146:     19(int) IAdd 145 144
+                              Store 134(levels) 146
+             151:         148 Load 150(isamp3D)
+             152:         147 Image 151
+             153:     19(int) ImageQueryLevels 152
+             154:     19(int) Load 134(levels)
+             155:     19(int) IAdd 154 153
+                              Store 134(levels) 155
+             160:         157 Load 159(isampCube)
+             161:         156 Image 160
+             162:     19(int) ImageQueryLevels 161
+             163:     19(int) Load 134(levels)
+             164:     19(int) IAdd 163 162
+                              Store 134(levels) 164
+             165:          53 Load 55(isamp1DA)
+             166:          52 Image 165
+             167:     19(int) ImageQueryLevels 166
+             168:     19(int) Load 134(levels)
+             169:     19(int) IAdd 168 167
+                              Store 134(levels) 169
+             174:         171 Load 173(samp2DA)
+             175:         170 Image 174
+             176:     19(int) ImageQueryLevels 175
+             177:     19(int) Load 134(levels)
+             178:     19(int) IAdd 177 176
+                              Store 134(levels) 178
+             183:         180 Load 182(usampCubeA)
+             184:         179 Image 183
+             185:     19(int) ImageQueryLevels 184
+             186:     19(int) Load 134(levels)
+             187:     19(int) IAdd 186 185
+                              Store 134(levels) 187
+             188:          80 Load 82(samp1Ds)
+             189:          79 Image 188
+             190:     19(int) ImageQueryLevels 189
+                              Store 134(levels) 190
+             191:          89 Load 91(samp2Ds)
+             192:          88 Image 191
+             193:     19(int) ImageQueryLevels 192
+             194:     19(int) Load 134(levels)
+             195:     19(int) IAdd 194 193
+                              Store 134(levels) 195
+             196:          98 Load 100(sampCubes)
+             197:          97 Image 196
+             198:     19(int) ImageQueryLevels 197
+             199:     19(int) Load 134(levels)
+             200:     19(int) IAdd 199 198
+                              Store 134(levels) 200
+             201:         107 Load 109(samp1DAs)
+             202:         106 Image 201
+             203:     19(int) ImageQueryLevels 202
+             204:     19(int) Load 134(levels)
+             205:     19(int) IAdd 204 203
+                              Store 134(levels) 205
+             206:         116 Load 118(samp2DAs)
+             207:         115 Image 206
+             208:     19(int) ImageQueryLevels 207
+             209:     19(int) Load 134(levels)
+             210:     19(int) IAdd 209 208
+                              Store 134(levels) 210
+             211:         125 Load 127(sampCubeAs)
+             212:         124 Image 211
+             213:     19(int) ImageQueryLevels 212
+             214:     19(int) Load 134(levels)
+             215:     19(int) IAdd 214 213
+                              Store 134(levels) 215
                               Return
                               FunctionEnd
diff --git a/Test/baseResults/spv.register.autoassign.rangetest.frag.out b/Test/baseResults/spv.register.autoassign.rangetest.frag.out
new file mode 100644
index 0000000..a521a13
--- /dev/null
+++ b/Test/baseResults/spv.register.autoassign.rangetest.frag.out
@@ -0,0 +1,12 @@
+spv.register.autoassign.rangetest.frag
+
+Linked fragment stage:
+
+INTERNAL ERROR: mapped binding out of range: g_tScene
+INTERNAL ERROR: mapped binding out of range: g_tSamp
+INTERNAL ERROR: mapped binding out of range: g_tScene
+INTERNAL ERROR: mapped binding out of range: g_tSamp
+INTERNAL ERROR: mapped binding out of range: g_tSamp
+INTERNAL ERROR: mapped binding out of range: g_tScene
+
+SPIR-V is not generated for failed compile or link
diff --git a/Test/hlsl.array.implicit-size.frag b/Test/hlsl.array.implicit-size.frag
index 29e2c1b..78a9283 100644
--- a/Test/hlsl.array.implicit-size.frag
+++ b/Test/hlsl.array.implicit-size.frag
@@ -1,11 +1,11 @@
 
-// implicit sized array
+// array size from initializer
 static float g_array [ ] = { 1, 2, 3, 4, 5 };
 
-// Unused implicit sized array
+// Unused: array size from initializer
 static float g_array_unused [ ] = { 1, 2, 3, 4, 5, 6, 7 };
 
-// Test implicit size arrayed structs
+// Test initializer sizing for arrayed structs
 static struct mystruct {
     int i;
     float f;
@@ -24,7 +24,7 @@
 
 void main(out PS_OUTPUT ps_output)
 {
-    // implicit sized local array
+    // local array sized from initializers
     float l_array[] = { 1, 2, 3 };
 
     ps_output.color = g_array[0] + g_array[4] + l_array[1] + g_mystruct[0].f + g_array[idx];
diff --git a/Test/hlsl.array.multidim.frag b/Test/hlsl.array.multidim.frag
new file mode 100644
index 0000000..524a889
--- /dev/null
+++ b/Test/hlsl.array.multidim.frag
@@ -0,0 +1,20 @@
+
+float float_array[5][4][3];
+
+struct PS_OUTPUT
+{
+    float4 Color : SV_Target0;
+};
+
+PS_OUTPUT main()
+{
+    float4 float4_array_1[2][3];
+    float4 float4_array_2[5][3];
+
+    float4_array_1[1][2] = float_array[2][3][1];
+    float4_array_2[1] = float4_array_1[0];
+
+    PS_OUTPUT psout;
+    psout.Color = float4_array_1[1][2];
+    return psout;
+}
diff --git a/Test/hlsl.basic.comp b/Test/hlsl.basic.comp
new file mode 100644
index 0000000..8a65a59
--- /dev/null
+++ b/Test/hlsl.basic.comp
@@ -0,0 +1,6 @@
+groupshared float4 a[100];

+

+void main(int dti : SV_DispatchThreadID)

+{

+    dti;

+}

diff --git a/Test/hlsl.inoutquals.frag b/Test/hlsl.inoutquals.frag
index 91798d5..3234688 100644
--- a/Test/hlsl.inoutquals.frag
+++ b/Test/hlsl.inoutquals.frag
@@ -11,7 +11,7 @@
     x = -1; // no effect since x = in param
 }
 
-PS_OUTPUT main(noperspective in float4 inpos : SV_Position)
+PS_OUTPUT main(noperspective in float4 inpos : SV_Position, out int sampleMask : SV_Coverage)
 {
    PS_OUTPUT psout;
 
diff --git a/Test/hlsl.intrinsics.comp b/Test/hlsl.intrinsics.comp
index 12b7caa..bce2d27 100644
--- a/Test/hlsl.intrinsics.comp
+++ b/Test/hlsl.intrinsics.comp
@@ -1,17 +1,17 @@
 
-#define gs static    // TODO: define as groupshared when available in the grammar
-gs uint gs_ua;
-gs uint gs_ub;
-gs uint gs_uc;
-gs uint2 gs_ua2;
-gs uint2 gs_ub2;
-gs uint2 gs_uc2;
-gs uint3 gs_ua3;
-gs uint3 gs_ub3;
-gs uint3 gs_uc3;
-gs uint4 gs_ua4;
-gs uint4 gs_ub4;
-gs uint4 gs_uc4;
+
+groupshared uint gs_ua;
+groupshared uint gs_ub;
+groupshared uint gs_uc;
+groupshared uint2 gs_ua2;
+groupshared uint2 gs_ub2;
+groupshared uint2 gs_uc2;
+groupshared uint3 gs_ua3;
+groupshared uint3 gs_ub3;
+groupshared uint3 gs_uc3;
+groupshared uint4 gs_ua4;
+groupshared uint4 gs_ub4;
+groupshared uint4 gs_uc4;
 
 float ComputeShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint inU1)
 {
diff --git a/Test/hlsl.intrinsics.frag b/Test/hlsl.intrinsics.frag
index 90387cc..03e7ed3 100644
--- a/Test/hlsl.intrinsics.frag
+++ b/Test/hlsl.intrinsics.frag
@@ -1,17 +1,17 @@
 
-#define gs static     // TODO: define as groupshared when available in the grammar
-gs uint gs_ua;
-gs uint gs_ub;
-gs uint gs_uc;
-gs uint2 gs_ua2;
-gs uint2 gs_ub2;
-gs uint2 gs_uc2;
-gs uint3 gs_ua3;
-gs uint3 gs_ub3;
-gs uint3 gs_uc3;
-gs uint4 gs_ua4;
-gs uint4 gs_ub4;
-gs uint4 gs_uc4;
+
+groupshared uint gs_ua;
+groupshared uint gs_ub;
+groupshared uint gs_uc;
+groupshared uint2 gs_ua2;
+groupshared uint2 gs_ub2;
+groupshared uint2 gs_uc2;
+groupshared uint3 gs_ua3;
+groupshared uint3 gs_ub3;
+groupshared uint3 gs_uc3;
+groupshared uint4 gs_ua4;
+groupshared uint4 gs_ub4;
+groupshared uint4 gs_uc4;
 
 float PixelShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint inU1)
 {
diff --git a/Test/hlsl.load.buffer.float.dx10.frag b/Test/hlsl.load.buffer.float.dx10.frag
new file mode 100644
index 0000000..eeea9a6
--- /dev/null
+++ b/Test/hlsl.load.buffer.float.dx10.frag
@@ -0,0 +1,38 @@
+uniform Buffer <float> g_tTexbfs_test : register(t0);
+
+Buffer <float> g_tTexbfs;
+Buffer <int>   g_tTexbis;
+Buffer <uint>  g_tTexbus;
+
+struct PS_OUTPUT
+{
+    float4 Color : SV_Target0;
+    float  Depth : SV_Depth;
+};
+
+uniform int   c1;
+uniform int2  c2;
+uniform int3  c3;
+uniform int4  c4;
+
+uniform int   o1;
+uniform int2  o2;
+uniform int3  o3;
+uniform int4  o4;
+
+PS_OUTPUT main()
+{
+   PS_OUTPUT psout;
+
+   // Buffer
+   float r00 = g_tTexbfs.Load(c1);
+   int   r01 = g_tTexbis.Load(c1);
+   uint  r02 = g_tTexbus.Load(c1);
+
+   // TODO: other types that can be put in sampler buffers, like float2x2, and float3.
+
+   psout.Color = 1.0;
+   psout.Depth = 1.0;
+
+   return psout;
+}
diff --git a/Test/hlsl.rw.bracket.frag b/Test/hlsl.rw.bracket.frag
new file mode 100644
index 0000000..9390e8d
--- /dev/null
+++ b/Test/hlsl.rw.bracket.frag
@@ -0,0 +1,140 @@
+SamplerState       g_sSamp : register(s0);
+
+RWTexture1D <float4> g_tTex1df4 : register(t0);
+RWTexture1D <int4>   g_tTex1di4;
+RWTexture1D <uint4>  g_tTex1du4;
+
+RWTexture2D <float4> g_tTex2df4;
+RWTexture2D <int4>   g_tTex2di4;
+RWTexture2D <uint4>  g_tTex2du4;
+
+RWTexture3D <float4> g_tTex3df4;
+RWTexture3D <int4>   g_tTex3di4;
+RWTexture3D <uint4>  g_tTex3du4;
+
+RWTexture1DArray <float4> g_tTex1df4a;
+RWTexture1DArray <int4>   g_tTex1di4a;
+RWTexture1DArray <uint4>  g_tTex1du4a;
+
+RWTexture2DArray <float4> g_tTex2df4a;
+RWTexture2DArray <int4>   g_tTex2di4a;
+RWTexture2DArray <uint4>  g_tTex2du4a;
+
+struct PS_OUTPUT
+{
+    float4 Color : SV_Target0;
+};
+
+uniform int   c1;
+uniform int2  c2;
+uniform int3  c3;
+uniform int4  c4;
+
+uniform int   o1;
+uniform int2  o2;
+uniform int3  o3;
+uniform int4  o4;
+
+uniform float4 uf4;
+uniform int4   ui4;
+uniform uint4  uu4;
+
+int4   Fn1(in int4 x)   { return x; }
+uint4  Fn1(in uint4 x)  { return x; }
+float4 Fn1(in float4 x) { return x; }
+
+void Fn2(out int4 x)   { x = int4(0); }
+void Fn2(out uint4 x)  { x = uint4(0); }
+void Fn2(out float4 x) { x = float4(0); }
+
+float4 SomeValue() { return c4; }
+
+PS_OUTPUT main()
+{
+   PS_OUTPUT psout;
+
+   // 1D
+   g_tTex1df4[c1];
+   
+   float4 r00 = g_tTex1df4[c1];
+   int4   r01 = g_tTex1di4[c1];
+   uint4  r02 = g_tTex1du4[c1];
+
+   // 2D
+   float4 r10 = g_tTex2df4[c2];
+   int4   r11 = g_tTex2di4[c2];
+   uint4  r12 = g_tTex2du4[c2];
+   
+   // 3D
+   float4 r20 = g_tTex3df4[c3];
+   int4   r21 = g_tTex3di4[c3];
+   uint4  r22 = g_tTex3du4[c3];
+
+   float4 lf4 = uf4;
+
+   // Test as L-values
+   // 1D
+   g_tTex1df4[c1] = SomeValue(); // complex R-value
+   g_tTex1df4[c1] = lf4;
+   g_tTex1di4[c1] = int4(2,2,3,4);
+   g_tTex1du4[c1] = uint4(3,2,3,4);
+
+   // Test some operator= things, which need to do both a load and a store.
+   float4 val1 = (g_tTex1df4[c1] *= 2.0);
+   g_tTex1df4[c1] -= 3.0;
+   g_tTex1df4[c1] += 4.0;
+   
+   g_tTex1di4[c1] /= 2;
+   g_tTex1di4[c1] %= 2;
+   g_tTex1di4[c1] &= 0xffff;
+   g_tTex1di4[c1] |= 0xf0f0;
+   g_tTex1di4[c1] <<= 2;
+   g_tTex1di4[c1] >>= 2;
+
+   // 2D
+   g_tTex2df4[c2] = SomeValue(); // complex L-value
+   g_tTex2df4[c2] = lf4;
+   g_tTex2di4[c2] = int4(5,2,3,4);
+   g_tTex2du4[c2] = uint4(6,2,3,4);
+   
+   // 3D
+   g_tTex3df4[c3] = SomeValue(); // complex L-value
+   g_tTex3df4[c3] = lf4;
+   g_tTex3di4[c3] = int4(8,6,7,8);
+   g_tTex3du4[c3] = uint4(9,2,3,4);
+
+   // Test function calling
+   Fn1(g_tTex1df4[c1]);  // in
+   Fn1(g_tTex1di4[c1]);  // in
+   Fn1(g_tTex1du4[c1]);  // in
+
+   Fn2(g_tTex1df4[c1]);  // out
+   Fn2(g_tTex1di4[c1]);  // out
+   Fn2(g_tTex1du4[c1]);  // out
+
+   // Test increment operators
+   // pre-ops
+   ++g_tTex1df4[c1];
+   ++g_tTex1di4[c1];
+   ++g_tTex1du4[c1];
+
+   --g_tTex1df4[c1];
+   --g_tTex1di4[c1];
+   --g_tTex1du4[c1];
+
+   // post-ops
+   g_tTex1df4[c1]++;
+   g_tTex1du4[c1]--;
+   g_tTex1di4[c1]++;
+
+   g_tTex1df4[c1]--;
+   g_tTex1di4[c1]++;
+   g_tTex1du4[c1]--;
+
+   // read and write
+   g_tTex1df4[1] = g_tTex2df4[int2(2,3)];
+
+   psout.Color = 1.0;
+
+   return psout;
+}
diff --git a/Test/hlsl.rw.scalar.bracket.frag b/Test/hlsl.rw.scalar.bracket.frag
new file mode 100644
index 0000000..e185f05
--- /dev/null
+++ b/Test/hlsl.rw.scalar.bracket.frag
@@ -0,0 +1,140 @@
+SamplerState       g_sSamp : register(s0);
+
+RWTexture1D <float> g_tTex1df1;
+RWTexture1D <int>   g_tTex1di1;
+RWTexture1D <uint>  g_tTex1du1;
+
+RWTexture2D <float> g_tTex2df1;
+RWTexture2D <int>   g_tTex2di1;
+RWTexture2D <uint>  g_tTex2du1;
+
+RWTexture3D <float> g_tTex3df1;
+RWTexture3D <int>   g_tTex3di1;
+RWTexture3D <uint>  g_tTex3du1;
+
+RWTexture1DArray <float> g_tTex1df1a;
+RWTexture1DArray <int>   g_tTex1di1a;
+RWTexture1DArray <uint>  g_tTex1du1a;
+
+RWTexture2DArray <float> g_tTex2df1a;
+RWTexture2DArray <int>   g_tTex2di1a;
+RWTexture2DArray <uint>  g_tTex2du1a;
+
+struct PS_OUTPUT
+{
+    float4 Color : SV_Target0;
+};
+
+uniform int   c1;
+uniform int2  c2;
+uniform int3  c3;
+uniform int4  c4;
+
+uniform int   o1;
+uniform int2  o2;
+uniform int3  o3;
+uniform int4  o4;
+
+uniform float uf1;
+uniform int   ui1;
+uniform uint  uu1;
+
+int   Fn1(in int x)   { return x; }
+uint  Fn1(in uint x)  { return x; }
+float Fn1(in float x) { return x; }
+
+void Fn2(out int x)   { x = int(0); }
+void Fn2(out uint x)  { x = uint(0); }
+void Fn2(out float x) { x = float(0); }
+
+float SomeValue() { return c1; }
+
+PS_OUTPUT main()
+{
+   PS_OUTPUT psout;
+
+   // 1D
+   g_tTex1df1[c1];
+   
+   float r00 = g_tTex1df1[c1];
+   int   r01 = g_tTex1di1[c1];
+   uint  r02 = g_tTex1du1[c1];
+
+   // 2D
+   float r10 = g_tTex2df1[c2];
+   int   r11 = g_tTex2di1[c2];
+   uint  r12 = g_tTex2du1[c2];
+   
+   // 3D
+   float r20 = g_tTex3df1[c3];
+   int   r21 = g_tTex3di1[c3];
+   uint  r22 = g_tTex3du1[c3];
+
+   float lf1 = uf1;
+
+   // Test as L-values
+   // 1D
+   g_tTex1df1[c1] = SomeValue(); // complex R-value
+   g_tTex1df1[c1] = lf1;
+   g_tTex1di1[c1] = int(2);
+   g_tTex1du1[c1] = uint(3);
+
+   // Test some operator= things, which need to do both a load and a store.
+   float val1 = (g_tTex1df1[c1] *= 2.0);
+   g_tTex1df1[c1] -= 3.0;
+   g_tTex1df1[c1] += 4.0;
+   
+   g_tTex1di1[c1] /= 2;
+   g_tTex1di1[c1] %= 2;
+   g_tTex1di1[c1] &= 0xffff;
+   g_tTex1di1[c1] |= 0xf0f0;
+   g_tTex1di1[c1] <<= 2;
+   g_tTex1di1[c1] >>= 2;
+
+   // 2D
+   g_tTex2df1[c2] = SomeValue(); // complex L-value
+   g_tTex2df1[c2] = lf1;
+   g_tTex2di1[c2] = int(5);
+   g_tTex2du1[c2] = uint(6);
+   
+   // 3D
+   g_tTex3df1[c3] = SomeValue(); // complex L-value
+   g_tTex3df1[c3] = lf1;
+   g_tTex3di1[c3] = int(8);
+   g_tTex3du1[c3] = uint(9);
+
+   // Test function calling
+   Fn1(g_tTex1df1[c1]);  // in
+   Fn1(g_tTex1di1[c1]);  // in
+   Fn1(g_tTex1du1[c1]);  // in
+
+   Fn2(g_tTex1df1[c1]);  // out
+   Fn2(g_tTex1di1[c1]);  // out
+   Fn2(g_tTex1du1[c1]);  // out
+
+   // Test increment operators
+   // pre-ops
+   ++g_tTex1df1[c1];
+   ++g_tTex1di1[c1];
+   ++g_tTex1du1[c1];
+
+   --g_tTex1df1[c1];
+   --g_tTex1di1[c1];
+   --g_tTex1du1[c1];
+
+   // post-ops
+   g_tTex1df1[c1]++;
+   g_tTex1du1[c1]--;
+   g_tTex1di1[c1]++;
+
+   g_tTex1df1[c1]--;
+   g_tTex1di1[c1]++;
+   g_tTex1du1[c1]--;
+
+   // read and write
+   g_tTex1df1[1] = g_tTex2df1[int2(2, 3)];
+
+   psout.Color = 1.0;
+
+   return psout;
+}
diff --git a/Test/hlsl.rw.vec2.bracket.frag b/Test/hlsl.rw.vec2.bracket.frag
new file mode 100644
index 0000000..7b4a10a
--- /dev/null
+++ b/Test/hlsl.rw.vec2.bracket.frag
@@ -0,0 +1,140 @@
+SamplerState       g_sSamp : register(s0);
+
+RWTexture1D <float2> g_tTex1df2;
+RWTexture1D <int2>   g_tTex1di2;
+RWTexture1D <uint2>  g_tTex1du2;
+
+RWTexture2D <float2> g_tTex2df2;
+RWTexture2D <int2>   g_tTex2di2;
+RWTexture2D <uint2>  g_tTex2du2;
+
+RWTexture3D <float2> g_tTex3df2;
+RWTexture3D <int2>   g_tTex3di2;
+RWTexture3D <uint2>  g_tTex3du2;
+
+RWTexture1DArray <float2> g_tTex1df2a;
+RWTexture1DArray <int2>   g_tTex1di2a;
+RWTexture1DArray <uint2>  g_tTex1du2a;
+
+RWTexture2DArray <float2> g_tTex2df2a;
+RWTexture2DArray <int2>   g_tTex2di2a;
+RWTexture2DArray <uint2>  g_tTex2du2a;
+
+struct PS_OUTPUT
+{
+    float4 Color : SV_Target0;
+};
+
+uniform int   c1;
+uniform int2  c2;
+uniform int3  c3;
+uniform int4  c4;
+
+uniform int   o1;
+uniform int2  o2;
+uniform int3  o3;
+uniform int4  o4;
+
+uniform float2 uf2;
+uniform int2   ui2;
+uniform uint2  uu2;
+
+int2   Fn1(in int2 x)   { return x; }
+uint2  Fn1(in uint2 x)  { return x; }
+float2 Fn1(in float2 x) { return x; }
+
+void Fn2(out int2 x)   { x = int2(0,0); }
+void Fn2(out uint2 x)  { x = uint2(0,0); }
+void Fn2(out float2 x) { x = float2(0,0); }
+
+float2 SomeValue() { return c2; }
+
+PS_OUTPUT main()
+{
+   PS_OUTPUT psout;
+
+   // 1D
+   g_tTex1df2[c1];
+   
+   float2 r00 = g_tTex1df2[c1];
+   int2   r01 = g_tTex1di2[c1];
+   uint2  r02 = g_tTex1du2[c1];
+
+   // 2D
+   float2 r10 = g_tTex2df2[c2];
+   int2   r11 = g_tTex2di2[c2];
+   uint2  r12 = g_tTex2du2[c2];
+   
+   // 3D
+   float2 r20 = g_tTex3df2[c3];
+   int2   r21 = g_tTex3di2[c3];
+   uint2  r22 = g_tTex3du2[c3];
+
+   float2 lf2 = uf2;
+
+   // Test as L-values
+   // 1D
+   g_tTex1df2[c1] = SomeValue(); // complex R-value
+   g_tTex1df2[c1] = lf2;
+   g_tTex1di2[c1] = int2(2,2);
+   g_tTex1du2[c1] = uint2(3,2);
+
+   // Test some operator= things, which need to do both a load and a store.
+   float2 val1 = (g_tTex1df2[c1] *= 2.0);
+   g_tTex1df2[c1] -= 3.0;
+   g_tTex1df2[c1] += 4.0;
+   
+   g_tTex1di2[c1] /= 2;
+   g_tTex1di2[c1] %= 2;
+   g_tTex1di2[c1] &= 0xffff;
+   g_tTex1di2[c1] |= 0xf0f0;
+   g_tTex1di2[c1] <<= 2;
+   g_tTex1di2[c1] >>= 2;
+
+   // 2D
+   g_tTex2df2[c2] = SomeValue(); // complex L-value
+   g_tTex2df2[c2] = lf2;
+   g_tTex2di2[c2] = int2(5,2);
+   g_tTex2du2[c2] = uint2(6,2);
+   
+   // 3D
+   g_tTex3df2[c3] = SomeValue(); // complex L-value
+   g_tTex3df2[c3] = lf2;
+   g_tTex3di2[c3] = int2(8,6);
+   g_tTex3du2[c3] = uint2(9,2);
+
+   // Test function calling
+   Fn1(g_tTex1df2[c1]);  // in
+   Fn1(g_tTex1di2[c1]);  // in
+   Fn1(g_tTex1du2[c1]);  // in
+
+   Fn2(g_tTex1df2[c1]);  // out
+   Fn2(g_tTex1di2[c1]);  // out
+   Fn2(g_tTex1du2[c1]);  // out
+
+   // Test increment operators
+   // pre-ops
+   ++g_tTex1df2[c1];
+   ++g_tTex1di2[c1];
+   ++g_tTex1du2[c1];
+
+   --g_tTex1df2[c1];
+   --g_tTex1di2[c1];
+   --g_tTex1du2[c1];
+
+   // post-ops
+   g_tTex1df2[c1]++;
+   g_tTex1du2[c1]--;
+   g_tTex1di2[c1]++;
+
+   g_tTex1df2[c1]--;
+   g_tTex1di2[c1]++;
+   g_tTex1du2[c1]--;
+
+   // read and write
+   g_tTex1df2[1] = g_tTex2df2[int2(2,3)];
+
+   psout.Color = 1.0;
+
+   return psout;
+}
diff --git a/Test/hlsl.sample.sub-vec4.dx10.frag b/Test/hlsl.sample.sub-vec4.dx10.frag
new file mode 100644
index 0000000..991d976
--- /dev/null
+++ b/Test/hlsl.sample.sub-vec4.dx10.frag
@@ -0,0 +1,24 @@
+SamplerState       g_sSamp : register(s0);
+
+Texture1D <float>  g_tTex1df1;
+Texture1D <float2> g_tTex1df2;
+Texture1D <float3> g_tTex1df3;
+Texture1D <float4> g_tTex1df4;
+
+struct PS_OUTPUT
+{
+    float4 Color : SV_Target0;
+};
+
+PS_OUTPUT main()
+{
+   PS_OUTPUT psout;
+
+   float  txval10 = g_tTex1df1 . Sample(g_sSamp, 0.1);
+   float2 txval11 = g_tTex1df2 . Sample(g_sSamp, 0.2);
+   float3 txval12 = g_tTex1df3 . Sample(g_sSamp, 0.2);
+   float4 txval13 = g_tTex1df4 . Sample(g_sSamp, 0.2);
+
+   psout.Color = 1.0;
+   return psout;
+}
diff --git a/Test/hlsl.struct.frag b/Test/hlsl.struct.frag
index 2c511a6..e602c9e 100644
--- a/Test/hlsl.struct.frag
+++ b/Test/hlsl.struct.frag
@@ -12,7 +12,7 @@
 
 myS s1;
 
-struct {
+static struct {
     float4 i;
 } s2;
 
@@ -40,4 +40,4 @@
     s2.i = s.ff4;
 
     return input;
-}
\ No newline at end of file
+}
diff --git a/Test/hlsl.tx.bracket.frag b/Test/hlsl.tx.bracket.frag
new file mode 100644
index 0000000..0d3d81f
--- /dev/null
+++ b/Test/hlsl.tx.bracket.frag
@@ -0,0 +1,73 @@
+SamplerState       g_sSamp : register(s0);
+
+Texture1D <float4> g_tTex1df4 : register(t0);
+Texture1D <int4>   g_tTex1di4;
+Texture1D <uint4>  g_tTex1du4;
+
+Texture2D <float4> g_tTex2df4;
+Texture2D <int4>   g_tTex2di4;
+Texture2D <uint4>  g_tTex2du4;
+
+Texture3D <float4> g_tTex3df4;
+Texture3D <int4>   g_tTex3di4;
+Texture3D <uint4>  g_tTex3du4;
+
+Texture1DArray <float4> g_tTex1df4a;
+Texture1DArray <int4>   g_tTex1di4a;
+Texture1DArray <uint4>  g_tTex1du4a;
+
+Texture2DArray <float4> g_tTex2df4a;
+Texture2DArray <int4>   g_tTex2di4a;
+Texture2DArray <uint4>  g_tTex2du4a;
+
+struct PS_OUTPUT
+{
+    float4 Color : SV_Target0;
+};
+
+uniform int   c1;
+uniform int2  c2;
+uniform int3  c3;
+uniform int4  c4;
+
+uniform int   o1;
+uniform int2  o2;
+uniform int3  o3;
+uniform int4  o4;
+
+int4   Fn1(in int4 x)   { return x; }
+uint4  Fn1(in uint4 x)  { return x; }
+float4 Fn1(in float4 x) { return x; }
+
+float4 SomeValue() { return c4; }
+
+PS_OUTPUT main()
+{
+   PS_OUTPUT psout;
+
+   // 1D
+   g_tTex1df4[c1];
+   
+   float4 r00 = g_tTex1df4[c1];
+   int4   r01 = g_tTex1di4[c1];
+   uint4  r02 = g_tTex1du4[c1];
+
+   // 2D
+   float4 r10 = g_tTex2df4[c2];
+   int4   r11 = g_tTex2di4[c2];
+   uint4  r12 = g_tTex2du4[c2];
+   
+   // 3D
+   float4 r20 = g_tTex3df4[c3];
+   int4   r21 = g_tTex3di4[c3];
+   uint4  r22 = g_tTex3du4[c3];
+
+   // Test function calling
+   Fn1(g_tTex1df4[c1]);  // in
+   Fn1(g_tTex1di4[c1]);  // in
+   Fn1(g_tTex1du4[c1]);  // in
+
+   psout.Color = 1.0;
+
+   return psout;
+}
diff --git a/Test/spv.register.autoassign.rangetest.frag b/Test/spv.register.autoassign.rangetest.frag
new file mode 100644
index 0000000..c81c395
--- /dev/null
+++ b/Test/spv.register.autoassign.rangetest.frag
@@ -0,0 +1,15 @@
+
+SamplerState g_tSamp : register(s5);
+
+Texture2D g_tScene[2] : register(t5);
+
+struct PS_OUTPUT
+{
+    float4 Color : SV_Target0;
+};
+
+void main(out PS_OUTPUT psout)
+{
+    psout.Color = g_tScene[0].Sample(g_tSamp, 0.3) +
+                  g_tScene[1].Sample(g_tSamp, 0.3);
+}
diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h
index 636645e..e082356 100644
--- a/glslang/Include/Common.h
+++ b/glslang/Include/Common.h
@@ -68,6 +68,10 @@
 {
   return _strtoi64(str, endptr, base); 
 }
+inline unsigned long long int strtoull (const char* str, char** endptr, int base)
+{
+  return _strtoui64(str, endptr, base);
+}
 inline long long int atoll (const char* str)
 {
   return strtoll(str, NULL, 10);
diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h
index 35b4831..6c8cb82 100644
--- a/glslang/Include/Types.h
+++ b/glslang/Include/Types.h
@@ -78,6 +78,7 @@
     bool   combined : 1;  // true means texture is combined with a sampler, false means texture with no sampler
     bool    sampler : 1;  // true means a pure sampler, other fields should be clear()
     bool   external : 1;  // GL_OES_EGL_image_external
+    unsigned int vectorSize : 3;  // return vector size.  TODO: support arbitrary types.
 
     bool isImage()       const { return image && dim != EsdSubpass; }
     bool isSubpass()     const { return dim == EsdSubpass; }
@@ -99,6 +100,7 @@
         combined = false;
         sampler = false;
         external = false;
+        vectorSize = 4;
     }
 
     // make a combined sampler and texture
@@ -164,7 +166,8 @@
               image == right.image &&
            combined == right.combined &&
             sampler == right.sampler &&
-           external == right.external;
+           external == right.external &&
+         vectorSize == right.vectorSize;
     }
 
     bool operator!=(const TSampler& right) const
diff --git a/glslang/Include/revision.h b/glslang/Include/revision.h
index 0521e2e..c8b1b10 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 "Overload400-PrecQual.1560"
-#define GLSLANG_DATE "07-Oct-2016"
+#define GLSLANG_REVISION "Overload400-PrecQual.1603"
+#define GLSLANG_DATE "16-Oct-2016"
diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp
index 58bc8a5..8e80bbd 100644
--- a/glslang/MachineIndependent/Intermediate.cpp
+++ b/glslang/MachineIndependent/Intermediate.cpp
@@ -136,13 +136,7 @@
     // Need a new node holding things together.  Make
     // one and promote it to the right type.
     //
-    TIntermBinary* node = new TIntermBinary(op);
-    if (loc.line == 0)
-        loc = right->getLoc();
-    node->setLoc(loc);
-
-    node->setLeft(left);
-    node->setRight(right);
+    TIntermBinary* node = addBinaryNode(op, left, right, loc);
     if (! node->promote())
         return 0;
 
@@ -173,6 +167,56 @@
 }
 
 //
+// Low level: add binary node (no promotions or other argument modifications)
+//
+TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc loc) const
+{
+    // build the node
+    TIntermBinary* node = new TIntermBinary(op);
+    if (loc.line == 0)
+        loc = left->getLoc();
+    node->setLoc(loc);
+    node->setLeft(left);
+    node->setRight(right);
+
+    return node;
+}
+
+//
+// like non-type form, but sets node's type.
+//
+TIntermBinary* TIntermediate::addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc loc, const TType& type) const
+{
+    TIntermBinary* node = addBinaryNode(op, left, right, loc);
+    node->setType(type);
+    return node;
+}
+    
+//
+// Low level: add unary node (no promotions or other argument modifications)
+//
+TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc loc) const
+{
+    TIntermUnary* node = new TIntermUnary(op);
+    if (loc.line == 0)
+        loc = child->getLoc();
+    node->setLoc(loc);
+    node->setOperand(child);
+
+    return node;
+}
+
+//
+// like non-type form, but sets node's type.
+//
+TIntermUnary* TIntermediate::addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc loc, const TType& type) const
+{
+    TIntermUnary* node = addUnaryNode(op, child, loc);
+    node->setType(type);
+    return node;
+}
+
+//
 // Connect two nodes through an assignment.
 //
 // Returns the added node.
@@ -200,12 +244,7 @@
     right = addShapeConversion(op, left->getType(), right);
 
     // build the node
-    TIntermBinary* node = new TIntermBinary(op);
-    if (loc.line == 0)
-        loc = left->getLoc();
-    node->setLoc(loc);
-    node->setLeft(left);
-    node->setRight(right);
+    TIntermBinary* node = addBinaryNode(op, left, right, loc);
 
     if (! node->promote())
         return nullptr;
@@ -224,16 +263,8 @@
 //
 TIntermTyped* TIntermediate::addIndex(TOperator op, TIntermTyped* base, TIntermTyped* index, TSourceLoc loc)
 {
-    TIntermBinary* node = new TIntermBinary(op);
-    if (loc.line == 0)
-        loc = index->getLoc();
-    node->setLoc(loc);
-    node->setLeft(base);
-    node->setRight(index);
-
     // caller should set the type
-
-    return node;
+    return addBinaryNode(op, base, index, loc);
 }
 
 //
@@ -316,11 +347,7 @@
     //
     // Make a new node for the operator.
     //
-    TIntermUnary* node = new TIntermUnary(op);
-    if (loc.line == 0)
-        loc = child->getLoc();
-    node->setLoc(loc);
-    node->setOperand(child);
+    TIntermUnary* node = addUnaryNode(op, child, loc);
 
     if (! node->promote())
         return 0;
@@ -357,12 +384,7 @@
                 return folded;
         }
 
-        TIntermUnary* node = new TIntermUnary(op);
-        node->setLoc(child->getLoc());
-        node->setOperand(child);
-        node->setType(returnType);
-
-        return node;
+        return addUnaryNode(op, child, child->getLoc(), returnType);
     } else {
         // setAggregateOperater() calls fold() for constant folding
         TIntermTyped* node = setAggregateOperator(childNode, op, returnType, loc);
@@ -725,9 +747,7 @@
     }
 
     TType newType(promoteTo, EvqTemporary, node->getVectorSize(), node->getMatrixCols(), node->getMatrixRows());
-    newNode = new TIntermUnary(newOp, newType);
-    newNode->setLoc(node->getLoc());
-    newNode->setOperand(node);
+    newNode = addUnaryNode(newOp, node, node->getLoc(), newType);
 
     // TODO: it seems that some unary folding operations should occur here, but are not
 
diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp
index fe2b8e6..5949cd8 100644
--- a/glslang/MachineIndependent/ParseContextBase.cpp
+++ b/glslang/MachineIndependent/ParseContextBase.cpp
@@ -113,6 +113,114 @@
     va_end(args);
 }
 
+//
+// Both test and if necessary, spit out an error, to see if the node is really
+// an l-value that can be operated on this way.
+//
+// Returns true if there was an error.
+//
+bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node)
+{
+    TIntermBinary* binaryNode = node->getAsBinaryNode();
+
+    if (binaryNode) {
+        switch(binaryNode->getOp()) {
+        case EOpIndexDirect:
+        case EOpIndexIndirect:     // fall through
+        case EOpIndexDirectStruct: // fall through
+        case EOpVectorSwizzle:
+            return lValueErrorCheck(loc, op, binaryNode->getLeft());
+        default:
+            break;
+        }
+        error(loc, " l-value required", op, "", "");
+
+        return true;
+    }
+
+    const char* symbol = nullptr;
+    TIntermSymbol* symNode = node->getAsSymbolNode();
+    if (symNode != nullptr)
+        symbol = symNode->getName().c_str();
+
+    const char* message = nullptr;
+    switch (node->getQualifier().storage) {
+    case EvqConst:          message = "can't modify a const";        break;
+    case EvqConstReadOnly:  message = "can't modify a const";        break;
+    case EvqUniform:        message = "can't modify a uniform";      break;
+    case EvqBuffer:
+        if (node->getQualifier().readonly)
+            message = "can't modify a readonly buffer";
+        break;
+
+    default:
+        //
+        // Type that can't be written to?
+        //
+        switch (node->getBasicType()) {
+        case EbtSampler:
+            message = "can't modify a sampler";
+            break;
+        case EbtAtomicUint:
+            message = "can't modify an atomic_uint";
+            break;
+        case EbtVoid:
+            message = "can't modify void";
+            break;
+        default:
+            break;
+        }
+    }
+
+    if (message == nullptr && binaryNode == nullptr && symNode == nullptr) {
+        error(loc, " l-value required", op, "", "");
+
+        return true;
+    }
+
+    //
+    // Everything else is okay, no error.
+    //
+    if (message == nullptr)
+        return false;
+
+    //
+    // If we get here, we have an error and a message.
+    //
+    if (symNode)
+        error(loc, " l-value required", op, "\"%s\" (%s)", symbol, message);
+    else
+        error(loc, " l-value required", op, "(%s)", message);
+
+    return true;
+}
+
+// Test for and give an error if the node can't be read from.
+void TParseContextBase::rValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node)
+{
+    if (! node)
+        return;
+
+    TIntermBinary* binaryNode = node->getAsBinaryNode();
+    if (binaryNode) {
+        switch(binaryNode->getOp()) {
+        case EOpIndexDirect:
+        case EOpIndexIndirect:
+        case EOpIndexDirectStruct:
+        case EOpVectorSwizzle:
+            rValueErrorCheck(loc, op, binaryNode->getLeft());
+        default:
+            break;
+        }
+
+        return;
+    }
+
+    TIntermSymbol* symNode = node->getAsSymbolNode();
+    if (symNode && symNode->getQualifier().writeonly)
+        error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str());
+}
+
 // Make a shared symbol have a non-shared version that can be edited by the current 
 // compile, such that editing its type will not change the shared version and will
 // effect all nodes sharing it.
@@ -253,7 +361,7 @@
         return viableCandidates.front();
 
     // 4. find best...
-    auto betterParam = [&call, &better](const TFunction& can1, const TFunction& can2){
+    auto betterParam = [&call, &better](const TFunction& can1, const TFunction& can2) -> bool {
         // is call -> can2 better than call -> can1 for any parameter
         bool hasBetterParam = false;
         for (int param = 0; param < call.getParamCount(); ++param) {
diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp
index 949ba00..71ee4f3 100644
--- a/glslang/MachineIndependent/ParseHelper.cpp
+++ b/glslang/MachineIndependent/ParseHelper.cpp
@@ -1902,14 +1902,14 @@
 // Both test and if necessary, spit out an error, to see if the node is really
 // an l-value that can be operated on this way.
 //
-// Returns true if the was an error.
+// Returns true if there was an error.
 //
 bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node)
 {
     TIntermBinary* binaryNode = node->getAsBinaryNode();
 
     if (binaryNode) {
-        bool errorReturn;
+        bool errorReturn = false;
 
         switch(binaryNode->getOp()) {
         case EOpIndexDirect:
@@ -1928,9 +1928,9 @@
                 }
             }
 
-            // fall through
+            break; // left node is checked by base class
         case EOpIndexDirectStruct:
-            return lValueErrorCheck(loc, op, binaryNode->getLeft());
+            break; // left node is checked by base class
         case EOpVectorSwizzle:
             errorReturn = lValueErrorCheck(loc, op, binaryNode->getLeft());
             if (!errorReturn) {
@@ -1955,11 +1955,16 @@
         default:
             break;
         }
-        error(loc, " l-value required", op, "", "");
 
-        return true;
+        if (errorReturn) {
+            error(loc, " l-value required", op, "", "");
+            return true;
+        }
     }
 
+    // Let the base class check errors
+    if (TParseContextBase::lValueErrorCheck(loc, op, node))
+        return true;
 
     const char* symbol = nullptr;
     TIntermSymbol* symNode = node->getAsSymbolNode();
@@ -1968,19 +1973,12 @@
 
     const char* message = nullptr;
     switch (node->getQualifier().storage) {
-    case EvqConst:          message = "can't modify a const";        break;
-    case EvqConstReadOnly:  message = "can't modify a const";        break;
     case EvqVaryingIn:      message = "can't modify shader input";   break;
     case EvqInstanceId:     message = "can't modify gl_InstanceID";  break;
     case EvqVertexId:       message = "can't modify gl_VertexID";    break;
     case EvqFace:           message = "can't modify gl_FrontFace";   break;
     case EvqFragCoord:      message = "can't modify gl_FragCoord";   break;
     case EvqPointCoord:     message = "can't modify gl_PointCoord";  break;
-    case EvqUniform:        message = "can't modify a uniform";      break;
-    case EvqBuffer:
-        if (node->getQualifier().readonly)
-            message = "can't modify a readonly buffer";
-        break;
     case EvqFragDepth:
         intermediate.setDepthReplacing();
         // "In addition, it is an error to statically write to gl_FragDepth in the fragment shader."
@@ -1989,22 +1987,7 @@
         break;
 
     default:
-        //
-        // Type that can't be written to?
-        //
-        switch (node->getBasicType()) {
-        case EbtSampler:
-            message = "can't modify a sampler";
-            break;
-        case EbtAtomicUint:
-            message = "can't modify an atomic_uint";
-            break;
-        case EbtVoid:
-            message = "can't modify void";
-            break;
-        default:
-            break;
-        }
+        break;
     }
 
     if (message == nullptr && binaryNode == nullptr && symNode == nullptr) {
@@ -2013,7 +1996,6 @@
         return true;
     }
 
-
     //
     // Everything else is okay, no error.
     //
@@ -2034,30 +2016,14 @@
 // Test for and give an error if the node can't be read from.
 void TParseContext::rValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node)
 {
-    if (! node)
-        return;
+    // Let the base class check errors
+    TParseContextBase::rValueErrorCheck(loc, op, node);
 
-    TIntermBinary* binaryNode = node->getAsBinaryNode();
-    if (binaryNode) {
-        switch(binaryNode->getOp()) {
-        case EOpIndexDirect:
-        case EOpIndexIndirect:
-        case EOpIndexDirectStruct:
-        case EOpVectorSwizzle:
-            rValueErrorCheck(loc, op, binaryNode->getLeft());
-        default:
-            break;
-        }
-
-        return;
-    }
-
-    TIntermSymbol* symNode = node->getAsSymbolNode();
-    if (symNode && symNode->getQualifier().writeonly)
-        error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str());
 #ifdef AMD_EXTENSIONS
-    else if (symNode && symNode->getQualifier().explicitInterp)
-        error(loc, "can't read from explicitly-interpolated object: ", op, symNode->getName().c_str());
+    TIntermSymbol* symNode = node->getAsSymbolNode();
+    if (!(symNode && symNode->getQualifier().writeonly)) // base class checks
+        if (symNode && symNode->getQualifier().explicitInterp)
+            error(loc, "can't read from explicitly-interpolated object: ", op, symNode->getName().c_str());
 #endif
 }
 
@@ -4907,7 +4873,7 @@
     symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn);
     
     // can 'from' convert to 'to'?
-    const auto convertible = [this](const TType& from, const TType& to) {
+    const auto convertible = [this](const TType& from, const TType& to) -> bool {
         if (from == to)
             return true;
         if (from.isArray() || to.isArray() || ! from.sameElementShape(to))
@@ -4918,7 +4884,7 @@
     // Is 'to2' a better conversion than 'to1'?
     // Ties should not be considered as better.
     // Assumes 'convertible' already said true.
-    const auto better = [](const TType& from, const TType& to1, const TType& to2) {
+    const auto better = [](const TType& from, const TType& to1, const TType& to2) -> bool {
         // 1. exact match
         if (from == to2)
             return from != to1;
diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h
index eab7835..0f60ff7 100644
--- a/glslang/MachineIndependent/ParseHelper.h
+++ b/glslang/MachineIndependent/ParseHelper.h
@@ -143,6 +143,9 @@
     virtual void growGlobalUniformBlock(TSourceLoc&, TType&, TString& memberName);
     virtual bool insertGlobalUniformBlock();
 
+    virtual bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*);
+    virtual void rValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*);
+
 protected:
     TParseContextBase(TParseContextBase&);
     TParseContextBase& operator=(TParseContextBase&);
@@ -278,8 +281,8 @@
     void unaryOpError(const TSourceLoc&, const char* op, TString operand);
     void binaryOpError(const TSourceLoc&, const char* op, TString left, TString right);
     void variableCheck(TIntermTyped*& nodePtr);
-    bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*);
-    void rValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*);
+    bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*) override;
+    void rValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*) override;
     void constantValueCheck(TIntermTyped* node, const char* token);
     void integerCheck(const TIntermTyped* node, const char* token);
     void globalCheck(const TSourceLoc&, const char* token);
diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp
index e00638b..6d04445 100644
--- a/glslang/MachineIndependent/ShaderLang.cpp
+++ b/glslang/MachineIndependent/ShaderLang.cpp
@@ -1497,6 +1497,7 @@
 void TShader::setShiftUboBinding(unsigned int base)     { intermediate->setShiftUboBinding(base); }
 void TShader::setAutoMapBindings(bool map)              { intermediate->setAutoMapBindings(map); }
 void TShader::setFlattenUniformArrays(bool flatten)     { intermediate->setFlattenUniformArrays(flatten); }
+void TShader::setNoStorageFormat(bool useUnknownFormat) { intermediate->setNoStorageFormat(useUnknownFormat); }
 
 //
 // Turn the shader strings into a parse tree in the TIntermediate.
@@ -1724,7 +1725,7 @@
 
     for (int s = 0; s < EShLangCount; ++s) {
         if (intermediate[s]) {
-            if (! ioMapper->addStage((EShLanguage)s, *intermediate[s]))
+            if (! ioMapper->addStage((EShLanguage)s, *intermediate[s], *infoSink))
                 return false;
         }
     }
diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp
index d69cc13..15847dd 100644
--- a/glslang/MachineIndependent/iomapper.cpp
+++ b/glslang/MachineIndependent/iomapper.cpp
@@ -34,6 +34,7 @@
 //
 
 #include "../Include/Common.h"
+#include "../Include/InfoSink.h"
 #include "iomapper.h"
 #include "LiveTraverser.h"
 #include "localintermediate.h"
@@ -150,11 +151,30 @@
 class TIoMappingTraverser : public TBindingTraverser {
 public:
     TIoMappingTraverser(TIntermediate& i, TBindingMap& bindingMap, TUsedBindings& usedBindings,
-                        bool traverseDeadCode) :
-        TBindingTraverser(i, bindingMap, usedBindings, traverseDeadCode)
+                        TInfoSink& infoSink, bool traverseDeadCode) :
+        TBindingTraverser(i, bindingMap, usedBindings, traverseDeadCode),
+        infoSink(infoSink),
+        assignError(false)
     { }
 
+    bool success() const { return !assignError; }
+
 protected:
+    unsigned checkBindingRange(const TIntermSymbol& base, unsigned binding)
+    {
+        if (binding >= TQualifier::layoutBindingEnd) {
+            TString err = "mapped binding out of range: ";
+            err += base.getName();
+
+            infoSink.info.message(EPrefixInternalError, err.c_str());
+            assignError = true;
+            
+            return 0;
+        }
+
+        return binding;
+    }
+
     void addUniform(TIntermSymbol& base) override
     {
         // Skip things we don't intend to bind.
@@ -165,7 +185,7 @@
 
         // Apply existing binding, if we were given one or already made one up.
         if (existingBinding != -1) {
-            base.getWritableType().getQualifier().layoutBinding = existingBinding;
+            base.getWritableType().getQualifier().layoutBinding = checkBindingRange(base, existingBinding);
             return;
         }
 
@@ -174,7 +194,7 @@
             const int freeBinding = getFreeBinding(base.getType(), getBindingBase(base.getType()));
 
             markBinding(base, freeBinding);
-            base.getWritableType().getQualifier().layoutBinding = freeBinding;
+            base.getWritableType().getQualifier().layoutBinding = checkBindingRange(base, freeBinding);
         }
     }
 
@@ -195,13 +215,17 @@
 
         return nextBinding;
     }
+
+private:
+    bool assignError;  // true if there was an error assigning the bindings
+    TInfoSink& infoSink;
 };
 
 // Map I/O variables to provided offsets, and make bindings for
 // unbound but live variables.
 //
 // Returns false if the input is too malformed to do this.
-bool TIoMapper::addStage(EShLanguage, TIntermediate& intermediate)
+bool TIoMapper::addStage(EShLanguage, TIntermediate& intermediate, TInfoSink& infoSink)
 {
     // Trivial return if there is nothing to do.
     if (intermediate.getShiftSamplerBinding() == 0 &&
@@ -223,7 +247,7 @@
 
     TBindingTraverser it_binding_all(intermediate, bindingMap, usedBindings, true);
     TBindingTraverser it_binding_live(intermediate, bindingMap, usedBindings, false);
-    TIoMappingTraverser it_iomap(intermediate, bindingMap, usedBindings, true);
+    TIoMappingTraverser it_iomap(intermediate, bindingMap, usedBindings, infoSink, true);
 
     // Traverse all (live+dead) code to find explicit bindings, so we can avoid those.
     root->traverse(&it_binding_all);
@@ -240,7 +264,7 @@
     // Bind everything that needs a binding and doesn't have one.
     root->traverse(&it_iomap);
 
-    return true;
+    return it_iomap.success();
 }
 
 } // end namespace glslang
diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h
index 69ed4c5..68dec77 100644
--- a/glslang/MachineIndependent/iomapper.h
+++ b/glslang/MachineIndependent/iomapper.h
@@ -42,6 +42,8 @@
 // A reflection database and its interface, consistent with the OpenGL API reflection queries.
 //
 
+class TInfoSink;
+
 namespace glslang {
 
 class TIntermediate;
@@ -53,7 +55,7 @@
     virtual ~TIoMapper() {}
 
     // grow the reflection stage by stage
-    bool addStage(EShLanguage, TIntermediate&);
+    bool addStage(EShLanguage, TIntermediate&, TInfoSink&);
 };
 
 } // end namespace glslang
diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h
index acfafb1..aae22ec 100644
--- a/glslang/MachineIndependent/localintermediate.h
+++ b/glslang/MachineIndependent/localintermediate.h
@@ -146,7 +146,8 @@
         shiftTextureBinding(0),
         shiftUboBinding(0),
         autoMapBindings(false),
-        flattenUniformArrays(false)
+        flattenUniformArrays(false),
+        useUnknownFormat(false)
     {
         localSize[0] = 1;
         localSize[1] = 1;
@@ -179,7 +180,9 @@
     bool getAutoMapBindings()             const { return autoMapBindings; }
     void setFlattenUniformArrays(bool flatten)      { flattenUniformArrays = flatten; }
     bool getFlattenUniformArrays()        const { return flattenUniformArrays; }
-
+    void setNoStorageFormat(bool b)             { useUnknownFormat = b; }
+    bool getNoStorageFormat()             const { return useUnknownFormat; }
+    
     void setVersion(int v) { version = v; }
     int getVersion() const { return version; }
     void setProfile(EProfile p) { profile = p; }
@@ -236,6 +239,13 @@
     TIntermBranch* addBranch(TOperator, TIntermTyped*, const TSourceLoc&);
     TIntermTyped* addSwizzle(TVectorFields&, const TSourceLoc&);
 
+    // Low level functions to add nodes (no conversions or other higher level transformations)
+    // If a type is provided, the node's type will be set to it.
+    TIntermBinary* addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc) const;
+    TIntermBinary* addBinaryNode(TOperator op, TIntermTyped* left, TIntermTyped* right, TSourceLoc, const TType&) const;
+    TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc) const;
+    TIntermUnary* addUnaryNode(TOperator op, TIntermTyped* child, TSourceLoc, const TType&) const;
+
     // Constant folding (in Constant.cpp)
     TIntermTyped* fold(TIntermAggregate* aggrNode);
     TIntermTyped* foldConstructor(TIntermAggregate* aggrNode);
@@ -390,6 +400,7 @@
     unsigned int shiftUboBinding;
     bool autoMapBindings;
     bool flattenUniformArrays;
+    bool useUnknownFormat;
 
     EProfile profile;
     int version;
diff --git a/glslang/OSDependent/Unix/ossource.cpp b/glslang/OSDependent/Unix/ossource.cpp
index 8e583ea..7e84d4e 100644
--- a/glslang/OSDependent/Unix/ossource.cpp
+++ b/glslang/OSDependent/Unix/ossource.cpp
@@ -165,11 +165,29 @@
 		return false;
 }
 
-// TODO: non-windows: if we need these on linux, flesh them out
-void InitGlobalLock() { }
-void GetGlobalLock() { }
-void ReleaseGlobalLock() { }
+namespace {
+pthread_mutex_t gMutex;
+}
 
+void InitGlobalLock()
+{
+  pthread_mutexattr_t mutexattr;
+  pthread_mutexattr_init(&mutexattr);
+  pthread_mutexattr_settype(&mutexattr, PTHREAD_MUTEX_RECURSIVE);
+  pthread_mutex_init(&gMutex, &mutexattr);
+}
+
+void GetGlobalLock()
+{
+  pthread_mutex_lock(&gMutex);
+}
+
+void ReleaseGlobalLock()
+{
+  pthread_mutex_unlock(&gMutex);
+}
+
+// TODO: non-windows: if we need these on linux, flesh them out
 void* OS_CreateThread(TThreadEntrypoint /*entry*/)
 {
     return 0;
diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h
index 6b894c1..e5e8b4d 100644
--- a/glslang/Public/ShaderLang.h
+++ b/glslang/Public/ShaderLang.h
@@ -309,6 +309,7 @@
     void setShiftUboBinding(unsigned int base);
     void setAutoMapBindings(bool map);
     void setFlattenUniformArrays(bool flatten);
+    void setNoStorageFormat(bool useUnknownFormat);
 
     // Interface to #include handlers.
     //
diff --git a/gtests/HexFloat.cpp b/gtests/HexFloat.cpp
index 248513c..ddbee1f 100644
--- a/gtests/HexFloat.cpp
+++ b/gtests/HexFloat.cpp
@@ -690,10 +690,10 @@
   bool carry_bit = false;
 
   spvutils::round_direction rounding[] = {
-      spvutils::round_direction::kToZero,
-      spvutils::round_direction::kToNearestEven,
-      spvutils::round_direction::kToPositiveInfinity,
-      spvutils::round_direction::kToNegativeInfinity};
+      spvutils::kRoundToZero,
+      spvutils::kRoundToNearestEven,
+      spvutils::kRoundToPositiveInfinity,
+      spvutils::kRoundToNegativeInfinity};
 
   // Everything fits, so this should be straight-forward
   for (spvutils::round_direction round : rounding) {
@@ -725,7 +725,6 @@
   }
 }
 
-using RD = spvutils::round_direction;
 struct RoundSignificandCase {
   float source_float;
   std::pair<int16_t, bool> expected_results;
@@ -751,49 +750,49 @@
 INSTANTIATE_TEST_CASE_P(F32ToF16, HexFloatRoundTest,
   ::testing::ValuesIn(std::vector<RoundSignificandCase>(
   {
-    {float_fractions({0}), std::make_pair(half_bits_set({}), false), RD::kToZero},
-    {float_fractions({0}), std::make_pair(half_bits_set({}), false), RD::kToNearestEven},
-    {float_fractions({0}), std::make_pair(half_bits_set({}), false), RD::kToPositiveInfinity},
-    {float_fractions({0}), std::make_pair(half_bits_set({}), false), RD::kToNegativeInfinity},
-    {float_fractions({0, 1}), std::make_pair(half_bits_set({0}), false), RD::kToZero},
+    {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToZero},
+    {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToNearestEven},
+    {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToPositiveInfinity},
+    {float_fractions({0}), std::make_pair(half_bits_set({}), false), spvutils::kRoundToNegativeInfinity},
+    {float_fractions({0, 1}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero},
 
-    {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), RD::kToZero},
-    {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0, 9}), false), RD::kToPositiveInfinity},
-    {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), RD::kToNegativeInfinity},
-    {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), RD::kToNearestEven},
+    {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero},
+    {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToPositiveInfinity},
+    {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNegativeInfinity},
+    {float_fractions({0, 1, 11}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNearestEven},
 
-    {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 9}), false), RD::kToZero},
-    {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 8}), false), RD::kToPositiveInfinity},
-    {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 9}), false), RD::kToNegativeInfinity},
-    {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 8}), false), RD::kToNearestEven},
+    {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToZero},
+    {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 8}), false), spvutils::kRoundToPositiveInfinity},
+    {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNegativeInfinity},
+    {float_fractions({0, 1, 10, 11}), std::make_pair(half_bits_set({0, 8}), false), spvutils::kRoundToNearestEven},
 
-    {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), RD::kToZero},
-    {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), RD::kToPositiveInfinity},
-    {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), RD::kToNegativeInfinity},
-    {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), RD::kToNearestEven},
+    {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero},
+    {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToPositiveInfinity},
+    {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNegativeInfinity},
+    {float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNearestEven},
 
-    {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), RD::kToZero},
-    {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), RD::kToPositiveInfinity},
-    {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), RD::kToNegativeInfinity},
-    {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), RD::kToNearestEven},
+    {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero},
+    {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToPositiveInfinity},
+    {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNegativeInfinity},
+    {-float_fractions({0, 1, 11, 12}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNearestEven},
 
-    {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0}), false), RD::kToZero},
-    {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0, 9}), false), RD::kToPositiveInfinity},
-    {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0}), false), RD::kToNegativeInfinity},
-    {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0, 9}), false), RD::kToNearestEven},
+    {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero},
+    {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToPositiveInfinity},
+    {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNegativeInfinity},
+    {float_fractions({0, 1, 11, 22}), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNearestEven},
 
     // Carries
-    {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({0, 1, 2, 3, 4, 5, 6, 7, 8, 9}), false), RD::kToZero},
-    {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({}), true), RD::kToPositiveInfinity},
-    {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({0, 1, 2, 3, 4, 5, 6, 7, 8, 9}), false), RD::kToNegativeInfinity},
-    {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({}), true), RD::kToNearestEven},
+    {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({0, 1, 2, 3, 4, 5, 6, 7, 8, 9}), false), spvutils::kRoundToZero},
+    {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({}), true), spvutils::kRoundToPositiveInfinity},
+    {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({0, 1, 2, 3, 4, 5, 6, 7, 8, 9}), false), spvutils::kRoundToNegativeInfinity},
+    {float_fractions({0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}), std::make_pair(half_bits_set({}), true), spvutils::kRoundToNearestEven},
 
     // Cases where original number was denorm. Note: this should have no effect
     // the number is pre-normalized.
-    {static_cast<float>(ldexp(float_fractions({0, 1, 11, 13}), -128)), std::make_pair(half_bits_set({0}), false), RD::kToZero},
-    {static_cast<float>(ldexp(float_fractions({0, 1, 11, 13}), -129)), std::make_pair(half_bits_set({0, 9}), false), RD::kToPositiveInfinity},
-    {static_cast<float>(ldexp(float_fractions({0, 1, 11, 13}), -131)), std::make_pair(half_bits_set({0}), false), RD::kToNegativeInfinity},
-    {static_cast<float>(ldexp(float_fractions({0, 1, 11, 13}), -130)), std::make_pair(half_bits_set({0, 9}), false), RD::kToNearestEven},
+    {static_cast<float>(ldexp(float_fractions({0, 1, 11, 13}), -128)), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToZero},
+    {static_cast<float>(ldexp(float_fractions({0, 1, 11, 13}), -129)), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToPositiveInfinity},
+    {static_cast<float>(ldexp(float_fractions({0, 1, 11, 13}), -131)), std::make_pair(half_bits_set({0}), false), spvutils::kRoundToNegativeInfinity},
+    {static_cast<float>(ldexp(float_fractions({0, 1, 11, 13}), -130)), std::make_pair(half_bits_set({0, 9}), false), spvutils::kRoundToNearestEven},
   })),);
 // clang-format on
 
@@ -810,10 +809,10 @@
   bool carry_bit = false;
 
   spvutils::round_direction rounding[] = {
-      spvutils::round_direction::kToZero,
-      spvutils::round_direction::kToNearestEven,
-      spvutils::round_direction::kToPositiveInfinity,
-      spvutils::round_direction::kToNegativeInfinity};
+      spvutils::kRoundToZero,
+      spvutils::kRoundToNearestEven,
+      spvutils::kRoundToPositiveInfinity,
+      spvutils::kRoundToNegativeInfinity};
 
   // Everything fits, so everything should just be bit-shifts.
   for (spvutils::round_direction round : rounding) {
@@ -852,10 +851,10 @@
     return #round_direction
 
   switch (direction) {
-    CASE(spvutils::round_direction::kToZero);
-    CASE(spvutils::round_direction::kToPositiveInfinity);
-    CASE(spvutils::round_direction::kToNegativeInfinity);
-    CASE(spvutils::round_direction::kToNearestEven);
+    CASE(spvutils::kRoundToZero);
+    CASE(spvutils::kRoundToPositiveInfinity);
+    CASE(spvutils::kRoundToNegativeInfinity);
+    CASE(spvutils::kRoundToNearestEven);
   }
 #undef CASE
   return "";
@@ -884,35 +883,35 @@
   ::testing::ValuesIn(std::vector<DownCastTest>(
   {
     // Exactly representable as half.
-    {0.f, 0x0, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
-    {-0.f, 0x8000, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
-    {1.0f, 0x3C00, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
-    {-1.0f, 0xBC00, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
+    {0.f, 0x0, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
+    {-0.f, 0x8000, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
+    {1.0f, 0x3C00, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
+    {-1.0f, 0xBC00, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
 
-    {float_fractions({0, 1, 10}) , 0x3E01, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
-    {-float_fractions({0, 1, 10}) , 0xBE01, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
-    {static_cast<float>(ldexp(float_fractions({0, 1, 10}), 3)), 0x4A01, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
-    {static_cast<float>(-ldexp(float_fractions({0, 1, 10}), 3)), 0xCA01, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
+    {float_fractions({0, 1, 10}) , 0x3E01, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
+    {-float_fractions({0, 1, 10}) , 0xBE01, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
+    {static_cast<float>(ldexp(float_fractions({0, 1, 10}), 3)), 0x4A01, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
+    {static_cast<float>(-ldexp(float_fractions({0, 1, 10}), 3)), 0xCA01, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
 
 
     // Underflow
-    {static_cast<float>(ldexp(1.0f, -25)), 0x0, {RD::kToZero, RD::kToNegativeInfinity, RD::kToNearestEven}},
-    {static_cast<float>(ldexp(1.0f, -25)), 0x1, {RD::kToPositiveInfinity}},
-    {static_cast<float>(-ldexp(1.0f, -25)), 0x8000, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNearestEven}},
-    {static_cast<float>(-ldexp(1.0f, -25)), 0x8001, {RD::kToNegativeInfinity}},
-    {static_cast<float>(ldexp(1.0f, -24)), 0x1, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
+    {static_cast<float>(ldexp(1.0f, -25)), 0x0, {spvutils::kRoundToZero, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
+    {static_cast<float>(ldexp(1.0f, -25)), 0x1, {spvutils::kRoundToPositiveInfinity}},
+    {static_cast<float>(-ldexp(1.0f, -25)), 0x8000, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNearestEven}},
+    {static_cast<float>(-ldexp(1.0f, -25)), 0x8001, {spvutils::kRoundToNegativeInfinity}},
+    {static_cast<float>(ldexp(1.0f, -24)), 0x1, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
 
     // Overflow
-    {static_cast<float>(ldexp(1.0f, 16)), positive_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
-    {static_cast<float>(ldexp(1.0f, 18)), positive_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
-    {static_cast<float>(ldexp(1.3f, 16)), positive_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
-    {static_cast<float>(-ldexp(1.0f, 16)), negative_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
-    {static_cast<float>(-ldexp(1.0f, 18)), negative_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
-    {static_cast<float>(-ldexp(1.3f, 16)), negative_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
+    {static_cast<float>(ldexp(1.0f, 16)), positive_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
+    {static_cast<float>(ldexp(1.0f, 18)), positive_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
+    {static_cast<float>(ldexp(1.3f, 16)), positive_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
+    {static_cast<float>(-ldexp(1.0f, 16)), negative_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
+    {static_cast<float>(-ldexp(1.0f, 18)), negative_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
+    {static_cast<float>(-ldexp(1.3f, 16)), negative_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
 
     // Transfer of Infinities
-    {std::numeric_limits<float>::infinity(), positive_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
-    {-std::numeric_limits<float>::infinity(), negative_infinity, {RD::kToZero, RD::kToPositiveInfinity, RD::kToNegativeInfinity, RD::kToNearestEven}},
+    {std::numeric_limits<float>::infinity(), positive_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
+    {-std::numeric_limits<float>::infinity(), negative_infinity, {spvutils::kRoundToZero, spvutils::kRoundToPositiveInfinity, spvutils::kRoundToNegativeInfinity, spvutils::kRoundToNearestEven}},
 
     // Nans are below because we cannot test for equality.
   })),);
@@ -929,10 +928,10 @@
   HF16 f(GetParam().source_half);
 
   spvutils::round_direction rounding[] = {
-      spvutils::round_direction::kToZero,
-      spvutils::round_direction::kToNearestEven,
-      spvutils::round_direction::kToPositiveInfinity,
-      spvutils::round_direction::kToNegativeInfinity};
+      spvutils::kRoundToZero,
+      spvutils::kRoundToNearestEven,
+      spvutils::kRoundToPositiveInfinity,
+      spvutils::kRoundToNegativeInfinity};
 
   // Everything fits, so everything should just be bit-shifts.
   for (spvutils::round_direction round : rounding) {
@@ -972,10 +971,10 @@
   using HF = spvutils::HexFloat<spvutils::FloatProxy<float>>;
   using HF16 = spvutils::HexFloat<spvutils::FloatProxy<spvutils::Float16>>;
   spvutils::round_direction rounding[] = {
-      spvutils::round_direction::kToZero,
-      spvutils::round_direction::kToNearestEven,
-      spvutils::round_direction::kToPositiveInfinity,
-      spvutils::round_direction::kToNegativeInfinity};
+      spvutils::kRoundToZero,
+      spvutils::kRoundToNearestEven,
+      spvutils::kRoundToPositiveInfinity,
+      spvutils::kRoundToNegativeInfinity};
 
   // Everything fits, so everything should just be bit-shifts.
   for (spvutils::round_direction round : rounding) {
diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp
index 7b64217..b50816a 100644
--- a/gtests/Hlsl.FromFile.cpp
+++ b/gtests/Hlsl.FromFile.cpp
@@ -83,8 +83,10 @@
         {"hlsl.amend.frag", "f1"},
         {"hlsl.array.frag", "PixelShaderFunction"},
         {"hlsl.array.implicit-size.frag", "PixelShaderFunction"},
+        {"hlsl.array.multidim.frag", "main"},
         {"hlsl.assoc.frag", "PixelShaderFunction"},
         {"hlsl.attribute.frag", "PixelShaderFunction"},
+        {"hlsl.basic.comp", "main"},
         {"hlsl.buffer.frag", "PixelShaderFunction"},
         {"hlsl.calculatelod.dx10.frag", "main"},
         {"hlsl.calculatelodunclamped.dx10.frag", "main"},
@@ -134,6 +136,7 @@
         {"hlsl.load.basic.dx10.frag", "main"},
         {"hlsl.load.basic.dx10.vert", "main"},
         {"hlsl.load.buffer.dx10.frag", "main"},
+        {"hlsl.load.buffer.float.dx10.frag", "main"},
         {"hlsl.load.rwbuffer.dx10.frag", "main"},
         {"hlsl.load.rwtexture.dx10.frag", "main"},
         {"hlsl.load.rwtexture.array.dx10.frag", "main"},
@@ -147,6 +150,9 @@
         {"hlsl.pp.line.frag", "main"},
         {"hlsl.precise.frag", "main"},
         {"hlsl.promotions.frag", "main"},
+        {"hlsl.rw.bracket.frag", "main"},
+        {"hlsl.rw.scalar.bracket.frag", "main"},
+        {"hlsl.rw.vec2.bracket.frag", "main"},
         {"hlsl.sample.array.dx10.frag", "main"},
         {"hlsl.sample.basic.dx10.frag", "main"},
         {"hlsl.sample.offset.dx10.frag", "main"},
@@ -173,6 +179,7 @@
         {"hlsl.samplelevel.basic.dx10.vert", "main"},
         {"hlsl.samplelevel.offset.dx10.frag", "main"},
         {"hlsl.samplelevel.offsetarray.dx10.frag", "main"},
+        { "hlsl.sample.sub-vec4.dx10.frag", "main"},
         {"hlsl.semicolons.frag", "main"},
         {"hlsl.shapeConv.frag", "main"},
         {"hlsl.shapeConvRet.frag", "main"},
@@ -190,6 +197,7 @@
         {"hlsl.switch.frag", "PixelShaderFunction"},
         {"hlsl.swizzle.frag", "PixelShaderFunction"},
         {"hlsl.templatetypes.frag", "PixelShaderFunction"},
+        {"hlsl.tx.bracket.frag", "main"},
         {"hlsl.typedef.frag", "PixelShaderFunction"},
         {"hlsl.whileLoop.frag", "PixelShaderFunction"},
         {"hlsl.void.frag", "PixelShaderFunction"},
diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp
index 64312a3..a55af51 100644
--- a/gtests/Spv.FromFile.cpp
+++ b/gtests/Spv.FromFile.cpp
@@ -287,6 +287,10 @@
         { "spv.register.noautoassign.frag", "main_ep", 5, 10, 15, false, false },
         { "spv.register.autoassign-2.frag", "main", 5, 10, 15, true, true },
         { "spv.buffer.autoassign.frag", "main", 5, 10, 15, true, true },
+        { "spv.register.autoassign.rangetest.frag", "main", 
+                glslang::TQualifier::layoutBindingEnd-2,
+                glslang::TQualifier::layoutBindingEnd+5,
+                20, true, false },
     }),
     FileNameAsCustomTestSuffixIoMap
 );
diff --git a/hlsl/hlslGrammar.cpp b/hlsl/hlslGrammar.cpp
index 626d299..7766f85 100755
--- a/hlsl/hlslGrammar.cpp
+++ b/hlsl/hlslGrammar.cpp
@@ -907,12 +907,6 @@
             return false;
         }
 
-        if (txType.getVectorSize() != 1 && txType.getVectorSize() != 4) {
-            // TODO: handle vec2/3 types
-            expected("vector size not yet supported in texture type");
-            return false;
-        }
-
         if (ms && acceptTokenClass(EHTokComma)) {
             // read sample count for multisample types, if given
             if (! peekTokenClass(EHTokIntConstant)) {
@@ -937,24 +931,14 @@
     }
 
     TArraySizes* arraySizes = nullptr;
-    const bool shadow = !image && (txType.isScalar() || (txType.isVector() && txType.getVectorSize() == 1));
+    const bool shadow = false; // declared on the sampler
 
     TSampler sampler;
     TLayoutFormat format = ElfNone;
 
-    // RWBuffer and RWTexture (images) require a TLayoutFormat.  We handle only a limit set.
-    if (image) {
-        if (txType.getVectorSize() != 4)
-            expected("4 component image");
-
-        switch (txType.getBasicType()) {
-        case EbtFloat: format = ElfRgba32f;  break;
-        case EbtInt:   format = ElfRgba32i;  break;
-        case EbtUint:  format = ElfRgba32ui; break;
-        default:
-            expected("unknown basic type in image format");
-        }
-    }
+    // Buffer, RWBuffer and RWTexture (images) require a TLayoutFormat.  We handle only a limit set.
+    if (image || dim == EsdBuffer)
+        format = parseContext.getLayoutFromTxType(token.loc, txType);
 
     // Non-image Buffers are combined
     if (dim == EsdBuffer && !image) {
@@ -967,6 +951,9 @@
             sampler.setTexture(txType.getBasicType(), dim, array, shadow, ms);
         }
     }
+
+    // Remember the declared vector size.
+    sampler.vectorSize = txType.getVectorSize();
     
     type.shallowCopy(TType(sampler, EvqUniform, arraySizes));
     type.getQualifier().layoutFormat = format;
@@ -1783,6 +1770,8 @@
     }
 
     node = parseContext.handleAssign(loc, assignOp, node, rightNode);
+    node = parseContext.handleLvalue(loc, "assign", node);
+
     if (node == nullptr) {
         parseContext.error(loc, "could not create assignment", "", "");
         return false;
@@ -1946,6 +1935,7 @@
         return true;
 
     node = intermediate.addUnaryMath(unaryOp, node, loc);
+    node = parseContext.handleLvalue(loc, "unary operator", node);
 
     return node != nullptr;
 }
@@ -2061,6 +2051,7 @@
         case EOpPostDecrement:
             // DEC_OP
             node = intermediate.addUnaryMath(postOp, node, loc);
+            node = parseContext.handleLvalue(loc, "unary operator", node);
             break;
         default:
             assert(0);
@@ -2676,35 +2667,40 @@
 }
 
 // array_specifier
-//      : LEFT_BRACKET integer_expression RGHT_BRACKET post_decls // optional
-//      : LEFT_BRACKET RGHT_BRACKET post_decls // optional
+//      : LEFT_BRACKET integer_expression RGHT_BRACKET ... // optional
+//      : LEFT_BRACKET RGHT_BRACKET // optional
 //
 void HlslGrammar::acceptArraySpecifier(TArraySizes*& arraySizes)
 {
     arraySizes = nullptr;
 
-    if (! acceptTokenClass(EHTokLeftBracket))
+    // Early-out if there aren't any array dimensions
+    if (!peekTokenClass(EHTokLeftBracket))
         return;
 
-    TSourceLoc loc = token.loc;
-    TIntermTyped* sizeExpr = nullptr;
-
-    // Array sizing expression is optional.  If ommitted, array is implicitly sized.
-    const bool hasArraySize = acceptAssignmentExpression(sizeExpr);
-
-    if (! acceptTokenClass(EHTokRightBracket)) {
-        expected("]");
-        return;
-    }
-
+    // If we get here, we have at least one array dimension.  This will track the sizes we find.
     arraySizes = new TArraySizes;
-    
-    if (hasArraySize) {
-        TArraySize arraySize;
-        parseContext.arraySizeCheck(loc, sizeExpr, arraySize);
-        arraySizes->addInnerSize(arraySize);
-    } else {
-        arraySizes->addInnerSize();  // implicitly sized
+
+    // Collect each array dimension.
+    while (acceptTokenClass(EHTokLeftBracket)) {
+        TSourceLoc loc = token.loc;
+        TIntermTyped* sizeExpr = nullptr;
+
+        // Array sizing expression is optional.  If ommitted, array will be later sized by initializer list.
+        const bool hasArraySize = acceptAssignmentExpression(sizeExpr);
+
+        if (! acceptTokenClass(EHTokRightBracket)) {
+            expected("]");
+            return;
+        }
+
+        if (hasArraySize) {
+            TArraySize arraySize;
+            parseContext.arraySizeCheck(loc, sizeExpr, arraySize);
+            arraySizes->addInnerSize(arraySize);
+        } else {
+            arraySizes->addInnerSize(0);  // sized by initializers.
+        }
     }
 }
 
diff --git a/hlsl/hlslParseHelper.cpp b/hlsl/hlslParseHelper.cpp
index 4eda44d..b4c417d 100755
--- a/hlsl/hlslParseHelper.cpp
+++ b/hlsl/hlslParseHelper.cpp
@@ -130,6 +130,299 @@
     return numErrors == 0;
 }
 
+//
+// Return true if this l-value node should be converted in some manner.
+// For instance: turning a load aggregate into a store in an l-value.
+//
+bool HlslParseContext::shouldConvertLValue(const TIntermNode* node) const
+{
+    if (node == nullptr)
+        return false;
+
+    const TIntermAggregate* lhsAsAggregate = node->getAsAggregate();
+
+    if (lhsAsAggregate != nullptr && lhsAsAggregate->getOp() == EOpImageLoad)
+        return true;
+
+    return false;
+}
+
+//
+// Return a TLayoutFormat corresponding to the given texture type.
+//
+TLayoutFormat HlslParseContext::getLayoutFromTxType(const TSourceLoc& loc, const TType& txType)
+{
+    const int components = txType.getVectorSize();
+
+    const auto selectFormat = [this,&components](TLayoutFormat v1, TLayoutFormat v2, TLayoutFormat v4) {
+        if (intermediate.getNoStorageFormat())
+            return ElfNone;
+
+        return components == 1 ? v1 :
+               components == 2 ? v2 : v4;
+    };
+
+    switch (txType.getBasicType()) {
+    case EbtFloat: return selectFormat(ElfR32f,  ElfRg32f,  ElfRgba32f);
+    case EbtInt:   return selectFormat(ElfR32i,  ElfRg32i,  ElfRgba32i);
+    case EbtUint:  return selectFormat(ElfR32ui, ElfRg32ui, ElfRgba32ui);
+    default:
+        error(loc, "unknown basic type in image format", "", "");
+        return ElfNone;
+    }
+}
+
+//
+// Both test and if necessary, spit out an error, to see if the node is really
+// an l-value that can be operated on this way.
+//
+// Returns true if there was an error.
+//
+bool HlslParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node)
+{
+    if (shouldConvertLValue(node)) {
+        // if we're writing to a texture, it must be an RW form.
+
+        TIntermAggregate* lhsAsAggregate = node->getAsAggregate();
+        TIntermTyped* object = lhsAsAggregate->getSequence()[0]->getAsTyped();
+        
+        if (!object->getType().getSampler().isImage()) {
+            error(loc, "operator[] on a non-RW texture must be an r-value", "", "");
+            return true;
+        }
+    }
+
+    // Let the base class check errors
+    return TParseContextBase::lValueErrorCheck(loc, op, node);
+}
+
+//
+// This function handles l-value conversions and verifications.  It uses, but is not synonymous
+// with lValueErrorCheck.  That function accepts an l-value directly, while this one must be
+// given the surrounding tree - e.g, with an assignment, so we can convert the assign into a
+// series of other image operations.
+//
+// Most things are passed through unmodified, except for error checking.
+// 
+TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* op, TIntermTyped* node)
+{
+    if (node == nullptr)
+        return nullptr;
+
+    TIntermBinary* nodeAsBinary = node->getAsBinaryNode();
+    TIntermUnary* nodeAsUnary = node->getAsUnaryNode();
+    TIntermAggregate* sequence = nullptr;
+
+    TIntermTyped* lhs = nodeAsUnary  ? nodeAsUnary->getOperand() :
+                        nodeAsBinary ? nodeAsBinary->getLeft() :
+                        nullptr;
+
+    // Early bail out if there is no conversion to apply
+    if (!shouldConvertLValue(lhs)) {
+        if (lhs != nullptr)
+            if (lValueErrorCheck(loc, op, lhs))
+                return nullptr;
+        return node;
+    }
+
+    // *** If we get here, we're going to apply some conversion to an l-value.
+
+    // Helper to create a load.
+    const auto makeLoad = [&](TIntermSymbol* rhsTmp, TIntermTyped* object, TIntermTyped* coord, const TType& derefType) {
+        TIntermAggregate* loadOp = new TIntermAggregate(EOpImageLoad);
+        loadOp->setLoc(loc);
+        loadOp->getSequence().push_back(object);
+        loadOp->getSequence().push_back(intermediate.addSymbol(*coord->getAsSymbolNode()));
+        loadOp->setType(derefType);
+
+        sequence = intermediate.growAggregate(sequence,
+                                              intermediate.addAssign(EOpAssign, rhsTmp, loadOp, loc),
+                                              loc);
+    };
+
+    // Helper to create a store.
+    const auto makeStore = [&](TIntermTyped* object, TIntermTyped* coord, TIntermSymbol* rhsTmp) {
+        TIntermAggregate* storeOp = new TIntermAggregate(EOpImageStore);
+        storeOp->getSequence().push_back(object);
+        storeOp->getSequence().push_back(coord);
+        storeOp->getSequence().push_back(intermediate.addSymbol(*rhsTmp));
+        storeOp->setLoc(loc);
+        storeOp->setType(TType(EbtVoid));
+
+        sequence = intermediate.growAggregate(sequence, storeOp);
+    };
+
+    // Helper to create an assign.
+    const auto makeBinary = [&](TOperator op, TIntermTyped* lhs, TIntermTyped* rhs) {
+        sequence = intermediate.growAggregate(sequence,
+                                              intermediate.addBinaryNode(op, lhs, rhs, loc, lhs->getType()),
+                                              loc);
+    };
+
+    // Helper to complete sequence by adding trailing variable, so we evaluate to the right value.
+    const auto finishSequence = [&](TIntermSymbol* rhsTmp, const TType& derefType) {
+        // Add a trailing use of the temp, so the sequence returns the proper value.
+        sequence = intermediate.growAggregate(sequence, intermediate.addSymbol(*rhsTmp));
+        sequence->setOperator(EOpSequence);
+        sequence->setLoc(loc);
+        sequence->setType(derefType);
+
+        return sequence;
+    };
+
+    // Helper to add unary op
+    const auto makeUnary = [&](TOperator op, TIntermSymbol* rhsTmp) {
+        sequence = intermediate.growAggregate(sequence,
+                                              intermediate.addUnaryNode(op, intermediate.addSymbol(*rhsTmp), loc,
+                                                                        rhsTmp->getType()),
+                                              loc);
+    };
+
+    // helper to create a temporary variable
+    const auto addTmpVar = [&](const char* name, const TType& derefType) {
+        TVariable* tmpVar = makeInternalVariable(name, derefType);
+        tmpVar->getWritableType().getQualifier().makeTemporary();
+        return intermediate.addSymbol(*tmpVar, loc);
+    };
+    
+    TIntermAggregate* lhsAsAggregate = lhs->getAsAggregate();
+    TIntermTyped* object = lhsAsAggregate->getSequence()[0]->getAsTyped();
+    TIntermTyped* coord  = lhsAsAggregate->getSequence()[1]->getAsTyped();
+
+    const TSampler& texSampler = object->getType().getSampler();
+
+    const TType objDerefType(texSampler.type, EvqTemporary, texSampler.vectorSize);
+
+    if (nodeAsBinary) {
+        TIntermTyped* rhs = nodeAsBinary->getRight();
+        const TOperator assignOp = nodeAsBinary->getOp();
+
+        bool isModifyOp = false;
+
+        switch (assignOp) {
+        case EOpAddAssign:
+        case EOpSubAssign:
+        case EOpMulAssign:
+        case EOpVectorTimesMatrixAssign:
+        case EOpVectorTimesScalarAssign:
+        case EOpMatrixTimesScalarAssign:
+        case EOpMatrixTimesMatrixAssign:
+        case EOpDivAssign:
+        case EOpModAssign:
+        case EOpAndAssign:
+        case EOpInclusiveOrAssign:
+        case EOpExclusiveOrAssign:
+        case EOpLeftShiftAssign:
+        case EOpRightShiftAssign:
+            isModifyOp = true;
+            // fall through...
+        case EOpAssign:
+            {
+                // Since this is an lvalue, we'll convert an image load to a sequence like this (to still provide the value):
+                //   OpSequence
+                //      OpImageStore(object, lhs, rhs)
+                //      rhs
+                // But if it's not a simple symbol RHS (say, a fn call), we don't want to duplicate the RHS, so we'll convert
+                // instead to this:
+                //   OpSequence
+                //      rhsTmp = rhs
+                //      OpImageStore(object, coord, rhsTmp)
+                //      rhsTmp
+                // If this is a read-modify-write op, like +=, we issue:
+                //   OpSequence
+                //      coordtmp = load's param1
+                //      rhsTmp = OpImageLoad(object, coordTmp)
+                //      rhsTmp op= rhs
+                //      OpImageStore(object, coordTmp, rhsTmp)
+                //      rhsTmp
+
+                TIntermSymbol* rhsTmp = rhs->getAsSymbolNode();
+                TIntermTyped* coordTmp = coord;
+ 
+                if (rhsTmp == nullptr || isModifyOp) {
+                    rhsTmp = addTmpVar("storeTemp", objDerefType);
+
+                    // Assign storeTemp = rhs
+                    if (isModifyOp) {
+                        // We have to make a temp var for the coordinate, to avoid evaluating it twice.
+                        coordTmp = addTmpVar("coordTemp", coord->getType());
+                        makeBinary(EOpAssign, coordTmp, coord); // coordtmp = load[param1]
+                        makeLoad(rhsTmp, object, coordTmp, objDerefType); // rhsTmp = OpImageLoad(object, coordTmp)
+                    }
+
+                    // rhsTmp op= rhs.
+                    makeBinary(assignOp, intermediate.addSymbol(*rhsTmp), rhs);
+                }
+                
+                makeStore(object, coordTmp, rhsTmp);         // add a store
+                return finishSequence(rhsTmp, objDerefType); // return rhsTmp from sequence
+            }
+
+        default:
+            break;
+        }
+    }
+
+    if (nodeAsUnary) {
+        const TOperator assignOp = nodeAsUnary->getOp();
+
+        switch (assignOp) {
+        case EOpPreIncrement:
+        case EOpPreDecrement:
+            {
+                // We turn this into:
+                //   OpSequence
+                //      coordtmp = load's param1
+                //      rhsTmp = OpImageLoad(object, coordTmp)
+                //      rhsTmp op
+                //      OpImageStore(object, coordTmp, rhsTmp)
+                //      rhsTmp
+                
+                TIntermSymbol* rhsTmp = addTmpVar("storeTemp", objDerefType);
+                TIntermTyped* coordTmp = addTmpVar("coordTemp", coord->getType());
+ 
+                makeBinary(EOpAssign, coordTmp, coord);           // coordtmp = load[param1]
+                makeLoad(rhsTmp, object, coordTmp, objDerefType); // rhsTmp = OpImageLoad(object, coordTmp)
+                makeUnary(assignOp, rhsTmp);                      // op rhsTmp
+                makeStore(object, coordTmp, rhsTmp);              // OpImageStore(object, coordTmp, rhsTmp)
+                return finishSequence(rhsTmp, objDerefType);      // return rhsTmp from sequence
+            }
+
+        case EOpPostIncrement:
+        case EOpPostDecrement:
+            {
+                // We turn this into:
+                //   OpSequence
+                //      coordtmp = load's param1
+                //      rhsTmp1 = OpImageLoad(object, coordTmp)
+                //      rhsTmp2 = rhsTmp1
+                //      rhsTmp2 op
+                //      OpImageStore(object, coordTmp, rhsTmp2)
+                //      rhsTmp1 (pre-op value)
+                TIntermSymbol* rhsTmp1 = addTmpVar("storeTempPre",  objDerefType);
+                TIntermSymbol* rhsTmp2 = addTmpVar("storeTempPost", objDerefType);
+                TIntermTyped* coordTmp = addTmpVar("coordTemp", coord->getType());
+
+                makeBinary(EOpAssign, coordTmp, coord);            // coordtmp = load[param1]
+                makeLoad(rhsTmp1, object, coordTmp, objDerefType); // rhsTmp1 = OpImageLoad(object, coordTmp)
+                makeBinary(EOpAssign, rhsTmp2, rhsTmp1);           // rhsTmp2 = rhsTmp1
+                makeUnary(assignOp, rhsTmp2);                      // rhsTmp op
+                makeStore(object, coordTmp, rhsTmp2);              // OpImageStore(object, coordTmp, rhsTmp2)
+                return finishSequence(rhsTmp1, objDerefType);      // return rhsTmp from sequence
+            }
+                
+        default:
+            break;
+        }
+    }
+
+    if (lhs)
+        if (lValueErrorCheck(loc, op, lhs))
+            return nullptr;
+ 
+    return node;
+}
+
 void HlslParseContext::handlePragma(const TSourceLoc& loc, const TVector<TString>& tokens)
 {
     if (pragmaCallback)
@@ -298,11 +591,44 @@
 }
 
 //
+// Handle operator[] on any objects it applies to.  Currently:
+//    Textures
+//    Buffers
+//
+TIntermTyped* HlslParseContext::handleBracketOperator(const TSourceLoc& loc, TIntermTyped* base, TIntermTyped* index)
+{
+    // handle r-value operator[] on textures and images.  l-values will be processed later.
+    if (base->getType().getBasicType() == EbtSampler && !base->isArray()) {
+        const TSampler& sampler = base->getType().getSampler();
+        if (sampler.isImage() || sampler.isTexture()) {
+            TIntermAggregate* load = new TIntermAggregate(sampler.isImage() ? EOpImageLoad : EOpTextureFetch);
+
+            load->setType(TType(sampler.type, EvqTemporary, sampler.vectorSize));
+            load->setLoc(loc);
+            load->getSequence().push_back(base);
+            load->getSequence().push_back(index);
+
+            // Textures need a MIP.  First indirection is always to mip 0.  If there's another, we'll add it
+            // later.
+            if (sampler.isTexture())
+                load->getSequence().push_back(intermediate.addConstantUnion(0, loc, true));
+
+            return load;
+        }
+    }
+
+    return nullptr;
+}
+
+//
 // Handle seeing a base[index] dereference in the grammar.
 //
 TIntermTyped* HlslParseContext::handleBracketDereference(const TSourceLoc& loc, TIntermTyped* base, TIntermTyped* index)
 {
-    TIntermTyped* result = nullptr;
+    TIntermTyped* result = handleBracketOperator(loc, base, index);
+
+    if (result != nullptr)
+        return result;  // it was handled as an operator[]
 
     bool flattened = false;
     int indexValue = 0;
@@ -425,10 +751,10 @@
                field == "SampleLevel") {
         // If it's not a method on a sampler object, we fall through in case it is a struct member.
         if (base->getType().getBasicType() == EbtSampler) {
-            const TSampler& texType = base->getType().getSampler();
-            if (! texType.isPureSampler()) {
-                const int vecSize = texType.isShadow() ? 1 : 4;
-                return intermediate.addMethod(base, TType(texType.type, EvqTemporary, vecSize), &field, loc);
+            const TSampler& sampler = base->getType().getSampler();
+            if (! sampler.isPureSampler()) {
+                const int vecSize = sampler.isShadow() ? 1 : 4; // TODO: handle arbitrary sample return sizes
+                return intermediate.addMethod(base, TType(sampler.type, EvqTemporary, vecSize), &field, loc);
             }
         }
     }
@@ -937,6 +1263,9 @@
 // to intermediate.addAssign().
 TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op, TIntermTyped* left, TIntermTyped* right) const
 {
+    if (left == nullptr || right == nullptr)
+        return nullptr;
+
     const auto mustFlatten = [&](const TIntermTyped& node) {
         return shouldFlatten(node.getType()) && node.getAsSymbolNode() &&
                flattenMap.find(node.getAsSymbolNode()->getId()) != flattenMap.end();
@@ -1001,7 +1330,7 @@
 
     const auto getMember = [&](bool flatten, TIntermTyped* node,
                                const TVector<TVariable*>& memberVariables, int member,
-                               TOperator op, const TType& memberType) {
+                               TOperator op, const TType& memberType) -> TIntermTyped * {
         TIntermTyped* subTree;
         if (flatten)
             subTree = intermediate.addSymbol(*memberVariables[member]);
@@ -1111,6 +1440,23 @@
     if (!node || !node->getAsOperator())
         return;
 
+    const auto clampReturn = [&loc, &node, this](TIntermTyped* result, const TSampler& sampler) {
+        // Sampler return must always be a vec4, but we can construct a shorter vector
+        result->setType(TType(node->getType().getBasicType(), EvqTemporary, node->getVectorSize()));
+
+        if (sampler.vectorSize < (unsigned)node->getVectorSize()) {
+            // Too many components.  Construct shorter vector from it.
+            const TType clampedType(result->getType().getBasicType(), EvqTemporary, sampler.vectorSize);
+
+            const TOperator op = intermediate.mapTypeToConstructorOp(clampedType);
+
+            result = constructBuiltIn(clampedType, op, result, loc, false);
+        }
+
+        result->setLoc(loc);
+        return result;
+    };
+
     const TOperator op  = node->getAsOperator()->getOp();
     const TIntermAggregate* argAggregate = arguments ? arguments->getAsAggregate() : nullptr;
 
@@ -1119,10 +1465,8 @@
     case EOpTexture:
         {
             // Texture with ddx & ddy is really gradient form in HLSL
-            if (argAggregate->getSequence().size() == 4) {
+            if (argAggregate->getSequence().size() == 4)
                 node->getAsAggregate()->setOperator(EOpTextureGrad);
-                break;
-            }
 
             break;
         }
@@ -1138,14 +1482,16 @@
             TIntermTyped* bias = intermediate.addIndex(EOpIndexDirect, arg1, w, loc);
 
             TOperator constructOp = EOpNull;
-            switch (arg0->getType().getSampler().dim) {
+            const TSampler& sampler = arg0->getType().getSampler();
+
+            switch (sampler.dim) {
             case Esd1D:   constructOp = EOpConstructFloat; break; // 1D
             case Esd2D:   constructOp = EOpConstructVec2;  break; // 2D
             case Esd3D:   constructOp = EOpConstructVec3;  break; // 3D
             case EsdCube: constructOp = EOpConstructVec3;  break; // also 3D
             default: break;
             }
-            
+
             TIntermAggregate* constructCoord = new TIntermAggregate(constructOp);
             constructCoord->getSequence().push_back(arg1);
             constructCoord->setLoc(loc);
@@ -1154,8 +1500,8 @@
             tex->getSequence().push_back(arg0);           // sampler
             tex->getSequence().push_back(constructCoord); // coordinate
             tex->getSequence().push_back(bias);           // bias
-            tex->setLoc(loc);
-            node = tex;
+            
+            node = clampReturn(tex, sampler);
 
             break;
         }
@@ -1169,6 +1515,7 @@
             TIntermTyped* argCoord  = argAggregate->getSequence()[2]->getAsTyped();
             TIntermTyped* argBias   = nullptr;
             TIntermTyped* argOffset = nullptr;
+            const TSampler& sampler = argTex->getType().getSampler();
 
             int nextArg = 3;
 
@@ -1194,9 +1541,7 @@
             if (argOffset != nullptr)
                 txsample->getSequence().push_back(argOffset);
 
-            txsample->setType(node->getType());
-            txsample->setLoc(loc);
-            node = txsample;
+            node = clampReturn(txsample, sampler);
 
             break;
         }
@@ -1209,6 +1554,7 @@
             TIntermTyped* argDDX    = argAggregate->getSequence()[3]->getAsTyped();
             TIntermTyped* argDDY    = argAggregate->getSequence()[4]->getAsTyped();
             TIntermTyped* argOffset = nullptr;
+            const TSampler& sampler = argTex->getType().getSampler();
 
             TOperator textureOp = EOpTextureGrad;
 
@@ -1228,9 +1574,7 @@
             if (argOffset != nullptr)
                 txsample->getSequence().push_back(argOffset);
 
-            txsample->setType(node->getType());
-            txsample->setLoc(loc);
-            node = txsample;
+            node = clampReturn(txsample, sampler);
 
             break;
         }
@@ -1249,9 +1593,9 @@
 
             assert(texType.getBasicType() == EbtSampler);
 
-            const TSampler& texSampler = texType.getSampler();
-            const TSamplerDim dim = texSampler.dim;
-            const bool isImage = texSampler.isImage();
+            const TSampler& sampler = texType.getSampler();
+            const TSamplerDim dim = sampler.dim;
+            const bool isImage = sampler.isImage();
             const int numArgs = (int)argAggregate->getSequence().size();
 
             int numDims = 0;
@@ -1261,17 +1605,17 @@
             case Esd2D:     numDims = 2; break; // W, H
             case Esd3D:     numDims = 3; break; // W, H, D
             case EsdCube:   numDims = 2; break; // W, H (cube)
-            case EsdBuffer: numDims = 1; break; // buffers
+            case EsdBuffer: numDims = 1; break; // W (buffers)
             default:
                 assert(0 && "unhandled texture dimension");
             }
 
             // Arrayed adds another dimension for the number of array elements
-            if (texSampler.isArrayed())
+            if (sampler.isArrayed())
                 ++numDims;
 
             // Establish whether we're querying mip levels
-            const bool mipQuery = (numArgs > (numDims + 1)) && (!texSampler.isMultiSample());
+            const bool mipQuery = (numArgs > (numDims + 1)) && (!sampler.isMultiSample());
 
             // AST assumes integer return.  Will be converted to float if required.
             TIntermAggregate* sizeQuery = new TIntermAggregate(isImage ? EOpImageQuerySize : EOpTextureQuerySize);
@@ -1329,7 +1673,7 @@
             }
 
             // 2DMS formats query # samples, which needs a different query op
-            if (texSampler.isMultiSample()) {
+            if (sampler.isMultiSample()) {
                 TIntermTyped* outParam = argAggregate->getSequence()[outParamBase + numDims]->getAsTyped();
 
                 TIntermAggregate* samplesQuery = new TIntermAggregate(EOpImageQuerySamples);
@@ -1418,9 +1762,10 @@
             TIntermTyped* lodComponent = nullptr;
             TIntermTyped* coordSwizzle = nullptr;
 
-            const bool isMS = argTex->getType().getSampler().isMultiSample();
-            const bool isBuffer = argTex->getType().getSampler().dim == EsdBuffer;
-            const bool isImage = argTex->getType().getSampler().isImage();
+            const TSampler& sampler = argTex->getType().getSampler();
+            const bool isMS = sampler.isMultiSample();
+            const bool isBuffer = sampler.dim == EsdBuffer;
+            const bool isImage = sampler.isImage();
             const TBasicType coordBaseType = argCoord->getType().getBasicType();
 
             // Last component of coordinate is the mip level, for non-MS.  we separate them here:
@@ -1474,9 +1819,7 @@
                 txfetch->getSequence().push_back(argOffset);
             }
 
-            txfetch->setType(node->getType());
-            txfetch->setLoc(loc);
-            node = txfetch;
+            node = clampReturn(txfetch, sampler);
 
             break;
         }
@@ -1488,7 +1831,8 @@
             TIntermTyped* argCoord  = argAggregate->getSequence()[2]->getAsTyped();
             TIntermTyped* argLod    = argAggregate->getSequence()[3]->getAsTyped();
             TIntermTyped* argOffset = nullptr;
-
+            const TSampler& sampler = argTex->getType().getSampler();
+            
             const int  numArgs = (int)argAggregate->getSequence().size();
 
             if (numArgs == 5) // offset, if present
@@ -1506,9 +1850,7 @@
             if (argOffset != nullptr)
                 txsample->getSequence().push_back(argOffset);
 
-            txsample->setType(node->getType());
-            txsample->setLoc(loc);
-            node = txsample;
+            node = clampReturn(txsample, sampler);
 
             break;
         }
@@ -2260,12 +2602,13 @@
 //
 // Returns a node of a subtree that evaluates to the return value of the function.
 //
-TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& function, TIntermAggregate& intermNode) const
+TIntermTyped* HlslParseContext::addOutputArgumentConversions(const TFunction& function, TIntermAggregate& intermNode)
 {
     TIntermSequence& arguments = intermNode.getSequence();
     const auto needsConversion = [&](int argNum) {
         return function[argNum].type->getQualifier().isParamOutput() &&
                (*function[argNum].type != arguments[argNum]->getAsTyped()->getType() ||
+                shouldConvertLValue(arguments[argNum]) ||
                 shouldFlatten(arguments[argNum]->getAsTyped()->getType()));
     };
 
@@ -2313,7 +2656,8 @@
             TIntermSymbol* tempArgNode = intermediate.addSymbol(*tempArg, intermNode.getLoc());
 
             // This makes the deepest level, the member-wise copy
-            TIntermTyped* tempAssign = handleAssign(arguments[i]->getLoc(), EOpAssign, arguments[i]->getAsTyped(), tempArgNode)->getAsAggregate();
+            TIntermTyped* tempAssign = handleAssign(arguments[i]->getLoc(), EOpAssign, arguments[i]->getAsTyped(), tempArgNode);
+            tempAssign = handleLvalue(arguments[i]->getLoc(), "assign", tempAssign);
             conversionTree = intermediate.growAggregate(conversionTree, tempAssign, arguments[i]->getLoc());
 
             // replace the argument with another node for the same tempArg variable
@@ -2591,6 +2935,8 @@
         qualifier.builtIn = EbvTessLevelInner;
     else if (semanticUpperCase == "SV_GSINSTANCEID")
         qualifier.builtIn = EbvInvocationId;
+    else if (semanticUpperCase == "SV_DISPATCHTHREADID")
+        qualifier.builtIn = EbvLocalInvocationId;
     else if (semanticUpperCase == "SV_GROUPTHREADID")
         qualifier.builtIn = EbvLocalInvocationId;
     else if (semanticUpperCase == "SV_GROUPID")
@@ -2599,6 +2945,8 @@
         qualifier.builtIn = EbvTessCoord;
     else if (semanticUpperCase == "SV_DEPTH")
         qualifier.builtIn = EbvFragDepth;
+    else if( semanticUpperCase == "SV_COVERAGE")
+        qualifier.builtIn = EbvSampleMask;
 
     //TODO, these need to get refined to be more specific 
     else if( semanticUpperCase == "SV_DEPTHGREATEREQUAL")
@@ -2606,9 +2954,9 @@
     else if( semanticUpperCase == "SV_DEPTHLESSEQUAL")
         qualifier.builtIn = EbvFragDepthLesser;
     else if( semanticUpperCase == "SV_STENCILREF")
-        error(loc, "unimplemented", "SV_STENCILREF", "");
-    else if( semanticUpperCase == "SV_COVERAGE")
-        error(loc, "unimplemented", "SV_COVERAGE", "");
+        error(loc, "unimplemented; need ARB_shader_stencil_export", "SV_STENCILREF", "");
+    else if( semanticUpperCase == "SV_GROUPINDEX")
+        error(loc, "unimplemented", "SV_GROUPINDEX", "");
 }
 
 //
@@ -2693,7 +3041,7 @@
 
     // space
     unsigned int setNumber;
-    const auto crackSpace = [&]() {
+    const auto crackSpace = [&]() -> bool {
         const int spaceLen = 5;
         if (spaceDesc->size() < spaceLen + 1)
             return false;
@@ -3889,7 +4237,7 @@
     symbolTable.findFunctionNameList(call.getMangledName(), candidateList, builtIn);
     
     // can 'from' convert to 'to'?
-    const auto convertible = [this](const TType& from, const TType& to) {
+    const auto convertible = [this](const TType& from, const TType& to) -> bool {
         if (from == to)
             return true;
 
@@ -3916,7 +4264,7 @@
     // Is 'to2' a better conversion than 'to1'?
     // Ties should not be considered as better.
     // Assumes 'convertible' already said true.
-    const auto better = [](const TType& from, const TType& to1, const TType& to2) {
+    const auto better = [](const TType& from, const TType& to1, const TType& to2) -> bool {
         // exact match is always better than mismatch
         if (from == to2)
             return from != to1;
@@ -3943,7 +4291,7 @@
         //     - 32 vs. 64 bit (or width in general)
         //       - bool vs. non bool
         //         - signed vs. not signed
-        const auto linearize = [](const TBasicType& basicType) {
+        const auto linearize = [](const TBasicType& basicType) -> int {
             switch (basicType) {
             case EbtBool:     return 1;
             case EbtInt:      return 10;
diff --git a/hlsl/hlslParseHelper.h b/hlsl/hlslParseHelper.h
index c8ebdbe..2eeba5a 100755
--- a/hlsl/hlslParseHelper.h
+++ b/hlsl/hlslParseHelper.h
@@ -61,6 +61,7 @@
     void handlePragma(const TSourceLoc&, const TVector<TString>&);
     TIntermTyped* handleVariable(const TSourceLoc&, TSymbol* symbol,  const TString* string);
     TIntermTyped* handleBracketDereference(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index);
+    TIntermTyped* handleBracketOperator(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index);
     void checkIndex(const TSourceLoc&, const TType&, int& index);
 
     TIntermTyped* handleBinaryMath(const TSourceLoc&, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right);
@@ -80,7 +81,7 @@
     void decomposeSampleMethods(const TSourceLoc&, TIntermTyped*& node, TIntermNode* arguments);
     TIntermTyped* handleLengthMethod(const TSourceLoc&, TFunction*, TIntermNode*);
     void addInputArgumentConversions(const TFunction&, TIntermNode*&) const;
-    TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermAggregate&) const;
+    TIntermTyped* addOutputArgumentConversions(const TFunction&, TIntermAggregate&);
     void builtInOpCheck(const TSourceLoc&, const TFunction&, TIntermOperator&);
     TFunction* handleConstructorCall(const TSourceLoc&, const TType&);
     void handleSemantic(TSourceLoc, TQualifier&, const TString& semantic);
@@ -151,6 +152,12 @@
     void pushSwitchSequence(TIntermSequence* sequence) { switchSequenceStack.push_back(sequence); }
     void popSwitchSequence() { switchSequenceStack.pop_back(); }
 
+    // Apply L-value conversions.  E.g, turning a write to a RWTexture into an ImageStore.
+    TIntermTyped* handleLvalue(const TSourceLoc&, const char* op, TIntermTyped* node);
+    bool lValueErrorCheck(const TSourceLoc&, const char* op, TIntermTyped*) override;
+
+    TLayoutFormat getLayoutFromTxType(const TSourceLoc&, const TType&);
+
 protected:
     void inheritGlobalDefaults(TQualifier& dst) const;
     TVariable* makeInternalVariable(const char* name, const TType&) const;
@@ -160,6 +167,9 @@
     TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer);
     TOperator mapAtomicOp(const TSourceLoc& loc, TOperator op, bool isImage);
 
+    // Return true if this node requires L-value conversion (e.g, to an imageStore).
+    bool shouldConvertLValue(const TIntermNode*) const;
+
     // Array and struct flattening
     bool shouldFlatten(const TType& type) const { return shouldFlattenIO(type) || shouldFlattenUniform(type); }
     TIntermTyped* flattenAccess(TIntermTyped* base, int member);
diff --git a/hlsl/hlslParseables.cpp b/hlsl/hlslParseables.cpp
index a2d500f..d33cfb8 100755
--- a/hlsl/hlslParseables.cpp
+++ b/hlsl/hlslParseables.cpp
@@ -708,15 +708,15 @@
         { "SampleLevel",        /*!O*/        "V4",    nullptr,   "%@,S,V,S",       "FIU,S,F,",      EShLangAll },
         { "SampleLevel",        /* O*/        "V4",    nullptr,   "%@,S,V,S,V",     "FIU,S,F,,I",    EShLangAll },
 
-        { "Load",               /*!O*/        "V4",    nullptr,   "%@*,V",          "FIU,I",         EShLangAll },
+        { "Load",               /*!O*/        "V4",    nullptr,   "%@,V",           "FIU,I",         EShLangAll },
         { "Load",               /* O*/        "V4",    nullptr,   "%@,V,V",         "FIU,I,I",       EShLangAll },
         { "Load", /* +sampleidex*/            "V4",    nullptr,   "$&,V,S",         "FIU,I,I",       EShLangAll },
         { "Load", /* +samplindex, offset*/    "V4",    nullptr,   "$&,V,S,V",       "FIU,I,I,I",     EShLangAll },
 
         // RWTexture loads
         { "Load",                             "V4",    nullptr,   "!#,V",           "FIU,I",         EShLangAll },
-        // RWBuffer loads
-        { "Load",                             "V4",    nullptr,   "~1,V",           "FIU,I",         EShLangAll },
+        // (RW)Buffer loads
+        { "Load",                             "V4",    nullptr,   "~*1,V",           "FIU,I",         EShLangAll },
 
         { "Gather",             /*!O*/        "V4",    nullptr,   "%@,S,V",         "FIU,S,F",       EShLangAll },
         { "Gather",             /* O*/        "V4",    nullptr,   "%@,S,V,V",       "FIU,S,F,I",     EShLangAll },