diff --git a/src/writer/glsl/generator_impl.cc b/src/writer/glsl/generator_impl.cc
index 824fdda..f43509e 100644
--- a/src/writer/glsl/generator_impl.cc
+++ b/src/writer/glsl/generator_impl.cc
@@ -1135,18 +1135,35 @@
 
   switch (intrinsic->Type()) {
     case sem::IntrinsicType::kTextureDimensions: {
-      out << "textureSize(";
+      if (texture_type->Is<sem::StorageTexture>()) {
+        out << "imageSize(";
+      } else {
+        out << "textureSize(";
+      }
       if (!EmitExpression(out, texture)) {
         return false;
       }
 
-      auto* level_arg = arg(Usage::kLevel);
-      if (level_arg) {
-        if (!EmitExpression(out, level_arg)) {
-          return false;
+      // The LOD parameter is mandatory on textureSize() for non-multisampled
+      // textures.
+      if (!texture_type->Is<sem::StorageTexture>() &&
+          !texture_type->Is<sem::MultisampledTexture>() &&
+          !texture_type->Is<sem::DepthMultisampledTexture>()) {
+        out << ", ";
+        if (auto* level_arg = arg(Usage::kLevel)) {
+          if (!EmitExpression(out, level_arg)) {
+            return false;
+          }
+        } else {
+          out << "0";
         }
       }
       out << ")";
+      // textureSize() on sampler2dArray returns the array size in the
+      // final component, so strip it out.
+      if (texture_type->dim() == ast::TextureDimension::k2dArray) {
+        out << ".xy";
+      }
       return true;
     }
     // TODO(senorblanco): determine if this works for array textures
@@ -1171,12 +1188,6 @@
       break;
   }
 
-  // If pack_level_in_coords is true, then the mip level will be appended as the
-  // last value of the coordinates argument. If the WGSL intrinsic overload does
-  // not have a level parameter and pack_level_in_coords is true, then a zero
-  // mip level will be inserted.
-  bool pack_level_in_coords = false;
-
   uint32_t glsl_ret_width = 4u;
 
   switch (intrinsic->Type()) {
@@ -1200,10 +1211,6 @@
       break;
     case sem::IntrinsicType::kTextureLoad:
       out << "texelFetch(";
-      // Multisampled textures do not support mip-levels.
-      if (!texture_type->Is<sem::MultisampledTexture>()) {
-        pack_level_in_coords = true;
-      }
       break;
     case sem::IntrinsicType::kTextureStore:
       out << "imageStore(";
@@ -1227,40 +1234,10 @@
     return false;
   }
 
-  auto emit_vector_appended_with_i32_zero = [&](const ast::Expression* vector) {
-    auto* i32 = builder_.create<sem::I32>();
-    auto* zero = builder_.Expr(0);
-    auto* stmt = builder_.Sem().Get(vector)->Stmt();
-    builder_.Sem().Add(zero, builder_.create<sem::Expression>(zero, i32, stmt,
-                                                              sem::Constant{}));
-    auto* packed = AppendVector(&builder_, vector, zero);
-    return EmitExpression(out, packed->Declaration());
-  };
-
-  auto emit_vector_appended_with_level = [&](const ast::Expression* vector) {
-    if (auto* level = arg(Usage::kLevel)) {
-      auto* packed = AppendVector(&builder_, vector, level);
-      return EmitExpression(out, packed->Declaration());
-    }
-    return emit_vector_appended_with_i32_zero(vector);
-  };
-
   if (auto* array_index = arg(Usage::kArrayIndex)) {
     // Array index needs to be appended to the coordinates.
     auto* packed = AppendVector(&builder_, param_coords, array_index);
-    if (pack_level_in_coords) {
-      // Then mip level needs to be appended to the coordinates.
-      if (!emit_vector_appended_with_level(packed->Declaration())) {
-        return false;
-      }
-    } else {
-      if (!EmitExpression(out, packed->Declaration())) {
-        return false;
-      }
-    }
-  } else if (pack_level_in_coords) {
-    // Mip level needs to be appended to the coordinates.
-    if (!emit_vector_appended_with_level(param_coords)) {
+    if (!EmitExpression(out, packed->Declaration())) {
       return false;
     }
   } else {
@@ -1272,9 +1249,6 @@
   for (auto usage :
        {Usage::kDepthRef, Usage::kBias, Usage::kLevel, Usage::kDdx, Usage::kDdy,
         Usage::kSampleIndex, Usage::kOffset, Usage::kValue}) {
-    if (usage == Usage::kLevel && pack_level_in_coords) {
-      continue;  // mip level already packed in coordinates.
-    }
     if (auto* e = arg(usage)) {
       out << ", ";
       if (!EmitExpression(out, e)) {
@@ -1285,6 +1259,9 @@
 
   out << ")";
 
+  if (intrinsic->ReturnType()->Is<sem::Void>()) {
+    return true;
+  }
   // If the intrinsic return type does not match the number of elements of the
   // GLSL intrinsic, we need to swizzle the expression to generate the correct
   // number of components.
@@ -2436,28 +2413,24 @@
 
     out << "uniform highp ";
 
-    if (sampled || ms) {
-      auto* subtype =
-          sampled ? sampled->type() : storage ? storage->type() : ms->type();
-      if (subtype->Is<sem::F32>()) {
-      } else if (subtype->Is<sem::I32>()) {
-        out << "i";
-      } else if (subtype->Is<sem::U32>()) {
-        out << "u";
-      } else {
-        TINT_ICE(Writer, diagnostics_) << "Unsupported texture type";
-        return false;
-      }
+    if (storage && storage->access() != ast::Access::kRead) {
+      out << "writeonly ";
     }
-    if (storage) {
-      if (storage->access() != ast::Access::kRead) {
-        out << "writeonly ";
-      }
-      out << "image";
+    auto* subtype = sampled
+                        ? sampled->type()
+                        : storage ? storage->type() : ms ? ms->type() : nullptr;
+    if (!subtype || subtype->Is<sem::F32>()) {
+    } else if (subtype->Is<sem::I32>()) {
+      out << "i";
+    } else if (subtype->Is<sem::U32>()) {
+      out << "u";
     } else {
-      out << "sampler";
+      TINT_ICE(Writer, diagnostics_) << "Unsupported texture type";
+      return false;
     }
 
+    out << (storage ? "image" : "sampler");
+
     switch (tex->dim()) {
       case ast::TextureDimension::k1d:
         out << "1D";
diff --git a/src/writer/glsl/generator_impl_intrinsic_texture_test.cc b/src/writer/glsl/generator_impl_intrinsic_texture_test.cc
index 8d3a1eb..04fff42 100644
--- a/src/writer/glsl/generator_impl_intrinsic_texture_test.cc
+++ b/src/writer/glsl/generator_impl_intrinsic_texture_test.cc
@@ -37,17 +37,13 @@
   using ValidTextureOverload = ast::intrinsic::test::ValidTextureOverload;
   switch (overload) {
     case ValidTextureOverload::kDimensions1d:
-    case ValidTextureOverload::kDimensionsStorageWO1d:
     case ValidTextureOverload::kDimensions2d:
     case ValidTextureOverload::kDimensionsDepth2d:
-    case ValidTextureOverload::kDimensionsStorageWO2d:
     case ValidTextureOverload::kDimensionsDepthMultisampled2d:
     case ValidTextureOverload::kDimensionsMultisampled2d:
     case ValidTextureOverload::kDimensions2dArray:
     case ValidTextureOverload::kDimensionsDepth2dArray:
-    case ValidTextureOverload::kDimensionsStorageWO2dArray:
     case ValidTextureOverload::kDimensions3d:
-    case ValidTextureOverload::kDimensionsStorageWO3d:
     case ValidTextureOverload::kDimensionsCube:
     case ValidTextureOverload::kDimensionsDepthCube:
     case ValidTextureOverload::kDimensionsCubeArray:
@@ -62,6 +58,11 @@
     case ValidTextureOverload::kDimensionsCubeArrayLevel:
     case ValidTextureOverload::kDimensionsDepthCubeArrayLevel:
       return {"textureSize"};
+    case ValidTextureOverload::kDimensionsStorageWO1d:
+    case ValidTextureOverload::kDimensionsStorageWO2d:
+    case ValidTextureOverload::kDimensionsStorageWO2dArray:
+    case ValidTextureOverload::kDimensionsStorageWO3d:
+      return {"imageSize"};
     case ValidTextureOverload::kNumLayers2dArray:
     case ValidTextureOverload::kNumLayersDepth2dArray:
     case ValidTextureOverload::kNumLayersCubeArray:
@@ -197,35 +198,35 @@
     case ValidTextureOverload::kLoad1dLevelF32:
     case ValidTextureOverload::kLoad1dLevelU32:
     case ValidTextureOverload::kLoad1dLevelI32:
-      return R"(texelFetch(tint_symbol, ivec2(1, 3));)";
+      return R"(texelFetch(tint_symbol, 1, 3);)";
     case ValidTextureOverload::kLoad2dLevelF32:
     case ValidTextureOverload::kLoad2dLevelU32:
     case ValidTextureOverload::kLoad2dLevelI32:
-      return R"(texelFetch(tint_symbol, ivec3(1, 2, 3));)";
+      return R"(texelFetch(tint_symbol, ivec2(1, 2), 3);)";
     case ValidTextureOverload::kLoad2dArrayLevelF32:
     case ValidTextureOverload::kLoad2dArrayLevelU32:
     case ValidTextureOverload::kLoad2dArrayLevelI32:
     case ValidTextureOverload::kLoad3dLevelF32:
     case ValidTextureOverload::kLoad3dLevelU32:
     case ValidTextureOverload::kLoad3dLevelI32:
-      return R"(texelFetch(tint_symbol, ivec4(1, 2, 3, 4));)";
+      return R"(texelFetch(tint_symbol, ivec3(1, 2, 3), 4);)";
     case ValidTextureOverload::kLoadDepthMultisampled2dF32:
     case ValidTextureOverload::kLoadMultisampled2dF32:
     case ValidTextureOverload::kLoadMultisampled2dU32:
     case ValidTextureOverload::kLoadMultisampled2dI32:
       return R"(texelFetch(tint_symbol, ivec2(1, 2), 3);)";
     case ValidTextureOverload::kLoadDepth2dLevelF32:
-      return R"(texelFetch(tint_symbol, ivec3(1, 2, 3)).x;)";
+      return R"(texelFetch(tint_symbol, ivec2(1, 2), 3).x;)";
     case ValidTextureOverload::kLoadDepth2dArrayLevelF32:
-      return R"(texelFetch(tint_symbol, ivec4(1, 2, 3, 4)).x;)";
+      return R"(texelFetch(tint_symbol, ivec3(1, 2, 3), 4).x;)";
     case ValidTextureOverload::kStoreWO1dRgba32float:
-      return R"(imageStore(tint_symbol, 1, vec4(2.0f, 3.0f, 4.0f, 5.0f)).x;)";
+      return R"(imageStore(tint_symbol, 1, vec4(2.0f, 3.0f, 4.0f, 5.0f));)";
     case ValidTextureOverload::kStoreWO2dRgba32float:
-      return R"(imageStore(tint_symbol, ivec2(1, 2), vec4(3.0f, 4.0f, 5.0f, 6.0f)).x;)";
+      return R"(imageStore(tint_symbol, ivec2(1, 2), vec4(3.0f, 4.0f, 5.0f, 6.0f));)";
     case ValidTextureOverload::kStoreWO2dArrayRgba32float:
-      return R"(imageStore(tint_symbol, ivec3(1, 2, 3), vec4(4.0f, 5.0f, 6.0f, 7.0f)).x;)";
+      return R"(imageStore(tint_symbol, ivec3(1, 2, 3), vec4(4.0f, 5.0f, 6.0f, 7.0f));)";
     case ValidTextureOverload::kStoreWO3dRgba32float:
-      return R"(imageStore(tint_symbol, ivec3(1, 2, 3), vec4(4.0f, 5.0f, 6.0f, 7.0f)).x;)";
+      return R"(imageStore(tint_symbol, ivec3(1, 2, 3), vec4(4.0f, 5.0f, 6.0f, 7.0f));)";
   }
   return "<unmatched texture overload>";
 }  // NOLINT - Ignore the length of this function
diff --git a/test/bug/tint/413.spvasm.expected.glsl b/test/bug/tint/413.spvasm.expected.glsl
index c3dc7bc..5bc6dd6 100644
--- a/test/bug/tint/413.spvasm.expected.glsl
+++ b/test/bug/tint/413.spvasm.expected.glsl
@@ -1,18 +1,16 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2D Src;
-uniform highp writeonly image2D Dst;
+uniform highp writeonly uimage2D Dst;
 
 void main_1() {
   uvec4 srcValue = uvec4(0u, 0u, 0u, 0u);
-  uvec4 x_18 = texelFetch(Src, ivec3(0, 0, 0));
+  uvec4 x_18 = texelFetch(Src, ivec2(0, 0), 0);
   srcValue = x_18;
   uint x_22 = srcValue.x;
   srcValue.x = (x_22 + uint(1));
-  imageStore(Dst, ivec2(0, 0), srcValue).x;
+  imageStore(Dst, ivec2(0, 0), srcValue);
   return;
 }
 
@@ -26,11 +24,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:9: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:9: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/bug/tint/453.wgsl.expected.glsl b/test/bug/tint/453.wgsl.expected.glsl
index 5eec44f..2cb6a7a 100644
--- a/test/bug/tint/453.wgsl.expected.glsl
+++ b/test/bug/tint/453.wgsl.expected.glsl
@@ -1,19 +1,17 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2D Src;
-uniform highp writeonly image2D Dst;
+uniform highp writeonly uimage2D Dst;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
 void tint_symbol() {
   uvec4 srcValue = uvec4(0u, 0u, 0u, 0u);
-  uvec4 x_22 = texelFetch(Src, ivec3(0, 0, 0));
+  uvec4 x_22 = texelFetch(Src, ivec2(0, 0), 0);
   srcValue = x_22;
   uint x_24 = srcValue.x;
   uint x_25 = (x_24 + 1u);
-  imageStore(Dst, ivec2(0, 0), srcValue.xxxx).x;
+  imageStore(Dst, ivec2(0, 0), srcValue.xxxx);
   return;
 }
 void main() {
@@ -21,11 +19,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:10: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:10: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
-ERROR: 0:10: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/bug/tint/534.wgsl.expected.glsl b/test/bug/tint/534.wgsl.expected.glsl
index 8a8429e..6a80ad6 100644
--- a/test/bug/tint/534.wgsl.expected.glsl
+++ b/test/bug/tint/534.wgsl.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
@@ -25,14 +23,14 @@
 };
 
 void tint_symbol_1_inner(uvec3 GlobalInvocationID) {
-  ivec2 size = textureSize(src);
+  ivec2 size = textureSize(src, 0);
   ivec2 dstTexCoord = ivec2(GlobalInvocationID.xy);
   ivec2 srcTexCoord = dstTexCoord;
   if ((uniforms.dstTextureFlipY == 1u)) {
     srcTexCoord.y = ((size.y - dstTexCoord.y) - 1);
   }
-  vec4 srcColor = texelFetch(src, ivec3(srcTexCoord, 0));
-  vec4 dstColor = texelFetch(dst, ivec3(dstTexCoord, 0));
+  vec4 srcColor = texelFetch(src, srcTexCoord, 0);
+  vec4 dstColor = texelFetch(dst, dstTexCoord, 0);
   bool success = true;
   uvec4 srcColorBits = uvec4(0u, 0u, 0u, 0u);
   uvec4 dstColorBits = uvec4(dstColor);
@@ -66,11 +64,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:26: 'textureSize' : no matching overloaded function found 
-ERROR: 0:26: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:26: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/bug/tint/757.wgsl.expected.glsl b/test/bug/tint/757.wgsl.expected.glsl
index d877f23..b1f5845 100644
--- a/test/bug/tint/757.wgsl.expected.glsl
+++ b/test/bug/tint/757.wgsl.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
@@ -17,7 +15,7 @@
 void tint_symbol_inner(uvec3 GlobalInvocationID) {
   uint flatIndex = ((((2u * 2u) * GlobalInvocationID.z) + (2u * GlobalInvocationID.y)) + GlobalInvocationID.x);
   flatIndex = (flatIndex * 1u);
-  vec4 texel = texelFetch(myTexture, ivec4(ivec3(ivec2(GlobalInvocationID.xy), 0), 0));
+  vec4 texel = texelFetch(myTexture, ivec3(ivec2(GlobalInvocationID.xy), 0), 0);
   {
     for(uint i = 0u; (i < 1u); i = (i + 1u)) {
       result.values[(flatIndex + i)] = texel.r;
@@ -37,11 +35,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:18: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:18: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:18: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/bug/tint/827.wgsl.expected.glsl b/test/bug/tint/827.wgsl.expected.glsl
index 9c634b7..cea22b9 100644
--- a/test/bug/tint/827.wgsl.expected.glsl
+++ b/test/bug/tint/827.wgsl.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
@@ -15,7 +13,7 @@
 };
 
 void tint_symbol_inner(uvec3 GlobalInvocationId) {
-  result.values[((GlobalInvocationId.y * width) + GlobalInvocationId.x)] = texelFetch(tex, ivec3(int(GlobalInvocationId.x), int(GlobalInvocationId.y), 0)).x;
+  result.values[((GlobalInvocationId.y * width) + GlobalInvocationId.x)] = texelFetch(tex, ivec2(int(GlobalInvocationId.x), int(GlobalInvocationId.y)), 0).x;
 }
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
@@ -30,10 +28,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:16: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:16: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/bug/tint/913.wgsl.expected.glsl b/test/bug/tint/913.wgsl.expected.glsl
index 3043ed0..76e16ae 100644
--- a/test/bug/tint/913.wgsl.expected.glsl
+++ b/test/bug/tint/913.wgsl.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
@@ -26,8 +24,8 @@
 };
 
 void tint_symbol_1_inner(uvec3 GlobalInvocationID) {
-  ivec2 srcSize = textureSize(src);
-  ivec2 dstSize = textureSize(dst);
+  ivec2 srcSize = textureSize(src, 0);
+  ivec2 dstSize = textureSize(dst, 0);
   uvec2 dstTexCoord = uvec2(GlobalInvocationID.xy);
   vec4 nonCoveredColor = vec4(0.0f, 1.0f, 0.0f, 1.0f);
   bool success = true;
@@ -46,7 +44,7 @@
   if ((tint_tmp)) {
     bool tint_tmp_3 = success;
     if (tint_tmp_3) {
-      tint_tmp_3 = all(equal(texelFetch(dst, ivec3(ivec2(dstTexCoord), 0)), nonCoveredColor));
+      tint_tmp_3 = all(equal(texelFetch(dst, ivec2(dstTexCoord), 0), nonCoveredColor));
     }
     success = (tint_tmp_3);
   } else {
@@ -54,8 +52,8 @@
     if ((uniforms.dstTextureFlipY == 1u)) {
       srcTexCoord.y = ((uint(srcSize.y) - srcTexCoord.y) - 1u);
     }
-    vec4 srcColor = texelFetch(src, ivec3(ivec2(srcTexCoord), 0));
-    vec4 dstColor = texelFetch(dst, ivec3(ivec2(dstTexCoord), 0));
+    vec4 srcColor = texelFetch(src, ivec2(srcTexCoord), 0);
+    vec4 dstColor = texelFetch(dst, ivec2(dstTexCoord), 0);
     if ((uniforms.channelCount == 2u)) {
       bool tint_tmp_5 = success;
       if (tint_tmp_5) {
@@ -106,11 +104,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:27: 'textureSize' : no matching overloaded function found 
-ERROR: 0:27: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:27: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/bug/tint/942.wgsl.expected.glsl b/test/bug/tint/942.wgsl.expected.glsl
index 464422e..3e730ee 100644
--- a/test/bug/tint/942.wgsl.expected.glsl
+++ b/test/bug/tint/942.wgsl.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
@@ -33,7 +31,7 @@
   }
   memoryBarrierShared();
   uint filterOffset = ((params.filterDim - 1u) / 2u);
-  ivec2 dims = textureSize(inputTex0);
+  ivec2 dims = textureSize(inputTex, 0);
   ivec2 baseIndex = (ivec2(((WorkGroupID.xy * uvec2(params.blockDim, 4u)) + (LocalInvocationID.xy * uvec2(4u, 1u)))) - ivec2(int(filterOffset), 0));
   {
     for(uint r = 0u; (r < 4u); r = (r + 1u)) {
@@ -74,7 +72,7 @@
                 acc = (acc + ((1.0f / float(params.filterDim)) * tile[r][i]));
               }
             }
-            imageStore(outputTex, writeIndex, vec4(acc, 1.0f)).x;
+            imageStore(outputTex, writeIndex, vec4(acc, 1.0f));
           }
         }
       }
@@ -96,12 +94,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:34: 'inputTex0' : undeclared identifier 
-ERROR: 0:34: 'textureSize' : no matching overloaded function found 
-ERROR: 0:34: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:34: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/002b2a.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/002b2a.wgsl.expected.glsl
index ee559be..9b03989 100644
--- a/test/intrinsics/gen/textureDimensions/002b2a.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/002b2a.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp sampler1D arg_0;
 
 void textureDimensions_002b2a() {
-  int res = textureSize(arg_0);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp sampler1D arg_0;
 
 void textureDimensions_002b2a() {
-  int res = textureSize(arg_0);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp sampler1D arg_0;
 
 void textureDimensions_002b2a() {
-  int res = textureSize(arg_0);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/012b82.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/012b82.wgsl.expected.glsl
index 8068e3b..d7e382b 100644
--- a/test/intrinsics/gen/textureDimensions/012b82.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/012b82.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureDimensions_012b82() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureDimensions_012b82() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureDimensions_012b82() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/08753d.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/08753d.wgsl.expected.glsl
index 2edf754..7b6ddd3 100644
--- a/test/intrinsics/gen/textureDimensions/08753d.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/08753d.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureDimensions_08753d() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureDimensions_08753d() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureDimensions_08753d() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/0c4772.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/0c4772.wgsl.expected.glsl
index 4e3e717..47ea770 100644
--- a/test/intrinsics/gen/textureDimensions/0c4772.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/0c4772.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_0c4772() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_0c4772() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_0c4772() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/0cce40.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/0cce40.wgsl.expected.glsl
index 869d6e8..b38c86f 100644
--- a/test/intrinsics/gen/textureDimensions/0cce40.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/0cce40.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureDimensions_0cce40() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureDimensions_0cce40() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureDimensions_0cce40() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/0cf2ff.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/0cf2ff.wgsl.expected.glsl
index 24f9d89..3aa1e44 100644
--- a/test/intrinsics/gen/textureDimensions/0cf2ff.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/0cf2ff.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureDimensions_0cf2ff() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureDimensions_0cf2ff() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureDimensions_0cf2ff() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/0d8b7e.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/0d8b7e.wgsl.expected.glsl
index 6623d1f..063525f 100644
--- a/test/intrinsics/gen/textureDimensions/0d8b7e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/0d8b7e.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureDimensions_0d8b7e() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureDimensions_0d8b7e() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureDimensions_0d8b7e() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/0e32ee.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/0e32ee.wgsl.expected.glsl
index 4e14a83..7cca22f 100644
--- a/test/intrinsics/gen/textureDimensions/0e32ee.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/0e32ee.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureDimensions_0e32ee() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureDimensions_0e32ee() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureDimensions_0e32ee() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/0f3c50.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/0f3c50.wgsl.expected.glsl
index 5f5c12a..deb60b0 100644
--- a/test/intrinsics/gen/textureDimensions/0f3c50.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/0f3c50.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2DArray arg_0;
 
 void textureDimensions_0f3c50() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2DArray arg_0;
 
 void textureDimensions_0f3c50() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2DArray arg_0;
 
 void textureDimensions_0f3c50() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/1191a5.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/1191a5.wgsl.expected.glsl
index 8f13b80..5acdae3 100644
--- a/test/intrinsics/gen/textureDimensions/1191a5.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/1191a5.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2D arg_0;
 
 void textureDimensions_1191a5() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2D arg_0;
 
 void textureDimensions_1191a5() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2D arg_0;
 
 void textureDimensions_1191a5() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.glsl
index ad5149f..8ae5eda 100644
--- a/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/12c9bb.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureDimensions_12c9bb() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,22 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureDimensions_12c9bb() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -63,22 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureDimensions_12c9bb() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -95,12 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/147998.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/147998.wgsl.expected.glsl
index 2d56955..436e19f 100644
--- a/test/intrinsics/gen/textureDimensions/147998.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/147998.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_147998() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_147998() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_147998() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/16036c.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/16036c.wgsl.expected.glsl
index 3533374..47bfbb9 100644
--- a/test/intrinsics/gen/textureDimensions/16036c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/16036c.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureDimensions_16036c() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureDimensions_16036c() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureDimensions_16036c() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/1b71f0.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/1b71f0.wgsl.expected.glsl
index 0d31f7f..140fb96 100644
--- a/test/intrinsics/gen/textureDimensions/1b71f0.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/1b71f0.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureDimensions_1b71f0() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureDimensions_1b71f0() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureDimensions_1b71f0() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/1d6c26.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/1d6c26.wgsl.expected.glsl
index 907b5f6..d07e8bd 100644
--- a/test/intrinsics/gen/textureDimensions/1d6c26.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/1d6c26.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_1d6c26() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_1d6c26() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_1d6c26() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/1e9e39.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/1e9e39.wgsl.expected.glsl
index e216b95..01f35bb 100644
--- a/test/intrinsics/gen/textureDimensions/1e9e39.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/1e9e39.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_1e9e39() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_1e9e39() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_1e9e39() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/1f20c5.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/1f20c5.wgsl.expected.glsl
index de62918..98e26b9 100644
--- a/test/intrinsics/gen/textureDimensions/1f20c5.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/1f20c5.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2DArray arg_0;
 
 void textureDimensions_1f20c5() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2DArray arg_0;
 
 void textureDimensions_1f20c5() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2DArray arg_0;
 
 void textureDimensions_1f20c5() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/214dd4.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/214dd4.wgsl.expected.glsl
index 65f32a7..c5d4bd9 100644
--- a/test/intrinsics/gen/textureDimensions/214dd4.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/214dd4.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureDimensions_214dd4() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureDimensions_214dd4() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureDimensions_214dd4() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.glsl
index 46c553b..997fdbf 100644
--- a/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/221f22.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp isamplerCubeArray arg_0;
 
 void textureDimensions_221f22() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp isamplerCubeArray arg_0;
 
 void textureDimensions_221f22() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp isamplerCubeArray arg_0;
 
 void textureDimensions_221f22() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.glsl
index e3167c3..2a38ed1 100644
--- a/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/267788.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2DArray arg_0;
 
 void textureDimensions_267788() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -32,22 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2DArray arg_0;
 
 void textureDimensions_267788() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -63,22 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2DArray arg_0;
 
 void textureDimensions_267788() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -95,12 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.glsl
index 36fc485..c11a1ba 100644
--- a/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/26bdfa.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler3D arg_0;
 
 void textureDimensions_26bdfa() {
-  ivec3 res = textureSize(arg_00);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,22 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler3D arg_0;
 
 void textureDimensions_26bdfa() {
-  ivec3 res = textureSize(arg_00);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -63,22 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler3D arg_0;
 
 void textureDimensions_26bdfa() {
-  ivec3 res = textureSize(arg_00);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -95,12 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/26ef6c.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/26ef6c.wgsl.expected.glsl
index 791209e..bff5392 100644
--- a/test/intrinsics/gen/textureDimensions/26ef6c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/26ef6c.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureDimensions_26ef6c() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureDimensions_26ef6c() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureDimensions_26ef6c() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/2ad087.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/2ad087.wgsl.expected.glsl
index ec36824..63a9d19 100644
--- a/test/intrinsics/gen/textureDimensions/2ad087.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/2ad087.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureDimensions_2ad087() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureDimensions_2ad087() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureDimensions_2ad087() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.glsl
index 9e0d6f6..7fb5c3a 100644
--- a/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/2efa05.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler3D arg_0;
 
 void textureDimensions_2efa05() {
-  ivec3 res = textureSize(arg_00);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,22 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler3D arg_0;
 
 void textureDimensions_2efa05() {
-  ivec3 res = textureSize(arg_00);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -63,22 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler3D arg_0;
 
 void textureDimensions_2efa05() {
-  ivec3 res = textureSize(arg_00);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -95,12 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/2f289f.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/2f289f.wgsl.expected.glsl
index 05e1aa2..41213b9 100644
--- a/test/intrinsics/gen/textureDimensions/2f289f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/2f289f.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureDimensions_2f289f() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureDimensions_2f289f() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureDimensions_2f289f() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.glsl
index a301213..44c41df 100644
--- a/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/2fe1cc.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureDimensions_2fe1cc() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,22 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureDimensions_2fe1cc() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -63,22 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureDimensions_2fe1cc() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -95,12 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/318ecc.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/318ecc.wgsl.expected.glsl
index 1f687b5..5bb035e 100644
--- a/test/intrinsics/gen/textureDimensions/318ecc.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/318ecc.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureDimensions_318ecc() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureDimensions_318ecc() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureDimensions_318ecc() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/340d06.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/340d06.wgsl.expected.glsl
index b36a064..ae0b0d1 100644
--- a/test/intrinsics/gen/textureDimensions/340d06.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/340d06.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureDimensions_340d06() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureDimensions_340d06() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureDimensions_340d06() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/398e30.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/398e30.wgsl.expected.glsl
index 68168cc..f01ccff 100644
--- a/test/intrinsics/gen/textureDimensions/398e30.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/398e30.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureDimensions_398e30() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureDimensions_398e30() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureDimensions_398e30() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/3a94ea.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/3a94ea.wgsl.expected.glsl
index c2e5d0a..9e61b93 100644
--- a/test/intrinsics/gen/textureDimensions/3a94ea.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/3a94ea.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureDimensions_3a94ea() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureDimensions_3a94ea() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureDimensions_3a94ea() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/3aca08.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/3aca08.wgsl.expected.glsl
index d3b50a3..838aa42 100644
--- a/test/intrinsics/gen/textureDimensions/3aca08.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/3aca08.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_3aca08() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_3aca08() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_3aca08() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/3c5ad8.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/3c5ad8.wgsl.expected.glsl
index d0e6937..e46b1a4 100644
--- a/test/intrinsics/gen/textureDimensions/3c5ad8.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/3c5ad8.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureDimensions_3c5ad8() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureDimensions_3c5ad8() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureDimensions_3c5ad8() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/4152a6.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/4152a6.wgsl.expected.glsl
index f327cfc..c155b41 100644
--- a/test/intrinsics/gen/textureDimensions/4152a6.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/4152a6.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp usamplerCubeArray arg_0;
 
 void textureDimensions_4152a6() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp usamplerCubeArray arg_0;
 
 void textureDimensions_4152a6() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp usamplerCubeArray arg_0;
 
 void textureDimensions_4152a6() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/423f99.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/423f99.wgsl.expected.glsl
index b3ffbf6..074ff26 100644
--- a/test/intrinsics/gen/textureDimensions/423f99.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/423f99.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp isampler1D arg_0;
 
 void textureDimensions_423f99() {
-  int res = textureSize(arg_0);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp isampler1D arg_0;
 
 void textureDimensions_423f99() {
-  int res = textureSize(arg_0);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp isampler1D arg_0;
 
 void textureDimensions_423f99() {
-  int res = textureSize(arg_0);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/4267ee.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/4267ee.wgsl.expected.glsl
index 54574e4..58078cc 100644
--- a/test/intrinsics/gen/textureDimensions/4267ee.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/4267ee.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_4267ee() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_4267ee() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_4267ee() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/42d4e6.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/42d4e6.wgsl.expected.glsl
index a55a931..91753ec 100644
--- a/test/intrinsics/gen/textureDimensions/42d4e6.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/42d4e6.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_42d4e6() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_42d4e6() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_42d4e6() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/48cb89.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/48cb89.wgsl.expected.glsl
index 51d3620..ba67ed6 100644
--- a/test/intrinsics/gen/textureDimensions/48cb89.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/48cb89.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_48cb89() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_48cb89() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_48cb89() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/49d274.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/49d274.wgsl.expected.glsl
index fa2ffd6..fe5fe75 100644
--- a/test/intrinsics/gen/textureDimensions/49d274.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/49d274.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureDimensions_49d274() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureDimensions_49d274() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureDimensions_49d274() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/4df9a8.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/4df9a8.wgsl.expected.glsl
index 1f940ca..82d1974 100644
--- a/test/intrinsics/gen/textureDimensions/4df9a8.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/4df9a8.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureDimensions_4df9a8() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureDimensions_4df9a8() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureDimensions_4df9a8() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.glsl
index 3abdb03..412ba50 100644
--- a/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/50a9ee.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArray arg_0;
 
 void textureDimensions_50a9ee() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp samplerCubeArray arg_0;
 
 void textureDimensions_50a9ee() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp samplerCubeArray arg_0;
 
 void textureDimensions_50a9ee() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/52045c.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/52045c.wgsl.expected.glsl
index b104509..e7a1937 100644
--- a/test/intrinsics/gen/textureDimensions/52045c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/52045c.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp isampler1D arg_0;
 
 void textureDimensions_52045c() {
-  int res = textureSize(arg_00);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp isampler1D arg_0;
 
 void textureDimensions_52045c() {
-  int res = textureSize(arg_00);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp isampler1D arg_0;
 
 void textureDimensions_52045c() {
-  int res = textureSize(arg_00);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/55b23e.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/55b23e.wgsl.expected.glsl
index 2709ff7..446361a 100644
--- a/test/intrinsics/gen/textureDimensions/55b23e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/55b23e.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_55b23e() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_55b23e() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_55b23e() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/57da0b.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/57da0b.wgsl.expected.glsl
index 99c6588..ae3e70d 100644
--- a/test/intrinsics/gen/textureDimensions/57da0b.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/57da0b.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureDimensions_57da0b() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureDimensions_57da0b() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureDimensions_57da0b() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/57e28f.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/57e28f.wgsl.expected.glsl
index 03bc16c..bbc2d40 100644
--- a/test/intrinsics/gen/textureDimensions/57e28f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/57e28f.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp samplerCube arg_0;
 
 void textureDimensions_57e28f() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp samplerCube arg_0;
 
 void textureDimensions_57e28f() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp samplerCube arg_0;
 
 void textureDimensions_57e28f() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/58a515.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/58a515.wgsl.expected.glsl
index 99db49e..dcbe2db 100644
--- a/test/intrinsics/gen/textureDimensions/58a515.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/58a515.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_58a515() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_58a515() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_58a515() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/5985f3.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/5985f3.wgsl.expected.glsl
index 5bfcbd3..f947c8a 100644
--- a/test/intrinsics/gen/textureDimensions/5985f3.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/5985f3.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureDimensions_5985f3() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureDimensions_5985f3() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureDimensions_5985f3() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/5caa5e.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/5caa5e.wgsl.expected.glsl
index 408ee5e..9cc48d7 100644
--- a/test/intrinsics/gen/textureDimensions/5caa5e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/5caa5e.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureDimensions_5caa5e() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureDimensions_5caa5e() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureDimensions_5caa5e() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/5e295d.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/5e295d.wgsl.expected.glsl
index 427787e..4d1c04c 100644
--- a/test/intrinsics/gen/textureDimensions/5e295d.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/5e295d.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureDimensions_5e295d() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureDimensions_5e295d() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureDimensions_5e295d() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/60bf54.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/60bf54.wgsl.expected.glsl
index dc58a7f..b197f2c 100644
--- a/test/intrinsics/gen/textureDimensions/60bf54.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/60bf54.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureDimensions_60bf54() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureDimensions_60bf54() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureDimensions_60bf54() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/63f3cf.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/63f3cf.wgsl.expected.glsl
index c595ee6..1432692 100644
--- a/test/intrinsics/gen/textureDimensions/63f3cf.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/63f3cf.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_63f3cf() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_63f3cf() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_63f3cf() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/68105c.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/68105c.wgsl.expected.glsl
index 154f8a4..46638eb 100644
--- a/test/intrinsics/gen/textureDimensions/68105c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/68105c.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureDimensions_68105c() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureDimensions_68105c() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureDimensions_68105c() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.glsl
index c4caae2..8a5b705 100644
--- a/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/686ef2.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp isamplerCube arg_0;
 
 void textureDimensions_686ef2() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,22 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isamplerCube arg_0;
 
 void textureDimensions_686ef2() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -63,22 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isamplerCube arg_0;
 
 void textureDimensions_686ef2() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -95,12 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/6adac6.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/6adac6.wgsl.expected.glsl
index 9bc3aa7..d658f91 100644
--- a/test/intrinsics/gen/textureDimensions/6adac6.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/6adac6.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureDimensions_6adac6() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureDimensions_6adac6() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureDimensions_6adac6() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/6ec1b4.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/6ec1b4.wgsl.expected.glsl
index 5361211..27faa07 100644
--- a/test/intrinsics/gen/textureDimensions/6ec1b4.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/6ec1b4.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler3D arg_0;
 
 void textureDimensions_6ec1b4() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler3D arg_0;
 
 void textureDimensions_6ec1b4() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler3D arg_0;
 
 void textureDimensions_6ec1b4() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/6f0d79.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/6f0d79.wgsl.expected.glsl
index 131696b..733c81b 100644
--- a/test/intrinsics/gen/textureDimensions/6f0d79.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/6f0d79.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_6f0d79() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_6f0d79() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_6f0d79() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/702c53.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/702c53.wgsl.expected.glsl
index d7f503c..c64e9bd 100644
--- a/test/intrinsics/gen/textureDimensions/702c53.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/702c53.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_702c53() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_702c53() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_702c53() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.glsl
index afdd8ae..3a7fd3f 100644
--- a/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/72e5d6.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureDimensions_72e5d6() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -32,22 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureDimensions_72e5d6() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -63,22 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureDimensions_72e5d6() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -95,12 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/79df87.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/79df87.wgsl.expected.glsl
index df167b6..4ed8cd6 100644
--- a/test/intrinsics/gen/textureDimensions/79df87.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/79df87.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp usampler1D arg_0;
 
 void textureDimensions_79df87() {
-  int res = textureSize(arg_00);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp usampler1D arg_0;
 
 void textureDimensions_79df87() {
-  int res = textureSize(arg_00);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp usampler1D arg_0;
 
 void textureDimensions_79df87() {
-  int res = textureSize(arg_00);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/7bf826.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/7bf826.wgsl.expected.glsl
index 690ed87..f27df22 100644
--- a/test/intrinsics/gen/textureDimensions/7bf826.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/7bf826.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureDimensions_7bf826() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureDimensions_7bf826() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureDimensions_7bf826() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/7f5c2e.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/7f5c2e.wgsl.expected.glsl
index 9671c94..e96b1a9 100644
--- a/test/intrinsics/gen/textureDimensions/7f5c2e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/7f5c2e.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureDimensions_7f5c2e() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureDimensions_7f5c2e() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureDimensions_7f5c2e() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/8028f3.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/8028f3.wgsl.expected.glsl
index 5ff0573..bcf1d43 100644
--- a/test/intrinsics/gen/textureDimensions/8028f3.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/8028f3.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_8028f3() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_8028f3() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_8028f3() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/811679.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/811679.wgsl.expected.glsl
index dc17343..91597d0 100644
--- a/test/intrinsics/gen/textureDimensions/811679.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/811679.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureDimensions_811679() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureDimensions_811679() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureDimensions_811679() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/820596.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/820596.wgsl.expected.glsl
index 6086ba8..335d6e5 100644
--- a/test/intrinsics/gen/textureDimensions/820596.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/820596.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureDimensions_820596() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureDimensions_820596() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureDimensions_820596() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/83ee5a.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/83ee5a.wgsl.expected.glsl
index c4c26c6..dc556cb 100644
--- a/test/intrinsics/gen/textureDimensions/83ee5a.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/83ee5a.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureDimensions_83ee5a() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureDimensions_83ee5a() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureDimensions_83ee5a() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.glsl
index 2a19a18..2ec3bea 100644
--- a/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/85d556.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureDimensions_85d556() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -32,22 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureDimensions_85d556() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -63,22 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureDimensions_85d556() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -95,12 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.glsl
index 85a5517..cffced6 100644
--- a/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/88ad17.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp usamplerCube arg_0;
 
 void textureDimensions_88ad17() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,22 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usamplerCube arg_0;
 
 void textureDimensions_88ad17() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -63,22 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usamplerCube arg_0;
 
 void textureDimensions_88ad17() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -95,12 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/8aa4c4.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/8aa4c4.wgsl.expected.glsl
index 347f303..d0d8f5e 100644
--- a/test/intrinsics/gen/textureDimensions/8aa4c4.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/8aa4c4.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler3D arg_0;
 
 void textureDimensions_8aa4c4() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler3D arg_0;
 
 void textureDimensions_8aa4c4() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler3D arg_0;
 
 void textureDimensions_8aa4c4() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/8deb5e.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/8deb5e.wgsl.expected.glsl
index 4ca8327..a695efb 100644
--- a/test/intrinsics/gen/textureDimensions/8deb5e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/8deb5e.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler3D arg_0;
 
 void textureDimensions_8deb5e() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler3D arg_0;
 
 void textureDimensions_8deb5e() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler3D arg_0;
 
 void textureDimensions_8deb5e() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/8f20bf.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/8f20bf.wgsl.expected.glsl
index 016ccda..6cef100 100644
--- a/test/intrinsics/gen/textureDimensions/8f20bf.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/8f20bf.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArray arg_0;
 
 void textureDimensions_8f20bf() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp samplerCubeArray arg_0;
 
 void textureDimensions_8f20bf() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp samplerCubeArray arg_0;
 
 void textureDimensions_8f20bf() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/8fca0f.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/8fca0f.wgsl.expected.glsl
index 3758493..eba0cd1 100644
--- a/test/intrinsics/gen/textureDimensions/8fca0f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/8fca0f.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_8fca0f() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_8fca0f() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_8fca0f() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/90340b.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/90340b.wgsl.expected.glsl
index ccaa63d..d74cc02 100644
--- a/test/intrinsics/gen/textureDimensions/90340b.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/90340b.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArray arg_0;
 
 void textureDimensions_90340b() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp samplerCubeArray arg_0;
 
 void textureDimensions_90340b() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp samplerCubeArray arg_0;
 
 void textureDimensions_90340b() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/9042ab.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/9042ab.wgsl.expected.glsl
index 714716a..c1d0dbd 100644
--- a/test/intrinsics/gen/textureDimensions/9042ab.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/9042ab.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureDimensions_9042ab() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureDimensions_9042ab() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureDimensions_9042ab() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.glsl
index 7b3bca8..9e76a57 100644
--- a/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/9393b0.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp samplerCube arg_0;
 
 void textureDimensions_9393b0() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,22 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp samplerCube arg_0;
 
 void textureDimensions_9393b0() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -63,22 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp samplerCube arg_0;
 
 void textureDimensions_9393b0() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -95,12 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/939fdb.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/939fdb.wgsl.expected.glsl
index 89bbc24..9b8ac54 100644
--- a/test/intrinsics/gen/textureDimensions/939fdb.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/939fdb.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureDimensions_939fdb() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureDimensions_939fdb() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureDimensions_939fdb() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/962dcd.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/962dcd.wgsl.expected.glsl
index bccfcb4..80879c8 100644
--- a/test/intrinsics/gen/textureDimensions/962dcd.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/962dcd.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp isamplerCube arg_0;
 
 void textureDimensions_962dcd() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isamplerCube arg_0;
 
 void textureDimensions_962dcd() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isamplerCube arg_0;
 
 void textureDimensions_962dcd() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/9abfe5.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/9abfe5.wgsl.expected.glsl
index 02efa44..a89ff64 100644
--- a/test/intrinsics/gen/textureDimensions/9abfe5.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/9abfe5.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_9abfe5() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_9abfe5() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_9abfe5() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.glsl
index ef9b87b..a261813 100644
--- a/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/9c9c57.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2DArray arg_0;
 
 void textureDimensions_9c9c57() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -32,22 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2DArray arg_0;
 
 void textureDimensions_9c9c57() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -63,22 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2DArray arg_0;
 
 void textureDimensions_9c9c57() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -95,12 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/9da9e2.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/9da9e2.wgsl.expected.glsl
index c174102..29d3e31 100644
--- a/test/intrinsics/gen/textureDimensions/9da9e2.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/9da9e2.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureDimensions_9da9e2() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureDimensions_9da9e2() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureDimensions_9da9e2() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/9eb8d8.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/9eb8d8.wgsl.expected.glsl
index eb33753..6989fd9 100644
--- a/test/intrinsics/gen/textureDimensions/9eb8d8.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/9eb8d8.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureDimensions_9eb8d8() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureDimensions_9eb8d8() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureDimensions_9eb8d8() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/9f8e46.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/9f8e46.wgsl.expected.glsl
index 758f819..47bc890 100644
--- a/test/intrinsics/gen/textureDimensions/9f8e46.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/9f8e46.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureDimensions_9f8e46() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureDimensions_9f8e46() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureDimensions_9f8e46() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.glsl
index e18ab70..e839b90 100644
--- a/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/a01845.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp samplerCubeArray arg_0;
 
 void textureDimensions_a01845() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp samplerCubeArray arg_0;
 
 void textureDimensions_a01845() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp samplerCubeArray arg_0;
 
 void textureDimensions_a01845() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/a7d565.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/a7d565.wgsl.expected.glsl
index b5050a6..72208ea 100644
--- a/test/intrinsics/gen/textureDimensions/a7d565.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/a7d565.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp usampler1D arg_0;
 
 void textureDimensions_a7d565() {
-  int res = textureSize(arg_0);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp usampler1D arg_0;
 
 void textureDimensions_a7d565() {
-  int res = textureSize(arg_0);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp usampler1D arg_0;
 
 void textureDimensions_a7d565() {
-  int res = textureSize(arg_0);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/a863f2.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/a863f2.wgsl.expected.glsl
index bd6a78d..7dbc256 100644
--- a/test/intrinsics/gen/textureDimensions/a863f2.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/a863f2.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_a863f2() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_a863f2() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_a863f2() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.glsl
index a5c5f7e..0d0101f 100644
--- a/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/a9c9c1.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp samplerCube arg_0;
 
 void textureDimensions_a9c9c1() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,22 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp samplerCube arg_0;
 
 void textureDimensions_a9c9c1() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -63,22 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp samplerCube arg_0;
 
 void textureDimensions_a9c9c1() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -95,12 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.glsl
index f8b587b..45b35df 100644
--- a/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/b0e16d.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2D arg_0;
 
 void textureDimensions_b0e16d() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,22 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2D arg_0;
 
 void textureDimensions_b0e16d() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -63,22 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2D arg_0;
 
 void textureDimensions_b0e16d() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -95,12 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/b3c954.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/b3c954.wgsl.expected.glsl
index a73bfc2..b88a82b 100644
--- a/test/intrinsics/gen/textureDimensions/b3c954.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/b3c954.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp usamplerCube arg_0;
 
 void textureDimensions_b3c954() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usamplerCube arg_0;
 
 void textureDimensions_b3c954() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usamplerCube arg_0;
 
 void textureDimensions_b3c954() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/b3e407.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/b3e407.wgsl.expected.glsl
index ab2710f..992dfcb 100644
--- a/test/intrinsics/gen/textureDimensions/b3e407.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/b3e407.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp sampler1D arg_0;
 
 void textureDimensions_b3e407() {
-  int res = textureSize(arg_00);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp sampler1D arg_0;
 
 void textureDimensions_b3e407() {
-  int res = textureSize(arg_00);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp sampler1D arg_0;
 
 void textureDimensions_b3e407() {
-  int res = textureSize(arg_00);
+  int res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/b91240.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/b91240.wgsl.expected.glsl
index d955600..e177092 100644
--- a/test/intrinsics/gen/textureDimensions/b91240.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/b91240.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_b91240() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_b91240() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_b91240() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/ba1481.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/ba1481.wgsl.expected.glsl
index e4c4b67..b7eecc6 100644
--- a/test/intrinsics/gen/textureDimensions/ba1481.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/ba1481.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureDimensions_ba1481() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureDimensions_ba1481() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureDimensions_ba1481() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/bb3dde.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/bb3dde.wgsl.expected.glsl
index f536b88..9c3370d 100644
--- a/test/intrinsics/gen/textureDimensions/bb3dde.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/bb3dde.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureDimensions_bb3dde() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureDimensions_bb3dde() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureDimensions_bb3dde() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/c30e75.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/c30e75.wgsl.expected.glsl
index b6962ff..d62618d 100644
--- a/test/intrinsics/gen/textureDimensions/c30e75.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/c30e75.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureDimensions_c30e75() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureDimensions_c30e75() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureDimensions_c30e75() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/c7943d.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/c7943d.wgsl.expected.glsl
index a0c743e..bc6c6a2 100644
--- a/test/intrinsics/gen/textureDimensions/c7943d.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/c7943d.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureDimensions_c7943d() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureDimensions_c7943d() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureDimensions_c7943d() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/cc968c.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/cc968c.wgsl.expected.glsl
index 611fe64..cc7c50b 100644
--- a/test/intrinsics/gen/textureDimensions/cc968c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/cc968c.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureDimensions_cc968c() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureDimensions_cc968c() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureDimensions_cc968c() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/cccc8f.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/cccc8f.wgsl.expected.glsl
index 9eeb727..5171d34 100644
--- a/test/intrinsics/gen/textureDimensions/cccc8f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/cccc8f.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_cccc8f() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_cccc8f() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureDimensions_cccc8f() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/cd76a7.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/cd76a7.wgsl.expected.glsl
index 6b1c12f..4706335 100644
--- a/test/intrinsics/gen/textureDimensions/cd76a7.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/cd76a7.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_cd76a7() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_cd76a7() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_cd76a7() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/cdf473.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/cdf473.wgsl.expected.glsl
index 900eefd..7a1789b 100644
--- a/test/intrinsics/gen/textureDimensions/cdf473.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/cdf473.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureDimensions_cdf473() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureDimensions_cdf473() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureDimensions_cdf473() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/cec841.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/cec841.wgsl.expected.glsl
index 74ad431..5007544 100644
--- a/test/intrinsics/gen/textureDimensions/cec841.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/cec841.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureDimensions_cec841() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureDimensions_cec841() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureDimensions_cec841() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/cf7e43.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/cf7e43.wgsl.expected.glsl
index 9b046a7..d2c9448 100644
--- a/test/intrinsics/gen/textureDimensions/cf7e43.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/cf7e43.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_cf7e43() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_cf7e43() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureDimensions_cf7e43() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/d125bc.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/d125bc.wgsl.expected.glsl
index dd0e425..60444f2 100644
--- a/test/intrinsics/gen/textureDimensions/d125bc.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/d125bc.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp samplerCube arg_0;
 
 void textureDimensions_d125bc() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp samplerCube arg_0;
 
 void textureDimensions_d125bc() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp samplerCube arg_0;
 
 void textureDimensions_d125bc() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.glsl
index 281157b..5c2fd79 100644
--- a/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/d83c45.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp usamplerCubeArray arg_0;
 
 void textureDimensions_d83c45() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp usamplerCubeArray arg_0;
 
 void textureDimensions_d83c45() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp usamplerCubeArray arg_0;
 
 void textureDimensions_d83c45() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/dc2dd0.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/dc2dd0.wgsl.expected.glsl
index f2186e9..7e644be 100644
--- a/test/intrinsics/gen/textureDimensions/dc2dd0.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/dc2dd0.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureDimensions_dc2dd0() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureDimensions_dc2dd0() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureDimensions_dc2dd0() {
-  int res = textureSize(arg_0);
+  int res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureDimensions/e927be.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/e927be.wgsl.expected.glsl
index 3def416..f2b2190 100644
--- a/test/intrinsics/gen/textureDimensions/e927be.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/e927be.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp isamplerCubeArray arg_0;
 
 void textureDimensions_e927be() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp isamplerCubeArray arg_0;
 
 void textureDimensions_e927be() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp isamplerCubeArray arg_0;
 
 void textureDimensions_e927be() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureDimensions/e9e96c.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/e9e96c.wgsl.expected.glsl
index 01990ce..1d68700 100644
--- a/test/intrinsics/gen/textureDimensions/e9e96c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/e9e96c.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_e9e96c() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_e9e96c() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_e9e96c() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.glsl
index c302cd1..ef095bb 100644
--- a/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/efc8a4.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler3D arg_0;
 
 void textureDimensions_efc8a4() {
-  ivec3 res = textureSize(arg_00);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,22 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler3D arg_0;
 
 void textureDimensions_efc8a4() {
-  ivec3 res = textureSize(arg_00);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -63,22 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler3D arg_0;
 
 void textureDimensions_efc8a4() {
-  ivec3 res = textureSize(arg_00);
+  ivec3 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -95,12 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.glsl
index 107c023..f07f774 100644
--- a/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/f7145b.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2D arg_0;
 
 void textureDimensions_f7145b() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,22 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2D arg_0;
 
 void textureDimensions_f7145b() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -63,22 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2D arg_0;
 
 void textureDimensions_f7145b() {
-  ivec2 res = textureSize(arg_00);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -95,12 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'arg_00' : undeclared identifier 
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 4 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/f931c7.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/f931c7.wgsl.expected.glsl
index f822402..9ced198 100644
--- a/test/intrinsics/gen/textureDimensions/f931c7.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/f931c7.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_f931c7() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_f931c7() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureDimensions_f931c7() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/fa9859.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/fa9859.wgsl.expected.glsl
index ff07154..f264bfc 100644
--- a/test/intrinsics/gen/textureDimensions/fa9859.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/fa9859.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2D arg_0;
 
 void textureDimensions_fa9859() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2D arg_0;
 
 void textureDimensions_fa9859() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2D arg_0;
 
 void textureDimensions_fa9859() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = textureSize(arg_0, 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/fb5670.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/fb5670.wgsl.expected.glsl
index 7cf68ce..ceb91ec 100644
--- a/test/intrinsics/gen/textureDimensions/fb5670.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/fb5670.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_fb5670() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_fb5670() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureDimensions_fb5670() {
-  ivec2 res = textureSize(arg_0);
+  ivec2 res = imageSize(arg_0).xy;
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 2-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureDimensions/fcac78.wgsl.expected.glsl b/test/intrinsics/gen/textureDimensions/fcac78.wgsl.expected.glsl
index aff41d7..35f375d 100644
--- a/test/intrinsics/gen/textureDimensions/fcac78.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureDimensions/fcac78.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureDimensions_fcac78() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureDimensions_fcac78() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureDimensions_fcac78() {
-  ivec3 res = textureSize(arg_0);
+  ivec3 res = imageSize(arg_0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'textureSize' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 3-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.glsl
index c0c1d75..91845cb 100644
--- a/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/19cf87.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureLoad_19cf87() {
-  float res = texelFetch(arg_0, ivec3(0, 0, 0)).x;
+  float res = texelFetch(arg_0, ivec2(0, 0), 0).x;
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureLoad_19cf87() {
-  float res = texelFetch(arg_0, ivec3(0, 0, 0)).x;
+  float res = texelFetch(arg_0, ivec2(0, 0), 0).x;
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureLoad_19cf87() {
-  float res = texelFetch(arg_0, ivec3(0, 0, 0)).x;
+  float res = texelFetch(arg_0, ivec2(0, 0), 0).x;
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.glsl
index c4b25b1..b2270fc 100644
--- a/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/1b8588.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp usampler1D arg_0;
 
 void textureLoad_1b8588() {
-  uvec4 res = texelFetch(arg_0, ivec2(1, 0));
+  uvec4 res = texelFetch(arg_0, 1, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp usampler1D arg_0;
 
 void textureLoad_1b8588() {
-  uvec4 res = texelFetch(arg_0, ivec2(1, 0));
+  uvec4 res = texelFetch(arg_0, 1, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp usampler1D arg_0;
 
 void textureLoad_1b8588() {
-  uvec4 res = texelFetch(arg_0, ivec2(1, 0));
+  uvec4 res = texelFetch(arg_0, 1, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.glsl
index a3e04c8..ba2c43c 100644
--- a/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/1f2016.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler3D arg_0;
 
 void textureLoad_1f2016() {
-  vec4 res = texelFetch(arg_0, ivec4(0, 0, 0, 0));
+  vec4 res = texelFetch(arg_0, ivec3(0, 0, 0), 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler3D arg_0;
 
 void textureLoad_1f2016() {
-  vec4 res = texelFetch(arg_0, ivec4(0, 0, 0, 0));
+  vec4 res = texelFetch(arg_0, ivec3(0, 0, 0), 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler3D arg_0;
 
 void textureLoad_1f2016() {
-  vec4 res = texelFetch(arg_0, ivec4(0, 0, 0, 0));
+  vec4 res = texelFetch(arg_0, ivec3(0, 0, 0), 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureLoad/484344.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/484344.wgsl.expected.glsl
index 7a08dfc..23c97b7 100644
--- a/test/intrinsics/gen/textureLoad/484344.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/484344.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureLoad_484344() {
-  vec4 res = texelFetch(arg_0, ivec3(0, 0, 0));
+  vec4 res = texelFetch(arg_0, ivec2(0, 0), 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureLoad_484344() {
-  vec4 res = texelFetch(arg_0, ivec3(0, 0, 0));
+  vec4 res = texelFetch(arg_0, ivec2(0, 0), 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureLoad_484344() {
-  vec4 res = texelFetch(arg_0, ivec3(0, 0, 0));
+  vec4 res = texelFetch(arg_0, ivec2(0, 0), 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.glsl
index e3ac256..1912237 100644
--- a/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/4fd803.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler3D arg_0;
 
 void textureLoad_4fd803() {
-  ivec4 res = texelFetch(arg_0, ivec4(0, 0, 0, 0));
+  ivec4 res = texelFetch(arg_0, ivec3(0, 0, 0), 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler3D arg_0;
 
 void textureLoad_4fd803() {
-  ivec4 res = texelFetch(arg_0, ivec4(0, 0, 0, 0));
+  ivec4 res = texelFetch(arg_0, ivec3(0, 0, 0), 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler3D arg_0;
 
 void textureLoad_4fd803() {
-  ivec4 res = texelFetch(arg_0, ivec4(0, 0, 0, 0));
+  ivec4 res = texelFetch(arg_0, ivec3(0, 0, 0), 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.glsl
index 54c2afa..ca2c53a 100644
--- a/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/5a2f9d.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp isampler1D arg_0;
 
 void textureLoad_5a2f9d() {
-  ivec4 res = texelFetch(arg_0, ivec2(1, 0));
+  ivec4 res = texelFetch(arg_0, 1, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp isampler1D arg_0;
 
 void textureLoad_5a2f9d() {
-  ivec4 res = texelFetch(arg_0, ivec2(1, 0));
+  ivec4 res = texelFetch(arg_0, 1, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp isampler1D arg_0;
 
 void textureLoad_5a2f9d() {
-  ivec4 res = texelFetch(arg_0, ivec2(1, 0));
+  ivec4 res = texelFetch(arg_0, 1, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.glsl
index 7bc6f13..996248d 100644
--- a/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/6154d4.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2D arg_0;
 
 void textureLoad_6154d4() {
-  uvec4 res = texelFetch(arg_0, ivec3(0, 0, 0));
+  uvec4 res = texelFetch(arg_0, ivec2(0, 0), 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2D arg_0;
 
 void textureLoad_6154d4() {
-  uvec4 res = texelFetch(arg_0, ivec3(0, 0, 0));
+  uvec4 res = texelFetch(arg_0, ivec2(0, 0), 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of uint'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2D arg_0;
 
 void textureLoad_6154d4() {
-  uvec4 res = texelFetch(arg_0, ivec3(0, 0, 0));
+  uvec4 res = texelFetch(arg_0, ivec2(0, 0), 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureLoad/6273b1.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/6273b1.wgsl.expected.glsl
index d4c7d9f..9063f24 100644
--- a/test/intrinsics/gen/textureLoad/6273b1.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/6273b1.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DMS arg_0;
 
 void textureLoad_6273b1() {
-  float res = texelFetch(arg_0, ivec3(0, 0, 0), 1).x;
+  float res = texelFetch(arg_0, ivec2(0, 0), 1).x;
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DMS arg_0;
 
 void textureLoad_6273b1() {
-  float res = texelFetch(arg_0, ivec3(0, 0, 0), 1).x;
+  float res = texelFetch(arg_0, ivec2(0, 0), 1).x;
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DMS arg_0;
 
 void textureLoad_6273b1() {
-  float res = texelFetch(arg_0, ivec3(0, 0, 0), 1).x;
+  float res = texelFetch(arg_0, ivec2(0, 0), 1).x;
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.glsl
index c54cfab..1c23ff0 100644
--- a/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/79e697.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2DArray arg_0;
 
 void textureLoad_79e697() {
-  ivec4 res = texelFetch(arg_0, ivec4(0, 0, 1, 0));
+  ivec4 res = texelFetch(arg_0, ivec3(0, 0, 1), 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2DArray arg_0;
 
 void textureLoad_79e697() {
-  ivec4 res = texelFetch(arg_0, ivec4(0, 0, 1, 0));
+  ivec4 res = texelFetch(arg_0, ivec3(0, 0, 1), 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2DArray arg_0;
 
 void textureLoad_79e697() {
-  ivec4 res = texelFetch(arg_0, ivec4(0, 0, 1, 0));
+  ivec4 res = texelFetch(arg_0, ivec3(0, 0, 1), 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.glsl
index 185420d..973acb9 100644
--- a/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/7c90e5.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2DArray arg_0;
 
 void textureLoad_7c90e5() {
-  uvec4 res = texelFetch(arg_0, ivec4(0, 0, 1, 0));
+  uvec4 res = texelFetch(arg_0, ivec3(0, 0, 1), 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2DArray arg_0;
 
 void textureLoad_7c90e5() {
-  uvec4 res = texelFetch(arg_0, ivec4(0, 0, 1, 0));
+  uvec4 res = texelFetch(arg_0, ivec3(0, 0, 1), 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of uint'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler2DArray arg_0;
 
 void textureLoad_7c90e5() {
-  uvec4 res = texelFetch(arg_0, ivec4(0, 0, 1, 0));
+  uvec4 res = texelFetch(arg_0, ivec3(0, 0, 1), 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.glsl
index a4dd2b3..23ae5de 100644
--- a/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/81c381.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp sampler1D arg_0;
 
 void textureLoad_81c381() {
-  vec4 res = texelFetch(arg_0, ivec2(1, 0));
+  vec4 res = texelFetch(arg_0, 1, 0);
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp sampler1D arg_0;
 
 void textureLoad_81c381() {
-  vec4 res = texelFetch(arg_0, ivec2(1, 0));
+  vec4 res = texelFetch(arg_0, 1, 0);
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp sampler1D arg_0;
 
 void textureLoad_81c381() {
-  vec4 res = texelFetch(arg_0, ivec2(1, 0));
+  vec4 res = texelFetch(arg_0, 1, 0);
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.glsl
index a9273cc..43a7c2f 100644
--- a/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/87be85.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureLoad_87be85() {
-  vec4 res = texelFetch(arg_0, ivec4(0, 0, 1, 0));
+  vec4 res = texelFetch(arg_0, ivec3(0, 0, 1), 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureLoad_87be85() {
-  vec4 res = texelFetch(arg_0, ivec4(0, 0, 1, 0));
+  vec4 res = texelFetch(arg_0, ivec3(0, 0, 1), 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureLoad_87be85() {
-  vec4 res = texelFetch(arg_0, ivec4(0, 0, 1, 0));
+  vec4 res = texelFetch(arg_0, ivec3(0, 0, 1), 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureLoad/8acf41.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/8acf41.wgsl.expected.glsl
index 67f63fc..8d2fef5 100644
--- a/test/intrinsics/gen/textureLoad/8acf41.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/8acf41.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureLoad_8acf41() {
-  vec4 res = texelFetch(arg_0, ivec3(0, 0, 0));
+  vec4 res = texelFetch(arg_0, ivec2(0, 0), 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureLoad_8acf41() {
-  vec4 res = texelFetch(arg_0, ivec3(0, 0, 0));
+  vec4 res = texelFetch(arg_0, ivec2(0, 0), 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2D arg_0;
 
 void textureLoad_8acf41() {
-  vec4 res = texelFetch(arg_0, ivec3(0, 0, 0));
+  vec4 res = texelFetch(arg_0, ivec2(0, 0), 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of float'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.glsl
index ac1488f..20e2df2 100644
--- a/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/9b2667.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureLoad_9b2667() {
-  float res = texelFetch(arg_0, ivec4(0, 0, 1, 0)).x;
+  float res = texelFetch(arg_0, ivec3(0, 0, 1), 0).x;
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureLoad_9b2667() {
-  float res = texelFetch(arg_0, ivec4(0, 0, 1, 0)).x;
+  float res = texelFetch(arg_0, ivec3(0, 0, 1), 0).x;
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp sampler2DArray arg_0;
 
 void textureLoad_9b2667() {
-  float res = texelFetch(arg_0, ivec4(0, 0, 1, 0)).x;
+  float res = texelFetch(arg_0, ivec3(0, 0, 1), 0).x;
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.glsl
index 44c93d1..b3e958c 100644
--- a/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/a9a9f5.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler3D arg_0;
 
 void textureLoad_a9a9f5() {
-  uvec4 res = texelFetch(arg_0, ivec4(0, 0, 0, 0));
+  uvec4 res = texelFetch(arg_0, ivec3(0, 0, 0), 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler3D arg_0;
 
 void textureLoad_a9a9f5() {
-  uvec4 res = texelFetch(arg_0, ivec4(0, 0, 0, 0));
+  uvec4 res = texelFetch(arg_0, ivec3(0, 0, 0), 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of uint'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp usampler3D arg_0;
 
 void textureLoad_a9a9f5() {
-  uvec4 res = texelFetch(arg_0, ivec4(0, 0, 0, 0));
+  uvec4 res = texelFetch(arg_0, ivec3(0, 0, 0), 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of uint'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.glsl b/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.glsl
index a15bef5..bef6376 100644
--- a/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureLoad/c2a480.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2D arg_0;
 
 void textureLoad_c2a480() {
-  ivec4 res = texelFetch(arg_0, ivec3(0, 0, 0));
+  ivec4 res = texelFetch(arg_0, ivec2(0, 0), 0);
 }
 
 struct tint_symbol {
@@ -32,21 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2D arg_0;
 
 void textureLoad_c2a480() {
-  ivec4 res = texelFetch(arg_0, ivec3(0, 0, 0));
+  ivec4 res = texelFetch(arg_0, ivec2(0, 0), 0);
 }
 
 struct tint_symbol {
@@ -62,21 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp mediump 4-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp isampler2D arg_0;
 
 void textureLoad_c2a480() {
-  ivec4 res = texelFetch(arg_0, ivec3(0, 0, 0));
+  ivec4 res = texelFetch(arg_0, ivec2(0, 0), 0);
 }
 
 struct tint_symbol {
@@ -93,11 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:7: '=' :  cannot convert from ' const float' to ' temp highp 4-component vector of int'
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 3 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureNumLayers/058cc3.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/058cc3.wgsl.expected.glsl
index cdbae00..f0f4f1c 100644
--- a/test/intrinsics/gen/textureNumLayers/058cc3.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/058cc3.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureNumLayers_058cc3() {
   int res = textureQueryLevels(arg_0);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureNumLayers_058cc3() {
   int res = textureQueryLevels(arg_0);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureNumLayers_058cc3() {
   int res = textureQueryLevels(arg_0);;
diff --git a/test/intrinsics/gen/textureNumLayers/13b4ce.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/13b4ce.wgsl.expected.glsl
index 6f2e095..1533617 100644
--- a/test/intrinsics/gen/textureNumLayers/13b4ce.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/13b4ce.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureNumLayers_13b4ce() {
   int res = textureQueryLevels(arg_0);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureNumLayers_13b4ce() {
   int res = textureQueryLevels(arg_0);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureNumLayers_13b4ce() {
   int res = textureQueryLevels(arg_0);;
diff --git a/test/intrinsics/gen/textureNumLayers/22e53b.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/22e53b.wgsl.expected.glsl
index 5ef0fee..183d46f 100644
--- a/test/intrinsics/gen/textureNumLayers/22e53b.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/22e53b.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureNumLayers_22e53b() {
   int res = textureQueryLevels(arg_0);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureNumLayers_22e53b() {
   int res = textureQueryLevels(arg_0);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureNumLayers_22e53b() {
   int res = textureQueryLevels(arg_0);;
diff --git a/test/intrinsics/gen/textureNumLayers/9700fb.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/9700fb.wgsl.expected.glsl
index d873766..c1f8ea1 100644
--- a/test/intrinsics/gen/textureNumLayers/9700fb.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/9700fb.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureNumLayers_9700fb() {
   int res = textureQueryLevels(arg_0);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureNumLayers_9700fb() {
   int res = textureQueryLevels(arg_0);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureNumLayers_9700fb() {
   int res = textureQueryLevels(arg_0);;
diff --git a/test/intrinsics/gen/textureNumLayers/a216d2.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/a216d2.wgsl.expected.glsl
index b71292e..e8e3b28 100644
--- a/test/intrinsics/gen/textureNumLayers/a216d2.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/a216d2.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureNumLayers_a216d2() {
   int res = textureQueryLevels(arg_0);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureNumLayers_a216d2() {
   int res = textureQueryLevels(arg_0);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureNumLayers_a216d2() {
   int res = textureQueryLevels(arg_0);;
diff --git a/test/intrinsics/gen/textureNumLayers/cd5dc8.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/cd5dc8.wgsl.expected.glsl
index 3279102..a71b160 100644
--- a/test/intrinsics/gen/textureNumLayers/cd5dc8.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/cd5dc8.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureNumLayers_cd5dc8() {
   int res = textureQueryLevels(arg_0);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureNumLayers_cd5dc8() {
   int res = textureQueryLevels(arg_0);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureNumLayers_cd5dc8() {
   int res = textureQueryLevels(arg_0);;
diff --git a/test/intrinsics/gen/textureNumLayers/ee942f.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/ee942f.wgsl.expected.glsl
index 7b38eb6..11d5b50 100644
--- a/test/intrinsics/gen/textureNumLayers/ee942f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/ee942f.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureNumLayers_ee942f() {
   int res = textureQueryLevels(arg_0);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureNumLayers_ee942f() {
   int res = textureQueryLevels(arg_0);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureNumLayers_ee942f() {
   int res = textureQueryLevels(arg_0);;
diff --git a/test/intrinsics/gen/textureNumLayers/f33005.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/f33005.wgsl.expected.glsl
index 6a077c9..32669d4 100644
--- a/test/intrinsics/gen/textureNumLayers/f33005.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/f33005.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureNumLayers_f33005() {
   int res = textureQueryLevels(arg_0);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureNumLayers_f33005() {
   int res = textureQueryLevels(arg_0);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureNumLayers_f33005() {
   int res = textureQueryLevels(arg_0);;
diff --git a/test/intrinsics/gen/textureNumLayers/fcec98.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/fcec98.wgsl.expected.glsl
index 320f8e9..d401fa8 100644
--- a/test/intrinsics/gen/textureNumLayers/fcec98.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/fcec98.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureNumLayers_fcec98() {
   int res = textureQueryLevels(arg_0);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureNumLayers_fcec98() {
   int res = textureQueryLevels(arg_0);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureNumLayers_fcec98() {
   int res = textureQueryLevels(arg_0);;
diff --git a/test/intrinsics/gen/textureNumLayers/ff5e89.wgsl.expected.glsl b/test/intrinsics/gen/textureNumLayers/ff5e89.wgsl.expected.glsl
index 4d595be..9dee14a 100644
--- a/test/intrinsics/gen/textureNumLayers/ff5e89.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureNumLayers/ff5e89.wgsl.expected.glsl
@@ -3,7 +3,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureNumLayers_ff5e89() {
   int res = textureQueryLevels(arg_0);;
@@ -43,7 +43,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureNumLayers_ff5e89() {
   int res = textureQueryLevels(arg_0);;
@@ -73,7 +73,7 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureNumLayers_ff5e89() {
   int res = textureQueryLevels(arg_0);;
diff --git a/test/intrinsics/gen/textureStore/05ce15.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/05ce15.wgsl.expected.glsl
index 4ba2dce..e6c280f 100644
--- a/test/intrinsics/gen/textureStore/05ce15.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/05ce15.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_05ce15() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_05ce15() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_05ce15() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/064c7f.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/064c7f.wgsl.expected.glsl
index 5cd1fc8..855a781 100644
--- a/test/intrinsics/gen/textureStore/064c7f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/064c7f.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_064c7f() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_064c7f() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_064c7f() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/068641.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/068641.wgsl.expected.glsl
index 8178bbf..f85a42f 100644
--- a/test/intrinsics/gen/textureStore/068641.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/068641.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureStore_068641() {
-  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureStore_068641() {
-  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureStore_068641() {
-  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/0af6b5.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/0af6b5.wgsl.expected.glsl
index e2680e9..ba01e20 100644
--- a/test/intrinsics/gen/textureStore/0af6b5.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/0af6b5.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_0af6b5() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_0af6b5() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_0af6b5() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/0c3dff.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/0c3dff.wgsl.expected.glsl
index a28d08e..4dd1937 100644
--- a/test/intrinsics/gen/textureStore/0c3dff.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/0c3dff.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureStore_0c3dff() {
-  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureStore_0c3dff() {
-  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureStore_0c3dff() {
-  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/102722.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/102722.wgsl.expected.glsl
index d43d1e1..702ebf0 100644
--- a/test/intrinsics/gen/textureStore/102722.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/102722.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureStore_102722() {
-  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureStore_102722() {
-  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureStore_102722() {
-  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/1bbd08.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/1bbd08.wgsl.expected.glsl
index 9ad8bb9..4921de7 100644
--- a/test/intrinsics/gen/textureStore/1bbd08.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/1bbd08.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_1bbd08() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_1bbd08() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_1bbd08() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/1c02e7.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/1c02e7.wgsl.expected.glsl
index 26e7eb8..9405cf6 100644
--- a/test/intrinsics/gen/textureStore/1c02e7.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/1c02e7.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureStore_1c02e7() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureStore_1c02e7() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureStore_1c02e7() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/22d955.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/22d955.wgsl.expected.glsl
index 5993ef4..67110e6 100644
--- a/test/intrinsics/gen/textureStore/22d955.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/22d955.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureStore_22d955() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureStore_22d955() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureStore_22d955() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/26bf70.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/26bf70.wgsl.expected.glsl
index 6d3a252..d958404 100644
--- a/test/intrinsics/gen/textureStore/26bf70.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/26bf70.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureStore_26bf70() {
-  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureStore_26bf70() {
-  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureStore_26bf70() {
-  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/2796b4.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/2796b4.wgsl.expected.glsl
index f44fdf0..3bdbf59 100644
--- a/test/intrinsics/gen/textureStore/2796b4.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/2796b4.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureStore_2796b4() {
-  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureStore_2796b4() {
-  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureStore_2796b4() {
-  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/2ac6c7.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/2ac6c7.wgsl.expected.glsl
index 62095fd..36b0c9c 100644
--- a/test/intrinsics/gen/textureStore/2ac6c7.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/2ac6c7.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_2ac6c7() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_2ac6c7() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_2ac6c7() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureStore/2eb2a4.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/2eb2a4.wgsl.expected.glsl
index 39e2f5f..98615c4 100644
--- a/test/intrinsics/gen/textureStore/2eb2a4.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/2eb2a4.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureStore_2eb2a4() {
-  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureStore_2eb2a4() {
-  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureStore_2eb2a4() {
-  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/2ed2a3.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/2ed2a3.wgsl.expected.glsl
index 3a9e59e..9fdd038 100644
--- a/test/intrinsics/gen/textureStore/2ed2a3.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/2ed2a3.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_2ed2a3() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_2ed2a3() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_2ed2a3() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureStore/31745b.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/31745b.wgsl.expected.glsl
index 3757584..d0b5b4b 100644
--- a/test/intrinsics/gen/textureStore/31745b.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/31745b.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureStore_31745b() {
-  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureStore_31745b() {
-  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureStore_31745b() {
-  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/32f368.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/32f368.wgsl.expected.glsl
index 5f404a8..b98026b 100644
--- a/test/intrinsics/gen/textureStore/32f368.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/32f368.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_32f368() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_32f368() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_32f368() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/331aee.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/331aee.wgsl.expected.glsl
index e3ebdab..37a747f 100644
--- a/test/intrinsics/gen/textureStore/331aee.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/331aee.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_331aee() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_331aee() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_331aee() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/38e8d7.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/38e8d7.wgsl.expected.glsl
index 75832fe..a5590b5 100644
--- a/test/intrinsics/gen/textureStore/38e8d7.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/38e8d7.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureStore_38e8d7() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureStore_38e8d7() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureStore_38e8d7() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/3a52ac.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/3a52ac.wgsl.expected.glsl
index 6ee011b..9f1195f 100644
--- a/test/intrinsics/gen/textureStore/3a52ac.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/3a52ac.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureStore_3a52ac() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureStore_3a52ac() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureStore_3a52ac() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/3bb7a1.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/3bb7a1.wgsl.expected.glsl
index f3fdbe6..58922a1 100644
--- a/test/intrinsics/gen/textureStore/3bb7a1.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/3bb7a1.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_3bb7a1() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_3bb7a1() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_3bb7a1() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/3bec15.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/3bec15.wgsl.expected.glsl
index 343d087..c70bf98 100644
--- a/test/intrinsics/gen/textureStore/3bec15.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/3bec15.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureStore_3bec15() {
-  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureStore_3bec15() {
-  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureStore_3bec15() {
-  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/441ba8.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/441ba8.wgsl.expected.glsl
index f54d419..73726f3 100644
--- a/test/intrinsics/gen/textureStore/441ba8.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/441ba8.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureStore_441ba8() {
-  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureStore_441ba8() {
-  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureStore_441ba8() {
-  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/4fc057.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/4fc057.wgsl.expected.glsl
index a13a1aa..a76727c 100644
--- a/test/intrinsics/gen/textureStore/4fc057.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/4fc057.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_4fc057() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_4fc057() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_4fc057() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/5a2f8f.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/5a2f8f.wgsl.expected.glsl
index facb619..af0a2c9 100644
--- a/test/intrinsics/gen/textureStore/5a2f8f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/5a2f8f.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureStore_5a2f8f() {
-  imageStore(arg_0, 1, ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, 1, ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureStore_5a2f8f() {
-  imageStore(arg_0, 1, ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, 1, ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureStore_5a2f8f() {
-  imageStore(arg_0, 1, ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, 1, ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/60975f.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/60975f.wgsl.expected.glsl
index 4c82be7..a07aa45 100644
--- a/test/intrinsics/gen/textureStore/60975f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/60975f.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_60975f() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_60975f() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_60975f() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/682fd6.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/682fd6.wgsl.expected.glsl
index 2e03766..3f28a46 100644
--- a/test/intrinsics/gen/textureStore/682fd6.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/682fd6.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureStore_682fd6() {
-  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureStore_682fd6() {
-  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureStore_682fd6() {
-  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/6b75c3.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/6b75c3.wgsl.expected.glsl
index 1908674..1c01bd6 100644
--- a/test/intrinsics/gen/textureStore/6b75c3.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/6b75c3.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_6b75c3() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_6b75c3() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_6b75c3() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureStore/6b80d2.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/6b80d2.wgsl.expected.glsl
index 35dbe8f..673dc80 100644
--- a/test/intrinsics/gen/textureStore/6b80d2.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/6b80d2.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureStore_6b80d2() {
-  imageStore(arg_0, 1, ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, 1, ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureStore_6b80d2() {
-  imageStore(arg_0, 1, ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, 1, ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureStore_6b80d2() {
-  imageStore(arg_0, 1, ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, 1, ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/6cff2e.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/6cff2e.wgsl.expected.glsl
index c6e0183..6df0230 100644
--- a/test/intrinsics/gen/textureStore/6cff2e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/6cff2e.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureStore_6cff2e() {
-  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureStore_6cff2e() {
-  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureStore_6cff2e() {
-  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/6da692.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/6da692.wgsl.expected.glsl
index 173ab8b..a9230b0 100644
--- a/test/intrinsics/gen/textureStore/6da692.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/6da692.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureStore_6da692() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureStore_6da692() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureStore_6da692() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/731349.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/731349.wgsl.expected.glsl
index 97d4a2c..e2a352f 100644
--- a/test/intrinsics/gen/textureStore/731349.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/731349.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_731349() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_731349() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_731349() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/752da6.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/752da6.wgsl.expected.glsl
index 7456a69..544b0dc 100644
--- a/test/intrinsics/gen/textureStore/752da6.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/752da6.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureStore_752da6() {
-  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureStore_752da6() {
-  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureStore_752da6() {
-  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/77c0ae.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/77c0ae.wgsl.expected.glsl
index cfd2c34..7e82124 100644
--- a/test/intrinsics/gen/textureStore/77c0ae.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/77c0ae.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureStore_77c0ae() {
-  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureStore_77c0ae() {
-  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly uimage2D arg_0;
 
 void textureStore_77c0ae() {
-  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec2(0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/7cec8d.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/7cec8d.wgsl.expected.glsl
index cad1e7b..0ee1f4f 100644
--- a/test/intrinsics/gen/textureStore/7cec8d.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/7cec8d.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureStore_7cec8d() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureStore_7cec8d() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureStore_7cec8d() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/7f7fae.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/7f7fae.wgsl.expected.glsl
index f11342c..5bb7ae0 100644
--- a/test/intrinsics/gen/textureStore/7f7fae.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/7f7fae.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_7f7fae() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_7f7fae() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_7f7fae() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureStore/804942.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/804942.wgsl.expected.glsl
index 4cde48c..2128124 100644
--- a/test/intrinsics/gen/textureStore/804942.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/804942.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureStore_804942() {
-  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureStore_804942() {
-  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureStore_804942() {
-  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/805dae.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/805dae.wgsl.expected.glsl
index 2c886bc..3bcdd06 100644
--- a/test/intrinsics/gen/textureStore/805dae.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/805dae.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_805dae() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_805dae() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_805dae() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/83bcc1.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/83bcc1.wgsl.expected.glsl
index a637a68..f1b7efa 100644
--- a/test/intrinsics/gen/textureStore/83bcc1.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/83bcc1.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureStore_83bcc1() {
-  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureStore_83bcc1() {
-  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureStore_83bcc1() {
-  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/872747.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/872747.wgsl.expected.glsl
index d134a09..c873a26 100644
--- a/test/intrinsics/gen/textureStore/872747.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/872747.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_872747() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_872747() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_872747() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureStore/8e0479.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/8e0479.wgsl.expected.glsl
index 983cf26..9b6251a 100644
--- a/test/intrinsics/gen/textureStore/8e0479.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/8e0479.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureStore_8e0479() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureStore_8e0479() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureStore_8e0479() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/8f71a1.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/8f71a1.wgsl.expected.glsl
index 1b2ac3f..28b3323 100644
--- a/test/intrinsics/gen/textureStore/8f71a1.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/8f71a1.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureStore_8f71a1() {
-  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureStore_8f71a1() {
-  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureStore_8f71a1() {
-  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/969534.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/969534.wgsl.expected.glsl
index c2885e6..ed57dd5 100644
--- a/test/intrinsics/gen/textureStore/969534.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/969534.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureStore_969534() {
-  imageStore(arg_0, 1, ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, 1, ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureStore_969534() {
-  imageStore(arg_0, 1, ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, 1, ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureStore_969534() {
-  imageStore(arg_0, 1, ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, 1, ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/9a3ecc.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/9a3ecc.wgsl.expected.glsl
index b926142..91b696b 100644
--- a/test/intrinsics/gen/textureStore/9a3ecc.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/9a3ecc.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureStore_9a3ecc() {
-  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureStore_9a3ecc() {
-  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureStore_9a3ecc() {
-  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/9d9cd5.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/9d9cd5.wgsl.expected.glsl
index 81b5fd3..4ed6d37 100644
--- a/test/intrinsics/gen/textureStore/9d9cd5.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/9d9cd5.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_9d9cd5() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_9d9cd5() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_9d9cd5() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/9e3ec5.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/9e3ec5.wgsl.expected.glsl
index 535d561..908f989 100644
--- a/test/intrinsics/gen/textureStore/9e3ec5.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/9e3ec5.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureStore_9e3ec5() {
-  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureStore_9e3ec5() {
-  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureStore_9e3ec5() {
-  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/ac67aa.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/ac67aa.wgsl.expected.glsl
index 675296b..0c8095c 100644
--- a/test/intrinsics/gen/textureStore/ac67aa.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/ac67aa.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureStore_ac67aa() {
-  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureStore_ac67aa() {
-  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureStore_ac67aa() {
-  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/b706b1.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/b706b1.wgsl.expected.glsl
index 3acec7e..650e715 100644
--- a/test/intrinsics/gen/textureStore/b706b1.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/b706b1.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureStore_b706b1() {
-  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureStore_b706b1() {
-  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureStore_b706b1() {
-  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/bbcb7f.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/bbcb7f.wgsl.expected.glsl
index 20c0646..0bbca2b 100644
--- a/test/intrinsics/gen/textureStore/bbcb7f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/bbcb7f.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureStore_bbcb7f() {
-  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureStore_bbcb7f() {
-  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2D arg_0;
+uniform highp writeonly iimage2D arg_0;
 
 void textureStore_bbcb7f() {
-  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec2(0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/be6e30.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/be6e30.wgsl.expected.glsl
index e7ea527..3b1b5a4 100644
--- a/test/intrinsics/gen/textureStore/be6e30.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/be6e30.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_be6e30() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_be6e30() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2D arg_0;
 
 void textureStore_be6e30() {
-  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec2(0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/bf775c.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/bf775c.wgsl.expected.glsl
index 7623f03..1324c36 100644
--- a/test/intrinsics/gen/textureStore/bf775c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/bf775c.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureStore_bf775c() {
-  imageStore(arg_0, 1, ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, 1, ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureStore_bf775c() {
-  imageStore(arg_0, 1, ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, 1, ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureStore_bf775c() {
-  imageStore(arg_0, 1, ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, 1, ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/c5af1e.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/c5af1e.wgsl.expected.glsl
index 8a3f3c8..9a3f2d0 100644
--- a/test/intrinsics/gen/textureStore/c5af1e.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/c5af1e.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_c5af1e() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_c5af1e() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_c5af1e() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/c863be.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/c863be.wgsl.expected.glsl
index 385f01f..351fecf 100644
--- a/test/intrinsics/gen/textureStore/c863be.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/c863be.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_c863be() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_c863be() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image2DArray arg_0;
 
 void textureStore_c863be() {
-  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/d73b5c.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/d73b5c.wgsl.expected.glsl
index 4273b57..2c696c0 100644
--- a/test/intrinsics/gen/textureStore/d73b5c.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/d73b5c.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureStore_d73b5c() {
-  imageStore(arg_0, 1, ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, 1, ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureStore_d73b5c() {
-  imageStore(arg_0, 1, ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, 1, ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly iimage1D arg_0;
 
 void textureStore_d73b5c() {
-  imageStore(arg_0, 1, ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, 1, ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'iimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/dd7d81.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/dd7d81.wgsl.expected.glsl
index 7e56ff4..a8d92c3 100644
--- a/test/intrinsics/gen/textureStore/dd7d81.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/dd7d81.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_dd7d81() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_dd7d81() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_dd7d81() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/dde364.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/dde364.wgsl.expected.glsl
index bc857ff..2c5aa6d 100644
--- a/test/intrinsics/gen/textureStore/dde364.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/dde364.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureStore_dde364() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureStore_dde364() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly uimage2DArray arg_0;
 
 void textureStore_dde364() {
-  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/e885e8.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/e885e8.wgsl.expected.glsl
index 8b379de..5db7f80 100644
--- a/test/intrinsics/gen/textureStore/e885e8.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/e885e8.wgsl.expected.glsl
@@ -6,7 +6,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_e885e8() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -45,7 +45,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_e885e8() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -74,7 +74,7 @@
 uniform highp writeonly image1D arg_0;
 
 void textureStore_e885e8() {
-  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, 1, vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
diff --git a/test/intrinsics/gen/textureStore/eb702f.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/eb702f.wgsl.expected.glsl
index 1108c67..fd4dfb3 100644
--- a/test/intrinsics/gen/textureStore/eb702f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/eb702f.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_eb702f() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_eb702f() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_eb702f() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/eb78b9.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/eb78b9.wgsl.expected.glsl
index c009898..5cdcf91 100644
--- a/test/intrinsics/gen/textureStore/eb78b9.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/eb78b9.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureStore_eb78b9() {
-  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureStore_eb78b9() {
-  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly iimage3D arg_0;
 
 void textureStore_eb78b9() {
-  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/ee6acc.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/ee6acc.wgsl.expected.glsl
index fe34058..9c8618b 100644
--- a/test/intrinsics/gen/textureStore/ee6acc.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/ee6acc.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_ee6acc() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_ee6acc() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
 uniform highp writeonly image3D arg_0;
 
 void textureStore_ee6acc() {
-  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), vec4(0.0f, 0.0f, 0.0f, 0.0f));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'x' : does not apply to this type:  global highp void
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/ef9f2f.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/ef9f2f.wgsl.expected.glsl
index 363aad9..caab228 100644
--- a/test/intrinsics/gen/textureStore/ef9f2f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/ef9f2f.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureStore_ef9f2f() {
-  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureStore_ef9f2f() {
-  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureStore_ef9f2f() {
-  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/f8dead.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/f8dead.wgsl.expected.glsl
index 6ca19cd..3aae373 100644
--- a/test/intrinsics/gen/textureStore/f8dead.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/f8dead.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureStore_f8dead() {
-  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureStore_f8dead() {
-  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image3D arg_0;
+uniform highp writeonly uimage3D arg_0;
 
 void textureStore_f8dead() {
-  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, ivec3(0, 0, 0), uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/f9be83.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/f9be83.wgsl.expected.glsl
index 5bbfedc..cfe8a94 100644
--- a/test/intrinsics/gen/textureStore/f9be83.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/f9be83.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureStore_f9be83() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureStore_f9be83() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureStore_f9be83() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/gen/textureStore/fb9a8f.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/fb9a8f.wgsl.expected.glsl
index a85cf19..8225121 100644
--- a/test/intrinsics/gen/textureStore/fb9a8f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/fb9a8f.wgsl.expected.glsl
@@ -3,10 +3,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureStore_fb9a8f() {
-  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -33,7 +33,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -42,10 +42,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureStore_fb9a8f() {
-  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -62,7 +62,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
@@ -71,10 +71,10 @@
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image1D arg_0;
+uniform highp writeonly uimage1D arg_0;
 
 void textureStore_fb9a8f() {
-  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u)).x;
+  imageStore(arg_0, 1, uvec4(0u, 0u, 0u, 0u));
 }
 
 struct tint_symbol {
@@ -92,7 +92,7 @@
 
 
 Error parsing GLSL shader:
-ERROR: 0:4: 'image1D' : Reserved word. 
+ERROR: 0:4: 'uimage1D' : Reserved word. 
 ERROR: 0:4: '' : compilation terminated 
 ERROR: 2 compilation errors.  No code generated.
 
diff --git a/test/intrinsics/gen/textureStore/fbf53f.wgsl.expected.glsl b/test/intrinsics/gen/textureStore/fbf53f.wgsl.expected.glsl
index 9f27edc..3a08d14 100644
--- a/test/intrinsics/gen/textureStore/fbf53f.wgsl.expected.glsl
+++ b/test/intrinsics/gen/textureStore/fbf53f.wgsl.expected.glsl
@@ -1,12 +1,10 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureStore_fbf53f() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -32,20 +30,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureStore_fbf53f() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -61,20 +52,13 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
-uniform highp writeonly image2DArray arg_0;
+uniform highp writeonly iimage2DArray arg_0;
 
 void textureStore_fbf53f() {
-  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0)).x;
+  imageStore(arg_0, ivec3(0, 0, 1), ivec4(0, 0, 0, 0));
 }
 
 struct tint_symbol {
@@ -91,10 +75,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:7: 'imageStore' : no matching overloaded function found 
-ERROR: 0:7: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/intrinsics/textureLoad/depth_ms.spvasm.expected.glsl b/test/intrinsics/textureLoad/depth_ms.spvasm.expected.glsl
index 0634d3f..e9d767d 100644
--- a/test/intrinsics/textureLoad/depth_ms.spvasm.expected.glsl
+++ b/test/intrinsics/textureLoad/depth_ms.spvasm.expected.glsl
@@ -1,5 +1,3 @@
-SKIP: FAILED
-
 #version 310 es
 precision mediump float;
 
@@ -8,7 +6,7 @@
 
 void textureLoad_6273b1() {
   float res = 0.0f;
-  vec4 x_17 = vec4(texelFetch(arg_0, ivec3(0, 0, 0), 1).x, 0.0f, 0.0f, 0.0f);
+  vec4 x_17 = vec4(texelFetch(arg_0, ivec2(0, 0), 1).x, 0.0f, 0.0f, 0.0f);
   res = x_17.x;
   return;
 }
@@ -51,13 +49,6 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:9: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:9: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
@@ -65,7 +56,7 @@
 
 void textureLoad_6273b1() {
   float res = 0.0f;
-  vec4 x_17 = vec4(texelFetch(arg_0, ivec3(0, 0, 0), 1).x, 0.0f, 0.0f, 0.0f);
+  vec4 x_17 = vec4(texelFetch(arg_0, ivec2(0, 0), 1).x, 0.0f, 0.0f, 0.0f);
   res = x_17.x;
   return;
 }
@@ -91,13 +82,6 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:8: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
 #version 310 es
 precision mediump float;
 
@@ -105,7 +89,7 @@
 
 void textureLoad_6273b1() {
   float res = 0.0f;
-  vec4 x_17 = vec4(texelFetch(arg_0, ivec3(0, 0, 0), 1).x, 0.0f, 0.0f, 0.0f);
+  vec4 x_17 = vec4(texelFetch(arg_0, ivec2(0, 0), 1).x, 0.0f, 0.0f, 0.0f);
   res = x_17.x;
   return;
 }
@@ -132,10 +116,3 @@
 }
 
 
-Error parsing GLSL shader:
-ERROR: 0:8: 'texelFetch' : no matching overloaded function found 
-ERROR: 0:8: '' : compilation terminated 
-ERROR: 2 compilation errors.  No code generated.
-
-
-
diff --git a/test/types/texture/storage/1d.wgsl.expected.glsl b/test/types/texture/storage/1d.wgsl.expected.glsl
index a854f43..c1d9ebe 100644
--- a/test/types/texture/storage/1d.wgsl.expected.glsl
+++ b/test/types/texture/storage/1d.wgsl.expected.glsl
@@ -5,19 +5,19 @@
 
 uniform highp writeonly image1D t_rgba8unorm;
 uniform highp writeonly image1D t_rgba8snorm;
-uniform highp writeonly image1D t_rgba8uint;
-uniform highp writeonly image1D t_rgba8sint;
-uniform highp writeonly image1D t_rgba16uint;
-uniform highp writeonly image1D t_rgba16sint;
+uniform highp writeonly uimage1D t_rgba8uint;
+uniform highp writeonly iimage1D t_rgba8sint;
+uniform highp writeonly uimage1D t_rgba16uint;
+uniform highp writeonly iimage1D t_rgba16sint;
 uniform highp writeonly image1D t_rgba16float;
-uniform highp writeonly image1D t_r32uint;
-uniform highp writeonly image1D t_r32sint;
+uniform highp writeonly uimage1D t_r32uint;
+uniform highp writeonly iimage1D t_r32sint;
 uniform highp writeonly image1D t_r32float;
-uniform highp writeonly image1D t_rg32uint;
-uniform highp writeonly image1D t_rg32sint;
+uniform highp writeonly uimage1D t_rg32uint;
+uniform highp writeonly iimage1D t_rg32sint;
 uniform highp writeonly image1D t_rg32float;
-uniform highp writeonly image1D t_rgba32uint;
-uniform highp writeonly image1D t_rgba32sint;
+uniform highp writeonly uimage1D t_rgba32uint;
+uniform highp writeonly iimage1D t_rgba32sint;
 uniform highp writeonly image1D t_rgba32float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/types/texture/storage/2d.wgsl.expected.glsl b/test/types/texture/storage/2d.wgsl.expected.glsl
index 1103c8c..002a656 100644
--- a/test/types/texture/storage/2d.wgsl.expected.glsl
+++ b/test/types/texture/storage/2d.wgsl.expected.glsl
@@ -3,19 +3,19 @@
 
 uniform highp writeonly image2D t_rgba8unorm;
 uniform highp writeonly image2D t_rgba8snorm;
-uniform highp writeonly image2D t_rgba8uint;
-uniform highp writeonly image2D t_rgba8sint;
-uniform highp writeonly image2D t_rgba16uint;
-uniform highp writeonly image2D t_rgba16sint;
+uniform highp writeonly uimage2D t_rgba8uint;
+uniform highp writeonly iimage2D t_rgba8sint;
+uniform highp writeonly uimage2D t_rgba16uint;
+uniform highp writeonly iimage2D t_rgba16sint;
 uniform highp writeonly image2D t_rgba16float;
-uniform highp writeonly image2D t_r32uint;
-uniform highp writeonly image2D t_r32sint;
+uniform highp writeonly uimage2D t_r32uint;
+uniform highp writeonly iimage2D t_r32sint;
 uniform highp writeonly image2D t_r32float;
-uniform highp writeonly image2D t_rg32uint;
-uniform highp writeonly image2D t_rg32sint;
+uniform highp writeonly uimage2D t_rg32uint;
+uniform highp writeonly iimage2D t_rg32sint;
 uniform highp writeonly image2D t_rg32float;
-uniform highp writeonly image2D t_rgba32uint;
-uniform highp writeonly image2D t_rgba32sint;
+uniform highp writeonly uimage2D t_rgba32uint;
+uniform highp writeonly iimage2D t_rgba32sint;
 uniform highp writeonly image2D t_rgba32float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/types/texture/storage/2d_array.wgsl.expected.glsl b/test/types/texture/storage/2d_array.wgsl.expected.glsl
index f047dd7..f4a03fc 100644
--- a/test/types/texture/storage/2d_array.wgsl.expected.glsl
+++ b/test/types/texture/storage/2d_array.wgsl.expected.glsl
@@ -3,19 +3,19 @@
 
 uniform highp writeonly image2DArray t_rgba8unorm;
 uniform highp writeonly image2DArray t_rgba8snorm;
-uniform highp writeonly image2DArray t_rgba8uint;
-uniform highp writeonly image2DArray t_rgba8sint;
-uniform highp writeonly image2DArray t_rgba16uint;
-uniform highp writeonly image2DArray t_rgba16sint;
+uniform highp writeonly uimage2DArray t_rgba8uint;
+uniform highp writeonly iimage2DArray t_rgba8sint;
+uniform highp writeonly uimage2DArray t_rgba16uint;
+uniform highp writeonly iimage2DArray t_rgba16sint;
 uniform highp writeonly image2DArray t_rgba16float;
-uniform highp writeonly image2DArray t_r32uint;
-uniform highp writeonly image2DArray t_r32sint;
+uniform highp writeonly uimage2DArray t_r32uint;
+uniform highp writeonly iimage2DArray t_r32sint;
 uniform highp writeonly image2DArray t_r32float;
-uniform highp writeonly image2DArray t_rg32uint;
-uniform highp writeonly image2DArray t_rg32sint;
+uniform highp writeonly uimage2DArray t_rg32uint;
+uniform highp writeonly iimage2DArray t_rg32sint;
 uniform highp writeonly image2DArray t_rg32float;
-uniform highp writeonly image2DArray t_rgba32uint;
-uniform highp writeonly image2DArray t_rgba32sint;
+uniform highp writeonly uimage2DArray t_rgba32uint;
+uniform highp writeonly iimage2DArray t_rgba32sint;
 uniform highp writeonly image2DArray t_rgba32float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
diff --git a/test/types/texture/storage/3d.wgsl.expected.glsl b/test/types/texture/storage/3d.wgsl.expected.glsl
index edb725a..7ec45d0 100644
--- a/test/types/texture/storage/3d.wgsl.expected.glsl
+++ b/test/types/texture/storage/3d.wgsl.expected.glsl
@@ -3,19 +3,19 @@
 
 uniform highp writeonly image3D t_rgba8unorm;
 uniform highp writeonly image3D t_rgba8snorm;
-uniform highp writeonly image3D t_rgba8uint;
-uniform highp writeonly image3D t_rgba8sint;
-uniform highp writeonly image3D t_rgba16uint;
-uniform highp writeonly image3D t_rgba16sint;
+uniform highp writeonly uimage3D t_rgba8uint;
+uniform highp writeonly iimage3D t_rgba8sint;
+uniform highp writeonly uimage3D t_rgba16uint;
+uniform highp writeonly iimage3D t_rgba16sint;
 uniform highp writeonly image3D t_rgba16float;
-uniform highp writeonly image3D t_r32uint;
-uniform highp writeonly image3D t_r32sint;
+uniform highp writeonly uimage3D t_r32uint;
+uniform highp writeonly iimage3D t_r32sint;
 uniform highp writeonly image3D t_r32float;
-uniform highp writeonly image3D t_rg32uint;
-uniform highp writeonly image3D t_rg32sint;
+uniform highp writeonly uimage3D t_rg32uint;
+uniform highp writeonly iimage3D t_rg32sint;
 uniform highp writeonly image3D t_rg32float;
-uniform highp writeonly image3D t_rgba32uint;
-uniform highp writeonly image3D t_rgba32sint;
+uniform highp writeonly uimage3D t_rgba32uint;
+uniform highp writeonly iimage3D t_rgba32sint;
 uniform highp writeonly image3D t_rgba32float;
 
 layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;
