GLSL: a grab bag of texture fixes.

Use imageSize() on images, not textureSize().
In GLSL, the LOD parameter to textureSize() is mandatory for
sampled textures, so emit a default 0 if not supplied. (Also, don't pack
the level into the coords argument; that's an HLSLism.)
GLSL returns the array size of array textures in the final component
of textureSize(); remove it for WGSL.
Write the subtype of storage images correctly (uimage*, iimage*, etc).
This required a bit of cleanup to move "writeonly" ahead of subtype
emission.

Bug: tint:1298
Change-Id: Ica1cec0f833a9b684143c8b0cf6d090fb511a7d2
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/70140
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Stephen White <senorblanco@chromium.org>
Reviewed-by: Ben Clayton <bclayton@google.com>
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;